diff --git a/.config/copier/.copier-answers.python.yaml b/.config/copier/.copier-answers.python.yaml index 94f3ce2d4..b770297f5 100644 --- a/.config/copier/.copier-answers.python.yaml +++ b/.config/copier/.copier-answers.python.yaml @@ -1,11 +1,11 @@ -# This file is @generated by . +## This file is @generated by . # DO NOT EDIT! # prettier-ignore -_commit: v0.1.13 +_commit: v0.1.37 _src_path: gh:liblaf/copier-python answers_file_shared: .config/copier/.copier-answers.shared.yaml +distribution_name: liblaf-apple namespace: liblaf package_dir: liblaf/apple -package_manager: uv -package_name: liblaf-apple +package_name: liblaf.apple wheel_package_dir: liblaf diff --git a/.config/copier/.copier-answers.release.yaml b/.config/copier/.copier-answers.release.yaml index 6cf2615f9..026a43cb2 100644 --- a/.config/copier/.copier-answers.release.yaml +++ b/.config/copier/.copier-answers.release.yaml @@ -1,6 +1,4 @@ # This file is @generated by . # DO NOT EDIT! -# prettier-ignore -_commit: v0.1.4 +_commit: v0.3.3 _src_path: gh:liblaf/copier-release -release_type: python diff --git a/.config/copier/.copier-answers.shared.yaml b/.config/copier/.copier-answers.shared.yaml index d8a6eb12d..1ca587fb4 100644 --- a/.config/copier/.copier-answers.shared.yaml +++ b/.config/copier/.copier-answers.shared.yaml @@ -1,7 +1,6 @@ # This file is @generated by . # DO NOT EDIT! -# prettier-ignore -_commit: v0.1.5 +_commit: v0.2.15 _src_path: gh:liblaf/copier-shared author_email: 30631553+liblaf@users.noreply.github.com author_name: liblaf diff --git a/.config/copier/mise-tasks/bench.sh b/.config/copier/mise-tasks/bench.sh deleted file mode 100755 index c0e591bff..000000000 --- a/.config/copier/mise-tasks/bench.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -pytest -m 'benchmark' --numprocesses 0 --codspeed --codspeed-warmup-time='0.2' "$@" diff --git a/.config/copier/mise-tasks/gen/init.sh b/.config/copier/mise-tasks/gen/init.sh deleted file mode 100755 index 453dc45c7..000000000 --- a/.config/copier/mise-tasks/gen/init.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -function get-docstring() { - local file=$1 - docstring="$(sed '/"""$/q' "$file")" - if diff --brief "$file" <(echo "$docstring") > /dev/null; then - return - else - echo -n "$docstring" - fi -} - -function has() { - type "$@" &> /dev/null -} - -TEMPLATE="\ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy" - -git_root=$(git rev-parse --show-toplevel) -src_dir="$git_root/src" -if [[ -d $src_dir ]]; then - while IFS= read -d '' -r file; do - file="${file/%'.pyi'/'.py'}" - if [[ ! -f $file ]]; then - echo "$TEMPLATE" > "$file" - else - docstring=$(get-docstring "$file") - { - if [[ -n $docstring ]]; then - echo "$docstring" - echo - fi - echo "$TEMPLATE" - } > "$file" - fi - done < <(find "$src_dir" -name '__init__.pyi' -type f -print0) -fi diff --git a/.config/copier/mise-tasks/install.sh b/.config/copier/mise-tasks/install.sh deleted file mode 100755 index d234a0df7..000000000 --- a/.config/copier/mise-tasks/install.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -function has() { - type "$@" &> /dev/null -} - -if [[ -f 'pixi.lock' ]]; then - pixi='pixi' - if has pixi-wrapper.sh; then pixi='pixi-wrapper.sh'; fi - "$pixi" install "$@" -fi - -if [[ -f 'uv.lock' ]]; then - uv_sync=(uv sync) - if has uv-sync.sh; then uv_sync=(uv-sync.sh); fi - "${uv_sync[@]}" "$@" -fi diff --git a/.config/copier/mise-tasks/lint.sh b/.config/copier/mise-tasks/lint.sh deleted file mode 100755 index c31900037..000000000 --- a/.config/copier/mise-tasks/lint.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -# [MISE] depends=["lint:python", "lint:toml"] -set -o errexit -set -o nounset -set -o pipefail diff --git a/.config/copier/mise-tasks/lint/_default b/.config/copier/mise-tasks/lint/_default deleted file mode 100755 index d08a1fbf9..000000000 --- a/.config/copier/mise-tasks/lint/_default +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -# [MISE] depends=["lint:python", "lint:toml"] diff --git a/.config/copier/mise-tasks/lint/python.sh b/.config/copier/mise-tasks/lint/python.sh deleted file mode 100755 index 48631b3e5..000000000 --- a/.config/copier/mise-tasks/lint/python.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -ruff format -ruff check --fix diff --git a/.config/copier/mise-tasks/lint/toml.sh b/.config/copier/mise-tasks/lint/toml.sh deleted file mode 100755 index b00e8bc40..000000000 --- a/.config/copier/mise-tasks/lint/toml.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -function has() { - type "$@" &> /dev/null -} - -function pretty-toml() { - local files=() - for file in "$@"; do - if [[ -f $file ]]; then - files+=("$file") - fi - done - if has toml-sort; then - toml-sort --in-place --all "${files[@]}" - sed --expression='s/# :schema /#:schema /g' --in-place "${files[@]}" - fi - if has tombi; then - tombi format "${files[@]}" - fi -} - -pretty-toml '.ruff.toml' 'pyproject.toml' - -if has tombi; then - tombi lint -fi diff --git a/.config/copier/mise-tasks/test.sh b/.config/copier/mise-tasks/test.sh deleted file mode 100755 index e1be499a7..000000000 --- a/.config/copier/mise-tasks/test.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -function in-ci() { - if [[ -n ${CI:-} ]]; then - return 0 - else - return 1 - fi -} - -function needs-gpu() { - for pkg in jax torch warp; do - if python -c "import $pkg" &> /dev/null; then - return 0 - fi - done - return 1 -} - -# ref: -export EAGER_IMPORT=1 - -if needs-gpu; then - numprocesses='0' -else - numprocesses='auto' -fi - -if in-ci; then - # ref: - pytest \ - --junit-xml='junit.xml' --override-ini junit_family=legacy \ - --cov --cov-branch \ - --numprocesses "$numprocesses" \ - --hypothesis-show-statistics \ - "$@" -else - pytest --numprocesses "$numprocesses" "$@" -fi diff --git a/.config/copier/mise-tasks/upgrade.sh b/.config/copier/mise-tasks/upgrade.sh deleted file mode 100755 index f99c1f7a8..000000000 --- a/.config/copier/mise-tasks/upgrade.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -# [MISE] depends_post=["lint"] -set -o errexit -set -o nounset -set -o pipefail - -function has() { - type "$@" &> /dev/null -} - -if [[ -f 'pixi.lock' ]]; then - pixi='pixi' - if has pixi-wrapper.sh; then pixi='pixi-wrapper.sh'; fi - "$pixi" upgrade "$@" -fi - -if [[ -f 'uv.lock' ]]; then - uv_sync=(uv sync) - if has uv-sync.sh; then uv_sync=(uv-sync.sh); fi - "${uv_sync[@]}" --upgrade "$@" -fi diff --git a/.config/copier/mkdocs.yaml b/.config/copier/mkdocs.yaml deleted file mode 100644 index 17ea2e2b8..000000000 --- a/.config/copier/mkdocs.yaml +++ /dev/null @@ -1,267 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -site_name: "Apple" -site_url: - !ENV [ - READTHEDOCS_CANONICAL_URL, - SITE_URL, - "https://liblaf.github.io/apple/", - ] -site_author: "liblaf" -repo_name: "liblaf/apple" -repo_url: "https://github.com/liblaf/apple" -edit_uri: blob/main/docs/ - -extra_css: - - https://cdn.jsdelivr.net/gh/liblaf/copier-python/docs/css/fonts.min.css - - https://cdn.jsdelivr.net/gh/liblaf/copier-python/docs/css/mkdocstrings/material.min.css - - https://cdn.jsdelivr.net/gh/liblaf/copier-python/docs/css/mkdocstrings/syntax-highlight-in-signatures.min.css - -extra_javascript: - - https://cdn.jsdelivr.net/gh/liblaf/copier-python/docs/javascript/mathjax.min.js - - https://cdn.jsdelivr.net/gh/liblaf/copier-python/docs/javascript/readthedocs.min.js - - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js - -theme: - name: material - custom_dir: docs/overrides - features: - # - announce.dismiss - - content.action.edit - - content.action.view - - content.code.annotate - - content.code.copy - - content.code.select - - content.footnote.tooltips - - content.tabs.link - - content.tooltips - # - header.autohide - # - navigation.expand - - navigation.footer - - navigation.indexes - - navigation.instant - - navigation.instant.prefetch - - navigation.instant.progress - - navigation.path - # - navigation.prune - - navigation.sections - - navigation.tabs - - navigation.tabs.sticky - - navigation.top - - navigation.tracking - - search.highlight - - search.share - - search.suggest - - toc.follow - # - toc.integrate - palette: - # ref: - - media: (prefers-color-scheme) - toggle: - icon: material/brightness-auto - name: Auto - - scheme: default - primary: teal - accent: purple - media: "(prefers-color-scheme: light)" - toggle: - icon: material/weather-sunny - name: Light Mode - - scheme: slate - primary: black - accent: lime - media: "(prefers-color-scheme: dark)" - toggle: - icon: material/weather-night - name: Dark Mode - -plugins: - # ---------------------------- Built-in plugins ---------------------------- # - # blog: - # group: - # info: - meta: - # offline: - # optimize: # sponsors only - - # privacy: - # ref: - # MathJax loads web fonts for typesetting of mathematical content through relative URLs, and thus cannot be automatically bundled by the privacy plugin. - - # projects: - search: - social: - tags: - # typeset: # sponsors only - - # ----------------- External plugins, schema provided by us ---------------- # - awesome-nav: - git-committers: - enabled: !ENV [READTHEDOCS, CI, false] - repository: "liblaf/apple" - branch: main - - # ----------- External plugins, schema provided by our community ----------- # - include-markdown: - cache: 600 - git-revision-date-localized: - enable_creation_date: true - mkdocstrings: - default_handler: python - enable_inventory: true - handlers: - python: - inventories: - - https://autoregistry.readthedocs.io/en/stable/objects.inv - - https://beartype.github.io/plum/objects.inv - - https://beartype.readthedocs.io/en/stable/objects.inv - - https://cappa.readthedocs.io/en/stable/objects.inv - - https://cherries.readthedocs.io/en/stable/objects.inv - - https://chex.readthedocs.io/en/stable/objects.inv - - https://cyclopts.readthedocs.io/en/stable/objects.inv - - https://docs.jax.dev/en/latest/objects.inv - - https://docs.kidger.site/equinox/objects.inv - - https://docs.kidger.site/jaxtyping/objects.inv - - https://docs.kidger.site/wadler_lindig/objects.inv - - https://docs.pola.rs/api/python/stable/objects.inv - - https://docs.pydantic.dev/latest/objects.inv - - https://docs.python.org/3/objects.inv - - https://docs.pytorch.org/docs/stable/objects.inv - - https://docs.pyvista.org/objects.inv - - https://einops.rocks/objects.inv - - https://etils.readthedocs.io/en/stable/objects.inv - - https://felupe.readthedocs.io/en/stable/objects.inv - - https://gitpython.readthedocs.io/en/stable/objects.inv - - https://glom.readthedocs.io/en/stable/objects.inv - - https://grantjenks.com/docs/sortedcollections/objects.inv - - https://grantjenks.com/docs/sortedcontainers/objects.inv - - https://ipctk.xyz/objects.inv - - https://jaxopt.github.io/stable/objects.inv - - https://jcristharif.com/msgspec/objects.inv - - https://jinja.palletsprojects.com/en/stable/objects.inv - - https://joblib.readthedocs.io/en/stable/objects.inv - - https://liblaf-apple.readthedocs.io/en/stable/objects.inv - - https://liblaf-grapes.readthedocs.io/en/stable/objects.inv - - https://loguru.readthedocs.io/en/stable/objects.inv - - https://matplotlib.org/stable/objects.inv - - https://melon.readthedocs.io/en/stable/objects.inv - - https://networkx.org/documentation/stable/objects.inv - - https://numpy.org/doc/stable/objects.inv - - https://nvidia.github.io/warp/objects.inv - - https://platformdirs.readthedocs.io/en/stable/objects.inv - - https://pydicom.github.io/pydicom/stable/objects.inv - - https://pymeshfix.pyvista.org/objects.inv - - https://pytorch3d.readthedocs.io/en/latest/objects.inv - - https://questionary.readthedocs.io/en/stable/objects.inv - - https://rich.readthedocs.io/en/stable/objects.inv - - https://toolz.readthedocs.io/en/stable/objects.inv - - https://trimesh.org/objects.inv - - https://typing-extensions.readthedocs.io/en/stable/objects.inv - - https://wrapt.readthedocs.io/en/latest/objects.inv - - https://www.attrs.org/en/stable/objects.inv - options: - # General - backlinks: tree - extensions: - # Built-in - - dataclasses - - unpack_typeddict - # Official - - griffe_inherited_docstrings - - griffe_pydantic: - schema: true - - griffe_warnings_deprecated - # Third-party extensions - # - docstring_inheritance.griffe # crash - - griffe_fieldz: - include_inherited: true - # - griffe_generics # crash - # - griffe_inherited_method_crossrefs # does not work - find_stubs_package: true - show_inheritance_diagram: true - skip_local_inventory: true - # Headings - heading_level: 1 - parameter_headings: true - show_root_heading: true - show_symbol_type_heading: true - show_symbol_type_toc: true - type_parameter_headings: true - # Members - inherited_members: true - filters: public - summary: true - # Docstrings - docstring_style: google - docstring_options: - ignore_init_summary: true - docstring_section_style: list - merge_init_into_class: true - relative_crossrefs: true - scoped_crossrefs: true - show_if_no_docstring: true - # Signatures - modernize_annotations: true - overloads_only: true - show_signature_annotations: true - show_signature_type_parameters: true - separate_signature: true - signature_crossrefs: true - - # ---------------------------- External Plugins ---------------------------- # - - autorefs: # ref: - - api-autonav: # ref: - modules: - - "src/liblaf" - - # hippogriffe: # ref: - # hippogriffe requires `mkdocstrings.python.options.force_inspection: true`. (This is so it can do things like display type annotations correctly.) - # However, this option will not be not compatible with `lazy-loader` until is resolved. - -markdown_extensions: - # ref: - abbr: - admonition: - attr_list: - def_list: - footnotes: - md_in_html: - toc: - # ref: - permalink: ยค - - # ref: - pymdownx.arithmatex: - generic: true - pymdownx.betterem: - smart_enable: all - pymdownx.blocks.caption: - pymdownx.caret: - pymdownx.mark: - pymdownx.tilde: - pymdownx.critic: - pymdownx.details: - pymdownx.emoji: - pymdownx.highlight: - pymdownx.inlinehilite: - pymdownx.keys: - pymdownx.smartsymbols: - pymdownx.snippets: - pymdownx.superfences: - pymdownx.tabbed: - alternate_style: true - pymdownx.tasklist: - - # ref: - smarty: - - # ref: - mdx_truly_sane_lists: - -watch: - - docs - - README.md - - src diff --git a/.config/cspell.config.yaml b/.config/cspell.config.yaml index 74bdf563c..11239c54c 100644 --- a/.config/cspell.config.yaml +++ b/.config/cspell.config.yaml @@ -1,120 +1,190 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json # This file is @generated by . # DO NOT EDIT! +$schema: https://raw.githubusercontent.com/streetsidesoftware/cspell/main/packages/cspell-types/cspell.schema.json allowCompoundWords: true cache: useCache: true -caseSensitive: false enableGlobDot: true ignorePaths: - .git/ - cspell.* + - CHANGELOG.md - "*.lock" - - "*.png" - - "*.avi" - - "*.mp4" - "*.obj" - "*.series" - "*.vtm" - "*.vtp" - "*.vtu" ignoreRandomStrings: true -maxFileSize: 500KB +maxFileSize: 32KB useGitignore: true words: + - aabbs + - anguli - arap - - argnums - arithmatex - - asarray + - arpack + - ascontiguousarray + - atlanto + - auricularis - bfgs + - binarize + - blit + - callosum + - capitis + - cava - cbrt - - chex - - cholespy + - cervicis + - chodra + - chol + - cingulate + - circothyroid + - cofactor + - colli + - corotational + - cricoarytenoid + - cricothyroid - cuda - - cupy - - cytoolz - ddot - - defjvp + - dhat - dhdr - - direnv + - digastiric + - dmin - dofs - - dtypes - eigh + - eigsh + - eigvals + - eigvalsh - einops - - einsum + - elems + - epicranius - felupe - fieldz - finfo - - getattr + - flava + - genioglossus + - geniohyoid + - globus - gmres + - grimp + - griseum - hessp - hynek + - hyoglossus - icosphere + - illiocostalis + - inferioris + - inferor - inlinehilite + - interansversarii + - intertransversarii + - ipctk - ipykernel - - ipython - - isdtype + - jarp - jaxtyping - kdtree - - koiter - labii - lbfgs + - lbvh - liblaf + - ligamenta - lineax + - linenums + - lmbda + - lucide + - lumborum + - mandibula - matmul - matvec + - mentalis + - minv - mkdocs - mkdocstrings - - nans - - nbconvert - - nbformat - - ndarray - - ndindex + - multifidus + - mypy + - nasi + - nasolacrimal - neumann - novolpres - - numprocesses + - nuchal - numpy - - optax - - optim + - obliqyys + - occipitofrontalis + - omohyoid + - opinv + - optree - orbicularis - oris + - oxfmt + - oxlint + - palatini + - palatoglossus + - pallidus + - palpebrae + - palpebral - phace - piola + - pipx - pncg - - primals + - precond + - procerus + - pterygoid - pvsm + - pybind - pycache - pydantic - pydocstyle + - pygame - pygments - pylint + - pylops - pymdownx - pypa - pypi - pyplot - - pyproject - - pyrightconfig - pytest - - pytree - pyvista + - retopo + - rhomboideus + - risorius - rmatvec + - rmse - rpreconditioner - rtol + - rumdl + - savez - scipy - sdist - - simplejson - - socialify + - septi + - serratus + - smas + - sphenomandibular + - spinalis + - spla + - sternocleidomastoid + - styloglossus + - stylohyoid + - stylomandibular + - supercilii + - supercilli - superioris + - symplectic - sympy + - taiki + - tectorial + - thyrohyoid + - todense - tombi - - toolz - trimesh - - unshallow - - unvec - - uuidgen + - twemoji + - unflatten - vdot - vecdot + - veli - venv + - verts + - vestibulocochlear - virtualenv - xlabel - ylabel diff --git a/.config/linters/.ruff.toml b/.config/linters/.ruff.toml index 66c16a612..350223b16 100644 --- a/.config/linters/.ruff.toml +++ b/.config/linters/.ruff.toml @@ -3,7 +3,7 @@ # DO NOT EDIT! builtins = ["ic"] -exclude = ["_version.py"] +extend-exclude = ["_version.py"] fix = true show-fixes = true @@ -34,6 +34,7 @@ ignore = [ "PLR2004", "RET504", "S101", + "S310", "S603", "S607", "T201", @@ -50,7 +51,7 @@ select = ["ALL"] [lint.flake8-annotations] allow-star-arg-any = true -[lint.flake8-import-conventions.aliases] +[lint.flake8-import-conventions.extend-aliases] "jax.numpy" = "jnp" "jax.typing" = "jxt" "matplotlib" = "mpl" diff --git a/.config/linters/pyrightconfig.json b/.config/linters/pyrightconfig.json deleted file mode 100644 index 8cbb0284c..000000000 --- a/.config/linters/pyrightconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/pyright/main/packages/vscode-pyright/schemas/pyrightconfig.schema.json", - "enableTypeIgnoreComments": false, - "typeCheckingMode": "standard", - "reportArgumentType": "information", - "reportAssignmentType": "information", - "reportIncompatibleMethodOverride": "warning", - "reportIncompatibleVariableOverride": "warning", - "reportPrivateImportUsage": "none", - "reportRedeclaration": "none" -} diff --git a/.config/mise/conf.d/10-python.toml b/.config/mise/conf.d/10-python.toml deleted file mode 100644 index 41357287f..000000000 --- a/.config/mise/conf.d/10-python.toml +++ /dev/null @@ -1,6 +0,0 @@ -#:schema https://mise.jdx.dev/schema/mise.json -# This file is @generated by . -# DO NOT EDIT! - -[hooks] -enter = "mise run install" diff --git a/.config/mise/conf.d/10-shared.toml b/.config/mise/conf.d/10-shared.toml deleted file mode 100644 index 55275c9c4..000000000 --- a/.config/mise/conf.d/10-shared.toml +++ /dev/null @@ -1,6 +0,0 @@ -#:schema https://mise.jdx.dev/schema/mise.json -# This file is @generated by . -# DO NOT EDIT! - -[env] -_.file = ".env" diff --git a/.config/mise/conf.d/50-python.toml b/.config/mise/conf.d/50-python.toml new file mode 100644 index 000000000..81e8a0a5c --- /dev/null +++ b/.config/mise/conf.d/50-python.toml @@ -0,0 +1,49 @@ +#:schema https://mise.jdx.dev/schema/mise.json +# This file is @generated by . +# DO NOT EDIT! + +[hooks.enter] +task = "install" + +# +[tasks."docs:build"] +description = "Build the documentation site" +run = [ + # Clear the cache to force API reference regeneration when source code changes. + # TODO: Remove this workaround once the upstream documentation tool updates the API reference automatically on source code changes. + "rm --force --recursive '{{ config_root }}/.cache'", + "zensical build", +] + +[tasks."docs:serve"] +description = "Serve the documentation site locally" +run = ["rm --force --recursive '{{ config_root }}/.cache'", "zensical serve"] +# + +[tasks."gen:init"] +description = "Generate lazy-loading __init__.py files from __init__.pyi stubs" +file = "https://raw.githubusercontent.com/liblaf/copier-python/adc8bc9f903b0a9ffcd6fafda40a13bebfa5f82a/mise-tasks/gen/init.py" + +[tasks."gen:ref-pages"] +description = "Generate API reference pages from public Python modules" +file = "https://raw.githubusercontent.com/liblaf/copier-python/adc8bc9f903b0a9ffcd6fafda40a13bebfa5f82a/mise-tasks/gen/ref-pages.py" + +[tasks.install] +description = "Install project dependencies from pixi.lock or uv.lock" +file = "https://raw.githubusercontent.com/liblaf/copier-python/adc8bc9f903b0a9ffcd6fafda40a13bebfa5f82a/mise-tasks/install.sh" + +[tasks.lint] +description = "Run all linters" +depends = ["lint:python", "lint:toml"] + +[tasks."lint:python"] +description = "Lint and format Python files" +run = ["lint-imports", "ruff check --fix", "ruff format", "ty check --fix"] + +[tasks."lint:toml"] +description = "Sort, format, and lint TOML files with toml-sort and tombi" +file = "https://raw.githubusercontent.com/liblaf/copier-python/adc8bc9f903b0a9ffcd6fafda40a13bebfa5f82a/mise-tasks/lint/toml.sh" + +[tasks.upgrade] +description = "Upgrade project dependencies from pixi.lock or uv.lock" +file = "https://raw.githubusercontent.com/liblaf/copier-python/adc8bc9f903b0a9ffcd6fafda40a13bebfa5f82a/mise-tasks/upgrade.sh" diff --git a/.config/mise/conf.d/50-shared.toml b/.config/mise/conf.d/50-shared.toml new file mode 100644 index 000000000..b53a9f7e6 --- /dev/null +++ b/.config/mise/conf.d/50-shared.toml @@ -0,0 +1,7 @@ +#:schema https://mise.jdx.dev/schema/mise.json +# This file is @generated by . +# DO NOT EDIT! + +[tasks.copier-update] +description = "Recopy all configured Copier templates from their answers files." +file = "https://raw.githubusercontent.com/liblaf/copier-shared/329a913022b230d648a9c1b4a8d0cd87a8156c55/mise-tasks/copier-update.sh" diff --git a/.config/mise/config.toml b/.config/mise/config.toml index cf8cd1706..ce7146100 100644 --- a/.config/mise/config.toml +++ b/.config/mise/config.toml @@ -2,7 +2,5 @@ [env] JAX_DEFAULT_MATMUL_PRECISION = "highest" +JAX_ENABLE_X64 = "true" XLA_PYTHON_CLIENT_PREALLOCATE = "false" - -[task_config] -includes = [".config/mise/tasks", ".config/copier/mise-tasks"] diff --git a/.config/mise/tasks/gen-warp-stubs.sh b/.config/mise/tasks/gen-warp-stubs.sh deleted file mode 100755 index 4d5d7a356..000000000 --- a/.config/mise/tasks/gen-warp-stubs.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -o errexit -set -o nounset -set -o pipefail - -stubgen --output typings/ --package warp -py_file="$(python -c 'import warp; print(warp.__file__)')" -pyi_file="${py_file}i" -awk ' -39 <= NR && NR <= 150 { next } -{ print $0 } -' "$pyi_file" >> typings/warp/__init__.pyi diff --git a/.config/mise/tasks/stubgen/ipctk.sh b/.config/mise/tasks/stubgen/ipctk.sh new file mode 100755 index 000000000..48821c3d0 --- /dev/null +++ b/.config/mise/tasks/stubgen/ipctk.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail + +pybind11-stubgen \ + --output-dir "$MISE_CONFIG_ROOT/typings/" \ + --ignore-all-errors \ + 'ipctk' diff --git a/.config/release-please/.manifest.json b/.config/release-please/.manifest.json deleted file mode 100644 index 8663d4006..000000000 --- a/.config/release-please/.manifest.json +++ /dev/null @@ -1 +0,0 @@ -{".":"0.7.0"} diff --git a/.config/release-please/config.json b/.config/release-please/config.json deleted file mode 100644 index 41468a06d..000000000 --- a/.config/release-please/config.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "$schema": "https://github.com/googleapis/release-please/raw/refs/heads/main/schemas/config.json", - "release-type": "python", - "bump-minor-pre-major": true, - "bump-patch-for-minor-pre-major": true, - "changelog-sections": [ - { - "type": "feat", - "section": "โœจ Features" - }, - { - "type": "fix", - "section": "๐Ÿ› Bug Fixes" - }, - { - "type": "docs", - "section": "๐Ÿ“ Documentation" - }, - { - "type": "style", - "section": "๐Ÿ’„ Styles" - }, - { - "type": "refactor", - "section": "โ™ป๏ธ Code Refactoring" - }, - { - "type": "perf", - "section": "โšก๏ธ Performance Improvements" - }, - { - "type": "test", - "section": "โœ… Tests" - }, - { - "type": "build", - "section": "๐Ÿ›  Builds" - }, - { - "type": "ci", - "section": "โš™๏ธ Continuous Integration" - }, - { - "type": "chore", - "section": "๐ŸŽซ Chores", - "hidden": true - }, - { - "type": "revert", - "section": "โช๏ธ Reverts" - } - ], - "include-component-in-tag": false, - "always-update": true, - "initial-version": "0.1.0", - "packages": { - ".": {} - } -} diff --git a/.config/rumdl.toml b/.config/rumdl.toml new file mode 100644 index 000000000..4c1dacca0 --- /dev/null +++ b/.config/rumdl.toml @@ -0,0 +1,9 @@ +#:schema https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/rumdl.json +# ref: + +[global] +extend-enable = ["MD060"] +extend-disable = ["MD001", "MD013", "MD033", "MD036", "MD041"] + +[per-file-flavor] +"docs/**/*.md" = "mkdocs" diff --git a/.envrc b/.envrc deleted file mode 100644 index 42f7a16e1..000000000 --- a/.envrc +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! - -export DIRENV_ROOT="$PWD" -if [[ -d "$DIRENV_ROOT/.config/direnv" ]]; then - while IFS= read -d '' -r file; do - source_env_if_exists "$file" - done < <( - find "$DIRENV_ROOT/.config/direnv" -name "*.sh" -type f -print0 | - sort --zero-terminated - ) -fi diff --git a/.gitattributes b/.gitattributes index 059516d8c..ed944993d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,7 +4,6 @@ # Videos *.avi filter=lfs diff=lfs merge=lfs -text *.mp4 filter=lfs diff=lfs merge=lfs -text - # 3D Models *.glb filter=lfs diff=lfs merge=lfs -text *.landmarks.json filter=lfs diff=lfs merge=lfs -text @@ -16,6 +15,6 @@ *.vti filter=lfs diff=lfs merge=lfs -text *.vtp filter=lfs diff=lfs merge=lfs -text *.vtu filter=lfs diff=lfs merge=lfs -text - # Misc *.pvsm filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text diff --git a/.github/renovate.json b/.github/renovate.json deleted file mode 100644 index f59131b0f..000000000 --- a/.github/renovate.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["github>liblaf/.github:renovate-config"] -} diff --git a/.github/workflows/bench.yaml b/.github/workflows/bench.yaml deleted file mode 100644 index 845cbccb9..000000000 --- a/.github/workflows/bench.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -name: Bench - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -env: - FORCE_COLOR: 1 - -jobs: - metadata: - name: Metadata - runs-on: ubuntu-latest - outputs: - has-benches: ${{ steps.collect.outputs.has-benches }} - python-versions: ${{ steps.inspect.outputs.supported_python_classifiers_json_array }} - steps: - - name: Checkout - uses: actions/checkout@v6 - - id: inspect - name: Build and Inspect a Python Package - uses: hynek/build-and-inspect-python-package@v2 - - name: Setup Python - uses: liblaf/actions/setup-python@v1 - - id: collect - name: Collect - run: |- - if pytest -m 'benchmark' --collect-only; then - echo 'has-tests=true' >> "$GITHUB_OUTPUT" - else - code="$?" - if (("$code" == 5)); then - echo 'has-tests=false' >> "$GITHUB_OUTPUT" - else - exit "$code" - fi - fi - - # CodSpeedHQ does not support the same benchmark multiple times - # so we don't run on multiple python versions here. - bench: - name: Bench - needs: - - metadata - if: needs.metadata.outputs.has-benches == 'true' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6 - - name: Setup Python - uses: liblaf/actions/setup-python@v1 - - name: Install Mise - uses: jdx/mise-action@v3 - - name: Bench - uses: CodSpeedHQ/action@v4 - with: - run: mise run bench - mode: instrumentation - env: - FORCE_COLOR: 1 diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml deleted file mode 100644 index b283e1493..000000000 --- a/.github/workflows/docs.yaml +++ /dev/null @@ -1,57 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -name: Docs - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -env: - FORCE_COLOR: 1 - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - id: config - name: Configure GitHub Pages - uses: actions/configure-pages@v5 - - name: Set Environment Variables - run: echo 'SITE_URL=${{ steps.config.outputs.base_url }}' >> "$GITHUB_ENV" - - name: Setup Python - uses: liblaf/actions/setup-python@v1 - - if: hashFiles('docs/scripts/pre-build.sh') != '' - name: Pre-Build - run: docs/scripts/pre-build.sh - - name: Build - run: mkdocs build - - name: Upload Github Pages Artifact - uses: actions/upload-pages-artifact@v4 - with: - path: site - - deploy: - name: Deploy - permissions: - id-token: write - pages: write - needs: - - build - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deploy.outputs.page_url }} - steps: - - id: deploy - name: Deploy Github Pages Site - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/mega-linter.yaml b/.github/workflows/mega-linter.yaml deleted file mode 100644 index 8704a1ace..000000000 --- a/.github/workflows/mega-linter.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -# ref: -# ref: - -name: MegaLinter - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -env: - FORCE_COLOR: 1 - -jobs: - mega-linter: - name: MegaLinter - permissions: - contents: write - pull-requests: write - runs-on: ubuntu-latest - environment: - name: MegaLinter - steps: - - id: auth - name: Auth - uses: liblaf/actions/auth@v1 - with: - app-id: ${{ vars.APP_ID }} - private-key: ${{ secrets.PRIVATE_KEY }} - - name: Checkout - uses: actions/checkout@v6 - with: - ref: ${{ github.head_ref || github.ref }} - - id: lint - name: MegaLinter - uses: liblaf/actions/mega-linter@v1 - with: - token: ${{ steps.auth.outputs.token }} - - if: success() || failure() - name: Upload Reports - uses: actions/upload-artifact@v6 - with: - name: mega-linter-reports - path: |- - mega-linter.log - megalinter-reports - include-hidden-files: true - - if: success() || failure() - name: Remove MegaLinter Reports - run: |- - cp --target-directory='${{ runner.temp }}' --verbose 'megalinter-reports/megalinter-report.md' - sudo rm --force --recursive 'mega-linter.log' 'megalinter-reports' - - if: steps.lint.outputs.has-updated-sources > 0 && github.ref == 'refs/heads/main' - name: Create PR with Applied Fixes - uses: peter-evans/create-pull-request@v8 - with: - commit-message: "chore(mega-linter): apply linters automatic fixes" - branch: mega-linter-fix/${{ github.ref_name }} - sign-commits: true - title: "chore(mega-linter): apply linters automatic fixes" - body-path: ${{ runner.temp }}/megalinter-report.md - labels: automerge,bot - assignees: ${{ github.repository_owner }} - reviewers: ${{ github.repository_owner }} - - if: steps.lint.outputs.has-updated-sources > 0 && github.ref != 'refs/heads/main' - name: Commit and Push Applied Linter Fixes - uses: liblaf/actions/commit@v1 - with: - add-options: --verbose --update - message: "chore(mega-linter): apply linters automatic fixes" diff --git a/.github/workflows/python-bench.yaml b/.github/workflows/python-bench.yaml new file mode 100644 index 000000000..002b53968 --- /dev/null +++ b/.github/workflows/python-bench.yaml @@ -0,0 +1,61 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Python / Bench + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + FORCE_COLOR: 1 + +jobs: + collect: + name: Collect + runs-on: ubuntu-latest + outputs: + sessions: ${{ steps.collect.outputs.sessions }} + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + activate-environment: true + - name: Install dependencies + run: uv sync --active --frozen --all-packages + - id: collect + name: Collect + run: |- + echo "sessions=$( + nox --list-sessions --json --tags 'bench' | + jq --compact-output '[.[].session]' + )" >> "$GITHUB_OUTPUT" + + # CodSpeedHQ does not support the same benchmark multiple times + # so we don't run on multiple python versions here. + bench: + name: Bench + needs: + - collect + if: needs.collect.outputs.sessions != '[]' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + activate-environment: true + - name: Install dependencies + run: uv sync --active --frozen --all-packages + - name: Bench + uses: CodSpeedHQ/action@3194d9a39c4d46684cb44bf7207fc56626aad8fd # v4 + with: + run: nox --tags 'bench' + mode: instrumentation diff --git a/.github/workflows/python-docs.yaml b/.github/workflows/python-docs.yaml new file mode 100644 index 000000000..d0f8bf44c --- /dev/null +++ b/.github/workflows/python-docs.yaml @@ -0,0 +1,61 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Python / Docs + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + FORCE_COLOR: 1 + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + - id: config + name: Configure GitHub Pages + uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6 + - name: Set environment variables + run: echo 'SITE_URL=${{ steps.config.outputs.base_url }}' >> "$GITHUB_ENV" + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + activate-environment: true + - name: Install dependencies + run: uv sync --active --frozen --all-packages + - name: Set site url + run: sed --in-place 's|__SITE_URL__|${{ steps.config.outputs.base_url }}|g' 'zensical.toml' + - name: Build + run: zensical build + - name: Upload Github Pages artifact + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5 + with: + path: site + + deploy: + name: Deploy + permissions: + id-token: write + pages: write + needs: + - build + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deploy.outputs.page_url }} + steps: + - id: deploy + name: Deploy Github Pages site + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5 diff --git a/.github/workflows/python-release.yaml b/.github/workflows/python-release.yaml new file mode 100644 index 000000000..ae047c491 --- /dev/null +++ b/.github/workflows/python-release.yaml @@ -0,0 +1,76 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Python / Release + +on: + # Trigger only when a GitHub Release is published, so the release exists before assets are uploaded. + release: + types: + - published + +env: + FORCE_COLOR: 1 + +jobs: + build: + name: Build + permissions: + attestations: write + id-token: write + runs-on: ubuntu-latest + outputs: + artifact-name: ${{ steps.build.outputs.artifact-name }} + package-name: ${{ steps.build.outputs.package_name }} + package-version: ${{ steps.build.outputs.package_version }} + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - id: build + name: Build and inspect a Python package + uses: hynek/build-and-inspect-python-package@d44ca7d91762de7a7d5436ddae667c6da6d1c3df # v2 + with: + attest-build-provenance-github: true + + pypi: + name: Publish to PyPI + permissions: + attestations: write + id-token: write + needs: + - build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/project/${{ needs.build.outputs.package-name }}/${{ needs.build.outputs.package-version }}/ + steps: + - name: Download artifacts + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + name: ${{ needs.build.outputs.artifact-name }} + path: dist + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1 + with: + verbose: ${{ runner.debug == '1' }} + print-hash: true + attestations: true + + github: + name: GitHub Release + permissions: + contents: write + needs: + - build + runs-on: ubuntu-latest + steps: + - name: Download artifacts + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + name: ${{ needs.build.outputs.artifact-name }} + path: dist + - name: Upload release assets + uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3 + with: + draft: false + files: dist/* diff --git a/.github/workflows/python-test.yaml b/.github/workflows/python-test.yaml new file mode 100644 index 000000000..2d034a86e --- /dev/null +++ b/.github/workflows/python-test.yaml @@ -0,0 +1,78 @@ +# This file is @generated by . +# DO NOT EDIT! + +# ref: + +name: Python / Test + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + FORCE_COLOR: 1 + +jobs: + collect: + name: Collect + runs-on: ubuntu-latest + outputs: + sessions: ${{ steps.collect.outputs.sessions }} + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + activate-environment: true + - name: Install dependencies + run: uv sync --active --frozen --all-packages + - id: collect + name: Collect + run: |- + echo "sessions=$( + nox --list-sessions --json --tags 'test' | + jq --compact-output '[.[].session]' + )" >> "$GITHUB_OUTPUT" + + test: + name: Test + permissions: + id-token: write + needs: + - collect + if: needs.collect.outputs.sessions != '[]' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 # I don't know why, but it is present in Codecov's documentation + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + activate-environment: true + - name: Install dependencies + run: uv sync --active --frozen --all-packages + - name: Test + run: nox --session '${{ matrix.session }}' + - if: success() || failure() + name: Upload coverage + uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6 + with: + report_type: coverage + use_oidc: true + - if: success() || failure() + name: Upload test results + uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6 + with: + report_type: test_results + use_oidc: true + strategy: + matrix: + session: ${{ fromJson(needs.collect.outputs.sessions) }} + fail-fast: false diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml deleted file mode 100644 index 737348fc2..000000000 --- a/.github/workflows/release-please.yaml +++ /dev/null @@ -1,143 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -name: Release Please - -on: - push: - branches: - - main - -env: - FORCE_COLOR: 1 - -concurrency: - group: ${{ github.workflow }} @ ${{ github.ref }} - cancel-in-progress: false - -jobs: - release-please: - name: Release Please - permissions: - contents: write - pull-requests: write - runs-on: ubuntu-latest - environment: - name: Release Please - outputs: - pr: ${{ steps.release-please.outputs.pr }} - prs_created: ${{ steps.release-please.outputs.prs_created }} - release_created: ${{ steps.release-please.outputs.release_created }} - tag: ${{ steps.release-please.outputs.tag_name }} - steps: - - id: auth - name: Auth - uses: liblaf/actions/auth@v1 - with: - app-id: ${{ vars.APP_ID }} - private-key: ${{ secrets.PRIVATE_KEY }} - - name: Checkout - uses: actions/checkout@v6 - with: - token: ${{ steps.auth.outputs.token }} - - id: release-please - name: Release Please - uses: googleapis/release-please-action@v4 - with: - token: ${{ steps.auth.outputs.token }} - config-file: .config/release-please/config.json - manifest-file: .config/release-please/.manifest.json - - post-pr: - name: Post PR - permissions: - contents: write - pull-requests: write - needs: - - release-please - if: ${{ needs.release-please.outputs.pr }} - runs-on: ubuntu-latest - environment: - name: Release Please - steps: - - id: auth - name: Auth - uses: liblaf/actions/auth@v1 - with: - app-id: ${{ vars.APP_ID }} - private-key: ${{ secrets.PRIVATE_KEY }} - - name: Checkout - uses: actions/checkout@v6 - with: - ref: ${{ fromJson(needs.release-please.outputs.pr).headBranchName }} - token: ${{ steps.auth.outputs.token }} - fetch-depth: 0 - - name: Prettier Manifest - run: npx prettier --write --no-config '.config/release-please/.manifest.json' - - id: tag - name: Get Tag - run: |- - title='${{ fromJson(needs.release-please.outputs.pr).title }}' - version="$(awk '{ print $NF }' <<< "$title")" - printf 'tag=%s\n' "v$version" >> "$GITHUB_OUTPUT" - - name: Changelog - uses: liblaf/actions/changelog@v1 - with: - output: CHANGELOG.md - args: --tag '${{ steps.tag.outputs.tag }}' - - id: message - name: Get Commit Message - run: |- - delimiter="$(uuidgen)" - message="$(git show --format='%B' --no-patch)" - printf 'message<<%s\n%s\n%s\n' "$delimiter" "$message" "$delimiter" >> "$GITHUB_OUTPUT" - - name: Undo Last Commit - run: git reset --soft HEAD~1 - - name: Commit - uses: liblaf/actions/commit@v1 - with: - add-options: --verbose '.config/release-please/.manifest.json' 'CHANGELOG.md' - force: true - message: ${{ steps.message.outputs.message }} - ref: ${{ fromJson(needs.release-please.outputs.pr).headBranchName }} - token: ${{ steps.auth.outputs.token }} - - name: Add Label - run: |- - gh pr edit '${{ fromJson(needs.release-please.outputs.pr).number }}' --add-label 'automerge' - env: - GH_TOKEN: ${{ steps.auth.outputs.token }} - - post-release: - name: Post Release - permissions: - contents: write - needs: - - release-please - if: ${{ needs.release-please.outputs.release_created }} - runs-on: ubuntu-latest - environment: - name: Release Please - steps: - - id: auth - name: Auth - uses: liblaf/actions/auth@v1 - with: - app-id: ${{ vars.APP_ID }} - private-key: ${{ secrets.PRIVATE_KEY }} - - name: Checkout - uses: actions/checkout@v6 - with: - ref: ${{ needs.release-please.outputs.tag }} - token: ${{ steps.auth.outputs.token }} - fetch-depth: 0 - - id: changelog - name: Changelog - uses: liblaf/actions/changelog@v1 - with: - args: --current --strip all - - name: Update Release Notes - run: >- - gh release edit '${{ needs.release-please.outputs.tag }}' - --notes-file '${{ steps.changelog.outputs.changelog }}' - env: - GH_TOKEN: ${{ steps.auth.outputs.token }} diff --git a/.github/workflows/release-pr.yaml b/.github/workflows/release-pr.yaml new file mode 100644 index 000000000..c86411bff --- /dev/null +++ b/.github/workflows/release-pr.yaml @@ -0,0 +1,105 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Release / PR + +on: + push: + branches: + - main + +env: + GIT_CLIFF_CONFIG_URL: https://raw.githubusercontent.com/liblaf/copier-release/refs/heads/main/cliff.toml + +concurrency: + group: ${{ github.workflow }} @ ${{ github.ref }} + cancel-in-progress: true + +jobs: + version: + name: Version + if: >- + ${{ !startsWith(github.event.head_commit.message, 'chore(release): ') }} + runs-on: ubuntu-latest + outputs: + bumped: ${{ steps.version.outputs.bumped }} + release-as: ${{ steps.version.outputs.release-as }} + tag: ${{ steps.version.outputs.tag }} + version: ${{ steps.version.outputs.version }} + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + - name: Install git-cliff + uses: taiki-e/install-action@920ab1831fbf4fb3ef75c8ead83556c918bb7290 # v2 + with: + tool: git-cliff + - id: version + name: Next version + uses: liblaf/actions/next-version@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + env: + GIT_CLIFF_CONFIG_URL: ${{ env.GIT_CLIFF_CONFIG_URL }} + GITHUB_TOKEN: ${{ github.token }} + + release-pr: + name: Create PR + permissions: + contents: write + issues: write + pull-requests: write + needs: + - version + if: needs.version.outputs.bumped == 'true' + runs-on: ubuntu-latest + environment: + name: release-please + deployment: false + steps: + - id: auth + name: Auth + uses: liblaf/actions/auth@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + client-id: ${{ vars.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + - name: Install rumdl + run: pipx install rumdl + - name: Generate changelog + uses: orhun/git-cliff-action@f50e11560dce63f7c33227798f90b924471a88b5 # v4 + env: + GIT_CLIFF_CONFIG_URL: ${{ env.GIT_CLIFF_CONFIG_URL }} + GIT_CLIFF_TAG: ${{ needs.version.outputs.tag }} + OUTPUT: CHANGELOG.md + - name: Format changelog + run: rumdl fmt CHANGELOG.md + - name: Generate PR body + uses: orhun/git-cliff-action@f50e11560dce63f7c33227798f90b924471a88b5 # v4 + with: + args: --verbose --unreleased --strip all + env: + GIT_CLIFF_CONFIG_URL: ${{ env.GIT_CLIFF_CONFIG_URL }} + GIT_CLIFF_TAG: ${{ needs.version.outputs.tag }} + OUTPUT: ${{ runner.temp }}/body.md + - name: Format PR body + run: rumdl fmt '${{ runner.temp }}/body.md' + - if: hashFiles('package.json') + name: Bump package.json + run: npm version '${{ needs.version.outputs.version }}' --no-git-tag-version + - name: Create PR + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8 + with: + token: ${{ steps.auth.outputs.token }} + commit-message: "chore(release): ${{ needs.version.outputs.tag }}" + branch: release-please/${{ github.ref_name }} + delete-branch: true + sign-commits: true + title: "chore(release): ${{ needs.version.outputs.tag }}" + body-path: ${{ runner.temp }}/body.md + labels: |- + automerge + release-please + assignees: ${{ github.repository_owner }} diff --git a/.github/workflows/release-publish.yaml b/.github/workflows/release-publish.yaml new file mode 100644 index 000000000..02d276c88 --- /dev/null +++ b/.github/workflows/release-publish.yaml @@ -0,0 +1,54 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Release / Publish + +on: + pull_request: + branches: + - main + types: + - closed + +jobs: + release-draft: + name: Create Release + permissions: + contents: write + if: >- + startsWith(github.head_ref, 'release-please/') && + github.event.pull_request.merged + runs-on: ubuntu-latest + environment: + name: release-please + deployment: false + steps: + - id: auth + name: Auth + uses: liblaf/actions/auth@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + client-id: ${{ vars.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + token: ${{ steps.auth.outputs.token }} + - id: version + name: Get version + run: |- + tag="$(awk '{ print $NF }' <<< "$TITLE")" + version="${tag#'v'}" + echo "tag=$tag" >> "$GITHUB_OUTPUT" + echo "version=$version" >> "$GITHUB_OUTPUT" + env: + TITLE: ${{ github.event.pull_request.title }} + - name: Create tag + run: |- + git tag '${{ steps.version.outputs.tag }}' + git push origin tag '${{ steps.version.outputs.tag }}' + - name: Create release + uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3 + with: + body: ${{ github.event.pull_request.body }} + tag_name: ${{ steps.version.outputs.tag }} + token: ${{ steps.auth.outputs.token }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 0a608193d..000000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -name: Release - -on: - release: - types: - - published - workflow_dispatch: - -env: - FORCE_COLOR: 1 - -jobs: - build: - name: Build - permissions: - attestations: write - id-token: write - runs-on: ubuntu-latest - outputs: - artifact-name: ${{ steps.build.outputs.artifact-name }} - package-name: ${{ steps.build.outputs.package_name }} - package-version: ${{ steps.build.outputs.package_version }} - steps: - - name: Checkout - uses: actions/checkout@v6 - - id: build - name: Build and Inspect a Python Package - uses: hynek/build-and-inspect-python-package@v2 - with: - attest-build-provenance-github: true - - publish: - name: Publish - permissions: - attestations: write - id-token: write - needs: - - build - runs-on: ubuntu-latest - environment: - name: PyPI - url: https://pypi.org/project/${{ needs.build.outputs.package-name }}/${{ needs.build.outputs.package-version }}/ - steps: - - name: Download Artifacts - uses: actions/download-artifact@v7 - with: - name: ${{ needs.build.outputs.artifact-name }} - path: dist - - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - verbose: true - print-hash: true - attestations: true - - release: - name: Release - permissions: - contents: write - needs: - - build - runs-on: ubuntu-latest - steps: - - name: Download Artifacts - uses: actions/download-artifact@v7 - with: - name: ${{ needs.build.outputs.artifact-name }} - path: dist - - name: Upload Release Assets - uses: softprops/action-gh-release@v2 - with: - files: dist/* diff --git a/.github/workflows/shared-approve.yaml b/.github/workflows/shared-approve.yaml new file mode 100644 index 000000000..64b4197ea --- /dev/null +++ b/.github/workflows/shared-approve.yaml @@ -0,0 +1,39 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Shared / Approve + +on: + schedule: + - cron: "0 0 * * 0" # Runs at 00:00, only on Sunday + workflow_dispatch: + +env: + FORCE_COLOR: 1 + +jobs: + approve: + name: Approve + runs-on: ubuntu-latest + environment: + name: approve + deployment: false + steps: + - id: auth + name: Auth + uses: liblaf/actions/auth@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + client-id: ${{ vars.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + - name: Approve + uses: liblaf/actions/approve@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + approve-token: ${{ steps.auth.outputs.token }} + label: ${{ matrix.label }} + reviewer: ${{ steps.auth.outputs.committer-name }} + strategy: + matrix: + label: + - copier + - release-please + fail-fast: false diff --git a/.github/workflows/shared-copier-update.yaml b/.github/workflows/shared-copier-update.yaml new file mode 100644 index 000000000..47ae36ca1 --- /dev/null +++ b/.github/workflows/shared-copier-update.yaml @@ -0,0 +1,56 @@ +# This file is @generated by . +# DO NOT EDIT! + +name: Shared / Copier Update + +on: + schedule: + - cron: "0 0 * * 6" # Runs at 00:00, only on Saturday + workflow_dispatch: + +env: + FORCE_COLOR: 1 + +jobs: + copier-update: + name: Copier Update + permissions: + contents: write + issues: write + pull-requests: write + runs-on: ubuntu-latest + environment: + name: copier + deployment: false + steps: + - id: auth + name: Auth + uses: liblaf/actions/auth@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + client-id: ${{ vars.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - name: Install mise + uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - name: Install Copier + run: pipx install --pip-args cookiecutter copier + - name: Copier update + run: mise run copier-update --skip-answered --trust --force + - name: Create PR + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8 + with: + token: ${{ steps.auth.outputs.token }} + commit-message: "chore(copier): update from template" + branch: copier-update/${{ github.ref_name }} + delete-branch: true + sign-commits: true + title: "chore(copier): update from template" + body: >- + Automated changes by [${{ github.workflow }}](${{ github.server_url + }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) + Workflow + labels: |- + automerge + copier + assignees: ${{ github.repository_owner }} diff --git a/.github/workflows/shared-mega-linter.yaml b/.github/workflows/shared-mega-linter.yaml new file mode 100644 index 000000000..5902e525e --- /dev/null +++ b/.github/workflows/shared-mega-linter.yaml @@ -0,0 +1,105 @@ +# This file is @generated by . +# DO NOT EDIT! + +# ref: +# ref: + +name: Shared / MegaLinter + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + FORCE_COLOR: 1 + +jobs: + mega-linter: + name: MegaLinter + permissions: + contents: write + issues: write + pull-requests: write + runs-on: ubuntu-latest + environment: + name: mega-linter + deployment: false + outputs: + pull-request-url: ${{ steps.pr.outputs.pull-request-url }} + steps: + - id: auth + name: Auth + uses: liblaf/actions/auth@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + client-id: ${{ vars.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - id: lint + name: MegaLinter + uses: liblaf/megalinter-custom-flavor-all@a0dadc6e4008002954e838f66e1d415fc386177a # main + env: + GITHUB_TOKEN: ${{ steps.auth.outputs.token }} + MEGALINTER_CONFIG: https://raw.githubusercontent.com/liblaf/megalinter-custom-flavor-all/refs/heads/main/.mega-linter.yml + - if: success() || failure() + name: Upload reports + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: mega-linter-reports + path: |- + mega-linter.log + megalinter-reports + include-hidden-files: true + - if: success() || failure() + name: Remove MegaLinter reports + run: |- + cp --target-directory='${{ runner.temp }}' --verbose 'megalinter-reports/megalinter-report.md' + sudo rm --force --recursive 'mega-linter.log' 'megalinter-reports' + - id: pr + if: >- + steps.lint.outputs.has-updated-sources == 1 && (github.event_name == + 'push' || github.event.pull_request.head.repo.full_name == + github.repository) + name: Create PR + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8 + with: + token: ${{ steps.auth.outputs.token }} + commit-message: "chore(mega-linter): apply linters automatic fixes" + branch: mega-linter/${{ github.head_ref || github.ref_name }} + delete-branch: true + sign-commits: true + title: "chore(mega-linter): apply linters automatic fixes" + body-path: ${{ runner.temp }}/megalinter-report.md + labels: |- + automerge + mega-linter + assignees: ${{ github.repository_owner }} + + approve: + name: Approve + permissions: + pull-requests: write + needs: + - mega-linter + if: needs.mega-linter.outputs.pull-request-url + runs-on: ubuntu-latest + environment: + name: approve + deployment: false + steps: + - id: auth + name: Auth + uses: liblaf/actions/auth@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + client-id: ${{ vars.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + - name: Approve + uses: liblaf/actions/approve@512d1652c6a71a8f141d1901f50994afaddc925e # v3 + with: + approve-token: ${{ steps.auth.outputs.token }} + pull: ${{ needs.mega-linter.outputs.pull-request-url }} + reviewer: ${{ steps.auth.outputs.committer-name }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index 47d271b20..000000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,83 +0,0 @@ -# This file is @generated by . -# DO NOT EDIT! - -# ref: - -name: Test - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -env: - FORCE_COLOR: 1 - -jobs: - metadata: - name: Metadata - runs-on: ubuntu-latest - outputs: - has-tests: ${{ steps.collect.outputs.has-tests }} - python-versions: ${{ steps.inspect.outputs.supported_python_classifiers_json_array }} - steps: - - name: Checkout - uses: actions/checkout@v6 - - id: inspect - name: Build and Inspect a Python Package - uses: hynek/build-and-inspect-python-package@v2 - - name: Setup Python - uses: liblaf/actions/setup-python@v1 - - id: collect - name: Collect - run: |- - if pytest --collect-only; then - echo 'has-tests=true' >> "$GITHUB_OUTPUT" - else - code="$?" - if (("$code" == 5)); then - echo 'has-tests=false' >> "$GITHUB_OUTPUT" - else - exit "$code" - fi - fi - - test: - name: Test - permissions: - id-token: write - needs: - - metadata - if: needs.metadata.outputs.has-tests == 'true' - runs-on: ubuntu-latest - env: - EAGER_IMPORT: true # ref: - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - fetch-depth: 0 # I don't know why, but it is present in Codecov's documentation - - name: Setup Python - uses: liblaf/actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install Mise - uses: jdx/mise-action@v3 - - name: Test - run: mise run test - - if: success() || failure() - name: Upload Coverage - uses: codecov/codecov-action@v5 - with: - use_oidc: true - - if: success() || failure() - name: Upload Test Results - uses: codecov/test-results-action@v1 - with: - use_oidc: true - strategy: - matrix: - python-version: ${{ fromJson(needs.metadata.outputs.python-versions) }} - fail-fast: false diff --git a/.gitignore b/.gitignore index 38b9d8285..886ca06e2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ # Globally Useful gitignores *.log *.log.* -playground/ # Byte-compiled / optimized / DLL files __pycache__/ @@ -12,8 +11,10 @@ __pycache__/ dist/ # Unit test / coverage reports +.nox/ .cache/ .coverage +.coverage.* .hypothesis/ .pytest_cache/ @@ -24,7 +25,7 @@ dist/ .venv/ # mkdocs documentation -site/ +/site/ # Ruff stuff: .ruff_cache/ @@ -37,7 +38,3 @@ junit.xml # [hatch-vcs](https://github.com/ofek/hatch-vcs) _version.py - -# [Cherries](https://github.com/liblaf/cherries) -.cherries/ -temp/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2c47c528c..f4737e0cc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,33 +7,36 @@ ci: autofix_commit_msg: |- - chore(ci): auto fixes from pre-commit.com hooks + chore(pre-commit): auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci autoupdate_commit_msg: |- - chore(ci): pre-commit autoupdate + chore(pre-commit): pre-commit autoupdate skip: - # `biome.jsonc` may extend from an NPM package. - # `additional_dependencies` won't work in this case. - - biome-check + - oxfmt + - oxlint repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.8 + rev: v0.15.13 hooks: - id: ruff-check args: - --fix - id: ruff-format - - repo: https://github.com/biomejs/pre-commit - rev: v2.3.8 + - repo: https://github.com/oxc-project/mirrors-oxfmt + rev: v0.50.0 hooks: - - id: biome-check - exclude: \.jsonc?$ + - id: oxfmt + - repo: https://github.com/oxc-project/mirrors-oxlint + rev: v1.65.0 + hooks: + - id: oxlint - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: check-added-large-files + exclude: ^(.+\.lock)|(.+-lock\..+)$ - id: check-case-conflict - id: check-illegal-windows-names - id: check-merge-conflict @@ -44,9 +47,15 @@ repos: - id: fix-byte-order-marker - id: mixed-line-ending - id: trailing-whitespace + - repo: https://github.com/rhysd/actionlint + rev: v1.7.12 + hooks: + - id: actionlint + - repo: https://github.com/rvben/rumdl-pre-commit + rev: v0.1.93 + hooks: + - id: rumdl-fmt - repo: https://github.com/shellcheck-py/shellcheck-py rev: v0.11.0.1 hooks: - id: shellcheck - args: - - --exclude=SC1091 diff --git a/.python-version b/.python-version index 24ee5b1be..6324d401a 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.13 +3.14 diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 9504185a0..8c9b36e3f 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,6 +3,7 @@ # DO NOT EDIT! # ref: +# ref: # ref: version: 2 @@ -21,12 +22,20 @@ build: - asdf plugin add uv - asdf install uv latest - asdf global uv latest + create_environment: - uv venv "${READTHEDOCS_VIRTUALENV_PATH}" + install: - UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --frozen --all-packages --link-mode copy + pre_build: - - if test -f 'docs/scripts/pre-build.sh'; then bash 'docs/scripts/pre-build.sh'; fi + - sed --in-place "s|__SITE_URL__|$READTHEDOCS_CANONICAL_URL|g" 'zensical.toml' + + build: + html: + - zensical build -mkdocs: - configuration: mkdocs.yaml + post_build: + - mkdir --parents --verbose "$READTHEDOCS_OUTPUT/html/" + - cp --archive --no-target-directory 'site/' "$READTHEDOCS_OUTPUT/html/" diff --git a/.repomixignore b/.repomixignore deleted file mode 100644 index fd7c578e1..000000000 --- a/.repomixignore +++ /dev/null @@ -1 +0,0 @@ -exp/ diff --git a/.vscode/settings.json b/.vscode/settings.json index b9306957e..c0fcbd50a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,14 @@ { - "editor.inlayHints.enabled": "offUnlessPressed", "files.exclude": { "**/__pycache__/": true, "**/.cache/": true, "**/.codspeed/": true, "**/.coverage": true, + "**/.coverage.*": true, + "**/.grimp_cache/": true, "**/.hypothesis/": true, + "**/.import_linter_cache/": true, + "**/.nox/": true, "**/.pixi/": true, "**/.pytest_cache/": true, "**/.ruff_cache/": true, @@ -14,23 +17,6 @@ "**/junit.xml": true, "**/site/": true }, - "python.analysis.diagnosticMode": "workspace", - "python.testing.pytestArgs": [ - "--color=yes", - "--cov", - "--numprocesses", - "auto" - ], - "python.testing.pytestEnabled": true, - "python.testing.unittestEnabled": false, - "yaml.customTags": [ - // ref: - "!ENV scalar", - "!ENV sequence", - "!relative scalar", - "tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg", - "tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji", - "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format", - "tag:yaml.org,2002:python/object/apply:pymdownx.slugs.slugify mapping" - ] + "python.testing.pytestArgs": ["--color=yes", "--cov"], + "python.testing.pytestEnabled": true } diff --git a/typings/__builtins__.pyi b/__builtins__.pyi similarity index 76% rename from typings/__builtins__.pyi rename to __builtins__.pyi index 0f88a5130..23b2818a4 100644 --- a/typings/__builtins__.pyi +++ b/__builtins__.pyi @@ -1,12 +1,13 @@ # This file is @generated by . # DO NOT EDIT! +# ref: # ref: -from typing import overload, type_check_only +from typing import Protocol, overload, type_check_only @type_check_only -class _IceCreamDebugger: +class _IceCreamDebugger(Protocol): @overload def __call__(self, **kwargs) -> None: ... @overload diff --git a/benches/bench_pncg_branching_backends.py b/benches/bench_pncg_branching_backends.py new file mode 100644 index 000000000..126517c36 --- /dev/null +++ b/benches/bench_pncg_branching_backends.py @@ -0,0 +1,796 @@ +# ruff: noqa: ANN001, E402 +from __future__ import annotations + +"""Micro-benchmark for branch-heavy PNCG control flow over Warp kernels. + +Warp owns the vector work in every path. `jax-jit` keeps scalar decisions inside +a compiled `lax.while_loop`; `jax-eager` and `torch` use eager Python branches +with `.item()` checks, matching the straightforward porting style we would +likely start from when the solver cannot be compiled end to end. +""" + +import argparse +import importlib.util +import statistics +import time +from collections.abc import Callable +from dataclasses import dataclass +from typing import Any, Literal + +import jax + +jax.config.update("jax_enable_x64", val=True) + +import jax.numpy as jnp +import warp as wp +import warp.jax_experimental.ffi + +Backend = Literal["jax-jit", "jax-eager", "torch"] + + +@wp.kernel +def _quadratic_terms_kernel( + x: wp.array(dtype=wp.float64), + target: wp.array(dtype=wp.float64), + stiffness: wp.array(dtype=wp.float64), + direction: wp.array(dtype=wp.float64), + energy: wp.array(dtype=wp.float64), + grad: wp.array(dtype=wp.float64), + hess_diag: wp.array(dtype=wp.float64), + hess_quad: wp.array(dtype=wp.float64), +) -> None: + tid = wp.tid() + dx = x[tid] - target[tid] + k = stiffness[tid] + p = direction[tid] + energy[tid] = type(k)(0.5) * k * dx * dx + grad[tid] = k * dx + hess_diag[tid] = k + hess_quad[tid] = k * p * p + + +_quadratic_terms_jax = warp.jax_experimental.ffi.jax_kernel( + _quadratic_terms_kernel, num_outputs=4 +) + + +@dataclass(frozen=True) +class BenchmarkResult: + backend: Backend + size: int + steps: int + warmup: int + repeat: int + median_ms: float + mean_ms: float + min_ms: float + max_ms: float + value: float + accepted_steps: int + + +def main() -> None: + parser = argparse.ArgumentParser( + description=( + "Compare a branch-heavy PNCG-like loop where Warp evaluates the " + "vector objective terms and JAX/PyTorch owns the scalar control flow." + ) + ) + parser.add_argument( + "--backend", + choices=["all", "jax", "jax-jit", "jax-eager", "torch"], + default="all", + help="Backend wrapper to benchmark.", + ) + parser.add_argument("--size", type=int, default=1_000_000) + parser.add_argument("--steps", type=int, default=25) + parser.add_argument("--max-backtracking-steps", type=int, default=8) + parser.add_argument("--warmup", type=int, default=3) + parser.add_argument("--repeat", type=int, default=10) + parser.add_argument("--device", default="cuda:0") + args = parser.parse_args() + + if not wp.is_cuda_available(): + print("CUDA is required for this JAX/Warp vs PyTorch/Warp benchmark.") + raise SystemExit(2) + + wp.init() + + results: list[BenchmarkResult] = [] + if args.backend in {"all", "jax", "jax-jit"}: + results.append( + bench_jax( + size=args.size, + steps=args.steps, + max_backtracking_steps=args.max_backtracking_steps, + warmup=args.warmup, + repeat=args.repeat, + device=args.device, + ) + ) + if args.backend in {"all", "jax-eager"}: + results.append( + bench_jax_eager( + size=args.size, + steps=args.steps, + max_backtracking_steps=args.max_backtracking_steps, + warmup=args.warmup, + repeat=args.repeat, + device=args.device, + ) + ) + if args.backend in {"all", "torch"}: + if importlib.util.find_spec("torch") is None: + print("torch: skipped; install torch to benchmark the PyTorch/Warp path") + else: + results.append( + bench_torch( + size=args.size, + steps=args.steps, + max_backtracking_steps=args.max_backtracking_steps, + warmup=args.warmup, + repeat=args.repeat, + device=args.device, + ) + ) + + if results: + print_results(results) + + +def bench_jax( + *, + size: int, + steps: int, + max_backtracking_steps: int, + warmup: int, + repeat: int, + device: str, +) -> BenchmarkResult: + jax_device = _jax_device(device) + x0, target, stiffness = _jax_inputs(size, jax_device) + + @jax.jit + def target_fun(x): + return _run_jax_pncg_like( + x, + target, + stiffness, + steps=steps, + max_backtracking_steps=max_backtracking_steps, + ) + + def call() -> tuple[float, int]: + value, accepted_steps = jax.block_until_ready(target_fun(x0)) + return float(value), int(accepted_steps) + + timings, value, accepted_steps = _time_call(call, warmup=warmup, repeat=repeat) + return _result( + backend="jax-jit", + size=size, + steps=steps, + warmup=warmup, + repeat=repeat, + timings=timings, + value=value, + accepted_steps=accepted_steps, + ) + + +def bench_jax_eager( + *, + size: int, + steps: int, + max_backtracking_steps: int, + warmup: int, + repeat: int, + device: str, +) -> BenchmarkResult: + jax_device = _jax_device(device) + x0, target, stiffness = _jax_inputs(size, jax_device) + + def call() -> tuple[float, int]: + value, accepted_steps = _run_jax_pncg_like_eager( + x0, + target, + stiffness, + steps=steps, + max_backtracking_steps=max_backtracking_steps, + ) + value = jax.block_until_ready(value) + return float(value), int(accepted_steps) + + timings, value, accepted_steps = _time_call(call, warmup=warmup, repeat=repeat) + return _result( + backend="jax-eager", + size=size, + steps=steps, + warmup=warmup, + repeat=repeat, + timings=timings, + value=value, + accepted_steps=accepted_steps, + ) + + +def bench_torch( + *, + size: int, + steps: int, + max_backtracking_steps: int, + warmup: int, + repeat: int, + device: str, +) -> BenchmarkResult: + torch = import_torch() + x0, target, stiffness = _torch_inputs(torch, size=size, device=device) + + def call() -> tuple[float, int]: + value, accepted_steps = _run_torch_pncg_like( + torch, + x0, + target, + stiffness, + steps=steps, + max_backtracking_steps=max_backtracking_steps, + device=device, + ) + torch.cuda.synchronize(device) + return float(value), int(accepted_steps) + + timings, value, accepted_steps = _time_call(call, warmup=warmup, repeat=repeat) + return _result( + backend="torch", + size=size, + steps=steps, + warmup=warmup, + repeat=repeat, + timings=timings, + value=value, + accepted_steps=accepted_steps, + ) + + +def _run_jax_pncg_like( + x0, + target, + stiffness, + *, + steps: int, + max_backtracking_steps: int, +): + zeros = jnp.zeros_like(x0) + value0, grad0, _, _ = _jax_objective_terms(x0, target, stiffness, zeros) + initial_state = ( + jnp.asarray(0, dtype=jnp.int32), + x0, + grad0, + zeros, + value0, + jnp.asarray(0, dtype=jnp.int32), + ) + + def cond_fun(state): + i, *_ = state + return i < steps + + def body_fun(state): + i, x, prev_grad, prev_direction, _prev_value, accepted_count = state + value, grad, preconditioner, _ = _jax_objective_terms( + x, target, stiffness, zeros + ) + beta = _jax_dai_kou_beta( + grad=grad, + prev_grad=prev_grad, + prev_direction=prev_direction, + preconditioner=preconditioner, + ) + beta_is_valid = jnp.isfinite(beta) & (jnp.abs(beta) <= 10.0) + beta = jnp.where((i == 0) | (~beta_is_valid), jnp.zeros_like(beta), beta) + steepest_direction = -preconditioner * grad + direction = steepest_direction + beta * prev_direction + grad_dot_direction = jnp.vdot(grad, direction) + is_descent = jnp.isfinite(grad_dot_direction) & (grad_dot_direction < 0.0) + beta, direction, grad_dot_direction = jax.lax.cond( + is_descent, + lambda _: (beta, direction, grad_dot_direction), + lambda _: ( + jnp.zeros_like(beta), + steepest_direction, + jnp.vdot(grad, steepest_direction), + ), + operand=None, + ) + _, _, _, hess_quad = _jax_objective_terms(x, target, stiffness, direction) + alpha = _jax_initial_alpha( + grad=grad, + direction=direction, + hess_quad=hess_quad, + overstep=4.0, + ) + trial_x, trial_value, accepted, alpha = _jax_backtracking_line_search( + x=x, + target=target, + stiffness=stiffness, + direction=direction, + value=value, + grad_dot_direction=grad_dot_direction, + alpha=alpha, + max_steps=max_backtracking_steps, + ) + x = jnp.where(accepted, trial_x, x) + value = jnp.where(accepted, trial_value, value) + accepted_count = accepted_count + accepted.astype(accepted_count.dtype) + return i + 1, x, grad, direction, value, accepted_count + + _i, _x, _grad, _direction, value, accepted_count = jax.lax.while_loop( + cond_fun, body_fun, initial_state + ) + return value, accepted_count + + +def _run_jax_pncg_like_eager( + x0, + target, + stiffness, + *, + steps: int, + max_backtracking_steps: int, +): + x = x0 + zeros = jnp.zeros_like(x) + value, prev_grad, _, _ = _jax_objective_terms(x, target, stiffness, zeros) + prev_direction = zeros + accepted_count = 0 + + for i in range(steps): + value, grad, preconditioner, _ = _jax_objective_terms( + x, target, stiffness, zeros + ) + beta = _jax_dai_kou_beta( + grad=grad, + prev_grad=prev_grad, + prev_direction=prev_direction, + preconditioner=preconditioner, + ) + beta_is_valid = jnp.isfinite(beta) & (jnp.abs(beta) <= 10.0) + if i == 0 or not bool(beta_is_valid.item()): + beta = jnp.zeros_like(beta) + steepest_direction = -preconditioner * grad + direction = steepest_direction + beta * prev_direction + grad_dot_direction = jnp.vdot(grad, direction) + is_descent = jnp.isfinite(grad_dot_direction) & (grad_dot_direction < 0.0) + if not bool(is_descent.item()): + beta = jnp.zeros_like(beta) + direction = steepest_direction + grad_dot_direction = jnp.vdot(grad, direction) + _, _, _, hess_quad = _jax_objective_terms(x, target, stiffness, direction) + alpha = _jax_initial_alpha( + grad=grad, + direction=direction, + hess_quad=hess_quad, + overstep=4.0, + ) + trial_x, trial_value, accepted, alpha = _jax_backtracking_line_search_eager( + x=x, + target=target, + stiffness=stiffness, + direction=direction, + value=value, + grad_dot_direction=grad_dot_direction, + alpha=alpha, + max_steps=max_backtracking_steps, + ) + if bool(accepted.item()): + x = trial_x + value = trial_value + accepted_count += 1 + prev_grad = grad + prev_direction = direction + return value, accepted_count + + +def _jax_objective_terms(x, target, stiffness, direction): + energy, grad, hess_diag, hess_quad = _quadratic_terms_jax( + x, + target, + stiffness, + direction, + output_dims={ + "energy": x.shape, + "grad": x.shape, + "hess_diag": x.shape, + "hess_quad": x.shape, + }, + launch_dims=(x.shape[0],), + ) + hess_diag = jnp.abs(hess_diag) + hess_diag_mean = jnp.mean(hess_diag, where=hess_diag > 0.0) + hess_diag = jnp.where(hess_diag > 0.0, hess_diag, hess_diag_mean) + return jnp.sum(energy), grad, jnp.reciprocal(hess_diag), jnp.sum(hess_quad) + + +def _jax_backtracking_line_search( + *, + x, + target, + stiffness, + direction, + value, + grad_dot_direction, + alpha, + max_steps: int, +): + def evaluate(alpha): + trial_x = x + alpha * direction + trial_value, _, _, _ = _jax_objective_terms( + trial_x, target, stiffness, jnp.zeros_like(direction) + ) + accepted = jnp.isfinite(trial_value) & ( + trial_value <= value + 1.0e-4 * alpha * grad_dot_direction + ) + return trial_x, trial_value, accepted + + trial_x, trial_value, accepted = evaluate(alpha) + initial_state = ( + jnp.asarray(0, dtype=jnp.int32), + alpha, + trial_x, + trial_value, + accepted, + ) + + def cond_fun(state): + i, alpha, _trial_x, _trial_value, accepted = state + return (~accepted) & (i < max_steps) & (alpha > 0.0) + + def body_fun(state): + i, alpha, _trial_x, _trial_value, _accepted = state + alpha = alpha * 0.5 + trial_x, trial_value, accepted = evaluate(alpha) + return i + 1, alpha, trial_x, trial_value, accepted + + _i, alpha, trial_x, trial_value, accepted = jax.lax.while_loop( + cond_fun, body_fun, initial_state + ) + return trial_x, trial_value, accepted, alpha + + +def _jax_backtracking_line_search_eager( + *, + x, + target, + stiffness, + direction, + value, + grad_dot_direction, + alpha, + max_steps: int, +): + def evaluate(alpha): + trial_x = x + alpha * direction + trial_value, _, _, _ = _jax_objective_terms( + trial_x, target, stiffness, jnp.zeros_like(direction) + ) + accepted = jnp.isfinite(trial_value) & ( + trial_value <= value + 1.0e-4 * alpha * grad_dot_direction + ) + return trial_x, trial_value, accepted + + trial_x, trial_value, accepted = evaluate(alpha) + i = 0 + while (not bool(accepted.item())) and i < max_steps and float(alpha.item()) > 0.0: + alpha = alpha * 0.5 + trial_x, trial_value, accepted = evaluate(alpha) + i += 1 + return trial_x, trial_value, accepted, alpha + + +def _run_torch_pncg_like( + torch: Any, + x0: Any, + target: Any, + stiffness: Any, + *, + steps: int, + max_backtracking_steps: int, + device: str, +) -> tuple[float, int]: + x = x0.clone() + zeros = torch.zeros_like(x) + scratch = _TorchScratch(torch, size=x.numel(), device=device) + value, prev_grad, _, _ = _torch_objective_terms( + torch, x, target, stiffness, zeros, scratch=scratch, device=device + ) + prev_direction = torch.zeros_like(x) + accepted_count = 0 + + for i in range(steps): + value, grad, preconditioner, _ = _torch_objective_terms( + torch, x, target, stiffness, zeros, scratch=scratch, device=device + ) + beta = _torch_dai_kou_beta( + torch, + grad=grad, + prev_grad=prev_grad, + prev_direction=prev_direction, + preconditioner=preconditioner, + ) + beta_is_valid = torch.isfinite(beta) & (torch.abs(beta) <= 10.0) + if i == 0 or not bool(beta_is_valid.item()): + beta = torch.zeros_like(beta) + steepest_direction = -preconditioner * grad + direction = steepest_direction + beta * prev_direction + grad_dot_direction = torch.vdot(grad, direction) + is_descent = torch.isfinite(grad_dot_direction) & (grad_dot_direction < 0.0) + if not bool(is_descent.item()): + beta = torch.zeros_like(beta) + direction = steepest_direction + grad_dot_direction = torch.vdot(grad, direction) + _, _, _, hess_quad = _torch_objective_terms( + torch, x, target, stiffness, direction, scratch=scratch, device=device + ) + alpha = _torch_initial_alpha( + torch, grad=grad, direction=direction, hess_quad=hess_quad, overstep=4.0 + ) + trial_x, trial_value, accepted, alpha = _torch_backtracking_line_search( + torch, + x=x, + target=target, + stiffness=stiffness, + direction=direction, + value=value, + grad_dot_direction=grad_dot_direction, + alpha=alpha, + max_steps=max_backtracking_steps, + scratch=scratch, + device=device, + ) + if bool(accepted.item()): + x = trial_x + value = trial_value + accepted_count += 1 + prev_grad = grad + prev_direction = direction + return float(value.item()), accepted_count + + +class _TorchScratch: + def __init__(self, torch: Any, *, size: int, device: str) -> None: + self.energy = torch.empty(size, dtype=torch.float64, device=device) + self.grad = torch.empty(size, dtype=torch.float64, device=device) + self.hess_diag = torch.empty(size, dtype=torch.float64, device=device) + self.hess_quad = torch.empty(size, dtype=torch.float64, device=device) + + +def _torch_objective_terms( + torch: Any, + x: Any, + target: Any, + stiffness: Any, + direction: Any, + *, + scratch: _TorchScratch, + device: str, +) -> tuple[Any, Any, Any, Any]: + wp_stream = wp.stream_from_torch(x.device) + with wp.ScopedStream(wp_stream): + wp.launch( + _quadratic_terms_kernel, + dim=x.numel(), + inputs=[ + wp.from_torch(x, dtype=wp.float64), + wp.from_torch(target, dtype=wp.float64), + wp.from_torch(stiffness, dtype=wp.float64), + wp.from_torch(direction, dtype=wp.float64), + ], + outputs=[ + wp.from_torch(scratch.energy, dtype=wp.float64), + wp.from_torch(scratch.grad, dtype=wp.float64), + wp.from_torch(scratch.hess_diag, dtype=wp.float64), + wp.from_torch(scratch.hess_quad, dtype=wp.float64), + ], + device=device, + ) + hess_diag = torch.abs(scratch.hess_diag) + hess_diag_mean = torch.mean(hess_diag[hess_diag > 0.0]) + hess_diag = torch.where(hess_diag > 0.0, hess_diag, hess_diag_mean) + return ( + torch.sum(scratch.energy), + scratch.grad.clone(), + torch.reciprocal(hess_diag), + torch.sum(scratch.hess_quad), + ) + + +def _jax_initial_alpha(*, grad, direction, hess_quad, overstep: float): + alpha = -jnp.vdot(grad, direction) / hess_quad + alpha = jnp.nan_to_num(alpha, nan=0.0, neginf=0.0, posinf=1.0) + alpha = jnp.where((alpha > 0.0) & jnp.isfinite(alpha), alpha, 1.0) + return alpha * overstep + + +def _torch_initial_alpha( + torch: Any, *, grad: Any, direction: Any, hess_quad: Any, overstep: float +): + alpha = -torch.vdot(grad, direction) / hess_quad + alpha = torch.nan_to_num(alpha, nan=0.0, neginf=0.0, posinf=1.0) + alpha = torch.where( + (alpha > 0.0) & torch.isfinite(alpha), alpha, alpha.new_tensor(1.0) + ) + return alpha * overstep + + +def _torch_backtracking_line_search( + torch: Any, + *, + x: Any, + target: Any, + stiffness: Any, + direction: Any, + value: Any, + grad_dot_direction: Any, + alpha: Any, + max_steps: int, + scratch: _TorchScratch, + device: str, +) -> tuple[Any, Any, Any, Any]: + def evaluate(alpha): + trial_x = x + alpha * direction + trial_value, _, _, _ = _torch_objective_terms( + torch, + trial_x, + target, + stiffness, + torch.zeros_like(direction), + scratch=scratch, + device=device, + ) + accepted = torch.isfinite(trial_value) & ( + trial_value <= value + 1.0e-4 * alpha * grad_dot_direction + ) + return trial_x, trial_value, accepted + + trial_x, trial_value, accepted = evaluate(alpha) + i = 0 + while (not bool(accepted.item())) and i < max_steps and float(alpha.item()) > 0.0: + alpha = alpha * 0.5 + trial_x, trial_value, accepted = evaluate(alpha) + i += 1 + return trial_x, trial_value, accepted, alpha + + +def _jax_dai_kou_beta(*, grad, prev_grad, prev_direction, preconditioner): + y = grad - prev_grad + y_dot_prev_direction = jnp.vdot(y, prev_direction) + safe = jnp.where( + jnp.abs(y_dot_prev_direction) > 1.0e-12, + y_dot_prev_direction, + jnp.asarray(1.0, dtype=y_dot_prev_direction.dtype), + ) + preconditioned_y = preconditioner * y + beta = jnp.vdot(grad, preconditioned_y) / safe - ( + jnp.vdot(y, preconditioned_y) / safe + ) * (jnp.vdot(prev_direction, grad) / safe) + return jnp.where( + jnp.abs(y_dot_prev_direction) > 1.0e-12, + beta, + jnp.asarray(jnp.inf, dtype=y_dot_prev_direction.dtype), + ) + + +def _torch_dai_kou_beta( + torch: Any, *, grad: Any, prev_grad: Any, prev_direction: Any, preconditioner: Any +): + y = grad - prev_grad + y_dot_prev_direction = torch.vdot(y, prev_direction) + safe = torch.where( + torch.abs(y_dot_prev_direction) > 1.0e-12, + y_dot_prev_direction, + y_dot_prev_direction.new_tensor(1.0), + ) + preconditioned_y = preconditioner * y + beta = torch.vdot(grad, preconditioned_y) / safe - ( + torch.vdot(y, preconditioned_y) / safe + ) * (torch.vdot(prev_direction, grad) / safe) + return torch.where( + torch.abs(y_dot_prev_direction) > 1.0e-12, + beta, + y_dot_prev_direction.new_tensor(float("inf")), + ) + + +def _jax_inputs(size: int, device) -> tuple[Any, Any, Any]: + indices = jnp.arange(size, dtype=jnp.float64) + x = jnp.linspace(-0.9, 0.9, size, dtype=jnp.float64) + target = 0.25 * jnp.sin(indices * 0.001) + stiffness = 1.0 + jnp.mod(indices, 17.0) / 17.0 + return ( + jax.device_put(x, device), + jax.device_put(target, device), + jax.device_put(stiffness, device), + ) + + +def _torch_inputs(torch: Any, *, size: int, device: str) -> tuple[Any, Any, Any]: + indices = torch.arange(size, dtype=torch.float64, device=device) + x = torch.linspace(-0.9, 0.9, size, dtype=torch.float64, device=device) + target = 0.25 * torch.sin(indices * 0.001) + stiffness = 1.0 + torch.remainder(indices, 17.0) / 17.0 + return x, target, stiffness + + +def _time_call( + call: Callable[[], tuple[float, int]], *, warmup: int, repeat: int +) -> tuple[list[float], float, int]: + value = 0.0 + accepted_steps = 0 + for _ in range(warmup): + value, accepted_steps = call() + timings: list[float] = [] + for _ in range(repeat): + start = time.perf_counter() + value, accepted_steps = call() + timings.append(time.perf_counter() - start) + return timings, value, accepted_steps + + +def _result( + *, + backend: Backend, + size: int, + steps: int, + warmup: int, + repeat: int, + timings: list[float], + value: float, + accepted_steps: int, +) -> BenchmarkResult: + return BenchmarkResult( + backend=backend, + size=size, + steps=steps, + warmup=warmup, + repeat=repeat, + median_ms=statistics.median(timings) * 1_000.0, + mean_ms=statistics.fmean(timings) * 1_000.0, + min_ms=min(timings) * 1_000.0, + max_ms=max(timings) * 1_000.0, + value=value, + accepted_steps=accepted_steps, + ) + + +def print_results(results: list[BenchmarkResult]) -> None: + print( + "backend size steps accepted median_ms mean_ms min_ms max_ms value" + ) + for result in results: + print( + f"{result.backend:<11}" + f"{result.size:<11}" + f"{result.steps:<7}" + f"{result.accepted_steps:<10}" + f"{result.median_ms:<11.3f}" + f"{result.mean_ms:<9.3f}" + f"{result.min_ms:<8.3f}" + f"{result.max_ms:<8.3f}" + f"{result.value:.6e}" + ) + + +def _jax_device(device: str): + if not device.startswith("cuda"): + return jax.devices("cpu")[0] + index = int(device.split(":", maxsplit=1)[1]) if ":" in device else 0 + return jax.devices("gpu")[index] + + +def import_torch() -> Any: + import torch + + return torch + + +if __name__ == "__main__": + main() diff --git a/benches/test_aggregation.py b/benches/test_aggregation.py index 76065a643..565354018 100644 --- a/benches/test_aggregation.py +++ b/benches/test_aggregation.py @@ -5,7 +5,6 @@ import pyvista as pv import warp as wp import warp.jax_experimental.ffi -import warp.types as wpt from jaxtyping import Array from pytest_codspeed import BenchmarkFixture @@ -32,9 +31,9 @@ def mesh(request: pytest.FixtureRequest) -> pv.UnstructuredGrid: def test_atomic_add(benchmark: BenchmarkFixture, mesh: pv.UnstructuredGrid) -> None: @wp.kernel def kernel( - points: wp.array(dtype=wpt.vec3d), - cells: wp.array(dtype=wpt.vec4i), - output: wp.array(dtype=wpt.float64), + points: wp.array[wp.vec3d], + cells: wp.array[wp.vec4i], + output: wp.array[wp.float64], ) -> None: tid = wp.tid() cell = cells[tid] @@ -56,9 +55,9 @@ def kernel( @warp.jax_experimental.ffi.jax_callable def callable_( - points: wp.array(dtype=wpt.vec3d), - cells: wp.array(dtype=wpt.vec4i), - output: wp.array(dtype=wpt.float64), + points: wp.array[wp.vec3d], + cells: wp.array[wp.vec4i], + output: wp.array[wp.float64], ) -> None: output.zero_() wp.launch(kernel, dim=cells.shape, inputs=[points, cells], outputs=[output]) @@ -74,7 +73,7 @@ def target(points: Array, cells: Array) -> Array: return jax.block_until_ready(output) points: Array = jnp.asarray(mesh.points, dtype=jnp.float64) - cells: Array = jnp.asarray(mesh.cells_dict[pv.CellType.TETRA], dtype=jnp.int32) # pyright: ignore[reportArgumentType] + cells: Array = jnp.asarray(mesh.cells_dict[pv.CellType.TETRA], dtype=jnp.int32) # ty:ignore[invalid-argument-type] points = jax.block_until_ready(points) cells = jax.block_until_ready(cells) @@ -85,12 +84,11 @@ def target(points: Array, cells: Array) -> Array: @pytest.mark.benchmark(group="hello") def test_segment_sum(benchmark: BenchmarkFixture, mesh: pv.UnstructuredGrid) -> None: + mat43d = wp.types.matrix((4, 3), wp.float64) + @warp.jax_experimental.ffi.jax_kernel @wp.kernel - def kernel( - points: wp.array(dtype=wpt.matrix((4, 3), wpt.float64)), - output: wp.array(dtype=wpt.vec4d), - ) -> None: + def kernel(points: wp.array[mat43d], output: wp.array[wp.vec4d]) -> None: tid = wp.tid() p0 = points[tid][0] p1 = points[tid][1] @@ -122,10 +120,10 @@ def target(points: Array, cells: Array) -> Array: return jax.block_until_ready(output) points: Array = jnp.asarray(mesh.points, dtype=jnp.float64) - cells: Array = jnp.asarray(mesh.cells_dict[pv.CellType.TETRA], dtype=jnp.int32) # pyright: ignore[reportArgumentType] + cells: Array = jnp.asarray(mesh.cells_dict[pv.CellType.TETRA], dtype=jnp.int32) # ty:ignore[invalid-argument-type] points = jax.block_until_ready(points) cells = jax.block_until_ready(cells) - output: Array = benchmark(target, points, cells) # pyright: ignore[reportArgumentType] + output: Array = benchmark(target, points, cells) assert output.sum().item() == pytest.approx(mesh.volume) diff --git a/docs/.nav.yml b/docs/.nav.yml deleted file mode 100644 index d0ed4d983..000000000 --- a/docs/.nav.yml +++ /dev/null @@ -1,3 +0,0 @@ -nav: - - Home: README.md - - "*" diff --git a/docs/README.md b/docs/README.md index 6e00053a5..1333ed77b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1 +1 @@ -{% include "../README.md" %} +TODO diff --git a/docs/overrides/main.html b/docs/overrides/main.html deleted file mode 100644 index 8335e38e9..000000000 --- a/docs/overrides/main.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -{% extends "base.html" %} - -{% block site_meta %} -{{ super() }} - -{% endblock %} diff --git a/docs/reference/liblaf/apple/README.md b/docs/reference/liblaf/apple/README.md new file mode 100644 index 000000000..eda04b36a --- /dev/null +++ b/docs/reference/liblaf/apple/README.md @@ -0,0 +1 @@ +::: liblaf.apple diff --git a/docs/reference/liblaf/apple/collision/README.md b/docs/reference/liblaf/apple/collision/README.md new file mode 100644 index 000000000..ad7dbc86f --- /dev/null +++ b/docs/reference/liblaf/apple/collision/README.md @@ -0,0 +1 @@ +::: liblaf.apple.collision diff --git a/docs/reference/liblaf/apple/common/README.md b/docs/reference/liblaf/apple/common/README.md new file mode 100644 index 000000000..40a0e90ae --- /dev/null +++ b/docs/reference/liblaf/apple/common/README.md @@ -0,0 +1 @@ +::: liblaf.apple.common diff --git a/docs/reference/liblaf/apple/common/attr_name.md b/docs/reference/liblaf/apple/common/attr_name.md new file mode 100644 index 000000000..d766eeb32 --- /dev/null +++ b/docs/reference/liblaf/apple/common/attr_name.md @@ -0,0 +1 @@ +::: liblaf.apple.common.attr_name diff --git a/docs/reference/liblaf/apple/forward/README.md b/docs/reference/liblaf/apple/forward/README.md new file mode 100644 index 000000000..33f553d52 --- /dev/null +++ b/docs/reference/liblaf/apple/forward/README.md @@ -0,0 +1 @@ +::: liblaf.apple.forward diff --git a/docs/reference/liblaf/apple/forward/dof_map/README.md b/docs/reference/liblaf/apple/forward/dof_map/README.md new file mode 100644 index 000000000..10b173845 --- /dev/null +++ b/docs/reference/liblaf/apple/forward/dof_map/README.md @@ -0,0 +1 @@ +::: liblaf.apple.forward.dof_map diff --git a/docs/reference/liblaf/apple/jax/README.md b/docs/reference/liblaf/apple/jax/README.md new file mode 100644 index 000000000..6a57686a8 --- /dev/null +++ b/docs/reference/liblaf/apple/jax/README.md @@ -0,0 +1 @@ +::: liblaf.apple.jax diff --git a/docs/reference/liblaf/apple/jax/fem/README.md b/docs/reference/liblaf/apple/jax/fem/README.md new file mode 100644 index 000000000..a0654c2cc --- /dev/null +++ b/docs/reference/liblaf/apple/jax/fem/README.md @@ -0,0 +1 @@ +::: liblaf.apple.jax.fem diff --git a/docs/reference/liblaf/apple/jax/fem/element/README.md b/docs/reference/liblaf/apple/jax/fem/element/README.md new file mode 100644 index 000000000..d28ca39fe --- /dev/null +++ b/docs/reference/liblaf/apple/jax/fem/element/README.md @@ -0,0 +1 @@ +::: liblaf.apple.jax.fem.element diff --git a/docs/reference/liblaf/apple/jax/fem/geometry/README.md b/docs/reference/liblaf/apple/jax/fem/geometry/README.md new file mode 100644 index 000000000..093159bc0 --- /dev/null +++ b/docs/reference/liblaf/apple/jax/fem/geometry/README.md @@ -0,0 +1 @@ +::: liblaf.apple.jax.fem.geometry diff --git a/docs/reference/liblaf/apple/jax/fem/quadrature/README.md b/docs/reference/liblaf/apple/jax/fem/quadrature/README.md new file mode 100644 index 000000000..a314e6b57 --- /dev/null +++ b/docs/reference/liblaf/apple/jax/fem/quadrature/README.md @@ -0,0 +1 @@ +::: liblaf.apple.jax.fem.quadrature diff --git a/docs/reference/liblaf/apple/jax/fem/region/README.md b/docs/reference/liblaf/apple/jax/fem/region/README.md new file mode 100644 index 000000000..0945eec17 --- /dev/null +++ b/docs/reference/liblaf/apple/jax/fem/region/README.md @@ -0,0 +1 @@ +::: liblaf.apple.jax.fem.region diff --git a/docs/reference/liblaf/apple/warp/README.md b/docs/reference/liblaf/apple/warp/README.md new file mode 100644 index 000000000..2b6bd28a4 --- /dev/null +++ b/docs/reference/liblaf/apple/warp/README.md @@ -0,0 +1 @@ +::: liblaf.apple.warp diff --git a/docs/reference/liblaf/apple/warp/fem/README.md b/docs/reference/liblaf/apple/warp/fem/README.md new file mode 100644 index 000000000..8cc4f2fb0 --- /dev/null +++ b/docs/reference/liblaf/apple/warp/fem/README.md @@ -0,0 +1 @@ +::: liblaf.apple.warp.fem diff --git a/docs/reference/liblaf/apple/warp/fem/func/README.md b/docs/reference/liblaf/apple/warp/fem/func/README.md new file mode 100644 index 000000000..be07cb0e3 --- /dev/null +++ b/docs/reference/liblaf/apple/warp/fem/func/README.md @@ -0,0 +1 @@ +::: liblaf.apple.warp.fem.func diff --git a/docs/reference/liblaf/apple/warp/fem/utils/README.md b/docs/reference/liblaf/apple/warp/fem/utils/README.md new file mode 100644 index 000000000..bbd6b19bf --- /dev/null +++ b/docs/reference/liblaf/apple/warp/fem/utils/README.md @@ -0,0 +1 @@ +::: liblaf.apple.warp.fem.utils diff --git a/docs/reference/liblaf/apple/warp/math/README.md b/docs/reference/liblaf/apple/warp/math/README.md new file mode 100644 index 000000000..7a5e74589 --- /dev/null +++ b/docs/reference/liblaf/apple/warp/math/README.md @@ -0,0 +1 @@ +::: liblaf.apple.warp.math diff --git a/docs/reference/liblaf/apple/warp/model/README.md b/docs/reference/liblaf/apple/warp/model/README.md new file mode 100644 index 000000000..1b5bdf715 --- /dev/null +++ b/docs/reference/liblaf/apple/warp/model/README.md @@ -0,0 +1 @@ +::: liblaf.apple.warp.model diff --git a/exp/2025/08/27/inverse-segement/src/20-forward.py b/exp/2025/08/27/inverse-segement/src/20-forward.py index 2ae0e88ba..5bcd21015 100644 --- a/exp/2025/08/27/inverse-segement/src/20-forward.py +++ b/exp/2025/08/27/inverse-segement/src/20-forward.py @@ -4,13 +4,13 @@ import jax.numpy as jnp import numpy as np import pyvista as pv +from liblaf.apple.jax import optim +from liblaf.apple.jax import sim as sim_jax +from liblaf.apple.jax.typing import Vector from loguru import logger from liblaf import cherries, melon from liblaf.apple import sim -from liblaf.apple.jax import optim -from liblaf.apple.jax import sim as sim_jax -from liblaf.apple.jax.typing import Vector jax.config.update("jax_enable_x64", True) # noqa: FBT003 diff --git a/exp/2025/08/27/inverse-segement/src/30-inverse.py b/exp/2025/08/27/inverse-segement/src/30-inverse.py index 598abe1fc..a5d0ba0ea 100644 --- a/exp/2025/08/27/inverse-segement/src/30-inverse.py +++ b/exp/2025/08/27/inverse-segement/src/30-inverse.py @@ -9,13 +9,13 @@ import numpy as np import pyvista as pv from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax import sim as sim_jax +from liblaf.apple.jax.typing import Scalar, Vector from loguru import logger from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax import sim as sim_jax -from liblaf.apple.jax.typing import Scalar, Vector class Config(cherries.BaseConfig): diff --git a/exp/2025/08/27/inverse/src/20-forward.py b/exp/2025/08/27/inverse/src/20-forward.py index e14058b2d..b3592176a 100644 --- a/exp/2025/08/27/inverse/src/20-forward.py +++ b/exp/2025/08/27/inverse/src/20-forward.py @@ -4,13 +4,13 @@ import jax.numpy as jnp import numpy as np import pyvista as pv +from liblaf.apple.jax import optim +from liblaf.apple.jax import sim as sim_jax +from liblaf.apple.jax.typing import Vector from loguru import logger from liblaf import cherries, melon from liblaf.apple import sim -from liblaf.apple.jax import optim -from liblaf.apple.jax import sim as sim_jax -from liblaf.apple.jax.typing import Vector jax.config.update("jax_enable_x64", True) # noqa: FBT003 diff --git a/exp/2025/08/27/inverse/src/30-inverse.py b/exp/2025/08/27/inverse/src/30-inverse.py index 4eab86797..d1b0d48b0 100644 --- a/exp/2025/08/27/inverse/src/30-inverse.py +++ b/exp/2025/08/27/inverse/src/30-inverse.py @@ -9,13 +9,13 @@ import numpy as np import pyvista as pv from jaxtyping import Array, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax import sim as sim_jax +from liblaf.apple.jax.typing import Scalar, Vector from loguru import logger from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax import sim as sim_jax -from liblaf.apple.jax.typing import Scalar, Vector os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" jax.config.update("jax_enable_x64", True) # noqa: FBT003 diff --git a/exp/2025/09/10/inverse-mixed/src/20-forward.py b/exp/2025/09/10/inverse-mixed/src/20-forward.py index b9782b3b2..5f522cb12 100644 --- a/exp/2025/09/10/inverse-mixed/src/20-forward.py +++ b/exp/2025/09/10/inverse-mixed/src/20-forward.py @@ -3,12 +3,12 @@ import jax.numpy as jnp import numpy as np import pyvista as pv +from liblaf.apple.jax import optim +from liblaf.apple.jax.typing import Vector from loguru import logger from liblaf import cherries, melon from liblaf.apple import sim -from liblaf.apple.jax import optim -from liblaf.apple.jax.typing import Vector from liblaf.apple.warp import sim as sim_wp diff --git a/exp/2025/09/10/inverse-mixed/src/30-inverse.py b/exp/2025/09/10/inverse-mixed/src/30-inverse.py index 04df21db7..8a8fd4c9a 100644 --- a/exp/2025/09/10/inverse-mixed/src/30-inverse.py +++ b/exp/2025/09/10/inverse-mixed/src/30-inverse.py @@ -6,21 +6,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.sim.energy.elastic import utils +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.sim.energy.elastic import utils -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 @lx.is_positive_semidefinite.register(lx.DiagonalLinearOperator) diff --git a/exp/2025/09/10/inverse/src/20-forward.py b/exp/2025/09/10/inverse/src/20-forward.py index affcfc693..d7df6cf07 100644 --- a/exp/2025/09/10/inverse/src/20-forward.py +++ b/exp/2025/09/10/inverse/src/20-forward.py @@ -3,12 +3,12 @@ import jax.numpy as jnp import numpy as np import pyvista as pv +from liblaf.apple.jax import optim +from liblaf.apple.jax.typing import Vector from loguru import logger from liblaf import cherries, melon from liblaf.apple import sim -from liblaf.apple.jax import optim -from liblaf.apple.jax.typing import Vector from liblaf.apple.warp import sim as sim_wp diff --git a/exp/2025/09/10/inverse/src/30-inverse.py b/exp/2025/09/10/inverse/src/30-inverse.py index b7b926cd3..edef683de 100644 --- a/exp/2025/09/10/inverse/src/30-inverse.py +++ b/exp/2025/09/10/inverse/src/30-inverse.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.sim.energy.elastic import utils +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.sim.energy.elastic import utils -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 @lx.is_positive_semidefinite.register(lx.DiagonalLinearOperator) diff --git a/exp/2025/09/10/inverse/src/31-inverse-v2.py b/exp/2025/09/10/inverse/src/31-inverse-v2.py index aa97b326f..0bb2f900c 100644 --- a/exp/2025/09/10/inverse/src/31-inverse-v2.py +++ b/exp/2025/09/10/inverse/src/31-inverse-v2.py @@ -6,21 +6,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.sim.energy.elastic import utils +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.sim.energy.elastic import utils -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 @lx.is_positive_semidefinite.register(lx.DiagonalLinearOperator) diff --git a/exp/2025/09/24/inverse-grin/src/20-forward.py b/exp/2025/09/24/inverse-grin/src/20-forward.py index f4d8e179f..06d2d4c1f 100644 --- a/exp/2025/09/24/inverse-grin/src/20-forward.py +++ b/exp/2025/09/24/inverse-grin/src/20-forward.py @@ -3,12 +3,12 @@ import jax.numpy as jnp import numpy as np import pyvista as pv +from liblaf.apple.jax import optim +from liblaf.apple.jax.typing import Vector from loguru import logger from liblaf import cherries, melon from liblaf.apple import sim -from liblaf.apple.jax import optim -from liblaf.apple.jax.typing import Vector from liblaf.apple.warp import sim as sim_wp diff --git a/exp/2025/09/24/inverse-grin/src/21-forward.py b/exp/2025/09/24/inverse-grin/src/21-forward.py index f601ed2b9..dce79e612 100644 --- a/exp/2025/09/24/inverse-grin/src/21-forward.py +++ b/exp/2025/09/24/inverse-grin/src/21-forward.py @@ -3,12 +3,12 @@ import jax.numpy as jnp import numpy as np import pyvista as pv +from liblaf.apple.jax.typing import Vector from liblaf.peach import optim from loguru import logger from liblaf import cherries, melon from liblaf.apple import sim -from liblaf.apple.jax.typing import Vector from liblaf.apple.warp import sim as sim_wp diff --git a/exp/2025/09/24/inverse-grin/src/30-inverse.py b/exp/2025/09/24/inverse-grin/src/30-inverse.py index fe10e27aa..57ead2769 100644 --- a/exp/2025/09/24/inverse-grin/src/30-inverse.py +++ b/exp/2025/09/24/inverse-grin/src/30-inverse.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/31-inverse.py b/exp/2025/09/24/inverse-grin/src/31-inverse.py index 8ae3671fd..a9ff945a7 100644 --- a/exp/2025/09/24/inverse-grin/src/31-inverse.py +++ b/exp/2025/09/24/inverse-grin/src/31-inverse.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/32-inverse.py b/exp/2025/09/24/inverse-grin/src/32-inverse.py index d1e15c78f..0f80ef371 100644 --- a/exp/2025/09/24/inverse-grin/src/32-inverse.py +++ b/exp/2025/09/24/inverse-grin/src/32-inverse.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/33-inverse-no-reg.py b/exp/2025/09/24/inverse-grin/src/33-inverse-no-reg.py index 30d39a25e..9c8b06fe2 100644 --- a/exp/2025/09/24/inverse-grin/src/33-inverse-no-reg.py +++ b/exp/2025/09/24/inverse-grin/src/33-inverse-no-reg.py @@ -5,22 +5,22 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import scipy.optimize import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/34-inverse-no-reg.py b/exp/2025/09/24/inverse-grin/src/34-inverse-no-reg.py index d8cfd962b..4039f5b3a 100644 --- a/exp/2025/09/24/inverse-grin/src/34-inverse-no-reg.py +++ b/exp/2025/09/24/inverse-grin/src/34-inverse-no-reg.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py b/exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py index 39468d46e..fd88d6502 100644 --- a/exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py +++ b/exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/36-inverse-abs.py b/exp/2025/09/24/inverse-grin/src/36-inverse-abs.py index d9418a6de..e35950c59 100644 --- a/exp/2025/09/24/inverse-grin/src/36-inverse-abs.py +++ b/exp/2025/09/24/inverse-grin/src/36-inverse-abs.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py b/exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py index abf5cfe41..049258909 100644 --- a/exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py +++ b/exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py b/exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py index 8e757e2c5..2a90304cf 100644 --- a/exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py +++ b/exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py b/exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py index a3a5b8f12..409de1e34 100644 --- a/exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py +++ b/exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py @@ -5,21 +5,21 @@ import equinox as eqx import jax import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax +import liblaf.apple.warp.sim as sim_wp import lineax as lx import numpy as np import pyvista as pv import warp as wp from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import optim, tree +from liblaf.apple.jax.typing import Scalar, Vector +from liblaf.apple.warp.typing import vec6 from loguru import logger -import liblaf.apple.jax.sim as sim_jax -import liblaf.apple.warp.sim as sim_wp import liblaf.apple.warp.utils as wp_utils from liblaf import cherries, grapes, melon from liblaf.apple import sim -from liblaf.apple.jax import optim, tree -from liblaf.apple.jax.typing import Scalar, Vector -from liblaf.apple.warp.typing import vec6 os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.25" diff --git a/exp/2025/09/24/inverse-grin/src/41-inspect-inverse.py b/exp/2025/09/24/inverse-grin/src/41-inspect-inverse.py index 18f8a3058..ed52391d8 100644 --- a/exp/2025/09/24/inverse-grin/src/41-inspect-inverse.py +++ b/exp/2025/09/24/inverse-grin/src/41-inspect-inverse.py @@ -1,9 +1,9 @@ import jax.numpy as jnp +import liblaf.apple.jax.sim as sim_jax import numpy as np import pyvista as pv from jaxtyping import Array, Float -import liblaf.apple.jax.sim as sim_jax from liblaf import melon diff --git a/exp/2025/10/22/inverse-flame/data/00-groups.toml b/exp/2025/10/22/inverse-flame/data/00-groups.toml index aea56db05..eeca302e0 100644 --- a/exp/2025/10/22/inverse-flame/data/00-groups.toml +++ b/exp/2025/10/22/inverse-flame/data/00-groups.toml @@ -324,7 +324,6 @@ Muscles = [ Skin = ["Eyelash001", "skin_Cross_section", "Skin001", "Object001"] Salivary = ["Salivary_gland001", "Salivary_duct001"] - cranium = [ "Atlanto_occipital_capsule001", "C01_Atlas001", diff --git a/exp/2025/10/22/inverse-flame/src/10-gen-forward.py b/exp/2025/10/22/inverse-flame/src/10-gen-forward.py index 1f84332f7..f16a2b94e 100644 --- a/exp/2025/10/22/inverse-flame/src/10-gen-forward.py +++ b/exp/2025/10/22/inverse-flame/src/10-gen-forward.py @@ -4,10 +4,10 @@ import jax.numpy as jnp import pyvista as pv from jaxtyping import Array, Float, Integer +from liblaf.apple.consts import ACTIVATION, MUSCLE_FRACTION, POINT_ID +from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf import cherries, melon -from liblaf.apple.constants import ACTIVATION, MUSCLE_FRACTION, POINT_ID -from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf.apple.warp import Phace diff --git a/exp/2025/10/22/inverse-flame/src/10-gen-partial.py b/exp/2025/10/22/inverse-flame/src/10-gen-partial.py index 46024c3c6..2b029c0d4 100644 --- a/exp/2025/10/22/inverse-flame/src/10-gen-partial.py +++ b/exp/2025/10/22/inverse-flame/src/10-gen-partial.py @@ -5,10 +5,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer - -from liblaf import cherries, grapes, melon -from liblaf.apple import utils -from liblaf.apple.constants import ( +from liblaf.apple.consts import ( ACTIVATION, DIRICHLET_MASK, DIRICHLET_VALUE, @@ -17,6 +14,9 @@ MUSCLE_FRACTION, ) +from liblaf import cherries, grapes, melon +from liblaf.apple import utils + SUFFIX: str = env.str("SUFFIX", default="-515k") diff --git a/exp/2025/10/22/inverse-flame/src/10-gen-sliding.py b/exp/2025/10/22/inverse-flame/src/10-gen-sliding.py index 3a894195a..9c394bd01 100644 --- a/exp/2025/10/22/inverse-flame/src/10-gen-sliding.py +++ b/exp/2025/10/22/inverse-flame/src/10-gen-sliding.py @@ -5,10 +5,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer - -from liblaf import cherries, grapes, melon -from liblaf.apple import utils -from liblaf.apple.constants import ( +from liblaf.apple.consts import ( ACTIVATION, DIRICHLET_MASK, DIRICHLET_VALUE, @@ -17,6 +14,9 @@ MUSCLE_FRACTION, ) +from liblaf import cherries, grapes, melon +from liblaf.apple import utils + SUFFIX: str = env.str("SUFFIX", default="-515k") diff --git a/exp/2025/10/22/inverse-flame/src/10-gen-thin.py b/exp/2025/10/22/inverse-flame/src/10-gen-thin.py index 920a0fe11..bf1ea4ef9 100644 --- a/exp/2025/10/22/inverse-flame/src/10-gen-thin.py +++ b/exp/2025/10/22/inverse-flame/src/10-gen-thin.py @@ -6,10 +6,7 @@ import scipy from environs import env from jaxtyping import Array, Bool, Float, Integer - -from liblaf import cherries, grapes, melon -from liblaf.apple import utils -from liblaf.apple.constants import ( +from liblaf.apple.consts import ( ACTIVATION, DIRICHLET_MASK, DIRICHLET_VALUE, @@ -18,6 +15,9 @@ MUSCLE_FRACTION, ) +from liblaf import cherries, grapes, melon +from liblaf.apple import utils + SUFFIX: str = env.str("SUFFIX", default="-123k") diff --git a/exp/2025/10/22/inverse-flame/src/10-gen.py b/exp/2025/10/22/inverse-flame/src/10-gen.py index ee5706d6b..609f95f60 100644 --- a/exp/2025/10/22/inverse-flame/src/10-gen.py +++ b/exp/2025/10/22/inverse-flame/src/10-gen.py @@ -5,10 +5,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer - -from liblaf import cherries, grapes, melon -from liblaf.apple import utils -from liblaf.apple.constants import ( +from liblaf.apple.consts import ( ACTIVATION, DIRICHLET_MASK, DIRICHLET_VALUE, @@ -17,6 +14,9 @@ MUSCLE_FRACTION, ) +from liblaf import cherries, grapes, melon +from liblaf.apple import utils + SUFFIX: str = env.str("SUFFIX", default="-68k-coarse") diff --git a/exp/2025/10/22/inverse-flame/src/11-gen-manual.py b/exp/2025/10/22/inverse-flame/src/11-gen-manual.py index 04716d916..ce09cd7fe 100644 --- a/exp/2025/10/22/inverse-flame/src/11-gen-manual.py +++ b/exp/2025/10/22/inverse-flame/src/11-gen-manual.py @@ -5,10 +5,10 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, POINT_ID +from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf import cherries, melon -from liblaf.apple.constants import ACTIVATION, POINT_ID -from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf.apple.warp import Phace diff --git a/exp/2025/10/22/inverse-flame/src/20-coarse-to-fine.py b/exp/2025/10/22/inverse-flame/src/20-coarse-to-fine.py index b2cf10777..82a64bdc4 100644 --- a/exp/2025/10/22/inverse-flame/src/20-coarse-to-fine.py +++ b/exp/2025/10/22/inverse-flame/src/20-coarse-to-fine.py @@ -1,10 +1,10 @@ from pathlib import Path import pyvista as pv +from liblaf.apple.consts import ACTIVATION, POINT_ID from liblaf import cherries, melon from liblaf.apple import Forward, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, POINT_ID from liblaf.apple.warp import Phace diff --git a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-fine.py b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-fine.py index 38481bdc4..5bd3e3a65 100644 --- a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-fine.py +++ b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-fine.py @@ -9,6 +9,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.peach import tree from liblaf.peach.linalg import CompositeSolver from liblaf.peach.optim import PNCG, Optax, Optimizer @@ -16,7 +17,6 @@ from liblaf import cherries, grapes, melon from liblaf.apple import Forward, Inverse, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.apple.warp import Phace type Vector = Float[Array, " N"] diff --git a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-old-hess.py b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-old-hess.py index 9f1bbf1e6..d3d042641 100644 --- a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-old-hess.py +++ b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-old-hess.py @@ -9,6 +9,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.peach import tree from liblaf.peach.linalg import CompositeSolver from liblaf.peach.optim import PNCG, Optax, Optimizer @@ -16,7 +17,6 @@ from liblaf import cherries, grapes, melon from liblaf.apple import Forward, Inverse, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.apple.warp import Phace type Vector = Float[Array, " N"] diff --git a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-partial.py b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-partial.py index 66225c322..f75bda3f5 100644 --- a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-partial.py +++ b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-partial.py @@ -9,6 +9,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.peach import tree from liblaf.peach.linalg import CompositeSolver from liblaf.peach.optim import PNCG, Optax, Optimizer @@ -16,7 +17,6 @@ from liblaf import cherries, grapes, melon from liblaf.apple import Forward, Inverse, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.apple.warp import Phace type Vector = Float[Array, " N"] diff --git a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-stage-2.py b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-stage-2.py index f32371bab..a84f6b4ff 100644 --- a/exp/2025/10/22/inverse-flame/src/20-inverse-adam-stage-2.py +++ b/exp/2025/10/22/inverse-flame/src/20-inverse-adam-stage-2.py @@ -9,6 +9,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.peach import tree from liblaf.peach.linalg import CompositeSolver from liblaf.peach.optim import PNCG, Optax, Optimizer @@ -16,7 +17,6 @@ from liblaf import cherries, grapes, melon from liblaf.apple import Forward, Inverse, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.apple.warp import Phace type Vector = Float[Array, " N"] diff --git a/exp/2025/10/22/inverse-flame/src/20-inverse-adam.py b/exp/2025/10/22/inverse-flame/src/20-inverse-adam.py index 8d76cb864..7353f02f5 100644 --- a/exp/2025/10/22/inverse-flame/src/20-inverse-adam.py +++ b/exp/2025/10/22/inverse-flame/src/20-inverse-adam.py @@ -11,6 +11,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, POINT_ID from liblaf.peach import tree from liblaf.peach.linalg import CompositeSolver from liblaf.peach.optim import PNCG, Optax, Optimizer @@ -18,7 +19,6 @@ from liblaf import cherries, grapes, melon from liblaf.apple import Forward, Inverse, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, POINT_ID from liblaf.apple.warp import Phace type Vector = Float[Array, " N"] diff --git a/exp/2025/10/22/inverse-flame/src/20-inverse-lbfgs.py b/exp/2025/10/22/inverse-flame/src/20-inverse-lbfgs.py index 620081df4..319921753 100644 --- a/exp/2025/10/22/inverse-flame/src/20-inverse-lbfgs.py +++ b/exp/2025/10/22/inverse-flame/src/20-inverse-lbfgs.py @@ -9,13 +9,13 @@ import pyvista as pv from environs import env from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.peach import tree from liblaf.peach.linalg import LinearSolver from liblaf.peach.optim import Optimizer, ScipyOptimizer from liblaf import cherries, grapes, melon from liblaf.apple import Forward, Inverse, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MUSCLE_FRACTION, POINT_ID from liblaf.apple.warp import Phace type Vector = Float[Array, " N"] diff --git a/exp/2025/10/22/inverse-flame/src/21-forward.py b/exp/2025/10/22/inverse-flame/src/21-forward.py index 46981543e..007724f8f 100644 --- a/exp/2025/10/22/inverse-flame/src/21-forward.py +++ b/exp/2025/10/22/inverse-flame/src/21-forward.py @@ -4,11 +4,11 @@ import jax.numpy as jnp import pyvista as pv from jaxtyping import Array, Float +from liblaf.apple.consts import ACTIVATION, POINT_ID from liblaf.peach.optim import PNCG from liblaf import cherries, melon from liblaf.apple import Forward, Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, POINT_ID from liblaf.apple.warp import Phace type Scalar = Float[Array, ""] diff --git a/exp/2025/10/22/inverse-flame/src/21-inverse-inspect.py b/exp/2025/10/22/inverse-flame/src/21-inverse-inspect.py index a8a75372b..3c9febf8b 100644 --- a/exp/2025/10/22/inverse-flame/src/21-inverse-inspect.py +++ b/exp/2025/10/22/inverse-flame/src/21-inverse-inspect.py @@ -4,10 +4,10 @@ import numpy as np import pyvista as pv from jaxtyping import Array, Bool, Float +from liblaf.apple.consts import ACTIVATION +from liblaf.apple.jax import make_activation from liblaf import cherries, melon -from liblaf.apple.constants import ACTIVATION -from liblaf.apple.jax import make_activation class Config(cherries.BaseConfig): diff --git a/exp/2025/10/22/inverse-flame/src/30-animate.py b/exp/2025/10/22/inverse-flame/src/30-animate.py index 7e1613eaf..9d8f00487 100644 --- a/exp/2025/10/22/inverse-flame/src/30-animate.py +++ b/exp/2025/10/22/inverse-flame/src/30-animate.py @@ -6,6 +6,7 @@ import pyvista as pv import warp as wp from jaxtyping import Array, Float +from liblaf.apple.warp.typing import vec6 from liblaf.peach import tree from liblaf.peach.optim import PNCG, Objective @@ -13,7 +14,6 @@ from liblaf.apple import sim from liblaf.apple.warp import sim as sim_wp from liblaf.apple.warp import utils as wpu -from liblaf.apple.warp.typing import vec6 logger: logging.Logger = logging.getLogger(__name__) diff --git a/exp/2025/10/22/inverse-flame/src/31-animate-inspect.py b/exp/2025/10/22/inverse-flame/src/31-animate-inspect.py index a591ac1fb..6982e3da6 100644 --- a/exp/2025/10/22/inverse-flame/src/31-animate-inspect.py +++ b/exp/2025/10/22/inverse-flame/src/31-animate-inspect.py @@ -3,9 +3,9 @@ import jax.numpy as jnp import numpy as np from jaxtyping import Array, Bool, Float +from liblaf.apple.jax import sim as sim_jax from liblaf import cherries, melon -from liblaf.apple.jax import sim as sim_jax class Config(cherries.BaseConfig): diff --git a/exp/2025/10/29/muscle-fiber-direction/src/10-solve.py b/exp/2025/10/29/muscle-fiber-direction/src/10-solve.py index f1a2ed472..a35b15b0a 100644 --- a/exp/2025/10/29/muscle-fiber-direction/src/10-solve.py +++ b/exp/2025/10/29/muscle-fiber-direction/src/10-solve.py @@ -3,12 +3,12 @@ import pyvista as pv from jax import Array from jaxtyping import Integer +from liblaf.apple.jax import sim as sim_jax +from liblaf.apple.jax.typing import Scalar, Vector from liblaf.peach import optim from liblaf.peach import tree_utils as tree from liblaf import grapes, melon -from liblaf.apple.jax import sim as sim_jax -from liblaf.apple.jax.typing import Scalar, Vector @tree.define diff --git a/exp/2025/12/31/inverse-toy/data/10-input-grid5-320k.vtu b/exp/2025/12/31/inverse-toy/data/10-input-grid5-320k.vtu new file mode 100644 index 000000000..8af54cd59 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/10-input-grid5-320k.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e76661b2836c01a3c7578313eea5bd70123a52fbf8997a874a0976977e04c6e2 +size 3021145 diff --git a/exp/2025/12/31/inverse-toy/data/10-input-grid5-40k.vtu b/exp/2025/12/31/inverse-toy/data/10-input-grid5-40k.vtu new file mode 100644 index 000000000..d38509091 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/10-input-grid5-40k.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4288666de495f3f43fb05fcaa3cf33ae51c6fcb085afcc67e01beb6b4a7be04 +size 384190 diff --git a/exp/2025/12/31/inverse-toy/data/10-input-grid6-384k.vtu b/exp/2025/12/31/inverse-toy/data/10-input-grid6-384k.vtu new file mode 100644 index 000000000..7811cb049 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/10-input-grid6-384k.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c536a2f0dfdc484a9520652530ba5858b5b5efbb237565a764bcbfaca98073d2 +size 3596281 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-121k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-121k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..9b1d9bac8 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-121k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c323bba03580224e19c6f8c01ad9a1113d395008ae470a1db01da8bda5116bc1 +size 3513110 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-4k-coarse-act2-lambda3-float32-L-BFGS-B.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-4k-coarse-act2-lambda3-float32-L-BFGS-B.vtu new file mode 100644 index 000000000..191c9f067 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-4k-coarse-act2-lambda3-float32-L-BFGS-B.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e6c0eb5f52acbaa3eb9e94f73dd5208ad5ac4401556a444bb9ffc77012bae47 +size 132048 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-4k-coarse-act2-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-4k-coarse-act2-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..60621b678 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-4k-coarse-act2-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94a335bd43a2b89d680f9b6e91e926712ea45d961809c14942a6996b95c26808 +size 132052 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-debug-grid5-320k-act2-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-debug-grid5-320k-act2-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..9f43947ae --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-debug-grid5-320k-act2-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7c69b04badcf2895f9af2cde81816755ba03c5ffd6e7d2782b91b2c992e0865 +size 3844634 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-debug-grid5-320k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-debug-grid5-320k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..1e4f18e59 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-debug-grid5-320k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cee678d81c531819cae9ed180665a71f0764b864a9a8f00c4b0ffb703a05728f +size 4238769 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-grid5-320k-act2-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-grid5-320k-act2-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..96ad6cd89 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-grid5-320k-act2-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcdb5cb58b3ea4908e85c3c6c964d2f1e00666a00849b1f2bb7f1a27de719546 +size 3210386 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-grid5-320k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-grid5-320k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..9865209aa --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-grid5-320k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9c8fba00e58cc8fbf271e84674552882fb67e216f95d3450de43d95ab9d5760 +size 4229274 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-grid5-40k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-grid5-40k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..97d0811bb --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-grid5-40k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:755a0575c0aef6e28da1cca2ded2be8da45497d897c981c188e6c1d025dc3530 +size 505649 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-grid6-384k-act8-lambda0-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-grid6-384k-act8-lambda0-float32-pncg.vtu new file mode 100644 index 000000000..448c9819a --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-grid6-384k-act8-lambda0-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32d5e068ae26b97474eba1ffbcb3e27ebc4936b2e7407ba36ce4c272053c2fb6 +size 4840132 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-grid6-384k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-grid6-384k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..c5c80a282 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-grid6-384k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cd8db554918c7d85ae6660fac678d9e0815b8e8e7c2ded99183163360407d34 +size 4841584 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-muscle-23k-coarsen-lambda3-act2-volpres.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-muscle-23k-coarsen-lambda3-act2-volpres.vtu new file mode 100644 index 000000000..71c4b65e9 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-muscle-23k-coarsen-lambda3-act2-volpres.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:937f4e6bec3d219e464b9e6c5656a46d006927b11af23a73254f37efdfba2da3 +size 729427 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-prestrain-121k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-prestrain-121k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..8bc874e5d --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-prestrain-121k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d32bcead933dc7b62017785ea3e737dcf1c165f99879dee461df69cb570a29c +size 3512625 diff --git a/exp/2025/12/31/inverse-toy/data/20-forward-prestrain-grid5-40k-act8-lambda3-float32-pncg.vtu b/exp/2025/12/31/inverse-toy/data/20-forward-prestrain-grid5-40k-act8-lambda3-float32-pncg.vtu new file mode 100644 index 000000000..879db1ce3 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/data/20-forward-prestrain-grid5-40k-act8-lambda3-float32-pncg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d97dce622747ebbc57cc7e6a65e8d8641ec6780748b04c6c78531e6d41a146c +size 549559 diff --git a/exp/2025/12/31/inverse-toy/fig/10-input-121k-edges.png b/exp/2025/12/31/inverse-toy/fig/10-input-121k-edges.png new file mode 100644 index 000000000..d38226b3a --- /dev/null +++ b/exp/2025/12/31/inverse-toy/fig/10-input-121k-edges.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741540cf93f0eab3bc9544b6979bb2f1739c2d2b47beb1312f46143a223627fa +size 1466874 diff --git a/exp/2025/12/31/inverse-toy/fig/10-input-121k-frac.png b/exp/2025/12/31/inverse-toy/fig/10-input-121k-frac.png new file mode 100644 index 000000000..2c30fc34c --- /dev/null +++ b/exp/2025/12/31/inverse-toy/fig/10-input-121k-frac.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f614a55bc830cac9ead5bf10b3927d2651b7a1833ae398c0f3d08837d8d4647 +size 187102 diff --git a/exp/2025/12/31/inverse-toy/fig/10-input-grid5-320k-frac.png b/exp/2025/12/31/inverse-toy/fig/10-input-grid5-320k-frac.png new file mode 100644 index 000000000..265697bda --- /dev/null +++ b/exp/2025/12/31/inverse-toy/fig/10-input-grid5-320k-frac.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c92bf49812ac28166a376d0be6982559ad1c8affe841987e647ad69b80bd31bc +size 63842 diff --git a/exp/2025/12/31/inverse-toy/fig/20-forward-121k.png b/exp/2025/12/31/inverse-toy/fig/20-forward-121k.png new file mode 100644 index 000000000..aee454f3c --- /dev/null +++ b/exp/2025/12/31/inverse-toy/fig/20-forward-121k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d7dcb762299174d99aa48680ef7a3d958111cd270296195415c4b585ca201f4 +size 323205 diff --git a/exp/2025/12/31/inverse-toy/fig/20-forward-prestrain.png b/exp/2025/12/31/inverse-toy/fig/20-forward-prestrain.png new file mode 100644 index 000000000..0b3bdc0ea --- /dev/null +++ b/exp/2025/12/31/inverse-toy/fig/20-forward-prestrain.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:048489eed0658d878d167a23a99313b41922987d958a3eff3bf18103cb51cb94 +size 293571 diff --git a/exp/2025/12/31/inverse-toy/scripts/run-all.sh b/exp/2025/12/31/inverse-toy/scripts/run-all.sh index a23c4dee8..f65156d2e 100644 --- a/exp/2025/12/31/inverse-toy/scripts/run-all.sh +++ b/exp/2025/12/31/inverse-toy/scripts/run-all.sh @@ -34,4 +34,5 @@ export DEBUG=1 # LR=0.03 COARSEN=false ACTIVATION=5 VOLUME_PRESERVE=false python src/20-forward-muscle.py # LR=0.03 COARSEN=false ACTIVATION=5 VOLUME_PRESERVE=true python src/20-forward-muscle.py -SUFFIX=-7k-conform python src/20-forward.py +SUFFIX=-121k python ./src/20-forward.py +SUFFIX=-grid5-40k python ./src/20-forward.py diff --git a/exp/2025/12/31/inverse-toy/src/10-gen-grid.py b/exp/2025/12/31/inverse-toy/src/10-gen-grid.py new file mode 100644 index 000000000..dcc33b628 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/src/10-gen-grid.py @@ -0,0 +1,83 @@ +import einops +import numpy as np +import pyvista as pv +from environs import env +from jaxtyping import Array, Float, Integer +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + LAMBDA, + MU, + MUSCLE_FRACTION, +) + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + # lr=0.05 coarsen -> 4k-coarse + # lr=0.05 -> 7k + # lr=0.05 conform -> 7k-conform + # lr=0.02 conform -> 102k-conform + # lr=0.02 -> 121k + lambda_: float = env.float("LAMBDA", 3.0) + tetra_per_cell: int = env.int("TETRA_PER_CELL", 5) + + +def gen_muscles() -> pv.MultiBlock: + muscles = pv.MultiBlock() + muscles.append(pv.Box((0.4, 1.6, 0.2, 0.3, 0.0, 1.0), quads=False), "Muscle000") + # muscles.append(pv.Box((0, 2, 0.7, 0.8, 0.2, 0.8), quads=False), "muscle-002") + return muscles + + +def gen_grid(cfg: Config) -> pv.UnstructuredGrid: + x = np.linspace(0.0, 2.0, 20 * 4 + 1) + y = np.linspace(0.0, 0.5, 5 * 4 + 1) + z = np.linspace(0.0, 1.0, 10 * 4 + 1) + grid = pv.RectilinearGrid(x, y, z) + mesh: pv.UnstructuredGrid = grid.to_tetrahedra(tetra_per_cell=cfg.tetra_per_cell) # pyright: ignore[reportAssignmentType] + mesh = melon.tet.fix_winding(mesh) + return mesh + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = gen_grid(cfg) + muscles: pv.MultiBlock = gen_muscles() + ic(mesh) + + mesh.point_data[DIRICHLET_MASK] = mesh.points[:, 1] < 1e-2 + mesh.point_data[DIRICHLET_VALUE] = np.zeros_like(mesh.points) + + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), cfg.lambda_) + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[MUSCLE_FRACTION] = einops.repeat( + np.asarray([1.0, 0.0, 0.0]), "i -> c i", c=mesh.n_cells + ) + + mesh.cell_data[MUSCLE_FRACTION] = np.zeros((mesh.n_cells,)) + mesh.cell_data["MuscleId"] = np.full((mesh.n_cells,), -1, np.int32) + mesh.field_data["MuscleName"] = muscles.keys() + for muscle_id, muscle in enumerate(muscles): + fraction: Float[Array, " c"] = melon.tet.compute_volume_fraction(mesh, muscle) + mesh.cell_data[MUSCLE_FRACTION] += fraction + mesh.cell_data["MuscleId"][fraction > 0.5] = muscle_id # pyright: ignore[reportArgumentType] + + muscle_ids: Integer[np.ndarray, " c"] = mesh.cell_data["MuscleId"] + activation: Float[np.ndarray, "c 6"] = mesh.cell_data[ACTIVATION] + gamma: float = 15.0 + activation[muscle_ids == 0, :3] = 1.0 - np.asarray( # pyright: ignore[reportArgumentType] + [gamma, 1.0 / np.sqrt(gamma), 1.0 / np.sqrt(gamma)] + ) + mesh.cell_data[ACTIVATION] = activation + + suffix: str = f"-grid{cfg.tetra_per_cell}" + suffix += f"-{round(mesh.n_cells / 1000)}k" + melon.save(cherries.output(f"10-input{suffix}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2025/12/31/inverse-toy/src/10-gen.py b/exp/2025/12/31/inverse-toy/src/10-gen.py index 156d55a01..616632ba7 100644 --- a/exp/2025/12/31/inverse-toy/src/10-gen.py +++ b/exp/2025/12/31/inverse-toy/src/10-gen.py @@ -3,9 +3,7 @@ import pyvista as pv from environs import env from jaxtyping import Array, Float, Integer - -from liblaf import cherries, melon -from liblaf.apple.constants import ( +from liblaf.apple.consts import ( ACTIVATION, DIRICHLET_MASK, DIRICHLET_VALUE, @@ -13,6 +11,8 @@ MU, ) +from liblaf import cherries, melon + class Config(cherries.BaseConfig): # lr=0.05 coarsen -> 4k-coarse diff --git a/exp/2025/12/31/inverse-toy/src/20-forward-muscle.py b/exp/2025/12/31/inverse-toy/src/20-forward-muscle.py index 71018b190..8dd64ee30 100644 --- a/exp/2025/12/31/inverse-toy/src/20-forward-muscle.py +++ b/exp/2025/12/31/inverse-toy/src/20-forward-muscle.py @@ -1,12 +1,13 @@ +import jax.numpy as jnp import numpy as np import pyvista as pv from environs import env +from liblaf.apple.consts import ACTIVATION, GLOBAL_POINT_ID, LAMBDA, MU, MUSCLE_FRACTION +from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf.peach.optim import PNCG from liblaf import cherries, melon -from liblaf.apple.constants import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, POINT_ID -from liblaf.apple.model import Forward, Model, ModelBuilder -from liblaf.apple.warp import Phace +from liblaf.apple.warp import WarpArapMuscle class Config(cherries.BaseConfig): @@ -32,18 +33,20 @@ def tetgen(cfg: Config) -> pv.UnstructuredGrid: def build_model(mesh: pv.UnstructuredGrid) -> Forward: builder = ModelBuilder() - mesh = builder.assign_global_ids(mesh) - elastic: Phace = Phace.from_pyvista(mesh) + mesh = builder.add_points(mesh) + elastic: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh, name="elastic") builder.add_energy(elastic) model: Model = builder.finalize() forward = Forward( model, optimizer=PNCG( max_delta=0.15 * model.edges_length_mean, - max_steps=2000, - rtol=1e-6, - rtol_primary=1e-6, - stagnation_max_restarts=100, + max_steps=jnp.asarray(2000), + atol=jnp.asarray(1e-14), + rtol=jnp.asarray(1e-6), + rtol_primary=jnp.asarray(1e-6), + stagnation_max_restarts=jnp.asarray(100), + jit=True, ), ) return forward @@ -55,14 +58,31 @@ def main(cfg: Config) -> None: mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) mesh.cell_data[MUSCLE_FRACTION] = np.ones((mesh.n_cells,)) mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) - mesh.cell_data[ACTIVATION][:, 0] = cfg.activation - 1.0 + mesh.cell_data[ACTIVATION][:, 0] = cfg.activation - 1.0 # pyright: ignore[reportArgumentType] if cfg.volume_preserve: - mesh.cell_data[ACTIVATION][:, 1] = np.reciprocal(np.sqrt(cfg.activation)) - 1.0 - mesh.cell_data[ACTIVATION][:, 2] = np.reciprocal(np.sqrt(cfg.activation)) - 1.0 + mesh.cell_data[ACTIVATION][:, 1] = np.reciprocal(np.sqrt(cfg.activation)) - 1.0 # pyright: ignore[reportArgumentType] + mesh.cell_data[ACTIVATION][:, 2] = np.reciprocal(np.sqrt(cfg.activation)) - 1.0 # pyright: ignore[reportArgumentType] mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), cfg.lambda_) forward: Forward = build_model(mesh) - forward.step() - mesh.point_data["Solution"] = forward.u_full[mesh.point_data[POINT_ID]] # pyright: ignore[reportArgumentType] + + # def callback( + # objective, model_state: ModelState, opt_state: PNCG.State, opt_stats + # ) -> None: + # ic(opt_state) + # print(opt_state.params) + # print(model_state.u) + # print(model_state.warp.u) + # print(opt_state.grad) + # print(opt_state.hess_diag) + # ic(opt_state.hess_diag.min()) + # ic(opt_state.hess_quad) + # # print(forward.model.hess_diag(model_state).min()) + for _ in range(100): + forward.model.u_free = jnp.zeros_like(forward.model.u_free) + solution = forward.step() + ic(solution) + + mesh.point_data["Solution"] = forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] # pyright: ignore[reportArgumentType] suffix: str = f"-{round(mesh.n_cells / 1000)}k" if cfg.coarsen: diff --git a/exp/2025/12/31/inverse-toy/src/20-forward-newton.py b/exp/2025/12/31/inverse-toy/src/20-forward-newton.py index fa0bd7ed8..954b5aaad 100644 --- a/exp/2025/12/31/inverse-toy/src/20-forward-newton.py +++ b/exp/2025/12/31/inverse-toy/src/20-forward-newton.py @@ -2,11 +2,11 @@ import numpy as np import pyvista as pv from environs import env +from liblaf.apple.consts import ACTIVATION, LAMBDA, POINT_ID +from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf.peach.optim import ScipyOptimizer from liblaf import cherries, melon -from liblaf.apple.constants import ACTIVATION, LAMBDA, POINT_ID -from liblaf.apple.model import Forward, Model, ModelBuilder from liblaf.apple.warp import Phace diff --git a/exp/2025/12/31/inverse-toy/src/20-forward-prestrain.py b/exp/2025/12/31/inverse-toy/src/20-forward-prestrain.py new file mode 100644 index 000000000..200d9ad45 --- /dev/null +++ b/exp/2025/12/31/inverse-toy/src/20-forward-prestrain.py @@ -0,0 +1,119 @@ +import jax +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + GLOBAL_POINT_ID, + LAMBDA, + PRESTRAIN, + STIFFNESS, +) +from liblaf.apple.jax import JaxMassSpringPrestrain +from liblaf.apple.model import Forward, Model, ModelBuilder, ModelState +from liblaf.peach.optim import PNCG, Objective, Optax, Optimizer, ScipyOptimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpPhaceV2 + +wp.config.mode = "debug" +# wp.config.print_launches = True +# wp.config.verbose = True +# wp.config.verify_autograd_array_access = True +# wp.config.verify_cuda = True +# wp.config.verify_fp = True +# wp.config.verbose_warnings = True +wp.init() + + +class Config(cherries.BaseConfig): + # nu = lambda / (2 * (lambda + mu)) + # lambda = 2 * mu * nu / (1 - 2 * nu) + # lambda= 3.0 -> nu=0.375 + # lambda= 9.0 -> nu=0.45 + # lambda=49.0 -> nu=0.49 + lambda_: float = env.float("LAMBDA", 3.0) + activation: float = env.float("ACTIVATION", 8.0) + suffix: str = env.str("SUFFIX", "-121k") + solver: str = env.str("SOLVER", "pncg") + + +def get_solver(name: str, model: Model) -> Optimizer: + match name: + case "pncg": + return PNCG( + max_delta=0.15 * model.edges_length_mean, + max_steps=jnp.asarray(5000), + rtol=jnp.asarray(1e-5), + rtol_primary=jnp.asarray(1e-10), + stagnation_max_restarts=jnp.asarray(5), + jit=True, + ) + case "sgd": + return Optax(optax.sgd(1e-1)) + case name: + return ScipyOptimizer(method=name) + + +def build_model(mesh: pv.UnstructuredGrid, solver: str) -> Forward: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + + elastic: WarpPhaceV2 = WarpPhaceV2.from_pyvista(mesh) + builder.add_energy(elastic) + + surface: pv.PolyData = mesh.extract_surface() # pyright: ignore[reportAssignmentType] + edges: pv.PolyData = surface.extract_all_edges() # pyright: ignore[reportAssignmentType] + edges: pv.PolyData = edges.compute_cell_sizes(length=True, area=False, volume=False) # pyright: ignore[reportAssignmentType] + edges.cell_data[STIFFNESS] = np.full((edges.n_cells,), 1e-1) + edges.cell_data[PRESTRAIN] = np.full((edges.n_cells,), -0.5) + skin: JaxMassSpringPrestrain = JaxMassSpringPrestrain.from_pyvista(edges) + builder.add_energy(skin) + + model: Model = builder.finalize() + forward = Forward(model, optimizer=get_solver(solver, model)) + return forward + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid( + cherries.input(f"10-input{cfg.suffix}.vtu") + ) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][:, 0] = cfg.activation # pyright: ignore[reportArgumentType] + mesh.cell_data[ACTIVATION][:, 1] = cfg.activation**-0.5 # pyright: ignore[reportArgumentType] + mesh.cell_data[ACTIVATION][:, 2] = cfg.activation**-0.5 # pyright: ignore[reportArgumentType] + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), cfg.lambda_) + forward: Forward = build_model(mesh, cfg.solver) + + def callback( + _objective: Objective, + _model_state: ModelState, + opt_state: PNCG.State, + _opt_stats: PNCG.Stats, + ) -> None: + ic(opt_state) + + # warmup + # print(forward.model.grad(forward.state)) + # print(forward.model.hess_diag(forward.state)) + # print(forward.model.hess_quad(forward.state, forward.state.u)) + # print(forward.model.grad(forward.state)) + # print(forward.model.hess_diag(forward.state)) + # print(forward.model.hess_quad(forward.state, forward.state.u)) + forward.step(callback=callback) + mesh.point_data["Solution"] = forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] # pyright: ignore[reportArgumentType] + + suffix: str = cfg.suffix + suffix += f"-act{round(cfg.activation)}" + suffix += f"-lambda{round(cfg.lambda_)}" + suffix += "-float64" if jax.config.read("jax_enable_x64") else "-float32" + suffix += f"-{cfg.solver}" + melon.save(cherries.output(f"20-forward-prestrain{suffix}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2025/12/31/inverse-toy/src/20-forward.py b/exp/2025/12/31/inverse-toy/src/20-forward.py index 95cb991a2..6acce64e6 100644 --- a/exp/2025/12/31/inverse-toy/src/20-forward.py +++ b/exp/2025/12/31/inverse-toy/src/20-forward.py @@ -1,14 +1,26 @@ import jax +import jax.numpy as jnp import numpy as np import optax import pyvista as pv +import warp as wp from environs import env -from liblaf.peach.optim import PNCG, Optax, Optimizer, ScipyOptimizer +from liblaf.apple.consts import ACTIVATION, GLOBAL_POINT_ID, LAMBDA +from liblaf.apple.model import Forward, Model, ModelBuilder, ModelState +from liblaf.apple.warp.energies.elastic import ( + # WarpArapMuscle, + WarpPhaceV2, + # WarpVolumePreservationDeterminant, +) +from liblaf.peach.optim import PNCG, Objective, Optax, Optimizer, ScipyOptimizer from liblaf import cherries, melon -from liblaf.apple.constants import ACTIVATION, LAMBDA, POINT_ID -from liblaf.apple.model import Forward, Model, ModelBuilder -from liblaf.apple.warp import Phace + +wp.config.mode = "release" +# wp.config.print_launches = True +wp.config.verbose = True +# wp.config.max_unroll = 0 +wp.init() class Config(cherries.BaseConfig): @@ -18,8 +30,8 @@ class Config(cherries.BaseConfig): # lambda= 9.0 -> nu=0.45 # lambda=49.0 -> nu=0.49 lambda_: float = env.float("LAMBDA", 3.0) - activation: float = env.float("ACTIVATION", 8.0) - suffix: str = env.str("SUFFIX", "-4k-coarse-conform") + activation: float = env.float("ACTIVATION", 2.0) + suffix: str = env.str("SUFFIX", "-4k-coarse") solver: str = env.str("SOLVER", "pncg") @@ -28,21 +40,22 @@ def get_solver(name: str, model: Model) -> Optimizer: case "pncg": return PNCG( max_delta=0.15 * model.edges_length_mean, - max_steps=5000, - rtol=1e-5, - rtol_primary=1e-13, - stagnation_max_restarts=100, + max_steps=jnp.asarray(1000), + rtol=jnp.asarray(1e-5), + rtol_primary=jnp.asarray(1e-10), + stagnation_max_restarts=jnp.asarray(100), + jit=True, ) case "sgd": - return Optax(optax.sgd(1e-1)) + return Optax(optax.sgd(0.1)) case name: - return ScipyOptimizer(method=name) + return ScipyOptimizer(method=name, options={"verbose": 3}) def build_model(mesh: pv.UnstructuredGrid, solver: str) -> Forward: builder = ModelBuilder() - mesh = builder.assign_global_ids(mesh) - elastic: Phace = Phace.from_pyvista(mesh) + mesh = builder.add_points(mesh) + elastic: WarpPhaceV2 = WarpPhaceV2.from_pyvista(mesh) builder.add_energy(elastic) model: Model = builder.finalize() forward = Forward(model, optimizer=get_solver(solver, model)) @@ -54,13 +67,45 @@ def main(cfg: Config) -> None: cherries.input(f"10-input{cfg.suffix}.vtu") ) mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) - mesh.cell_data[ACTIVATION][:, 0] = cfg.activation # pyright: ignore[reportArgumentType] - mesh.cell_data[ACTIVATION][:, 1] = cfg.activation**-0.5 # pyright: ignore[reportArgumentType] - mesh.cell_data[ACTIVATION][:, 2] = cfg.activation**-0.5 # pyright: ignore[reportArgumentType] + mesh.cell_data[ACTIVATION][:, 0] = cfg.activation - 1.0 # pyright: ignore[reportArgumentType] + mesh.cell_data[ACTIVATION][:, 1] = cfg.activation**-0.5 - 1.0 # pyright: ignore[reportArgumentType] + mesh.cell_data[ACTIVATION][:, 2] = cfg.activation**-0.5 - 1.0 # pyright: ignore[reportArgumentType] mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), cfg.lambda_) forward: Forward = build_model(mesh, cfg.solver) + + def callback( + _objective: Objective, + _model_state: ModelState, + opt_state: PNCG.State, + _opt_stats: PNCG.Stats, + ) -> None: + # ic(opt_state.hess_diag.min()) + ic(opt_state) + + # warmup + # u_wp: wp.array = wp.zeros((forward.model.n_points,), dtype=wp.vec3f) + # grad_wp: wp.array = wp.zeros((forward.model.n_points,), dtype=wp.vec3f) + # hess_diag_wp: wp.array = wp.zeros((forward.model.n_points,), dtype=wp.vec3f) + # forward.model.warp.__wrapped__.grad(forward.state.warp.__wrapped__, u_wp, grad_wp) + # print(grad_wp) + # forward.model.warp.__wrapped__.hess_diag( + # forward.state.warp.__wrapped__, u_wp, hess_diag_wp + # ) + # print(hess_diag_wp) + # forward.model.warp.__wrapped__.grad(forward.state.warp.__wrapped__, u_wp, grad_wp) + # print(grad_wp) + # forward.model.warp.__wrapped__.hess_diag( + # forward.state.warp.__wrapped__, u_wp, hess_diag_wp + # ) + # print(hess_diag_wp) + # print(forward.model.grad(forward.state)) + # print(forward.model.hess_diag(forward.state)) + # print(forward.model.hess_quad(forward.state, forward.state.u)) + # print(forward.model.grad(forward.state)) + # print(forward.model.hess_diag(forward.state)) + # print(forward.model.hess_quad(forward.state, forward.state.u)) forward.step() - mesh.point_data["Solution"] = forward.u_full[mesh.point_data[POINT_ID]] # pyright: ignore[reportArgumentType] + mesh.point_data["Solution"] = forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] # pyright: ignore[reportArgumentType] suffix: str = cfg.suffix suffix += f"-act{round(cfg.activation)}" diff --git a/exp/2026/01/28/smas/data/10-input-coarse.vtu b/exp/2026/01/28/smas/data/10-input-coarse.vtu new file mode 100644 index 000000000..7c4488fa9 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-coarse.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38676e3c9999681abee25cffd3c7e12e57fd96f001cd5e2f5178e2dbc1eba1de +size 47424 diff --git a/exp/2026/01/28/smas/data/10-input-ellipsoid.vtu b/exp/2026/01/28/smas/data/10-input-ellipsoid.vtu new file mode 100644 index 000000000..b256e12f2 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-ellipsoid.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88009702810600ff000c10c1d69e4f9dbfb2b71241199c2bd118b34813f50f8f +size 10912250 diff --git a/exp/2026/01/28/smas/data/10-input-smas02-muscle02.vtu b/exp/2026/01/28/smas/data/10-input-smas02-muscle02.vtu new file mode 100644 index 000000000..d780fbaa7 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas02-muscle02.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d88bbb57a0aa890721d473755610b915af67ccf42baded011ba3036162ed094a +size 10786942 diff --git a/exp/2026/01/28/smas/data/10-input-smas04-muscle02.vtu b/exp/2026/01/28/smas/data/10-input-smas04-muscle02.vtu new file mode 100644 index 000000000..7b3007b22 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas04-muscle02.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:875c4d8f80e5fc5a2547010c44694459533026a701aa1126ca3c89800b16ef38 +size 10803462 diff --git a/exp/2026/01/28/smas/data/10-input-smas06-muscle02.vtu b/exp/2026/01/28/smas/data/10-input-smas06-muscle02.vtu new file mode 100644 index 000000000..c489f29e4 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas06-muscle02.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebc085f7782c942497334013a67548eeebdb1033e5bbb2f64240b24720988676 +size 10806098 diff --git a/exp/2026/01/28/smas/data/10-input-smas28-muscle46.vtu b/exp/2026/01/28/smas/data/10-input-smas28-muscle46.vtu new file mode 100644 index 000000000..dda3ac5a2 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas28-muscle46.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:736f26316c62698102d668037ca4eb0539094eaa4be60e61b7db14832a10d1b2 +size 10985546 diff --git a/exp/2026/01/28/smas/data/10-input-smas37-muscle46.vtu b/exp/2026/01/28/smas/data/10-input-smas37-muscle46.vtu new file mode 100644 index 000000000..17aedd750 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas37-muscle46.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:713f4308709cfed2a0c62a0f12fe02abce034fd1900ba2a743f003bc8ac35999 +size 10985522 diff --git a/exp/2026/01/28/smas/data/10-input-smas46-muscle46-coarse-conform.vtu b/exp/2026/01/28/smas/data/10-input-smas46-muscle46-coarse-conform.vtu new file mode 100644 index 000000000..a17bb24c3 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas46-muscle46-coarse-conform.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd9e2b7f4f0a7282a10fe5583d9b1d91a432748d4f88564ef8fb1837187c8ff5 +size 88423 diff --git a/exp/2026/01/28/smas/data/10-input-smas46-muscle46-coarse.vtu b/exp/2026/01/28/smas/data/10-input-smas46-muscle46-coarse.vtu new file mode 100644 index 000000000..96d8e6753 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas46-muscle46-coarse.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca890b25f3c0c7acc1be60f7a20c884c84f5f5b064db06a5d9b89455b8b3c8e0 +size 1265386 diff --git a/exp/2026/01/28/smas/data/10-input-smas46-muscle46-conform.vtu b/exp/2026/01/28/smas/data/10-input-smas46-muscle46-conform.vtu new file mode 100644 index 000000000..e58bba301 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas46-muscle46-conform.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23eceeb20e26af837ab8718e99f1b33b0f7e7452290eee4b67819aeef1f4c45d +size 10248040 diff --git a/exp/2026/01/28/smas/data/10-input-smas46-muscle46.vtu b/exp/2026/01/28/smas/data/10-input-smas46-muscle46.vtu new file mode 100644 index 000000000..1905a11ff --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas46-muscle46.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75ada01b9352b936641671a04ac70f1537f1cb420987361baa2755ac5aaeb93f +size 10968810 diff --git a/exp/2026/01/28/smas/data/10-input-smas8x-muscle8x.vtu b/exp/2026/01/28/smas/data/10-input-smas8x-muscle8x.vtu new file mode 100644 index 000000000..578942fbc --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input-smas8x-muscle8x.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66e1656aeecb1c8fe18d85f9acceeacffb24250458983f4e643f5b53bf09b6c1 +size 10788482 diff --git a/exp/2026/01/28/smas/data/10-input.vtu b/exp/2026/01/28/smas/data/10-input.vtu new file mode 100644 index 000000000..df6e8a57e --- /dev/null +++ b/exp/2026/01/28/smas/data/10-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d918ab6b64e8f50ae186f623136579f8870abcdf48f0a4f8cefbb324d897993 +size 10782043 diff --git a/exp/2026/01/28/smas/data/10-subface.vtp b/exp/2026/01/28/smas/data/10-subface.vtp new file mode 100644 index 000000000..15b9538d5 --- /dev/null +++ b/exp/2026/01/28/smas/data/10-subface.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3f582bf15324c62da668e659d2af5d90d9aa2e2385b03ba67597e5635ade82f +size 17333 diff --git a/exp/2026/01/28/smas/data/11-input-smas46-muscle46-smas-bottom-force.vtu b/exp/2026/01/28/smas/data/11-input-smas46-muscle46-smas-bottom-force.vtu new file mode 100644 index 000000000..2936ea01e --- /dev/null +++ b/exp/2026/01/28/smas/data/11-input-smas46-muscle46-smas-bottom-force.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c9416b02367d8eae1eb9ba6e3ba441f2f7b291235fe208279c27fc037c00c51 +size 3798060 diff --git a/exp/2026/01/28/smas/data/20-forward-ellipsoid-act2-stiff-ratio1e2.vtu b/exp/2026/01/28/smas/data/20-forward-ellipsoid-act2-stiff-ratio1e2.vtu new file mode 100644 index 000000000..6f4705e41 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-ellipsoid-act2-stiff-ratio1e2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85019553d485f95edf03827d76e28d800855c090b4a31d33ddc7b6d1f3574018 +size 13374179 diff --git a/exp/2026/01/28/smas/data/20-forward-ellipsoid-prestrain.vtu b/exp/2026/01/28/smas/data/20-forward-ellipsoid-prestrain.vtu new file mode 100644 index 000000000..39b2992a9 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-ellipsoid-prestrain.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8dee7f439a476a4a5365ab9d1c92dfc2b25f56c170a69f0ee131f2082da564a +size 12628050 diff --git a/exp/2026/01/28/smas/data/20-forward-phace-act2.vtu b/exp/2026/01/28/smas/data/20-forward-phace-act2.vtu new file mode 100644 index 000000000..42ab22ec6 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-phace-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfe9f797a5d2096c154abddc4e6d16c833c1bc7de94f03cd6630eff31fed4fd4 +size 11604744 diff --git a/exp/2026/01/28/smas/data/20-forward-phace-act5.vtu b/exp/2026/01/28/smas/data/20-forward-phace-act5.vtu new file mode 100644 index 000000000..3655717aa --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-phace-act5.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4277b88c9d575d48867777e3d89258d74d9ea080970bebbe205d6558119fc49 +size 11607300 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-prestrain-2.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-prestrain-2.0.vtu new file mode 100644 index 000000000..7d69c35cc --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-prestrain-2.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d30d9c2e42562623a40ab9aa66921f92eaf38ecafdabb51dd45759c9bf7cc6 +size 2029646 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu new file mode 100644 index 000000000..2c388215b --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea814f4d249256233f84cee2cc9cdd09a341849f5156307afe7cbec6b8699382 +size 2029587 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu new file mode 100644 index 000000000..e3aa237a9 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45603cee4983d5bab5e200934422e70e38fed80f936c3dc3779f4a5d04c3e8ea +size 15981591 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1.vtu new file mode 100644 index 000000000..cc0ad774c --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:521721c0d848c40315bdeec629d897975a140e1aa6905277113c640d07bedc91 +size 15870072 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1.vtu new file mode 100644 index 000000000..bd4a036c0 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:946c21a0c148a660be345d0429926df8fe6da42357180e10562570408acdb8ec +size 15954866 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu new file mode 100644 index 000000000..55fe5f440 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cbd93af7a9cb2f12d138aeec645b536ffeab8b65319843fca4aa76f84e82f99 +size 12534747 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000000.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000000.vtu new file mode 100644 index 000000000..4af9feb20 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36fc6a6b740afdb7c923feff09998d391983419ab05371cc0cf9a389838fe810 +size 12447118 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000001.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000001.vtu new file mode 100644 index 000000000..2068c66a5 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e03a966a55e7ec8718e5acbc0b5a3fa49367d2ca285131d5d3d3d3bef525f7f +size 12534409 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000002.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000002.vtu new file mode 100644 index 000000000..36ada9e64 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8fb17f1ea6461d83db2aec36da80dd15f167e9128dc288ddde544adcb2e99ad +size 12534881 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000003.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000003.vtu new file mode 100644 index 000000000..d9903ad78 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a9c4054d056db37b5b458a97e783fb5432b41bafe11b698703bc2185c6062e +size 12534629 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000004.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000004.vtu new file mode 100644 index 000000000..15858b0eb --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ccea010c8ce242d0e45433fd846da7092d697810c1922452cbc3c0510674cb7 +size 12534732 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000005.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000005.vtu new file mode 100644 index 000000000..320b1633e --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1b11fc10da8ae719617208f9ed9e97dc7ac9124b5f09272d6285b8e75274d1a +size 12535182 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000006.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000006.vtu new file mode 100644 index 000000000..8b9388bb5 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd0759fb2ed360574c6ba443b98b1e5543c753f4e426655c2580713b999eebf1 +size 12535316 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000007.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000007.vtu new file mode 100644 index 000000000..2d9e6fb49 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6da71adb3755daa6e2a5afb117704a9ccf691cc10d420d6a780c69f6cec9c75 +size 12535164 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000008.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000008.vtu new file mode 100644 index 000000000..a18cf5504 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3b9dd028ca1a558c77ed6826713a9057243bc35582cad4d1af5f4a7491170e1 +size 12535206 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000009.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000009.vtu new file mode 100644 index 000000000..f3e5e854e --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6a9f88825ef369c52b65928bb117a5e0ef756426213216927217c7b03986b5f +size 12534753 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000010.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000010.vtu new file mode 100644 index 000000000..44d937067 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd1155dd0bbd0cd064432f0af30d280e45778f83e7ce3c48dfecca65d82a507a +size 12534938 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000011.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000011.vtu new file mode 100644 index 000000000..78f104275 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7f6b3ef1deefb30ed5483fc7e6e5fa4d987a24232dbbf713219ca4b937b2d74 +size 12534439 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000012.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000012.vtu new file mode 100644 index 000000000..7a7129332 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bcdc1c3c33853fb6f4cc3414b97479e55055aa0874e65f7e3c7f64c08eac758 +size 12534024 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000013.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000013.vtu new file mode 100644 index 000000000..85f1cb43c --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af66be06610aefc9ea8005cbcb2d9cc201f4ac7a942f09b8f2a2692c37dc55d9 +size 12534641 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000014.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000014.vtu new file mode 100644 index 000000000..587bc529d --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:205d257b9a540686a42b3abd5ca45860c18b2d2f80ae755f04aa229093078c48 +size 12534618 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000015.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000015.vtu new file mode 100644 index 000000000..1484a8579 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12e0b6fadfb593bf3bbabe41bebf0c85c45b325234d9087a270b2ff47f0d1f5f +size 12534870 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000016.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000016.vtu new file mode 100644 index 000000000..0096ce334 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92bd9b95f05ba085787ad29870f5de423a9dfe87c5b78111df4171dec457ea72 +size 12534972 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000017.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000017.vtu new file mode 100644 index 000000000..9f24ffd64 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb3b3b08c6babe49144e8969c4a7627dababe036671fe043f974972b01994957 +size 12534946 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000018.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000018.vtu new file mode 100644 index 000000000..0b159070d --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eae37893f8e03ef0e06b83795536c53802388fd0459f9ea4d8748de3186e1c0 +size 12534940 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000019.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000019.vtu new file mode 100644 index 000000000..bf351a48f --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:784967e7cb1466d34429bf2809aa1b179a7799c71bd198008185b27aba876cde +size 12534918 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000020.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000020.vtu new file mode 100644 index 000000000..55fe5f440 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.d/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cbd93af7a9cb2f12d138aeec645b536ffeab8b65319843fca4aa76f84e82f99 +size 12534747 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.series b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.series new file mode 100644 index 000000000..44a49b5c2 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea41628ab66a94f43c9f2531b257b78cc19f23144664d6984cbc6e4282bf55f3 +size 5550 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-ext-force-1e-1.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-ext-force-1e-1.vtu new file mode 100644 index 000000000..f1eb34f63 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-ext-force-1e-1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3daad04cc2dfc057e0c2c691a26a7e57c46c353c7ea3d61b2cd338839935a88 +size 12524680 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-ext-force.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-ext-force.vtu new file mode 100644 index 000000000..9acab7ae3 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-ext-force.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18934620fdf008f4791c917f4173a153608579fe5bbd97c6e6f90336db196cd1 +size 12519667 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-act10.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-act10.vtu new file mode 100644 index 000000000..cb7d9e16c --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-act10.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a103b52a2d45001d22e084bfad8684dd95cb2746255042e3faf665dc5754195 +size 12676666 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-1.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-1.0.vtu new file mode 100644 index 000000000..b9780d014 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-1.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d66970b11560fcc72fc95d9f7d033c0a0b9f68fcccec70d31885c455b2ee2d8 +size 12702433 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-2.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-2.0.vtu new file mode 100644 index 000000000..85392b4ce --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-2.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c73175579504633fad5c18492b9ad02add38346cacd2681431f1be41e30962a +size 12701006 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-neo-hookean.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-neo-hookean.vtu new file mode 100644 index 000000000..1169dcd43 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-neo-hookean.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:887098bbf29a2324b740a439c4137a6ef160bb372416bd4935f641975087aea0 +size 12319912 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda3.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda3.vtu new file mode 100644 index 000000000..c8890149f --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d14f0c5b53eac03d3d8c78d66b003bb5eb7308d483a4cc19f5c9ecf592fd5eb +size 12337295 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda49.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda49.vtu new file mode 100644 index 000000000..294713a33 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda49.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:020e7770c678dd52afb268f43a03c68e65144402b66d9a2a83633d14d64ee0cf +size 12328695 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda9.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda9.vtu new file mode 100644 index 000000000..e66964c33 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-arch2-lambda9.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f573f2c12586ef8f967d9fa54e8af2bd09201b2b4e40739b3bfa5d1129b9ba7 +size 12333615 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3.vtu new file mode 100644 index 000000000..7759c0ec5 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ad3105104c99a170f421219d8566603ed7a960a20cc8650634070019bfd3cc7 +size 13365883 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49.vtu new file mode 100644 index 000000000..4f1791a21 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15f19acfbe5bdf5fd46dcd80bda02ca04b547f93376b18f315cbf0fa4cfe2913 +size 13363901 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9.vtu new file mode 100644 index 000000000..8d6dae3f4 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a646a62932614af02d9c167a7a5a13d7601589c0bc3c9f36e78911f4e0ff285a +size 13364551 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda3.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda3.vtu new file mode 100644 index 000000000..fb70c516d --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c37d81a019fee0beda65325b6a52f6c214b3da2be82357719220b10e79f2d451 +size 12338289 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda9.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda9.vtu new file mode 100644 index 000000000..610fb3891 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda9.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc1649c2b63f9b6b829c3f0e7a7436ab5d077b51020da7977f7b55617b71c6b7 +size 12336381 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-no-act.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-no-act.vtu new file mode 100644 index 000000000..85e2c186b --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-no-act.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5df00cc68a070945a9b40d8cf00b6133e37cddd754921b52bba893cab65723c0 +size 12321404 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean.vtu new file mode 100644 index 000000000..294713a33 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:020e7770c678dd52afb268f43a03c68e65144402b66d9a2a83633d14d64ee0cf +size 12328695 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch.vtu new file mode 100644 index 000000000..efcb69ae6 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ae12244700c29e4a4c645e3552cd5f5d67424955db46232eb8078240b9e5b7a +size 12702413 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-1e-1.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-1e-1.vtu new file mode 100644 index 000000000..ae7bfef01 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-1e-1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3a1b2f9a5610a5cac8217f68d0b6e51d7461c71b0e3421dccac51eda054debc +size 12717236 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-1e0.vtu new file mode 100644 index 000000000..8b6576b57 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c039bc4ca7f88afad64abe9577e05eb0ea5d8157e92ea575582b1834eec10fac +size 12720915 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0.vtu new file mode 100644 index 000000000..e4e7b1b1c --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7be9c28c04521fa5ad9c9f2a0b77ecdb0db40800643b0e60995a15dbdc9e0ef +size 13422752 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0.vtu new file mode 100644 index 000000000..9ced01e6c --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:511cfdfab46ac14ba9b6a4aeefe243795b277ce3b4d06d833b6c46f0fcd7e2c9 +size 12720883 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-1e0.vtu new file mode 100644 index 000000000..bc786adb5 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd0adfb76625fa83aa49997d5aec34de5a78532e2f3dee5daf3ec8a0d8833e4f +size 12335902 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0.vtu new file mode 100644 index 000000000..f456dc7e3 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4f8ac5d1b7559312878de039e4493595a449e5e7a91242f7e7ee90dda989ba1 +size 13272989 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-1e0.vtu new file mode 100644 index 000000000..28f42c3f0 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a296e6a0967f286439ed51e8ffe801c18428906c45d1c440ed9563b9c5e9de28 +size 13429372 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-5e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-5e0.vtu new file mode 100644 index 000000000..cbdc7734d --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-5e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc00f1e1115b6acb812f3e05d32c9a9715d714346c7c0e6140903b2cd49c919c +size 12335223 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-0-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-0-force-1e0.vtu new file mode 100644 index 000000000..a9ff26169 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-0-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dae3db453844e905f7e52869f1135eaa76cac417880a6e5640ffe1e33f332f5 +size 13428504 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0.vtu new file mode 100644 index 000000000..cdade25ff --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:721252ae7023594c1ebc56415d524df57214a04edc789014ea815115d465231b +size 13428711 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-2e-1-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-2e-1-force-1e0.vtu new file mode 100644 index 000000000..7fd963303 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-2e-1-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f8190b3fd1b7fd0548b7f57fee46d0175c84d75bec114180f62a4a4274746f +size 13429339 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu new file mode 100644 index 000000000..479505742 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55a226e2062fb7048d710ba84914f17d745ae4291c58ade88863894ee15f7112 +size 13429408 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0.vtu new file mode 100644 index 000000000..520fd0f7b --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3491c6f12c1007cbb4729814154106a3d29c5e6f071f00b7ae1f00d40b61147 +size 17005453 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0.vtu new file mode 100644 index 000000000..fa6a34cd9 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e10c89996933a7489f9c965e5b8697b403b37ba5932861f90aeb17e078e491e +size 13429264 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0.vtu new file mode 100644 index 000000000..714c98dc3 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f953957282528c2af97d415562ec40d7d573e4fa7af66aefb0283d518765388 +size 17085216 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-5e0-prestrain-2.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-5e0-prestrain-2.0.vtu new file mode 100644 index 000000000..2f9332682 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-5e0-prestrain-2.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50b9098fdca0d93c3717f482930e1cc99aab7c78fde6e35cf2e114dbadacf6ac +size 17116484 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-prestrain-2.0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-prestrain-2.0.vtu new file mode 100644 index 000000000..cf443cd6f --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-prestrain-2.0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbe613b2ca4ebaf760711d39aae27671abbc728561417b71660b529e4d5ebdcf +size 17121152 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0.vtu new file mode 100644 index 000000000..2daf1725c --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c04b4049ff78d03201570fd52b97e17d0735aafa002fe9a2241438862280c7a +size 13429136 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2.vtu new file mode 100644 index 000000000..351cfc75a --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27728da12561430d8ee11e61fa7b17c8703266d102d1700a396290f70c79c7d5 +size 13361113 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-ramped-5e-2.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-ramped-5e-2.vtu new file mode 100644 index 000000000..06e93e40b --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-ramped-5e-2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26b5db0b052f88135002cc86357a31b0d6a20fb864bf3067921782905b75418b +size 12291126 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force.vtu new file mode 100644 index 000000000..9702ce4a9 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-ext-force.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:004a19833d9a233bd7d4fe3f1c843256fecba32aab2e6ce8057ef890b877e159 +size 12721041 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu new file mode 100644 index 000000000..703e31043 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c54ba0f42ffbbb6ded2de132b79288f3d1e7f0f4f31dda078ddc7b258eb78ae9 +size 12275452 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu new file mode 100644 index 000000000..561f9b1ae --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85782d359ccca3bf643d873058b6a2cf2d844c924f131eeca8d358278441c2f1 +size 12659776 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu new file mode 100644 index 000000000..09007d96b --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25cf836886a979f8c877c01a027d67243c53e9a631e454664e74d2707dda7db8 +size 4679665 diff --git a/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0.vtu b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0.vtu new file mode 100644 index 000000000..7080beabd --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d097641e1ec5c0146d9940d86fa46346fa18176c693d7bf355cc49e6e7ebfae +size 4679528 diff --git a/exp/2026/01/28/smas/data/20-forward-smas8x-muscle8x-prestrain.vtu b/exp/2026/01/28/smas/data/20-forward-smas8x-muscle8x-prestrain.vtu new file mode 100644 index 000000000..c92a35932 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-smas8x-muscle8x-prestrain.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dee5b3314c7c87c96d2b25f6285373faa98dcebb3fb8f0a4fe411f7711b3307 +size 12365230 diff --git a/exp/2026/01/28/smas/data/20-forward-subface-base-act2.vtp b/exp/2026/01/28/smas/data/20-forward-subface-base-act2.vtp new file mode 100644 index 000000000..18390a936 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-subface-base-act2.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55accf91d72c9b55f6ef4c1646724f9d7c37ff13c891d665171073b43e153967 +size 477137 diff --git a/exp/2026/01/28/smas/data/20-forward-subface-base-act5.vtp b/exp/2026/01/28/smas/data/20-forward-subface-base-act5.vtp new file mode 100644 index 000000000..730fbcc65 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-subface-base-act5.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87255c26cb7b7dc6fbaa5977364f4c4af68e39f35ef9ea497a422ce85dcd3c00 +size 477185 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-act2.vtu new file mode 100644 index 000000000..e970cd311 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22b72aa020eaa1b5bffbb8a54e5642cc319d9a645cb74205e295b3fb776b317c +size 13157519 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-mu1e2-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-mu1e2-act2.vtu new file mode 100644 index 000000000..6efc59c6f --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-mu1e2-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f0e8af680e92de088eaa5cb010e90dab49856868831c9cb279dc1be6d317eea +size 12203309 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-mu1e3-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-mu1e3-act2.vtu new file mode 100644 index 000000000..076db8212 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-mu1e3-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a027d6af3792a44354e27788d447ebb6e81fc1dfa4d6bd1da12c556594b03b88 +size 12205110 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu new file mode 100644 index 000000000..62b2d4465 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b71dc61fc40ec493b13b45a4b760b4c8006b3f4538c88a823294f66be3282096 +size 13118417 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas04-muscle02-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas04-muscle02-act2.vtu new file mode 100644 index 000000000..3964a47ed --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas04-muscle02-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5a5b3ac1ff4a046326bdff3cf46364299ca61abc088375415890945ae538b18 +size 13150027 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas04-muscle02-act3.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas04-muscle02-act3.vtu new file mode 100644 index 000000000..4cc28036d --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas04-muscle02-act3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:656e5b0622115dc6edf0cf2f3632e48127396459c25c582247a0851c9cfb554e +size 12299709 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas06-muscle02-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas06-muscle02-act2.vtu new file mode 100644 index 000000000..b7c3b8ba2 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas06-muscle02-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f422c6237abec1ed878cc637fff3481008a659892a474276979d869ed0506d8 +size 13152338 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas06-muscle02-act3.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas06-muscle02-act3.vtu new file mode 100644 index 000000000..a44572d07 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas06-muscle02-act3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:364871bb64857ff915610900234393adb6f182d458b821c7346d14f9cc7f04f4 +size 12303670 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act2.vtu new file mode 100644 index 000000000..0cf8b2870 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8daf90c5a4854337c5d2777e907c529627c9fd0574568aadc3271557a52bc669 +size 13520003 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act3.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act3.vtu new file mode 100644 index 000000000..18892c8a7 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0467e6f98f3e61ffec2247bd7ada6ef7bea429470e387947d59fe6bd9ec016c4 +size 12670255 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act4.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act4.vtu new file mode 100644 index 000000000..933fb747a --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas28-muscle46-act4.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1271de05be51ef9aae3b9b0b95e484ec2e970ab64aa39dd42e5c6f20692867f8 +size 12670665 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas37-muscle46-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas37-muscle46-act2.vtu new file mode 100644 index 000000000..3cff32bb9 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas37-muscle46-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbafe3ef503d5e867d7bbda93f79bbe0a73be9383a44314e21785bf97f5873ec +size 13521478 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e1.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e1.vtu new file mode 100644 index 000000000..6c1cc5327 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eee37cb78d4b1894323390d6f3f83c592d73be17e492cae31095c6fba83b3fca +size 13396795 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e2.vtu new file mode 100644 index 000000000..e53b61c6a --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcb411e935873157aa4b033242d19db7f27e7f307f4fa2d9acdf03fccadcdae2 +size 13404434 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e3.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e3.vtu new file mode 100644 index 000000000..32d7920c8 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2-stiff-ratio1e3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:295b01ae89044965205189f88bd8fddd3281c6baa6ac536e1f0eb20fe615dee5 +size 13409998 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2.vtu new file mode 100644 index 000000000..45d7605a4 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3534142fe047ca7f4bfaccb3fecdce3d39e4a8ca8245867574a0e7802f7247b +size 13404135 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act3.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act3.vtu new file mode 100644 index 000000000..0e12a22d7 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas46-muscle46-act3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb547366c27f21116b226832072d488c031eb6d9d7d4e8be0ecb0af2bbf28452 +size 12553115 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas8x-muscle8x-act2.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas8x-muscle8x-act2.vtu new file mode 100644 index 000000000..19696c064 --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas8x-muscle8x-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9040931ec37830fdf0a0ecf943c30c6fb8218d049d41f282435fdd54df62b954 +size 13125978 diff --git a/exp/2026/01/28/smas/data/20-forward-whole-smas8x-muscle8x-act3.vtu b/exp/2026/01/28/smas/data/20-forward-whole-smas8x-muscle8x-act3.vtu new file mode 100644 index 000000000..bf922206d --- /dev/null +++ b/exp/2026/01/28/smas/data/20-forward-whole-smas8x-muscle8x-act3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b89b55abfae1bfb72a168b24eecd7c02733a871b27811c06cc7beaebc5ad0192 +size 12274370 diff --git a/exp/2026/01/28/smas/data/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.json b/exp/2026/01/28/smas/data/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.json new file mode 100644 index 000000000..c09521669 --- /dev/null +++ b/exp/2026/01/28/smas/data/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.json @@ -0,0 +1,83 @@ +{ + "forward": { + "result": "secondary_success", + "success": true, + "n_steps": 1176, + "best_decrease": Infinity, + "relative_decrease": 7.90006379247643e-05, + "grad_norm": 0.008272669278085232 + }, + "initial_spectrum": { + "n_free": 186441, + "hess_diag_min": 0.20946960151195526, + "hess_diag_max": 930.2356567382812, + "hess_diag_mean": 80.39814774171128, + "hess_diag_abs_min": 0.20946960151195526, + "hess_diag_nonpositive": 0, + "preconditioner_min": 0.0010749964276328683, + "preconditioner_max": 4.773962497711182, + "raw_smallest_algebraic": { + "converged": true, + "values": [ + -0.1147980783677198, + -0.10779722417016065 + ] + }, + "raw_largest_algebraic": { + "converged": true, + "values": [ + 1463.8351435231455, + 1552.2768774078584 + ] + }, + "preconditioned_smallest_algebraic": { + "converged": true, + "values": [ + -0.0012331862994487271, + -0.0012096817992747976 + ] + }, + "preconditioned_largest_algebraic": { + "converged": true, + "values": [ + 3.192968666332833, + 3.2774269768285915 + ] + } + }, + "final_spectrum": { + "n_free": 186441, + "hess_diag_min": 0.13700281083583832, + "hess_diag_max": 1362.3682861328125, + "hess_diag_mean": 87.41903446997196, + "hess_diag_abs_min": 0.13700281083583832, + "hess_diag_nonpositive": 0, + "preconditioner_min": 0.0007340158917941153, + "preconditioner_max": 7.2991204261779785, + "raw_smallest_algebraic": { + "converged": false, + "values": [] + }, + "raw_largest_algebraic": { + "converged": true, + "values": [ + 2476.6850311587636, + 2503.9605893149487 + ] + }, + "preconditioned_smallest_algebraic": { + "converged": true, + "values": [ + 0.0003776515934581405, + 0.00038774403042991573 + ] + }, + "preconditioned_largest_algebraic": { + "converged": true, + "values": [ + 3.9364183792244156, + 4.17999608503905 + ] + } + } +} diff --git a/exp/2026/01/28/smas/data/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.vtu b/exp/2026/01/28/smas/data/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.vtu new file mode 100644 index 000000000..37aef1692 --- /dev/null +++ b/exp/2026/01/28/smas/data/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a2a08ef143fde0a464d9894a26b989ce9cf6eaa9c40c77d43afc04ab0cfacc1 +size 12336381 diff --git a/exp/2026/01/28/smas/data/21-forward-whole-act2.vtu b/exp/2026/01/28/smas/data/21-forward-whole-act2.vtu new file mode 100644 index 000000000..1659b092e --- /dev/null +++ b/exp/2026/01/28/smas/data/21-forward-whole-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab583da9a91cc68cdde12c5517e2b3e491f4355bc8c5730926120ddd6d7ca39c +size 12203211 diff --git a/exp/2026/01/28/smas/data/21-forward-whole-act3.vtu b/exp/2026/01/28/smas/data/21-forward-whole-act3.vtu new file mode 100644 index 000000000..0bbc7b83c --- /dev/null +++ b/exp/2026/01/28/smas/data/21-forward-whole-act3.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:734555a139bef2b58a849b16bc36ac8a124062da85ca88b26536d577c487e47a +size 11957089 diff --git a/exp/2026/01/28/smas/data/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.json b/exp/2026/01/28/smas/data/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.json new file mode 100644 index 000000000..0c0181ab2 --- /dev/null +++ b/exp/2026/01/28/smas/data/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.json @@ -0,0 +1,656 @@ +{ + "forward": { + "result": "stagnation", + "success": false, + "n_steps": 1033, + "best_decrease": Infinity, + "relative_decrease": 4.939491191180423e-05, + "grad_norm": 0.4959976077079773 + }, + "initial_spectrum": { + "n_free": 186441, + "hess_diag_abs_min": 0.583930253982544, + "hess_diag_max": 2319.68115234375, + "hess_diag_mean": 258.1804101061124, + "hess_diag_min": 0.583930253982544, + "hess_diag_nonpositive": 0, + "preconditioner_inverse_max": 2319.6812728260975, + "preconditioner_inverse_min": 0.583930232495005, + "preconditioner_max": 1.7125333547592163, + "preconditioner_min": 0.00043109370744787157, + "lambda_max": { + "converged": true, + "values": [ + 4419.203843638775, + 4443.239202002824 + ] + }, + "lambda_min": { + "coarse": { + "converged": false, + "values": [] + }, + "converged": true, + "method": "shift_invert_minres", + "shift_invert_attempts": [ + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": 0.0 + }, + "sigma": 0.0, + "values": [ + 0.14674880545659086, + 0.15264672030937723 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -0.25818041010611237 + }, + "sigma": -0.25818041010611237, + "values": [ + 0.09755463480037652, + 0.10357652396579858 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -258.1804101061124 + }, + "sigma": -258.1804101061124, + "values": [ + 0.5077696587438822, + 2.987401157229556 + ] + } + ], + "values": [ + 0.09755463480037652, + 0.10357652396579858 + ] + }, + "preconditioned_lambda_max": { + "converged": true, + "values": [ + 3.608868195010647, + 3.6569173306363125 + ] + }, + "preconditioned_lambda_min": { + "coarse": { + "converged": true, + "values": [ + -7.189357053039005e-05, + -5.627612296476136e-05 + ] + }, + "converged": true, + "method": "shift_invert_minres", + "shift_invert_attempts": [ + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -0.00107189357053039 + }, + "sigma": -0.00107189357053039, + "values": [ + 0.009205522569822518, + 0.010560954283082815 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": 0.0 + }, + "sigma": 0.0, + "values": [ + 0.009264496149953533, + 0.011093440307637665 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -0.0010000000037579538 + }, + "sigma": -0.0010000000037579538, + "values": [ + 0.008750924102176098, + 0.011075709714569764 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -1.0000000037579537 + }, + "sigma": -1.0000000037579537, + "values": [ + 0.006902958721924257, + 0.019097754437136683 + ] + } + ], + "values": [ + 0.006902958721924257, + 0.008750924102176098 + ] + } + }, + "final_spectrum": { + "n_free": 186441, + "hess_diag_abs_min": 0.3685203790664673, + "hess_diag_max": 5567.62939453125, + "hess_diag_mean": 275.1657734099753, + "hess_diag_min": 0.3685203790664673, + "hess_diag_nonpositive": 0, + "preconditioner_inverse_max": 5567.629202145855, + "preconditioner_inverse_min": 0.36852037842911517, + "preconditioner_max": 2.7135541439056396, + "preconditioner_min": 0.00017960966215468943, + "lambda_max": { + "converged": true, + "values": [ + 9501.312981632796, + 9843.681307134502 + ] + }, + "lambda_min": { + "coarse": { + "converged": false, + "values": [] + }, + "converged": true, + "method": "shift_invert_minres", + "shift_invert_attempts": [ + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": 0.0 + }, + "sigma": 0.0, + "values": [ + 0.1301981232711607, + 0.141023666149816 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -0.27516577340997533 + }, + "sigma": -0.27516577340997533, + "values": [ + 0.08717459530674465, + 0.1012062012788077 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -275.1657734099753 + }, + "sigma": -275.1657734099753, + "values": [ + 0.4790595356508902, + 3.1024173191239584 + ] + } + ], + "values": [ + 0.08717459530674465, + 0.1012062012788077 + ] + }, + "preconditioned_lambda_max": { + "converged": true, + "values": [ + 4.568287743331999, + 4.619993555290477 + ] + }, + "preconditioned_lambda_min": { + "coarse": { + "converged": true, + "values": [ + 0.00013429135657475226, + 0.00013645616089826725 + ] + }, + "converged": true, + "method": "shift_invert_minres", + "shift_invert_attempts": [ + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -0.0008657086434252477 + }, + "sigma": -0.0008657086434252477, + "values": [ + 0.011965425639557992, + 0.013998492336675317 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": 0.0 + }, + "sigma": 0.0, + "values": [ + 0.011519867116412095, + 0.013825374125613124 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -0.0010000000038310382 + }, + "sigma": -0.0010000000038310382, + "values": [ + 0.011304328683818763, + 0.014184898047141483 + ] + }, + { + "converged": true, + "minres": { + "info_history": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "maxiter": 40, + "n_calls": 21, + "n_failures": 0, + "rtol": 0.01, + "shift": -1.0000000038310382 + }, + "sigma": -1.0000000038310382, + "values": [ + 0.00693303217358987, + 0.0193849406125699 + ] + } + ], + "values": [ + 0.00693303217358987, + 0.011304328683818763 + ] + } + } +} diff --git a/exp/2026/01/28/smas/data/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.vtu b/exp/2026/01/28/smas/data/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.vtu new file mode 100644 index 000000000..02f4cfcd1 --- /dev/null +++ b/exp/2026/01/28/smas/data/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3efe58d217c6a7ab07ec39f5abb86351308e762fc4c0035841ac8c35e3f115ea +size 12333938 diff --git a/exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-prestrain.vtu b/exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-prestrain.vtu new file mode 100644 index 000000000..863de0b17 --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-prestrain.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2520d3c3523f9f27f89de0224669625a9b4a646c3f2f1bb55052c6e884215b41 +size 15720389 diff --git a/exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-stable-neo-hookean.vtu b/exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-stable-neo-hookean.vtu new file mode 100644 index 000000000..618c5e040 --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-stable-neo-hookean.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50c16b8db184cc7a7ae69980046c218be709daa49890d35c9c408aac8ef02031 +size 15165273 diff --git a/exp/2026/01/28/smas/data/30-inverse-unreachable-arap-hessian.vtu b/exp/2026/01/28/smas/data/30-inverse-unreachable-arap-hessian.vtu new file mode 100644 index 000000000..bcfa7bdcf --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse-unreachable-arap-hessian.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9291e4bb73430a6aaf1e68659570bdf5fe71ea161b2de247c3f1693744d3e3b8 +size 15413027 diff --git a/exp/2026/01/28/smas/data/30-inverse-unreachable-smas46-muscle46-stable-neo-hookean.vtu b/exp/2026/01/28/smas/data/30-inverse-unreachable-smas46-muscle46-stable-neo-hookean.vtu new file mode 100644 index 000000000..2c48fed77 --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse-unreachable-smas46-muscle46-stable-neo-hookean.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3984520d410f0f4fba186dcbc26d11b5b2c7ae7e16c492a26bd63f5d92e9f61 +size 15062556 diff --git a/exp/2026/01/28/smas/data/30-inverse-unreachable-whole-smas02-muscle02-act2.vtu b/exp/2026/01/28/smas/data/30-inverse-unreachable-whole-smas02-muscle02-act2.vtu new file mode 100644 index 000000000..7c7a0fead --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse-unreachable-whole-smas02-muscle02-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6affd102f2ad06f71d8afc63047ca352a50b71a19f2efa42f212ef1ca98009 +size 14671944 diff --git a/exp/2026/01/28/smas/data/30-inverse-whole-smas02-muscle02-act2.vtu b/exp/2026/01/28/smas/data/30-inverse-whole-smas02-muscle02-act2.vtu new file mode 100644 index 000000000..95c88edeb --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse-whole-smas02-muscle02-act2.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6d358ccb4eefa752b642d51e0f8cc31ae4b7a83665338962e51aa901b4465e2 +size 14988755 diff --git a/exp/2026/01/28/smas/data/30-inverse.vtu b/exp/2026/01/28/smas/data/30-inverse.vtu new file mode 100644 index 000000000..37e47e20a --- /dev/null +++ b/exp/2026/01/28/smas/data/30-inverse.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1d61e620a720dfd5d757a31b75b0d8ede4e451ba2c6b5a361bcb6907e113fd6 +size 13478316 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-activation-error.png new file mode 100644 index 000000000..ecac52248 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f9b9f0e08404563cce5c9a59f62a24dcb3b75d95a76ca2d5551405c4f908e88 +size 11407 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-adjoint-relative-residual.png new file mode 100644 index 000000000..53cedafb1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1a707560e7abc38501e62df217e3b95a5ca806ae985ca570c47a861a1851953 +size 12676 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-absolute.png new file mode 100644 index 000000000..61822491f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a73be986794109e3ed3992f51f62ee69ea4ad0869ee96410025f6858bd42422d +size 14216 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-relative.png new file mode 100644 index 000000000..115881a8c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2939298a34ccfd0f73becb2dd6f3516973dd9cf31bca8aa274c30c17401b9bc6 +size 13878 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-inverse-grad-absolute.png new file mode 100644 index 000000000..f7f15c084 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0580782b14abf63e86c606c25609c4c3bf04cdbf7b8003592eb63130ddf9e1d +size 13335 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-loss.png new file mode 100644 index 000000000..54dd373fc --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:080da03d8943be47b7adca011d8de97634a671b7cdaadea8767fd0903f2427ee +size 8805 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-point-to-point-l2.png new file mode 100644 index 000000000..6d0357027 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54c66982982d195c621e704911e17b39e6aa6f15795ed5261b8aa959829ee255 +size 10371 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-relative-activation.png new file mode 100644 index 000000000..e10ef96e4 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11c4b6eedb39d324dcf00a841010f7a00c683817cd4fc7b26a99a8f7d382154d +size 19567 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.csv b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.csv new file mode 100644 index 000000000..676cb401b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.csv @@ -0,0 +1,2 @@ +step,log_relative_activation,relative_activation,actual_activation_x,actual_activation_y,actual_activation_z,activation_error,loss,point_to_point_l2,point_to_point_rmse,point_to_point_inf,activation_diff_l2,activation_diff_inf,inverse_grad,inverse_grad_abs,adjoint_success,adjoint_relative_residual,forward_success,forward_result,forward_n_steps,forward_grad_norm,forward_relative_grad_norm,forward_objective,forward_best_objective,finite_outputs +1,0.6830968447064438,1.98,2.574,0.5917159763313609,1.3,-0.020000000000000018,0.002189452873991038,1.6774851341660875,0.006314729847785062,0.026894493468048175,2.7709218682597574,0.026000000000000245,-0.42706544630112797,0.42706544630112797,True,9.79855892248193e-07,True,target_converged,783,0.00039279373133560964,9.884358448347973e-06,1481.1424852869957,1481.1424852869957,True diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-activation-error.png new file mode 100644 index 000000000..ecac52248 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f9b9f0e08404563cce5c9a59f62a24dcb3b75d95a76ca2d5551405c4f908e88 +size 11407 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-adjoint-relative-residual.png new file mode 100644 index 000000000..53cedafb1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1a707560e7abc38501e62df217e3b95a5ca806ae985ca570c47a861a1851953 +size 12676 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-forward-grad-norm-absolute.png new file mode 100644 index 000000000..61822491f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a73be986794109e3ed3992f51f62ee69ea4ad0869ee96410025f6858bd42422d +size 14216 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-forward-grad-norm-relative.png new file mode 100644 index 000000000..115881a8c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2939298a34ccfd0f73becb2dd6f3516973dd9cf31bca8aa274c30c17401b9bc6 +size 13878 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-inverse-grad-absolute.png new file mode 100644 index 000000000..f7f15c084 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0580782b14abf63e86c606c25609c4c3bf04cdbf7b8003592eb63130ddf9e1d +size 13335 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-loss.png new file mode 100644 index 000000000..54dd373fc --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:080da03d8943be47b7adca011d8de97634a671b7cdaadea8767fd0903f2427ee +size 8805 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-point-to-point-l2.png new file mode 100644 index 000000000..6d0357027 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54c66982982d195c621e704911e17b39e6aa6f15795ed5261b8aa959829ee255 +size 10371 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-relative-activation.png new file mode 100644 index 000000000..e10ef96e4 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.d/000001-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11c4b6eedb39d324dcf00a841010f7a00c683817cd4fc7b26a99a8f7d382154d +size 19567 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.json b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.json new file mode 100644 index 000000000..39971bce3 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.json @@ -0,0 +1,29 @@ +[ + { + "step": 1, + "log_relative_activation": 0.6830968447064438, + "relative_activation": 1.98, + "actual_activation_x": 2.574, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.020000000000000018, + "loss": 0.002189452873991038, + "point_to_point_l2": 1.6774851341660875, + "point_to_point_rmse": 0.006314729847785062, + "point_to_point_inf": 0.026894493468048175, + "activation_diff_l2": 2.7709218682597574, + "activation_diff_inf": 0.026000000000000245, + "inverse_grad": -0.42706544630112797, + "inverse_grad_abs": 0.42706544630112797, + "adjoint_success": true, + "adjoint_relative_residual": 9.79855892248193e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 783, + "forward_grad_norm": 0.00039279373133560964, + "forward_relative_grad_norm": 9.884358448347973e-06, + "forward_objective": 1481.1424852869957, + "forward_best_objective": 1481.1424852869957, + "finite_outputs": true + } +] diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.json b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.json new file mode 100644 index 000000000..94d53e89e --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.json @@ -0,0 +1,41 @@ +{ + "case": "easy", + "backend": "cuda:0", + "forward_success": true, + "forward_result": "target_converged", + "forward_grad_norm": 0.00039279373133560964, + "inverse_lr": 0.05, + "best_inverse_step": 1, + "metrics_json": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.json", + "metrics_csv": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.csv", + "series": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.series", + "initial_log_relative_activation": 0.6830968447064438, + "initial_relative_activation": 1.98, + "target_relative_activation": 2.0, + "target_log_relative_activation": 0.6931471805599453, + "solved_log_relative_activation": 0.6830968447064438, + "solved_relative_activation": 1.98, + "relative_activation_error": -0.020000000000000018, + "best_inverse_loss": 0.002189452873991038, + "smas_prestrain": 1.3, + "target_actual_activation_x": 2.6, + "target_actual_activation_y": 0.5917159763313609, + "target_actual_activation_z": 1.3, + "solved_actual_activation_x": 2.574, + "solved_actual_activation_y": 0.5917159763313609, + "solved_actual_activation_z": 1.3, + "point_to_point_l2": 1.6774851341660875, + "point_to_point_inf": 0.026894493468048175, + "activation_diff_l2": 2.7709218682597574, + "activation_diff_inf": 0.026000000000000245, + "metrics_plots": { + "loss": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-loss.png", + "point-to-point-l2": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-point-to-point-l2.png", + "relative-activation": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-relative-activation.png", + "activation-error": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-activation-error.png", + "forward-grad-norm-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-absolute.png", + "forward-grad-norm-relative": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-relative.png", + "adjoint-relative-residual": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-adjoint-relative-residual.png", + "inverse-grad-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-inverse-grad-absolute.png" + } +} diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu new file mode 100644 index 000000000..c6b69420f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c1be52074cb6bd0b954b99178d66b25575d8f6fbd8923c06deecff114261f69 +size 16323630 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy_000000.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy_000000.vtu new file mode 100644 index 000000000..c6b69420f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c1be52074cb6bd0b954b99178d66b25575d8f6fbd8923c06deecff114261f69 +size 16323630 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.series b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.series new file mode 100644 index 000000000..20c371de8 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a2e60d50ab0c20036ac7a985f3bb7562d18e9ff54dea3d43205304d3de4b26d +size 202 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-target.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-target.vtu new file mode 100644 index 000000000..f6feebadb --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a0d0d4a372b84356f8161566ecc93bfa0bbd397d23f650d969e27ec6734b782 +size 13423844 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-activation-error.png new file mode 100644 index 000000000..e6db1856b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe35e8a1f5b9ed041fe1ad64d4c2dbff622a6d6f5cf8994b6943a7976edbad4f +size 19152 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-adjoint-relative-residual.png new file mode 100644 index 000000000..453484886 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a945987919720b2969d6f22c16cc9d63f78f7e4c4fcd58a56fe83fd7c52ab365 +size 32670 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-absolute.png new file mode 100644 index 000000000..a70004b05 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38f635f038c1c0cb7bd0bfbb5b4a9ac12c71af1391c7a49cbb7aff16d57e14e7 +size 22075 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-relative.png new file mode 100644 index 000000000..680819957 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abd47b0e4838fc69b22eadb4171864982e389b4c8c942b8bb1a7f2713eb5d041 +size 33812 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-inverse-grad-absolute.png new file mode 100644 index 000000000..a2bbc21a0 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e22e5d1ca83529b17f68a5675a2917b3e56404481639d30572ef5cf1e381f65 +size 23775 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-loss.png new file mode 100644 index 000000000..734661a65 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66961d527a907747b5a7fd89f18d90c7cb41c9a0878bf07cc4f92eacf48503e +size 17952 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-point-to-point-l2.png new file mode 100644 index 000000000..66a8c92c5 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04ba6eaa5299f9062eeb582ed240b113f5a2db4e7f976b2de6537c5df613489a +size 19061 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-relative-activation.png new file mode 100644 index 000000000..69516efa3 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:097a5c3ef2669c71c6e88d64b9af3d2503659cc025dec0278e0046721598a87e +size 23784 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.csv b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.csv new file mode 100644 index 000000000..f726fa3c6 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.csv @@ -0,0 +1,16 @@ +step,log_relative_activation,relative_activation,actual_activation_x,actual_activation_y,actual_activation_z,activation_error,loss,point_to_point_l2,point_to_point_rmse,point_to_point_inf,activation_diff_l2,activation_diff_inf,inverse_grad,inverse_grad_abs,adjoint_success,adjoint_relative_residual,forward_success,forward_result,forward_n_steps,forward_grad_norm,forward_relative_grad_norm,forward_objective,forward_best_objective,finite_outputs +1,0.0,1.0,1.3,0.5917159763313609,1.3,-1.0,5.930123553874659,86.94591920250177,0.3272994674877315,1.468124728994359,138.54609341298652,1.3,-10.356870422848518,10.356870422848518,True,9.976663539042553e-07,True,target_converged,1110,0.0099676741475024,9.935246132601607e-06,1029.8973860628137,1029.8973860628137,True +2,0.04999999995172288,1.0512710963252716,1.3666524252228531,0.5917159763313609,1.3,-0.9487289036747284,5.408415184623387,83.04751142252249,0.3126242900654824,1.3990624717408309,131.44268331211924,1.233347574777147,-10.576370922058649,10.576370922058649,True,9.89123910599094e-07,True,target_converged,656,0.0014389242790439555,9.95938927368902e-06,1047.659675517216,1047.659675517216,True +3,0.10002458152104376,1.1051980851917305,1.4367575107492496,0.5917159763313609,1.3,-0.8948019148082695,4.874973863022609,78.85835532270468,0.2968546188345651,1.3257065907507362,123.97130967514579,1.1632424892507505,-10.73989279360051,10.73989279360051,True,9.972666546117275e-07,True,target_converged,660,0.0014872664666230578,9.952489995119348e-06,1067.8117755331102,1067.8117755331102,True +4,0.15008187285060745,1.1619293693037573,1.5105081800948845,0.5917159763313609,1.3,-0.8380706306962427,4.334764268227267,74.37211241006811,0.2799665931538347,1.2479956091385103,116.11141188712222,1.0894918199051156,-10.829802730671515,10.829802730671515,True,9.91114818032733e-07,True,target_converged,670,0.0015056425255766384,9.74568492272402e-06,1090.4003889123026,1090.4003889123026,True +5,0.20017067683146117,1.2216112411039686,1.5880946134351592,0.5917159763313609,1.3,-0.7783887588960314,3.7920251906135296,69.57034046494374,0.2618907890787021,1.1657313558885223,107.84272170162826,1.0119053865648409,-10.824552336733547,10.824552336733547,True,9.575093847400924e-07,True,target_converged,672,0.0015090033038250897,9.454522383119664e-06,1115.466674916682,1115.466674916682,True +6,0.25027663631343633,1.2843806738816272,1.6696948760461154,0.5917159763313609,1.3,-0.7156193261183728,3.252230365156253,64.43694626724522,0.2425666252453408,1.0787519914182537,99.14626200453453,0.9303051239538846,-10.700559891022992,10.700559891022992,True,9.383763370358093e-07,True,target_converged,678,0.0016111485151538503,9.781645272200915e-06,1143.0399456293942,1143.0399456293942,True +7,0.30036713653604724,1.3503544810471224,1.7554608253612591,0.5917159763313609,1.3,-0.6496455189528776,2.7222818189522235,58.960505455942226,0.22195109575633892,0.9869658276986808,90.00584875417353,0.844539174638741,-10.43278116768527,10.43278116768527,True,9.671652355290572e-07,True,target_converged,682,0.0016439654687723827,9.686639839903982e-06,1173.129140796555,1173.129140796555,True +8,0.35038436759435154,1.4196130970119825,1.8454970261155772,0.5917159763313609,1.3,-0.5803869029880175,2.210586716352338,53.13649773492541,0.2000271843960644,0.8903840210696966,80.41033807705185,0.7545029738844229,-9.996144138789592,9.996144138789592,True,9.627933565474003e-07,True,target_converged,696,0.0016737249296821593,9.592389695211454e-06,1205.7113463781952,1205.7113463781952,True +9,0.4002359535026379,1.4921767404352324,1.939829762565802,0.5917159763313609,1.3,-0.5078232595647676,1.7270706860814107,46.97130109561815,0.17681890049371474,0.7891741313511458,70.35692875694765,0.660170237434198,-9.368167468466272,9.368167468466272,True,9.922154631276698e-07,True,target_converged,708,0.001762329595706691,9.854315987101398e-06,1240.7164855166961,1240.7164855166961,True +10,0.4497826342361647,1.5679713251610625,2.0383627227093815,0.5917159763313609,1.3,-0.4320286748389375,1.2827681666757047,40.48404232103142,0.1523982449660858,0.6836936651844691,59.85588514132422,0.5616372772906186,-8.53141304455209,8.53141304455209,True,9.73553575341662e-07,True,target_converged,724,0.0018241587162051876,9.993967271770547e-06,1278.0072671051626,1278.0072671051626,True +11,0.4988223526496632,1.6467808012828402,2.1408150416676923,0.5917159763313609,1.3,-0.3532191987171598,0.8893275788994323,33.710792633422926,0.12690100442564747,0.5745510607491464,48.93714010072788,0.45918495833230777,-7.47647148076911,7.47647148076911,True,9.887212623860353e-07,True,target_converged,738,0.001814612218242801,9.797487145324404e-06,1317.3534424170105,1317.3534424170105,True +12,0.5470705003180485,1.7281828838068471,2.2466377489489013,0.5917159763313609,1.3,-0.27181711619315285,0.5583295627174117,26.712435654082704,0.10055636935091479,0.46469401322795045,37.65919957134519,0.35336225105109875,-6.206093656940998,6.206093656940998,True,9.850441669516964e-07,True,target_converged,753,0.0018135395808724685,9.726392605035377e-06,1358.3999852427635,1358.3999852427635,True +13,0.5941375406038936,1.8114679534914673,2.3549083395389077,0.5917159763313609,1.3,-0.18853204650853272,0.29989450817156205,19.580083426404762,0.07370732217922468,0.35535588156408604,26.120378526912695,0.24509166046109243,-4.738438711808987,4.738438711808987,True,9.871588288317616e-07,True,target_converged,765,0.0018342526523512242,9.877546793898363e-06,1400.6306943379611,1400.6306943379611,True +14,0.6395073776475593,1.8955468605109858,2.4642109186642815,0.5917159763313609,1.3,-0.10445313948901425,0.1210671219718922,12.449166715589032,0.04686367887132578,0.2465936704094498,14.471574420924687,0.13578908133571854,-3.1103347889128465,3.1103347889128465,True,9.924213680506066e-07,True,target_converged,783,0.0018052015260810505,9.90364900509931e-06,1443.3319537127056,1443.3319537127056,True +15,0.6825242883930449,1.978866662980064,2.5725266618740834,0.5917159763313609,1.3,-0.021133337019936027,0.02387088048038924,5.570182962905414,0.02096841271321815,0.14128124170838663,2.927941284892168,0.02747333812591668,-1.3786166501525947,1.3786166501525947,True,9.837965603206206e-07,True,target_converged,788,0.0017483926580211303,9.964492437302642e-06,1485.5675728610533,1485.5675728610533,True diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-activation-error.png new file mode 100644 index 000000000..f8167e6b2 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21809c0e07de437e52c11e7c5cfb0f77a104e5b00c14ddf49c07dbaa4ffb1aa1 +size 12068 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-adjoint-relative-residual.png new file mode 100644 index 000000000..53cedafb1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1a707560e7abc38501e62df217e3b95a5ca806ae985ca570c47a861a1851953 +size 12676 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-forward-grad-norm-absolute.png new file mode 100644 index 000000000..9cd45f6d5 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f4eea283bd5811a1dfe3938c1ef4289b07c19e90a36cd20a6a977cce770647b +size 14260 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-forward-grad-norm-relative.png new file mode 100644 index 000000000..115881a8c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2939298a34ccfd0f73becb2dd6f3516973dd9cf31bca8aa274c30c17401b9bc6 +size 13878 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-inverse-grad-absolute.png new file mode 100644 index 000000000..2a7b5380b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc552768baf96ae9235cb914868bfb85e5794ebda2c04fcac3d4c6ed5970424 +size 13320 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-loss.png new file mode 100644 index 000000000..f09329c98 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a19e4a9bb9e67f481a9d31d7c7d76dde6cb4175f87d62b30d441a1a495378fa8 +size 8662 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-point-to-point-l2.png new file mode 100644 index 000000000..b8cbf1750 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c016d11a41aa8532e16af9b075198c7f6b3e488b0e4288c41b24e7944f7bd3b +size 10369 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-relative-activation.png new file mode 100644 index 000000000..fd7894946 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000001-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3ae3e80b6e3b95b52970506d59b384efbf286d2a4a330ecea38dd4a43043f42 +size 14899 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-activation-error.png new file mode 100644 index 000000000..6db79dc4a --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:016a973d49a7a860fa3e683d1db546f61deef8c2e0210947ac3d14cdd3baf615 +size 25973 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-adjoint-relative-residual.png new file mode 100644 index 000000000..6774e2049 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2955a5eae4f42c70ab386d26d8393a3151561a0e8455a27c05b043c36ee96a57 +size 26907 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-forward-grad-norm-absolute.png new file mode 100644 index 000000000..776bd4ea1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04b84714a9d56c34f50d10e4713429711044611f408934c58555a5af93c733b7 +size 23972 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-forward-grad-norm-relative.png new file mode 100644 index 000000000..396cd02a4 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5277b6266e1799a504126ac652a023ba0d70d6ddb75da94412e941f00660845 +size 28339 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-inverse-grad-absolute.png new file mode 100644 index 000000000..77db81727 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f2d89ce7e1792c7d1bb3965cfd5c2f9a13156660e7955100afebefa92f8ad93 +size 25307 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-loss.png new file mode 100644 index 000000000..1b92cd597 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daa8a0f2b8dab8ac9a1919c168418fd0db2bbe26d15563919d111dd82d73aa91 +size 24041 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-point-to-point-l2.png new file mode 100644 index 000000000..03ef3c3b6 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d092a3da815d137251c5917c9b56545819271f0228cae9ff6e4ea277bb77f0b +size 29143 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-relative-activation.png new file mode 100644 index 000000000..9d095e19a --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000002-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cfeac05b348361f2d3c0a4d6c4607c9575ddd4e35daaa14201a38a864211488 +size 16025 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-activation-error.png new file mode 100644 index 000000000..41131ec4e --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5b50a2a1b5a4a007b3aca4dd3fc4fe6e147be176bb64c8fa796e50581f512d3 +size 27191 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-adjoint-relative-residual.png new file mode 100644 index 000000000..16ca29e32 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c209f98f5626cabf9155c214a35361b64f8cf17460f0e304993206d692af066 +size 30136 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-forward-grad-norm-absolute.png new file mode 100644 index 000000000..083e22740 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5ec27bccddeeee7835cd075d2d55fe994505987207874ab230f6f8a5bdb240f +size 25898 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-forward-grad-norm-relative.png new file mode 100644 index 000000000..55515ea01 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5664a4cd9fcaf72d4045f33f0eeb2e63fdb0568dbb8555bac511af40a52b7da7 +size 30793 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-inverse-grad-absolute.png new file mode 100644 index 000000000..7d90158b5 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af1dfbf4a83cd00de735b87e24793220f8916dbcb7b72a6c3f3e39cf5cfcc963 +size 29697 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-loss.png new file mode 100644 index 000000000..300348b70 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af3110c9bb827df1d4116b68a7c5cf36f5bfaef9d7d4896a68fb6792a4adf140 +size 23925 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-point-to-point-l2.png new file mode 100644 index 000000000..2cc922698 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62800790af26e4a90328fb921e2f4a90608e42ee50cf587f2803ebe925b9af62 +size 29439 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-relative-activation.png new file mode 100644 index 000000000..802f5e1b4 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000003-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eebc54cc0f57043efbfa8ec19f886cb9193445265a4ff87d34d142dd0e5085b4 +size 17558 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-activation-error.png new file mode 100644 index 000000000..841e7d586 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac7795ca78ba5a9744d8d2a422837e9279d0ac2abbc8bf70d77fdcb1c8d04b32 +size 29162 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-adjoint-relative-residual.png new file mode 100644 index 000000000..99541ac2c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e480ef3844a7a1d58370db6a81bc195b9a7a53ff9f5cb0b4c8de1a8e1537f4cf +size 30188 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-forward-grad-norm-absolute.png new file mode 100644 index 000000000..384955b2e --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b9680a1a5f177806d515bcb8221fd752443f76e092c37c185c1fa4ccb863dfa +size 23737 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-forward-grad-norm-relative.png new file mode 100644 index 000000000..4c11d6daa --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b326f99e0be9ca8bc58c3ab1cd1ec66674a95f72c04e28aa945c6dfd70c41ff +size 25237 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-inverse-grad-absolute.png new file mode 100644 index 000000000..c1a990057 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72d9fedab9aaa80270dc08b949338da5cf3255ae2b3606da930b504bb048bcb9 +size 24570 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-loss.png new file mode 100644 index 000000000..1deef01c0 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0746ea6291e142a8271080ff9b8a6937c166c957da225fb78738e50e3d209ca +size 19595 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-point-to-point-l2.png new file mode 100644 index 000000000..bc9c6ad93 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba1d63836713272566ebef353263f804736c85050ed4e740b78a5d88d9495906 +size 25387 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-relative-activation.png new file mode 100644 index 000000000..e393751d6 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000004-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65fbea6d4c13b9c48881fc0021ebd81687816a193f1d3b12ef0ca5732878a4cb +size 17150 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-activation-error.png new file mode 100644 index 000000000..8aea7481f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:078be784d94d25db5f6c242f5bb0b0664e0722af2f6df68d4a4d499fe5dbc4f3 +size 22949 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-adjoint-relative-residual.png new file mode 100644 index 000000000..791271752 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:923b8958cff8589cd8199967d56b8874f20ecb0159e8bb3d6f65aca0d87c226e +size 30721 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-forward-grad-norm-absolute.png new file mode 100644 index 000000000..94aa74432 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1818009c83f8f5a89c69507900b0818f65d9a8e14ec74f1f951a0bfd35790069 +size 23389 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-forward-grad-norm-relative.png new file mode 100644 index 000000000..6e419ec84 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9581721bbbb51e5e831f844664a69bdefd3d9970e4885a7e98cbcc5af8072cb6 +size 24827 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-inverse-grad-absolute.png new file mode 100644 index 000000000..d11a939ec --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daf2c4e5f6a6bfe2e3f8b71bc63cdd6da301db1ed4ff39fab6d3365449577d83 +size 24146 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-loss.png new file mode 100644 index 000000000..835956b7c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbd6f280f5e86da9d32a736b8a44262e43b264aa70a48b8079202baa98cc10b1 +size 20260 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-point-to-point-l2.png new file mode 100644 index 000000000..7431259dd --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3a1502e230b1dbea8792a01754643580e63c8f4b2ebffd5855563c18dbd9809 +size 20195 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-relative-activation.png new file mode 100644 index 000000000..062c94488 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000005-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50f015e378571983b398abfab1e05cb4d49aa4e068f065b59791376885596d55 +size 17999 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-activation-error.png new file mode 100644 index 000000000..c852ac773 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1e8af2e71f1348217a629b1ebca116e03c0448fd1885766090eeb71f02a7cc5 +size 22457 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-adjoint-relative-residual.png new file mode 100644 index 000000000..0b5120afa --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cc3919a76439758c16c7fe7ac198dfb88b58d268fb7b8f5447159971a28beba +size 26971 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-forward-grad-norm-absolute.png new file mode 100644 index 000000000..6a984f31b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7e7275e14b47748da5b1a62a74181d602043b7fdb744225ef47e8bafc50b401 +size 22602 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-forward-grad-norm-relative.png new file mode 100644 index 000000000..4fedf696f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b91709fe52d8d50e68bb6c8061e3a3d701c7fdca439a8c5f1f7c3c4436f5b69 +size 25619 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-inverse-grad-absolute.png new file mode 100644 index 000000000..8aa7c5293 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:600e771d248afb59f2f13849e2bf85d6ac75366088913d794b7cc15a55a7c5fa +size 25341 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-loss.png new file mode 100644 index 000000000..521ac03a9 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41554f7578d4d3f2ad1b319bb8ffa19f7b1f7e12dc9347e77b55665d681f2785 +size 19376 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-point-to-point-l2.png new file mode 100644 index 000000000..4a52190c1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76455df86e1daad7e3050da1874762ed531311dd94f664976ce5725f03277a81 +size 21031 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-relative-activation.png new file mode 100644 index 000000000..4097d32f9 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000006-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2bf1f856f4897be7d038001d9c012e2b2c580bc114476e807234d6b4750948f +size 17813 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-activation-error.png new file mode 100644 index 000000000..a917c9983 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7add875b77ef32437840df6914b1e2bd9a2964b5d05f791d010eb8f0cb1238de +size 23498 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-adjoint-relative-residual.png new file mode 100644 index 000000000..eaf406f51 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0396bdbc8b8bee1b2de44e5830cb7af2085c069c12acc8329822c92c020ed03 +size 29139 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-forward-grad-norm-absolute.png new file mode 100644 index 000000000..9fa4de160 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02b4610330dcfa92f0d610a8f511b54226e543637292b55c3d38314410959841 +size 22377 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-forward-grad-norm-relative.png new file mode 100644 index 000000000..88401751b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6041bc25af1133c96ad01737ce45690c0cd75dfcef1ac1dd7935a29391720509 +size 27635 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-inverse-grad-absolute.png new file mode 100644 index 000000000..3d93904df --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4529635385c129b4681a320d48e932337e237110610583a2eb9b198d4f0e616d +size 27564 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-loss.png new file mode 100644 index 000000000..dd23a485e --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d8eabf90fd96de436db5bd659100293e79934374e9b3c2eaeae76af35d363e1 +size 21068 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-point-to-point-l2.png new file mode 100644 index 000000000..53c2ac4a0 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:199dafd004fe8280d4fcefd50f2f773729cc24a946573ad13f300409d6ffb792 +size 21933 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-relative-activation.png new file mode 100644 index 000000000..cd140be81 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000007-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7c202e9b5fe72bd6d2c80fe5e0291f2024321079cbe9f732582bba0cf6684eb +size 18700 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-activation-error.png new file mode 100644 index 000000000..f9826d33c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e4ad21f67f5da437f2f7deade4aa6fd4d4f5359992bfc71bd26389de341efac +size 24345 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-adjoint-relative-residual.png new file mode 100644 index 000000000..c080125d6 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db8aa8e5e789e22155533f1270937c0e753955e3ed767e44bf24978dfa5f5c35 +size 30155 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-forward-grad-norm-absolute.png new file mode 100644 index 000000000..d398e7984 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db3d077531ccc2f05b7386443d5164368f2a658befb9e1e169ccfee5c8f7fec8 +size 22475 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-forward-grad-norm-relative.png new file mode 100644 index 000000000..8ce3c4b3a --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4aacd33086b7070ae24af027eafffd278e2339e692489f3c8810910f00596e48 +size 29522 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-inverse-grad-absolute.png new file mode 100644 index 000000000..cec1b1793 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b42d906861f1ee6e9f0135a52751d124da4e7af2ec24cd4ad08a04d696335498 +size 26335 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-loss.png new file mode 100644 index 000000000..68dab4548 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c07d5202ba94f0857f24fc09bda55b3ba7c206ac24e3cdac0e0a2f6402a3cbcc +size 19658 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-point-to-point-l2.png new file mode 100644 index 000000000..23389ada4 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5df3caf37e8a2c6da87718985f46ad2e2df262c5e7d43d11fffb6531df1c42a6 +size 20818 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-relative-activation.png new file mode 100644 index 000000000..7f7f2327d --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000008-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c93951d0956e33bcaf1411d48801ecb511b226aa019b5cbccdbccf5e8ece570 +size 19319 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-activation-error.png new file mode 100644 index 000000000..5f5c6be91 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f428f90786735d308b8daffff3589ed301c761348aea9b3fb0d37a716547c5 +size 25122 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-adjoint-relative-residual.png new file mode 100644 index 000000000..072842750 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25db96155193e54f6103814f8ece94906702ba13dfe127c927f49a9173c68369 +size 31570 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-forward-grad-norm-absolute.png new file mode 100644 index 000000000..c16673513 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf2a14249c4d268f67a26d509c434a4a75e8c8ac69da5d7157fecd721b162a53 +size 22839 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-forward-grad-norm-relative.png new file mode 100644 index 000000000..cb851ac77 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb9424ccf8b473849e92c7caad8ab11698f09cdf935459fc5c30e7b89b917cd1 +size 31047 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-inverse-grad-absolute.png new file mode 100644 index 000000000..79eacebac --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52597de52d89b1af751809292ea4db6c5ba7578dd5d2c07dab50fa2b7e6eafcf +size 28697 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-loss.png new file mode 100644 index 000000000..e9ca359b0 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:613731230a378d7a7c446c38610daa15b5fc1bf6e06d9f27cb25eb255287c74e +size 21100 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-point-to-point-l2.png new file mode 100644 index 000000000..446f1ecb3 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36fa2f68f24160719199376190aa57940b2db332f4860e14161f33c2aed55944 +size 22544 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-relative-activation.png new file mode 100644 index 000000000..9905003a9 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000009-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7090ecf5a23f4d58b59d96229485529f6338f65021699bf7d15c8bb3921adb1 +size 20581 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-activation-error.png new file mode 100644 index 000000000..7e17418ee --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01dbd26ab7dcf9af26ae2b2f07e51b37da6555f587d296490997531dbc2f14b7 +size 21634 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-adjoint-relative-residual.png new file mode 100644 index 000000000..be4b12734 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5455bcbf724bbd63326702b846db1019b03327ec64a1cbc5c68f85920b08ee60 +size 31471 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-forward-grad-norm-absolute.png new file mode 100644 index 000000000..4b4e5de54 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec5658d7cc0fac61957ff7200bc468cf5c721f15058141958ba9c97774d5ea6a +size 22321 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-forward-grad-norm-relative.png new file mode 100644 index 000000000..2f2933d7d --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f706196dd64564bd3ee28b5e4ce7109702b7dcc509deff52eaff3147cc684cfa +size 31599 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-inverse-grad-absolute.png new file mode 100644 index 000000000..4ce02f413 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:429b1804feae461b18ea13949ad6a8513d13958b0ad6a769fd98f042a46964ca +size 24638 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-loss.png new file mode 100644 index 000000000..7f4d1891b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3034ea337f1149067e567b494e8eace662ca95bbe956025dba9657eec5752419 +size 20496 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-point-to-point-l2.png new file mode 100644 index 000000000..373176726 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0d1fb24815e1a4cfaa9122c2f9978b653331955a98d48516cda826dbd852cba +size 23429 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-relative-activation.png new file mode 100644 index 000000000..0842139fe --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000010-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f43edeb4acecd8aab6ed7316cbaeab10599f642e27253f10c04946789283b9f +size 20155 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-activation-error.png new file mode 100644 index 000000000..eb456b375 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e63c784c060fa91daa13dc933838818dcac34677600ae3ef9ddafb5dc232b078 +size 21543 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-adjoint-relative-residual.png new file mode 100644 index 000000000..1e381a55c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be58deef5aa9b219c3285232477497eec4f122000a42178bf66b7cd01442da38 +size 32227 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-forward-grad-norm-absolute.png new file mode 100644 index 000000000..1f9a8e457 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b6cdf42d8a7fabee2f253d4c3d451b125ebed82372999860b648ec9c92297d0 +size 21977 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-forward-grad-norm-relative.png new file mode 100644 index 000000000..a7b8c2c54 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c32508a7ba315b06c6705c8aabfbfeb33ab48741beb7231de402476b6937f1f4 +size 31827 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-inverse-grad-absolute.png new file mode 100644 index 000000000..56804b498 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99d7bf99c57085bdad665d7fe1adaceb0c38a82bf2e1b05737fcd87527ceff1f +size 22634 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-loss.png new file mode 100644 index 000000000..584c22814 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9bd4b03c1e3d1bb886871d2c6029cd68f12b84fcd9b3639a1df70cde7698296 +size 19863 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-point-to-point-l2.png new file mode 100644 index 000000000..3031f6866 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:103403b624ca00bca2ce55ae30060ac203aacbabb2e65d757cd04f509dae15c2 +size 19435 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-relative-activation.png new file mode 100644 index 000000000..5cdff8b40 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000011-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d1d0bea4bbcd0f4c213717b808cc62a15735a4bf1d910ecad85ed6996947a7d +size 21105 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-activation-error.png new file mode 100644 index 000000000..763ac98cb --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c8a43da1d827136c4830545fb4c9afe11e8dfdaad4e7df77576f2eb13119948 +size 23209 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-adjoint-relative-residual.png new file mode 100644 index 000000000..2f838776d --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a9f53a563fa8c1f5a41533ec9ab70d270a423154414348954dbfc5f96e76cf5 +size 31424 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-forward-grad-norm-absolute.png new file mode 100644 index 000000000..1bc888ac6 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f33a6cfcff04daa14bd0bba00b839f00ad7b1f9d2a182539a7c9ac61b7a02e9 +size 21953 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-forward-grad-norm-relative.png new file mode 100644 index 000000000..1beaf2c1c --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c73f500aa99b40d3d41a63490a6d3e27d1944a665518ef7ebcf902512b6ef05 +size 32957 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-inverse-grad-absolute.png new file mode 100644 index 000000000..791d0c426 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87d8d73a65db23b6949a53e1028cfa4f395eb255fdb0020635d11d1c9e3dc496 +size 23581 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-loss.png new file mode 100644 index 000000000..a6034c559 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ecd18edefc74ab77927a32dfba5f755d574fc469ffb75bf3fdbcff8ea8c9f45 +size 18031 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-point-to-point-l2.png new file mode 100644 index 000000000..6907ae275 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:624a7ba4058b29b6c15a41486473d33c5e3270d2b5177eb9a5f726dc2fc1e2e6 +size 21548 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-relative-activation.png new file mode 100644 index 000000000..5cb578a49 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000012-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e360f64a759f9ed40a21d7f02a79b2f2b725ab2df82b1057fb976b2477a0a095 +size 22071 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-activation-error.png new file mode 100644 index 000000000..6d3e84fa5 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cadea9d40ef9e354e6f5820454abdb83fe23db313614212332e229a5f58dd48f +size 23535 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-adjoint-relative-residual.png new file mode 100644 index 000000000..f1f93aa44 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196261b66fe1eac7fcd548e24ce35527a3ef5a67f001fe62f042b129cda26b4 +size 31248 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-forward-grad-norm-absolute.png new file mode 100644 index 000000000..75d757cf2 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:727c00d2bf95d33547e71928a5ca4b4e6a20cabe55c38db8fddba3c6e79dc41a +size 21978 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-forward-grad-norm-relative.png new file mode 100644 index 000000000..a4db2e201 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c1d12f46643ca64a739b15804255d8169babb88e3079ea3a1e4d3f762c65a4c +size 32771 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-inverse-grad-absolute.png new file mode 100644 index 000000000..aa0913ffd --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0013c8376be6687f39ce7195b58ad375b9f3076c8a79d26fd6ec90fbb0174ed9 +size 24514 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-loss.png new file mode 100644 index 000000000..c92aa6144 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31ae1fb9870f8956c8a845f26b3de68217323e8df888735c6ba87aedf5ad21c6 +size 17535 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-point-to-point-l2.png new file mode 100644 index 000000000..19020e920 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0efe7903557fba034d45cff3fa63752a11fcba8b97927cb093721617ed996c8 +size 21471 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-relative-activation.png new file mode 100644 index 000000000..278d45aab --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000013-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c791fecf98368a4c9ef87df069beb3c0a8ffabca9482600caac87bec5fd39ab +size 22571 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-activation-error.png new file mode 100644 index 000000000..87fa00bf8 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:695578e64ecf9332ad646fe877aeb181d2d7e5cd04ad80969f92602ffc474b38 +size 20896 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-adjoint-relative-residual.png new file mode 100644 index 000000000..210ef8889 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c86363ed464401ebc30d3dee05b0a05022b942bdfb9594793228323cdfc16f4 +size 31710 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-forward-grad-norm-absolute.png new file mode 100644 index 000000000..1ef153565 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f83516e87b6d7e85df5908ad71d33e7a544132f51abc750d4c0ad82d1aa403d +size 20898 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-forward-grad-norm-relative.png new file mode 100644 index 000000000..ca1b42913 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f530d11430554f479944b755b75fa351fa50ea910f26bd1f7286ee17877e5e +size 33388 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-inverse-grad-absolute.png new file mode 100644 index 000000000..6524b6140 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d8d72f334c7df646092a48dcf7250fb53a87fb34af15dbc1239e00dfa070980 +size 22981 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-loss.png new file mode 100644 index 000000000..d18709026 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eda22d6abf4a6411d4ce5ce1b213d6027cd11c991d6b717e12235b8a1509928 +size 18109 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-point-to-point-l2.png new file mode 100644 index 000000000..7b1543dac --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cff9c38b695589f643bceba3776a8de0064754539e790b367881f9a7bc3c03bc +size 21945 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-relative-activation.png new file mode 100644 index 000000000..9ca50c210 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000014-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bccc479874bbc397abb2d64a8f7db3ba25f21418f919f2e6dfdabd34ab4b50d +size 23017 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-activation-error.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-activation-error.png new file mode 100644 index 000000000..e6db1856b --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-activation-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe35e8a1f5b9ed041fe1ad64d4c2dbff622a6d6f5cf8994b6943a7976edbad4f +size 19152 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-adjoint-relative-residual.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-adjoint-relative-residual.png new file mode 100644 index 000000000..453484886 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-adjoint-relative-residual.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a945987919720b2969d6f22c16cc9d63f78f7e4c4fcd58a56fe83fd7c52ab365 +size 32670 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-forward-grad-norm-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-forward-grad-norm-absolute.png new file mode 100644 index 000000000..a70004b05 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-forward-grad-norm-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38f635f038c1c0cb7bd0bfbb5b4a9ac12c71af1391c7a49cbb7aff16d57e14e7 +size 22075 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-forward-grad-norm-relative.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-forward-grad-norm-relative.png new file mode 100644 index 000000000..680819957 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-forward-grad-norm-relative.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abd47b0e4838fc69b22eadb4171864982e389b4c8c942b8bb1a7f2713eb5d041 +size 33812 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-inverse-grad-absolute.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-inverse-grad-absolute.png new file mode 100644 index 000000000..a2bbc21a0 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-inverse-grad-absolute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e22e5d1ca83529b17f68a5675a2917b3e56404481639d30572ef5cf1e381f65 +size 23775 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-loss.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-loss.png new file mode 100644 index 000000000..734661a65 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-loss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66961d527a907747b5a7fd89f18d90c7cb41c9a0878bf07cc4f92eacf48503e +size 17952 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-point-to-point-l2.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-point-to-point-l2.png new file mode 100644 index 000000000..66a8c92c5 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-point-to-point-l2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04ba6eaa5299f9062eeb582ed240b113f5a2db4e7f976b2de6537c5df613489a +size 19061 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-relative-activation.png b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-relative-activation.png new file mode 100644 index 000000000..69516efa3 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.d/000015-relative-activation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:097a5c3ef2669c71c6e88d64b9af3d2503659cc025dec0278e0046721598a87e +size 23784 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.json b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.json new file mode 100644 index 000000000..ed4812d40 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.json @@ -0,0 +1,407 @@ +[ + { + "step": 1, + "log_relative_activation": 0.0, + "relative_activation": 1.0, + "actual_activation_x": 1.3, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -1.0, + "loss": 5.930123553874659, + "point_to_point_l2": 86.94591920250177, + "point_to_point_rmse": 0.3272994674877315, + "point_to_point_inf": 1.468124728994359, + "activation_diff_l2": 138.54609341298652, + "activation_diff_inf": 1.3, + "inverse_grad": -10.356870422848518, + "inverse_grad_abs": 10.356870422848518, + "adjoint_success": true, + "adjoint_relative_residual": 9.976663539042553e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 1110, + "forward_grad_norm": 0.0099676741475024, + "forward_relative_grad_norm": 9.935246132601607e-06, + "forward_objective": 1029.8973860628137, + "forward_best_objective": 1029.8973860628137, + "finite_outputs": true + }, + { + "step": 2, + "log_relative_activation": 0.04999999995172288, + "relative_activation": 1.0512710963252716, + "actual_activation_x": 1.3666524252228531, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.9487289036747284, + "loss": 5.408415184623387, + "point_to_point_l2": 83.04751142252249, + "point_to_point_rmse": 0.3126242900654824, + "point_to_point_inf": 1.3990624717408309, + "activation_diff_l2": 131.44268331211924, + "activation_diff_inf": 1.233347574777147, + "inverse_grad": -10.576370922058649, + "inverse_grad_abs": 10.576370922058649, + "adjoint_success": true, + "adjoint_relative_residual": 9.89123910599094e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 656, + "forward_grad_norm": 0.0014389242790439555, + "forward_relative_grad_norm": 9.95938927368902e-06, + "forward_objective": 1047.659675517216, + "forward_best_objective": 1047.659675517216, + "finite_outputs": true + }, + { + "step": 3, + "log_relative_activation": 0.10002458152104376, + "relative_activation": 1.1051980851917305, + "actual_activation_x": 1.4367575107492496, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.8948019148082695, + "loss": 4.874973863022609, + "point_to_point_l2": 78.85835532270468, + "point_to_point_rmse": 0.2968546188345651, + "point_to_point_inf": 1.3257065907507362, + "activation_diff_l2": 123.97130967514579, + "activation_diff_inf": 1.1632424892507505, + "inverse_grad": -10.73989279360051, + "inverse_grad_abs": 10.73989279360051, + "adjoint_success": true, + "adjoint_relative_residual": 9.972666546117275e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 660, + "forward_grad_norm": 0.0014872664666230578, + "forward_relative_grad_norm": 9.952489995119348e-06, + "forward_objective": 1067.8117755331102, + "forward_best_objective": 1067.8117755331102, + "finite_outputs": true + }, + { + "step": 4, + "log_relative_activation": 0.15008187285060745, + "relative_activation": 1.1619293693037573, + "actual_activation_x": 1.5105081800948845, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.8380706306962427, + "loss": 4.334764268227267, + "point_to_point_l2": 74.37211241006811, + "point_to_point_rmse": 0.2799665931538347, + "point_to_point_inf": 1.2479956091385103, + "activation_diff_l2": 116.11141188712222, + "activation_diff_inf": 1.0894918199051156, + "inverse_grad": -10.829802730671515, + "inverse_grad_abs": 10.829802730671515, + "adjoint_success": true, + "adjoint_relative_residual": 9.91114818032733e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 670, + "forward_grad_norm": 0.0015056425255766384, + "forward_relative_grad_norm": 9.74568492272402e-06, + "forward_objective": 1090.4003889123026, + "forward_best_objective": 1090.4003889123026, + "finite_outputs": true + }, + { + "step": 5, + "log_relative_activation": 0.20017067683146117, + "relative_activation": 1.2216112411039686, + "actual_activation_x": 1.5880946134351592, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.7783887588960314, + "loss": 3.7920251906135296, + "point_to_point_l2": 69.57034046494374, + "point_to_point_rmse": 0.2618907890787021, + "point_to_point_inf": 1.1657313558885223, + "activation_diff_l2": 107.84272170162826, + "activation_diff_inf": 1.0119053865648409, + "inverse_grad": -10.824552336733547, + "inverse_grad_abs": 10.824552336733547, + "adjoint_success": true, + "adjoint_relative_residual": 9.575093847400924e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 672, + "forward_grad_norm": 0.0015090033038250897, + "forward_relative_grad_norm": 9.454522383119664e-06, + "forward_objective": 1115.466674916682, + "forward_best_objective": 1115.466674916682, + "finite_outputs": true + }, + { + "step": 6, + "log_relative_activation": 0.25027663631343633, + "relative_activation": 1.2843806738816272, + "actual_activation_x": 1.6696948760461154, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.7156193261183728, + "loss": 3.252230365156253, + "point_to_point_l2": 64.43694626724522, + "point_to_point_rmse": 0.2425666252453408, + "point_to_point_inf": 1.0787519914182537, + "activation_diff_l2": 99.14626200453453, + "activation_diff_inf": 0.9303051239538846, + "inverse_grad": -10.700559891022992, + "inverse_grad_abs": 10.700559891022992, + "adjoint_success": true, + "adjoint_relative_residual": 9.383763370358093e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 678, + "forward_grad_norm": 0.0016111485151538503, + "forward_relative_grad_norm": 9.781645272200915e-06, + "forward_objective": 1143.0399456293942, + "forward_best_objective": 1143.0399456293942, + "finite_outputs": true + }, + { + "step": 7, + "log_relative_activation": 0.30036713653604724, + "relative_activation": 1.3503544810471224, + "actual_activation_x": 1.7554608253612591, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.6496455189528776, + "loss": 2.7222818189522235, + "point_to_point_l2": 58.960505455942226, + "point_to_point_rmse": 0.22195109575633892, + "point_to_point_inf": 0.9869658276986808, + "activation_diff_l2": 90.00584875417353, + "activation_diff_inf": 0.844539174638741, + "inverse_grad": -10.43278116768527, + "inverse_grad_abs": 10.43278116768527, + "adjoint_success": true, + "adjoint_relative_residual": 9.671652355290572e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 682, + "forward_grad_norm": 0.0016439654687723827, + "forward_relative_grad_norm": 9.686639839903982e-06, + "forward_objective": 1173.129140796555, + "forward_best_objective": 1173.129140796555, + "finite_outputs": true + }, + { + "step": 8, + "log_relative_activation": 0.35038436759435154, + "relative_activation": 1.4196130970119825, + "actual_activation_x": 1.8454970261155772, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.5803869029880175, + "loss": 2.210586716352338, + "point_to_point_l2": 53.13649773492541, + "point_to_point_rmse": 0.2000271843960644, + "point_to_point_inf": 0.8903840210696966, + "activation_diff_l2": 80.41033807705185, + "activation_diff_inf": 0.7545029738844229, + "inverse_grad": -9.996144138789592, + "inverse_grad_abs": 9.996144138789592, + "adjoint_success": true, + "adjoint_relative_residual": 9.627933565474003e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 696, + "forward_grad_norm": 0.0016737249296821593, + "forward_relative_grad_norm": 9.592389695211454e-06, + "forward_objective": 1205.7113463781952, + "forward_best_objective": 1205.7113463781952, + "finite_outputs": true + }, + { + "step": 9, + "log_relative_activation": 0.4002359535026379, + "relative_activation": 1.4921767404352324, + "actual_activation_x": 1.939829762565802, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.5078232595647676, + "loss": 1.7270706860814107, + "point_to_point_l2": 46.97130109561815, + "point_to_point_rmse": 0.17681890049371474, + "point_to_point_inf": 0.7891741313511458, + "activation_diff_l2": 70.35692875694765, + "activation_diff_inf": 0.660170237434198, + "inverse_grad": -9.368167468466272, + "inverse_grad_abs": 9.368167468466272, + "adjoint_success": true, + "adjoint_relative_residual": 9.922154631276698e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 708, + "forward_grad_norm": 0.001762329595706691, + "forward_relative_grad_norm": 9.854315987101398e-06, + "forward_objective": 1240.7164855166961, + "forward_best_objective": 1240.7164855166961, + "finite_outputs": true + }, + { + "step": 10, + "log_relative_activation": 0.4497826342361647, + "relative_activation": 1.5679713251610625, + "actual_activation_x": 2.0383627227093815, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.4320286748389375, + "loss": 1.2827681666757047, + "point_to_point_l2": 40.48404232103142, + "point_to_point_rmse": 0.1523982449660858, + "point_to_point_inf": 0.6836936651844691, + "activation_diff_l2": 59.85588514132422, + "activation_diff_inf": 0.5616372772906186, + "inverse_grad": -8.53141304455209, + "inverse_grad_abs": 8.53141304455209, + "adjoint_success": true, + "adjoint_relative_residual": 9.73553575341662e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 724, + "forward_grad_norm": 0.0018241587162051876, + "forward_relative_grad_norm": 9.993967271770547e-06, + "forward_objective": 1278.0072671051626, + "forward_best_objective": 1278.0072671051626, + "finite_outputs": true + }, + { + "step": 11, + "log_relative_activation": 0.4988223526496632, + "relative_activation": 1.6467808012828402, + "actual_activation_x": 2.1408150416676923, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.3532191987171598, + "loss": 0.8893275788994323, + "point_to_point_l2": 33.710792633422926, + "point_to_point_rmse": 0.12690100442564747, + "point_to_point_inf": 0.5745510607491464, + "activation_diff_l2": 48.93714010072788, + "activation_diff_inf": 0.45918495833230777, + "inverse_grad": -7.47647148076911, + "inverse_grad_abs": 7.47647148076911, + "adjoint_success": true, + "adjoint_relative_residual": 9.887212623860353e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 738, + "forward_grad_norm": 0.001814612218242801, + "forward_relative_grad_norm": 9.797487145324404e-06, + "forward_objective": 1317.3534424170105, + "forward_best_objective": 1317.3534424170105, + "finite_outputs": true + }, + { + "step": 12, + "log_relative_activation": 0.5470705003180485, + "relative_activation": 1.7281828838068471, + "actual_activation_x": 2.2466377489489013, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.27181711619315285, + "loss": 0.5583295627174117, + "point_to_point_l2": 26.712435654082704, + "point_to_point_rmse": 0.10055636935091479, + "point_to_point_inf": 0.46469401322795045, + "activation_diff_l2": 37.65919957134519, + "activation_diff_inf": 0.35336225105109875, + "inverse_grad": -6.206093656940998, + "inverse_grad_abs": 6.206093656940998, + "adjoint_success": true, + "adjoint_relative_residual": 9.850441669516964e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 753, + "forward_grad_norm": 0.0018135395808724685, + "forward_relative_grad_norm": 9.726392605035377e-06, + "forward_objective": 1358.3999852427635, + "forward_best_objective": 1358.3999852427635, + "finite_outputs": true + }, + { + "step": 13, + "log_relative_activation": 0.5941375406038936, + "relative_activation": 1.8114679534914673, + "actual_activation_x": 2.3549083395389077, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.18853204650853272, + "loss": 0.29989450817156205, + "point_to_point_l2": 19.580083426404762, + "point_to_point_rmse": 0.07370732217922468, + "point_to_point_inf": 0.35535588156408604, + "activation_diff_l2": 26.120378526912695, + "activation_diff_inf": 0.24509166046109243, + "inverse_grad": -4.738438711808987, + "inverse_grad_abs": 4.738438711808987, + "adjoint_success": true, + "adjoint_relative_residual": 9.871588288317616e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 765, + "forward_grad_norm": 0.0018342526523512242, + "forward_relative_grad_norm": 9.877546793898363e-06, + "forward_objective": 1400.6306943379611, + "forward_best_objective": 1400.6306943379611, + "finite_outputs": true + }, + { + "step": 14, + "log_relative_activation": 0.6395073776475593, + "relative_activation": 1.8955468605109858, + "actual_activation_x": 2.4642109186642815, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.10445313948901425, + "loss": 0.1210671219718922, + "point_to_point_l2": 12.449166715589032, + "point_to_point_rmse": 0.04686367887132578, + "point_to_point_inf": 0.2465936704094498, + "activation_diff_l2": 14.471574420924687, + "activation_diff_inf": 0.13578908133571854, + "inverse_grad": -3.1103347889128465, + "inverse_grad_abs": 3.1103347889128465, + "adjoint_success": true, + "adjoint_relative_residual": 9.924213680506066e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 783, + "forward_grad_norm": 0.0018052015260810505, + "forward_relative_grad_norm": 9.90364900509931e-06, + "forward_objective": 1443.3319537127056, + "forward_best_objective": 1443.3319537127056, + "finite_outputs": true + }, + { + "step": 15, + "log_relative_activation": 0.6825242883930449, + "relative_activation": 1.978866662980064, + "actual_activation_x": 2.5725266618740834, + "actual_activation_y": 0.5917159763313609, + "actual_activation_z": 1.3, + "activation_error": -0.021133337019936027, + "loss": 0.02387088048038924, + "point_to_point_l2": 5.570182962905414, + "point_to_point_rmse": 0.02096841271321815, + "point_to_point_inf": 0.14128124170838663, + "activation_diff_l2": 2.927941284892168, + "activation_diff_inf": 0.02747333812591668, + "inverse_grad": -1.3786166501525947, + "inverse_grad_abs": 1.3786166501525947, + "adjoint_success": true, + "adjoint_relative_residual": 9.837965603206206e-07, + "forward_success": true, + "forward_result": "target_converged", + "forward_n_steps": 788, + "forward_grad_norm": 0.0017483926580211303, + "forward_relative_grad_norm": 9.964492437302642e-06, + "forward_objective": 1485.5675728610533, + "forward_best_objective": 1485.5675728610533, + "finite_outputs": true + } +] diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.json b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.json new file mode 100644 index 000000000..2f7ccd935 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.json @@ -0,0 +1,46 @@ +{ + "case": "zero", + "backend": "cuda:0", + "forward_success": true, + "forward_result": "target_converged", + "forward_grad_norm": 0.0017483926580211303, + "inverse_lr": 0.05, + "best_inverse_step": 15, + "best_converged_inverse_step": 15, + "selected_inverse_step": 15, + "selected_inverse_kind": "activation_tolerance", + "metrics_json": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.json", + "metrics_csv": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.csv", + "series": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.series", + "initial_log_relative_activation": 0.0, + "initial_relative_activation": 1.0, + "target_relative_activation": 2.0, + "target_log_relative_activation": 0.6931471805599453, + "solved_log_relative_activation": 0.6825242883930449, + "solved_relative_activation": 1.978866662980064, + "relative_activation_error": -0.021133337019936027, + "best_inverse_loss": 0.02387088048038924, + "best_converged_inverse_loss": 0.02387088048038924, + "selected_inverse_loss": 0.02387088048038924, + "smas_prestrain": 1.3, + "target_actual_activation_x": 2.6, + "target_actual_activation_y": 0.5917159763313609, + "target_actual_activation_z": 1.3, + "solved_actual_activation_x": 2.5725266618740834, + "solved_actual_activation_y": 0.5917159763313609, + "solved_actual_activation_z": 1.3, + "point_to_point_l2": 5.570182962905414, + "point_to_point_inf": 0.14128124170838663, + "activation_diff_l2": 2.927941284892168, + "activation_diff_inf": 0.02747333812591668, + "metrics_plots": { + "loss": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-loss.png", + "point-to-point-l2": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-point-to-point-l2.png", + "relative-activation": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-relative-activation.png", + "activation-error": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-activation-error.png", + "forward-grad-norm-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-absolute.png", + "forward-grad-norm-relative": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-relative.png", + "adjoint-relative-residual": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-adjoint-relative-residual.png", + "inverse-grad-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-inverse-grad-absolute.png" + } +} diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu new file mode 100644 index 000000000..b9554e91d --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:646c5031458140794064113544504265044060addfd5d5c76a4e1f42849cf1d4 +size 16340557 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000000.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000000.vtu new file mode 100644 index 000000000..a08b235c3 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2060b230523b279184fc33c5ab5179bb5848bcc7ea527cbd625ba5f4290d4914 +size 16348564 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000001.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000001.vtu new file mode 100644 index 000000000..2075b0930 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4921c2da6c022f08fad8539c9f9ff9bae813ecef542673bd35a601c6f1d9213f +size 16377092 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000002.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000002.vtu new file mode 100644 index 000000000..89d7b4ca1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba49b81d73e45915cd6e82c3bbf2a965295ddf893506abf9b0343d3b050ed18f +size 16376445 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000003.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000003.vtu new file mode 100644 index 000000000..28adc2086 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0eee00ac17441dcffab43f5f4ea3329ec830e6f986694b5da1748ca1e9f1ad5 +size 16377751 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000004.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000004.vtu new file mode 100644 index 000000000..e564226c3 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:695cdbc912f5af559c48b17f5efea540f8bfd746213e872ebd832651fbb8d280 +size 16379475 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000005.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000005.vtu new file mode 100644 index 000000000..9b6b8b737 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55b34b2835003dc9709f71b4c2f766110686970f86b37735152863758eb112e6 +size 16379014 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000006.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000006.vtu new file mode 100644 index 000000000..c6314eff0 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22075f25f1690ca1386ed09318ea989e4d45660f0138bdea306b4c0c8b7d2f3c +size 16376059 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000007.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000007.vtu new file mode 100644 index 000000000..892f5561e --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f498fcdd6a0b186ef68d5e1fac4684bb8137797277024602fefb791a70e8989f +size 16377185 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000008.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000008.vtu new file mode 100644 index 000000000..68725384f --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f37bb6b993f7ba3e5649d976d614ac56159757aa996a86032fda431e51f7032 +size 16375671 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000009.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000009.vtu new file mode 100644 index 000000000..c6fc85e72 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a526413b06131b172bb5746778586bafa52bcba5a9c9bef3d48f66b5409b138 +size 16372341 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000010.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000010.vtu new file mode 100644 index 000000000..49008f070 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f796170a7992f46ba5f1c58c52e0474674f4cfedda7a781990f2f86f05814f7 +size 16369806 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000011.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000011.vtu new file mode 100644 index 000000000..e314abe38 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be849518d0795b9b923174165dc4f52c2fff52d32f7fcb610fbfa5183e72c6dc +size 16369771 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000012.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000012.vtu new file mode 100644 index 000000000..6066790d1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46b24fb4d787c6a1a7a654289a51b6703a1c8309bcb24ceb9e7c08973c1d6038 +size 16361176 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000013.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000013.vtu new file mode 100644 index 000000000..fec42f252 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3546d1b9599095f5afdc36d01d869a558b044c32e4044819b5d45af585b6e637 +size 16352856 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000014.vtu b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000014.vtu new file mode 100644 index 000000000..b9554e91d --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.d/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:646c5031458140794064113544504265044060addfd5d5c76a4e1f42849cf1d4 +size 16340557 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.series b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.series new file mode 100644 index 000000000..0aaac1296 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cae80874c045b4d209e878d1a8be173ba1dc7d635b062bfda3cea5c7405558dc +size 2490 diff --git a/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean.json b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean.json new file mode 100644 index 000000000..541e835f1 --- /dev/null +++ b/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean.json @@ -0,0 +1,91 @@ +{ + "cases": [ + { + "case": "easy", + "backend": "cuda:0", + "forward_success": true, + "forward_result": "target_converged", + "forward_grad_norm": 0.00039279373133560964, + "inverse_lr": 0.05, + "best_inverse_step": 1, + "metrics_json": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.json", + "metrics_csv": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics.csv", + "series": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy.vtu.series", + "initial_log_relative_activation": 0.6830968447064438, + "initial_relative_activation": 1.98, + "target_relative_activation": 2.0, + "target_log_relative_activation": 0.6931471805599453, + "solved_log_relative_activation": 0.6830968447064438, + "solved_relative_activation": 1.98, + "relative_activation_error": -0.020000000000000018, + "best_inverse_loss": 0.002189452873991038, + "smas_prestrain": 1.3, + "target_actual_activation_x": 2.6, + "target_actual_activation_y": 0.5917159763313609, + "target_actual_activation_z": 1.3, + "solved_actual_activation_x": 2.574, + "solved_actual_activation_y": 0.5917159763313609, + "solved_actual_activation_z": 1.3, + "point_to_point_l2": 1.6774851341660875, + "point_to_point_inf": 0.026894493468048175, + "activation_diff_l2": 2.7709218682597574, + "activation_diff_inf": 0.026000000000000245, + "metrics_plots": { + "loss": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-loss.png", + "point-to-point-l2": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-point-to-point-l2.png", + "relative-activation": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-relative-activation.png", + "activation-error": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-activation-error.png", + "forward-grad-norm-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-absolute.png", + "forward-grad-norm-relative": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-forward-grad-norm-relative.png", + "adjoint-relative-residual": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-adjoint-relative-residual.png", + "inverse-grad-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-easy-metrics-inverse-grad-absolute.png" + } + }, + { + "case": "zero", + "backend": "cuda:0", + "forward_success": true, + "forward_result": "target_converged", + "forward_grad_norm": 0.0017483926580211303, + "inverse_lr": 0.05, + "best_inverse_step": 15, + "best_converged_inverse_step": 15, + "selected_inverse_step": 15, + "selected_inverse_kind": "activation_tolerance", + "metrics_json": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.json", + "metrics_csv": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics.csv", + "series": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero.vtu.series", + "initial_log_relative_activation": 0.0, + "initial_relative_activation": 1.0, + "target_relative_activation": 2.0, + "target_log_relative_activation": 0.6931471805599453, + "solved_log_relative_activation": 0.6825242883930449, + "solved_relative_activation": 1.978866662980064, + "relative_activation_error": -0.021133337019936027, + "best_inverse_loss": 0.02387088048038924, + "best_converged_inverse_loss": 0.02387088048038924, + "selected_inverse_loss": 0.02387088048038924, + "smas_prestrain": 1.3, + "target_actual_activation_x": 2.6, + "target_actual_activation_y": 0.5917159763313609, + "target_actual_activation_z": 1.3, + "solved_actual_activation_x": 2.5725266618740834, + "solved_actual_activation_y": 0.5917159763313609, + "solved_actual_activation_z": 1.3, + "point_to_point_l2": 5.570182962905414, + "point_to_point_inf": 0.14128124170838663, + "activation_diff_l2": 2.927941284892168, + "activation_diff_inf": 0.02747333812591668, + "metrics_plots": { + "loss": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-loss.png", + "point-to-point-l2": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-point-to-point-l2.png", + "relative-activation": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-relative-activation.png", + "activation-error": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-activation-error.png", + "forward-grad-norm-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-absolute.png", + "forward-grad-norm-relative": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-forward-grad-norm-relative.png", + "adjoint-relative-residual": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-adjoint-relative-residual.png", + "inverse-grad-absolute": "/home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/31-inverse-smas46-muscle46-activation-stable-neo-hookean-zero-metrics-inverse-grad-absolute.png" + } + } + ] +} diff --git a/exp/2026/01/28/smas/fig/10-input-clip-muscle-fraction.png b/exp/2026/01/28/smas/fig/10-input-clip-muscle-fraction.png new file mode 100644 index 000000000..e52116527 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-clip-muscle-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b301dae9854c3a4047a125caeddb5d9485250b3e68c22355d410dbf64d86a167 +size 69986 diff --git a/exp/2026/01/28/smas/fig/10-input-muscle-fraction.png b/exp/2026/01/28/smas/fig/10-input-muscle-fraction.png new file mode 100644 index 000000000..71457fccf --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-muscle-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81de79f7e2dcc944b6c984768aa8988c697707349f6a49936db62bd873c9e885 +size 140959 diff --git a/exp/2026/01/28/smas/fig/10-input-smas-fraction.png b/exp/2026/01/28/smas/fig/10-input-smas-fraction.png new file mode 100644 index 000000000..d2540fe21 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b107af2743f1d50a81bc8738a5e132bc1bde341c22bcd9d3cfae9da2be634e3 +size 150614 diff --git a/exp/2026/01/28/smas/fig/10-input-smas02-muscle02-muscle.png b/exp/2026/01/28/smas/fig/10-input-smas02-muscle02-muscle.png new file mode 100644 index 000000000..ef3420d40 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas02-muscle02-muscle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da0f0497604cfa533a1cd8669ac07583421be9b3562d776b975025259d547d33 +size 68976 diff --git a/exp/2026/01/28/smas/fig/10-input-smas02-muscle02-smas.png b/exp/2026/01/28/smas/fig/10-input-smas02-muscle02-smas.png new file mode 100644 index 000000000..646b01b32 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas02-muscle02-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03eb5dcda07eae5f7d97df21986defdc4e4a0021b5eb4e11199f9c2181db93e0 +size 83459 diff --git a/exp/2026/01/28/smas/fig/10-input-smas04-muscle02-smas.png b/exp/2026/01/28/smas/fig/10-input-smas04-muscle02-smas.png new file mode 100644 index 000000000..37201fbb7 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas04-muscle02-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d360c69bedfab8c10fa722183caf5e7bd754a9b45a4bffb3b550b34915165a0 +size 80602 diff --git a/exp/2026/01/28/smas/fig/10-input-smas06-muscle02-smas.png b/exp/2026/01/28/smas/fig/10-input-smas06-muscle02-smas.png new file mode 100644 index 000000000..3016ca0b4 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas06-muscle02-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b47b1de870944eb06b672f428e97ce7120075ff75b19ea9ba10b43f7524d351 +size 79896 diff --git a/exp/2026/01/28/smas/fig/10-input-smas28.png b/exp/2026/01/28/smas/fig/10-input-smas28.png new file mode 100644 index 000000000..7c6986c63 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas28.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fb0c4f431e1abdb64e551f8fe3aee972374483bd592eef1cee3215936282c9e +size 121361 diff --git a/exp/2026/01/28/smas/fig/10-input-smas37.png b/exp/2026/01/28/smas/fig/10-input-smas37.png new file mode 100644 index 000000000..ef054926e --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas37.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:265778c97ebcb7fa022e032000ca28fa70dd6a249f91b68d784cd8305db7c631 +size 119207 diff --git a/exp/2026/01/28/smas/fig/10-input-smas46-muscle46-muscle.png b/exp/2026/01/28/smas/fig/10-input-smas46-muscle46-muscle.png new file mode 100644 index 000000000..80137c79c --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas46-muscle46-muscle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80f4d2dcb984661ffae989b1820a5c6cac865718ea3904cfa7ce6c88cb2940f2 +size 86391 diff --git a/exp/2026/01/28/smas/fig/10-input-smas46-muscle46-smas.png b/exp/2026/01/28/smas/fig/10-input-smas46-muscle46-smas.png new file mode 100644 index 000000000..31ba42189 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas46-muscle46-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1e4d47dad9129bcc6633160f6a3dd598ba2c2d76de735ac8a3580d8ce1e632a +size 114057 diff --git a/exp/2026/01/28/smas/fig/10-input-smas46.png b/exp/2026/01/28/smas/fig/10-input-smas46.png new file mode 100644 index 000000000..85b1b1a6b --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas46.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:963b49c050ec2c745b36243f067bd716ea91697f316e5c2c09f9ef7caa849bd5 +size 113822 diff --git a/exp/2026/01/28/smas/fig/10-input-smas8x-muscle8x-muscle.png b/exp/2026/01/28/smas/fig/10-input-smas8x-muscle8x-muscle.png new file mode 100644 index 000000000..f9bcffef2 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas8x-muscle8x-muscle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:775b46c3ed9739afc65da225451b31dbb3ef30dd439b3ba64d5b5ff438830dbe +size 64995 diff --git a/exp/2026/01/28/smas/fig/10-input-smas8x-muscle8x-smas.png b/exp/2026/01/28/smas/fig/10-input-smas8x-muscle8x-smas.png new file mode 100644 index 000000000..353509b8a --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-smas8x-muscle8x-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:291b0cce8a59f37d13b640587dade906fa4803b7a3b18ef790efc60ecf69bf64 +size 80726 diff --git a/exp/2026/01/28/smas/fig/10-input-subface-muscle-fraction.png b/exp/2026/01/28/smas/fig/10-input-subface-muscle-fraction.png new file mode 100644 index 000000000..9f33b0c83 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-subface-muscle-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa49716364b8e80d82a623b2e8442ea5c33d29ab32cd04e51cef1a4e33b69346 +size 80176 diff --git a/exp/2026/01/28/smas/fig/10-input-volume-muscle-fraction.png b/exp/2026/01/28/smas/fig/10-input-volume-muscle-fraction.png new file mode 100644 index 000000000..416da0096 --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-volume-muscle-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a2632b62fed522a0d7403c9fc8c2428d2d5223024413176293ad1bc2f788975 +size 382424 diff --git a/exp/2026/01/28/smas/fig/10-input-white.png b/exp/2026/01/28/smas/fig/10-input-white.png new file mode 100644 index 000000000..08723b7bf --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39a08a4e6073d9d613d9c4125667a659ebeed6a0cf44c35443cf48786fef7777 +size 35182 diff --git a/exp/2026/01/28/smas/fig/10-input-wireframe.png b/exp/2026/01/28/smas/fig/10-input-wireframe.png new file mode 100644 index 000000000..433ed0e5e --- /dev/null +++ b/exp/2026/01/28/smas/fig/10-input-wireframe.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:572c14ad91c186e3805a942ca271cc5729b755d394611cff2b5d40cd0d8d5610 +size 2711415 diff --git a/exp/2026/01/28/smas/fig/20-ext-force-bottom.png b/exp/2026/01/28/smas/fig/20-ext-force-bottom.png new file mode 100644 index 000000000..47dc9171b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-ext-force-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2ae14ec8fc63dcc4d5aad502f7b9c0ddf2f4acd96191d774773d48e444f1da7 +size 2022703 diff --git a/exp/2026/01/28/smas/fig/20-ext-force-noprestrain-1e-1.png b/exp/2026/01/28/smas/fig/20-ext-force-noprestrain-1e-1.png new file mode 100644 index 000000000..b2d038cb8 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-ext-force-noprestrain-1e-1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff7bde56e557f7983ed73a44ad529923366864389d37d5992d8805d0d18c573d +size 173913 diff --git a/exp/2026/01/28/smas/fig/20-ext-force-noprestrain-1e0.png b/exp/2026/01/28/smas/fig/20-ext-force-noprestrain-1e0.png new file mode 100644 index 000000000..f7bb2e63c --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-ext-force-noprestrain-1e0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb0ce87a2c830867f0a325ca02d082df2d9f4359a706cbc1dbcf6d0bdd20d9aa +size 275090 diff --git a/exp/2026/01/28/smas/fig/20-ext-force-prestrain-1e-1.png b/exp/2026/01/28/smas/fig/20-ext-force-prestrain-1e-1.png new file mode 100644 index 000000000..83426556c --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-ext-force-prestrain-1e-1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be25308cf55ca343ea211b06f04f209969fbae6384636102cabab6824c76bd93 +size 101349 diff --git a/exp/2026/01/28/smas/fig/20-ext-force-prestrain-1e0.png b/exp/2026/01/28/smas/fig/20-ext-force-prestrain-1e0.png new file mode 100644 index 000000000..6f38d7d27 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-ext-force-prestrain-1e0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49109dea7dcb9e0e655bb69f1b517ca0e2dbe716716fc4194b237f34651bb2f0 +size 266043 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0-dirichlet.png new file mode 100644 index 000000000..6cd15ad2a --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f482cc7de1aaa37a4a495dd8dc98a36109810fceb0e4221f5c7697fe7c034bac +size 94639 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0-smas.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0-smas.png new file mode 100644 index 000000000..ea2f11ae6 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7ce39a4da7176de75b902da42fb80f7d1da42138b692ed68bdd231697a4c675 +size 100049 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0.png new file mode 100644 index 000000000..ee9c960e6 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-1.0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f35608b4d864aeb94e6d76d9da93ca29866c832b77385b28bface9d9675d65f8 +size 62648 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-dirichlet.png new file mode 100644 index 000000000..69db98e7c --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d6b39f471d7284b2269389692ffe1589ba97f7082974c54e1b183b59f1b6c6 +size 59653 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-smas-zoom.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-smas-zoom.png new file mode 100644 index 000000000..b41fe5b7f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-smas-zoom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:277f8b36fe703929800d71a409d781bf33f4b6f41d856b03eba386564387a2ea +size 1100518 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-smas.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-smas.png new file mode 100644 index 000000000..1d124fb91 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f94aa62285e817605fd9786ba0bf1cc261d40b49bab6aeac7abf26c883edc3a +size 101538 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0.png new file mode 100644 index 000000000..75f09b3cc --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-2.0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b780eb527f5328efd3c7c909c44a59be7e10aab6ac40a87be8591f1b44083f2 +size 77407 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0-dirichlet.png new file mode 100644 index 000000000..14e663a41 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbe4563d3be0718dac7d0b1f20bb7eeb7ca181d6558653e0e8690d314e0ad8b5 +size 61515 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0-smas.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0-smas.png new file mode 100644 index 000000000..6b43ee67b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72f2877944c1d7b883d8b3c9002b3c7b14e0535c7015b913ab02e475f1d9ee34 +size 103627 diff --git a/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0.png b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0.png new file mode 100644 index 000000000..3d2c89e03 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-prestrain-arch-neo-hookean-2.0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef7179af4c312ffa74959eae4c1b9026f6bc5725f877df8e5b1a9c4f41bafefd +size 96865 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-clip-white.png b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-clip-white.png new file mode 100644 index 000000000..b32312848 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-clip-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57bed2b1122bdc2c02eb5890d9fe67b70ff1ce09db3c4339b984a84ddecf4fa8 +size 68421 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-clip.png b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-clip.png new file mode 100644 index 000000000..d4ca861b0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd2ee8e290b147f6aebacc89755a2ebdb6bf242650d419c236ba19e666093389 +size 91145 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-smas.png new file mode 100644 index 000000000..02bf03036 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcd0c343b6809324a0359f824c2555582681d1f4d3aee34a751a4ac637184137 +size 109425 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-top.png b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-top.png new file mode 100644 index 000000000..c55bda11a --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01277ae6842e9d09e95cf479346a7fd71571aadfc8a20fa1aafb92b64831f1dc +size 446791 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2.png b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2.png new file mode 100644 index 000000000..e4d0002ab --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas02-muscle02-act2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfcabda8b28b2767c465bf4c5ae121a33cf4829fc8bf7cab1675d3376029b834 +size 127070 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-clip-white.png b/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-clip-white.png new file mode 100644 index 000000000..fbcf4699d --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-clip-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d353d6af4b035b99fc73cf8ff2821b5ca0c8b0d2fd656618aadcf5f3cd20bb3 +size 64068 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-top-same-color-map.png b/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-top-same-color-map.png new file mode 100644 index 000000000..02d3921d5 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-top-same-color-map.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:207b0c63748803ecd5ed241a32c0145b487b96b65a1e8c4ee067faca3db7b8c5 +size 359515 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-top.png b/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-top.png new file mode 100644 index 000000000..c0bf81564 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas04-muscle02-act2-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:901d67a77d400fbb1d8c5ae30c0204e67ee5d82c360eb8bfe36edeafc0cbdffa +size 416567 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-clip-white.png b/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-clip-white.png new file mode 100644 index 000000000..904547951 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-clip-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5e2f1432b64c9bbd1e8fde8146eaa4e73342a8bc2d80475898ac218a5b43649 +size 57785 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-top-same-color-map.png b/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-top-same-color-map.png new file mode 100644 index 000000000..7f5d1c6fd --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-top-same-color-map.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ac5eddce1e03af77c4d4fcba176d834525313c4985239359066b64303393970 +size 305390 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-top.png b/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-top.png new file mode 100644 index 000000000..1d6717587 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas06-muscle02-act2-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f7ac8b8e83d25c4ab93c3a29bd86305152c0531773ddcc3fa65f201e39d6b5f +size 385123 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act2-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act2-smas.png new file mode 100644 index 000000000..ce2e4c434 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act2-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aee12941aabd4d800c7c14546f04544e234367520a847cee386114c86876a21b +size 128007 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act2.png b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act2.png new file mode 100644 index 000000000..a9f173ddb --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7918946cff4a23510aace7f4b108486afe700f008384c0f1f32f39794101c8d5 +size 105274 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act3-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act3-smas.png new file mode 100644 index 000000000..c39608678 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act3-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43263f29b69569d44d4f0e9b05b38e0455d2372f18abbbf58630ec4a374c8134 +size 137157 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act3.png b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act3.png new file mode 100644 index 000000000..ce425d298 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe4db10101b8627b6b64563985828c080c458112fb052852c06fd29efe6e0b43 +size 121217 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act4-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act4-smas.png new file mode 100644 index 000000000..0ca916ec0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act4-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0965aa004f5469225f6351b6d8c9ac5ac31b2771079c6bb6f875aa17c2ae294b +size 143011 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act4.png b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act4.png new file mode 100644 index 000000000..2bf86b04f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas28-muscle46-act4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e596d17b66c2911518db22d1c6750e8b68b03ddd8d2dba816f3e948b403f6b1 +size 136306 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas37-muscle46-act2.png b/exp/2026/01/28/smas/fig/20-forward-smas37-muscle46-act2.png new file mode 100644 index 000000000..2d33da1fd --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas37-muscle46-act2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a95c95e23469d8d6fb55fada6cc28ee28efc4005285a0fb78f2d4c3e7539d22b +size 114869 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-clip.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-clip.png new file mode 100644 index 000000000..c8cd2f569 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cb2d8c54e242120d968e44fe4b59d82a251104243ff545af52e879b0ff20188 +size 150396 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e1-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e1-smas.png new file mode 100644 index 000000000..feb0fa5b0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e1-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d679ac5272cc1bede3158ac0cedf148d5996c20ec3081a654bf27b3e5c7a657 +size 135805 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e1.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e1.png new file mode 100644 index 000000000..9821e4292 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0357048915faa88a24e68e5eb321d6ff660d99e675405d8d7c37b4241e085f04 +size 121115 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e2-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e2-smas.png new file mode 100644 index 000000000..be803eae6 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e2-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f16aed4cce8dff8cd8043a27de8ddd731cf6d1687700068126b02a92db4a61cd +size 154969 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e2.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e2.png new file mode 100644 index 000000000..4cde7d4b0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3b77eb7bbd2a951b8c3500735499921f0848c62ac55fc8ba2f572a266eada02 +size 147676 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e3-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e3-smas.png new file mode 100644 index 000000000..4636c1cfb --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e3-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e307a41c736d90031ef6862b0b90fed68480a576c145ccf5c8c14f7ccf34415 +size 156407 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e3.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e3.png new file mode 100644 index 000000000..7c5420829 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2-stiff1e3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc7b8d2c62dfaccdf2f142d7d323e6806b9b923cd6ce0244169af54bb004f3c6 +size 148995 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2.png new file mode 100644 index 000000000..9718bd130 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-act2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7afc161897d5a449d3be3203e1631270da58410fffca1527efa7e0f334573ec1 +size 147033 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png new file mode 100644 index 000000000..ef0b3b481 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc866fa2185b2366fe7c11ad1ce3715a2a7c557599cf95ad58a543e45588b27 +size 159797 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png new file mode 100644 index 000000000..22f356197 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-coarse-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93cf9e4c7f9d533032904488c7aab369e88a20049ca3ec690001ab635a087825 +size 79038 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom-wireframe.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom-wireframe.png new file mode 100644 index 000000000..69489104f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom-wireframe.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:128a278843201a606ce9cfec966b538a21d98ffc889d28a27486bc7443eba4de +size 1646707 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png new file mode 100644 index 000000000..a4df2880b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d6f2da2b7eec602006df4fee02e9155629093bed4c4fdab2189a2ac89c66e9e +size 230042 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-x.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-x.png new file mode 100644 index 000000000..2a10455a0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-x.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb261e210a5dab3d54c7b68bad5da056141c66dac6a3bb1d69876bd40592e861 +size 3835599 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-y.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-y.png new file mode 100644 index 000000000..ab4b0eb7c --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-y.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:439cdecb9b38f055bf5164d8812873d666d813d0e3d2d9fb516c2706523a316f +size 3816800 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-z.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-z.png new file mode 100644 index 000000000..8fddbf38b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-disp-z.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:477edcb1475c962755c877726990c68eb593780607d33688f2c79ff58bae1d13 +size 3816388 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png new file mode 100644 index 000000000..fdb7c76ba --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8eeafd128880aedb9dc95f4a6cfa68d2fc1a3a8e7745ae4578424ced68ebe91 +size 280640 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-volume-change.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-volume-change.png new file mode 100644 index 000000000..0af3a15f6 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-volume-change.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb7e49840bcb65f4e5aa68d3dc945a1642090aec652191fb2f7af04ff68cd808 +size 527355 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1-bottom.png new file mode 100644 index 000000000..6f4c2999d --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b2e2b8ced1fcae6d092888b54e2813c28322e7109f093d9df4bcb1e89c5b3d3 +size 171535 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1-top.png new file mode 100644 index 000000000..19b333583 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-5e-1-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff03f3c055f1f87255f0bd7b0bc0ea82fe6d29f2cf0bbd512cf1dd061ea084a8 +size 122596 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1-bottom.png new file mode 100644 index 000000000..21aefaabe --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e63f266acc81ee2105abeec219a24b0365a5982e4621d307633b3d42843b84e +size 336784 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1-top.png new file mode 100644 index 000000000..395cec6fe --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d37e99014748e69be05be557dcc152d902de6c06bed044bca8bead5c813535 +size 134915 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1.png new file mode 100644 index 000000000..f574cd9f5 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-lambda-3-force-6e-1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae232b4196df69a84a02aaecae67e588e6c82afda94ee6e08c97965966074699 +size 153638 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.5-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.5-bottom.png new file mode 100644 index 000000000..a33c9bbaf --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.5-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b958058cfe77419f2cebe1502451dfb09835e62bb341a97e6cd0b4148caf96f2 +size 197030 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.5-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.5-top.png new file mode 100644 index 000000000..fa7655449 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.5-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ccb93ac3957e8a14829532d5d6ddca88431bfeb2f35af993a092baa04b3ad79 +size 146379 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.6-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.6-bottom.png new file mode 100644 index 000000000..38a1db15b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-0.6-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b77d257a27d0794eb7be32d54885a1a1791c2a75ed3a3985974061d146847fc +size 364336 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-1.0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-1.0-bottom.png new file mode 100644 index 000000000..66ac97358 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-1.0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5888c5ed095baaef09d717eb5175f2304970a250b1db086c88ed11e20e73bcd +size 240368 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-1.0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-1.0-top.png new file mode 100644 index 000000000..88d48ff39 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-conform-prestrain-ext-force-stable-neo-hookean-ramped-lambda-3-force-1e0-steps-20-1.0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9640efe112b9df4f38cf0aa28b98ecb1892ec8b9647cf94231a9a339cd0be8a +size 265917 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10-smas.png new file mode 100644 index 000000000..b9701261f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:086fd0aae6621a6f158e665a9d1cfdc9acaa0401d3b3447a50e46895d28a6cf7 +size 123985 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10-zoom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10-zoom.png new file mode 100644 index 000000000..5976c5d95 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10-zoom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3820f70c1ab998f70335b65f7de731d55f0394f5ce5b813b398d452959c20914 +size 359368 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10.png new file mode 100644 index 000000000..1665bde2f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act10.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a27b1875e27c61d1e23db5cd76e38bb4ad0e7c2f9feedeb4d8160323d3f7aed7 +size 155334 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act5.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act5.png new file mode 100644 index 000000000..493303261 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-act5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ca52fb9bd418a2d46e8efd8626ab096a4881903f2ac39074def8098558b81e8 +size 137592 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-neo-hookean-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-neo-hookean-smas.png new file mode 100644 index 000000000..6cac54bdc --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-neo-hookean-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0100a279fdefa59d7f0f18aecb4bf4514343228dfbe070615e1d8c07c8e50270 +size 101799 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3-dirichlet.png new file mode 100644 index 000000000..c237dd336 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a7a60fda49b781fb41b91ccf9bfa085f387a198859866ebfc180b73792b16a2 +size 89708 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3-smas.png new file mode 100644 index 000000000..1c8936de4 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-3-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd4efde697b80ade30248e8d9006fb6402621cde0594f7573713a3492d30a73b +size 117414 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49-dirichlet.png new file mode 100644 index 000000000..142af4111 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d50f009eb43fdf0d6b07fa3b62087dee9e5446012af8e9e18f1ff30303ec3e +size 108692 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49-smas.png new file mode 100644 index 000000000..9ab9247bb --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-49-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5451cb65a388eb6a80e01a0907a3513b4a24076b9af858223d574ab012d743aa +size 136517 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9-dirichlet.png new file mode 100644 index 000000000..e896d34b1 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad209f9ee1135e036b01918af754e5d05a77089b1579281fcef66131a0fc1ad +size 86639 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9-smas.png new file mode 100644 index 000000000..aee28b9ea --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-9-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ac7603c813e57e58488b37f2a9a65c08625261d85f7db26e23902544b42a7bf +size 126836 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0-bottom.png new file mode 100644 index 000000000..964b5b183 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84e17f7906c70f5166239029f4e6c0b61462e919631730c99d830a61a40f36e3 +size 296418 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0-top.png new file mode 100644 index 000000000..9ea42bf20 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-0-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c128c77359e833d03325a41912a00d261e0dc1b4bdd83058a94a568d7f3e394 +size 345229 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0-bottom.png new file mode 100644 index 000000000..60faa388f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e353de70672cb68edd9c7a6c0170a6c039089476e35cdc847c217d155d981b1f +size 227623 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0-top.png new file mode 100644 index 000000000..0868efa75 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56ab49d36fbce0111ac8a725fb059a4bf6a405a672522ceb9fa5cc0403a8c182 +size 270840 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0.png new file mode 100644 index 000000000..89eb09847 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-corotational-lambda-3-force-1e0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b037da7b8c2bd1d9ecc5d4e3e57cdc1007cbb3e6688c55b75d94337443cfccb +size 140094 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0-bottom.png new file mode 100644 index 000000000..31d097287 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c03f934028beae16233402883c461025189b718588d1612db01a9156950f668 +size 315701 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0.png new file mode 100644 index 000000000..1159f4ef1 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-neo-hookean-lambda-3-force-1e0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64277e03dac7f58ae65439126bddd581c88698de77acc994bfe3a9d05250512d +size 93949 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0-bottom.png new file mode 100644 index 000000000..7a7e4e280 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:914aedab0772fb98e95e173ee9548c3520a39d7b5066450b610158b69fee064f +size 254542 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0-top.png new file mode 100644 index 000000000..a8389bbfb --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-1e-1-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e249a1ad9e9233f9eb4de30d5b9871917d77bcc2f0860e880be9ef51545c5e80 +size 283272 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png new file mode 100644 index 000000000..1cdc1d63b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:936b2a5ee830bfaea48eaa866951b0eb5a3e3505e55af82e9da9258121fa7562 +size 189991 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png new file mode 100644 index 000000000..dec9305a9 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-3-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ee145912cc487b33623d5894be513736fcce101e6a320946aecd8e6e105016 +size 103688 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-bottom.png new file mode 100644 index 000000000..42a6f5aed --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:780f86f6e2094cb9a8efdffb7e8b8bc464387f96ae6d220c6b5f2b655f54016a +size 104712 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0-dirichlet.png new file mode 100644 index 000000000..5d6b3e4f5 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fb0bdb373c2551d4f7eae0db92cb27acb844f199ef3093266c17746c721a9fd +size 47018 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0-smas.png new file mode 100644 index 000000000..03596d1ad --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-prestrain-2.0-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e4c35a903a39dd368e6380a27e3d9dfc51e9d0e839fc2610605b31ae8048c02 +size 100301 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-top.png new file mode 100644 index 000000000..6ea1175bb --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00c4e8e567baf3c241d86562d8279d5547b47846758de0c615906126c04bc4ad +size 75549 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0-dirichlet.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0-dirichlet.png new file mode 100644 index 000000000..63338f7a3 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed328331e3476fca43d4ca0396a97c250bd3efaa9ca63a9d0ff2636a3102c279 +size 102951 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0-smas.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0-smas.png new file mode 100644 index 000000000..bb285a226 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-49-force-2e0-prestrain-2.0-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee91d920198ec51179b04075a4de93047d8abe2e71f4a6ccfa79a25ab3e0e979 +size 137707 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-bottom.png new file mode 100644 index 000000000..db54b90a6 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40556066a66399b241002bcd588dafb76c2f126a287cbc8d198ff438a5639f58 +size 189291 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-top.png new file mode 100644 index 000000000..d96caeabb --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-lambda-9-force-1e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e774d9a97288e5b4d7b16433b3448b48a5ed59b3c5ec8dcfdc3e6da57be4869f +size 90243 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2-bottom.png new file mode 100644 index 000000000..f6d0f1a3f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d7165f20eee62c8ae7c361af14c53cae4c588712bdd233bf68b19484443f402 +size 190161 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2-top.png new file mode 100644 index 000000000..ce70ed198 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-ext-force-stable-neo-hookean-uniform-5e-2-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f41a58f58c65ba75ee4f79ff92a4c954b027d75b4672066aaf9b8c0def5d0171 +size 147767 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-smas-clip.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-smas-clip.png new file mode 100644 index 000000000..53f2c1bbd --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain-smas-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b592c730989a3a9f793b4ceb9c1e31589fbfa62afe9ac85a66a365c576feec8 +size 139506 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain.png new file mode 100644 index 000000000..dc5dfdda1 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-prestrain.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b1e277052bd1d775005e11c0e50d2aadb18ce79c1ea6bbece0638ef8920763e +size 137270 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-bottom.png new file mode 100644 index 000000000..420b0219f --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f007754317c007c1aebb677a74cdfef694248e1c4260aae44138c24ab4fdc50a +size 546776 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-force.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-force.png new file mode 100644 index 000000000..af137ad59 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-force.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d11f584847ccbffb64261f1773428910fe64e6f1bd1d4608ccce5ef72d34208b +size 1070092 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-smas-fraction-bottom.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-smas-fraction-bottom.png new file mode 100644 index 000000000..27f15224e --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-smas-fraction-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb47e7a2bc577b71fd9ca88b1e61f25eefbaf4be1c38f0fc0324dcda000fe6f9 +size 540459 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-smas-fraction.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-smas-fraction.png new file mode 100644 index 000000000..3564de6d5 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-smas-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1a084e4513a64a5a381ec48d7962549672119ba6384328c622127ed8dcd2b09 +size 555683 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-top.png b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-top.png new file mode 100644 index 000000000..effa6721d --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas46-muscle46-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-3-force-2e0-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d31bd1d40b9764a23a1df4704c159ef5e9a7139644157f98c530dc2e44fdd21e +size 576702 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-act2-clip.png b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-act2-clip.png new file mode 100644 index 000000000..908c9e140 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-act2-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:542f32de816f77f5db489a379e6317003c335bca946a56b7f6a04a8dfb6248a3 +size 132170 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-act2.png b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-act2.png new file mode 100644 index 000000000..cdc466790 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-act2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4714ad123848fd5a8455211e12420b653e983c4ec4f9577eb8441fe8fc7b7e6a +size 147564 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-prestrain-smas-clip.png b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-prestrain-smas-clip.png new file mode 100644 index 000000000..eacbd35cc --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-prestrain-smas-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:745e6e1bfcc13f47d9ce2971859caa2dbdddfff04e40b808653ea7eaaf8d9d31 +size 105983 diff --git a/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-prestrain.png b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-prestrain.png new file mode 100644 index 000000000..d027d837b --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-forward-smas8x-muscle8x-prestrain.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f361750e35597685f83358fec38f10b93d81a3aea61dae6864459608e9e32e3 +size 107934 diff --git a/exp/2026/01/28/smas/fig/20-phace-bottom-solution.png b/exp/2026/01/28/smas/fig/20-phace-bottom-solution.png new file mode 100644 index 000000000..0612db4c4 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-phace-bottom-solution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4f1b74e4b25d65d9d887ab392c022c68a9dabcb44a5fc397cc4897a64242bf9 +size 270311 diff --git a/exp/2026/01/28/smas/fig/20-phace-clip-white.png b/exp/2026/01/28/smas/fig/20-phace-clip-white.png new file mode 100644 index 000000000..aa4ed04d2 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-phace-clip-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:561c5cde83a58eded135cf77fdaba8257fe287572f6d4f4e546697fb0ff4b36a +size 40646 diff --git a/exp/2026/01/28/smas/fig/20-phace-top-solution.png b/exp/2026/01/28/smas/fig/20-phace-top-solution.png new file mode 100644 index 000000000..236e2a0fe --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-phace-top-solution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab801594b64e23d197e9e0a28a6fada2bd3a544c4b5b85230bf51c58abdc2aac +size 433447 diff --git a/exp/2026/01/28/smas/fig/20-phace-white.png b/exp/2026/01/28/smas/fig/20-phace-white.png new file mode 100644 index 000000000..f413a4c90 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-phace-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca95e86c79098c465238f0fc2449522584426c1a14c1d1bce449c15ce89c2b9f +size 115337 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-bottom.png b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-bottom.png new file mode 100644 index 000000000..85361842e --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7952f3f4ad7cd384c0c1ca18b99a769094f620a01dc16f0e419b4bb72108614c +size 303492 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-clip.png b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-clip.png new file mode 100644 index 000000000..dfd5dc1fa --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a5ff028f29a291f712e68bf072bced0fed7b02b7e313c806ba1a8fd629b5dc2 +size 35719 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-top.png b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-top.png new file mode 100644 index 000000000..153ba1047 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28b1bd2064eb2027c9179739fb675c2924b25f0c02070adf9c8a245edc088cb9 +size 471763 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-white.png b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-white.png new file mode 100644 index 000000000..ffb033208 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aadd3053903a1771ac2e1b462d70cd77f392e91e3052972378b65f6889e1d719 +size 115545 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2.png b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2.png new file mode 100644 index 000000000..ffb033208 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e2-act2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aadd3053903a1771ac2e1b462d70cd77f392e91e3052972378b65f6889e1d719 +size 115545 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-bottom.png b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-bottom.png new file mode 100644 index 000000000..d59a2cea1 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c596da4eacc7376345f1285712884a9edf6d5bb39872c6cc3fcfbfc0cf29869 +size 306538 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-clip.png b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-clip.png new file mode 100644 index 000000000..7d49c35c0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aa9710212fabca3a5ec97a6e28b6e728104dee31f14b82f0614ab9c042c77a1 +size 36001 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-top.png b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-top.png new file mode 100644 index 000000000..4b947a137 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c61dc1812801290563f8dd14e78255c3b37f519bc748d959bba6f3fd8d2de71 +size 477381 diff --git a/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-white.png b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-white.png new file mode 100644 index 000000000..a43a45c1d --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-smas-mu1e3-act2-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01d869682413ca0971b11e72eaa20e689ef3ca4876acf1a3d44f6a13dd413460 +size 117219 diff --git a/exp/2026/01/28/smas/fig/20-snh-arch2-lambda3-dirichlet.png b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda3-dirichlet.png new file mode 100644 index 000000000..cc44282f0 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda3-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8c0a443187b2e1a72ec62ae0b2185acb262a0aa9ee53ecf0c36551c77a3f1d3 +size 68796 diff --git a/exp/2026/01/28/smas/fig/20-snh-arch2-lambda3-smas.png b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda3-smas.png new file mode 100644 index 000000000..946c9cebf --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda3-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a0c521dfc1098b6db7d2e8b6e802045ce114fd48d661162fef86fae19ae3751 +size 103429 diff --git a/exp/2026/01/28/smas/fig/20-snh-arch2-lambda49-dirichlet.png b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda49-dirichlet.png new file mode 100644 index 000000000..c15229b74 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda49-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52b1370ebadf11bfbd6bf52797755e42fc199c26b0fb13b3a8ff579e6da0824c +size 64219 diff --git a/exp/2026/01/28/smas/fig/20-snh-arch2-lambda49-smas.png b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda49-smas.png new file mode 100644 index 000000000..b9ad3acd3 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda49-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07137ea06edae146a360d3697c1e0016c448599b0a28d3b3660c67f62a266c4d +size 98576 diff --git a/exp/2026/01/28/smas/fig/20-snh-arch2-lambda9-dirichlet.png b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda9-dirichlet.png new file mode 100644 index 000000000..8aa9a42e4 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda9-dirichlet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03d4210885578a39e6977dedc9ea66ef9d1d269dd995ddb7038934d617930190 +size 59214 diff --git a/exp/2026/01/28/smas/fig/20-snh-arch2-lambda9-smas.png b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda9-smas.png new file mode 100644 index 000000000..5a6c15328 --- /dev/null +++ b/exp/2026/01/28/smas/fig/20-snh-arch2-lambda9-smas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:247da3aaf3f3832652e0aca76322efa850a15bc7674354ca2c35edb90e1819ba +size 107770 diff --git a/exp/2026/01/28/smas/fig/21-smas-bottom-muscle-fraction.png b/exp/2026/01/28/smas/fig/21-smas-bottom-muscle-fraction.png new file mode 100644 index 000000000..41cb81a97 --- /dev/null +++ b/exp/2026/01/28/smas/fig/21-smas-bottom-muscle-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a72de5d0bacb0b3ff57650cf3b88c4b05cdcd05089a00713c5e35b38b32db0ab +size 75210 diff --git a/exp/2026/01/28/smas/fig/21-smas-bottom-solution.png b/exp/2026/01/28/smas/fig/21-smas-bottom-solution.png new file mode 100644 index 000000000..de18bf01f --- /dev/null +++ b/exp/2026/01/28/smas/fig/21-smas-bottom-solution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e71e8b9e536ce93090832126d81cd9bd9e708ed33ea0cc1e37408bb192cfc15d +size 385525 diff --git a/exp/2026/01/28/smas/fig/21-smas-clip-white.png b/exp/2026/01/28/smas/fig/21-smas-clip-white.png new file mode 100644 index 000000000..861582755 --- /dev/null +++ b/exp/2026/01/28/smas/fig/21-smas-clip-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9e27d9f42c2feda163741452386deebe77786885452baa2e7c83ddff68ef758 +size 42464 diff --git a/exp/2026/01/28/smas/fig/21-smas-top-solution.png b/exp/2026/01/28/smas/fig/21-smas-top-solution.png new file mode 100644 index 000000000..c3377223d --- /dev/null +++ b/exp/2026/01/28/smas/fig/21-smas-top-solution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dc045d933fd2932115ebf10128449d2180a6c464389ae9d8e74176faa4380c4 +size 522649 diff --git a/exp/2026/01/28/smas/fig/21-smas-white.png b/exp/2026/01/28/smas/fig/21-smas-white.png new file mode 100644 index 000000000..a143526fe --- /dev/null +++ b/exp/2026/01/28/smas/fig/21-smas-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b04e10b3327bafa4c5fcc5fce6bd4d29266baeec0e112798196b1f62893e7342 +size 126502 diff --git a/exp/2026/01/28/smas/fig/30-inverse-diff-clip.png b/exp/2026/01/28/smas/fig/30-inverse-diff-clip.png new file mode 100644 index 000000000..1044a37aa --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-diff-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:957abf0416031754030fbcfd1c7ccd65fe2c8036999d318c35ad2cb719887234 +size 113773 diff --git a/exp/2026/01/28/smas/fig/30-inverse-diff.png b/exp/2026/01/28/smas/fig/30-inverse-diff.png new file mode 100644 index 000000000..5bdb460e7 --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-diff.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4068306bf73936d895cb6a20fa2de9d890e03c64f431633fddd1e3964bff193 +size 111251 diff --git a/exp/2026/01/28/smas/fig/30-inverse-solution-clip.png b/exp/2026/01/28/smas/fig/30-inverse-solution-clip.png new file mode 100644 index 000000000..ebcace929 --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-solution-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe5515ad2f2e8c51822e14fecbd9086b453eb579561cce1459f69383da160868 +size 69153 diff --git a/exp/2026/01/28/smas/fig/30-inverse-solution.png b/exp/2026/01/28/smas/fig/30-inverse-solution.png new file mode 100644 index 000000000..f5b6680eb --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-solution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ac5d4e0ee924ef22592121068f77070f112c5ec3fedfae732bef332b6d0a754 +size 141375 diff --git a/exp/2026/01/28/smas/fig/30-inverse-target-clip.png b/exp/2026/01/28/smas/fig/30-inverse-target-clip.png new file mode 100644 index 000000000..b32312848 --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-target-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57bed2b1122bdc2c02eb5890d9fe67b70ff1ce09db3c4339b984a84ddecf4fa8 +size 68421 diff --git a/exp/2026/01/28/smas/fig/30-inverse-unreachable-diff-clip.png b/exp/2026/01/28/smas/fig/30-inverse-unreachable-diff-clip.png new file mode 100644 index 000000000..4a7d2614a --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-unreachable-diff-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea7da175178e203469c07352ca10486065ecc3662afef6c8d818e4c3875213a6 +size 160646 diff --git a/exp/2026/01/28/smas/fig/30-inverse-unreachable-diff.png b/exp/2026/01/28/smas/fig/30-inverse-unreachable-diff.png new file mode 100644 index 000000000..fdce9bfe4 --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-unreachable-diff.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b68f7755d69c2d59c1b022c26e7382b4c2eaca8a54011edd4f2ea98b821a98cd +size 244559 diff --git a/exp/2026/01/28/smas/fig/30-inverse-unreachable-smas-clip.png b/exp/2026/01/28/smas/fig/30-inverse-unreachable-smas-clip.png new file mode 100644 index 000000000..5a8544501 --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-unreachable-smas-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9479ed2874fbb7e92abdeb344ac2d96fc52470db999872817858afa76ef51733 +size 105481 diff --git a/exp/2026/01/28/smas/fig/30-inverse-unreachable-solution-clip.png b/exp/2026/01/28/smas/fig/30-inverse-unreachable-solution-clip.png new file mode 100644 index 000000000..11c481bb3 --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-unreachable-solution-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54bbe6c8fd538a0317b644e3ae80f78eaa55f471757bb6f7b8de77334a6a19c8 +size 64383 diff --git a/exp/2026/01/28/smas/fig/30-inverse-unreachable-target-clip.png b/exp/2026/01/28/smas/fig/30-inverse-unreachable-target-clip.png new file mode 100644 index 000000000..9de458acf --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-unreachable-target-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c572fafdb6a23c84f1e379a640664a4198222d6a6969106ad8562c2bcc899872 +size 29779 diff --git a/exp/2026/01/28/smas/fig/30-inverse-unreachable-target.png b/exp/2026/01/28/smas/fig/30-inverse-unreachable-target.png new file mode 100644 index 000000000..5bf1d47ab --- /dev/null +++ b/exp/2026/01/28/smas/fig/30-inverse-unreachable-target.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0635cae6d6f0bef8b9094941838f8576c9e47cb038a328d7a7e95ebcbdb52e4 +size 20720 diff --git a/exp/2026/01/28/smas/src/10-gen-conform.py b/exp/2026/01/28/smas/src/10-gen-conform.py new file mode 100644 index 000000000..25c1a6fa2 --- /dev/null +++ b/exp/2026/01/28/smas/src/10-gen-conform.py @@ -0,0 +1,104 @@ +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ( + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + MUSCLE_FRACTION, + SMAS_FRACTION, +) + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + coarsen: bool = env.bool("COARSEN", False) + lr: float = env.float("LR", 0.01) + + +def make_surface() -> pv.PolyData: + surface: pv.PolyData = pv.Box((0.0, 10.0, 0.0, 1.0, 0.0, 10.0), quads=False) + return surface + + +def make_muscle() -> pv.PolyData: + muscle: pv.PolyData = pv.Box((0.0, 5.0, 0.4, 0.6, 4.0, 6.0), quads=False) + return muscle + + +def make_smas() -> pv.PolyData: + smas: pv.PolyData = pv.Box((0.0, 10.0, 0.4, 0.6, 0.0, 10.0), quads=False) + return smas + + +def make_tetwild_input( + surface: pv.PolyData, smas: pv.PolyData, muscle: pv.PolyData +) -> pv.PolyData: + del muscle + tetwild_input: pv.PolyData = pv.merge([surface, smas]) + return tetwild_input + + +def make_tetmesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_surface() + muscle = make_muscle() + smas = make_smas() + tetwild_input = make_tetwild_input(surface, smas, muscle) + tetmesh: pv.UnstructuredGrid = melon.tetwild( + tetwild_input, lr=cfg.lr, coarsen=cfg.coarsen + ) + tetmesh.cell_data[MUSCLE_FRACTION] = np.asarray( + melon.tet.compute_volume_fraction(tetmesh, muscle) + ) + tetmesh.cell_data[SMAS_FRACTION] = np.asarray( + melon.tet.compute_volume_fraction(tetmesh, smas) + ) + # binarize the fractions to make the mesh conforming + tetmesh.cell_data[SMAS_FRACTION] = np.where( + tetmesh.cell_data[SMAS_FRACTION] > 0.5, 1.0, 0.0 + ) + + eps = 1e-2 + tetmesh.point_data[DIRICHLET_MASK] = np.broadcast_to( + ( + (tetmesh.points[:, 0] < eps) + | (tetmesh.points[:, 0] > 10.0 - eps) + | (tetmesh.points[:, 2] < eps) + | (tetmesh.points[:, 2] > 10.0 - eps) + )[:, np.newaxis], + (tetmesh.n_points, 3), + ) + tetmesh.point_data[DIRICHLET_MASK][:, 1] |= tetmesh.points[:, 1] < eps # pyright: ignore[reportArgumentType] + tetmesh.point_data[DIRICHLET_VALUE] = np.zeros((tetmesh.n_points, 3)) + + tetmesh.point_data[GLOBAL_POINT_ID] = np.arange(tetmesh.n_points) + + return tetmesh + + +def make_subface(mesh: pv.UnstructuredGrid) -> pv.PolyData: + surface: pv.PolyData = mesh.extract_surface() # pyright: ignore[reportAssignmentType] + subface: pv.PolyData = melon.tri.extract_points( + surface, surface.points[:, 1] < 1e-3, adjacent_cells=False + ) + return subface + + +def make_output_path(cfg: Config) -> str: + suffix = "-smas46-muscle46" + if cfg.coarsen: + suffix += "-coarse" + suffix += "-conform" + return f"10-input{suffix}.vtu" + + +def main(cfg: Config) -> None: + tetmesh: pv.UnstructuredGrid = make_tetmesh(cfg) + # subface: pv.PolyData = make_subface(tetmesh) + melon.save(cherries.output(make_output_path(cfg)), tetmesh) + # melon.save(cherries.output("10-subface-conform.vtp"), subface) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/10-gen-ellipsoid.py b/exp/2026/01/28/smas/src/10-gen-ellipsoid.py new file mode 100644 index 000000000..e6c06aa89 --- /dev/null +++ b/exp/2026/01/28/smas/src/10-gen-ellipsoid.py @@ -0,0 +1,82 @@ +import numpy as np +import pyvista as pv +from liblaf.apple.consts import ( + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + MUSCLE_FRACTION, +) + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + pass + + +def make_surface() -> pv.PolyData: + surface: pv.PolyData = pv.Box((0.0, 10.0, 0.0, 1.0, 0.0, 10.0), quads=False) + return surface + + +def make_muscle() -> pv.PolyData: + muscle: pv.PolyData = pv.ParametricEllipsoid(5.0, 0.1, 1.0) + muscle.translate((0.0, 0.5, 5.0), inplace=True) + muscle.triangulate(inplace=True) + muscle.compute_normals(auto_orient_normals=True, inplace=True) + melon.save(cherries.temp("10-muscle-ellipsoid.vtp"), muscle) + return muscle + + +def make_smas() -> pv.PolyData: + smas: pv.PolyData = pv.Box((0.0, 10.0, 0.4, 0.6, 0.0, 10.0), quads=False) + return smas + + +def make_tetmesh() -> pv.UnstructuredGrid: + surface = make_surface() + muscle = make_muscle() + smas = make_smas() + tetmesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=0.01) + tetmesh.cell_data[MUSCLE_FRACTION] = np.asarray( + melon.tet.compute_volume_fraction(tetmesh, muscle) + ) + tetmesh.cell_data["SmasFraction"] = np.asarray( + melon.tet.compute_volume_fraction(tetmesh, smas) + ) + + EPS = 1e-3 + tetmesh.point_data[DIRICHLET_MASK] = np.broadcast_to( + ( + (tetmesh.points[:, 0] < EPS) + | (tetmesh.points[:, 0] > 10.0 - EPS) + | (tetmesh.points[:, 2] < EPS) + | (tetmesh.points[:, 2] > 10.0 - EPS) + )[:, np.newaxis], + (tetmesh.n_points, 3), + ) + tetmesh.point_data[DIRICHLET_MASK][:, 1] |= tetmesh.points[:, 1] < EPS # pyright: ignore[reportArgumentType] + tetmesh.point_data[DIRICHLET_VALUE] = np.zeros((tetmesh.n_points, 3)) + + tetmesh.point_data[GLOBAL_POINT_ID] = np.arange(tetmesh.n_points) + + return tetmesh + + +def make_subface(mesh: pv.UnstructuredGrid) -> pv.PolyData: + surface: pv.PolyData = mesh.extract_surface() # pyright: ignore[reportAssignmentType] + subface: pv.PolyData = melon.tri.extract_points( + surface, surface.points[:, 1] < 1e-3, adjacent_cells=False + ) + return subface + + +def main(_cfg: Config) -> None: + tetmesh: pv.UnstructuredGrid = make_tetmesh() + # subface: pv.PolyData = make_subface(tetmesh) + melon.save(cherries.output("10-input-ellipsoid.vtu"), tetmesh) + # melon.save(cherries.output("10-subface.vtp"), subface) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/10-gen.py b/exp/2026/01/28/smas/src/10-gen.py new file mode 100644 index 000000000..d2821ef29 --- /dev/null +++ b/exp/2026/01/28/smas/src/10-gen.py @@ -0,0 +1,78 @@ +import numpy as np +import pyvista as pv +from liblaf.apple.consts import ( + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + MUSCLE_FRACTION, +) + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + pass + + +def make_surface() -> pv.PolyData: + surface: pv.PolyData = pv.Box((0.0, 10.0, 0.0, 1.0, 0.0, 10.0), quads=False) + return surface + + +def make_muscle() -> pv.PolyData: + muscle: pv.PolyData = pv.Box((0.0, 5.0, 0.4, 0.6, 4.0, 6.0), quads=False) + return muscle + + +def make_smas() -> pv.PolyData: + smas: pv.PolyData = pv.Box((0.0, 10.0, 0.4, 0.6, 0.0, 10.0), quads=False) + return smas + + +def make_tetmesh() -> pv.UnstructuredGrid: + surface = make_surface() + muscle = make_muscle() + smas = make_smas() + tetmesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=0.01) + tetmesh.cell_data[MUSCLE_FRACTION] = np.asarray( + melon.tet.compute_volume_fraction(tetmesh, muscle) + ) + tetmesh.cell_data["SmasFraction"] = np.asarray( + melon.tet.compute_volume_fraction(tetmesh, smas) + ) + + EPS = 1e-2 + tetmesh.point_data[DIRICHLET_MASK] = np.broadcast_to( + ( + (tetmesh.points[:, 0] < EPS) + | (tetmesh.points[:, 0] > 10.0 - EPS) + | (tetmesh.points[:, 2] < EPS) + | (tetmesh.points[:, 2] > 10.0 - EPS) + )[:, np.newaxis], + (tetmesh.n_points, 3), + ) + tetmesh.point_data[DIRICHLET_MASK][:, 1] |= tetmesh.points[:, 1] < EPS # pyright: ignore[reportArgumentType] + tetmesh.point_data[DIRICHLET_VALUE] = np.zeros((tetmesh.n_points, 3)) + + tetmesh.point_data[GLOBAL_POINT_ID] = np.arange(tetmesh.n_points) + + return tetmesh + + +def make_subface(mesh: pv.UnstructuredGrid) -> pv.PolyData: + surface: pv.PolyData = mesh.extract_surface() # pyright: ignore[reportAssignmentType] + subface: pv.PolyData = melon.tri.extract_points( + surface, surface.points[:, 1] < 1e-3, adjacent_cells=False + ) + return subface + + +def main(_cfg: Config) -> None: + tetmesh: pv.UnstructuredGrid = make_tetmesh() + # subface: pv.PolyData = make_subface(tetmesh) + melon.save(cherries.output("10-input-smas46-muscle46.vtu"), tetmesh) + # melon.save(cherries.output("10-subface.vtp"), subface) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/11-smas-bottom-force.py b/exp/2026/01/28/smas/src/11-smas-bottom-force.py new file mode 100644 index 000000000..580d66083 --- /dev/null +++ b/exp/2026/01/28/smas/src/11-smas-bottom-force.py @@ -0,0 +1,109 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import GLOBAL_POINT_ID, SMAS_FRACTION + +from liblaf import cherries, melon + +FORCE = "Force" +IS_SMAS_TET = "IsSmasTet" +IS_SMAS_BOTTOM_FORCE_POINT = "IsSmasBottomForcePoint" +SMAS_BOTTOM_PROJECTED_POINT_AREA = "SmasBottomProjectedPointArea" +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + output: Path = cherries.output(f"11-input{SUFFIX}-smas-bottom-force.vtu") + smas_threshold: float = env.float("SMAS_THRESHOLD", 1.0e-2) + y_threshold: float = env.float("Y_THRESHOLD", 0.5) + boundary_tolerance: float = env.float("BOUNDARY_TOLERANCE", 1.0e-6) + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def extract_smas_tets( + mesh: pv.UnstructuredGrid, smas_threshold: float +) -> pv.UnstructuredGrid: + smas_mask: np.ndarray = np.asarray(mesh.cell_data[SMAS_FRACTION] > smas_threshold) + if not np.any(smas_mask): + raise ValueError( + f"no SMAS tetrahedra found with {SMAS_FRACTION} > {smas_threshold:g}" + ) + smas_tets: pv.UnstructuredGrid = mesh.extract_cells(smas_mask) + smas_tets.cell_data[IS_SMAS_TET] = np.ones(smas_tets.n_cells, dtype=bool) + smas_tets.point_data[GLOBAL_POINT_ID] = np.arange(smas_tets.n_points) + return smas_tets + + +def compute_bottom_force( + smas_tets: pv.UnstructuredGrid, y_threshold: float, boundary_tolerance: float +) -> np.ndarray: + surface: pv.PolyData = smas_tets.extract_surface(algorithm=None) + faces: np.ndarray = surface.regular_faces + face_points: np.ndarray = np.asarray(surface.points[faces]) + face_x: np.ndarray = face_points[:, :, 0] + face_y: np.ndarray = face_points[:, :, 1] + face_z: np.ndarray = face_points[:, :, 2] + + x_min, x_max, _, _, z_min, z_max = smas_tets.bounds + is_below_y_threshold: np.ndarray = np.all(face_y < y_threshold, axis=1) + is_on_x_boundary: np.ndarray = np.all( + np.isclose(face_x, x_min, atol=boundary_tolerance), axis=1 + ) | np.all(np.isclose(face_x, x_max, atol=boundary_tolerance), axis=1) + is_on_z_boundary: np.ndarray = np.all( + np.isclose(face_z, z_min, atol=boundary_tolerance), axis=1 + ) | np.all(np.isclose(face_z, z_max, atol=boundary_tolerance), axis=1) + bottom_cell_mask: np.ndarray = ( + is_below_y_threshold & ~is_on_x_boundary & ~is_on_z_boundary + ) + if not np.any(bottom_cell_mask): + raise ValueError("no bottom SMAS surface triangles found") + + edge_01_x: np.ndarray = face_x[:, 1] - face_x[:, 0] + edge_01_z: np.ndarray = face_z[:, 1] - face_z[:, 0] + edge_02_x: np.ndarray = face_x[:, 2] - face_x[:, 0] + edge_02_z: np.ndarray = face_z[:, 2] - face_z[:, 0] + projected_cell_area: np.ndarray = 0.5 * np.abs( + edge_01_x * edge_02_z - edge_01_z * edge_02_x + ) + bottom_faces: np.ndarray = faces[bottom_cell_mask] + bottom_projected_cell_area: np.ndarray = projected_cell_area[bottom_cell_mask] + + point_area: np.ndarray = np.zeros(surface.n_points) + np.add.at( + point_area, + bottom_faces.reshape(-1), + np.repeat(bottom_projected_cell_area / 3.0, 3), + ) + + surface_point_id: np.ndarray = np.asarray(surface.point_data[GLOBAL_POINT_ID]) + force: np.ndarray = np.zeros((smas_tets.n_points, 3), dtype=smas_tets.points.dtype) + force[surface_point_id, 1] = point_area + return force + + +def apply_bottom_force( + mesh: pv.UnstructuredGrid, force: np.ndarray +) -> pv.UnstructuredGrid: + mesh.point_data[FORCE] = force + mesh.point_data[SMAS_BOTTOM_PROJECTED_POINT_AREA] = force[:, 1].copy() + mesh.point_data[IS_SMAS_BOTTOM_FORCE_POINT] = force[:, 1] > 0.0 + return mesh + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + smas_tets = extract_smas_tets(mesh, cfg.smas_threshold) + force = compute_bottom_force(smas_tets, cfg.y_threshold, cfg.boundary_tolerance) + smas_tets = apply_bottom_force(smas_tets, force) + melon.save(cfg.output, smas_tets) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-cond.py b/exp/2026/01/28/smas/src/20-cond.py new file mode 100644 index 000000000..00044a5fc --- /dev/null +++ b/exp/2026/01/28/smas/src/20-cond.py @@ -0,0 +1,102 @@ +from pathlib import Path + +import jax.numpy as jnp +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, SMAS_FRACTION +from liblaf.apple.model import Forward, Model, ModelBuilder + +from liblaf import cherries, melon +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + input: Path = cherries.input("10-input-coarse.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][:, 0] = cfg.activation # pyright: ignore[reportArgumentType] + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + + return mesh + + +def build(mesh: pv.UnstructuredGrid) -> Forward: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e0) + energy_aponeurosis: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e0) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0e0 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + # forward: Forward = Forward(model, optimizer=ScipyOptimizer(method="L-BFGS-B")) + forward: Forward = Forward(model) + return forward + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + forward: Forward = build(mesh) + + H_diag = forward.model.hess_diag(forward.state) + print(H_diag) + + def matvec(v: np.ndarray) -> np.ndarray: + v_full = forward.model.dirichlet.to_full(jnp.asarray(v)) + output = forward.model.hess_prod(forward.state, v_full) + output /= H_diag + output = forward.model.dirichlet.get_free(output) + return np.asarray(output) + + import pylops + + hess_op = pylops.FunctionOperator( + matvec, matvec, forward.model.n_free, forward.model.n_free, dtype=np.float64 + ) + hess: np.ndarray = hess_op.todense() + ic(np.linalg.cond(hess)) + # print(hess) + # print(np.linalg.eigvals(hess)) + # print(np.linalg.eigvals(hess).max()) + # print(np.linalg.eigvals(hess).min()) + # ic(np.max(np.abs(hess)) / np.min(np.abs(hess))) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet-neo-hookean.py b/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet-neo-hookean.py new file mode 100644 index 000000000..c2aa9b508 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet-neo-hookean.py @@ -0,0 +1,193 @@ +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Model, ModelBuilder, ModelState +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Objective, Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpNeoHookean, WarpNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + arch_height: float = env.float("ARCH_HEIGHT", 2.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def compute_arch_profile( + mesh: pv.UnstructuredGrid, + arch_height: float, + points: np.ndarray | None = None, +) -> np.ndarray: + if points is None: + points = mesh.points + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + bottom_points: np.ndarray = mesh.points[bottom_mask] + + x_min, x_max = bottom_points[:, 0].min(), bottom_points[:, 0].max() + z_min, z_max = bottom_points[:, 2].min(), bottom_points[:, 2].max() + x_center = 0.5 * (x_min + x_max) + z_center = 0.5 * (z_min + z_max) + x_hat: np.ndarray = 2.0 * (points[:, 0] - x_center) / (x_max - x_min) + z_hat: np.ndarray = 2.0 * (points[:, 2] - z_center) / (z_max - z_min) + arch: np.ndarray = arch_height * (1.0 - x_hat**2) * (1.0 - z_hat**2) + return np.clip(arch, 0.0, None) + + +def apply_bottom_arch_dirichlet( + mesh: pv.UnstructuredGrid, arch_height: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + arch: np.ndarray = compute_arch_profile(mesh, arch_height, mesh.points[bottom_mask]) + + mesh.point_data[DIRICHLET_MASK][bottom_mask] = True + mesh.point_data[DIRICHLET_VALUE][bottom_mask] = 0.0 + mesh.point_data[DIRICHLET_VALUE][bottom_mask, 1] = arch + return mesh + + +def build_phace_v3(mesh: pv.UnstructuredGrid, arch_height: float) -> Model: + builder = ModelBuilder() + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh = apply_bottom_arch_dirichlet(mesh, arch_height) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + # mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + # [5.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + energy_fat: WarpNeoHookean = WarpNeoHookean.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + energy_aponeurosis: WarpNeoHookeanMuscle = WarpNeoHookeanMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + energy_muscle: WarpNeoHookeanMuscle = WarpNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + model: Model = builder.finalize() + return model + + +def initialize_parabolic_guess( + model: Model, mesh: pv.UnstructuredGrid, arch_height: float +) -> None: + u_full: np.ndarray = np.zeros((model.n_points, model.dim), dtype=mesh.points.dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID], 1] = compute_arch_profile( + mesh, arch_height + ) + model.u_free = model.dirichlet.get_free(jnp.asarray(u_full)) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh, cfg.arch_height) + initialize_parabolic_guess(model, mesh, cfg.arch_height) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + ic(optimizer.max_delta) + optimizer.rtol = jnp.asarray(1e-5) + optimizer.rtol_primary = jnp.asarray(1e-6) + + def callback( + _objective: Objective[Any], + _model_state: ModelState, + opt_state: PNCG.State, + opt_stats: PNCG.Stats, + ) -> None: + cherries.log_metrics( + { + "objective/fun": _objective.fun(_model_state), + "optimizer/alpha": opt_state.alpha, + "optimizer/beta": opt_state.beta, + "optimizer/decrease": opt_state.decrease, + "optimizer/best_decrease": opt_state.best_decrease, + "optimizer/first_decrease": opt_state.first_decrease, + "optimizer/relative_decrease": opt_stats.relative_decrease, + "optimizer/grad_norm": jnp.linalg.norm(opt_state.grad), + "optimizer/grad_max_norm": jnp.linalg.norm(opt_state.grad, ord=jnp.inf), + "optimizer/hess_diag_min": jnp.min(opt_state.hess_diag), + "optimizer/hess_diag_max": jnp.max(opt_state.hess_diag), + "optimizer/hess_quad": opt_state.hess_quad, + "optimizer/search_direction_norm": jnp.linalg.norm( + opt_state.search_direction + ), + "optimizer/search_direction_max_norm": jnp.linalg.norm( + opt_state.search_direction, ord=jnp.inf + ), + "optimizer/step_norm": jnp.linalg.norm( + opt_state.alpha * opt_state.search_direction + ), + "optimizer/step_max_norm": jnp.linalg.norm( + opt_state.alpha * opt_state.search_direction, ord=jnp.inf + ), + "optimizer/stagnation_counter": opt_state.stagnation_counter, + "optimizer/stagnation_restarts": opt_state.stagnation_restarts, + "optimizer/time": opt_stats.time, + }, + step=opt_state.n_steps, + ) + + solve_callback: PNCG.Callback[ModelState] | None = None + if not optimizer.jit: + solve_callback = callback + solution: Optimizer.Solution = forward.step(callback=solve_callback) + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + f"20-forward{SUFFIX}-prestrain-bottom-dirichlet-arch-neo-hookean.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet-stable-neo-hookean.py b/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet-stable-neo-hookean.py new file mode 100644 index 000000000..f359ca4cb --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet-stable-neo-hookean.py @@ -0,0 +1,158 @@ +from pathlib import Path + +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + arch_height: float = env.float("ARCH_HEIGHT", 2.0) + lambda_value: float = env.float("LAMBDA_VALUE", 49.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_lambda_value(lambda_value: float) -> str: + if np.isclose(lambda_value, round(lambda_value)): + return str(int(round(lambda_value))) + mantissa, exponent = f"{lambda_value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def compute_arch_profile( + mesh: pv.UnstructuredGrid, + arch_height: float, + points: np.ndarray | None = None, +) -> np.ndarray: + if points is None: + points = mesh.points + bottom_mask: np.ndarray = mesh.points[:, 1] < 5e-3 + bottom_points: np.ndarray = mesh.points[bottom_mask] + + x_min, x_max = bottom_points[:, 0].min(), bottom_points[:, 0].max() + z_min, z_max = bottom_points[:, 2].min(), bottom_points[:, 2].max() + x_center = 0.5 * (x_min + x_max) + z_center = 0.5 * (z_min + z_max) + x_hat: np.ndarray = 2.0 * (points[:, 0] - x_center) / (x_max - x_min) + z_hat: np.ndarray = 2.0 * (points[:, 2] - z_center) / (z_max - z_min) + arch: np.ndarray = arch_height * (1.0 - x_hat**2) * (1.0 - z_hat**2) + return np.clip(arch, 0.0, None) + + +def apply_bottom_arch_dirichlet( + mesh: pv.UnstructuredGrid, arch_height: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 5e-3 + arch: np.ndarray = compute_arch_profile(mesh, arch_height, mesh.points[bottom_mask]) + + mesh.point_data[DIRICHLET_MASK][bottom_mask] = True + mesh.point_data[DIRICHLET_VALUE][bottom_mask] = 0.0 + mesh.point_data[DIRICHLET_VALUE][bottom_mask, 1] = arch + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, arch_height: float, lambda_value: float +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_arch_dirichlet(mesh, arch_height) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + # mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + # [4.0 - 1.0, 0.125 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + return builder.finalize() + + +def initialize_parabolic_guess( + model: Model, mesh: pv.UnstructuredGrid, arch_height: float +) -> None: + u_full: np.ndarray = np.zeros((model.n_points, model.dim), dtype=mesh.points.dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID], 1] = compute_arch_profile( + mesh, arch_height + ) + model.u_free = model.dirichlet.get_free(jnp.asarray(u_full)) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh, cfg.arch_height, cfg.lambda_value) + initialize_parabolic_guess(model, mesh, cfg.arch_height) + forward = Forward(model) + # optimizer = cast("PNCG", forward.optimizer) + # optimizer.rtol = jnp.asarray(1e-3) + # optimizer.rtol_primary = jnp.asarray(1e-5) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-prestrain-bottom-dirichlet-arch-stable-neo-hookean-lambda-" + f"{format_lambda_value(cfg.lambda_value)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet.py b/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet.py new file mode 100644 index 000000000..e5680b34c --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-bottom-dirichlet.py @@ -0,0 +1,131 @@ +from pathlib import Path +from typing import cast + +import jax.numpy as jnp +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import PNCG, Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + arch_height: float = env.float("ARCH_HEIGHT", 1.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def apply_bottom_arch_dirichlet( + mesh: pv.UnstructuredGrid, arch_height: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + bottom_points: np.ndarray = mesh.points[bottom_mask] + + x: np.ndarray = bottom_points[:, 0] + z: np.ndarray = bottom_points[:, 2] + x_min, x_max = x.min(), x.max() + z_min, z_max = z.min(), z.max() + x_center = 0.5 * (x_min + x_max) + z_center = 0.5 * (z_min + z_max) + x_hat: np.ndarray = 2.0 * (x - x_center) / (x_max - x_min) + z_hat: np.ndarray = 2.0 * (z - z_center) / (z_max - z_min) + arch: np.ndarray = arch_height * (1.0 - x_hat**2) * (1.0 - z_hat**2) + + mesh.point_data[DIRICHLET_MASK][bottom_mask] = True + mesh.point_data[DIRICHLET_VALUE][bottom_mask] = 0.0 + mesh.point_data[DIRICHLET_VALUE][bottom_mask, 1] = arch + return mesh + + +def build_phace_v3(mesh: pv.UnstructuredGrid, arch_height: float) -> Model: + builder = ModelBuilder() + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh = apply_bottom_arch_dirichlet(mesh, arch_height) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + # mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + # [5.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0e2 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh, cfg.arch_height) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.rtol = jnp.asarray(1e-5) + optimizer.rtol_primary = jnp.asarray(1e-10) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output(f"20-forward{SUFFIX}-prestrain-bottom-dirichlet-arch.vtu"), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-neo-hookean.py b/exp/2026/01/28/smas/src/20-forward-ext-force-neo-hookean.py new file mode 100644 index 000000000..33d91059c --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-neo-hookean.py @@ -0,0 +1,150 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpNeoHookean, WarpNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + force_scale: float = env.float("FORCE_SCALE", 1.0) + lambda_value: float = env.float("LAMBDA_VALUE", 3.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def format_lambda_value(lambda_value: float) -> str: + if np.isclose(lambda_value, round(lambda_value)): + return str(int(round(lambda_value))) + mantissa, exponent = f"{lambda_value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def apply_bottom_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + mesh.point_data[DIRICHLET_MASK][bottom_mask, :] = False + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + surface_bottom_mask: np.ndarray = surface.points[:, 1] < 1e-3 + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = ( + force_scale * surface.point_data["Area"][surface_bottom_mask] + ) + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, + activation: float, + force_scale: float, + lambda_value: float, +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_ext_force(mesh, force_scale) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + # mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + # [activation - 1.0, 0.25 - 1.0, activation - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value) + builder.add_energy(WarpNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy(WarpNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy( + WarpNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3( + mesh, cfg.activation, cfg.force_scale, cfg.lambda_value + ) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-5), + target_relative_gradient_norm=jnp.asarray(1e-6), + ) + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-prestrain-ext-force-neo-hookean-lambda-" + f"{format_lambda_value(cfg.lambda_value)}-force-" + f"{format_force_scale(cfg.force_scale)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-fat-only-top-dirichlet.py b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-fat-only-top-dirichlet.py new file mode 100644 index 000000000..3cc6f5c49 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-fat-only-top-dirichlet.py @@ -0,0 +1,158 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, +) +from liblaf.apple.jax import JaxPointForce, Region +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean + +SUFFIX: str = "-smas46-muscle46-coarse" + + +class Config(cherries.BaseConfig): + force_scale: float = env.float("FORCE_SCALE", 1.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + lambda_value: float = env.float("LAMBDA_VALUE", 3.0) + mu_value: float = env.float("MU_VALUE", 1.0) + surface_tolerance: float = env.float("SURFACE_TOLERANCE", 1.0e-2) + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def format_material_value(value: float) -> str: + if np.isclose(value, round(value)): + return str(round(value)) + mantissa, exponent = f"{value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def add_volume_change_ratio( + mesh: pv.UnstructuredGrid, u_full: jnp.ndarray +) -> pv.UnstructuredGrid: + region = Region.from_pyvista(mesh, grad=True) + deformation_gradient: np.ndarray = np.asarray(region.deformation_gradient(u_full)) + mesh.cell_data["VolumeChangeRatio"] = np.linalg.det(deformation_gradient[:, 0]) + return mesh + + +def apply_top_dirichlet( + mesh: pv.UnstructuredGrid, surface_tolerance: float +) -> pv.UnstructuredGrid: + top_y = mesh.bounds[3] + top_mask: np.ndarray = mesh.points[:, 1] >= top_y - surface_tolerance + + mesh.point_data[DIRICHLET_MASK] = np.zeros((mesh.n_points, 3), dtype=bool) + mesh.point_data[DIRICHLET_MASK][top_mask] = True + mesh.point_data[DIRICHLET_VALUE] = np.zeros( + (mesh.n_points, 3), dtype=mesh.points.dtype + ) + return mesh + + +def apply_bottom_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float, surface_tolerance: float +) -> pv.UnstructuredGrid: + bottom_y = mesh.bounds[2] + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + surface_bottom_mask: np.ndarray = surface.points[:, 1] <= ( + bottom_y + surface_tolerance + ) + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = ( + force_scale * surface.point_data["Area"][surface_bottom_mask] + ) + return mesh + + +def build_pure_fat_model( + mesh: pv.UnstructuredGrid, + force_scale: float, + lambda_value: float, + mu_value: float, + surface_tolerance: float, +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_top_dirichlet(mesh, surface_tolerance) + mesh = apply_bottom_ext_force(mesh, force_scale, surface_tolerance) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = np.ones((mesh.n_cells,)) + mesh.cell_data[MU] = np.full((mesh.n_cells,), mu_value) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_pure_fat_model( + mesh, + cfg.force_scale, + cfg.lambda_value, + cfg.mu_value, + cfg.surface_tolerance, + ) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + mesh = add_volume_change_ratio(mesh, forward.u_full) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-fat-only-top-dirichlet-ext-force-stable-neo-hookean-mu-" + f"{format_material_value(cfg.mu_value)}-lambda-" + f"{format_material_value(cfg.lambda_value)}-force-" + f"{format_force_scale(cfg.force_scale)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-ramped.py b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-ramped.py new file mode 100644 index 000000000..44f3c59f1 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-ramped.py @@ -0,0 +1,224 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce +from liblaf.apple.model import ( + Forward, + ForwardStage, + MaterialReference, + Model, + ModelBuilder, + StageState, +) +from liblaf.apple.optim import PNCG + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46-conform" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + force_scale: float = env.float("FORCE_SCALE", 1.0) + lambda_value: float = env.float("LAMBDA_VALUE", 3.0) + num_steps: int = env.int("NUM_STEPS", 20) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +@attrs.frozen +class ForceRampProgram: + unit_force: jnp.ndarray + + def state_at(self, *, progress: float, forward: Forward) -> StageState: + del forward + scale = jnp.asarray(progress, dtype=self.unit_force.dtype) + return StageState( + material_values={ + MaterialReference("force", "force"): scale * self.unit_force, + } + ) + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def format_lambda_value(lambda_value: float) -> str: + if np.isclose(lambda_value, round(lambda_value)): + return str(int(round(lambda_value))) + mantissa, exponent = f"{lambda_value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def make_output_stem(cfg: Config) -> str: + return ( + "20-forward" + f"{SUFFIX}-prestrain-ext-force-stable-neo-hookean-ramped-lambda-" + f"{format_lambda_value(cfg.lambda_value)}-force-" + f"{format_force_scale(cfg.force_scale)}-steps-{cfg.num_steps}" + ) + + +def make_force_scales(cfg: Config) -> np.ndarray: + if cfg.num_steps < 1: + raise ValueError(f"NUM_STEPS must be at least 1, got {cfg.num_steps}") + return np.linspace(0.0, cfg.force_scale, cfg.num_steps + 1) + + +def apply_bottom_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = (mesh.points[:, 1] < 1e-2) & ~mesh.point_data[ + DIRICHLET_MASK + ][:, 0] + mesh.point_data[DIRICHLET_MASK][bottom_mask, :] = False + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + surface_bottom_mask: np.ndarray = ( + surface.points[:, 1] < 1e-2 + ) & ~surface.point_data[DIRICHLET_MASK][:, 0] + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = ( + force_scale * surface.point_data["Area"][surface_bottom_mask] + ) + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, + activation: float, + lambda_value: float, +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_ext_force(mesh, 1.0) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [activation - 1.0, 0.25 - 1.0, activation - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def update_mesh_solution( + mesh: pv.UnstructuredGrid, + forward: Forward, + unit_force: np.ndarray, + *, + stage_index: int, + force_scale: float, +) -> pv.UnstructuredGrid: + mesh.point_data["Force"] = force_scale * unit_force + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + mesh.field_data["ForceScale"] = np.asarray([force_scale], dtype=float) + mesh.field_data["StageIndex"] = np.asarray([stage_index], dtype=int) + return mesh + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh, cfg.activation, cfg.lambda_value) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + force_ref = MaterialReference("force", "force") + unit_force = np.asarray(forward.read_material_values()[force_ref]) + force_program = ForceRampProgram(unit_force=jnp.asarray(unit_force)) + force_scales = make_force_scales(cfg) + + with melon.io.SeriesWriter( + cherries.output(f"{make_output_stem(cfg)}.vtu.series") + ) as writer: + for stage_index, force_scale in enumerate(force_scales): + stage = ForwardStage( + name=f"force-{format_force_scale(force_scale)}", + progress=float(force_scale), + initial_guess="zero" if stage_index == 0 else "last_successful", + ) + stage_result = forward.solve_stage(stage, state_program=force_program) + ic(stage_result) + if not stage_result.solver_result.success: + raise RuntimeError( + "forward stage failed at " + f"force scale {force_scale:g} with status " + f"{stage_result.solver_result.status}" + ) + cherries.set_step(stage_index) + mesh = update_mesh_solution( + mesh, + forward, + unit_force, + stage_index=stage_index, + force_scale=float(force_scale), + ) + writer.append(mesh, time=float(force_scale)) + + melon.save(cherries.output(f"{make_output_stem(cfg)}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-smas-only.py b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-smas-only.py new file mode 100644 index 000000000..147c68833 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-smas-only.py @@ -0,0 +1,142 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + force_scale: float = env.float("FORCE_SCALE", 1.0) + lambda_value: float = env.float("LAMBDA_VALUE", 3.0) + input: Path = cherries.input(f"11-input{SUFFIX}-smas-bottom-force.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def format_lambda_value(lambda_value: float) -> str: + if np.isclose(lambda_value, round(lambda_value)): + return str(int(round(lambda_value))) + mantissa, exponent = f"{lambda_value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def apply_stored_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + if "Force" not in mesh.point_data: + raise KeyError( + "mesh is missing point_data['Force']; run 11-smas-bottom-force.py first" + ) + mesh.point_data["Force"] = force_scale * np.asarray(mesh.point_data["Force"]) + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, + activation: float, + force_scale: float, + lambda_value: float, +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_stored_ext_force(mesh, force_scale) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [activation - 1.0, 0.25 - 1.0, activation - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3( + mesh, cfg.activation, cfg.force_scale, cfg.lambda_value + ) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-smas-only-prestrain-ext-force-stable-neo-hookean-lambda-" + f"{format_lambda_value(cfg.lambda_value)}-force-" + f"{format_force_scale(cfg.force_scale)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-uniform-ramped.py b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-uniform-ramped.py new file mode 100644 index 000000000..a8120b22d --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-uniform-ramped.py @@ -0,0 +1,174 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce +from liblaf.apple.model import ( + AdaptiveContinuationPlan, + Forward, + MaterialReference, + Model, + ModelBuilder, + StageState, +) +from liblaf.apple.optim import PNCG + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + force_scale: float = env.float("FORCE_SCALE", 5.0e-2) + initial_progress_step: float = env.float("INITIAL_PROGRESS_STEP", 5.0e-2) + minimum_progress_step: float = env.float("MINIMUM_PROGRESS_STEP", 1.0e-2) + maximum_progress_step: float = env.float("MAXIMUM_PROGRESS_STEP", 2.0e-1) + progress_growth_factor: float = env.float("PROGRESS_GROWTH_FACTOR", 1.5) + progress_shrink_factor: float = env.float("PROGRESS_SHRINK_FACTOR", 0.5) + maximum_stage_attempts: int = env.int("MAXIMUM_STAGE_ATTEMPTS", 8) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +@attrs.frozen +class ForceRampProgram: + final_force: jnp.ndarray + + def state_at(self, *, progress: float, forward: Forward) -> StageState: + del forward + scale = jnp.asarray(progress, dtype=self.final_force.dtype) + return StageState( + material_values={ + MaterialReference("force", "force"): scale * self.final_force, + } + ) + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def apply_bottom_uniform_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + mesh.point_data[DIRICHLET_MASK][bottom_mask, :] = False + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface_bottom_mask: np.ndarray = surface.points[:, 1] < 1e-3 + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = force_scale + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, activation: float, force_scale: float +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_uniform_ext_force(mesh, force_scale) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [activation - 1.0, 0.25 - 1.0, activation - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def build_force_ramp_plan(forward: Forward, cfg: Config) -> AdaptiveContinuationPlan: + force_ref = MaterialReference("force", "force") + final_force = forward.read_material_values()[force_ref] + return AdaptiveContinuationPlan( + state_program=ForceRampProgram(final_force=final_force), + initial_progress_step=cfg.initial_progress_step, + minimum_progress_step=cfg.minimum_progress_step, + maximum_progress_step=cfg.maximum_progress_step, + progress_growth_factor=cfg.progress_growth_factor, + progress_shrink_factor=cfg.progress_shrink_factor, + maximum_stage_attempts=cfg.maximum_stage_attempts, + ) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh, cfg.activation, cfg.force_scale) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + result = forward.solve(plan=build_force_ramp_plan(forward, cfg)) + ic(result) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-prestrain-ext-force-stable-neo-hookean-uniform-ramped-" + f"{format_force_scale(cfg.force_scale)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-uniform.py b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-uniform.py new file mode 100644 index 000000000..6c42913f3 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-uniform.py @@ -0,0 +1,135 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + # Roughly matches the mean nodal load magnitude of the area-weighted variant. + force_scale: float = env.float("FORCE_SCALE", 5.0e-2) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def apply_bottom_uniform_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + mesh.point_data[DIRICHLET_MASK][bottom_mask, :] = False + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface_bottom_mask: np.ndarray = surface.points[:, 1] < 1e-3 + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = force_scale + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, activation: float, force_scale: float +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_uniform_ext_force(mesh, force_scale) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [activation - 1.0, 0.25 - 1.0, activation - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh, cfg.activation, cfg.force_scale) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-prestrain-ext-force-stable-neo-hookean-uniform-" + f"{format_force_scale(cfg.force_scale)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean.py b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean.py new file mode 100644 index 000000000..feb4d496f --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean.py @@ -0,0 +1,172 @@ +from pathlib import Path +from typing import cast + +import attrs +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce, Region +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + force_scale: float = env.float("FORCE_SCALE", 1.0) + lambda_value: float = env.float("LAMBDA_VALUE", 3.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def format_lambda_value(lambda_value: float) -> str: + if np.isclose(lambda_value, round(lambda_value)): + return str(int(round(lambda_value))) + mantissa, exponent = f"{lambda_value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def add_volume_change_ratio( + mesh: pv.UnstructuredGrid, u_full: jnp.ndarray +) -> pv.UnstructuredGrid: + region = Region.from_pyvista(mesh, grad=True) + deformation_gradient: np.ndarray = np.asarray(region.deformation_gradient(u_full)) + mesh.cell_data["VolumeChangeRatio"] = np.linalg.det(deformation_gradient[:, 0]) + return mesh + + +def apply_bottom_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = (mesh.points[:, 1] < 1e-2) & ~mesh.point_data[ + DIRICHLET_MASK + ][:, 0] + mesh.point_data[DIRICHLET_MASK][bottom_mask, :] = False + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + surface_bottom_mask: np.ndarray = ( + surface.points[:, 1] < 1e-2 + ) & ~surface.point_data[DIRICHLET_MASK][:, 0] + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = ( + force_scale * surface.point_data["Area"][surface_bottom_mask] + ) + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, + activation: float, + force_scale: float, + lambda_value: float, +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_ext_force(mesh, force_scale) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [ + activation - 1.0, + (1 / activation / activation) - 1.0, + activation - 1.0, + 0.0, + 0.0, + 0.0, + ] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), lambda_value * 1.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + ext_force = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + return builder.finalize() + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3( + mesh, cfg.activation, cfg.force_scale, cfg.lambda_value + ) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + mesh = add_volume_change_ratio(mesh, forward.u_full) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-prestrain-ext-force-stable-neo-hookean-lambda-" + f"{format_lambda_value(cfg.lambda_value)}-force-" + f"{format_force_scale(cfg.force_scale)}-prestrain-{cfg.activation:.1f}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-ext-force.py b/exp/2026/01/28/smas/src/20-forward-ext-force.py new file mode 100644 index 000000000..77762e686 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-ext-force.py @@ -0,0 +1,153 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.jax import JaxPointForce +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + force_scale: float = env.float("FORCE_SCALE", 1.0) + lambda_value: float = env.float("LAMBDA_VALUE", 3.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def format_force_scale(force_scale: float) -> str: + mantissa, exponent = f"{force_scale:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def format_lambda_value(lambda_value: float) -> str: + if np.isclose(lambda_value, round(lambda_value)): + return str(int(round(lambda_value))) + mantissa, exponent = f"{lambda_value:.0e}".split("e") + return f"{mantissa}e{int(exponent)}" + + +def apply_bottom_ext_force( + mesh: pv.UnstructuredGrid, force_scale: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + mesh.point_data[DIRICHLET_MASK][bottom_mask, :] = False + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + surface_bottom_mask: np.ndarray = surface.points[:, 1] < 1e-3 + bottom_indices: np.ndarray = surface.point_data[GLOBAL_POINT_ID][ + surface_bottom_mask + ] + mesh.point_data["Force"] = np.zeros_like(mesh.points) + mesh.point_data["Force"][bottom_indices, 1] = ( + force_scale * surface.point_data["Area"][surface_bottom_mask] + ) + return mesh + + +def build_phace_v3( + mesh: pv.UnstructuredGrid, + activation: float, + force_scale: float, + lambda_value: float, +) -> Model: + builder = ModelBuilder() + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh = apply_bottom_ext_force(mesh, force_scale) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [activation - 1.0, 0.25 - 1.0, activation - 1.0, 0.0, 0.0, 0.0] + ) + # mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + # [5.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * lambda_value + smas_frac * lambda_value * 1.0e2 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + ext_force: JaxPointForce = JaxPointForce.from_pyvista(mesh) + ext_force.name = "force" + builder.add_energy(ext_force) + + model: Model = builder.finalize() + return model + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3( + mesh, cfg.activation, cfg.force_scale, cfg.lambda_value + ) + forward: Forward = Forward(model) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "20-forward" + f"{SUFFIX}-prestrain-ext-force-corotational-lambda-" + f"{format_lambda_value(cfg.lambda_value)}-force-" + f"{format_force_scale(cfg.force_scale)}.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-phace.py b/exp/2026/01/28/smas/src/20-forward-phace.py new file mode 100644 index 000000000..5e77b183f --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-phace.py @@ -0,0 +1,54 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ACTIVATION, GLOBAL_POINT_ID, LAMBDA, MU +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer, ScipyOptimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpPhaceV2 + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 5.0) + input: Path = cherries.input("10-input.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][:, 0] = cfg.activation # pyright: ignore[reportArgumentType] + return mesh + + +def build(mesh: pv.UnstructuredGrid) -> Forward: + builder = ModelBuilder() + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + builder.add_dirichlet(mesh) + elastic: WarpPhaceV2 = WarpPhaceV2.from_pyvista(mesh) + builder.add_energy(elastic) + + model: Model = builder.finalize() + forward: Forward = Forward(model, optimizer=ScipyOptimizer(method="L-BFGS-B")) + return forward + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + forward: Forward = build(mesh) + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + suffix: str = f"-act{cfg.activation:.0f}" + melon.save(cherries.output(f"20-forward-phace{suffix}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-prestrain.py b/exp/2026/01/28/smas/src/20-forward-prestrain.py new file mode 100644 index 000000000..39542c5aa --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-prestrain.py @@ -0,0 +1,97 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + [10.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0e2 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save(cherries.output(f"20-forward{SUFFIX}-prestrain-act10.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-subface-base.py b/exp/2026/01/28/smas/src/20-forward-subface-base.py new file mode 100644 index 000000000..4c55c9aec --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-subface-base.py @@ -0,0 +1,62 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from environs import env +from jaxtyping import Bool +from liblaf.apple.consts import ( + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + MUSCLE_FRACTION, + STIFFNESS, +) +from liblaf.apple.jax import JaxMassSpring +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import ScipyOptimizer + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + input: Path = cherries.input("10-subface.vtp") + + +def load_mesh(cfg: Config) -> pv.PolyData: + mesh: pv.PolyData = melon.load_polydata(cfg.input) + mesh.cell_data[STIFFNESS] = np.full((mesh.n_cells,), 1.0) + mesh = melon.tri.cell_data_to_point_data(mesh, [MUSCLE_FRACTION]) + muscle_mask: Bool[np.ndarray, " points"] = mesh.point_data[MUSCLE_FRACTION] > 1e-2 + mesh.point_data[DIRICHLET_MASK] |= muscle_mask[:, np.newaxis] + mesh.point_data[DIRICHLET_VALUE][muscle_mask, 0] = ( # pyright: ignore[reportArgumentType] + 1.0 / cfg.activation - 1.0 + ) * mesh.points[muscle_mask, 0] + return mesh + + +def build_model(mesh: pv.PolyData) -> Model: + builder = ModelBuilder() + # mesh = builder.add_points(mesh) + builder.add_dirichlet(mesh) + edges: pv.PolyData = mesh.extract_all_edges() # pyright: ignore[reportAssignmentType] + elastic: JaxMassSpring = JaxMassSpring.from_pyvista(edges) + builder.add_energy(elastic) + model: Model = builder.finalize() + return model + + +def main(cfg: Config) -> None: + mesh: pv.PolyData = load_mesh(cfg) + model: Model = build_model(mesh) + forward: Forward = Forward(model, optimizer=ScipyOptimizer(method="L-BFGS-B")) + forward.step() + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + suffix: str = f"-act{cfg.activation:.0f}" + melon.save(cherries.output(f"20-forward-subface-base{suffix}.vtp"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-test.py b/exp/2026/01/28/smas/src/20-forward-test.py new file mode 100644 index 000000000..2e21d3a11 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-test.py @@ -0,0 +1,97 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + [5.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save(cherries.output(f"20-forward{SUFFIX}-prestrain-test.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/20-forward-whole.py b/exp/2026/01/28/smas/src/20-forward-whole.py new file mode 100644 index 000000000..7be6f5f10 --- /dev/null +++ b/exp/2026/01/28/smas/src/20-forward-whole.py @@ -0,0 +1,52 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from environs import env +from liblaf.apple.consts import ACTIVATION, GLOBAL_POINT_ID, LAMBDA, MU +from liblaf.apple.model import Forward, Model +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple import scene + +SUFFIX: str = "-ellipsoid" + + +class Config(cherries.BaseConfig): + activation: float = env.float("ACTIVATION", 2.0) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][:, 0] = cfg.activation # pyright: ignore[reportArgumentType] + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + + return mesh + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = scene.build_phace_v3(mesh) + forward: Forward = Forward(model) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + f"20-forward{SUFFIX}-act{cfg.activation:.0f}-stiff-ratio1e2.vtu" + ), + mesh, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.py b/exp/2026/01/28/smas/src/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.py new file mode 100644 index 000000000..95ee7c544 --- /dev/null +++ b/exp/2026/01/28/smas/src/21-forward-bottom-dirichlet-stable-neo-hookean-hessian.py @@ -0,0 +1,316 @@ +import json +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import scipy.sparse.linalg as spla +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Full, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Optimizer +from liblaf.peach.optim.pncg._pncg import _make_preconditioner + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + arch_height: float = env.float("ARCH_HEIGHT", 1.0) + eigsh_k: int = env.int("EIGSH_K", 2) + eigsh_maxiter: int = env.int("EIGSH_MAXITER", 500) + eigsh_tol: float = env.float("EIGSH_TOL", 1e-1) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + run_forward: bool = env.bool("RUN_FORWARD", True) + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def compute_arch_profile( + mesh: pv.UnstructuredGrid, + arch_height: float, + points: np.ndarray | None = None, +) -> np.ndarray: + if points is None: + points = mesh.points + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + bottom_points: np.ndarray = mesh.points[bottom_mask] + + x_min, x_max = bottom_points[:, 0].min(), bottom_points[:, 0].max() + z_min, z_max = bottom_points[:, 2].min(), bottom_points[:, 2].max() + x_center = 0.5 * (x_min + x_max) + z_center = 0.5 * (z_min + z_max) + x_hat: np.ndarray = 2.0 * (points[:, 0] - x_center) / (x_max - x_min) + z_hat: np.ndarray = 2.0 * (points[:, 2] - z_center) / (z_max - z_min) + arch: np.ndarray = arch_height * (1.0 - x_hat**2) * (1.0 - z_hat**2) + return np.clip(arch, 0.0, None) + + +def apply_bottom_arch_dirichlet( + mesh: pv.UnstructuredGrid, arch_height: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + arch: np.ndarray = compute_arch_profile(mesh, arch_height, mesh.points[bottom_mask]) + + mesh.point_data[DIRICHLET_MASK][bottom_mask] = True + mesh.point_data[DIRICHLET_VALUE][bottom_mask] = 0.0 + mesh.point_data[DIRICHLET_VALUE][bottom_mask, 1] = arch + return mesh + + +def build_phace_v3(mesh: pv.UnstructuredGrid, arch_height: float) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_arch_dirichlet(mesh, arch_height) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + [4.0 - 1.0, 0.125 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 49.0) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 49.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 49.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + return builder.finalize() + + +def initialize_parabolic_guess( + model: Model, mesh: pv.UnstructuredGrid, arch_height: float +) -> None: + u_full: np.ndarray = np.zeros((model.n_points, model.dim), dtype=mesh.points.dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID], 1] = compute_arch_profile( + mesh, arch_height + ) + model.u_free = model.dirichlet.get_free(jnp.asarray(u_full)) + + +def _eigsh_values( + operator: spla.LinearOperator, + *, + k: int, + which: str, + tol: float, + maxiter: int, +) -> dict[str, Any]: + converged = True + try: + values = spla.eigsh( + operator, + k=k, + which=which, + tol=tol, + maxiter=maxiter, + return_eigenvectors=False, + ) + except spla.ArpackNoConvergence as exc: + converged = False + values = exc.eigenvalues + values = np.asarray(values, dtype=np.float64) + values.sort() + return {"converged": converged, "values": values.tolist()} + + +def estimate_free_hessian_spectrum( + model: Model, + *, + state: Any, + k: int, + tol: float, + maxiter: int, +) -> dict[str, Any]: + n_free = int(model.n_free) + hess_diag_full = np.asarray(model.hess_diag(state), dtype=np.float64) + hess_diag_free = np.asarray( + model.dirichlet.get_free(jnp.asarray(hess_diag_full)), dtype=np.float64 + ) + preconditioner = np.asarray( + _make_preconditioner(jnp.asarray(hess_diag_free)), dtype=np.float64 + ) + preconditioner_sqrt = np.sqrt(preconditioner) + + summary: dict[str, Any] = { + "n_free": n_free, + "hess_diag_min": float(np.min(hess_diag_free)), + "hess_diag_max": float(np.max(hess_diag_free)), + "hess_diag_mean": float(np.mean(hess_diag_free)), + "hess_diag_abs_min": float(np.min(np.abs(hess_diag_free))), + "hess_diag_nonpositive": int(np.count_nonzero(hess_diag_free <= 0.0)), + "preconditioner_min": float(np.min(preconditioner)), + "preconditioner_max": float(np.max(preconditioner)), + } + if n_free < 3: + summary["raw_smallest_algebraic"] = {"converged": True, "values": []} + summary["raw_largest_algebraic"] = {"converged": True, "values": []} + summary["preconditioned_smallest_algebraic"] = { + "converged": True, + "values": [], + } + summary["preconditioned_largest_algebraic"] = { + "converged": True, + "values": [], + } + return summary + + k_eff = max(1, min(k, n_free - 2)) + + def hess_matvec(v: np.ndarray) -> np.ndarray: + v_free = jnp.asarray(v, dtype=model.u_full.dtype) + v_full: Full = model.dirichlet.to_full(v_free, dirichlet=0.0) + output_full = model.hess_prod(state, v_full) + output_free = model.dirichlet.get_free(output_full) + return np.asarray(output_free, dtype=np.float64) + + def preconditioned_matvec(v: np.ndarray) -> np.ndarray: + scaled = preconditioner_sqrt * v + return preconditioner_sqrt * hess_matvec(scaled) + + hess_operator = spla.LinearOperator( + shape=(n_free, n_free), + matvec=hess_matvec, + rmatvec=hess_matvec, + dtype=np.float64, + ) + preconditioned_operator = spla.LinearOperator( + shape=(n_free, n_free), + matvec=preconditioned_matvec, + rmatvec=preconditioned_matvec, + dtype=np.float64, + ) + summary["raw_smallest_algebraic"] = _eigsh_values( + hess_operator, k=k_eff, which="SA", tol=tol, maxiter=maxiter + ) + summary["raw_largest_algebraic"] = _eigsh_values( + hess_operator, k=k_eff, which="LA", tol=tol, maxiter=maxiter + ) + summary["preconditioned_smallest_algebraic"] = _eigsh_values( + preconditioned_operator, k=k_eff, which="SA", tol=tol, maxiter=maxiter + ) + summary["preconditioned_largest_algebraic"] = _eigsh_values( + preconditioned_operator, k=k_eff, which="LA", tol=tol, maxiter=maxiter + ) + return summary + + +def write_outputs( + *, + mesh: pv.UnstructuredGrid, + forward: Forward, + solution: Optimizer.Solution | None, + initial_spectrum: dict[str, Any], + final_spectrum: dict[str, Any], +) -> None: + report = { + "forward": None + if solution is None + else { + "result": str(solution.result), + "success": bool(solution.success), + "n_steps": int(np.asarray(solution.state.n_steps)), + "best_decrease": float(np.asarray(solution.state.best_decrease)), + "relative_decrease": float(np.asarray(solution.stats.relative_decrease)), + "grad_norm": float(np.linalg.norm(np.asarray(solution.state.grad))), + }, + "initial_spectrum": initial_spectrum, + "final_spectrum": final_spectrum, + } + cherries.output( + "21-forward-bottom-dirichlet-stable-neo-hookean-hessian.json" + ).write_text(json.dumps(report, indent=2)) + + mesh = mesh.copy() + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output("21-forward-bottom-dirichlet-stable-neo-hookean-hessian.vtu"), + mesh, + ) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + model: Model = build_phace_v3(mesh, cfg.arch_height) + initialize_parabolic_guess(model, mesh, cfg.arch_height) + + forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.rtol = jnp.asarray(1e-3) + optimizer.rtol_primary = jnp.asarray(1e-5) + + initial_spectrum = estimate_free_hessian_spectrum( + model, + state=forward.state, + k=cfg.eigsh_k, + tol=cfg.eigsh_tol, + maxiter=cfg.eigsh_maxiter, + ) + + solution: Optimizer.Solution | None = None + if cfg.run_forward: + solution = forward.step() + + final_spectrum = estimate_free_hessian_spectrum( + model, + state=forward.state, + k=cfg.eigsh_k, + tol=cfg.eigsh_tol, + maxiter=cfg.eigsh_maxiter, + ) + + ic({"initial_spectrum": initial_spectrum, "final_spectrum": final_spectrum}) + if solution is not None: + ic(solution) + write_outputs( + mesh=mesh, + forward=forward, + solution=solution, + initial_spectrum=initial_spectrum, + final_spectrum=final_spectrum, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/21-forward-whole.py b/exp/2026/01/28/smas/src/21-forward-whole.py new file mode 100644 index 000000000..f64f98f0c --- /dev/null +++ b/exp/2026/01/28/smas/src/21-forward-whole.py @@ -0,0 +1,65 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, +) +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer, ScipyOptimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpPhaceV2 + + +class Config(cherries.BaseConfig): + input: Path = cherries.input("10-input.vtu") + subface: Path = cherries.input("20-forward-subface-base-act2.vtp") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + subface: pv.PolyData = melon.load_polydata(cfg.subface) + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.point_data[DIRICHLET_MASK][subface.point_data[GLOBAL_POINT_ID]] = True + mesh.point_data[DIRICHLET_VALUE][subface.point_data[GLOBAL_POINT_ID]] = ( + subface.point_data["Solution"] + ) + + return mesh + + +def build(mesh: pv.UnstructuredGrid) -> Forward: + builder = ModelBuilder() + + # mesh: pv.UnstructuredGrid = builder.add_points(mesh) + builder.add_dirichlet(mesh) + elastic: WarpPhaceV2 = WarpPhaceV2.from_pyvista(mesh) + builder.add_energy(elastic) + + model: Model = builder.finalize() + forward: Forward = Forward(model, optimizer=ScipyOptimizer(method="L-BFGS-B")) + return forward + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + forward: Forward = build(mesh) + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save(cherries.output("21-forward-whole-act2.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.py b/exp/2026/01/28/smas/src/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.py new file mode 100644 index 000000000..45d4ab449 --- /dev/null +++ b/exp/2026/01/28/smas/src/22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.py @@ -0,0 +1,617 @@ +import json +from pathlib import Path +from typing import Any + +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import scipy.sparse.linalg as spla +import warp as wp +from environs import env +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Full, Model, ModelBuilder +from liblaf.peach.optim import Optimizer +from liblaf.peach.optim.pncg._pncg import _make_preconditioner + +from liblaf import cherries, melon +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + arch_height: float = env.float("ARCH_HEIGHT", 1.0) + eigsh_k: int = env.int("EIGSH_K", 2) + eigsh_maxiter: int = env.int("EIGSH_MAXITER", 500) + eigsh_seed: int = env.int("EIGSH_SEED", 0) + eigsh_tol: float = env.float("EIGSH_TOL", 1e-1) + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + minres_maxiter: int = env.int("MINRES_MAXITER", 40) + minres_rtol: float = env.float("MINRES_RTOL", 1e-2) + run_forward: bool = env.bool("RUN_FORWARD", True) + shift_margin: float = env.float("SHIFT_MARGIN", 1e-3) + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def compute_arch_profile( + mesh: pv.UnstructuredGrid, + arch_height: float, + points: np.ndarray | None = None, +) -> np.ndarray: + if points is None: + points = mesh.points + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + bottom_points: np.ndarray = mesh.points[bottom_mask] + + x_min, x_max = bottom_points[:, 0].min(), bottom_points[:, 0].max() + z_min, z_max = bottom_points[:, 2].min(), bottom_points[:, 2].max() + x_center = 0.5 * (x_min + x_max) + z_center = 0.5 * (z_min + z_max) + x_hat: np.ndarray = 2.0 * (points[:, 0] - x_center) / (x_max - x_min) + z_hat: np.ndarray = 2.0 * (points[:, 2] - z_center) / (z_max - z_min) + arch: np.ndarray = arch_height * (1.0 - x_hat**2) * (1.0 - z_hat**2) + return np.clip(arch, 0.0, None) + + +def apply_bottom_arch_dirichlet( + mesh: pv.UnstructuredGrid, arch_height: float +) -> pv.UnstructuredGrid: + bottom_mask: np.ndarray = mesh.points[:, 1] < 1e-3 + arch: np.ndarray = compute_arch_profile(mesh, arch_height, mesh.points[bottom_mask]) + + mesh.point_data[DIRICHLET_MASK][bottom_mask] = True + mesh.point_data[DIRICHLET_VALUE][bottom_mask] = 0.0 + mesh.point_data[DIRICHLET_VALUE][bottom_mask, 1] = arch + return mesh + + +def build_phace_v3(mesh: pv.UnstructuredGrid, arch_height: float) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_bottom_arch_dirichlet(mesh, arch_height) + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + [4.0 - 1.0, 0.125 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 49.0) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 49.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 49.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + return builder.finalize() + + +def initialize_parabolic_guess( + model: Model, mesh: pv.UnstructuredGrid, arch_height: float +) -> None: + u_full: np.ndarray = np.zeros((model.n_points, model.dim), dtype=mesh.points.dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID], 1] = compute_arch_profile( + mesh, arch_height + ) + model.u_free = model.dirichlet.get_free(jnp.asarray(u_full)) + + +def _array_to_sorted_list(values: np.ndarray | None) -> list[float]: + array = np.asarray([] if values is None else values, dtype=np.float64) + array.sort() + return array.tolist() + + +def _diag_operator(diag: np.ndarray) -> spla.LinearOperator: + diag = np.asarray(diag, dtype=np.float64) + size = int(diag.size) + + def matvec(v: np.ndarray) -> np.ndarray: + return diag * np.asarray(v, dtype=np.float64) + + return spla.LinearOperator( + shape=(size, size), + matvec=matvec, + rmatvec=matvec, + dtype=np.float64, + ) + + +def _negate_operator(operator: spla.LinearOperator) -> spla.LinearOperator: + def matvec(v: np.ndarray) -> np.ndarray: + return -np.asarray(operator.matvec(v), dtype=np.float64) + + return spla.LinearOperator( + shape=operator.shape, + matvec=matvec, + rmatvec=matvec, + dtype=np.float64, + ) + + +class _ShiftInvertMinres: + def __init__( + self, + operator: spla.LinearOperator, + *, + shift: float, + mass_operator: spla.LinearOperator | None, + preconditioner: spla.LinearOperator | None, + rtol: float, + maxiter: int, + ) -> None: + self.maxiter = maxiter + self.n_calls = 0 + self.n_failures = 0 + self.operator = operator + self.preconditioner = preconditioner + self._info_history: list[int] = [] + self._mass_operator = mass_operator + self._rtol = rtol + self._shift = shift + self.shifted_operator = spla.LinearOperator( + shape=operator.shape, + matvec=self._shifted_matvec, + rmatvec=self._shifted_matvec, + dtype=np.float64, + ) + self.operator_inverse = spla.LinearOperator( + shape=operator.shape, + matvec=self.solve, + rmatvec=self.solve, + dtype=np.float64, + ) + + def _shifted_matvec(self, v: np.ndarray) -> np.ndarray: + output = np.asarray(self.operator.matvec(v), dtype=np.float64) + if self._mass_operator is None: + return output - self._shift * np.asarray(v, dtype=np.float64) + return output - self._shift * np.asarray( + self._mass_operator.matvec(v), dtype=np.float64 + ) + + def solve(self, rhs: np.ndarray) -> np.ndarray: + rhs = np.asarray(rhs, dtype=np.float64) + solution, info = spla.minres( + self.shifted_operator, + rhs, + rtol=self._rtol, + maxiter=self.maxiter, + M=self.preconditioner, + ) + self.n_calls += 1 + self._info_history.append(int(info)) + if info != 0: + self.n_failures += 1 + return np.asarray(solution, dtype=np.float64) + + def summary(self) -> dict[str, Any]: + return { + "info_history": self._info_history, + "maxiter": self.maxiter, + "n_calls": self.n_calls, + "n_failures": self.n_failures, + "rtol": self._rtol, + "shift": self._shift, + } + + +def _eigsh_values( + operator: spla.LinearOperator, + *, + k: int, + maxiter: int, + mass_operator: spla.LinearOperator | None = None, + mass_inverse_operator: spla.LinearOperator | None = None, + opinv: spla.LinearOperator | None = None, + rng_seed: int, + sigma: float | None = None, + tol: float, + which: str, +) -> dict[str, Any]: + kwargs: dict[str, Any] = { + "k": k, + "maxiter": maxiter, + "return_eigenvectors": False, + "rng": np.random.default_rng(rng_seed), + "tol": tol, + "which": which, + } + if mass_operator is not None: + kwargs["M"] = mass_operator + if sigma is None and mass_inverse_operator is not None: + kwargs["Minv"] = mass_inverse_operator + if sigma is not None: + kwargs["sigma"] = sigma + if opinv is not None: + kwargs["OPinv"] = opinv + + converged = True + try: + values = spla.eigsh(operator, **kwargs) + except spla.ArpackNoConvergence as exc: + converged = False + values = exc.eigenvalues + + return { + "converged": converged, + "values": _array_to_sorted_list(values), + } + + +def _coarse_smallest_values( + operator: spla.LinearOperator, + *, + k: int, + maxiter: int, + mass_operator: spla.LinearOperator | None, + mass_inverse_operator: spla.LinearOperator | None, + rng_seed: int, + tol: float, +) -> dict[str, Any]: + negated = _eigsh_values( + _negate_operator(operator), + k=k, + mass_operator=mass_operator, + mass_inverse_operator=mass_inverse_operator, + maxiter=maxiter, + rng_seed=rng_seed, + tol=tol, + which="LA", + ) + values = -np.asarray(negated["values"], dtype=np.float64) + values.sort() + return { + "converged": bool(negated["converged"]), + "values": values.tolist(), + } + + +def _estimate_smallest_algebraic( + operator: spla.LinearOperator, + *, + base_diag: np.ndarray, + k: int, + mass_diag: np.ndarray, + mass_operator: spla.LinearOperator | None, + mass_inverse_operator: spla.LinearOperator | None, + maxiter: int, + minres_maxiter: int, + minres_rtol: float, + rng_seed: int, + shift_margin: float, + tol: float, +) -> dict[str, Any]: + coarse = _coarse_smallest_values( + operator, + k=k, + mass_operator=mass_operator, + mass_inverse_operator=mass_inverse_operator, + maxiter=maxiter, + rng_seed=rng_seed, + tol=tol, + ) + coarse_values = np.asarray(coarse["values"], dtype=np.float64) + quotient_diag = np.divide( + base_diag, + mass_diag, + out=np.zeros_like(base_diag, dtype=np.float64), + where=np.abs(mass_diag) > 0.0, + ) + quotient_abs_mean = float(np.mean(np.abs(quotient_diag))) + + sigma_candidates: list[float] = [] + if coarse_values.size > 0: + sigma_candidates.append( + float( + coarse_values[0] + - max( + shift_margin * max(1.0, abs(coarse_values[0])), + np.finfo(np.float64).eps, + ) + ) + ) + fallback_scale = max(1.0, quotient_abs_mean) + sigma_candidates.extend( + [ + 0.0, + -shift_margin * fallback_scale, + -fallback_scale, + ] + ) + sigma_candidates = list(dict.fromkeys(float(sigma) for sigma in sigma_candidates)) + + shift_attempts: list[dict[str, Any]] = [] + selected_shifted_values = np.asarray([], dtype=np.float64) + selected_shifted_converged = False + for attempt_index, sigma in enumerate(sigma_candidates): + shifted_diag = base_diag - sigma * mass_diag + shifted_preconditioner = np.asarray( + _make_preconditioner(jnp.asarray(shifted_diag)), + dtype=np.float64, + ) + solver = _ShiftInvertMinres( + operator, + shift=sigma, + mass_operator=mass_operator, + preconditioner=_diag_operator(shifted_preconditioner), + rtol=minres_rtol, + maxiter=minres_maxiter, + ) + shifted = _eigsh_values( + operator, + k=k, + mass_operator=mass_operator, + maxiter=maxiter, + opinv=solver.operator_inverse, + rng_seed=rng_seed + 1 + attempt_index, + sigma=sigma, + tol=tol, + which="LM", + ) + shifted_values = np.asarray(shifted["values"], dtype=np.float64) + shifted_values.sort() + shift_attempts.append( + { + "converged": bool(shifted["converged"]), + "minres": solver.summary(), + "sigma": sigma, + "values": shifted_values.tolist(), + } + ) + if shifted_values.size == 0: + continue + if selected_shifted_values.size == 0: + selected_shifted_values = shifted_values + selected_shifted_converged = bool(shifted["converged"]) + continue + combined = np.concatenate([selected_shifted_values, shifted_values]) + combined.sort() + selected_shifted_values = combined[:k] + selected_shifted_converged = selected_shifted_converged or bool( + shifted["converged"] + ) + + if selected_shifted_values.size > 0: + selected_values = selected_shifted_values.tolist() + method = "shift_invert_minres" + converged = selected_shifted_converged + else: + selected_values = coarse_values.tolist() + method = "coarse_only" + converged = bool(coarse["converged"] and coarse_values.size > 0) + + return { + "coarse": coarse, + "converged": converged, + "method": method, + "shift_invert_attempts": shift_attempts, + "values": selected_values, + } + + +def estimate_free_hessian_spectrum( + model: Model, + *, + cfg: Config, + state: Any, +) -> dict[str, Any]: + n_free = int(model.n_free) + hess_diag_full = np.asarray(model.hess_diag(state), dtype=np.float64) + hess_diag_free = np.asarray( + model.dirichlet.get_free(jnp.asarray(hess_diag_full)), + dtype=np.float64, + ) + preconditioner = np.asarray( + _make_preconditioner(jnp.asarray(hess_diag_free)), + dtype=np.float64, + ) + preconditioner_inverse = np.reciprocal(preconditioner) + + summary: dict[str, Any] = { + "n_free": n_free, + "hess_diag_abs_min": float(np.min(np.abs(hess_diag_free))), + "hess_diag_max": float(np.max(hess_diag_free)), + "hess_diag_mean": float(np.mean(hess_diag_free)), + "hess_diag_min": float(np.min(hess_diag_free)), + "hess_diag_nonpositive": int(np.count_nonzero(hess_diag_free <= 0.0)), + "preconditioner_inverse_max": float(np.max(preconditioner_inverse)), + "preconditioner_inverse_min": float(np.min(preconditioner_inverse)), + "preconditioner_max": float(np.max(preconditioner)), + "preconditioner_min": float(np.min(preconditioner)), + } + if n_free < 3: + empty = {"converged": True, "values": []} + summary["lambda_max"] = empty + summary["lambda_min"] = empty + summary["preconditioned_lambda_max"] = empty + summary["preconditioned_lambda_min"] = empty + return summary + + k_eff = max(1, min(cfg.eigsh_k, n_free - 2)) + + def hess_matvec(v: np.ndarray) -> np.ndarray: + v_free = jnp.asarray(v, dtype=model.u_full.dtype) + v_full: Full = model.dirichlet.to_full(v_free, dirichlet=0.0) + output_full = model.hess_prod(state, v_full) + output_free = model.dirichlet.get_free(output_full) + return np.asarray(output_free, dtype=np.float64) + + hess_operator = spla.LinearOperator( + shape=(n_free, n_free), + matvec=hess_matvec, + rmatvec=hess_matvec, + dtype=np.float64, + ) + mass_operator = _diag_operator(preconditioner_inverse) + mass_inverse_operator = _diag_operator(preconditioner) + identity_diag = np.ones((n_free,), dtype=np.float64) + + summary["lambda_max"] = _eigsh_values( + hess_operator, + k=k_eff, + maxiter=cfg.eigsh_maxiter, + rng_seed=cfg.eigsh_seed + 10, + tol=cfg.eigsh_tol, + which="LA", + ) + summary["lambda_min"] = _estimate_smallest_algebraic( + hess_operator, + base_diag=hess_diag_free, + k=k_eff, + mass_diag=identity_diag, + mass_operator=None, + mass_inverse_operator=None, + maxiter=cfg.eigsh_maxiter, + minres_maxiter=cfg.minres_maxiter, + minres_rtol=cfg.minres_rtol, + rng_seed=cfg.eigsh_seed + 20, + shift_margin=cfg.shift_margin, + tol=cfg.eigsh_tol, + ) + # The generalized problem H x = lambda P^{-1} x matches the spectrum of + # P^{1/2} H P^{1/2} for the diagonal P used by PNCG. + summary["preconditioned_lambda_max"] = _eigsh_values( + hess_operator, + k=k_eff, + mass_operator=mass_operator, + mass_inverse_operator=mass_inverse_operator, + maxiter=cfg.eigsh_maxiter, + rng_seed=cfg.eigsh_seed + 30, + tol=cfg.eigsh_tol, + which="LA", + ) + summary["preconditioned_lambda_min"] = _estimate_smallest_algebraic( + hess_operator, + base_diag=hess_diag_free, + k=k_eff, + mass_diag=preconditioner_inverse, + mass_operator=mass_operator, + mass_inverse_operator=mass_inverse_operator, + maxiter=cfg.eigsh_maxiter, + minres_maxiter=cfg.minres_maxiter, + minres_rtol=cfg.minres_rtol, + rng_seed=cfg.eigsh_seed + 40, + shift_margin=cfg.shift_margin, + tol=cfg.eigsh_tol, + ) + return summary + + +def write_outputs( + *, + mesh: pv.UnstructuredGrid, + forward: Forward, + solution: Optimizer.Solution | None, + initial_spectrum: dict[str, Any], + final_spectrum: dict[str, Any], +) -> None: + report = { + "forward": None + if solution is None + else { + "result": str(solution.result), + "success": bool(solution.success), + "n_steps": int(np.asarray(solution.state.n_steps)), + "best_decrease": float(np.asarray(solution.state.best_decrease)), + "relative_decrease": float(np.asarray(solution.stats.relative_decrease)), + "grad_norm": float(np.linalg.norm(np.asarray(solution.state.grad))), + }, + "initial_spectrum": initial_spectrum, + "final_spectrum": final_spectrum, + } + cherries.output( + "22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.json" + ).write_text(json.dumps(report, indent=2)) + + mesh = mesh.copy() + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save( + cherries.output( + "22-forward-bottom-dirichlet-stable-neo-hookean-hessian-generalized.vtu" + ), + mesh, + ) + + +def _compact_spectrum_summary(spectrum: dict[str, Any]) -> dict[str, Any]: + return { + "lambda_max": spectrum["lambda_max"]["values"], + "lambda_min": spectrum["lambda_min"]["values"], + "preconditioned_lambda_max": spectrum["preconditioned_lambda_max"]["values"], + "preconditioned_lambda_min": spectrum["preconditioned_lambda_min"]["values"], + } + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = load_mesh(cfg) + model: Model = build_phace_v3(mesh, cfg.arch_height) + initialize_parabolic_guess(model, mesh, cfg.arch_height) + + forward = Forward(model) + + initial_spectrum = estimate_free_hessian_spectrum( + model, cfg=cfg, state=forward.state + ) + + solution: Optimizer.Solution | None = None + if cfg.run_forward: + solution = forward.step() + + final_spectrum = estimate_free_hessian_spectrum(model, cfg=cfg, state=forward.state) + + ic( + { + "initial_spectrum": _compact_spectrum_summary(initial_spectrum), + "final_spectrum": _compact_spectrum_summary(final_spectrum), + } + ) + if solution is not None: + ic(solution) + write_outputs( + mesh=mesh, + forward=forward, + solution=solution, + initial_spectrum=initial_spectrum, + final_spectrum=final_spectrum, + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/01/28/smas/src/30-inverse-neo-hookean.py b/exp/2026/01/28/smas/src/30-inverse-neo-hookean.py new file mode 100644 index 000000000..a3f344c4c --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse-neo-hookean.py @@ -0,0 +1,491 @@ +import json +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from environs import env +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ( + ACTIVATION, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Free, Model, ModelBuilder, ModelMaterials +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import WarpNeoHookean, WarpNeoHookeanMuscle + +type EnergyMaterials = Mapping[str, Array] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + +SUFFIX: str = "-smas46-muscle46" + + +def activation_to_mat33( + activation: Float[Array, "*batch 6"], +) -> Float[Array, "*batch 3 3"]: + row0 = jnp.stack( + [1.0 + activation[..., 0], activation[..., 3], activation[..., 4]], axis=-1 + ) + row1 = jnp.stack( + [activation[..., 3], 1.0 + activation[..., 1], activation[..., 5]], axis=-1 + ) + row2 = jnp.stack( + [activation[..., 4], activation[..., 5], 1.0 + activation[..., 2]], axis=-1 + ) + return jnp.stack([row0, row1, row2], axis=-2) + + +def mat33_to_activation(mat: Float[Array, "*batch 3 3"]) -> Float[Array, "*batch 6"]: + return jnp.stack( + [ + mat[..., 0, 0] - 1.0, + mat[..., 1, 1] - 1.0, + mat[..., 2, 2] - 1.0, + mat[..., 0, 1], + mat[..., 0, 2], + mat[..., 1, 2], + ], + axis=-1, + ) + + +def activation_to_spd_params( + activation: np.ndarray, +) -> np.ndarray: + mat = np.asarray(activation_to_mat33(jnp.asarray(activation))) + chol = np.linalg.cholesky(mat) + return np.stack( + [ + np.log(chol[..., 0, 0]), + np.log(chol[..., 1, 1]), + np.log(chol[..., 2, 2]), + chol[..., 1, 0], + chol[..., 2, 0], + chol[..., 2, 1], + ], + axis=-1, + ) + + +def spd_params_to_activation( + params: Float[Array, "*batch 6"], + *, + chol_diag_min: float, + chol_diag_max: float, + shear_limit: float, +) -> Float[Array, "*batch 6"]: + chol_diag_min_log = jnp.log(jnp.asarray(chol_diag_min, dtype=params.dtype)) + chol_diag_max_log = jnp.log(jnp.asarray(chol_diag_max, dtype=params.dtype)) + l00 = jnp.exp(jnp.clip(params[..., 0], chol_diag_min_log, chol_diag_max_log)) + l11 = jnp.exp(jnp.clip(params[..., 1], chol_diag_min_log, chol_diag_max_log)) + l22 = jnp.exp(jnp.clip(params[..., 2], chol_diag_min_log, chol_diag_max_log)) + l10 = jnp.clip(params[..., 3], -shear_limit, shear_limit) + l20 = jnp.clip(params[..., 4], -shear_limit, shear_limit) + l21 = jnp.clip(params[..., 5], -shear_limit, shear_limit) + zeros = jnp.zeros_like(l00) + row0 = jnp.stack([l00, zeros, zeros], axis=-1) + row1 = jnp.stack([l10, l11, zeros], axis=-1) + row2 = jnp.stack([l20, l21, l22], axis=-1) + chol = jnp.stack([row0, row1, row2], axis=-2) + activation_mat = chol @ jnp.swapaxes(chol, -1, -2) + return mat33_to_activation(activation_mat) + + +def activation_eigenvalue_bounds( + activation: np.ndarray, +) -> tuple[float, float]: + mats = np.asarray(activation_to_mat33(jnp.asarray(activation))) + eigenvalues = np.linalg.eigvalsh(mats) + return float(eigenvalues.min()), float(eigenvalues.max()) + + +def log_forward_pass_metrics(solution: PNCG.Solution, *, init_grad: Vector) -> None: + cherries.log_metrics( + { + "forward": { + "init_grad_norm": jnp.linalg.norm(init_grad), + "init_grad_norm_inf": jnp.linalg.norm(init_grad, ord=jnp.inf), + "final_grad_norm": jnp.linalg.norm(solution.state.grad), + "final_grad_norm_max": jnp.linalg.norm( + solution.state.grad, ord=jnp.inf + ), + "decrease": solution.state.best_decrease, + "relative_decrease": solution.stats.relative_decrease, + "result": str(solution.result), + "success": solution.success, + } + } + ) + + +@jarp.define +class MyInverse(Inverse): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + chol_diag_min: float = jarp.static(default=0.25, kw_only=True) + chol_diag_max: float = jarp.static(default=2.0, kw_only=True) + shear_limit: float = jarp.static(default=1.0, kw_only=True) + fallback_u_free: Free | None = jarp.array(default=None, kw_only=True) + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set( + spd_params_to_activation( + params, + chol_diag_min=self.chol_diag_min, + chol_diag_max=self.chol_diag_max, + shear_limit=self.shear_limit, + ) + ) + return {"muscle": {"activation": activation}} + + def update(self, materials: ModelMaterials) -> None: + self.model.update_materials(materials) + if not self.last_forward_success: + if self.forward.last_successful_u_free is not None: + self.model.u_free = self.forward.last_successful_u_free + elif self.fallback_u_free is not None: + self.model.u_free = self.fallback_u_free + else: + self.model.u_free = jnp.zeros_like(self.model.u_free) + self.forward.state = self.model.init_state(self.model.u_full) + init_grad: Vector = self.model.grad(self.forward.state) + solution: PNCG.Solution = self.forward.step() + log_forward_pass_metrics(solution, init_grad=init_grad) + self.last_forward_success = jnp.asarray(solution.success) + + def loss_and_grad( + self, materials: ModelMaterials + ) -> tuple[Scalar, Vector, dict[str, dict[str, Array]]]: + loss_value: Scalar = jnp.zeros(()) + dLdu: Vector = jnp.zeros_like(self.model.u_full) + dLdq: dict[str, dict[str, Array]] = { + energy_id: { + mat_name: jnp.zeros_like(mat_value) + for mat_name, mat_value in energy.items() + } + for energy_id, energy in materials.items() + } + for loss in self.losses: + loss_i, (dLdu_i, dLdq_i) = loss.value_and_grad(self.model.u_full, materials) + cherries.log_metric(loss.name, loss_i) + loss_value += loss_i + dLdu += dLdu_i + dLdq = jax.tree.map(jnp.add, dLdq, dLdq_i) + cherries.log_metric("loss", loss_value) + return loss_value, dLdu, dLdq + + def value_and_grad( + self, materials: ModelMaterials + ) -> tuple[Scalar, ModelMaterials]: + loss_value: Scalar + dLdu: Vector + dLdq: dict[str, dict[str, Array]] + loss_value, dLdu, dLdq = self.loss_and_grad(materials) + p = self.adjoint(dLdu) + mixed_prod: ModelMaterials = self.model.mixed_derivative_prod( + self.forward.state, p + ) + for energy_id, energy in mixed_prod.items(): + for mat_name, v in energy.items(): + dLdq[energy_id][mat_name] += v + return loss_value, dLdq + + +class Config(cherries.BaseConfig): + inverse_lr: float = env.float("INVERSE_LR", 0.03) + inverse_max_steps: int = env.int("INVERSE_MAX_STEPS", 1000) + inverse_patience: int = env.int("INVERSE_PATIENCE", 1000) + activation_chol_diag_min: float = env.float("ACTIVATION_CHOL_DIAG_MIN", 0.25) + activation_chol_diag_max: float = env.float("ACTIVATION_CHOL_DIAG_MAX", 2.0) + activation_shear_limit: float = env.float("ACTIVATION_SHEAR_LIMIT", 1.0) + target: Path = cherries.input( + f"20-forward{SUFFIX}-prestrain-bottom-dirichlet-arch-neo-hookean.vtu" + ) + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + builder.add_energy(WarpNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy(WarpNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy( + WarpNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + return builder.finalize() + + +def make_target_u_full( + model: Model, mesh: pv.UnstructuredGrid, target: pv.UnstructuredGrid +) -> np.ndarray: + dtype = np.asarray(model.u_full).dtype + u_full = np.zeros((model.n_points, model.dim), dtype=dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID]] = np.asarray( + target.point_data["Solution"], dtype=dtype + ) + return u_full + + +def initialize_target_guess( + model: Model, mesh: pv.UnstructuredGrid, target: pv.UnstructuredGrid +) -> Free: + u_full = make_target_u_full(model, mesh, target) + u_free = model.dirichlet.get_free(jnp.asarray(u_full)) + model.u_free = u_free + return u_free + + +def build_inverse( + cfg: Config, + *, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + forward: Forward, + fallback_u_free: Free, +) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(target.point_data["Solution"][surface_indices]), + ) + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + chol_diag_min=cfg.activation_chol_diag_min, + chol_diag_max=cfg.activation_chol_diag_max, + shear_limit=cfg.activation_shear_limit, + fallback_u_free=fallback_u_free, + optimizer=Optax( + optax.adam(cfg.inverse_lr), + max_steps=jnp.asarray(cfg.inverse_max_steps), + patience=jnp.asarray(cfg.inverse_patience), + ), + ) + + +def fill_inverse_outputs( + mesh: pv.UnstructuredGrid, + *, + target: pv.UnstructuredGrid, + forward: Forward, + model: Model, +) -> None: + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + eig_min, eig_max = activation_eigenvalue_bounds(mesh.cell_data["InverseActivation"]) + mesh.cell_data["ActivationEigMin"] = np.full((mesh.n_cells,), eig_min) + mesh.cell_data["ActivationEigMax"] = np.full((mesh.n_cells,), eig_max) + cherries.log_metrics( + { + "activation": { + "eig_min": eig_min, + "eig_max": eig_max, + } + } + ) + + +def save_summary(path: Path, values: dict[str, float | bool | str]) -> None: + path.write_text(json.dumps(values, indent=2)) + + +def run_inverse(cfg: Config) -> None: + target: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + mesh: pv.UnstructuredGrid = target.copy() + model: Model = build_phace_v3(mesh) + fallback_u_free = initialize_target_guess(model, mesh, target) + + forward: Forward = Forward(model) + forward.last_successful_u_free = fallback_u_free + inverse: MyInverse = build_inverse( + cfg, + mesh=mesh, + target=target, + forward=forward, + fallback_u_free=fallback_u_free, + ) + params: Vector = jnp.asarray( + activation_to_spd_params( + np.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + ) + ) + + with melon.io.SeriesWriter( + cherries.temp(f"30-inverse{SUFFIX}-neo-hookean.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + fill_inverse_outputs(mesh, target=target, forward=forward, model=model) + writer.append(mesh) + + params = inverse.solve(params, callback) + + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + forward.state = model.init_state(model.u_full) + init_grad: Vector = model.grad(forward.state) + final_solution = forward.step() + log_forward_pass_metrics(final_solution, init_grad=init_grad) + fill_inverse_outputs(mesh, target=target, forward=forward, model=model) + melon.save(cherries.output(f"30-inverse{SUFFIX}-neo-hookean.vtu"), mesh) + + point_to_point = np.asarray(mesh.point_data["PointToPoint"]) + activation_diff = np.asarray(mesh.cell_data["ActivationDiff"]) + save_summary( + cherries.output(f"30-inverse{SUFFIX}-neo-hookean.json"), + { + "mode": "inverse", + "backend": jax.default_backend(), + "forward_success": bool(final_solution.success), + "forward_result": str(final_solution.result), + "point_to_point_l2": float(np.linalg.norm(point_to_point)), + "point_to_point_inf": float( + np.linalg.norm(point_to_point.reshape(-1), ord=np.inf) + ), + "activation_diff_l2": float(np.linalg.norm(activation_diff)), + "activation_diff_inf": float( + np.linalg.norm(activation_diff.reshape(-1), ord=np.inf) + ), + "activation_eig_min": float(mesh.cell_data["ActivationEigMin"][0]), + "activation_eig_max": float(mesh.cell_data["ActivationEigMax"][0]), + }, + ) + + +def evaluate_target_state(model: Model, u_full: np.ndarray) -> dict[str, float]: + warp_model = model.warp.__wrapped__ + u_wp = jarp.to_warp(u_full, (3, None)) + warp_state = warp_model.init_state(u_wp) + warp_model.update(warp_state, u_wp) + + value_wp = wp.zeros((1,), dtype=float, device=u_wp.device) + grad_wp = wp.zeros_like(u_wp) + + warp_model.fun(warp_state, u_wp, value_wp) + warp_model.grad(warp_state, u_wp, grad_wp) + + grad_full = grad_wp.numpy() + grad_free = np.asarray(model.dirichlet.get_free(jnp.asarray(grad_full))) + + return { + "energy": float(value_wp.numpy()[0]), + "full_grad_l2": float(np.linalg.norm(grad_full)), + "full_grad_inf": float(np.linalg.norm(grad_full.reshape(-1), ord=np.inf)), + "free_grad_l2": float(np.linalg.norm(grad_free)), + "free_grad_inf": float(np.linalg.norm(grad_free, ord=np.inf)), + } + + +def run_cpu_validation(cfg: Config) -> None: + target: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + mesh: pv.UnstructuredGrid = target.copy() + model: Model = build_phace_v3(mesh) + u_full = make_target_u_full(model, mesh, target) + + # Warp's JAX FFI path is CUDA-only in this environment, so we validate the + # reachable Neo-Hookean target directly through the Warp model on CPU. + summary = evaluate_target_state(model, u_full) + + mesh.point_data["InverseSolution"] = target.point_data["Solution"].copy() + mesh.point_data["PointToPoint"] = np.zeros_like(target.point_data["Solution"]) + mesh.point_data["ForwardGradNorm"] = np.full( + (mesh.n_points,), summary["free_grad_l2"], dtype=mesh.points.dtype + ) + mesh.point_data["ForwardGradNormInf"] = np.full( + (mesh.n_points,), summary["free_grad_inf"], dtype=mesh.points.dtype + ) + mesh.cell_data["InverseActivation"] = mesh.cell_data[ACTIVATION].copy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data[ACTIVATION] + ) + + summary["mode"] = "cpu_validation" + summary["backend"] = jax.default_backend() + summary["activation_diff_l2"] = float( + np.linalg.norm(mesh.cell_data["ActivationDiff"]) + ) + summary["activation_diff_inf"] = float( + np.linalg.norm(mesh.cell_data["ActivationDiff"].reshape(-1), ord=np.inf) + ) + summary["point_to_point_l2"] = 0.0 + summary["point_to_point_inf"] = 0.0 + + melon.save(cherries.output(f"30-inverse{SUFFIX}-neo-hookean.vtu"), mesh) + save_summary(cherries.output(f"30-inverse{SUFFIX}-neo-hookean.json"), summary) + + +def main(cfg: Config) -> None: + wp.init() + backend = jax.default_backend().lower() + if backend in {"cuda", "gpu"}: + run_inverse(cfg) + else: + run_cpu_validation(cfg) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/30-inverse-stable-neo-hookean.py b/exp/2026/01/28/smas/src/30-inverse-stable-neo-hookean.py new file mode 100644 index 000000000..082f6fa75 --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse-stable-neo-hookean.py @@ -0,0 +1,168 @@ +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from environs import env +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, SMAS_FRACTION +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +type EnergyMaterials = Mapping[str, Array] +type ModelMaterials = Mapping[str, EnergyMaterials] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + + +@jarp.define +class MyInverse(Inverse): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + inverse_lr: float = env.float("INVERSE_LR", 0.03) + inverse_max_steps: int = env.int("INVERSE_MAX_STEPS", 1000) + inverse_patience: int = env.int("INVERSE_PATIENCE", 1000) + target: Path = cherries.input( + f"20-forward{SUFFIX}-prestrain-bottom-dirichlet-arch-stable-neo-hookean.vtu" + ) + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + return builder.finalize() + + +def build_inverse( + cfg: Config, mesh: pv.UnstructuredGrid, forward: Forward +) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(mesh.point_data["Solution"][surface_indices]), + ) + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + optimizer=Optax( + optax.adam(cfg.inverse_lr), + max_steps=jnp.asarray(cfg.inverse_max_steps), + patience=jnp.asarray(cfg.inverse_patience), + ), + ) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + target: pv.UnstructuredGrid = mesh.copy() + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + forward_optimizer = cast("PNCG", forward.optimizer) + forward_optimizer.rtol = jnp.asarray(1e-3) + forward_optimizer.rtol_primary = jnp.asarray(1e-5) + inverse: MyInverse = build_inverse(cfg, mesh, forward) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter( + cherries.temp(f"30-inverse{SUFFIX}-stable-neo-hookean.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + forward.step() + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + melon.save(cherries.output(f"30-inverse{SUFFIX}-stable-neo-hookean.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/30-inverse-test.py b/exp/2026/01/28/smas/src/30-inverse-test.py new file mode 100644 index 000000000..793b6d5d9 --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse-test.py @@ -0,0 +1,172 @@ +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ( + ACTIVATION, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss, UniformActivationLoss +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +type EnergyMaterials = Mapping[str, Array] +type ModelMaterials = Mapping[str, EnergyMaterials] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + + +@jarp.define +class MyInverse(Inverse): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + +SUFFIX: str = "-smas46-muscle46-prestrain-test" + + +class Config(cherries.BaseConfig): + target: Path = cherries.input(f"20-forward{SUFFIX}.vtu") + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + [4.8 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def build_inverse(mesh: pv.UnstructuredGrid, forward: Forward) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + # gen unreachable target + # mesh.point_data["Solution"] = np.zeros_like(mesh.points) + # mesh.point_data["Solution"][:, 1] = mesh.points[:, 1] + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(mesh.point_data["Solution"][surface_indices]), + ), + UniformActivationLoss(muscle_indices=muscle_indices), + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + optimizer=Optax(optax.adam(0.03), patience=jnp.asarray(1000)), + ) + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + inverse: MyInverse = build_inverse(mesh, forward) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter( + cherries.temp(f"30-inverse{SUFFIX}.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - mesh.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - mesh.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + forward.step() + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - mesh.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - mesh.cell_data["Activation"] + ) + melon.save(cherries.output(f"30-inverse{SUFFIX}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/30-inverse-unreachable-arap-hessian.py b/exp/2026/01/28/smas/src/30-inverse-unreachable-arap-hessian.py new file mode 100644 index 000000000..1036a5851 --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse-unreachable-arap-hessian.py @@ -0,0 +1,406 @@ +import json +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import scipy.sparse.linalg as spla +import warp as wp +from environs import env +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, SMAS_FRACTION +from liblaf.apple.model import Forward, Full, Model, ModelBuilder, ModelMaterials +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +type EnergyMaterials = Mapping[str, Array] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + +FAILURE_CONTEXT: dict[str, Any] = {} +SUFFIX: str = "-smas46-muscle46-prestrain" + + +def _eigsh_values( + operator: spla.LinearOperator, + *, + k: int, + which: str, + tol: float, + maxiter: int, +) -> list[float]: + try: + values = spla.eigsh( + operator, + k=k, + which=which, + tol=tol, + maxiter=maxiter, + return_eigenvectors=False, + ) + except spla.ArpackNoConvergence as exc: + values = exc.eigenvalues + values = np.asarray(values, dtype=np.float64) + values.sort() + return values.tolist() + + +def estimate_free_hessian_spectrum( + model: Model, + *, + state: Any, + k: int, + tol: float, + maxiter: int, +) -> dict[str, Any]: + n_free = int(model.n_free) + hess_diag_full = np.asarray(model.hess_diag(state), dtype=np.float64) + hess_diag_free = np.asarray(model.dirichlet.get_free(jnp.asarray(hess_diag_full))) + + summary: dict[str, Any] = { + "n_free": n_free, + "hess_diag_min": float(np.min(hess_diag_free)), + "hess_diag_max": float(np.max(hess_diag_free)), + "hess_diag_mean": float(np.mean(hess_diag_free)), + "hess_diag_nonpositive": int(np.count_nonzero(hess_diag_free <= 0.0)), + } + if n_free < 3: + summary["raw_smallest_algebraic"] = [] + summary["raw_largest_algebraic"] = [] + summary["preconditioned_smallest_algebraic"] = [] + summary["preconditioned_largest_algebraic"] = [] + return summary + + k_eff = max(1, min(k, n_free - 2)) + hess_diag_safe = np.maximum(hess_diag_free, 1e-12) + inv_sqrt_diag = 1.0 / np.sqrt(hess_diag_safe) + + def hess_matvec(v: np.ndarray) -> np.ndarray: + v_free = jnp.asarray(v, dtype=model.u_full.dtype) + v_full: Full = model.dirichlet.to_full(v_free, dirichlet=0.0) + output_full = model.hess_prod(state, v_full) + output_free = model.dirichlet.get_free(output_full) + return np.asarray(output_free, dtype=np.float64) + + def preconditioned_matvec(v: np.ndarray) -> np.ndarray: + scaled = inv_sqrt_diag * v + return inv_sqrt_diag * hess_matvec(scaled) + + hess_operator = spla.LinearOperator( + shape=(n_free, n_free), + matvec=hess_matvec, + rmatvec=hess_matvec, + dtype=np.float64, + ) + precond_operator = spla.LinearOperator( + shape=(n_free, n_free), + matvec=preconditioned_matvec, + rmatvec=preconditioned_matvec, + dtype=np.float64, + ) + summary["raw_smallest_algebraic"] = _eigsh_values( + hess_operator, k=k_eff, which="SA", tol=tol, maxiter=maxiter + ) + summary["raw_largest_algebraic"] = _eigsh_values( + hess_operator, k=k_eff, which="LA", tol=tol, maxiter=maxiter + ) + summary["preconditioned_smallest_algebraic"] = _eigsh_values( + precond_operator, k=k_eff, which="SA", tol=tol, maxiter=maxiter + ) + summary["preconditioned_largest_algebraic"] = _eigsh_values( + precond_operator, k=k_eff, which="LA", tol=tol, maxiter=maxiter + ) + return summary + + +def dump_failure_artifacts( + *, + failure_id: str, + failure_dir: Path, + forward: Forward, + model: Model, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + materials: ModelMaterials, + solution: Optimizer.Solution, + eigsh_k: int, + eigsh_tol: float, + eigsh_maxiter: int, +) -> None: + spectrum = estimate_free_hessian_spectrum( + model, + state=forward.state, + k=eigsh_k, + tol=eigsh_tol, + maxiter=eigsh_maxiter, + ) + report = { + "failure_id": failure_id, + "forward_result": str(solution.result), + "forward_success": bool(solution.success), + "forward_steps": int(np.asarray(solution.state.n_steps)), + "forward_best_decrease": float(np.asarray(solution.state.best_decrease)), + "forward_relative_decrease": float( + np.asarray(solution.stats.relative_decrease) + ), + "spectrum": spectrum, + } + report_path = failure_dir / f"failure-{failure_id}.json" + report_path.write_text(json.dumps(report, indent=2)) + + np.savez_compressed( + failure_dir / f"failure-{failure_id}.npz", + params=np.asarray(model.u_free), + grad=np.asarray(solution.state.grad), + hess_diag=np.asarray(solution.state.hess_diag), + activation=np.asarray(materials["muscle"]["activation"]), + ) + + mesh_out = mesh.copy() + mesh_out.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh_out.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh_out.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh_out.cell_data["ActivationDiff"] = ( + mesh_out.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + mesh_out.point_data["ForwardGradNorm"] = np.full( + (mesh_out.n_points,), float(np.linalg.norm(np.asarray(solution.state.grad))) + ) + melon.save(failure_dir / f"failure-{failure_id}.vtu", mesh_out) + + +@jarp.define +class MyInverse(Inverse): + full_activation: Float[Array, "cells 6"] = jarp.field() + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + eigsh_k: int = jarp.static(default=2) + eigsh_maxiter: int = jarp.static(default=500) + eigsh_tol: float = jarp.static(default=1e-1) + forward_failures: int = jarp.field(default=0, kw_only=True) + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + def record_forward_failure( + self, + *, + materials: ModelMaterials, + solution: Optimizer.Solution, + ) -> None: + self.forward_failures += 1 + failure_id = f"{self.forward_failures:04d}" + dump_failure_artifacts( + failure_id=failure_id, + failure_dir=FAILURE_CONTEXT["failure_dir"], + forward=self.forward, + model=self.model, + mesh=FAILURE_CONTEXT["mesh"], + target=FAILURE_CONTEXT["target"], + materials=materials, + solution=solution, + eigsh_k=self.eigsh_k, + eigsh_tol=self.eigsh_tol, + eigsh_maxiter=self.eigsh_maxiter, + ) + + def update(self, materials: ModelMaterials) -> None: + self.model.update_materials(materials) + if not self.last_forward_success: + self.model.u_free = jnp.zeros_like(self.model.u_free) + solution: PNCG.Solution = self.forward.step() + cherries.log_metrics( + { + "forward": { + "decrease": solution.state.best_decrease, + "relative_decrease": solution.stats.relative_decrease, + } + } + ) + self.last_forward_success = jnp.asarray(solution.success) + if not bool(np.asarray(solution.success)): + self.record_forward_failure(materials=materials, solution=solution) + + +class Config(cherries.BaseConfig): + eigsh_k: int = env.int("EIGSH_K", 2) + eigsh_maxiter: int = env.int("EIGSH_MAXITER", 500) + eigsh_tol: float = env.float("EIGSH_TOL", 1e-1) + inverse_lr: float = env.float("INVERSE_LR", 0.03) + inverse_max_steps: int = env.int("INVERSE_MAX_STEPS", 5) + inverse_patience: int = env.int("INVERSE_PATIENCE", 5) + target: Path = cherries.input(f"20-forward{SUFFIX}.vtu") + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + builder.add_energy(WarpArap.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + builder.add_energy(WarpArapMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + builder.add_energy( + WarpArapMuscle.from_pyvista(mesh, requires_grad=("activation",), name="muscle") + ) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0e2 + builder.add_energy(WarpVolumePreservationDeterminant.from_pyvista(mesh)) + + return builder.finalize() + + +def make_unreachable_target(target: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + target.point_data["Solution"] = np.zeros_like(target.points) + target.point_data["Solution"][:, 1] = target.points[:, 1] + return target + + +def build_inverse( + cfg: Config, + *, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + forward: Forward, +) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(target.point_data["Solution"][surface_indices]), + ) + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + eigsh_k=cfg.eigsh_k, + eigsh_maxiter=cfg.eigsh_maxiter, + eigsh_tol=cfg.eigsh_tol, + optimizer=Optax( + optax.adam(cfg.inverse_lr), + max_steps=jnp.asarray(cfg.inverse_max_steps), + patience=jnp.asarray(cfg.inverse_patience), + ), + ) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + target: pv.UnstructuredGrid = make_unreachable_target(mesh.copy()) + mesh.point_data["Solution"] = target.point_data["Solution"].copy() + target.cell_data[ACTIVATION] = mesh.cell_data[ACTIVATION].copy() + + failure_dir = cherries.temp("30-inverse-unreachable-arap-hessian-failures") + failure_dir.mkdir(parents=True, exist_ok=True) + FAILURE_CONTEXT["failure_dir"] = failure_dir + FAILURE_CONTEXT["mesh"] = mesh + FAILURE_CONTEXT["target"] = target + + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + optimizer = cast("PNCG", forward.optimizer) + optimizer.rtol = jnp.asarray(1e-4) + optimizer.rtol_primary = jnp.asarray(1e-5) + + inverse = build_inverse(cfg, mesh=mesh, target=target, forward=forward) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter( + cherries.temp("30-inverse-unreachable-arap-hessian.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + final_solution = forward.step() + if not final_solution.success: + dump_failure_artifacts( + failure_id="final", + failure_dir=failure_dir, + forward=forward, + model=model, + mesh=mesh, + target=target, + materials=materials, + solution=final_solution, + eigsh_k=cfg.eigsh_k, + eigsh_tol=cfg.eigsh_tol, + eigsh_maxiter=cfg.eigsh_maxiter, + ) + + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + melon.save(cherries.output("30-inverse-unreachable-arap-hessian.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/30-inverse-unreachable-stable-neo-hookean.py b/exp/2026/01/28/smas/src/30-inverse-unreachable-stable-neo-hookean.py new file mode 100644 index 000000000..07bd75691 --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse-unreachable-stable-neo-hookean.py @@ -0,0 +1,402 @@ +import json +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import scipy.sparse.linalg as spla +import warp as wp +from environs import env +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, SMAS_FRACTION +from liblaf.apple.model import Forward, Full, Model, ModelBuilder, ModelMaterials +from liblaf.apple.optim import PNCG +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +type EnergyMaterials = Mapping[str, Array] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + +FAILURE_CONTEXT: dict[str, Any] = {} + + +def _eigsh_values( + operator: spla.LinearOperator, + *, + k: int, + which: str, + tol: float, + maxiter: int, +) -> list[float]: + try: + values = spla.eigsh( + operator, + k=k, + which=which, + tol=tol, + maxiter=maxiter, + return_eigenvectors=False, + ) + except spla.ArpackNoConvergence as exc: + values = exc.eigenvalues + values = np.asarray(values, dtype=np.float64) + values.sort() + return values.tolist() + + +def estimate_free_hessian_spectrum( + model: Model, + *, + state: Any, + k: int, + tol: float, + maxiter: int, +) -> dict[str, Any]: + n_free = int(model.n_free) + hess_diag_full = np.asarray(model.hess_diag(state), dtype=np.float64) + hess_diag_free = np.asarray(model.dirichlet.get_free(jnp.asarray(hess_diag_full))) + + summary: dict[str, Any] = { + "n_free": n_free, + "hess_diag_min": float(np.min(hess_diag_free)), + "hess_diag_max": float(np.max(hess_diag_free)), + "hess_diag_mean": float(np.mean(hess_diag_free)), + "hess_diag_nonpositive": int(np.count_nonzero(hess_diag_free <= 0.0)), + } + if n_free < 3: + summary["smallest_algebraic"] = [] + summary["largest_algebraic"] = [] + return summary + + k_eff = max(1, min(k, n_free - 2)) + + def matvec(v: np.ndarray) -> np.ndarray: + v_free = jnp.asarray(v, dtype=model.u_full.dtype) + v_full: Full = model.dirichlet.to_full(v_free, dirichlet=0.0) + output_full = model.hess_prod(state, v_full) + output_free = model.dirichlet.get_free(output_full) + return np.asarray(output_free, dtype=np.float64) + + operator = spla.LinearOperator( + shape=(n_free, n_free), + matvec=matvec, + rmatvec=matvec, + dtype=np.float64, + ) + summary["smallest_algebraic"] = _eigsh_values( + operator, k=k_eff, which="SA", tol=tol, maxiter=maxiter + ) + summary["largest_algebraic"] = _eigsh_values( + operator, k=k_eff, which="LA", tol=tol, maxiter=maxiter + ) + return summary + + +def dump_failure_artifacts( + *, + failure_id: str, + failure_dir: Path, + forward: Forward, + model: Model, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + materials: ModelMaterials, + solution: Optimizer.Solution, + eigsh_k: int, + eigsh_tol: float, + eigsh_maxiter: int, +) -> None: + spectrum = estimate_free_hessian_spectrum( + model, + state=forward.state, + k=eigsh_k, + tol=eigsh_tol, + maxiter=eigsh_maxiter, + ) + report = { + "failure_id": failure_id, + "forward_result": str(solution.result), + "forward_success": bool(solution.success), + "forward_steps": int(np.asarray(solution.state.n_steps)), + "forward_best_decrease": float(np.asarray(solution.state.best_decrease)), + "forward_relative_decrease": float( + np.asarray(solution.stats.relative_decrease) + ), + "spectrum": spectrum, + } + report_path = failure_dir / f"failure-{failure_id}.json" + report_path.write_text(json.dumps(report, indent=2)) + + np.savez_compressed( + failure_dir / f"failure-{failure_id}.npz", + params=np.asarray(model.u_free), + grad=np.asarray(solution.state.grad), + hess_diag=np.asarray(solution.state.hess_diag), + activation=np.asarray(materials["muscle"]["activation"]), + ) + + mesh_out = mesh.copy() + mesh_out.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh_out.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh_out.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh_out.cell_data["ActivationDiff"] = ( + mesh_out.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + mesh_out.point_data["ForwardGradNorm"] = np.full( + (mesh_out.n_points,), float(np.linalg.norm(np.asarray(solution.state.grad))) + ) + melon.save(failure_dir / f"failure-{failure_id}.vtu", mesh_out) + + +@jarp.define +class MyInverse(Inverse): + full_activation: Float[Array, "cells 6"] = jarp.field() + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + eigsh_k: int = jarp.static(default=4) + eigsh_maxiter: int = jarp.static(default=80) + eigsh_tol: float = jarp.static(default=1e-2) + forward_failures: int = jarp.field(default=0, kw_only=True) + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + def record_forward_failure( + self, + *, + materials: ModelMaterials, + solution: Optimizer.Solution, + ) -> None: + self.forward_failures += 1 + failure_id = f"{self.forward_failures:04d}" + failure_dir: Path = FAILURE_CONTEXT["failure_dir"] + mesh: pv.UnstructuredGrid = FAILURE_CONTEXT["mesh"] + target: pv.UnstructuredGrid = FAILURE_CONTEXT["target"] + dump_failure_artifacts( + failure_id=failure_id, + failure_dir=failure_dir, + forward=self.forward, + model=self.model, + mesh=mesh, + target=target, + materials=materials, + solution=solution, + eigsh_k=self.eigsh_k, + eigsh_tol=self.eigsh_tol, + eigsh_maxiter=self.eigsh_maxiter, + ) + + def update(self, materials: ModelMaterials) -> None: + self.model.update_materials(materials) + if not self.last_forward_success: + self.model.u_free = jnp.zeros_like(self.model.u_free) + solution: PNCG.Solution = self.forward.step() + cherries.log_metrics( + { + "forward": { + "decrease": solution.state.best_decrease, + "relative_decrease": solution.stats.relative_decrease, + "result": str(solution.result), + } + } + ) + self.last_forward_success = jnp.asarray(solution.success) + if not bool(np.asarray(solution.success)): + self.record_forward_failure(materials=materials, solution=solution) + + +SUFFIX: str = "-smas46-muscle46" + + +class Config(cherries.BaseConfig): + eigsh_k: int = env.int("EIGSH_K", 4) + eigsh_maxiter: int = env.int("EIGSH_MAXITER", 80) + eigsh_tol: float = env.float("EIGSH_TOL", 1e-2) + inverse_lr: float = env.float("INVERSE_LR", 0.03) + inverse_max_steps: int = env.int("INVERSE_MAX_STEPS", 20) + inverse_patience: int = env.int("INVERSE_PATIENCE", 20) + target: Path = cherries.input( + f"20-forward{SUFFIX}-prestrain-bottom-dirichlet-arch-stable-neo-hookean.vtu" + ) + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0e2) + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + ) + + return builder.finalize() + + +def make_unreachable_target(target: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + target.point_data["Solution"] = np.zeros_like(target.points) + target.point_data["Solution"][:, 1] = target.points[:, 1] + return target + + +def build_inverse( + cfg: Config, + *, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + forward: Forward, + failure_dir: Path, +) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(target.point_data["Solution"][surface_indices]), + ) + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + eigsh_k=cfg.eigsh_k, + eigsh_maxiter=cfg.eigsh_maxiter, + eigsh_tol=cfg.eigsh_tol, + optimizer=Optax( + optax.adam(cfg.inverse_lr), + max_steps=jnp.asarray(cfg.inverse_max_steps), + patience=jnp.asarray(cfg.inverse_patience), + ), + ) + + +def main(cfg: Config) -> None: + wp.init() + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + target: pv.UnstructuredGrid = make_unreachable_target(mesh.copy()) + mesh.point_data["Solution"] = target.point_data["Solution"].copy() + target.cell_data[ACTIVATION] = mesh.cell_data[ACTIVATION].copy() + + failure_dir = cherries.temp( + "30-inverse-unreachable-smas46-muscle46-stable-neo-hookean-failures" + ) + failure_dir.mkdir(parents=True, exist_ok=True) + FAILURE_CONTEXT["failure_dir"] = failure_dir + FAILURE_CONTEXT["mesh"] = mesh + FAILURE_CONTEXT["target"] = target + + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + forward_optimizer = cast("PNCG", forward.optimizer) + forward_optimizer.rtol = jnp.asarray(1e-3) + forward_optimizer.rtol_primary = jnp.asarray(1e-5) + + inverse = build_inverse( + cfg, + mesh=mesh, + target=target, + forward=forward, + failure_dir=failure_dir, + ) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter( + cherries.temp(f"30-inverse-unreachable{SUFFIX}-stable-neo-hookean.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + final_solution = forward.step() + if not final_solution.success: + dump_failure_artifacts( + failure_id="final", + failure_dir=failure_dir, + forward=forward, + model=model, + mesh=mesh, + target=target, + materials=materials, + solution=final_solution, + eigsh_k=cfg.eigsh_k, + eigsh_tol=cfg.eigsh_tol, + eigsh_maxiter=cfg.eigsh_maxiter, + ) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + melon.save( + cherries.output(f"30-inverse-unreachable{SUFFIX}-stable-neo-hookean.vtu"), mesh + ) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/30-inverse-unreachable.py b/exp/2026/01/28/smas/src/30-inverse-unreachable.py new file mode 100644 index 000000000..d563275f7 --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse-unreachable.py @@ -0,0 +1,172 @@ +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, SMAS_FRACTION +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +type EnergyMaterials = Mapping[str, Array] +type ModelMaterials = Mapping[str, EnergyMaterials] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + + +@jarp.define +class MyInverse(Inverse): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + +SUFFIX: str = "-smas46-muscle46-prestrain" + + +class Config(cherries.BaseConfig): + target: Path = cherries.input(f"20-forward{SUFFIX}.vtu") + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + # mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + # [4.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0e2 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def make_unreachable_target(target: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + target.point_data["Solution"] = np.zeros_like(target.points) + target.point_data["Solution"][:, 1] = target.points[:, 1] + return target + + +def build_inverse(mesh: pv.UnstructuredGrid, forward: Forward) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(mesh.point_data["Solution"][surface_indices]), + ), + # UniformActivationLoss(muscle_indices=muscle_indices), + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + optimizer=Optax(optax.adam(0.03), patience=jnp.asarray(1000)), + ) + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + target: pv.UnstructuredGrid = make_unreachable_target(mesh.copy()) + mesh.point_data["Solution"] = target.point_data["Solution"].copy() + model: Model = build_phace_v3(mesh) + target.cell_data[ACTIVATION] = mesh.cell_data[ACTIVATION].copy() + forward: Forward = Forward(model) + inverse: MyInverse = build_inverse(target, forward) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter( + cherries.temp(f"30-inverse-unreachable{SUFFIX}.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + forward.step() + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + melon.save(cherries.output(f"30-inverse-unreachable{SUFFIX}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/30-inverse.py b/exp/2026/01/28/smas/src/30-inverse.py new file mode 100644 index 000000000..dc410902b --- /dev/null +++ b/exp/2026/01/28/smas/src/30-inverse.py @@ -0,0 +1,167 @@ +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION, SMAS_FRACTION +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import ( + WarpArap, + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + +type EnergyMaterials = Mapping[str, Array] +type ModelMaterials = Mapping[str, EnergyMaterials] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + + +@jarp.define +class MyInverse(Inverse): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + +SUFFIX: str = "-smas46-muscle46-prestrain" + + +class Config(cherries.BaseConfig): + target: Path = cherries.input(f"20-forward{SUFFIX}.vtu") + + +def build_phace_v3(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + muscle_frac: np.ndarray = mesh.cell_data[MUSCLE_FRACTION] + smas_frac: np.ndarray = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac: np.ndarray = smas_frac - muscle_frac + fat_frac: np.ndarray = 1.0 - smas_frac + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = np.asarray( + [2.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + ) + # mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + # [4.0 - 1.0, 0.25 - 1.0, 2.0 - 1.0, 0.0, 0.0, 0.0] + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_fat: WarpArap = WarpArap.from_pyvista(mesh) + builder.add_energy(energy_fat) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_aponeurosis: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_aponeurosis) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0e2) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = fat_frac * 3.0 + smas_frac * 3.0e2 + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def build_inverse(mesh: pv.UnstructuredGrid, forward: Forward) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data["MuscleFraction"] > 1e-3 + ) + # gen unreachable target + # mesh.point_data["Solution"] = np.zeros_like(mesh.points) + # mesh.point_data["Solution"][:, 1] = mesh.points[:, 1] + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(mesh.point_data["Solution"][surface_indices]), + ), + # UniformActivationLoss(muscle_indices=muscle_indices), + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + optimizer=Optax(optax.adam(0.03), patience=jnp.asarray(1000)), + ) + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + target: pv.UnstructuredGrid = mesh.copy() + model: Model = build_phace_v3(mesh) + forward: Forward = Forward(model) + inverse: MyInverse = build_inverse(mesh, forward) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter( + cherries.temp(f"30-inverse{SUFFIX}.vtu.series") + ) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + forward.step() + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - target.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - target.cell_data["Activation"] + ) + melon.save(cherries.output(f"30-inverse{SUFFIX}.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/01/28/smas/src/31-inverse-activation-stable-neo-hookean.py b/exp/2026/01/28/smas/src/31-inverse-activation-stable-neo-hookean.py new file mode 100644 index 000000000..c2e6e1e8a --- /dev/null +++ b/exp/2026/01/28/smas/src/31-inverse-activation-stable-neo-hookean.py @@ -0,0 +1,1203 @@ +import csv +import json +import math +from collections.abc import Mapping +from contextlib import nullcontext +from pathlib import Path +from typing import Any, cast + +import attrs +import jax +import jax.numpy as jnp +import matplotlib.pyplot as plt +import numpy as np +import optax +import pyvista as pv +import warp as wp +from environs import env +from jaxtyping import Array, Float, Integer +from liblaf.apple.consts import ( + ACTIVATION, + DIRICHLET_MASK, + DIRICHLET_VALUE, + GLOBAL_POINT_ID, + LAMBDA, + MU, + MUSCLE_FRACTION, + SMAS_FRACTION, +) +from liblaf.apple.inverse._inverse import InverseObjective +from liblaf.apple.model import Forward, Free, Model, ModelBuilder, ModelMaterials +from liblaf.apple.optim import PNCG +from liblaf.peach.linalg import LinearSolver +from liblaf.peach.linalg import utils as linalg_utils +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import AdjointLinearSystem, Inverse, Loss, PointToPointLoss +from liblaf.apple.warp import WarpStableNeoHookean, WarpStableNeoHookeanMuscle + +type EnergyMaterials = Mapping[str, Array] +type MetricRecord = dict[str, bool | float | int | str] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] + +plt.switch_backend("Agg") + +SUFFIX: str = "-smas46-muscle46" +METRIC_PLOT_NAMES: tuple[str, ...] = ( + "loss", + "point-to-point-l2", + "relative-activation", + "activation-error", + "forward-grad-norm-absolute", + "forward-grad-norm-relative", + "adjoint-relative-residual", + "inverse-grad-absolute", +) + + +class Config(cherries.BaseConfig): + input: Path = cherries.input(f"10-input{SUFFIX}.vtu") + cases: str = env.str("INVERSE_CASES", "easy,zero") + write_series: bool = env.bool("WRITE_SERIES", True) + reuse_target: bool = env.bool("REUSE_TARGET", True) + + arch_height: float = env.float("ARCH_HEIGHT", 2.0) + easy_initial_activation: float = env.float("EASY_INITIAL_ACTIVATION", 1.98) + zero_initial_log_activation: float = env.float("ZERO_INITIAL_LOG_ACTIVATION", 0.0) + target_activation: float = env.float("TARGET_ACTIVATION", 2.0) + smas_prestrain: float = env.float("SMAS_PRESTRAIN", 1.3) + stiffness_ratio: float = env.float("STIFFNESS_RATIO", 1.0e2) + poisson_lambda_ratio: float = env.float("POISSON_LAMBDA_RATIO", 49.0) + side_tolerance: float = env.float("SIDE_TOLERANCE", 1e-2) + + inverse_lr: float = env.float("INVERSE_LR", 0.05) + inverse_max_steps: int = env.int("INVERSE_MAX_STEPS", 80) + inverse_patience: int = env.int("INVERSE_PATIENCE", 8) + inverse_rtol: float = env.float("INVERSE_RTOL", 1e-8) + activation_tolerance: float = env.float("ACTIVATION_TOLERANCE", 5e-2) + log_activation_min: float = env.float("LOG_ACTIVATION_MIN", -2.0) + log_activation_max: float = env.float("LOG_ACTIVATION_MAX", 2.0) + + +def diagonal_activation_vector( + xz_activation: Float[Array, "*batch"], +) -> Float[Array, "*batch 6"]: + y_activation = jnp.reciprocal(jnp.square(xz_activation)) + zeros = jnp.zeros_like(xz_activation) + return jnp.stack( + [ + xz_activation - 1.0, + y_activation - 1.0, + xz_activation - 1.0, + zeros, + zeros, + zeros, + ], + axis=-1, + ) + + +def make_smas_activation(smas_prestrain: float) -> np.ndarray: + return np.asarray(diagonal_activation_vector(jnp.asarray(smas_prestrain))) + + +def directional_activation_vector( + x_activation: Float[Array, "*batch"], + y_activation: Float[Array, "*batch"], + z_activation: Float[Array, "*batch"], +) -> Float[Array, "*batch 6"]: + zeros = jnp.zeros_like(x_activation) + return jnp.stack( + [ + x_activation - 1.0, + y_activation - 1.0, + z_activation - 1.0, + zeros, + zeros, + zeros, + ], + axis=-1, + ) + + +def log_param_to_relative_activation( + log_relative_activation: Float[Array, "*batch"], + *, + log_min: float, + log_max: float, +) -> Float[Array, "*batch"]: + return jnp.exp(jnp.clip(log_relative_activation, log_min, log_max)) + + +def make_muscle_x_activation( + log_relative_activation: Float[Array, "*batch"], + *, + smas_prestrain: float, + log_min: float, + log_max: float, +) -> Float[Array, "*batch 6"]: + relative_activation = log_param_to_relative_activation( + log_relative_activation, log_min=log_min, log_max=log_max + ) + x_activation = relative_activation * smas_prestrain + y_activation = jnp.ones_like(x_activation) / smas_prestrain**2 + z_activation = jnp.ones_like(x_activation) * smas_prestrain + return directional_activation_vector(x_activation, y_activation, z_activation) + + +def compute_arch_profile( + mesh: pv.UnstructuredGrid, + arch_height: float, + points: np.ndarray | None = None, +) -> np.ndarray: + if points is None: + points = mesh.points + bottom_mask = mesh.points[:, 1] < 5e-3 + bottom_points = mesh.points[bottom_mask] + + x_min, x_max = bottom_points[:, 0].min(), bottom_points[:, 0].max() + z_min, z_max = bottom_points[:, 2].min(), bottom_points[:, 2].max() + x_center = 0.5 * (x_min + x_max) + z_center = 0.5 * (z_min + z_max) + x_hat = 2.0 * (points[:, 0] - x_center) / (x_max - x_min) + z_hat = 2.0 * (points[:, 2] - z_center) / (z_max - z_min) + arch = arch_height * (1.0 - x_hat**2) * (1.0 - z_hat**2) + return np.clip(arch, 0.0, None) + + +def compute_box_side_mask(mesh: pv.UnstructuredGrid, tolerance: float) -> np.ndarray: + points = mesh.points + x_min, x_max = points[:, 0].min(), points[:, 0].max() + z_min, z_max = points[:, 2].min(), points[:, 2].max() + return ( + (points[:, 0] <= x_min + tolerance) + | (points[:, 0] >= x_max - tolerance) + | (points[:, 2] <= z_min + tolerance) + | (points[:, 2] >= z_max - tolerance) + ) + + +def apply_box_arch_dirichlet( + mesh: pv.UnstructuredGrid, *, arch_height: float, side_tolerance: float +) -> pv.UnstructuredGrid: + bottom_mask = mesh.points[:, 1] < 5e-3 + side_mask = compute_box_side_mask(mesh, side_tolerance) + arch = compute_arch_profile(mesh, arch_height, mesh.points[bottom_mask]) + + mesh.point_data[DIRICHLET_MASK] = np.zeros((mesh.n_points, 3), dtype=bool) + mesh.point_data[DIRICHLET_MASK][bottom_mask] = True + mesh.point_data[DIRICHLET_MASK][side_mask] = True + mesh.point_data[DIRICHLET_VALUE] = np.zeros( + (mesh.n_points, 3), dtype=mesh.points.dtype + ) + mesh.point_data[DIRICHLET_VALUE][bottom_mask, 1] = arch + mesh.point_data[DIRICHLET_VALUE][side_mask] = 0.0 + mesh.point_data["BottomDirichletMask"] = bottom_mask + mesh.point_data["SideDirichletMask"] = side_mask + return mesh + + +def initialize_parabolic_guess( + model: Model, mesh: pv.UnstructuredGrid, arch_height: float +) -> None: + u_full = np.zeros((model.n_points, model.dim), dtype=mesh.points.dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID], 1] = compute_arch_profile( + mesh, arch_height + ) + model.u_free = model.dirichlet.get_free(jnp.asarray(u_full)) + + +def configure_forward_solver(forward: Forward) -> None: + optimizer = cast("PNCG", forward.optimizer) + optimizer.convergence = attrs.evolve( + optimizer.convergence, + acceptable_relative_gradient_norm=jnp.asarray(1e-3), + target_relative_gradient_norm=jnp.asarray(1e-5), + ) + + +def keep_forward_displacement_warm_start(forward: Forward) -> None: + forward.last_successful_material_values = None + + +def build_model( + mesh: pv.UnstructuredGrid, + *, + muscle_log_relative_activation: float, + cfg: Config, + muscle_requires_grad: bool, +) -> Model: + builder = ModelBuilder() + mesh = builder.add_points(mesh) + mesh = apply_box_arch_dirichlet( + mesh, arch_height=cfg.arch_height, side_tolerance=cfg.side_tolerance + ) + + muscle_frac = mesh.cell_data[MUSCLE_FRACTION] + smas_frac = mesh.cell_data[SMAS_FRACTION] + aponeurosis_frac = np.clip(smas_frac - muscle_frac, 0.0, None) + fat_frac = np.clip(1.0 - smas_frac, 0.0, None) + + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION][smas_frac > 1e-3] = make_smas_activation( + cfg.smas_prestrain + ) + mesh.cell_data[ACTIVATION][muscle_frac > 1e-3] = np.asarray( + make_muscle_x_activation( + jnp.asarray(muscle_log_relative_activation), + smas_prestrain=cfg.smas_prestrain, + log_min=cfg.log_activation_min, + log_max=cfg.log_activation_max, + ) + ) + builder.add_dirichlet(mesh) + + mesh.cell_data["Fraction"] = fat_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), cfg.poisson_lambda_ratio) + builder.add_energy(WarpStableNeoHookean.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = aponeurosis_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), cfg.stiffness_ratio) + mesh.cell_data[LAMBDA] = np.full( + (mesh.n_cells,), cfg.poisson_lambda_ratio * cfg.stiffness_ratio + ) + builder.add_energy(WarpStableNeoHookeanMuscle.from_pyvista(mesh)) + + mesh.cell_data["Fraction"] = muscle_frac + mesh.cell_data[MU] = np.full((mesh.n_cells,), cfg.stiffness_ratio) + mesh.cell_data[LAMBDA] = np.full( + (mesh.n_cells,), cfg.poisson_lambda_ratio * cfg.stiffness_ratio + ) + requires_grad = ("activation",) if muscle_requires_grad else () + builder.add_energy( + WarpStableNeoHookeanMuscle.from_pyvista( + mesh, requires_grad=requires_grad, name="muscle" + ) + ) + + return builder.finalize() + + +def solve_forward(model: Model) -> Optimizer.Solution: + forward = Forward(model) + configure_forward_solver(forward) + solution = forward.step() + if not bool(np.asarray(solution.success)): + message = f"forward solve failed: {solution.result}" + raise RuntimeError(message) + return solution + + +def target_path() -> Path: + return cherries.output( + f"31-inverse{SUFFIX}-activation-stable-neo-hookean-target.vtu" + ) + + +def target_matches_source( + target: pv.UnstructuredGrid, source: pv.UnstructuredGrid, cfg: Config +) -> bool: + required = ( + target.n_points == source.n_points, + target.n_cells == source.n_cells, + "Solution" in target.point_data, + "TargetRelativeActivation" in target.cell_data, + "SideDirichletMask" in target.point_data, + "SideTolerance" in target.field_data, + "ActivationModeCode" in target.field_data, + "TargetActualActivationX" in target.cell_data, + ) + if not all(required): + return False + side_tolerance_matches = np.isclose( + float(target.field_data["SideTolerance"][0]), cfg.side_tolerance + ) + activation_matches = np.isclose( + target.cell_data["TargetRelativeActivation"][0], cfg.target_activation + ) + mode_matches = int(target.field_data["ActivationModeCode"][0]) == 1 + return bool( + side_tolerance_matches + and activation_matches + and mode_matches + and np.any(target.point_data["SideDirichletMask"]) + and np.array_equal( + target.point_data["SideDirichletMask"], + compute_box_side_mask(source, cfg.side_tolerance), + ) + ) + + +def make_target_mesh(cfg: Config, source: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + output = target_path() + if cfg.reuse_target and output.exists(): + target = melon.load_unstructured_grid(output) + if target_matches_source(target, source, cfg): + return target + + target = source.copy() + target_log_activation = math.log(cfg.target_activation) + model = build_model( + target, + muscle_log_relative_activation=target_log_activation, + cfg=cfg, + muscle_requires_grad=False, + ) + initialize_parabolic_guess(model, target, cfg.arch_height) + solve_forward(model) + target.point_data["Solution"] = np.asarray( + model.u_full[target.point_data[GLOBAL_POINT_ID]] + ) + target.cell_data["TargetRelativeActivation"] = np.full( + (target.n_cells,), cfg.target_activation + ) + target.cell_data["TargetActualActivationX"] = np.full( + (target.n_cells,), cfg.target_activation * cfg.smas_prestrain + ) + target.cell_data["TargetActualActivationY"] = np.full( + (target.n_cells,), 1.0 / cfg.smas_prestrain**2 + ) + target.cell_data["TargetActualActivationZ"] = np.full( + (target.n_cells,), cfg.smas_prestrain + ) + target.field_data["SideTolerance"] = np.asarray([cfg.side_tolerance]) + target.field_data["ActivationModeCode"] = np.asarray([1]) + melon.save(output, target) + return target + + +def make_target_u_full( + model: Model, mesh: pv.UnstructuredGrid, target: pv.UnstructuredGrid +) -> np.ndarray: + u_full = np.zeros((model.n_points, model.dim), dtype=np.asarray(model.u_full).dtype) + u_full[mesh.point_data[GLOBAL_POINT_ID]] = np.asarray( + target.point_data["Solution"], dtype=u_full.dtype + ) + return u_full + + +def initialize_target_guess( + model: Model, mesh: pv.UnstructuredGrid, target: pv.UnstructuredGrid +) -> Free: + u_free = model.dirichlet.get_free( + jnp.asarray(make_target_u_full(model, mesh, target)) + ) + model.u_free = u_free + return u_free + + +def log_forward_pass_metrics( + solution: Optimizer.Solution, *, init_grad: Vector +) -> None: + cherries.log_metrics( + { + "forward": { + "init_grad_norm": jnp.linalg.norm(init_grad), + "init_grad_norm_inf": jnp.linalg.norm(init_grad, ord=jnp.inf), + "final_grad_norm": jnp.linalg.norm(solution.state.grad), + "final_grad_norm_inf": jnp.linalg.norm( + solution.state.grad, ord=jnp.inf + ), + "relative_decrease": solution.stats.relative_decrease, + "result": str(solution.result), + "success": solution.success, + } + } + ) + + +@jarp.define +class ActivationInverse(Inverse[Scalar]): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + smas_prestrain: float = jarp.static(kw_only=True) + log_activation_min: float = jarp.static(kw_only=True) + log_activation_max: float = jarp.static(kw_only=True) + fallback_u_free: Free | None = jarp.array(default=None, kw_only=True) + last_adjoint_relative_residual: Scalar = jarp.array(default=jnp.inf, kw_only=True) + + def make_materials(self, params: Scalar) -> ModelMaterials: + muscle_activation = make_muscle_x_activation( + params, + smas_prestrain=self.smas_prestrain, + log_min=self.log_activation_min, + log_max=self.log_activation_max, + ) + activation = self.full_activation.at[self.muscle_indices].set(muscle_activation) + return {"muscle": {"activation": activation}} + + def update(self, materials: ModelMaterials) -> None: + self.model.update_materials(materials) + if not self.last_forward_success: + if self.forward.last_successful_u_free is not None: + self.model.u_free = self.forward.last_successful_u_free + elif self.fallback_u_free is not None: + self.model.u_free = self.fallback_u_free + else: + self.model.u_free = jnp.zeros_like(self.model.u_free) + self.forward.state = self.model.init_state(self.model.u_full) + init_grad = self.model.grad(self.forward.state) + solution = self.forward.step() + keep_forward_displacement_warm_start(self.forward) + log_forward_pass_metrics(solution, init_grad=init_grad) + self.last_forward_success = jnp.asarray(solution.success) + if not bool(np.asarray(solution.success)): + message = f"forward solve failed during inverse: {solution.result}" + raise RuntimeError(message) + + def loss_and_grad( + self, materials: ModelMaterials + ) -> tuple[Scalar, Vector, dict[str, dict[str, Array]]]: + loss_value: Scalar = jnp.zeros(()) + dLdu: Vector = jnp.zeros_like(self.model.u_full) + dLdq: dict[str, dict[str, Array]] = { + energy_id: { + mat_name: jnp.zeros_like(mat_value) + for mat_name, mat_value in energy.items() + } + for energy_id, energy in materials.items() + } + for loss in self.losses: + loss_i, (dLdu_i, dLdq_i) = loss.value_and_grad(self.model.u_full, materials) + cherries.log_metric(loss.name, loss_i) + loss_value += loss_i + dLdu += dLdu_i + dLdq = jax.tree.map(jnp.add, dLdq, dLdq_i) + cherries.log_metric("loss", loss_value) + return loss_value, dLdu, dLdq + + def value_and_grad( + self, materials: ModelMaterials + ) -> tuple[Scalar, ModelMaterials]: + loss_value: Scalar + dLdu: Vector + dLdq: dict[str, dict[str, Array]] + loss_value, dLdu, dLdq = self.loss_and_grad(materials) + p = self.adjoint(dLdu) + mixed_prod: ModelMaterials = self.model.mixed_derivative_prod( + self.forward.state, p + ) + for energy_id, energy in mixed_prod.items(): + for mat_name, value in energy.items(): + dLdq[energy_id][mat_name] += value + return loss_value, dLdq + + def adjoint(self, dLdu: Vector) -> Vector: + system = AdjointLinearSystem.new(self.model, self.forward.state, dLdu) + p_free: Free = ( + self.adjoint_vector + if self.last_adjoint_success + else jnp.zeros_like(self.model.u_free) + ) + solution: LinearSolver.Solution = self.adjoint_solver.solve(system, p_free) + relative_residual = linalg_utils.relative_residual( + system.matvec, solution.params, system.b + ) + cherries.log_metrics( + { + "adjoint": { + "success": solution.success, + "relative_residual": relative_residual, + } + } + ) + self.last_adjoint_success = jnp.asarray(solution.success) + self.last_adjoint_relative_residual = relative_residual + self.adjoint_vector = solution.params + return self.model.dirichlet.to_full(self.adjoint_vector, dirichlet=0.0) + + def solve( + self, params: Scalar, callback: Optimizer.Callback | None = None + ) -> Scalar: + params_flat: Vector + structure: jarp.Structure[Scalar] + params_flat, structure = jarp.ravel(params) + objective = InverseObjective(inverse=self, structure=structure) + solution: Optimizer.Solution + solution, _ = self.optimizer.minimize( + objective, params, params_flat, callback=callback + ) + return structure.unravel(solution.params) + + +def build_inverse( + cfg: Config, + *, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + forward: Forward, + fallback_u_free: Free, +) -> ActivationInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.flatnonzero( + mesh.cell_data[MUSCLE_FRACTION] > 1e-3 + ) + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(target.point_data["Solution"][surface_indices]), + ) + ] + return ActivationInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=jnp.asarray(mesh.cell_data[ACTIVATION]), + smas_prestrain=cfg.smas_prestrain, + log_activation_min=cfg.log_activation_min, + log_activation_max=cfg.log_activation_max, + fallback_u_free=fallback_u_free, + optimizer=Optax( + optax.adam(cfg.inverse_lr), + max_steps=jnp.asarray(cfg.inverse_max_steps), + patience=jnp.asarray(cfg.inverse_patience), + rtol=jnp.asarray(cfg.inverse_rtol), + ), + ) + + +def relative_activation_from_log_param(cfg: Config, log_activation: float) -> float: + clipped = np.clip(log_activation, cfg.log_activation_min, cfg.log_activation_max) + return float(np.exp(clipped)) + + +def fill_inverse_outputs( + mesh: pv.UnstructuredGrid, + *, + cfg: Config, + target: pv.UnstructuredGrid, + forward: Forward, + model: Model, + log_relative_activation: float, +) -> None: + relative_activation = relative_activation_from_log_param( + cfg, log_relative_activation + ) + mesh.point_data["InverseSolution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + mesh.point_data["PointToPoint"] = ( + mesh.point_data["InverseSolution"] - target.point_data["Solution"] + ) + mesh.point_data["PointToPointNorm"] = np.linalg.norm( + mesh.point_data["PointToPoint"], axis=1 + ) + inverse_activation = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["InverseActivation"] = inverse_activation + mesh.cell_data["ActivationDiff"] = inverse_activation - target.cell_data[ACTIVATION] + mesh.cell_data["InverseLogRelativeActivation"] = np.full( + (mesh.n_cells,), log_relative_activation + ) + mesh.cell_data["InverseRelativeActivation"] = np.full( + (mesh.n_cells,), relative_activation + ) + mesh.cell_data["InverseActualActivationX"] = np.full( + (mesh.n_cells,), relative_activation * cfg.smas_prestrain + ) + mesh.cell_data["InverseActualActivationY"] = np.full( + (mesh.n_cells,), 1.0 / cfg.smas_prestrain**2 + ) + mesh.cell_data["InverseActualActivationZ"] = np.full( + (mesh.n_cells,), cfg.smas_prestrain + ) + + +def save_summary(path: Path, values: Any) -> None: + path.write_text(json.dumps(values, indent=2)) + + +def assert_finite_outputs(mesh: pv.UnstructuredGrid) -> None: + for collection in (mesh.point_data, mesh.cell_data): + for name, values in collection.items(): + array = np.asarray(values) + if np.issubdtype(array.dtype, np.number) and not np.isfinite(array).all(): + message = f"non-finite values in output array {name!r}" + raise FloatingPointError(message) + + +def output_stem(case_name: str) -> str: + return f"31-inverse{SUFFIX}-activation-stable-neo-hookean-{case_name}" + + +def output_series_path(case_name: str) -> Path: + return cherries.output(f"{output_stem(case_name)}.vtu.series") + + +def metrics_json_path(case_name: str) -> Path: + return cherries.output(f"{output_stem(case_name)}-metrics.json") + + +def metrics_csv_path(case_name: str) -> Path: + return cherries.output(f"{output_stem(case_name)}-metrics.csv") + + +def metrics_plot_path(case_name: str, plot_name: str) -> Path: + return cherries.output(f"{output_stem(case_name)}-metrics-{plot_name}.png") + + +def metrics_plot_snapshot_path(case_name: str, plot_name: str, step: int) -> Path: + return cherries.output( + f"{output_stem(case_name)}-metrics.d/{step:06d}-{plot_name}.png" + ) + + +def metrics_plot_paths(case_name: str) -> dict[str, str]: + return { + plot_name: metrics_plot_path(case_name, plot_name).as_posix() + for plot_name in METRIC_PLOT_NAMES + } + + +def scalar_float(value: Any) -> float: + return float(np.asarray(value).reshape(-1)[0]) + + +def scalar_int(value: Any) -> int: + return int(np.asarray(value).reshape(-1)[0]) + + +def outputs_are_finite(mesh: pv.UnstructuredGrid) -> bool: + for collection in (mesh.point_data, mesh.cell_data): + for values in collection.values(): + array = np.asarray(values) + if np.issubdtype(array.dtype, np.number) and not np.isfinite(array).all(): + return False + return True + + +def annotate_step_metrics(mesh: pv.UnstructuredGrid, record: MetricRecord) -> None: + cell_scalars = { + "InverseStep": record["step"], + "InverseLoss": record["loss"], + "InverseGrad": record["inverse_grad"], + "ForwardGradNorm": record["forward_grad_norm"], + "AdjointRelativeResidual": record["adjoint_relative_residual"], + "PointToPointL2": record["point_to_point_l2"], + "PointToPointInf": record["point_to_point_inf"], + } + for name, value in cell_scalars.items(): + mesh.cell_data[name] = np.full((mesh.n_cells,), float(value)) + + +def collect_step_metrics( + *, + cfg: Config, + mesh: pv.UnstructuredGrid, + forward: Forward, + inverse: ActivationInverse, + step: int, + log_relative_activation: float, + loss: float, + inverse_grad: float, +) -> MetricRecord: + point_to_point = np.asarray(mesh.point_data["PointToPoint"]) + point_to_point_norm = np.asarray(mesh.point_data["PointToPointNorm"]) + activation_diff = np.asarray(mesh.cell_data["ActivationDiff"]) + relative_activation = relative_activation_from_log_param( + cfg, log_relative_activation + ) + record: MetricRecord = { + "step": step, + "log_relative_activation": log_relative_activation, + "relative_activation": relative_activation, + "actual_activation_x": relative_activation * cfg.smas_prestrain, + "actual_activation_y": 1.0 / cfg.smas_prestrain**2, + "actual_activation_z": cfg.smas_prestrain, + "activation_error": relative_activation - cfg.target_activation, + "loss": loss, + "point_to_point_l2": float(np.linalg.norm(point_to_point)), + "point_to_point_rmse": float(np.sqrt(np.mean(point_to_point_norm**2))), + "point_to_point_inf": float( + np.linalg.norm(point_to_point.reshape(-1), ord=np.inf) + ), + "activation_diff_l2": float(np.linalg.norm(activation_diff)), + "activation_diff_inf": float( + np.linalg.norm(activation_diff.reshape(-1), ord=np.inf) + ), + "inverse_grad": inverse_grad, + "inverse_grad_abs": abs(inverse_grad), + "adjoint_success": bool(np.asarray(inverse.last_adjoint_success)), + "adjoint_relative_residual": scalar_float( + inverse.last_adjoint_relative_residual + ), + "forward_success": False, + "forward_result": "not_evaluated", + "forward_n_steps": 0, + "forward_grad_norm": float("inf"), + "forward_relative_grad_norm": float("inf"), + "forward_objective": float("nan"), + "forward_best_objective": float("nan"), + "finite_outputs": outputs_are_finite(mesh), + } + if forward.last_stage_result is not None: + solver_result = forward.last_stage_result.solver_result + final_iteration = solver_result.final_iteration + record.update( + { + "forward_success": bool(solver_result.success), + "forward_result": solver_result.status, + "forward_n_steps": scalar_int(solver_result.n_steps), + "forward_grad_norm": scalar_float(final_iteration.gradient_norm), + "forward_relative_grad_norm": scalar_float( + final_iteration.relative_gradient_norm + ), + "forward_objective": scalar_float(final_iteration.objective_value), + "forward_best_objective": scalar_float( + final_iteration.best_objective_value + ), + } + ) + return record + + +def write_metrics_table(records: list[MetricRecord], case_name: str) -> None: + save_summary(metrics_json_path(case_name), records) + csv_path = metrics_csv_path(case_name) + csv_path.parent.mkdir(parents=True, exist_ok=True) + with csv_path.open("w", newline="") as stream: + writer = csv.DictWriter(stream, fieldnames=list(records[0])) + writer.writeheader() + writer.writerows(records) + + +def metric_values(records: list[MetricRecord], key: str) -> np.ndarray: + return np.asarray([float(record[key]) for record in records], dtype=float) + + +def positive_for_log(values: np.ndarray) -> np.ndarray: + return np.where(np.isfinite(values) & (values > 0.0), values, np.nan) + + +def plot_metric_figure( + *, + records: list[MetricRecord], + case_name: str, + plot_name: str, + title: str, + ylabel: str, + values: np.ndarray, + step: int, + log_scale: bool = True, + target: float | None = None, +) -> None: + steps = metric_values(records, "step") + fig, axis = plt.subplots(figsize=(7, 4), constrained_layout=True) + plot_values = positive_for_log(values) if log_scale else values + if log_scale: + axis.semilogy(steps, plot_values) + else: + axis.plot(steps, plot_values) + if target is not None: + axis.axhline(target, color="0.4", linestyle="--") + axis.set_title(title) + axis.set_xlabel("inverse step") + axis.set_ylabel(ylabel) + axis.grid(visible=True, alpha=0.25) + + output = metrics_plot_path(case_name, plot_name) + snapshot = metrics_plot_snapshot_path(case_name, plot_name, step) + output.parent.mkdir(parents=True, exist_ok=True) + snapshot.parent.mkdir(parents=True, exist_ok=True) + fig.savefig(output) + fig.savefig(snapshot) + plt.close(fig) + + +def plot_metrics(records: list[MetricRecord], cfg: Config, case_name: str) -> None: + steps = metric_values(records, "step") + step = int(steps[-1]) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="loss", + title="Loss", + ylabel="loss", + values=metric_values(records, "loss"), + step=step, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="point-to-point-l2", + title="Point-to-Point Error", + ylabel="L2 error", + values=metric_values(records, "point_to_point_l2"), + step=step, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="relative-activation", + title="Relative Activation", + ylabel="relative activation", + values=metric_values(records, "relative_activation"), + step=step, + log_scale=False, + target=cfg.target_activation, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="activation-error", + title="Activation Error", + ylabel="absolute error", + values=np.abs(metric_values(records, "activation_error")), + step=step, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="forward-grad-norm-absolute", + title="Forward Grad Norm Absolute", + ylabel="absolute gradient norm", + values=metric_values(records, "forward_grad_norm"), + step=step, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="forward-grad-norm-relative", + title="Forward Grad Norm Relative", + ylabel="relative gradient norm", + values=metric_values(records, "forward_relative_grad_norm"), + step=step, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="adjoint-relative-residual", + title="Adjoint Relative Residual", + ylabel="relative residual", + values=metric_values(records, "adjoint_relative_residual"), + step=step, + ) + plot_metric_figure( + records=records, + case_name=case_name, + plot_name="inverse-grad-absolute", + title="Inverse Grad Absolute", + ylabel="absolute inverse grad", + values=metric_values(records, "inverse_grad_abs"), + step=step, + ) + + +def write_metric_artifacts( + records: list[MetricRecord], cfg: Config, case_name: str +) -> None: + write_metrics_table(records, case_name) + plot_metrics(records, cfg, case_name) + + +def new_inverse_selection() -> dict[str, Any]: + return { + "log_activation": 0.0, + "loss": float("inf"), + "u_free": None, + "step": 0, + "forward_success": False, + "forward_result": "not_evaluated", + "forward_grad_norm": float("inf"), + } + + +def update_inverse_selection( + selection: dict[str, Any], + *, + model: Model, + record: MetricRecord, +) -> None: + selection["step"] = record["step"] + selection["log_activation"] = record["log_relative_activation"] + selection["loss"] = record["loss"] + selection["u_free"] = np.asarray(model.u_free).copy() + selection["forward_success"] = record["forward_success"] + selection["forward_result"] = record["forward_result"] + selection["forward_grad_norm"] = record["forward_grad_norm"] + + +def make_inverse_step_callback( + *, + cfg: Config, + mesh: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + forward: Forward, + model: Model, + inverse: ActivationInverse, + case_name: str, + best_inverse: dict[str, Any], + best_converged_inverse: dict[str, Any], + metric_records: list[MetricRecord], + writer: Any, +) -> Optimizer.Callback: + def callback( + _objective: Objective[Any], + model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + step = len(metric_records) + 1 + cherries.set_step(step) + log_activation = float(np.asarray(model_state).reshape(-1)[0]) + loss = float(np.asarray(_opt_state.value)) + inverse_grad = float(np.asarray(_opt_state.grad).reshape(-1)[0]) + fill_inverse_outputs( + mesh, + cfg=cfg, + target=target, + forward=forward, + model=model, + log_relative_activation=log_activation, + ) + record = collect_step_metrics( + cfg=cfg, + mesh=mesh, + forward=forward, + inverse=inverse, + step=step, + log_relative_activation=log_activation, + loss=loss, + inverse_grad=inverse_grad, + ) + annotate_step_metrics(mesh, record) + assert_finite_outputs(mesh) + metric_records.append(record) + write_metric_artifacts(metric_records, cfg, case_name) + cherries.log_metrics( + { + "inverse": { + "log_relative_activation": log_activation, + "relative_activation": record["relative_activation"], + "loss": loss, + "grad": inverse_grad, + "point_to_point_l2": record["point_to_point_l2"], + "forward_grad_norm": record["forward_grad_norm"], + "adjoint_relative_residual": record["adjoint_relative_residual"], + } + } + ) + if np.isfinite(loss) and loss < best_inverse["loss"]: + update_inverse_selection(best_inverse, model=model, record=record) + converged = ( + bool(record["forward_success"]) + and bool(record["finite_outputs"]) + and abs(float(record["activation_error"])) <= cfg.activation_tolerance + ) + if converged and np.isfinite(loss) and loss < best_converged_inverse["loss"]: + update_inverse_selection(best_converged_inverse, model=model, record=record) + if writer is not None: + writer.append(mesh, time=float(step)) + + return callback + + +def solve_case( + cfg: Config, + *, + source: pv.UnstructuredGrid, + target: pv.UnstructuredGrid, + case_name: str, + initial_log_activation: float, +) -> dict[str, Any]: + mesh = source.copy() + model = build_model( + mesh, + muscle_log_relative_activation=initial_log_activation, + cfg=cfg, + muscle_requires_grad=True, + ) + fallback_u_free = initialize_target_guess(model, mesh, target) + + forward = Forward(model) + configure_forward_solver(forward) + forward.last_successful_u_free = fallback_u_free + inverse = build_inverse( + cfg, + mesh=mesh, + target=target, + forward=forward, + fallback_u_free=fallback_u_free, + ) + + params: Scalar = jnp.asarray(initial_log_activation, dtype=model.u_full.dtype) + best_inverse = new_inverse_selection() + best_inverse["log_activation"] = float(initial_log_activation) + best_converged_inverse = new_inverse_selection() + best_converged_inverse["log_activation"] = float(initial_log_activation) + metric_records: list[MetricRecord] = [] + writer_cm = ( + melon.io.SeriesWriter(output_series_path(case_name), clear=True) + if cfg.write_series + else nullcontext(None) + ) + with writer_cm as writer: + params = inverse.solve( + params, + make_inverse_step_callback( + cfg=cfg, + mesh=mesh, + target=target, + forward=forward, + model=model, + inverse=inverse, + case_name=case_name, + best_inverse=best_inverse, + best_converged_inverse=best_converged_inverse, + metric_records=metric_records, + writer=writer, + ), + ) + + selected_inverse = ( + best_converged_inverse + if np.isfinite(best_converged_inverse["loss"]) + else best_inverse + ) + if np.isfinite(selected_inverse["loss"]): + params = jnp.asarray( + selected_inverse["log_activation"], dtype=model.u_full.dtype + ) + if selected_inverse["u_free"] is not None: + model.u_free = jnp.asarray( + selected_inverse["u_free"], dtype=model.u_free.dtype + ) + + final_materials = inverse.make_materials(params) + forward.update_materials(final_materials) + forward.state = model.init_state(model.u_full) + final_forward_success = bool(selected_inverse["forward_success"]) + cherries.log_metrics( + { + "forward": { + "reused_best_inverse_state": selected_inverse["u_free"] is not None, + "final_grad_norm": selected_inverse["forward_grad_norm"], + "success": final_forward_success, + } + } + ) + final_log_activation = float(np.asarray(params)) + final_relative_activation = relative_activation_from_log_param( + cfg, final_log_activation + ) + fill_inverse_outputs( + mesh, + cfg=cfg, + target=target, + forward=forward, + model=model, + log_relative_activation=final_log_activation, + ) + assert_finite_outputs(mesh) + melon.save(cherries.output(f"{output_stem(case_name)}.vtu"), mesh) + + point_to_point = np.asarray(mesh.point_data["PointToPoint"]) + activation_diff = np.asarray(mesh.cell_data["ActivationDiff"]) + summary: dict[str, Any] = { + "case": case_name, + "backend": str(jnp.asarray(0.0).device), + "forward_success": final_forward_success, + "forward_result": str(selected_inverse["forward_result"]), + "forward_grad_norm": float(selected_inverse["forward_grad_norm"]), + "inverse_lr": float(cfg.inverse_lr), + "best_inverse_step": int(best_inverse["step"]), + "best_converged_inverse_step": int(best_converged_inverse["step"]), + "selected_inverse_step": int(selected_inverse["step"]), + "selected_inverse_kind": ( + "activation_tolerance" + if np.isfinite(best_converged_inverse["loss"]) + else "minimum_loss" + ), + "metrics_json": metrics_json_path(case_name).as_posix(), + "metrics_csv": metrics_csv_path(case_name).as_posix(), + "metrics_plots": metrics_plot_paths(case_name), + "series": output_series_path(case_name).as_posix(), + "initial_log_relative_activation": float(initial_log_activation), + "initial_relative_activation": relative_activation_from_log_param( + cfg, initial_log_activation + ), + "target_relative_activation": float(cfg.target_activation), + "target_log_relative_activation": math.log(cfg.target_activation), + "solved_log_relative_activation": final_log_activation, + "solved_relative_activation": final_relative_activation, + "relative_activation_error": final_relative_activation - cfg.target_activation, + "best_inverse_loss": float(best_inverse["loss"]), + "best_converged_inverse_loss": float(best_converged_inverse["loss"]), + "selected_inverse_loss": float(selected_inverse["loss"]), + "smas_prestrain": float(cfg.smas_prestrain), + "target_actual_activation_x": float(cfg.target_activation * cfg.smas_prestrain), + "target_actual_activation_y": float(1.0 / cfg.smas_prestrain**2), + "target_actual_activation_z": float(cfg.smas_prestrain), + "solved_actual_activation_x": float( + final_relative_activation * cfg.smas_prestrain + ), + "solved_actual_activation_y": float(1.0 / cfg.smas_prestrain**2), + "solved_actual_activation_z": float(cfg.smas_prestrain), + "point_to_point_l2": float(np.linalg.norm(point_to_point)), + "point_to_point_inf": float( + np.linalg.norm(point_to_point.reshape(-1), ord=np.inf) + ), + "activation_diff_l2": float(np.linalg.norm(activation_diff)), + "activation_diff_inf": float( + np.linalg.norm(activation_diff.reshape(-1), ord=np.inf) + ), + } + save_summary(cherries.output(f"{output_stem(case_name)}.json"), summary) + if ( + not final_forward_success + or abs(final_relative_activation - cfg.target_activation) + > cfg.activation_tolerance + ): + message = ( + f"{case_name} inverse did not converge: " + f"relative activation={final_relative_activation:.6g}" + ) + raise RuntimeError(message) + return summary + + +def parse_cases(cases: str) -> list[str]: + return [case.strip() for case in cases.split(",") if case.strip()] + + +def initial_log_activation_for_case(cfg: Config, case_name: str) -> float: + if case_name == "easy": + return math.log(cfg.easy_initial_activation) + if case_name == "zero": + return cfg.zero_initial_log_activation + message = f"unknown inverse case {case_name!r}" + raise ValueError(message) + + +def run_inverse(cfg: Config) -> None: + source = melon.load_unstructured_grid(cfg.input) + target = make_target_mesh(cfg, source) + assert_finite_outputs(target) + + summaries = [ + solve_case( + cfg, + source=source, + target=target, + case_name=case_name, + initial_log_activation=initial_log_activation_for_case(cfg, case_name), + ) + for case_name in parse_cases(cfg.cases) + ] + save_summary( + cherries.output(f"31-inverse{SUFFIX}-activation-stable-neo-hookean.json"), + {"cases": summaries}, + ) + + +def main(cfg: Config) -> None: + wp.init() + run_inverse(cfg) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/03/11/test-inverse/data/10-input.vtu b/exp/2026/03/11/test-inverse/data/10-input.vtu new file mode 100644 index 000000000..1e82da648 --- /dev/null +++ b/exp/2026/03/11/test-inverse/data/10-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5f8020fb488d233e5962a280b3e8b77b484b3443c846a3023f06d65709a5bc4 +size 191647 diff --git a/exp/2026/03/11/test-inverse/data/20-forward.vtu b/exp/2026/03/11/test-inverse/data/20-forward.vtu new file mode 100644 index 000000000..a54659be4 --- /dev/null +++ b/exp/2026/03/11/test-inverse/data/20-forward.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c189a3fccc82918de8bdf1855f4daf92734452065e74aef27602fc7b261fa3b2 +size 247251 diff --git a/exp/2026/03/11/test-inverse/src/10-gen.py b/exp/2026/03/11/test-inverse/src/10-gen.py new file mode 100644 index 000000000..269f6a6f0 --- /dev/null +++ b/exp/2026/03/11/test-inverse/src/10-gen.py @@ -0,0 +1,21 @@ +import numpy as np +import pyvista as pv +from liblaf.apple.consts._array_names import DIRICHLET_MASK, DIRICHLET_VALUE + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + pass + + +def main(_cfg: Config) -> None: + surface: pv.PolyData = pv.Box((0.0, 1.0, 0.0, 1.0, 0.0, 1.0), quads=False) + tetmesh: pv.UnstructuredGrid = melon.tetwild(surface, coarsen=True) + tetmesh.point_data[DIRICHLET_MASK] = tetmesh.points[:, 0] < 1e-3 + tetmesh.point_data[DIRICHLET_VALUE] = np.zeros((tetmesh.n_points, 3)) + melon.save(cherries.output("10-input.vtu"), tetmesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/03/11/test-inverse/src/20-forward.py b/exp/2026/03/11/test-inverse/src/20-forward.py new file mode 100644 index 000000000..b3e614de2 --- /dev/null +++ b/exp/2026/03/11/test-inverse/src/20-forward.py @@ -0,0 +1,64 @@ +from pathlib import Path + +import numpy as np +import pyvista as pv +from liblaf.apple.consts import ACTIVATION, GLOBAL_POINT_ID, LAMBDA, MU +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Optimizer + +from liblaf import cherries, melon +from liblaf.apple.warp import ( + WarpArapMuscle, + WarpVolumePreservationDeterminant, +) + + +class Config(cherries.BaseConfig): + input: Path = cherries.input("10-input.vtu") + + +def load_mesh(cfg: Config) -> pv.UnstructuredGrid: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.input) + return mesh + + +def build_model(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + mesh.cell_data[ACTIVATION] = np.tile( + np.asarray([2.0 - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]), (mesh.n_cells, 1) + ) + builder.add_dirichlet(mesh) + + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_muscle: WarpArapMuscle = WarpArapMuscle.from_pyvista(mesh) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = load_mesh(cfg) + ic(mesh) + model: Model = build_model(mesh) + forward: Forward = Forward(model) + + solution: Optimizer.Solution = forward.step() + ic(solution) + mesh.point_data["Solution"] = np.asarray( + forward.u_full[mesh.point_data[GLOBAL_POINT_ID]] + ) + melon.save(cherries.output("20-forward.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/03/11/test-inverse/src/30-inverse.py b/exp/2026/03/11/test-inverse/src/30-inverse.py new file mode 100644 index 000000000..38baa5d90 --- /dev/null +++ b/exp/2026/03/11/test-inverse/src/30-inverse.py @@ -0,0 +1,136 @@ +from collections.abc import Mapping +from pathlib import Path +from typing import Any, cast + +import jax.numpy as jnp +import numpy as np +import optax +import pyvista as pv +import warp as wp +from jaxtyping import Array, Bool, Float, Integer +from liblaf.apple.consts import ACTIVATION, LAMBDA, MU +from liblaf.apple.model import Forward, Model, ModelBuilder +from liblaf.peach.optim import Objective, Optax, Optimizer + +from liblaf import cherries, jarp, melon +from liblaf.apple.inverse import Inverse, Loss, PointToPointLoss, UniformActivationLoss +from liblaf.apple.warp import WarpArapMuscleOld, WarpVolumePreservationDeterminant + +type EnergyMaterials = Mapping[str, Array] +type ModelMaterials = Mapping[str, EnergyMaterials] +type Scalar = Float[Array, ""] +type Vector = Float[Array, "points dim"] +type BoolNumeric = Bool[Array, ""] + + +@jarp.define +class MyInverse(Inverse): + muscle_indices: Integer[Array, " muscle_cells"] = jarp.field() + full_activation: Float[Array, "cells 6"] = jarp.field() + + def make_materials(self, params: Vector) -> ModelMaterials: + activation: Float[Array, " cells 6"] = self.full_activation.at[ + self.muscle_indices + ].set(params) + return {"muscle": {"activation": activation}} + + +class Config(cherries.BaseConfig): + target: Path = cherries.input("20-forward.vtu") + + +def build_model(mesh: pv.UnstructuredGrid) -> Model: + builder = ModelBuilder() + + mesh: pv.UnstructuredGrid = builder.add_points(mesh) + mesh.cell_data[ACTIVATION] = np.zeros((mesh.n_cells, 6)) + # mesh.cell_data[ACTIVATION] = np.tile( + # np.asarray([2.0 - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]), (mesh.n_cells, 1) + # ) + builder.add_dirichlet(mesh) + + mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) + energy_muscle: WarpArapMuscleOld = WarpArapMuscleOld.from_pyvista( + mesh, requires_grad=("activation",), name="muscle" + ) + builder.add_energy(energy_muscle) + + mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 3.0) + energy_vol: WarpVolumePreservationDeterminant = ( + WarpVolumePreservationDeterminant.from_pyvista(mesh) + ) + builder.add_energy(energy_vol) + + model: Model = builder.finalize() + return model + + +def build_inverse(mesh: pv.UnstructuredGrid, forward: Forward) -> MyInverse: + surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices() + muscle_indices: Integer[Array, " muscle_cells"] = jnp.arange(mesh.n_cells) + # gen unreachable target + # mesh.point_data["Solution"] = np.zeros_like(mesh.points) + # mesh.point_data["Solution"][:, 1] = mesh.points[:, 1] + losses: list[Loss] = [ + PointToPointLoss( + indices=jnp.asarray(surface_indices), + target=jnp.asarray(mesh.point_data["Solution"][surface_indices]), + ), + UniformActivationLoss(muscle_indices=muscle_indices), + ] + full_activation: Float[Array, "cells 6"] = jnp.asarray(mesh.cell_data[ACTIVATION]) + return MyInverse( + forward=forward, + losses=losses, + muscle_indices=muscle_indices, + full_activation=full_activation, + optimizer=Optax(optax.adam(0.03), patience=jnp.asarray(1000)), + ) + + +def main(cfg: Config) -> None: + mesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.target) + model: Model = build_model(mesh) + forward: Forward = Forward(model) + inverse: MyInverse = build_inverse(mesh, forward) + params: Vector = jnp.asarray(mesh.cell_data[ACTIVATION][inverse.muscle_indices]) + with melon.io.SeriesWriter(cherries.temp("30-inverse.vtu.series")) as writer: + + def callback( + _objective: Objective[Any], + _model_state: Any, + _opt_state: Optimizer.State, + _opt_stats: Optimizer.Stats, + ) -> None: + cherries.set_step((cherries.run.get_step() or 0) + 1) + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - mesh.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - mesh.cell_data["Activation"] + ) + writer.append(mesh) + + params = inverse.solve(params, callback) + materials: ModelMaterials = inverse.make_materials(params) + forward.update_materials(materials) + forward.step() + mesh.point_data["InverseSolution"] = np.asarray(forward.u_full) + mesh.point_data["PointToPoint"] = np.asarray( + forward.u_full - mesh.point_data["Solution"] + ) + mesh.cell_data["InverseActivation"] = cast( + "wp.array", model.get_energy("muscle").materials.activation + ).numpy() + mesh.cell_data["ActivationDiff"] = ( + mesh.cell_data["InverseActivation"] - mesh.cell_data["Activation"] + ) + melon.save(cherries.output("30-inverse.vtu"), mesh) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/04/18/2d-demo/src/10-simulation.py b/exp/2026/04/18/2d-demo/src/10-simulation.py new file mode 100644 index 000000000..e3c9fca31 --- /dev/null +++ b/exp/2026/04/18/2d-demo/src/10-simulation.py @@ -0,0 +1,443 @@ +"""2D Muscle-Fascia Neohookean FEM Simulation +========================================== + +Simulates a flat meat slab (100x11 elements) with a stiff fascia middle layer. +Uses analytical First Piola-Kirchhoff stress with NumPy vectorized computation. +Real-time visualization with Pygame. + +Material: Neohookean hyperelastic + Psi(F) = mu/2 * (tr(F^T F) - 2) - mu * ln(J) + lam/2 * (ln J)^2 + P = mu * (F - F^{-T}) + lam * ln(J) * F^{-T} + +Controls: + Up/Down Increase/decrease wind force + R Reset simulation + SPACE Pause/resume + W Toggle wireframe overlay + ESC Quit +""" + +import sys +import time + +import numpy as np +import pygame + +# ============================================================ +# Simulation Parameters +# ============================================================ + +NX, NY = 100, 11 # element grid (cols x rows) +NVX, NVY = NX + 1, NY + 1 # node grid: 101 x 12 +NV = NVX * NVY # 1212 nodes +NF = 2 * NX * NY # 2200 triangles + +DOMAIN_W = 1.0 # domain width +DOMAIN_H = DOMAIN_W * NY / NX # domain height = 0.11 + +# Material +E_MUSCLE = 1000.0 # Young's modulus (muscle) +E_FASCIA = E_MUSCLE * 200 # Young's modulus (fascia) = 100x +NU = 0.3 # Poisson's ratio +RHO = 10.0 # density (normalized) + +# Time integration +DT = 5e-5 # timestep +DAMPING = 15.0 # velocity damping +SUBSTEPS = 100 # substeps per frame + +# Wind +WIND_STEP = 0.1 # wind increment per key press +INITIAL_WIND = 0.0 + + +# ============================================================ +# Display Parameters +# ============================================================ + +SCREEN_W, SCREEN_H = 1400, 700 +SCALE = 1100.0 # pixels per simulation unit +OFFSET_X = (SCREEN_W - DOMAIN_W * SCALE) / 2 +OFFSET_Y = SCREEN_H * 0.78 # y=0 line in screen space + +# Colors +COLOR_BG = (12, 12, 22) +COLOR_MUSCLE = (165, 55, 55) +COLOR_FASCIA = (195, 205, 215) +COLOR_EDGE = (45, 45, 58) +COLOR_TEXT = (220, 220, 230) +COLOR_TEXT_DIM = (130, 130, 145) + + +# ============================================================ +# Mesh & Material Setup +# ============================================================ + + +def build_mesh(): + """Build triangular mesh from a structured quad grid. + + Each quad cell (col, row) is split into 2 triangles: + Triangle 0: [bottom-left, bottom-right, top-right] + Triangle 1: [top-right, top-left, bottom-left] + + The middle row (row == 5) is assigned fascia material; + all other rows are muscle. + + Returns: + f2v: (NF, 3) int array โ€” triangle-to-vertex mapping + is_fascia: (NF,) bool array โ€” True for fascia elements + elem_mu: (NF,) float array โ€” Lame parameter mu per element + elem_lam: (NF,) float array โ€” Lame parameter lambda per element + """ + f2v = np.zeros((NF, 3), dtype=np.int32) + is_fascia = np.zeros(NF, dtype=bool) + + for row in range(NY): + for col in range(NX): + # Quad corner node indices + a = row * NVX + col # bottom-left + b = a + 1 # bottom-right + c = (row + 1) * NVX + col + 1 # top-right + d = (row + 1) * NVX + col # top-left + + k = (row * NX + col) * 2 + f2v[k] = [a, b, c] + f2v[k + 1] = [c, d, a] + + # Middle layer = fascia + if row == 5: + is_fascia[k] = True + is_fascia[k + 1] = True + + # Compute per-element Lame parameters + E = np.where(is_fascia, E_FASCIA, E_MUSCLE) + elem_mu = E / (2.0 * (1.0 + NU)) + elem_lam = E * NU / ((1.0 + NU) * (1.0 - 2.0 * NU)) + + return f2v, is_fascia, elem_mu, elem_lam + + +# ============================================================ +# State Initialization +# ============================================================ + + +def init_state(f2v): + """Initialize node positions and precompute reference configuration. + + Precomputes: + - Dm_inv: (NF, 2, 2) inverse of reference edge matrix + - Dm_inv_T: (NF, 2, 2) transpose of Dm_inv (cached for reuse) + - W: (NF,) reference triangle areas + + Returns tuple: + (pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask) + """ + dx = DOMAIN_W / NX + dy = DOMAIN_H / NY + + # Build node positions on a regular grid + cols = np.arange(NVX) * dx + rows = np.arange(NVY) * dy + grid_x, grid_y = np.meshgrid(cols, rows) # (NVY, NVX) each + pos = np.column_stack([grid_x.ravel(), grid_y.ravel()]) # (NV, 2) + + rest_pos = pos.copy() + vel = np.zeros_like(pos) + + # --- Precompute reference configuration for all elements --- + ia, ib, ic = f2v[:, 0], f2v[:, 1], f2v[:, 2] + xa, xb, xc = pos[ia], pos[ib], pos[ic] + + # Reference edge matrix: Dm = [Xa - Xc | Xb - Xc] + Dm = np.empty((NF, 2, 2)) + Dm[:, :, 0] = xa - xc + Dm[:, :, 1] = xb - xc + + # Batch invert 2x2 matrices + det_Dm = Dm[:, 0, 0] * Dm[:, 1, 1] - Dm[:, 0, 1] * Dm[:, 1, 0] + inv_det = 1.0 / det_Dm + + Dm_inv = np.empty_like(Dm) + Dm_inv[:, 0, 0] = Dm[:, 1, 1] * inv_det + Dm_inv[:, 0, 1] = -Dm[:, 0, 1] * inv_det + Dm_inv[:, 1, 0] = -Dm[:, 1, 0] * inv_det + Dm_inv[:, 1, 1] = Dm[:, 0, 0] * inv_det + + Dm_inv_T = np.ascontiguousarray(Dm_inv.transpose(0, 2, 1)) + W = 0.5 * np.abs(det_Dm) # reference triangle areas + + # --- Boundary masks --- + node_col = np.arange(NV) % NVX + node_row = np.arange(NV) // NVX + fixed_mask = (node_col == 0) | (node_col == NX) # left & right edges + bottom_mask = node_row == 0 # bottom row + + return pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask + + +# ============================================================ +# Force Computation (Analytical Neohookean) +# ============================================================ + + +def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam): + """Compute internal elastic forces using the analytical Neohookean stress. + + For each element: + 1. F = Ds @ Dm_inv (deformation gradient) + 2. J = det(F) + 3. P = mu*(F - F^{-T}) + lam*ln(J)*F^{-T} (1st Piola-Kirchhoff stress) + 4. H = -W * P @ Dm_inv^T (nodal force matrix) + 5. Scatter H columns to global force vector + + All operations are vectorized over the NF elements. + + Returns: + forces: (NV, 2) array of nodal forces + """ + # Gather deformed vertex positions + pa = pos[f2v[:, 0]] # (NF, 2) + pb = pos[f2v[:, 1]] + pc = pos[f2v[:, 2]] + + # Deformed edge matrix: Ds = [xa - xc | xb - xc] + Ds = np.empty((NF, 2, 2)) + Ds[:, :, 0] = pa - pc + Ds[:, :, 1] = pb - pc + + # Deformation gradient: F = Ds @ Dm_inv + F = Ds @ Dm_inv # (NF, 2, 2) + + # Determinant: J = det(F) + J = F[:, 0, 0] * F[:, 1, 1] - F[:, 0, 1] * F[:, 1, 0] # (NF,) + J_safe = np.maximum(J, 1e-8) # clamp to avoid log(0) + + # F^{-T} (inverse transpose, computed via cofactor / J) + inv_J = 1.0 / J_safe + F_inv_T = np.empty_like(F) + F_inv_T[:, 0, 0] = F[:, 1, 1] * inv_J + F_inv_T[:, 0, 1] = -F[:, 1, 0] * inv_J + F_inv_T[:, 1, 0] = -F[:, 0, 1] * inv_J + F_inv_T[:, 1, 1] = F[:, 0, 0] * inv_J + + # First Piola-Kirchhoff stress: + # P = mu * (F - F_inv_T) + lam * ln(J) * F_inv_T + mu = elem_mu[:, None, None] # (NF, 1, 1) for broadcasting + lam = elem_lam[:, None, None] + log_J = np.log(J_safe)[:, None, None] + + P = mu * (F - F_inv_T) + lam * log_J * F_inv_T + + # Nodal force matrix: H = -W * P @ Dm_inv_T + H = -W[:, None, None] * (P @ Dm_inv_T) # (NF, 2, 2) + + # Scatter forces to global array + # f_a = H[:, :, 0], f_b = H[:, :, 1], f_c = -(f_a + f_b) + forces = np.zeros_like(pos) + fa = H[:, :, 0] # (NF, 2) + fb = H[:, :, 1] + fc = -(fa + fb) + + np.add.at(forces, f2v[:, 0], fa) + np.add.at(forces, f2v[:, 1], fb) + np.add.at(forces, f2v[:, 2], fc) + + return forces + + +# ============================================================ +# Time Stepping +# ============================================================ + + +def substep( + pos, + vel, + rest_pos, + f2v, + Dm_inv, + Dm_inv_T, + W, + elem_mu, + elem_lam, + fixed_mask, + bottom_mask, + wind, + mass, +): + """Single substep of Symplectic Euler integration. + + 1. Compute elastic forces (analytical Neohookean) + 2. Add wind force on bottom nodes + 3. Update velocity: vel += dt * acc, then apply damping + 4. Enforce fixed boundary: vel = 0 at left/right edges + 5. Update position: pos += dt * vel + 6. Restore fixed node positions + """ + # Internal elastic forces + forces = compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam) + + # External: upward wind on bottom nodes + forces[bottom_mask, 1] += wind + + # Acceleration + acc = forces / mass + + # Symplectic Euler: update velocity first, then position + vel += DT * acc + vel *= np.exp(-DT * DAMPING) + + # Fixed boundary: zero velocity + vel[fixed_mask] = 0.0 + + # Update positions + pos += DT * vel + + # Restore fixed node positions exactly + pos[fixed_mask] = rest_pos[fixed_mask] + + +# ============================================================ +# Coordinate Transform +# ============================================================ + + +def sim_to_screen(sim_pos): + """Convert simulation coordinates to screen pixel coordinates (y-flipped).""" + screen = np.empty_like(sim_pos) + screen[:, 0] = sim_pos[:, 0] * SCALE + OFFSET_X + screen[:, 1] = OFFSET_Y - sim_pos[:, 1] * SCALE + return screen.astype(np.int32) + + +# ============================================================ +# Main +# ============================================================ + + +def main(): + # --- Build mesh & initialize state --- + f2v, is_fascia, elem_mu, elem_lam = build_mesh() + pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask = init_state(f2v) + + dx = DOMAIN_W / NX + mass = RHO * dx * dx # lumped mass per node + wind = INITIAL_WIND + + # Precompute element group indices for rendering + muscle_elems = np.where(~is_fascia)[0] + fascia_elems = np.where(is_fascia)[0] + + # --- Pygame initialization --- + pygame.init() + screen = pygame.display.set_mode((SCREEN_W, SCREEN_H)) + pygame.display.set_caption("Flesh Simulation โ€” 2D Muscle & Fascia (Neohookean FEM)") + clock = pygame.time.Clock() + + # Use default font (avoids SysFont registry bug on Python 3.14/Windows) + font_hud = pygame.font.Font(None, 22) + font_title = pygame.font.Font(None, 28) + + running = True + paused = False + show_wireframe = False + sim_ms = 0.0 + + # --- Main loop --- + while running: + # ---- Event Handling ---- + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + running = False + elif event.key == pygame.K_UP: + wind += WIND_STEP + elif event.key == pygame.K_DOWN: + wind = max(0.0, wind - WIND_STEP) + elif event.key == pygame.K_r: + pos[:] = rest_pos + vel[:] = 0.0 + wind = INITIAL_WIND + elif event.key == pygame.K_SPACE: + paused = not paused + elif event.key == pygame.K_w: + show_wireframe = not show_wireframe + + # ---- Simulation ---- + if not paused: + t0 = time.perf_counter() + for _ in range(SUBSTEPS): + substep( + pos, + vel, + rest_pos, + f2v, + Dm_inv, + Dm_inv_T, + W, + elem_mu, + elem_lam, + fixed_mask, + bottom_mask, + wind, + mass, + ) + sim_ms = (time.perf_counter() - t0) * 1000.0 + + # ---- Rendering ---- + screen.fill(COLOR_BG) + + # Convert positions to screen coordinates + scr_pts = sim_to_screen(pos) + tri_verts = scr_pts[f2v] # (NF, 3, 2) โ€” all triangle vertices + + # Draw filled triangles: muscle + for idx in muscle_elems: + pygame.draw.polygon(screen, COLOR_MUSCLE, tri_verts[idx].tolist()) + + # Draw filled triangles: fascia + for idx in fascia_elems: + pygame.draw.polygon(screen, COLOR_FASCIA, tri_verts[idx].tolist()) + + # Optional wireframe overlay + if show_wireframe: + for i in range(NF): + pygame.draw.polygon(screen, COLOR_EDGE, tri_verts[i].tolist(), 1) + + # ---- HUD ---- + fps = clock.get_fps() + status = "PAUSED" if paused else "RUNNING" + + hud_lines = [ + ( + font_title, + f"Wind: {wind:.2f} | FPS: {fps:.0f} | Sim: {sim_ms:.1f}ms [{status}]", + COLOR_TEXT, + ), + ( + font_hud, + "[Up/Down] Wind [R] Reset [SPACE] Pause [W] Wireframe [ESC] Quit", + COLOR_TEXT_DIM, + ), + ] + + y_pos = 12 + for fnt, text, color in hud_lines: + surf = fnt.render(text, True, color) + screen.blit(surf, (15, y_pos)) + y_pos += 28 + + pygame.display.flip() + clock.tick(60) + + pygame.quit() + sys.exit() + + +if __name__ == "__main__": + main() diff --git a/exp/2026/04/18/2d-demo/src/20-simulation-stable-neo-hookean.py b/exp/2026/04/18/2d-demo/src/20-simulation-stable-neo-hookean.py new file mode 100644 index 000000000..2a19281de --- /dev/null +++ b/exp/2026/04/18/2d-demo/src/20-simulation-stable-neo-hookean.py @@ -0,0 +1,583 @@ +"""Run a standalone 2D Stable Neo-Hookean muscle-fascia FEM simulation. + +Simulates a flat meat slab (100x11 elements) with a stiff fascia middle layer. +Uses analytical First Piola-Kirchhoff stress with NumPy vectorized computation. +Real-time visualization with Pygame. + +Material: Stable Neo-Hookean hyperelastic + Psi(F) = mu/2 * (tr(F^T F) - 2) - mu * (J - 1) + lam/2 * (J - 1)^2 + P = mu * F + (-mu + lam * (J - 1)) * cof(F) + +Controls: + Up/Down Increase/decrease wind force + R Reset simulation + SPACE Pause/resume + W Toggle wireframe overlay + ESC Quit +""" + +from __future__ import annotations + +import sys +import time + +import numpy as np +import pygame + +type MeshData = tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] +type StateData = tuple[ + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, +] + +# ============================================================ +# Simulation Parameters +# ============================================================ + +NX, NY = 100, 11 # element grid (cols x rows) +NVX, NVY = NX + 1, NY + 1 # node grid: 101 x 12 +NV = NVX * NVY # 1212 nodes +NF = 2 * NX * NY # 2200 triangles + +DOMAIN_W = 1.0 # domain width +DOMAIN_H = DOMAIN_W * NY / NX # domain height = 0.11 + +# Material +E_MUSCLE = 1000.0 # Young's modulus (muscle) +E_FASCIA = E_MUSCLE * 300 # Young's modulus (fascia) = 100x +NU = 0.3 # Poisson's ratio +RHO = 10.0 # density (normalized) + +# Time integration +DT = 5e-5 # timestep +DAMPING = 15.0 # velocity damping +SUBSTEPS = 100 # substeps per frame + +# Wind +WIND_STEP = 1.0 # wind increment per key press +INITIAL_WIND = 0.0 + + +# ============================================================ +# Display Parameters +# ============================================================ + +SCREEN_W, SCREEN_H = 1400, 700 +SCALE = 1100.0 # pixels per simulation unit +OFFSET_X = (SCREEN_W - DOMAIN_W * SCALE) / 2 +OFFSET_Y = SCREEN_H * 0.78 # y=0 line in screen space + +# Colors +COLOR_BG = (12, 12, 22) +COLOR_MUSCLE = (165, 55, 55) +COLOR_FASCIA = (195, 205, 215) +COLOR_EDGE = (45, 45, 58) +COLOR_TEXT = (220, 220, 230) +COLOR_TEXT_DIM = (130, 130, 145) +TEXT_ANTIALIAS = True + + +# ============================================================ +# Mesh & Material Setup +# ============================================================ + + +def build_mesh() -> MeshData: + """Build triangular mesh from a structured quad grid. + + Each quad cell (col, row) is split into 2 triangles: + Triangle 0: [bottom-left, bottom-right, top-right] + Triangle 1: [top-right, top-left, bottom-left] + + The middle row (row == 5) is assigned fascia material; + all other rows are muscle. + + Returns: + f2v: (NF, 3) int array, triangle-to-vertex mapping + is_fascia: (NF,) bool array, True for fascia elements + elem_mu: (NF,) float array, Lame parameter mu per element + elem_lam: (NF,) float array, Lame parameter lambda per element + """ + f2v = np.zeros((NF, 3), dtype=np.int32) + is_fascia = np.zeros(NF, dtype=bool) + + for row in range(NY): + for col in range(NX): + # Quad corner node indices + a = row * NVX + col # bottom-left + b = a + 1 # bottom-right + c = (row + 1) * NVX + col + 1 # top-right + d = (row + 1) * NVX + col # top-left + + k = (row * NX + col) * 2 + f2v[k] = [a, b, c] + f2v[k + 1] = [c, d, a] + + # Middle layer = fascia + if row == 5: + is_fascia[k] = True + is_fascia[k + 1] = True + + # Compute per-element Lame parameters + E = np.where(is_fascia, E_FASCIA, E_MUSCLE) + elem_mu = E / (2.0 * (1.0 + NU)) + elem_lam = E * NU / ((1.0 + NU) * (1.0 - 2.0 * NU)) + + return f2v, is_fascia, elem_mu, elem_lam + + +# ============================================================ +# State Initialization +# ============================================================ + + +def init_state(f2v: np.ndarray) -> StateData: + """Initialize node positions and precompute reference configuration. + + Precomputes: + - Dm_inv: (NF, 2, 2) inverse of reference edge matrix + - Dm_inv_T: (NF, 2, 2) transpose of Dm_inv (cached for reuse) + - W: (NF,) reference triangle areas + + Returns tuple: + (pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask) + """ + dx = DOMAIN_W / NX + dy = DOMAIN_H / NY + + # Build node positions on a regular grid + cols = np.arange(NVX) * dx + rows = np.arange(NVY) * dy + grid_x, grid_y = np.meshgrid(cols, rows) # (NVY, NVX) each + pos = np.column_stack([grid_x.ravel(), grid_y.ravel()]) # (NV, 2) + + rest_pos = pos.copy() + vel = np.zeros_like(pos) + + # --- Precompute reference configuration for all elements --- + ia, ib, ic = f2v[:, 0], f2v[:, 1], f2v[:, 2] + xa, xb, xc = pos[ia], pos[ib], pos[ic] + + # Reference edge matrix: Dm = [Xa - Xc | Xb - Xc] + Dm = np.empty((NF, 2, 2)) + Dm[:, :, 0] = xa - xc + Dm[:, :, 1] = xb - xc + + # Batch invert 2x2 matrices + det_Dm = Dm[:, 0, 0] * Dm[:, 1, 1] - Dm[:, 0, 1] * Dm[:, 1, 0] + inv_det = 1.0 / det_Dm + + Dm_inv = np.empty_like(Dm) + Dm_inv[:, 0, 0] = Dm[:, 1, 1] * inv_det + Dm_inv[:, 0, 1] = -Dm[:, 0, 1] * inv_det + Dm_inv[:, 1, 0] = -Dm[:, 1, 0] * inv_det + Dm_inv[:, 1, 1] = Dm[:, 0, 0] * inv_det + + Dm_inv_T = np.ascontiguousarray(Dm_inv.transpose(0, 2, 1)) + W = 0.5 * np.abs(det_Dm) # reference triangle areas + + # --- Boundary masks --- + node_col = np.arange(NV) % NVX + node_row = np.arange(NV) // NVX + fixed_mask = (node_col == 0) | (node_col == NX) # left & right edges + bottom_mask = node_row == 0 # bottom row + + return pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask + + +# ============================================================ +# Force Computation (Analytical Stable Neo-Hookean) +# ============================================================ + + +def compute_elastic_forces( + pos: np.ndarray, + f2v: np.ndarray, + Dm_inv: np.ndarray, + Dm_inv_T: np.ndarray, + W: np.ndarray, + elem_mu: np.ndarray, + elem_lam: np.ndarray, +) -> np.ndarray: + """Compute internal elastic forces using Stable Neo-Hookean stress. + + For each element: + 1. F = Ds @ Dm_inv + 2. J = det(F) + 3. cof(F) = dJ/dF + 4. P = mu*F + (-mu + lam*(J - 1))*cof(F) + 5. H = -W * P @ Dm_inv^T + 6. Scatter H columns to global force vector + + The polynomial determinant term avoids the log(J) singularity from the + original Neo-Hookean script, so this force law does not divide by or clamp J. + + Returns: + forces: (NV, 2) array of nodal forces + """ + # Gather deformed vertex positions + pa = pos[f2v[:, 0]] # (NF, 2) + pb = pos[f2v[:, 1]] + pc = pos[f2v[:, 2]] + + # Deformed edge matrix: Ds = [xa - xc | xb - xc] + Ds = np.empty((NF, 2, 2)) + Ds[:, :, 0] = pa - pc + Ds[:, :, 1] = pb - pc + + # Deformation gradient: F = Ds @ Dm_inv + F = Ds @ Dm_inv # (NF, 2, 2) + + # Determinant: J = det(F) + J = F[:, 0, 0] * F[:, 1, 1] - F[:, 0, 1] * F[:, 1, 0] # (NF,) + + # Cofactor matrix dJ/dF for 2x2 F = [[a, b], [c, d]]: + # cof(F) = [[d, -c], [-b, a]] + cof_F = np.empty_like(F) + cof_F[:, 0, 0] = F[:, 1, 1] + cof_F[:, 0, 1] = -F[:, 1, 0] + cof_F[:, 1, 0] = -F[:, 0, 1] + cof_F[:, 1, 1] = F[:, 0, 0] + + # First Piola-Kirchhoff stress: + # P = mu*F + (-mu + lam*(J - 1))*cof(F) + mu = elem_mu[:, None, None] # (NF, 1, 1) for broadcasting + lam = elem_lam[:, None, None] + j_minus_1 = (J - 1.0)[:, None, None] + c = -mu + lam * j_minus_1 + P = mu * F + c * cof_F + + # Nodal force matrix: H = -W * P @ Dm_inv_T + H = -W[:, None, None] * (P @ Dm_inv_T) # (NF, 2, 2) + + # Scatter forces to global array + # f_a = H[:, :, 0], f_b = H[:, :, 1], f_c = -(f_a + f_b) + forces = np.zeros_like(pos) + fa = H[:, :, 0] # (NF, 2) + fb = H[:, :, 1] + fc = -(fa + fb) + + np.add.at(forces, f2v[:, 0], fa) + np.add.at(forces, f2v[:, 1], fb) + np.add.at(forces, f2v[:, 2], fc) + + return forces + + +# ============================================================ +# Time Stepping +# ============================================================ + + +def substep( + pos: np.ndarray, + vel: np.ndarray, + rest_pos: np.ndarray, + f2v: np.ndarray, + Dm_inv: np.ndarray, + Dm_inv_T: np.ndarray, + W: np.ndarray, + elem_mu: np.ndarray, + elem_lam: np.ndarray, + fixed_mask: np.ndarray, + bottom_mask: np.ndarray, + wind: float, + mass: float, +) -> None: + """Single substep of Symplectic Euler integration. + + 1. Compute elastic forces (analytical Stable Neo-Hookean) + 2. Add wind force on bottom nodes + 3. Update velocity: vel += dt * acc, then apply damping + 4. Enforce fixed boundary: vel = 0 at left/right edges + 5. Update position: pos += dt * vel + 6. Restore fixed node positions + """ + # Internal elastic forces + forces = compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam) + + # External: upward wind on bottom nodes + forces[bottom_mask, 1] += wind + + # Acceleration + acc = forces / mass + + # Symplectic Euler: update velocity first, then position + vel += DT * acc + vel *= np.exp(-DT * DAMPING) + + # Fixed boundary: zero velocity + vel[fixed_mask] = 0.0 + + # Update positions + pos += DT * vel + + # Restore fixed node positions exactly + pos[fixed_mask] = rest_pos[fixed_mask] + + +# ============================================================ +# Coordinate Transform +# ============================================================ + + +def sim_to_screen(sim_pos: np.ndarray) -> np.ndarray: + """Convert simulation coordinates to screen pixel coordinates (y-flipped).""" + screen = np.empty_like(sim_pos) + screen[:, 0] = sim_pos[:, 0] * SCALE + OFFSET_X + screen[:, 1] = OFFSET_Y - sim_pos[:, 1] * SCALE + return screen.astype(np.int32) + + +def handle_events( + pos: np.ndarray, + rest_pos: np.ndarray, + vel: np.ndarray, + wind: float, + *, + paused: bool, + show_wireframe: bool, +) -> tuple[bool, float, bool, bool]: + """Handle input events and return updated loop state.""" + running = True + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + running = False + elif event.key == pygame.K_UP: + wind += WIND_STEP + elif event.key == pygame.K_DOWN: + wind = max(0.0, wind - WIND_STEP) + elif event.key == pygame.K_r: + pos[:] = rest_pos + vel[:] = 0.0 + wind = INITIAL_WIND + elif event.key == pygame.K_SPACE: + paused = not paused + elif event.key == pygame.K_w: + show_wireframe = not show_wireframe + + return running, wind, paused, show_wireframe + + +def advance_simulation( + pos: np.ndarray, + vel: np.ndarray, + rest_pos: np.ndarray, + f2v: np.ndarray, + Dm_inv: np.ndarray, + Dm_inv_T: np.ndarray, + W: np.ndarray, + elem_mu: np.ndarray, + elem_lam: np.ndarray, + fixed_mask: np.ndarray, + bottom_mask: np.ndarray, + wind: float, + mass: float, +) -> float: + """Run one frame worth of simulation substeps and return elapsed ms.""" + t0 = time.perf_counter() + + for _ in range(SUBSTEPS): + substep( + pos, + vel, + rest_pos, + f2v, + Dm_inv, + Dm_inv_T, + W, + elem_mu, + elem_lam, + fixed_mask, + bottom_mask, + wind, + mass, + ) + + return (time.perf_counter() - t0) * 1000.0 + + +def draw_mesh( + screen: pygame.Surface, + pos: np.ndarray, + f2v: np.ndarray, + muscle_elems: np.ndarray, + fascia_elems: np.ndarray, + *, + show_wireframe: bool, +) -> None: + """Draw the current triangular mesh.""" + scr_pts = sim_to_screen(pos) + tri_verts = scr_pts[f2v] # (NF, 3, 2), all triangle vertices + + for idx in muscle_elems: + pygame.draw.polygon(screen, COLOR_MUSCLE, tri_verts[idx].tolist()) + + for idx in fascia_elems: + pygame.draw.polygon(screen, COLOR_FASCIA, tri_verts[idx].tolist()) + + if show_wireframe: + for i in range(NF): + pygame.draw.polygon(screen, COLOR_EDGE, tri_verts[i].tolist(), 1) + + +def draw_hud( + screen: pygame.Surface, + font_title: pygame.font.Font, + font_hud: pygame.font.Font, + wind: float, + fps: float, + sim_ms: float, + *, + paused: bool, +) -> None: + """Draw the interactive simulation HUD.""" + status = "PAUSED" if paused else "RUNNING" + hud_lines = [ + ( + font_title, + f"Wind: {wind:.2f} | FPS: {fps:.0f} | Sim: {sim_ms:.1f}ms [{status}]", + COLOR_TEXT, + ), + ( + font_hud, + "[Up/Down] Wind [R] Reset [SPACE] Pause [W] Wireframe [ESC] Quit", + COLOR_TEXT_DIM, + ), + ] + + y_pos = 12 + for font, text, color in hud_lines: + surf = font.render(text, TEXT_ANTIALIAS, color) + screen.blit(surf, (15, y_pos)) + y_pos += 28 + + +def draw_frame( + screen: pygame.Surface, + pos: np.ndarray, + f2v: np.ndarray, + muscle_elems: np.ndarray, + fascia_elems: np.ndarray, + font_title: pygame.font.Font, + font_hud: pygame.font.Font, + wind: float, + fps: float, + sim_ms: float, + *, + show_wireframe: bool, + paused: bool, +) -> None: + """Draw one complete frame.""" + screen.fill(COLOR_BG) + draw_mesh( + screen, + pos, + f2v, + muscle_elems, + fascia_elems, + show_wireframe=show_wireframe, + ) + draw_hud(screen, font_title, font_hud, wind, fps, sim_ms, paused=paused) + + +# ============================================================ +# Main +# ============================================================ + + +def main() -> None: + # --- Build mesh & initialize state --- + f2v, is_fascia, elem_mu, elem_lam = build_mesh() + pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask = init_state(f2v) + + dx = DOMAIN_W / NX + mass = RHO * dx * dx # lumped mass per node + wind = INITIAL_WIND + + # Precompute element group indices for rendering + muscle_elems = np.where(~is_fascia)[0] + fascia_elems = np.where(is_fascia)[0] + + # --- Pygame initialization --- + pygame.init() + screen = pygame.display.set_mode((SCREEN_W, SCREEN_H)) + pygame.display.set_caption( + "Flesh Simulation - 2D Muscle & Fascia (Stable Neo-Hookean FEM)" + ) + clock = pygame.time.Clock() + + # Use default font (avoids SysFont registry bug on Python 3.14/Windows) + font_hud = pygame.font.Font(None, 22) + font_title = pygame.font.Font(None, 28) + + running = True + paused = False + show_wireframe = False + sim_ms = 0.0 + + # --- Main loop --- + while running: + # ---- Event Handling ---- + running, wind, paused, show_wireframe = handle_events( + pos, + rest_pos, + vel, + wind, + paused=paused, + show_wireframe=show_wireframe, + ) + + # ---- Simulation ---- + if not paused: + sim_ms = advance_simulation( + pos, + vel, + rest_pos, + f2v, + Dm_inv, + Dm_inv_T, + W, + elem_mu, + elem_lam, + fixed_mask, + bottom_mask, + wind, + mass, + ) + + # ---- Rendering ---- + draw_frame( + screen, + pos, + f2v, + muscle_elems, + fascia_elems, + font_title, + font_hud, + wind, + clock.get_fps(), + sim_ms, + show_wireframe=show_wireframe, + paused=paused, + ) + pygame.display.flip() + clock.tick(60) + + pygame.quit() + sys.exit() + + +if __name__ == "__main__": + main() diff --git a/exp/2026/04/18/2d-demo/src/30-simulation-stable-neo-hookean-self-collision.py b/exp/2026/04/18/2d-demo/src/30-simulation-stable-neo-hookean-self-collision.py new file mode 100644 index 000000000..d5e6bad96 --- /dev/null +++ b/exp/2026/04/18/2d-demo/src/30-simulation-stable-neo-hookean-self-collision.py @@ -0,0 +1,1067 @@ +"""Run a 2D Stable Neo-Hookean muscle-fascia FEM simulation with self-contact. + +Simulates a flat meat slab (100x11 elements) with a stiff fascia middle layer. +Uses analytical First Piola-Kirchhoff stress with NumPy vectorized computation. +Adds a lightweight boundary point-edge self-collision pass for fold/contact cases. +Real-time visualization with Pygame. + +Material: Stable Neo-Hookean hyperelastic + Psi(F) = mu/2 * (tr(F^T F) - 2) - mu * (J - 1) + lam/2 * (J - 1)^2 + P = mu * F + (-mu + lam * (J - 1)) * cof(F) + +Controls: + Up/Down Increase/decrease wind force + R Reset simulation + SPACE Pause/resume + C Toggle self-collision + W Toggle wireframe overlay + ESC Quit +""" + +from __future__ import annotations + +import sys +import time +from dataclasses import dataclass + +import numpy as np +import pygame + +type MeshData = tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] +type StateData = tuple[ + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, + np.ndarray, +] +type ContactResult = tuple[int, np.ndarray] + + +@dataclass(frozen=True, slots=True) +class SelfCollisionData: + """Precomputed boundary topology for point-edge self-collision.""" + + boundary_nodes: np.ndarray + boundary_edges: np.ndarray + candidate_edges: np.ndarray + + +@dataclass(frozen=True, slots=True) +class ActiveContacts: + """Vectorized point-edge contacts active in the current configuration.""" + + nodes: np.ndarray + edge_a: np.ndarray + edge_b: np.ndarray + t: np.ndarray + closest: np.ndarray + normals: np.ndarray + depth: np.ndarray + node_weight: np.ndarray + edge_a_weight: np.ndarray + edge_b_weight: np.ndarray + denom: np.ndarray + + +# ============================================================ +# Simulation Parameters +# ============================================================ + +NX, NY = 100, 11 # element grid (cols x rows) +NVX, NVY = NX + 1, NY + 1 # node grid: 101 x 12 +NV = NVX * NVY # 1212 nodes +NF = 2 * NX * NY # 2200 triangles + +DOMAIN_W = 1.0 # domain width +DOMAIN_H = DOMAIN_W * NY / NX # domain height = 0.11 + +# Material +E_MUSCLE = 1000.0 # Young's modulus (muscle) +E_FASCIA = E_MUSCLE * 300 # Young's modulus (fascia) = 100x +NU = 0.4 # Poisson's ratio +RHO = 10.0 # density (normalized) + +# Time integration +DT = 5e-5 # timestep +DAMPING = 15.0 # velocity damping +SUBSTEPS = 100 # substeps per frame + +# Wind +WIND_STEP = 1.0 # wind increment per key press +INITIAL_WIND = 0.0 + +# Self-collision +CONTACT_DISTANCE = 0.9 * DOMAIN_W / NX +CONTACT_STIFFNESS = 1e4 +CONTACT_DAMPING = 1.0 +CONTACT_PROJECTION_ITERS = 2 +COLLISION_INTERVAL = 4 +MAX_DRAWN_CONTACTS = 128 +EPS = 1e-12 + + +# ============================================================ +# Display Parameters +# ============================================================ + +SCREEN_W, SCREEN_H = 1400, 700 +SCALE = 1100.0 # pixels per simulation unit +OFFSET_X = (SCREEN_W - DOMAIN_W * SCALE) / 2 +OFFSET_Y = SCREEN_H * 0.78 # y=0 line in screen space + +# Colors +COLOR_BG = (12, 12, 22) +COLOR_MUSCLE = (165, 55, 55) +COLOR_FASCIA = (195, 205, 215) +COLOR_EDGE = (45, 45, 58) +COLOR_CONTACT = (255, 135, 70) +COLOR_TEXT = (220, 220, 230) +COLOR_TEXT_DIM = (130, 130, 145) +TEXT_ANTIALIAS = True + + +# ============================================================ +# Mesh & Material Setup +# ============================================================ + + +def build_mesh() -> MeshData: + """Build triangular mesh from a structured quad grid. + + Each quad cell (col, row) is split into 2 triangles: + Triangle 0: [bottom-left, bottom-right, top-right] + Triangle 1: [top-right, top-left, bottom-left] + + The middle row (row == 5) is assigned fascia material; + all other rows are muscle. + + Returns: + f2v: (NF, 3) int array, triangle-to-vertex mapping + is_fascia: (NF,) bool array, True for fascia elements + elem_mu: (NF,) float array, Lame parameter mu per element + elem_lam: (NF,) float array, Lame parameter lambda per element + """ + f2v = np.zeros((NF, 3), dtype=np.int32) + is_fascia = np.zeros(NF, dtype=bool) + + for row in range(NY): + for col in range(NX): + # Quad corner node indices + a = row * NVX + col # bottom-left + b = a + 1 # bottom-right + c = (row + 1) * NVX + col + 1 # top-right + d = (row + 1) * NVX + col # top-left + + k = (row * NX + col) * 2 + f2v[k] = [a, b, c] + f2v[k + 1] = [c, d, a] + + # Middle layer = fascia + if row == 5: + is_fascia[k] = True + is_fascia[k + 1] = True + + # Compute per-element Lame parameters + E = np.where(is_fascia, E_FASCIA, E_MUSCLE) + elem_mu = E / (2.0 * (1.0 + NU)) + elem_lam = E * NU / ((1.0 + NU) * (1.0 - 2.0 * NU)) + + return f2v, is_fascia, elem_mu, elem_lam + + +# ============================================================ +# State Initialization +# ============================================================ + + +def init_state(f2v: np.ndarray) -> StateData: + """Initialize node positions and precompute reference configuration. + + Precomputes: + - Dm_inv: (NF, 2, 2) inverse of reference edge matrix + - Dm_inv_T: (NF, 2, 2) transpose of Dm_inv (cached for reuse) + - W: (NF,) reference triangle areas + + Returns tuple: + (pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask) + """ + dx = DOMAIN_W / NX + dy = DOMAIN_H / NY + + # Build node positions on a regular grid + cols = np.arange(NVX) * dx + rows = np.arange(NVY) * dy + grid_x, grid_y = np.meshgrid(cols, rows) # (NVY, NVX) each + pos = np.column_stack([grid_x.ravel(), grid_y.ravel()]) # (NV, 2) + + rest_pos = pos.copy() + vel = np.zeros_like(pos) + + # --- Precompute reference configuration for all elements --- + ia, ib, ic = f2v[:, 0], f2v[:, 1], f2v[:, 2] + xa, xb, xc = pos[ia], pos[ib], pos[ic] + + # Reference edge matrix: Dm = [Xa - Xc | Xb - Xc] + Dm = np.empty((NF, 2, 2)) + Dm[:, :, 0] = xa - xc + Dm[:, :, 1] = xb - xc + + # Batch invert 2x2 matrices + det_Dm = Dm[:, 0, 0] * Dm[:, 1, 1] - Dm[:, 0, 1] * Dm[:, 1, 0] + inv_det = 1.0 / det_Dm + + Dm_inv = np.empty_like(Dm) + Dm_inv[:, 0, 0] = Dm[:, 1, 1] * inv_det + Dm_inv[:, 0, 1] = -Dm[:, 0, 1] * inv_det + Dm_inv[:, 1, 0] = -Dm[:, 1, 0] * inv_det + Dm_inv[:, 1, 1] = Dm[:, 0, 0] * inv_det + + Dm_inv_T = np.ascontiguousarray(Dm_inv.transpose(0, 2, 1)) + W = 0.5 * np.abs(det_Dm) # reference triangle areas + + # --- Boundary masks --- + node_col = np.arange(NV) % NVX + node_row = np.arange(NV) // NVX + fixed_mask = (node_col == 0) | (node_col == NX) # left & right edges + bottom_mask = node_row == 0 # bottom row + + return pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask + + +# ============================================================ +# Self-Collision Setup & Solvers +# ============================================================ + + +def build_boundary_edges() -> np.ndarray: + """Build oriented edges around the outer boundary of the slab.""" + edges = [(col, col + 1) for col in range(NX)] + edges.extend((row * NVX + NX, (row + 1) * NVX + NX) for row in range(NY)) + + top_row = NY * NVX + edges.extend((top_row + col, top_row + col - 1) for col in range(NX, 0, -1)) + edges.extend((row * NVX, (row - 1) * NVX) for row in range(NY, 0, -1)) + + return np.asarray(edges, dtype=np.int32) + + +def build_self_collision_data(rest_pos: np.ndarray) -> SelfCollisionData: + """Precompute boundary nodes and candidate non-incident boundary edges.""" + boundary_edges = build_boundary_edges() + boundary_nodes = np.unique(boundary_edges) + edge_a = boundary_edges[:, 0] + edge_b = boundary_edges[:, 1] + candidate_edges = np.empty( + (boundary_nodes.size, boundary_edges.shape[0]), dtype=bool + ) + + for row, node in enumerate(boundary_nodes): + p = rest_pos[node] + start = rest_pos[edge_a] + end = rest_pos[edge_b] + _, _, rest_distance = closest_points_on_edges(p, start, end) + non_incident = (edge_a != node) & (edge_b != node) + separated_at_rest = rest_distance > CONTACT_DISTANCE + candidate_edges[row] = non_incident & separated_at_rest + + return SelfCollisionData( + boundary_nodes=boundary_nodes, + boundary_edges=boundary_edges, + candidate_edges=candidate_edges, + ) + + +def closest_points_on_edges( + point: np.ndarray, + edge_start: np.ndarray, + edge_end: np.ndarray, +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """Return closest edge parameters, points, and distances for one point.""" + edge = edge_end - edge_start + length_sq = np.einsum("ij,ij->i", edge, edge) + rel = point - edge_start + t = np.divide( + np.einsum("ij,ij->i", rel, edge), + length_sq, + out=np.zeros_like(length_sq), + where=length_sq > EPS, + ) + t = np.clip(t, 0.0, 1.0) + closest = edge_start + t[:, None] * edge + delta = point - closest + distance = np.linalg.norm(delta, axis=1) + return t, closest, distance + + +def contact_normals( + point: np.ndarray, + closest: np.ndarray, + edge_start: np.ndarray, + edge_end: np.ndarray, + distance: np.ndarray, +) -> np.ndarray: + """Build stable point-edge contact normals.""" + delta = point - closest + normals = np.zeros_like(delta) + safe = distance > EPS + normals[safe] = delta[safe] / distance[safe, None] + + if np.any(~safe): + edge = edge_end[~safe] - edge_start[~safe] + fallback = np.column_stack([-edge[:, 1], edge[:, 0]]) + fallback_norm = np.linalg.norm(fallback, axis=1) + fallback = np.divide( + fallback, + fallback_norm[:, None], + out=np.tile(np.array([[0.0, 1.0]]), (fallback.shape[0], 1)), + where=fallback_norm[:, None] > EPS, + ) + normals[~safe] = fallback + + return normals + + +def broadphase_contact_pairs( + pos: np.ndarray, + collision: SelfCollisionData, +) -> tuple[np.ndarray, np.ndarray, np.ndarray] | None: + """Find boundary point-edge pairs with overlapping contact AABBs.""" + edge_a_all = collision.boundary_edges[:, 0] + edge_b_all = collision.boundary_edges[:, 1] + point_pos = pos[collision.boundary_nodes] + edge_start = pos[edge_a_all] + edge_end = pos[edge_b_all] + + min_corner = np.minimum(edge_start, edge_end) - CONTACT_DISTANCE + max_corner = np.maximum(edge_start, edge_end) + CONTACT_DISTANCE + overlap_x = (point_pos[:, 0, None] >= min_corner[None, :, 0]) & ( + point_pos[:, 0, None] <= max_corner[None, :, 0] + ) + overlap_y = (point_pos[:, 1, None] >= min_corner[None, :, 1]) & ( + point_pos[:, 1, None] <= max_corner[None, :, 1] + ) + broadphase = collision.candidate_edges & overlap_x & overlap_y + node_rows, edge_cols = np.nonzero(broadphase) + if node_rows.size == 0: + return None + + return ( + collision.boundary_nodes[node_rows], + edge_a_all[edge_cols], + edge_b_all[edge_cols], + ) + + +def compute_self_collision_forces( + pos: np.ndarray, + vel: np.ndarray, + collision: SelfCollisionData, + fixed_mask: np.ndarray, +) -> tuple[np.ndarray, int]: + """Compute soft penalty forces for boundary point-edge self-contact.""" + forces = np.zeros_like(pos) + broadphase = broadphase_contact_pairs(pos, collision) + if broadphase is None: + return forces, 0 + + nodes, edge_a, edge_b = broadphase + t, closest, distance = closest_points_on_edges(pos[nodes], pos[edge_a], pos[edge_b]) + active = distance < CONTACT_DISTANCE + if not np.any(active): + return forces, 0 + + nodes = nodes[active] + edge_a = edge_a[active] + edge_b = edge_b[active] + t = t[active] + closest = closest[active] + distance = distance[active] + normal = contact_normals(pos[nodes], closest, pos[edge_a], pos[edge_b], distance) + + depth = CONTACT_DISTANCE - distance + edge_vel = (1.0 - t[:, None]) * vel[edge_a] + t[:, None] * vel[edge_b] + rel_normal_vel = np.einsum("ij,ij->i", vel[nodes] - edge_vel, normal) + damping = CONTACT_DAMPING * np.maximum(0.0, -rel_normal_vel) + contact_force = (CONTACT_STIFFNESS * depth + damping)[:, None] * normal + + node_free = ~fixed_mask[nodes] + if np.any(node_free): + np.add.at(forces, nodes[node_free], contact_force[node_free]) + + edge_a_free = ~fixed_mask[edge_a] + if np.any(edge_a_free): + np.add.at( + forces, + edge_a[edge_a_free], + -(1.0 - t[edge_a_free])[:, None] * contact_force[edge_a_free], + ) + + edge_b_free = ~fixed_mask[edge_b] + if np.any(edge_b_free): + np.add.at( + forces, + edge_b[edge_b_free], + -t[edge_b_free][:, None] * contact_force[edge_b_free], + ) + + return forces, int(np.count_nonzero(active)) + + +def find_active_contacts( + pos: np.ndarray, + collision: SelfCollisionData, + fixed_mask: np.ndarray, +) -> ActiveContacts | None: + """Find movable point-edge contacts for the current positions.""" + broadphase = broadphase_contact_pairs(pos, collision) + if broadphase is None: + return None + + nodes, edge_a, edge_b = broadphase + t, closest, distance = closest_points_on_edges(pos[nodes], pos[edge_a], pos[edge_b]) + active = distance < CONTACT_DISTANCE + if not np.any(active): + return None + + nodes = nodes[active] + edge_a = edge_a[active] + edge_b = edge_b[active] + t = t[active] + closest = closest[active] + distance = distance[active] + normals = contact_normals(pos[nodes], closest, pos[edge_a], pos[edge_b], distance) + depth = CONTACT_DISTANCE - distance + + node_weight = (~fixed_mask[nodes]).astype(pos.dtype) + edge_a_weight = (~fixed_mask[edge_a]).astype(pos.dtype) + edge_b_weight = (~fixed_mask[edge_b]).astype(pos.dtype) + denom = node_weight + ((1.0 - t) ** 2) * edge_a_weight + (t**2) * edge_b_weight + movable = denom > EPS + if not np.any(movable): + return None + + return ActiveContacts( + nodes=nodes[movable], + edge_a=edge_a[movable], + edge_b=edge_b[movable], + t=t[movable], + closest=closest[movable], + normals=normals[movable], + depth=depth[movable], + node_weight=node_weight[movable], + edge_a_weight=edge_a_weight[movable], + edge_b_weight=edge_b_weight[movable], + denom=denom[movable], + ) + + +def project_contact_positions(pos: np.ndarray, contacts: ActiveContacts) -> np.ndarray: + """Apply position corrections and return the raw correction vectors.""" + correction = contacts.depth[:, None] * contacts.normals + np.add.at( + pos, + contacts.nodes, + (contacts.node_weight / contacts.denom)[:, None] * correction, + ) + np.add.at( + pos, + contacts.edge_a, + -((1.0 - contacts.t) * contacts.edge_a_weight / contacts.denom)[:, None] + * correction, + ) + np.add.at( + pos, + contacts.edge_b, + -(contacts.t * contacts.edge_b_weight / contacts.denom)[:, None] * correction, + ) + return correction + + +def project_contact_velocities(vel: np.ndarray, contacts: ActiveContacts) -> None: + """Remove inward normal velocity from active contact pairs.""" + edge_vel = (1.0 - contacts.t[:, None]) * vel[contacts.edge_a] + contacts.t[ + :, None + ] * vel[contacts.edge_b] + rel_normal_vel = np.einsum( + "ij,ij->i", + vel[contacts.nodes] - edge_vel, + contacts.normals, + ) + approaching = rel_normal_vel < 0.0 + if not np.any(approaching): + return + + velocity_correction = ( + -rel_normal_vel[approaching, None] * contacts.normals[approaching] + ) + np.add.at( + vel, + contacts.nodes[approaching], + (contacts.node_weight[approaching] / contacts.denom[approaching])[:, None] + * velocity_correction, + ) + np.add.at( + vel, + contacts.edge_a[approaching], + -( + (1.0 - contacts.t[approaching]) + * contacts.edge_a_weight[approaching] + / contacts.denom[approaching] + )[:, None] + * velocity_correction, + ) + np.add.at( + vel, + contacts.edge_b[approaching], + -( + contacts.t[approaching] + * contacts.edge_b_weight[approaching] + / contacts.denom[approaching] + )[:, None] + * velocity_correction, + ) + + +def extend_contact_points( + contact_points: list[np.ndarray], + contacts: ActiveContacts, + correction: np.ndarray, +) -> None: + """Append a bounded number of contact points for rendering.""" + remaining = MAX_DRAWN_CONTACTS - len(contact_points) + if remaining <= 0: + return + + contact_points.extend(contacts.closest[:remaining] + 0.5 * correction[:remaining]) + + +def project_self_collisions( + pos: np.ndarray, + vel: np.ndarray, + collision: SelfCollisionData, + fixed_mask: np.ndarray, +) -> ContactResult: + """Project boundary point-edge pairs back to the contact distance.""" + contact_count = 0 + contact_points: list[np.ndarray] = [] + + for _ in range(CONTACT_PROJECTION_ITERS): + contacts = find_active_contacts(pos, collision, fixed_mask) + if contacts is None: + continue + + correction = project_contact_positions(pos, contacts) + project_contact_velocities(vel, contacts) + contact_count += int(contacts.nodes.size) + extend_contact_points(contact_points, contacts, correction) + + if not contact_points: + return contact_count, np.empty((0, 2), dtype=pos.dtype) + + return contact_count, np.asarray(contact_points, dtype=pos.dtype) + + +# ============================================================ +# Force Computation (Analytical Stable Neo-Hookean) +# ============================================================ + + +def compute_elastic_forces( + pos: np.ndarray, + f2v: np.ndarray, + Dm_inv: np.ndarray, + Dm_inv_T: np.ndarray, + W: np.ndarray, + elem_mu: np.ndarray, + elem_lam: np.ndarray, +) -> np.ndarray: + """Compute internal elastic forces using Stable Neo-Hookean stress. + + For each element: + 1. F = Ds @ Dm_inv + 2. J = det(F) + 3. cof(F) = dJ/dF + 4. P = mu*F + (-mu + lam*(J - 1))*cof(F) + 5. H = -W * P @ Dm_inv^T + 6. Scatter H columns to global force vector + + The polynomial determinant term avoids the log(J) singularity from the + original Neo-Hookean script, so this force law does not divide by or clamp J. + + Returns: + forces: (NV, 2) array of nodal forces + """ + # Gather deformed vertex positions + pa = pos[f2v[:, 0]] # (NF, 2) + pb = pos[f2v[:, 1]] + pc = pos[f2v[:, 2]] + + # Deformed edge matrix: Ds = [xa - xc | xb - xc] + Ds = np.empty((NF, 2, 2)) + Ds[:, :, 0] = pa - pc + Ds[:, :, 1] = pb - pc + + # Deformation gradient: F = Ds @ Dm_inv + F = Ds @ Dm_inv # (NF, 2, 2) + + # Determinant: J = det(F) + J = F[:, 0, 0] * F[:, 1, 1] - F[:, 0, 1] * F[:, 1, 0] # (NF,) + + # Cofactor matrix dJ/dF for 2x2 F = [[a, b], [c, d]]: + # cof(F) = [[d, -c], [-b, a]] + cof_F = np.empty_like(F) + cof_F[:, 0, 0] = F[:, 1, 1] + cof_F[:, 0, 1] = -F[:, 1, 0] + cof_F[:, 1, 0] = -F[:, 0, 1] + cof_F[:, 1, 1] = F[:, 0, 0] + + # First Piola-Kirchhoff stress: + # P = mu*F + (-mu + lam*(J - 1))*cof(F) + mu = elem_mu[:, None, None] # (NF, 1, 1) for broadcasting + lam = elem_lam[:, None, None] + j_minus_1 = (J - 1.0)[:, None, None] + c = -mu + lam * j_minus_1 + P = mu * F + c * cof_F + + # Nodal force matrix: H = -W * P @ Dm_inv_T + H = -W[:, None, None] * (P @ Dm_inv_T) # (NF, 2, 2) + + # Scatter forces to global array + # f_a = H[:, :, 0], f_b = H[:, :, 1], f_c = -(f_a + f_b) + forces = np.zeros_like(pos) + fa = H[:, :, 0] # (NF, 2) + fb = H[:, :, 1] + fc = -(fa + fb) + + np.add.at(forces, f2v[:, 0], fa) + np.add.at(forces, f2v[:, 1], fb) + np.add.at(forces, f2v[:, 2], fc) + + return forces + + +# ============================================================ +# Time Stepping +# ============================================================ + + +def substep( + pos: np.ndarray, + vel: np.ndarray, + rest_pos: np.ndarray, + f2v: np.ndarray, + Dm_inv: np.ndarray, + Dm_inv_T: np.ndarray, + W: np.ndarray, + elem_mu: np.ndarray, + elem_lam: np.ndarray, + fixed_mask: np.ndarray, + bottom_mask: np.ndarray, + collision: SelfCollisionData, + wind: float, + mass: float, + *, + collision_enabled: bool, +) -> ContactResult: + """Single substep of Symplectic Euler integration. + + 1. Compute elastic forces (analytical Stable Neo-Hookean) + 2. Add optional self-collision penalty forces + 3. Add wind force on bottom nodes + 4. Update velocity: vel += dt * acc, then apply damping + 5. Enforce fixed boundary: vel = 0 at left/right edges + 6. Update position: pos += dt * vel + 7. Project self-collision and restore fixed node positions + """ + # Internal elastic forces + forces = compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam) + contact_count = 0 + contact_points = np.empty((0, 2), dtype=pos.dtype) + + if collision_enabled: + collision_forces, force_contacts = compute_self_collision_forces( + pos, + vel, + collision, + fixed_mask, + ) + forces += collision_forces + contact_count += force_contacts + + # External: upward wind on bottom nodes + forces[bottom_mask, 1] += wind + + # Acceleration + acc = forces / mass + + # Symplectic Euler: update velocity first, then position + vel += DT * acc + vel *= np.exp(-DT * DAMPING) + + # Fixed boundary: zero velocity + vel[fixed_mask] = 0.0 + + # Update positions + pos += DT * vel + + if collision_enabled: + projection_contacts, contact_points = project_self_collisions( + pos, + vel, + collision, + fixed_mask, + ) + contact_count += projection_contacts + + # Restore fixed node positions exactly + pos[fixed_mask] = rest_pos[fixed_mask] + vel[fixed_mask] = 0.0 + + return contact_count, contact_points + + +# ============================================================ +# Coordinate Transform +# ============================================================ + + +def sim_to_screen(sim_pos: np.ndarray) -> np.ndarray: + """Convert simulation coordinates to screen pixel coordinates (y-flipped).""" + screen = np.empty_like(sim_pos) + screen[:, 0] = sim_pos[:, 0] * SCALE + OFFSET_X + screen[:, 1] = OFFSET_Y - sim_pos[:, 1] * SCALE + return screen.astype(np.int32) + + +def handle_keydown( + key: int, + pos: np.ndarray, + rest_pos: np.ndarray, + vel: np.ndarray, + wind: float, + *, + paused: bool, + show_wireframe: bool, + collision_enabled: bool, +) -> tuple[bool, float, bool, bool, bool]: + """Handle one key press and return updated loop state.""" + running = True + + if key == pygame.K_ESCAPE: + running = False + elif key == pygame.K_UP: + wind += WIND_STEP + elif key == pygame.K_DOWN: + wind = max(0.0, wind - WIND_STEP) + elif key == pygame.K_r: + pos[:] = rest_pos + vel[:] = 0.0 + wind = INITIAL_WIND + elif key == pygame.K_SPACE: + paused = not paused + elif key == pygame.K_c: + collision_enabled = not collision_enabled + elif key == pygame.K_w: + show_wireframe = not show_wireframe + + return running, wind, paused, show_wireframe, collision_enabled + + +def handle_events( + pos: np.ndarray, + rest_pos: np.ndarray, + vel: np.ndarray, + wind: float, + *, + paused: bool, + show_wireframe: bool, + collision_enabled: bool, +) -> tuple[bool, float, bool, bool, bool]: + """Handle input events and return updated loop state.""" + running = True + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + elif event.type == pygame.KEYDOWN: + running, wind, paused, show_wireframe, collision_enabled = handle_keydown( + event.key, + pos, + rest_pos, + vel, + wind, + paused=paused, + show_wireframe=show_wireframe, + collision_enabled=collision_enabled, + ) + + return running, wind, paused, show_wireframe, collision_enabled + + +def advance_simulation( + pos: np.ndarray, + vel: np.ndarray, + rest_pos: np.ndarray, + f2v: np.ndarray, + Dm_inv: np.ndarray, + Dm_inv_T: np.ndarray, + W: np.ndarray, + elem_mu: np.ndarray, + elem_lam: np.ndarray, + fixed_mask: np.ndarray, + bottom_mask: np.ndarray, + collision: SelfCollisionData, + wind: float, + mass: float, + *, + collision_enabled: bool, +) -> tuple[float, float, np.ndarray]: + """Run one frame worth of simulation substeps and return contact stats.""" + t0 = time.perf_counter() + frame_contacts = 0 + contact_points = np.empty((0, 2), dtype=pos.dtype) + + for step in range(SUBSTEPS): + substep_contacts, substep_points = substep( + pos, + vel, + rest_pos, + f2v, + Dm_inv, + Dm_inv_T, + W, + elem_mu, + elem_lam, + fixed_mask, + bottom_mask, + collision, + wind, + mass, + # collision_enabled=collision_enabled and step % COLLISION_INTERVAL == 0, + collision_enabled=collision_enabled, + ) + frame_contacts += substep_contacts + if substep_points.size: + contact_points = substep_points + + return ( + (time.perf_counter() - t0) * 1000.0, + frame_contacts / SUBSTEPS, + contact_points, + ) + + +def draw_mesh( + screen: pygame.Surface, + pos: np.ndarray, + f2v: np.ndarray, + muscle_elems: np.ndarray, + fascia_elems: np.ndarray, + *, + show_wireframe: bool, +) -> None: + """Draw the current triangular mesh.""" + scr_pts = sim_to_screen(pos) + tri_verts = scr_pts[f2v] # (NF, 3, 2), all triangle vertices + + for idx in muscle_elems: + pygame.draw.polygon(screen, COLOR_MUSCLE, tri_verts[idx].tolist()) + + for idx in fascia_elems: + pygame.draw.polygon(screen, COLOR_FASCIA, tri_verts[idx].tolist()) + + if show_wireframe: + for i in range(NF): + pygame.draw.polygon(screen, COLOR_EDGE, tri_verts[i].tolist(), 1) + + +def draw_contacts(screen: pygame.Surface, contact_points: np.ndarray) -> None: + """Draw recent self-collision contact points.""" + if contact_points.size == 0: + return + + for point in sim_to_screen(contact_points): + pygame.draw.circle(screen, COLOR_CONTACT, point.tolist(), 3) + + +def draw_hud( + screen: pygame.Surface, + font_title: pygame.font.Font, + font_hud: pygame.font.Font, + wind: float, + fps: float, + sim_ms: float, + contacts: float, + *, + paused: bool, + collision_enabled: bool, +) -> None: + """Draw the interactive simulation HUD.""" + status = "PAUSED" if paused else "RUNNING" + collision_status = "ON" if collision_enabled else "OFF" + hud_lines = [ + ( + font_title, + f"Wind: {wind:.2f} | FPS: {fps:.0f} | Sim: {sim_ms:.1f}ms | Contacts: {contacts} [{status}]", + COLOR_TEXT, + ), + ( + font_hud, + f"[Up/Down] Wind [C] Collision {collision_status} [R] Reset [SPACE] Pause [W] Wireframe [ESC] Quit", + COLOR_TEXT_DIM, + ), + ] + + y_pos = 12 + for font, text, color in hud_lines: + surf = font.render(text, TEXT_ANTIALIAS, color) + screen.blit(surf, (15, y_pos)) + y_pos += 28 + + +def draw_frame( + screen: pygame.Surface, + pos: np.ndarray, + f2v: np.ndarray, + muscle_elems: np.ndarray, + fascia_elems: np.ndarray, + contact_points: np.ndarray, + font_title: pygame.font.Font, + font_hud: pygame.font.Font, + wind: float, + fps: float, + sim_ms: float, + contacts: float, + *, + show_wireframe: bool, + paused: bool, + collision_enabled: bool, +) -> None: + """Draw one complete frame.""" + screen.fill(COLOR_BG) + draw_mesh( + screen, + pos, + f2v, + muscle_elems, + fascia_elems, + show_wireframe=show_wireframe, + ) + draw_contacts(screen, contact_points) + draw_hud( + screen, + font_title, + font_hud, + wind, + fps, + sim_ms, + contacts, + paused=paused, + collision_enabled=collision_enabled, + ) + + +# ============================================================ +# Main +# ============================================================ + + +def main() -> None: + # --- Build mesh & initialize state --- + f2v, is_fascia, elem_mu, elem_lam = build_mesh() + pos, rest_pos, vel, Dm_inv, Dm_inv_T, W, fixed_mask, bottom_mask = init_state(f2v) + collision = build_self_collision_data(rest_pos) + + dx = DOMAIN_W / NX + mass = RHO * dx * dx # lumped mass per node + wind = INITIAL_WIND + + # Precompute element group indices for rendering + muscle_elems = np.where(~is_fascia)[0] + fascia_elems = np.where(is_fascia)[0] + + # --- Pygame initialization --- + pygame.init() + screen = pygame.display.set_mode((SCREEN_W, SCREEN_H)) + pygame.display.set_caption( + "Flesh Simulation - 2D Muscle & Fascia (Stable Neo-Hookean FEM + Self-Collision)" + ) + clock = pygame.time.Clock() + + # Use default font (avoids SysFont registry bug on Python 3.14/Windows) + font_hud = pygame.font.Font(None, 22) + font_title = pygame.font.Font(None, 28) + + running = True + paused = False + show_wireframe = False + collision_enabled = True + sim_ms = 0.0 + contacts = 0 + contact_points = np.empty((0, 2), dtype=pos.dtype) + + # --- Main loop --- + while running: + # ---- Event Handling ---- + running, wind, paused, show_wireframe, collision_enabled = handle_events( + pos, + rest_pos, + vel, + wind, + paused=paused, + show_wireframe=show_wireframe, + collision_enabled=collision_enabled, + ) + + # ---- Simulation ---- + if not paused: + sim_ms, contacts, contact_points = advance_simulation( + pos, + vel, + rest_pos, + f2v, + Dm_inv, + Dm_inv_T, + W, + elem_mu, + elem_lam, + fixed_mask, + bottom_mask, + collision, + wind, + mass, + collision_enabled=collision_enabled, + ) + + # ---- Rendering ---- + draw_frame( + screen, + pos, + f2v, + muscle_elems, + fascia_elems, + contact_points, + font_title, + font_hud, + wind, + clock.get_fps(), + sim_ms, + contacts, + show_wireframe=show_wireframe, + paused=paused, + collision_enabled=collision_enabled, + ) + pygame.display.flip() + clock.tick(60) + + pygame.quit() + sys.exit() + + +if __name__ == "__main__": + main() diff --git a/exp/2026/05/06/toy/data/10-stretched-cylinder.vtu b/exp/2026/05/06/toy/data/10-stretched-cylinder.vtu new file mode 100644 index 000000000..4179d8055 --- /dev/null +++ b/exp/2026/05/06/toy/data/10-stretched-cylinder.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3c0703e065b7c4d595242cdf6860058be3bddfff8f505e5dca4c65716d2946 +size 120166 diff --git a/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-collision-comparison.vtu b/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-collision-comparison.vtu new file mode 100644 index 000000000..970bcaeb5 --- /dev/null +++ b/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-collision-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a4ca4c395e30b225fef69c91cc3037990c88e077c332384e0caead5eed01503 +size 2381766 diff --git a/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-collision.vtu b/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-collision.vtu new file mode 100644 index 000000000..fa1c21e5d --- /dev/null +++ b/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8c9cdde43508875acf9db4de5339d4c4141e7ec746a22c7aa817a8e5d4cde22 +size 1967979 diff --git a/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-no-collision.vtu b/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-no-collision.vtu new file mode 100644 index 000000000..f1c8825f5 --- /dev/null +++ b/exp/2026/05/06/toy/data/20-ext-force-stable-neo-hookean-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b10b8e9ef5897329b848534564e360d3f66d02f007d144146ec4b6dd079df1df +size 1965110 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000000.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000000.vtu new file mode 100644 index 000000000..9a315c1fb --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d231678e6f809f94bfcf8f3fc54217568e830398af8bc0e619047015743c82c +size 1927253 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000001.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000001.vtu new file mode 100644 index 000000000..ba4d3dd56 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c60d7b2341d8de5d2651e5d6bd475816edad61978c686a62d1ac20742fa1b2ef +size 2537471 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000002.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000002.vtu new file mode 100644 index 000000000..f9940aba0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6bc1b878031b6994018e2b34cf72411117790c84418c82b09d05a44f522bcd2 +size 2790714 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000003.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000003.vtu new file mode 100644 index 000000000..462226390 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8db3b2ee270ddd47425c679515581111f56c1eb5b552c3e820dccd8b0715f9df +size 2791393 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000004.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000004.vtu new file mode 100644 index 000000000..b9e7c7a61 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e4a019420a138ff19fa3307ea076eb5e3f9d95a797c571656cea07b57aa4f36 +size 2791197 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000005.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000005.vtu new file mode 100644 index 000000000..78d2e20f1 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14a88563feb285cd5598c5c9cb020b8eca1e183544d37a6ec8328aea44d8bd9b +size 2790801 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000006.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000006.vtu new file mode 100644 index 000000000..256bcc519 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96bce48a330173cdcccdf4de64fb182443c984b6605567685945bfc582dd27a5 +size 2790642 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000007.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000007.vtu new file mode 100644 index 000000000..b9e8dde87 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4cf80f794eb7bb26c9458e4d4fa5a92407c28186b506e74a1da60db24eba14e +size 2790290 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000008.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000008.vtu new file mode 100644 index 000000000..ef9fe335f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb086d43b084120e30ea4c52b047051bef8b03abd7e85bf9110f21351e388ca1 +size 2790110 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000009.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000009.vtu new file mode 100644 index 000000000..530480d40 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fccf11eef84f50abcfc2375d2ea996775de131ed07f107479002ff4ac9f966b +size 2789590 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000010.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000010.vtu new file mode 100644 index 000000000..908630f03 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55e8da28110718d583ed481a3d6792c85fdfabd19a410374611f918f132ee24c +size 2789466 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000011.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000011.vtu new file mode 100644 index 000000000..af5bb71fd --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a60fced0f54313375e42081f0ef72a10f027b92659bb1963f51a2c96f376808e +size 2789342 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000012.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000012.vtu new file mode 100644 index 000000000..62fc8e87b --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb6a554841387801c3dd8ef9e92ea3c27ee5433780d83838f3b5174d3f081aa +size 2789008 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000013.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000013.vtu new file mode 100644 index 000000000..3b3a329e7 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a396b7278bd9cee744d56fa6106e07826a2630b36cf46403139d6bda79c54481 +size 2788894 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000014.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000014.vtu new file mode 100644 index 000000000..c290cc730 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89c48d08867931235f752460201212d47888089b4bea3cfc20969a1286d83585 +size 2788838 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000015.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000015.vtu new file mode 100644 index 000000000..5a297c783 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63b4e36f3f562b72ace4abae078c8fc8792b78e58c2cb7b03970b77c0a89373d +size 2788686 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.series b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.series new file mode 100644 index 000000000..9c91e42ec --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision-steps.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8eb909158ff70dd44dc67d16e0f614e86cc0d2d5bbd626eaa3dfb22654869f4 +size 2590 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision.vtu new file mode 100644 index 000000000..ec2c26540 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1c5c33c0b09bb699a314c3a9d0cd1e118e505d556ee9bde8840d9f40fc2f10b +size 1931463 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-comparison.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-comparison.vtu new file mode 100644 index 000000000..aec56a767 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:601f4cbe901569e2c34ebee439f9656cc475710cd34e79293079468448f44ec6 +size 2073569 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000000.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000000.vtu new file mode 100644 index 000000000..1d34e5758 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3594403ba2e24af6db1034a1c61b283202107a0b03ba60cddecf2d43b0baff3f +size 1925451 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000001.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000001.vtu new file mode 100644 index 000000000..4f2ae51bb --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54bd33546d7854d4d89339ee9f67335192bc87940e4dae3f49feb676a92fdd64 +size 2493926 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000002.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000002.vtu new file mode 100644 index 000000000..235af8f5a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80b7b68b9ddb73a9fe9e76662e6765a3e440591b88613e3b4c8db34f258d8cc6 +size 2783655 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000003.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000003.vtu new file mode 100644 index 000000000..3846ed6fb --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b55ed4ddd0a074f182fe0c7e765d54c54927220b1e0397431f8face9cc576b5b +size 2786135 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000004.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000004.vtu new file mode 100644 index 000000000..5e75da23e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0857992989580d04a4f3930354dd24e520b0ae6e6e5c8e6c4ac1159f4faf79c +size 2786515 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000005.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000005.vtu new file mode 100644 index 000000000..e36b14b79 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abde8f250f78223ee208c945aef4c158f1dc26452cd908ff815690e233cbf91d +size 2787095 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000006.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000006.vtu new file mode 100644 index 000000000..e81782435 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:060680e636c855bf212137a608c2665b1b0e7c6dc26ed85d50c8b73c90b9c681 +size 2787430 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000007.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000007.vtu new file mode 100644 index 000000000..abcdad879 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38cddc321f7fc4cc1d24168086527abb5c736ff74d08952a491cd49a1318c040 +size 2787815 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000008.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000008.vtu new file mode 100644 index 000000000..1ad7f8c3d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c95e644e7a38f4c95be83ca2de49651ee84c42cbeb6b737e09b553aca05b2b59 +size 2787787 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000009.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000009.vtu new file mode 100644 index 000000000..ee5b01998 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf5715f664cf2a062c99606194bed3847a6ec3f0f59c1bda0d7440a44ca864e4 +size 2787747 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000010.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000010.vtu new file mode 100644 index 000000000..ebc50ec57 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:188e7f89b23589a730f4aaa790788b20a737789f85c0107bc742270524cc1bb4 +size 2787830 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000011.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000011.vtu new file mode 100644 index 000000000..fd77231d4 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c28041142b1ec6d34e3fb7ef2f92e2a3ee8e436c9af1e8eba2618b9aeb3ac0e6 +size 2787875 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000012.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000012.vtu new file mode 100644 index 000000000..8e49a8cee --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62a97ed09e8cd47067cbd5763643c86237f1d82af97fa9255e188b6752698382 +size 2787591 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000013.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000013.vtu new file mode 100644 index 000000000..bda4e478d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b00bcf9644c7da0ddf4174285ac3b07cdc95b904b411ec1d00565f03809c778 +size 2787595 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000014.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000014.vtu new file mode 100644 index 000000000..f511519c5 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1df6f7e0727940719273ebc35caec2546807e7c95558279f1df72b1d4f08a68e +size 2787455 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000015.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000015.vtu new file mode 100644 index 000000000..46f00e280 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ddb9d51f8f690ab16b65ac7134852e88c5ae67b8038018784a389555b908cc8 +size 2787340 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000016.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000016.vtu new file mode 100644 index 000000000..99bdbc139 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e240c5378ebc51e8e569b9ca29801324c587536ccc897d43fc1ca20e0f2651f7 +size 2787100 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000017.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000017.vtu new file mode 100644 index 000000000..bfe628340 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57ff0b16069a36a384e20fd263f67b8bd500d7d8a06d8a340ff2c267e51f3898 +size 2787080 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000018.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000018.vtu new file mode 100644 index 000000000..0aead8b50 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12ad84ae8e2855debae73521780eb6cf0614ec21864ed6e6a817ce79acb4ff85 +size 2786908 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000019.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000019.vtu new file mode 100644 index 000000000..5b64c9f33 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39491b983f91894c69baaa51f7bea348f08eb8763eb7b5400773b0a1b8382871 +size 2786841 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000020.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000020.vtu new file mode 100644 index 000000000..80aeb148a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2b34c22ef8059fb8a7d93dfa768cc74b94037fea647b25cbee689a287d38365 +size 2786754 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000021.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000021.vtu new file mode 100644 index 000000000..74369c968 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:022a6e245aba1fd3e63fab0495d69c0a104db8348927a797ddffb751a9043b4c +size 2786890 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000022.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000022.vtu new file mode 100644 index 000000000..aed3d45fe --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58e3a4bc020978e9a7b2dd91fe36684adf54ff53b0d6ed196e28a9ad45e8bf1c +size 2786526 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000023.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000023.vtu new file mode 100644 index 000000000..69cf3bcc8 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13ddc782fa0c3c0eab4d6bcd09dfa5fc8c42f5a64a21e6a242b569bbb103daaa +size 2786294 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000024.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000024.vtu new file mode 100644 index 000000000..0dd0e011e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a0e1bd4fa267584fddda9355fbf9b4fc9bd7592ef6fcefa016c8237bfa772b7 +size 2786337 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000025.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000025.vtu new file mode 100644 index 000000000..9c31a8369 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d83d2a5aa20ce04407dd9544cc9bcdf51dada654bf7bf32ab7d82b39c6edc7fd +size 2786070 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000026.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000026.vtu new file mode 100644 index 000000000..fa6054d4e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4727d625a1bb4b3b2772d36484dbdc55179d66161e5d42b7235aa3eac5feef9 +size 2786206 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000027.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000027.vtu new file mode 100644 index 000000000..5f61cda13 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d5d3b47101504dc8d08a07c9a44918b52443bee7607ffcf2808b113bcaf91fa +size 2785926 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000028.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000028.vtu new file mode 100644 index 000000000..792ae3054 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6477241046bacd2e0b93c304ede8f27603ed8b7f52bc87e804d03bcf6e2c2d4 +size 2785661 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000029.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000029.vtu new file mode 100644 index 000000000..1155b781e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67e6f73175964f1de699edd0d96eaf65136a485db290e5d97cf2aa9d13a4be08 +size 2785483 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000030.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000030.vtu new file mode 100644 index 000000000..2866abbf8 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8238e1c8d815191ad0c68bef7a5308c801ded37236c460edc990636f528abcc9 +size 2785264 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000031.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000031.vtu new file mode 100644 index 000000000..7704773b5 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e46bcb8d395f83f0bcecfac25882a5934e86643825ca3af05eb44c19b7574ad1 +size 2785189 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000032.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000032.vtu new file mode 100644 index 000000000..deb1ebce0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74e14d4a6d45c4bc03b5d84f4a7cd7fff6068cabb212b8b4a03842623989588c +size 2784952 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000033.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000033.vtu new file mode 100644 index 000000000..3ba3915b5 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a15908beec1e7291ad3d7a2d66878f19387d90691ebfe662677e77f08083438 +size 2784537 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000034.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000034.vtu new file mode 100644 index 000000000..c92d1de52 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85192118a4b6968a6efb769d8bb3fb7d89ae07d187c37f080c20085c399540fb +size 2784425 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000035.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000035.vtu new file mode 100644 index 000000000..cd58a0203 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d12252ad0d2cc93deb300f7c5abd6708b0b5a87ec10f842ea1016bd12b5312a +size 2784229 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000036.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000036.vtu new file mode 100644 index 000000000..a1920331a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0518ac2919a33ac9d66311c06b1065390e56c05457c6075cdd657b6b3826a03 +size 2783835 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000037.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000037.vtu new file mode 100644 index 000000000..cb64851ba --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98c225bd3a538289fde730f066f7c4c6d7230a6094047c319cfa134694f5a6b3 +size 2783637 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000038.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000038.vtu new file mode 100644 index 000000000..99bbcae3b --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4d3e44ed71bb92999501f6bdad0c7150caa9899ecab419e2a17945b90e14ed3 +size 2783569 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000039.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000039.vtu new file mode 100644 index 000000000..d9ebd825b --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e097ac766cc73ddb27630427af179c6e0decc08e02112575641d2b5ee92656a7 +size 2783394 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000040.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000040.vtu new file mode 100644 index 000000000..1800185ce --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d312a9d6d460ceff18db52bef0b9479900d6758bf8abd8ecbe624ee01031dc62 +size 2783185 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000041.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000041.vtu new file mode 100644 index 000000000..f2dac34af --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a98b199211f792a7648cca23204f7b0dfd80ccda50a597e2329394985b83992 +size 2783075 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000042.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000042.vtu new file mode 100644 index 000000000..26ffe4d0e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db8a2dfde7b587bd20e06dec6353d4ca8709dc70d5a1c07cee6520fb6b373e78 +size 2782954 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000043.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000043.vtu new file mode 100644 index 000000000..b434db735 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71b3d2049929748d32683c35e9164741158fce2a7f541844bb0356d2c5aa8fd2 +size 2782957 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000044.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000044.vtu new file mode 100644 index 000000000..33d9c3a36 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd4ba4326334dacc2fbc4f3b0bb2043c0a1482586d0cdef6d5a3ae795e34678b +size 2783061 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000045.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000045.vtu new file mode 100644 index 000000000..89dff45f6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b039e9f69836fb02f3950ce9b2853ed1774dfde6aed6c2a4972077ea27033227 +size 2782857 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000046.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000046.vtu new file mode 100644 index 000000000..65491f6f0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d063ffcf13923737f0bbd67ae8474176f94aeff38312078447b3fca9f9b02013 +size 2782849 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000047.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000047.vtu new file mode 100644 index 000000000..f70756237 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1645290558120cbc880cbe116d3bc6067b1d5de94f1b3f2ae95d19eedceee7ce +size 2782920 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000048.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000048.vtu new file mode 100644 index 000000000..437c46386 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4b3d2e3b3335f5b10e72b2b4b0167a7769648d89295977e9fe08f5b33858414 +size 2782713 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000049.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000049.vtu new file mode 100644 index 000000000..27dfbc023 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eb52b2f5c248b853360428967485d43afbf3262ac401f24d078409ad796fd75 +size 2782814 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000050.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000050.vtu new file mode 100644 index 000000000..f04ecf3cb --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:771083153ec54335103c02e9532ed0b5bb4f4014c61af4467653102ba07d8f21 +size 2782737 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000051.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000051.vtu new file mode 100644 index 000000000..3dcd51a84 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c94c072c7e2c6aece7ae3dd1e994af71400dd1fc3e406b31766157c6017e833 +size 2782689 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000052.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000052.vtu new file mode 100644 index 000000000..a9c599c60 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8edc1e3aea3db0728fe4680846045f584da033cb192d61cc75ffa033c1ec7cfa +size 2782650 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000053.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000053.vtu new file mode 100644 index 000000000..bb3b74aa2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aeaaefc5c69e0dcc4d35b5df6c8dd0d91e324534fb6aa3ff7b8b00f80325d9a +size 2782576 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000054.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000054.vtu new file mode 100644 index 000000000..4805b64a6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a46199a94c613b9c369593dc185eda4717b9c21d8f8379fff61a9b63acd0e721 +size 2782527 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000055.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000055.vtu new file mode 100644 index 000000000..3f11776f7 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d382f266bcc0a5f958700affcbc5d885e099b9274904cd59e1771d3ececd2e6c +size 2782587 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000056.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000056.vtu new file mode 100644 index 000000000..75e0dcbf2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fda42ba15f463c4f04269f862265f396bfa0ee5eaef07239e1c6525adae2892 +size 2782623 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000057.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000057.vtu new file mode 100644 index 000000000..86b2fee0f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89325d4bf22d583513e4cdf2605385726a0e1479f598d08e6703c7849a76c75d +size 2782557 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000058.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000058.vtu new file mode 100644 index 000000000..a7ee5f11e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0151bc5d6b62f193eb40b58e97561c1a3e30dcfcf5d2b9bd3fa64bcabfbacd4d +size 2782718 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000059.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000059.vtu new file mode 100644 index 000000000..fa6d04167 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05684cfd449e4b803b38518924019c63437352f87f8741468ac1937a191af072 +size 2782535 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000060.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000060.vtu new file mode 100644 index 000000000..961840243 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:116117962cbb7e5481cb9204d2a9c2903bb2331cf694b8d33b0e3f8019034468 +size 2782474 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000061.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000061.vtu new file mode 100644 index 000000000..d74f9cd99 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91b489ab695539b24e3fc9e917e1855b9a942e1660737f9cfd2a416e6c45b75d +size 2782403 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000062.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000062.vtu new file mode 100644 index 000000000..0c532c229 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e53583324f18d038e57166d2e44f1d0c9d715cbe9facb54a2fae8919e8022af +size 2782515 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000063.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000063.vtu new file mode 100644 index 000000000..f03da1b01 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bb42184a68a1e029fd3adb591d139e6fae70bc83472cc1c7a28f906f9fa3129 +size 2782375 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000064.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000064.vtu new file mode 100644 index 000000000..5073f0dac --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa54e34523d9d3e093629bcecc8ee643d02f143107550848e5747920fcd27f80 +size 2782572 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000065.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000065.vtu new file mode 100644 index 000000000..3271e78c1 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:370cf9f7d63b3eae4a062c59da9cb719e3295f8d6526393da60edacee111802a +size 2782393 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000066.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000066.vtu new file mode 100644 index 000000000..87d603be0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e8d2be6ec96b2c975b6d53250635249c2c8f11c45c0ec94ad4799e06dcea3f +size 2782336 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000067.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000067.vtu new file mode 100644 index 000000000..dec8f0d85 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a5141760c03ea8cb819555b0b50f5e2ad6f21c4c55fa315db79abba6ddcfcf5 +size 2782343 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000068.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000068.vtu new file mode 100644 index 000000000..9f8e68f4d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ced761f9e52be8036e8c5febce554beb61fff0eeebcefe279a46b4c8924e9413 +size 2782249 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000069.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000069.vtu new file mode 100644 index 000000000..a9a29cb1e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cbb6f781487ee8c3951a4049bd5c3a071e2e21e3277152be4def014569c76a2 +size 2782343 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000070.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000070.vtu new file mode 100644 index 000000000..aae3cbb2d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23b78f5ffcda2ba8bf4e0c1e21dc2cc9b3335274246439d0dcf1c24f311877f8 +size 2782224 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000071.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000071.vtu new file mode 100644 index 000000000..28a2a6a95 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:937a5e9d8d8d21fadf9106ebaa18e8a4e5a3d9c75489b36942068ce504ef7995 +size 2782492 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000072.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000072.vtu new file mode 100644 index 000000000..d82ebcfe3 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:199a2f6179bce62b5c08fe35ff39194964a3c10872ad78350ea9ceba541fdc8e +size 2782379 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000073.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000073.vtu new file mode 100644 index 000000000..355e543f0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e06a50877ef3f0ad4987e10f5b785814bd8e78b4a9ad3da83904fb0cb639006c +size 2782427 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000074.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000074.vtu new file mode 100644 index 000000000..3fac96f77 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cd438b75061766435c08f31045e0385a69c56335ae9cbef6e0958251ed023af +size 2782442 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000075.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000075.vtu new file mode 100644 index 000000000..77162a425 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d958d14608e7371d1d7306ea9161cf77534135125ec330ecf7656c11257cfb80 +size 2782335 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000076.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000076.vtu new file mode 100644 index 000000000..64499e69d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e0864526ef4b72320bcbf1f90b68fe33d685f966c5fc1a71540eed819607d67 +size 2782499 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000077.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000077.vtu new file mode 100644 index 000000000..79093dee0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b449f440695de13b59dbb0ebe651d43a1fb87d763241c6d864a5e2c05c7ad17 +size 2782335 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000078.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000078.vtu new file mode 100644 index 000000000..133a1d3a0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfbcce111c3f8ce616ffb5383d6a1306f7a992e4600c63777a6afde91d586dfe +size 2782310 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000079.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000079.vtu new file mode 100644 index 000000000..caf6d514a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc83e99d0db915953016eee13a220f01d0941f3df2ebe1b1ff2ce767a728a215 +size 2782392 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000080.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000080.vtu new file mode 100644 index 000000000..c917a64e7 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e3604256ebadc44117812cf4106b534ef1d4481caa8a8085074af4fd869d964 +size 2782195 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000081.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000081.vtu new file mode 100644 index 000000000..98ee9f5ae --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:789e189f8a8adf1fa02cdcba5e5d1876da59cf191086be1395d4a6682137eb07 +size 2782353 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000082.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000082.vtu new file mode 100644 index 000000000..8be244d56 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c62c9af97e1c81bf03789b4fb193c1e37aeaaf95328d40e8559955f2d4894098 +size 2782343 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000083.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000083.vtu new file mode 100644 index 000000000..5e1bee1b9 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5a1e7cb8559f689868ae2ed519b741c95a349ca15654502c78fdeef49668cb8 +size 2782283 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000084.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000084.vtu new file mode 100644 index 000000000..26da5cadf --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c48087f5b1ee11ba3d6759ca7eb422183c50f5da1f8403011217beb728e5198c +size 2782216 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000085.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000085.vtu new file mode 100644 index 000000000..29ab094e6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0d16779a9298b4e83849c95f067516e0881bd3148b800cc96148ca2a954a084 +size 2782306 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000086.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000086.vtu new file mode 100644 index 000000000..db2d8e6ab --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a6687f543a5f55c5cfc38b02f885f91622ca5cdd7d89d7b6d83e569d9f406a4 +size 2782221 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000087.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000087.vtu new file mode 100644 index 000000000..53518c40b --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a507c6c54df979178b549dc1c8df8f9e8c3371cf33bc8cc811f9aab1f9f607c0 +size 2782185 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000088.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000088.vtu new file mode 100644 index 000000000..fb60cc44e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c23cb987a0367f3cc856f703aa569812cccd1c65fda8b1fc51ddcddb8ea3b39f +size 2782069 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000089.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000089.vtu new file mode 100644 index 000000000..b3582be52 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cb5944aa55ca8b6e8b78765738cff0ddbffd6a623df66d021f610dc296c73da +size 2782167 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000090.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000090.vtu new file mode 100644 index 000000000..13c82f141 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d08329c0715fd3760bb581b852f22d3066750ea62fe9384e8eab5c944028b0e9 +size 2782337 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000091.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000091.vtu new file mode 100644 index 000000000..cc42d7ab9 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d81ebf49bbc788caa933080660cf90bbc92167d83c385ec4a92413f822354d9e +size 2782118 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000092.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000092.vtu new file mode 100644 index 000000000..f5490b4b0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd8d22fe37860c0f44bfadf8190a820eee8a7fd156a0ee4574209f96cd4fbc72 +size 2782086 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000093.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000093.vtu new file mode 100644 index 000000000..e0b9d3ac3 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54cccfaa8cac51e2c904f50c3d4e4cf8964a4aeb123551c1b2887745d007c302 +size 2782086 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000094.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000094.vtu new file mode 100644 index 000000000..5a71875ff --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d324e8d6de43d6ca29bd1c703f9956be860b72f5a3ea6ce55e2a4a98a6d56110 +size 2782355 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000095.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000095.vtu new file mode 100644 index 000000000..d5cbcd6e6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac2ebd6071c65cffd58551fbdbeee453983e8ef676f3f3f092b9bba1f82f7cb2 +size 2782315 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000096.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000096.vtu new file mode 100644 index 000000000..e0c571b5e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbfcee6dab4a1042014a66b88295671548e3c48ddf221452b3770f6cb6341395 +size 2782410 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000097.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000097.vtu new file mode 100644 index 000000000..d9951852b --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:243b4c29dda682417d327995322f2469e6ee2eed2d406d56a6a6b0961d5db8af +size 2782282 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000098.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000098.vtu new file mode 100644 index 000000000..5e00e9158 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1b724dbce55aadcab9f165ee3793cca3d6d5bb62b7e3e9b58503098c517f6d9 +size 2782345 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000099.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000099.vtu new file mode 100644 index 000000000..aceb04776 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d7c27ca2ed9c9d7ad698bedab5de96bcd297778e60a3dda19a9898e27538047 +size 2782457 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000100.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000100.vtu new file mode 100644 index 000000000..a4f4066f9 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6af1bdcafeacbac23266626a56ef7be4120a21ed908bc9c57038acd8d1ddaf2 +size 2782307 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000101.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000101.vtu new file mode 100644 index 000000000..167ea6e1d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c26775396cc7b574fa2bd22435585b6cd60f5133398d659a02ee6983eefc267a +size 2782507 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000102.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000102.vtu new file mode 100644 index 000000000..d358a1eb4 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d514f3c390b2b94cfc39f641f3968360b397a4f33a5b905ac2e478b98644359a +size 2782341 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000103.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000103.vtu new file mode 100644 index 000000000..7825e8e09 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b113261fa3c589b3139c2703dad540d351a0aefc7cb84ad8056eeba22438232d +size 2782564 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000104.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000104.vtu new file mode 100644 index 000000000..1e19437aa --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7edd4b9de5149779a55382ed6ed8e259d3ac5850133cf384065abfc66e2ab958 +size 2782474 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000105.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000105.vtu new file mode 100644 index 000000000..c7825b524 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ac62017a3710bfe80869d5f5b5037017c8b43d50830e00ff6620a482fd3159 +size 2782519 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000106.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000106.vtu new file mode 100644 index 000000000..896a7a57e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:552c82e8a413ef01ee2847de9cb6bcd3eaa84aabd064cb41106d9cb87b06cfba +size 2782655 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000107.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000107.vtu new file mode 100644 index 000000000..176ce1cee --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94bf66a4e2c32687a83b7956ea021f38fda2f7c8f9b1e2e01362280a38cb4cdd +size 2782474 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000108.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000108.vtu new file mode 100644 index 000000000..286c66aa4 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82e606b29ecf950f1ec5086877bae20c63a5286dcdb167cc9f5b65dd1f0307cc +size 2782783 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000109.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000109.vtu new file mode 100644 index 000000000..ee5e4de3c --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98175790b10079714944f736e000344ab561c0fe6edd7a40ed88ae27352dbe22 +size 2782725 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000110.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000110.vtu new file mode 100644 index 000000000..8ba5b978a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08fac5858b28624fda0676ba2eca9dc6d6dd2182a52c8c27ea8106c2b171ea0a +size 2782767 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000111.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000111.vtu new file mode 100644 index 000000000..eab8a52b2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a4761b855bfdf9267fa97b8e3256dea3177d111699cbb33695b9d22b883cfd6 +size 2782949 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000112.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000112.vtu new file mode 100644 index 000000000..72057320d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4f9a601f51af1d00f906d6ad4b96f16c71fbb7af08b630e8920d342d62b951c +size 2782923 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000113.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000113.vtu new file mode 100644 index 000000000..a9adb8778 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a52264189f0a86b29488e6575443dd27ac7cdef28b1beae5002032a58d1ebd3 +size 2782942 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000114.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000114.vtu new file mode 100644 index 000000000..78ee699c2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:223aee3ae48b0b3f8f8a76ba70cc24eb086866db07d9047d9986e93d7c400c5f +size 2782939 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000115.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000115.vtu new file mode 100644 index 000000000..0d21f6b62 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:287ab85295c5db670a3db5a1738a2c2d6b815af46f12618f3c322333ebc523c4 +size 2783087 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000116.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000116.vtu new file mode 100644 index 000000000..1d900c264 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfd67c1a8494a68db70a6623e8fcd68e47048d59ef14bbc37933428516dc067d +size 2782947 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000117.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000117.vtu new file mode 100644 index 000000000..d81f52275 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7df7b6daadb47827370226b1109c58a778f30310f7828a989ac8f5b82f52f37 +size 2783101 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000118.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000118.vtu new file mode 100644 index 000000000..143e082df --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dc0ef542d4e7e08f2df7fbeffbd6ed6e0b110ce7b19d3e9e4332aa5f90e46c0 +size 2782907 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000119.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000119.vtu new file mode 100644 index 000000000..53ce2e1f6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a094914f7993db95582d591435404a18eaebbe6e572098cb01ee87fe7f7c1e79 +size 2782859 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000120.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000120.vtu new file mode 100644 index 000000000..ed667f6b2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f634601b9f3820de4dba0bc41bffe34a0c668616c6b7ab01a130c0f9f0671bf +size 2782795 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000121.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000121.vtu new file mode 100644 index 000000000..21d199141 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d04ccbee8dacc7a9e57879a82d0e8952448c72d5c7b33e504966ae91d6b92d6 +size 2782755 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000122.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000122.vtu new file mode 100644 index 000000000..e96dfcc38 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:300613d1a4e58cb2e7b43d5caf220ef8342b899043375a0ad6d06c2f119f7a38 +size 2782678 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000123.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000123.vtu new file mode 100644 index 000000000..9535ca5a0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78e6ff3b03335a52474a78989aa2959db5f1f3991f3e7f429676a397980ad987 +size 2782575 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000124.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000124.vtu new file mode 100644 index 000000000..d3333746f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9074499d6d806985fbb67acdb6961906f59f14d4b80cfb07e4cee4fc87717727 +size 2782622 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000125.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000125.vtu new file mode 100644 index 000000000..6d5792296 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f148d40b26cb9d85e4eb7a95eb212b2bdb395b17b65525d466bb2e9e0bb88ada +size 2782563 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000126.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000126.vtu new file mode 100644 index 000000000..65e70e492 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29f9aae85a1c3c660098edf55c5ffda12cc634a70fa2a7fb8eeab70c6db04f4a +size 2782499 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000127.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000127.vtu new file mode 100644 index 000000000..4f330881d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0569f2ea5b8112f76eb15cc0b7f224ca2201cf2229a432634654b39f0fdf476c +size 2782535 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000128.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000128.vtu new file mode 100644 index 000000000..fdfd2d39d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04a013a310ee6fc5ce81771758ffbc4ac1d78c3d2efad8896b1517c11f66ff39 +size 2782551 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000129.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000129.vtu new file mode 100644 index 000000000..2cff54bac --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b333a0fa55329b16c17a29b566eec831d7fe20c5f4d31ca41066fd4d2084d0e8 +size 2782503 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000130.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000130.vtu new file mode 100644 index 000000000..2c0e1509f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e76d277d1e166ac12cd4d704311306da707c9b319706d517394c2cf2b5e2d55 +size 2782526 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000131.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000131.vtu new file mode 100644 index 000000000..9bd9caadb --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:128a9694bfd4311c623a7dbe39c73e1142baf18ef47efe68c7c0d0c1ff74460d +size 2782758 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000132.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000132.vtu new file mode 100644 index 000000000..4903d9c0f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19088a37da12e15a932464e7e5c6a5cf0eab3f76ced480b23c5129178a77804e +size 2782663 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000133.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000133.vtu new file mode 100644 index 000000000..8e4b104f0 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64e2a45933dda154896b1adaa205b2e7eacd74c400e8d843a2cad30640ac064d +size 2782843 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000134.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000134.vtu new file mode 100644 index 000000000..8fecb2c71 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d529f3a0e3cb6f6c08c42775f74bd801e1dc6290a72e98c2001a463c9a73aed +size 2782843 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000135.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000135.vtu new file mode 100644 index 000000000..e09055091 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:003c07e637e48fbed6d6ef985640dd9251791491719fc02574fd1971cf67cb1d +size 2782926 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000136.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000136.vtu new file mode 100644 index 000000000..0f6c95007 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44a089aab516346f5377620c84b810c4c5f4417eb6296b27457847e3f520e03a +size 2782913 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000137.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000137.vtu new file mode 100644 index 000000000..cecf2623c --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:462ab79c0b3535e477c3b4f3be7272550b8c146471958b65fa76b4616b913fa6 +size 2783067 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000138.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000138.vtu new file mode 100644 index 000000000..a7851cda1 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:252224937e4fb8c7b4de070c2ef992b4b0e0d368b8cf04240729c89a290e41a3 +size 2783205 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000139.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000139.vtu new file mode 100644 index 000000000..b8397f965 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58660ac8521d72538416c9cc1c8b3ad370c928847b0faeea42aae86de0fa235e +size 2783247 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000140.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000140.vtu new file mode 100644 index 000000000..a3ab928a5 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09bb034ee7f7f959b999706aa5009e45935d6bd556d9447b1aef968df9e56d6f +size 2783395 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000141.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000141.vtu new file mode 100644 index 000000000..b4a65ebee --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b710fea96987fba1af9899fbe8cff937a7a4d276056ccba51769a8c5ca5d1d9b +size 2783453 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000142.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000142.vtu new file mode 100644 index 000000000..36b7fb27e --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29c8416c5e4b12a97f2128df744ea0c2fd7a01b58205ec175d83f8bbb3e59cd2 +size 2783384 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000143.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000143.vtu new file mode 100644 index 000000000..7c860efb5 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3f40ce5b9b00636f0f759a349e2dba5bb1be93b4e5d2a5e70dffad554626ed +size 2783502 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000144.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000144.vtu new file mode 100644 index 000000000..6a103f548 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25ae257f6134413343372ea508ea77826ba364f8c7f3908e7a3f3f97883875ef +size 2783670 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000145.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000145.vtu new file mode 100644 index 000000000..343e49416 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:981a23ca27bfe1be988eed0247a8335161e44d11ed40ebcbc6bb179904f3e65d +size 2783642 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000146.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000146.vtu new file mode 100644 index 000000000..3a3ab0ae2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6393a7a03daa40993044fdaabeece180537c230450b25231a02d368db2890d7 +size 2783750 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000147.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000147.vtu new file mode 100644 index 000000000..970f582b3 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adb19d1eb5e9f0f9a3a5c8a4461cf74420b1a7698cf55ed188f3157d4a64bd20 +size 2783816 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000148.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000148.vtu new file mode 100644 index 000000000..a93d1f164 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d637d4aeb58102ad3dbbc50dceacdf785812b0adbff1b7cbf0ca951fb3adb68 +size 2783910 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000149.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000149.vtu new file mode 100644 index 000000000..c7102d260 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a843b2508a7b5f806628ed185fa19cea996c03f8dad4fc9de5b4910dbc0cdd0c +size 2783862 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000150.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000150.vtu new file mode 100644 index 000000000..6a2bb96e6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fba72b96d1ccec9f8e6bdee3e164d2e936f903525231ba9eceb1b432128f08be +size 2783864 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000151.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000151.vtu new file mode 100644 index 000000000..78a216363 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:736683419bd852f1e448940c0e88cacfc114381533f7f277b7d3189277247ada +size 2784068 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000152.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000152.vtu new file mode 100644 index 000000000..9d8af13e7 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f2090203902ca78bedd9e59f956ac23a35c0093362129512928a33f50b2ef1 +size 2784147 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000153.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000153.vtu new file mode 100644 index 000000000..2514fe4ae --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b52fb48d990f6784296cef644494577cce7092df490379616b6eba1d45f3867 +size 2783968 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000154.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000154.vtu new file mode 100644 index 000000000..4680e441a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75b9a2ba3912f593d1c1dad8b0f2ab7a4f576c8454a62dd1661336ddc604e69 +size 2783865 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000155.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000155.vtu new file mode 100644 index 000000000..fd7bf177f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:722d578416172920f27b46674438844a5e2ca9785a6781607b01bb03dc0a817d +size 2783964 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000156.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000156.vtu new file mode 100644 index 000000000..c25fd0132 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3172ce4f01db28ad74e2e589f661d8a1555faf76a98b5efbec2907f6fb29b0f9 +size 2784185 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000157.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000157.vtu new file mode 100644 index 000000000..1830a5d36 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d97a23ec4c34ab6f261519f5b9055f348c686dcbe6af87fed932bcd9b9a5808 +size 2783966 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000158.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000158.vtu new file mode 100644 index 000000000..ce75d9ea6 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a24dac89f8938132d282ed3503e4003a2ef91f20b5a1377a8b669c547cdaed5d +size 2784258 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000159.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000159.vtu new file mode 100644 index 000000000..3f2eb87c4 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0053b963dc205dc1fb28c9b0504ca50d9ba719927a1b37747a72d90b81356598 +size 2784072 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000160.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000160.vtu new file mode 100644 index 000000000..1160a3e2c --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6d662c590f7719edc9546a7e5db4e129a5d4231b0894709cda8f238a177bcad +size 2784079 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000161.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000161.vtu new file mode 100644 index 000000000..ac6eed796 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f6059bbd618ae97048062dbe4b8919d7146d2647d6d3456b931e95991b2a8ba +size 2784045 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000162.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000162.vtu new file mode 100644 index 000000000..ab870d17b --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddabea3e3ae005e44536b46f863f3f15f73053cfb3f2e0be2e92012b974942c6 +size 2784287 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000163.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000163.vtu new file mode 100644 index 000000000..694281896 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:007ae4d4acd06e409428205db1c04f727a63758a2c1dd23378653f17983d2455 +size 2784161 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000164.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000164.vtu new file mode 100644 index 000000000..2e5c1d178 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a1cdeeb4c6c60dcc3e70f6490ff06663cde993baabfe63b79635e8b81f66308 +size 2784195 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000165.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000165.vtu new file mode 100644 index 000000000..1ebf07105 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9633e1d30c89942c20e3ee3c3aa71b1012f6a8aba22373429d3ed4b7771e7b6f +size 2784037 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000166.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000166.vtu new file mode 100644 index 000000000..64fb7fbcc --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7d4f391f28c88ab2aa260c7fc419c227e1341c37f104718992fa4583de31c4b +size 2784068 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000167.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000167.vtu new file mode 100644 index 000000000..32acdfa76 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94e48e3464d0b4b0c7e8638212530187bffb75004d722bdff715d02f3a6f5e1a +size 2783983 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000168.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000168.vtu new file mode 100644 index 000000000..498c19366 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b09cf60bc9105780b847e93af753add5b15e31b4129849087c0733d4836c6285 +size 2783937 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000169.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000169.vtu new file mode 100644 index 000000000..ab2a93fa2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76f015c3ec42b8b4a6a0426bf617b0e4e3e9e5898dff8299dd9e1d114a1706c9 +size 2783963 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000170.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000170.vtu new file mode 100644 index 000000000..622084452 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc9012bcfe44016e83ab8c4805c8f482a1107e5cac759e523c6377e574999d8c +size 2784034 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000171.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000171.vtu new file mode 100644 index 000000000..ac3c490e2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58645ed72c2e60b1dfc5e691e0ad1488cceb69e4ca363c39db9e51951e9857c9 +size 2783975 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000172.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000172.vtu new file mode 100644 index 000000000..f3f960172 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dbfe40f27e6f3684a82002d3f52583addaf0181983eb2d20fef88e26c15a643 +size 2784065 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000173.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000173.vtu new file mode 100644 index 000000000..210669a46 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ebb9228a12d871fadea664d0f365f3593a313506552f22e482310f5c490f493 +size 2783819 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000174.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000174.vtu new file mode 100644 index 000000000..3cf7e569a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:830055d57923b847bd5c9b4c051f6ea30d9953a21315d8546baa71c34fa37d1d +size 2783842 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000175.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000175.vtu new file mode 100644 index 000000000..3d550d725 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:246033b9a0f9593987d1b5c37b33b78ccc468dcaf17cbcfc01972fdece560cef +size 2783867 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000176.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000176.vtu new file mode 100644 index 000000000..5d239fdea --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccf706990eb0579922900c939883bce3b614b65fe8cd3342fad14f50978e5d05 +size 2783562 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000177.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000177.vtu new file mode 100644 index 000000000..cd6f62ae8 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48d9fff7685fe9985fc128d21117f38d902e3c1d2a6be9826d1db892927d014a +size 2783582 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000178.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000178.vtu new file mode 100644 index 000000000..bec060a48 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10a4424d377e4b47aa7b09719a6fffc00b802628e1884ba67a41c0a0c9cb849d +size 2783709 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000179.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000179.vtu new file mode 100644 index 000000000..c5464bbda --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e908f92cd8ed0ca897c9b4376cd54b84c87241dab70e7043bf65d1b01844daac +size 2783670 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000180.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000180.vtu new file mode 100644 index 000000000..f6db268bb --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5989d77ca71224b8785fa7c5139ff669e9b149e121fe0992d6b0f0a31733f44 +size 2783583 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000181.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000181.vtu new file mode 100644 index 000000000..fdda05a44 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0dc57855d458cfa5a564c68d7512fa96d427d5929bd121e5ca28f420faef80e +size 2783507 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000182.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000182.vtu new file mode 100644 index 000000000..c13a1ada2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9830bc5e9a0729dbc44e2f7bacdc962b716e07de1d5abb4627c95f8650216f09 +size 2783543 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000183.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000183.vtu new file mode 100644 index 000000000..c04444244 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeb04f0bdc31209821487bef3980213218d088eb70d4f03c6a7d03b63d35b08a +size 2783176 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000184.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000184.vtu new file mode 100644 index 000000000..53290ebbc --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7a1295693fc018efc64194e8f6bef9cbadc6255e689db3c253c701ebc900464 +size 2783241 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000185.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000185.vtu new file mode 100644 index 000000000..5138d9f00 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7fce3a9619fe68bce6234d827376a34c18aa6de51cdaab5998f6a2c901f501a +size 2783211 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000186.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000186.vtu new file mode 100644 index 000000000..1aef2a399 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65c98ce92dbfe233c33ce060b7dfb53027226d27136226f2b2b1bfa415029f19 +size 2782875 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000187.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000187.vtu new file mode 100644 index 000000000..c9960ca7c --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19528f64cf7a65466f8a253bff2b12332ddc0a70101e6b1164184ee473d9d953 +size 2782781 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000188.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000188.vtu new file mode 100644 index 000000000..1fc286414 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:157d73513d798d4e8b7a8a98f57d6001cac4b666bf1fd6b1c66fb67bbd099f3b +size 2782943 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000189.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000189.vtu new file mode 100644 index 000000000..9de5b2081 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12370338cd569172556b64b54056af323414138f213e40b6f4f69e8da70e3bfa +size 2782834 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000190.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000190.vtu new file mode 100644 index 000000000..eab915484 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a38df2ddd228fe2dbfee7a4b5fe07edb61593147d74ff4b8f71cdeac234504c3 +size 2782554 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000191.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000191.vtu new file mode 100644 index 000000000..6d836d599 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f3fe7b46c4c5320250afa7eb2fa3e07baea597a11ef9476ff8eeb8b64fddab8 +size 2782527 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000192.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000192.vtu new file mode 100644 index 000000000..ce1885d2a --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a5bb7f054d5097c4351e1092a98ed00abe878de7fc9ba2849d57fecf2956a97 +size 2782367 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000193.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000193.vtu new file mode 100644 index 000000000..7b937332d --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:264e6ff9b8d2e42bb7db18605f465bf1e9ab563a5db057a5403183aa6d8b8bd7 +size 2782487 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000194.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000194.vtu new file mode 100644 index 000000000..dd8c27b2c --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cb20982485d8dc49541452d4cb95e192ffaf93722c54ac6fb7b7c3f86f3d8dc +size 2782351 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000195.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000195.vtu new file mode 100644 index 000000000..7c931522f --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b46d694e0107601cc131f1cac5c3c92e7a357996360dea7541a159ee580db191 +size 2782375 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000196.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000196.vtu new file mode 100644 index 000000000..1df47a665 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c77a18ba24c2b88013049bbb90541fa745b67c100da39848914a9251b448cdb +size 2782154 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000197.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000197.vtu new file mode 100644 index 000000000..74ea14ae2 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.d/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e41b2a8a1a7117e817e88545d17eaa937016821a65a3f1df934f52b4089cb59e +size 2782165 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.series b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.series new file mode 100644 index 000000000..bc3808e61 --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-steps.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:836904ddd3c4f93f4631590456ad8a668bfe9480332e88da98f759b3a7f45cd3 +size 32996 diff --git a/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision.vtu b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision.vtu new file mode 100644 index 000000000..0f5846b3c --- /dev/null +++ b/exp/2026/05/06/toy/data/21-smas-prestrain-stable-neo-hookean-muscle-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d03ead898bc2df63f0f601654a3d3a144bb640014c95055dca6efe9eaa0591c2 +size 1931450 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-bottom.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-bottom.png new file mode 100644 index 000000000..052e7e848 --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be475f86e150130908eb04c6e88103a7f09ea6575d4f795822f3e21ae8305781 +size 569115 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-comparison-up.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-comparison-up.png new file mode 100644 index 000000000..3037481f4 --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-comparison-up.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29a44af268d796997c86c5963026677116223ee784014efc711baace5ef1e29b +size 396949 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-top.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-top.png new file mode 100644 index 000000000..e0cdf4686 --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0498a1fb469ffc2168b30ec66ecb6580094819eab5f803a99ca4c04f32fd1a9 +size 270734 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-up.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-up.png new file mode 100644 index 000000000..1a500db31 --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-collision-up.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741b0f4c29194f746932c71a3fa1c69169038c83fa7259dc3a1b70d5f3b76619 +size 217924 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision-bottom.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision-bottom.png new file mode 100644 index 000000000..951b7a3ee --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74f7006e6dc3ca24d11f916927e1f7a48f84bb8a1f97bf664159264a7d8bd7d2 +size 600481 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision-top.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision-top.png new file mode 100644 index 000000000..3ad486e61 --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8132730fd0418243a03ac541446ecf5506d0bcc6e56816a4c50822f72637c3d2 +size 393637 diff --git a/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision.png b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision.png new file mode 100644 index 000000000..846d81169 --- /dev/null +++ b/exp/2026/05/06/toy/fig/20-ext-force-stable-neo-hookean-no-collision.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c23c4b20f6ab12373d0463a94af846e29b4a28f78f2420604ccd91295053050e +size 393239 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-collision-bottom.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-collision-bottom.png new file mode 100644 index 000000000..c1aef7e36 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-collision-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89a2cf4f2caeceef7d3aea8f48849d95791244139d61b4319316b15da88e20ec +size 413260 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-collision-top.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-collision-top.png new file mode 100644 index 000000000..173c4c46a --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-collision-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0186db259bf9f1f42346d6706469d7e7a1fdf02a4f1658b99e7033eab9ffc1b5 +size 374996 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-actual-decrease.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-actual-decrease.png new file mode 100644 index 000000000..53a991995 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-actual-decrease.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c61aa0e2976f5ea5be68b95b84f17c80dba3970aaa81d38f67d3900f2374cdf1 +size 23053 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-alpha.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-alpha.png new file mode 100644 index 000000000..465ebc466 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-alpha.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb4ba43d6317975c15420e0e644e70d252ab06eed5b61e025430c3562ebf87a0 +size 27959 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-collision-elastic-grad-ratio.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-collision-elastic-grad-ratio.png new file mode 100644 index 000000000..b0e8d27fa --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-collision-elastic-grad-ratio.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a290b53fa815413f9a8f7612946379d38ae5f62dfd76f70a37f6a75d260a2043 +size 13466 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-collision-grad-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-collision-grad-norm.png new file mode 100644 index 000000000..65d853c31 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-collision-grad-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1f2f066bef0a06136ec88dab50591edccd02b79808728abe6e937f3bcf1eb7c +size 14703 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-direction-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-direction-norm.png new file mode 100644 index 000000000..942423e8e --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-direction-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4de2c4316bb7c9262d983d022f3e8d613ec9bdb33213fee64a95f7a639bbe9e +size 22628 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-elastic-grad-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-elastic-grad-norm.png new file mode 100644 index 000000000..71e97dfc8 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-elastic-grad-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae2416ddb4b3c911534b135bc9d949076fc036489ea281e512029c635328fb34 +size 21285 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-grad-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-grad-norm.png new file mode 100644 index 000000000..b38eb2431 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-grad-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d9a0955d44826bef628c82c11ab9db3ccb628653151a728439750d8ca8e98f3 +size 20591 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-hess-damping-factor.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-hess-damping-factor.png new file mode 100644 index 000000000..e8674a606 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-hess-damping-factor.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2445c7aff6be5199b62b47fb5d6e8cbc54a87d02d565770606775d0be58d337d +size 12960 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-hess-diag-mean.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-hess-diag-mean.png new file mode 100644 index 000000000..921875114 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-hess-diag-mean.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d375889ca17fba09662f2fd101f62883daaef1ebc1f7aefd6549512ad2ae9d5 +size 19793 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-line-search-ok.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-line-search-ok.png new file mode 100644 index 000000000..37da507c4 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-line-search-ok.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f98471008de285862ccd1f609c01545b38840c7a7e35ed52e85f75e7254f7c1 +size 16712 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-line-search-steps.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-line-search-steps.png new file mode 100644 index 000000000..a5577c5fb --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-line-search-steps.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7890ae1edbac95c257270439b2287d60b0c1cbab99c5957fbd2767c32198cf7 +size 16105 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-max-displacement.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-max-displacement.png new file mode 100644 index 000000000..7689fcb64 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-max-displacement.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a18872d82cc97225b0d707b6cf9d8fd9e3ebad2840bd63df99e37ed318f3d56 +size 19073 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-max-y.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-max-y.png new file mode 100644 index 000000000..469d92834 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-max-y.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e05611bc7cfc26f21c5fe8e8e82d7ff56d0f7e706af288de5acfdafd01aaffed +size 20091 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-min-y.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-min-y.png new file mode 100644 index 000000000..31f1e23ae --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-min-y.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbd9fb4af8eb0f81889ed69b0bb2ce597fbcc7adfdc4b7157f86725bc650b86f +size 124 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-objective.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-objective.png new file mode 100644 index 000000000..65b89a99e --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-objective.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c6849655a667dd59cfbb6fde5a754cf194d5a1dae8a14870af7e81725f3d3e7 +size 16810 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-relative-grad-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-relative-grad-norm.png new file mode 100644 index 000000000..a126f44c3 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-relative-grad-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f56fdf46e6a123790d14769f6e9a119bd80275e53b247cf196e4dc4c0f2988c8 +size 22479 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-step-max-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-step-max-norm.png new file mode 100644 index 000000000..484adffef --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-step-max-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bd1af30f5b3d6142518cadbb536b02c7cad4e702d30a42b459f129a2aca4575 +size 27941 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-step-norm.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-step-norm.png new file mode 100644 index 000000000..419880d95 --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-metrics-step-norm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4802a510230db5a1062211457075637ad95519c10abb7c021e894990e7b9d839 +size 21433 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-bottom.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-bottom.png new file mode 100644 index 000000000..5e7b77f8d --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdbd3ed0f8a8693def0a65c578017dd22dc67b0788472a8b32582b4e8d941da6 +size 414111 diff --git a/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-top.png b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-top.png new file mode 100644 index 000000000..219ce84fc --- /dev/null +++ b/exp/2026/05/06/toy/fig/21-smas-prestrain-stable-neo-hookean-muscle-no-collision-top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf8121a5095bc2167981c8c907850766f7a588f21e3a1f621c518f022e2f05e6 +size 375696 diff --git a/exp/2026/05/06/toy/src/10-stretched-cylinder.py b/exp/2026/05/06/toy/src/10-stretched-cylinder.py new file mode 100644 index 000000000..9f2437fb1 --- /dev/null +++ b/exp/2026/05/06/toy/src/10-stretched-cylinder.py @@ -0,0 +1,137 @@ +from pathlib import Path + +import jax +import numpy as np +import pyvista as pv +import warp as wp + +from liblaf import cherries, melon + + +class Config(cherries.BaseConfig): + output: Path = cherries.output("10-stretched-cylinder.vtu") + + length: float = 1.0 + radius: float = 0.5 + stretch: float = 1.0 + lr: float = 0.12 + coarsen: bool = False + E: float = 1.0 + nu: float = 0.49 + + +def make_cylinder_surface(cfg: Config) -> pv.PolyData: + surface: pv.PolyData = pv.Cylinder( + center=(0.0, 0.0, 0.0), + direction=(1.0, 0.0, 0.0), + radius=cfg.radius, + height=cfg.length, + ) + surface.triangulate(inplace=True) + surface.compute_normals(auto_orient_normals=True, inplace=True) + return surface + + +def make_cylinder_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_cylinder_surface(cfg) + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + return melon.tet.fix_winding(mesh) + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid, stretch: float) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + x = mesh.points[:, 0] + left = np.isclose(x, x.min()) + right = np.isclose(x, x.max()) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[left | right, :] = True + fixed_value[left, 0] = -0.5 * stretch + fixed_value[right, 0] = 0.5 * stretch + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedSide"] = np.select([left, right], [-1, 1], default=0) + + +def solve( + mesh: pv.UnstructuredGrid, E: float, nu: float +) -> tuple[pv.UnstructuredGrid, dict[str, float]]: + from liblaf.apple.common import ( + GLOBAL_POINT_ID, + LAMBDA, + MU, + NU, + lame_converter, + ) + from liblaf.apple.common import ( + E as YOUNG_MODULUS, + ) + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean + + lambda_, mu = lame_converter(E, nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + builder.add_potential(StableNeoHookean.from_pyvista(mesh)) + model = builder.finalize() + forward = Forward(model) + + initial_energy = float(forward.problem.fun(forward.state)) + solution = forward.step() + final_energy = float(forward.problem.fun(forward.state)) + + displacement = np.asarray(forward.state.u)[mesh.point_data[GLOBAL_POINT_ID.vtk]] + result = mesh.copy(deep=True) + result.point_data["Displacement"] = displacement + result.field_data["InitialEnergy"] = np.asarray([initial_energy]) + result.field_data["FinalEnergy"] = np.asarray([final_energy]) + result.field_data["OptimizerResult"] = np.asarray([solution.result.name]) + + metrics = { + "initial_energy": initial_energy, + "final_energy": final_energy, + "E": E, + "nu": nu, + "lambda": float(lambda_), + "mu": float(mu), + "n_points": float(mesh.n_points), + "n_cells": float(mesh.n_cells), + } + return result, metrics + + +def main(cfg: Config) -> None: + if jax.default_backend() != "gpu": + msg = "This experiment uses Warp JAX FFI and needs JAX's active backend to be GPU." + raise RuntimeError(msg) + + wp.config.mode = "release" + wp.init() + + mesh = make_cylinder_mesh(cfg) + add_boundary_conditions(mesh, cfg.stretch) + result, metrics = solve(mesh, cfg.E, cfg.nu) + + melon.save(cfg.output, result) + cherries.log_metrics(metrics) + print(f"saved: {cfg.output}") + print( + "energy:", + f"{metrics['initial_energy']:.6g}", + "->", + f"{metrics['final_energy']:.6g}", + ) + print("mesh:", int(metrics["n_points"]), "points,", int(metrics["n_cells"]), "tets") + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/06/toy/src/20-ext-force-stable-neo-hookean-collision.py b/exp/2026/05/06/toy/src/20-ext-force-stable-neo-hookean-collision.py new file mode 100644 index 000000000..519342ce8 --- /dev/null +++ b/exp/2026/05/06/toy/src/20-ext-force-stable-neo-hookean-collision.py @@ -0,0 +1,397 @@ +from pathlib import Path +from typing import Any + +import attrs +import jax +import jax.numpy as jnp +import numpy as np +import pyvista as pv +import warp as wp +from icecream import ic + +from liblaf import cherries, melon + +SMAS_FRACTION = "SmasFraction" +MUSCLE_FRACTION = "MuscleFraction" +FAT_FRACTION = "FatFraction" +STIFF_MID_FRACTION = "StiffMidLayerFraction" + + +class Config(cherries.BaseConfig): + output_no_collision: Path = cherries.output( + "20-ext-force-stable-neo-hookean-no-collision.vtu" + ) + output_collision: Path = cherries.output( + "20-ext-force-stable-neo-hookean-collision.vtu" + ) + output_comparison: Path = cherries.output( + "20-ext-force-stable-neo-hookean-collision-comparison.vtu" + ) + + width: float = 1.0 + thickness: float = 0.1 + depth: float = 1.0 + body_y_min: float = 0.0 + lr: float = 0.02 + coarsen: bool = False + + E: float = 1.0 + nu: float = 0.375 + stiffness_ratio: float = 1e4 + force_scale: float = 1.0 + + +def body_bounds(cfg: Config) -> tuple[float, float, float, float, float, float]: + return ( + 0.0, + cfg.width, + cfg.body_y_min, + cfg.body_y_min + cfg.thickness, + 0.0, + cfg.depth, + ) + + +def make_body_surface(cfg: Config) -> pv.PolyData: + return pv.Box(body_bounds(cfg), quads=False) + + +def make_stiff_mid_layer(cfg: Config) -> pv.PolyData: + xmin, xmax, ymin, _ymax, zmin, zmax = body_bounds(cfg) + return pv.Box( + ( + xmin, + xmax, + ymin + 0.4 * cfg.thickness, + ymin + 0.6 * cfg.thickness, + zmin, + zmax, + ), + quads=False, + ) + + +def make_muscle_patch(cfg: Config) -> pv.PolyData: + xmin, xmax, ymin, _ymax, zmin, zmax = body_bounds(cfg) + return pv.Box( + ( + xmin, + xmin + 0.5 * (xmax - xmin), + ymin + 0.4 * cfg.thickness, + ymin + 0.6 * cfg.thickness, + zmin + 0.4 * (zmax - zmin), + zmin + 0.6 * (zmax - zmin), + ), + quads=False, + ) + + +def make_body_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_body_surface(cfg) + stiff_mid_layer = make_stiff_mid_layer(cfg) + muscle_patch = make_muscle_patch(cfg) + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + mesh = melon.tet.fix_winding(mesh) + + smas_frac = np.asarray(melon.tet.compute_volume_fraction(mesh, stiff_mid_layer)) + muscle_frac = np.asarray(melon.tet.compute_volume_fraction(mesh, muscle_patch)) + mesh.cell_data[SMAS_FRACTION] = smas_frac + mesh.cell_data[MUSCLE_FRACTION] = muscle_frac + mesh.cell_data[FAT_FRACTION] = np.clip(1.0 - smas_frac, 0.0, 1.0) + mesh.cell_data[STIFF_MID_FRACTION] = smas_frac + return mesh + + +def add_material( + mesh: pv.UnstructuredGrid, E: float, nu: float, fraction: np.ndarray +) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU, lame_converter + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_converter(E, nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = fraction + + +def add_body_boundary_conditions(mesh: pv.UnstructuredGrid) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + x = mesh.points[:, 0] + z = mesh.points[:, 2] + side = ( + np.isclose(x, x.min(), atol=1e-2) + | np.isclose(x, x.max(), atol=1e-2) + | np.isclose(z, z.min(), atol=1e-2) + | np.isclose(z, z.max(), atol=1e-2) + ) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[side, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedSide"] = side.astype(np.int8) + + +def add_bottom_force(mesh: pv.UnstructuredGrid, force_scale: float) -> pv.PolyData: + from liblaf.apple.common import FIXED_MASK, FORCE, GLOBAL_POINT_ID + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + + thickness = mesh.points[:, 1].max() - mesh.points[:, 1].min() + bottom_tol = max(1.0e-6, 0.1 * thickness) + bottom = surface.points[:, 1] <= mesh.points[:, 1].min() + bottom_tol + free_bottom = bottom & ~surface.point_data[FIXED_MASK.vtk][:, 0] + force = np.zeros((surface.n_points, 3), dtype=np.float64) + force[free_bottom, 1] = force_scale * surface.point_data["Area"][free_bottom] + surface.point_data[FORCE.vtk] = force + + mesh.point_data[FORCE.vtk] = np.zeros((mesh.n_points, 3), dtype=np.float64) + global_ids = surface.point_data[GLOBAL_POINT_ID.vtk][free_bottom] + mesh.point_data[FORCE.vtk][global_ids] = force[free_bottom] + mesh.point_data["LoadedBottom"] = np.zeros(mesh.n_points, dtype=np.int8) + mesh.point_data["LoadedBottom"][global_ids] = 1 + + return surface + + +def build_model( + body: pv.UnstructuredGrid, + *, + E: float, + nu: float, + stiffness_ratio: float, + force_scale: float, + with_collision: bool, +): + from liblaf.apple.collision import CollisionBuilder + from liblaf.apple.forward import ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean + from liblaf.apple.warp.potential import ExternalForce + + builder = ModelBuilder() + builder.add_vertices(body) + + add_body_boundary_conditions(body) + force_surface = add_bottom_force(body, force_scale) + + builder.add_fixed(body) + + add_material(body, E, nu, np.asarray(body.cell_data[FAT_FRACTION])) + builder.add_potential(StableNeoHookean.from_pyvista(body, name="fat")) + + add_material( + body, + stiffness_ratio * E, + nu, + np.asarray(body.cell_data[STIFF_MID_FRACTION]), + ) + builder.add_potential(StableNeoHookean.from_pyvista(body, name="stiff_mid_layer")) + + builder.add_potential( + attrs.evolve(ExternalForce.from_pyvista(force_surface), name="force") + ) + + if with_collision: + collision_builder = CollisionBuilder(stiffness=1.0 * E) + collision_builder.add_tetmesh(body) + builder.collision = collision_builder + return builder.finalize() + + +def log_optimizer_progress(case: str, opt_state: Any) -> None: + line_search = opt_state.line_search_state + convergence = opt_state.convergence_state + hess_damping = opt_state.hess_damping_state + relative_grad_norm = convergence.grad_norm / convergence.grad_norm_first + step_direction = line_search.alpha * opt_state.direction + + cherries.log_metrics( + { + f"{case}/optimizer/fun": line_search.f_alpha, + f"{case}/optimizer/fun_previous": line_search.f0, + f"{case}/optimizer/actual_decrease": line_search.f0 - line_search.f_alpha, + f"{case}/optimizer/alpha": line_search.alpha, + f"{case}/optimizer/line_search_steps": line_search.step, + f"{case}/optimizer/line_search_ok": line_search.ok, + f"{case}/optimizer/grad_norm": convergence.grad_norm, + f"{case}/optimizer/relative_grad_norm": relative_grad_norm, + f"{case}/optimizer/direction_norm": jnp.linalg.norm(opt_state.direction), + f"{case}/optimizer/step_norm": jnp.linalg.norm(step_direction), + f"{case}/optimizer/step_max_norm": jnp.linalg.norm( + step_direction, ord=jnp.inf + ), + f"{case}/optimizer/hess_damping_factor": hess_damping.factor, + f"{case}/optimizer/hess_diag_mean": hess_damping.hess_diag_mean, + }, + step=opt_state.n_steps, + ) + + +def run_forward_with_progress(forward: Any, case: str) -> Any: + from liblaf.peach.optim import Result + + problem = forward.problem + model_state = forward.state + opt_state = forward.optimizer.init(problem, model_state, forward.free) + result = Result.UNKNOWN_ERROR + + while True: + model_state, opt_state = forward.optimizer.step(problem, model_state, opt_state) + log_optimizer_progress(case, opt_state) + done, result = forward.optimizer.terminate(problem, model_state, opt_state) + if bool(np.asarray(done)): + break + + solution = forward.optimizer.postprocess(problem, model_state, opt_state, result) + forward.state = model_state + return solution + + +def solve( + base_body: pv.UnstructuredGrid, + cfg: Config, + *, + with_collision: bool, +) -> tuple[pv.UnstructuredGrid, np.ndarray, dict[str, float | str]]: + from liblaf.apple.common import GLOBAL_POINT_ID + from liblaf.apple.forward import Forward + + body = base_body.copy(deep=True) + model = build_model( + body, + E=cfg.E, + nu=cfg.nu, + stiffness_ratio=cfg.stiffness_ratio, + force_scale=cfg.force_scale, + with_collision=with_collision, + ) + forward = Forward(model) + + initial_energy = float(forward.problem.fun(forward.state)) + case = "self_collision" if with_collision else "no_collision" + solution = run_forward_with_progress(forward, case) + ic(solution) + final_energy = float(forward.problem.fun(forward.state)) + + global_ids = body.point_data[GLOBAL_POINT_ID.vtk] + displacement = np.asarray(forward.state.u)[global_ids] + deformed_points = body.points + displacement + result = body.copy(deep=True) + result.point_data["Displacement"] = displacement + result.field_data["WithCollision"] = np.asarray([int(with_collision)]) + result.field_data["InitialEnergy"] = np.asarray([initial_energy]) + result.field_data["FinalEnergy"] = np.asarray([final_energy]) + result.field_data["SelfCollisionStiffness"] = np.asarray([0.1 * cfg.E]) + result.field_data["OptimizerResult"] = np.asarray([solution.result.name]) + + min_y = float(deformed_points[:, 1].min()) + max_y = float(deformed_points[:, 1].max()) + metrics: dict[str, float | str] = { + "initial_energy": initial_energy, + "final_energy": final_energy, + "min_y": min_y, + "max_y": max_y, + "max_displacement": float(np.linalg.norm(displacement, axis=1).max()), + "optimizer_result": solution.result.name, + } + return result, displacement, metrics + + +def make_comparison( + base_body: pv.UnstructuredGrid, + no_collision: np.ndarray, + collision: np.ndarray, + cfg: Config, + no_collision_metrics: dict[str, float | str], + collision_metrics: dict[str, float | str], +) -> pv.UnstructuredGrid: + comparison = base_body.copy(deep=True) + comparison.point_data["DisplacementNoCollision"] = no_collision + comparison.point_data["DisplacementCollision"] = collision + comparison.point_data["CollisionDelta"] = collision - no_collision + comparison.field_data["NoCollisionMinY"] = np.asarray( + [no_collision_metrics["min_y"]] + ) + comparison.field_data["CollisionMinY"] = np.asarray([collision_metrics["min_y"]]) + comparison.field_data["NoCollisionMaxY"] = np.asarray( + [no_collision_metrics["max_y"]] + ) + comparison.field_data["CollisionMaxY"] = np.asarray([collision_metrics["max_y"]]) + comparison.field_data["NoCollisionMaxDisplacement"] = np.asarray( + [no_collision_metrics["max_displacement"]] + ) + comparison.field_data["CollisionMaxDisplacement"] = np.asarray( + [collision_metrics["max_displacement"]] + ) + comparison.field_data["SelfCollisionStiffness"] = np.asarray([0.1 * cfg.E]) + comparison.field_data["StiffnessRatio"] = np.asarray([cfg.stiffness_ratio]) + return comparison + + +def main(cfg: Config) -> None: + if jax.default_backend() != "gpu": + msg = "This experiment uses Warp JAX FFI and needs JAX's active backend to be GPU." + raise RuntimeError(msg) + + wp.config.mode = "release" + wp.init() + + body = make_body_mesh(cfg) + + no_collision_result, no_collision_u, no_collision_metrics = solve( + body, cfg, with_collision=False + ) + melon.save(cfg.output_no_collision, no_collision_result) + collision_result, collision_u, collision_metrics = solve( + body, cfg, with_collision=True + ) + melon.save(cfg.output_collision, collision_result) + comparison = make_comparison( + body, + no_collision_u, + collision_u, + cfg, + no_collision_metrics, + collision_metrics, + ) + melon.save(cfg.output_comparison, comparison) + + metrics = { + "E": cfg.E, + "nu": cfg.nu, + "force_scale": cfg.force_scale, + "stiffness_ratio": cfg.stiffness_ratio, + "self_collision_stiffness": 0.1 * cfg.E, + "n_points": float(body.n_points), + "n_cells": float(body.n_cells), + "no_collision": no_collision_metrics, + "collision": collision_metrics, + } + cherries.log_metrics(metrics) + print(f"saved: {cfg.output_no_collision}") + print(f"saved: {cfg.output_collision}") + print(f"saved: {cfg.output_comparison}") + print( + "max y:", + f"{no_collision_metrics['max_y']:.6g}", + "without collision,", + f"{collision_metrics['max_y']:.6g}", + "with collision", + ) + print( + "max displacement:", + f"{no_collision_metrics['max_displacement']:.6g}", + "without collision,", + f"{collision_metrics['max_displacement']:.6g}", + "with collision", + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/06/toy/src/21-smas-prestrain-stable-neo-hookean-muscle.py b/exp/2026/05/06/toy/src/21-smas-prestrain-stable-neo-hookean-muscle.py new file mode 100644 index 000000000..384acc28c --- /dev/null +++ b/exp/2026/05/06/toy/src/21-smas-prestrain-stable-neo-hookean-muscle.py @@ -0,0 +1,827 @@ +import contextlib +from pathlib import Path +from typing import Any + +import attrs +import jax +import jax.numpy as jnp +import matplotlib.pyplot as plt +import numpy as np +import pyvista as pv +import warp as wp +from environs import env +from frozendict import frozendict +from icecream import ic + +from liblaf import cherries, melon + +EXPERIMENT_DIR = Path(__file__).resolve().parents[1] +OUTPUT_STEM = "21-smas-prestrain-stable-neo-hookean-muscle" +SMAS_FRACTION = "SmasFraction" +FAT_FRACTION = "FatFraction" +SMAS_ACTIVE_TOL = 1.0e-3 +METRIC_PLOTS = { + "objective": ("Objective", "energy", True), + "actual-decrease": ("Actual Decrease", "energy decrease", True), + "alpha": ("Line Search Step Size", "alpha", True), + "line-search-steps": ("Line Search Steps", "steps", False), + "line-search-ok": ("Line Search Accepted", "accepted", False), + "grad-norm": ("Gradient Norm", "gradient norm", True), + "relative-grad-norm": ("Relative Gradient Norm", "relative gradient norm", True), + "elastic-grad-norm": ("Elastic Potential Gradient Norm", "gradient norm", True), + "collision-grad-norm": ("Collision Potential Gradient Norm", "gradient norm", True), + "collision-elastic-grad-ratio": ( + "Collision / Elastic Gradient Norm", + "ratio", + True, + ), + "direction-norm": ("Search Direction Norm", "direction norm", True), + "step-norm": ("Step Norm", "step norm", True), + "step-max-norm": ("Step Max Norm", "step max norm", True), + "max-displacement": ("Max Displacement", "displacement", True), + "min-y": ("Minimum Deformed Y", "y", False), + "max-y": ("Maximum Deformed Y", "y", False), + "hess-damping-factor": ("Hessian Damping Factor", "factor", True), + "hess-diag-mean": ("Mean Hessian Diagonal", "mean diagonal", True), +} +type MetricRecord = dict[str, float] + + +class Config(cherries.BaseConfig): + output_no_collision: Path = cherries.output(f"{OUTPUT_STEM}-no-collision.vtu") + output_collision: Path = cherries.output(f"{OUTPUT_STEM}-collision.vtu") + output_comparison: Path = cherries.output(f"{OUTPUT_STEM}-comparison.vtu") + output_no_collision_steps: Path = cherries.output( + f"{OUTPUT_STEM}-no-collision-steps.vtu.series" + ) + output_collision_steps: Path = cherries.output( + f"{OUTPUT_STEM}-collision-steps.vtu.series" + ) + + width: float = 1.0 + thickness: float = 0.1 + depth: float = 1.0 + body_y_min: float = 0.0 + lr: float = 0.02 + coarsen: bool = False + + E: float = 1.0 + nu: float = 0.49 + stiffness_ratio: float = 1.0e3 + force_scale: float = 0.3 + collision_stiffness_scale: float = 0.0 + smas_prestrain: tuple[float, float, float] = (1.2, 1.3**-2, 1.2) + write_step_artifacts: bool = env.bool("WRITE_STEP_ARTIFACTS", True) + + +def body_bounds(cfg: Config) -> tuple[float, float, float, float, float, float]: + return ( + 0.0, + cfg.width, + cfg.body_y_min, + cfg.body_y_min + cfg.thickness, + 0.0, + cfg.depth, + ) + + +def make_body_surface(cfg: Config) -> pv.PolyData: + return pv.Box(body_bounds(cfg), quads=False) + + +def make_smas_layer(cfg: Config) -> pv.PolyData: + xmin, xmax, ymin, _ymax, zmin, zmax = body_bounds(cfg) + return pv.Box( + ( + xmin, + xmax, + ymin + 0.4 * cfg.thickness, + ymin + 0.6 * cfg.thickness, + zmin, + zmax, + ), + quads=False, + ) + + +def make_body_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_body_surface(cfg) + smas_layer = make_smas_layer(cfg) + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + mesh = melon.tet.fix_winding(mesh) + + smas_frac = np.asarray(melon.tet.compute_volume_fraction(mesh, smas_layer)) + mesh.cell_data[SMAS_FRACTION] = smas_frac + mesh.cell_data[FAT_FRACTION] = np.clip(1.0 - smas_frac, 0.0, 1.0) + return mesh + + +def diagonal_activation_from_prestrain( + prestrain: tuple[float, float, float], +) -> np.ndarray: + prestrain_array = np.asarray(prestrain, dtype=np.float64) + activation = np.zeros(6, dtype=np.float64) + activation[:3] = prestrain_array - 1.0 + return activation + + +def add_smas_activation( + mesh: pv.UnstructuredGrid, prestrain: tuple[float, float, float] +) -> np.ndarray: + from liblaf.apple.common import ACTIVATION, PRESTRAIN + + smas = np.asarray(mesh.cell_data[SMAS_FRACTION]) > SMAS_ACTIVE_TOL + activation_value = diagonal_activation_from_prestrain(prestrain) + + activation = np.zeros((mesh.n_cells, 6), dtype=np.float64) + activation[smas] = activation_value + mesh.cell_data[ACTIVATION] = activation + + prestrain_field = np.ones((mesh.n_cells, 3), dtype=np.float64) + prestrain_field[smas] = np.asarray(prestrain, dtype=np.float64) + mesh.cell_data[PRESTRAIN.vtk] = prestrain_field + mesh.cell_data["SmasActive"] = smas.astype(np.int8) + return activation_value + + +def add_material( + mesh: pv.UnstructuredGrid, E: float, nu: float, fraction: np.ndarray +) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU, lame_converter + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_converter(E, nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = fraction + + +def add_body_boundary_conditions(mesh: pv.UnstructuredGrid) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + x = mesh.points[:, 0] + z = mesh.points[:, 2] + side = ( + np.isclose(x, x.min(), atol=1.0e-2) + | np.isclose(x, x.max(), atol=1.0e-2) + | np.isclose(z, z.min(), atol=1.0e-2) + | np.isclose(z, z.max(), atol=1.0e-2) + ) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[side, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedSide"] = side.astype(np.int8) + + +def add_bottom_force(mesh: pv.UnstructuredGrid, force_scale: float) -> pv.PolyData: + from liblaf.apple.common import FIXED_MASK, FORCE, GLOBAL_POINT_ID + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + + thickness = mesh.points[:, 1].max() - mesh.points[:, 1].min() + bottom_tol = max(1.0e-6, 0.1 * thickness) + bottom = surface.points[:, 1] <= mesh.points[:, 1].min() + bottom_tol + free_bottom = bottom & ~surface.point_data[FIXED_MASK.vtk][:, 0] + force = np.zeros((surface.n_points, 3), dtype=np.float64) + force[free_bottom, 1] = force_scale * surface.point_data["Area"][free_bottom] + surface.point_data[FORCE.vtk] = force + + mesh.point_data[FORCE.vtk] = np.zeros((mesh.n_points, 3), dtype=np.float64) + global_ids = surface.point_data[GLOBAL_POINT_ID.vtk][free_bottom] + mesh.point_data[FORCE.vtk][global_ids] = force[free_bottom] + mesh.point_data["LoadedBottom"] = np.zeros(mesh.n_points, dtype=np.int8) + mesh.point_data["LoadedBottom"][global_ids] = 1 + + return surface + + +def build_model( + body: pv.UnstructuredGrid, + *, + E: float, + nu: float, + stiffness_ratio: float, + force_scale: float, + collision_stiffness_scale: float, + smas_prestrain: tuple[float, float, float], + with_collision: bool, +): + from liblaf.apple.collision import CollisionBuilder + from liblaf.apple.forward import ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanMuscle + from liblaf.apple.warp.potential import ExternalForce + + builder = ModelBuilder() + builder.add_vertices(body) + + add_body_boundary_conditions(body) + force_surface = add_bottom_force(body, force_scale) + builder.add_fixed(body) + + add_material(body, E, nu, np.asarray(body.cell_data[FAT_FRACTION])) + builder.add_potential(StableNeoHookean.from_pyvista(body, name="fat")) + + activation_value = add_smas_activation(body, smas_prestrain) + add_material( + body, + stiffness_ratio * E, + nu, + np.asarray(body.cell_data[SMAS_FRACTION]), + ) + builder.add_potential( + StableNeoHookeanMuscle.from_pyvista(body, name="smas_prestrain") + ) + + builder.add_potential( + attrs.evolve(ExternalForce.from_pyvista(force_surface), name="force") + ) + + if with_collision: + collision_builder = CollisionBuilder(stiffness=collision_stiffness_scale * E) + collision_builder.add_tetmesh(body) + builder.collision = collision_builder + return builder.finalize(), activation_value + + +def case_name(*, with_collision: bool) -> str: + return "collision" if with_collision else "no_collision" + + +def metric_plot_path(plot_name: str) -> Path: + return EXPERIMENT_DIR / "fig" / f"{OUTPUT_STEM}-metrics-{plot_name}.png" + + +def metric_plot_paths() -> dict[str, str]: + return { + plot_name: metric_plot_path(plot_name).as_posix() for plot_name in METRIC_PLOTS + } + + +def scalar_float(value: Any) -> float: + return float(np.asarray(value).reshape(-1)[0]) + + +def scalar_bool(value: Any) -> float: + return float(bool(np.asarray(value).reshape(-1)[0])) + + +def metric_field_name(metric: str) -> str: + return "".join(part.title() for part in metric.split("-")) + + +def make_elastic_warp_model(forward: Any) -> Any: + from liblaf.apple.warp.model import WarpModel, WarpModelAdapter + + potentials = forward.model.warp_model.__wrapped__.potentials + elastic_potentials = frozendict( + {name: potential for name, potential in potentials.items() if name != "force"} + ) + return WarpModelAdapter( + WarpModel(elastic_potentials), + n_points=forward.model.n_points, + ) + + +def free_grad_norm(forward: Any, grad_full: Any) -> float: + grad_free = forward.model.dof_map.to_free_grad(grad_full) + return scalar_float(jnp.linalg.norm(grad_free)) + + +def collect_split_gradient_norms( + *, + forward: Any, + model_state: Any, + elastic_warp_model: Any, +) -> MetricRecord: + elastic_grad_norm = free_grad_norm(forward, elastic_warp_model.grad(model_state.u)) + if forward.model.collision is None: + collision_grad_norm = 0.0 + else: + collision_grad_norm = free_grad_norm( + forward, forward.model.collision.grad(model_state.u) + ) + + if elastic_grad_norm > 0.0: + collision_elastic_ratio = collision_grad_norm / elastic_grad_norm + elif collision_grad_norm > 0.0: + collision_elastic_ratio = float("inf") + else: + collision_elastic_ratio = np.nan + + return { + "elastic-grad-norm": elastic_grad_norm, + "collision-grad-norm": collision_grad_norm, + "collision-elastic-grad-ratio": collision_elastic_ratio, + } + + +def collect_step_record( + *, + body: pv.UnstructuredGrid, + forward: Any, + model_state: Any, + opt_state: Any | None, + elastic_warp_model: Any, +) -> MetricRecord: + from liblaf.apple.common import GLOBAL_POINT_ID + + global_ids = body.point_data[GLOBAL_POINT_ID.vtk] + displacement = np.asarray(model_state.u)[global_ids] + deformed_points = body.points + displacement + max_displacement = float(np.linalg.norm(displacement, axis=1).max()) + split_gradients = collect_split_gradient_norms( + forward=forward, + model_state=model_state, + elastic_warp_model=elastic_warp_model, + ) + + if opt_state is None: + grad = forward.problem.grad(model_state) + grad_norm = scalar_float(jnp.linalg.norm(grad)) + record = { + "step": 0.0, + "objective": scalar_float(forward.problem.fun(model_state)), + "actual-decrease": np.nan, + "alpha": np.nan, + "line-search-steps": 0.0, + "line-search-ok": np.nan, + "grad-norm": grad_norm, + "relative-grad-norm": 1.0, + "direction-norm": np.nan, + "step-norm": 0.0, + "step-max-norm": 0.0, + "max-displacement": max_displacement, + "min-y": float(deformed_points[:, 1].min()), + "max-y": float(deformed_points[:, 1].max()), + "hess-damping-factor": np.nan, + "hess-diag-mean": np.nan, + } + record.update(split_gradients) + return record + + line_search = opt_state.line_search_state + convergence = opt_state.convergence_state + hess_damping = opt_state.hess_damping_state + step_direction = line_search.alpha * opt_state.direction + record = { + "step": scalar_float(opt_state.n_steps), + "objective": scalar_float(line_search.f_alpha), + "actual-decrease": scalar_float(line_search.f0 - line_search.f_alpha), + "alpha": scalar_float(line_search.alpha), + "line-search-steps": scalar_float(line_search.step), + "line-search-ok": scalar_bool(line_search.ok), + "grad-norm": scalar_float(convergence.grad_norm), + "relative-grad-norm": scalar_float( + convergence.grad_norm / convergence.grad_norm_first + ), + "direction-norm": scalar_float(jnp.linalg.norm(opt_state.direction)), + "step-norm": scalar_float(jnp.linalg.norm(step_direction)), + "step-max-norm": scalar_float(jnp.linalg.norm(step_direction, ord=jnp.inf)), + "max-displacement": max_displacement, + "min-y": float(deformed_points[:, 1].min()), + "max-y": float(deformed_points[:, 1].max()), + "hess-damping-factor": scalar_float(hess_damping.factor), + "hess-diag-mean": scalar_float(hess_damping.hess_diag_mean), + } + record.update(split_gradients) + return record + + +def log_step_metrics(case: str, record: MetricRecord) -> None: + cherries.log_metrics( + { + f"{case}/optimizer/{metric.replace('-', '_')}": value + for metric, value in record.items() + if metric != "step" + }, + step=int(record["step"]), + ) + + +def make_step_mesh( + *, + body: pv.UnstructuredGrid, + forward: Any, + model_state: Any, + step_displacement: np.ndarray, + record: MetricRecord, + cfg: Config, + activation_value: np.ndarray, + with_collision: bool, +) -> pv.UnstructuredGrid: + from liblaf.apple.common import GLOBAL_POINT_ID + + global_ids = body.point_data[GLOBAL_POINT_ID.vtk] + displacement = np.asarray(model_state.u)[global_ids] + step_displacement = step_displacement[global_ids] + + mesh = body.copy(deep=True) + mesh.point_data["Displacement"] = displacement + mesh.point_data["Solution"] = displacement + mesh.point_data["StepDisplacement"] = step_displacement + mesh.point_data["DeformedPoint"] = mesh.points + displacement + mesh.point_data["Step"] = np.full(mesh.n_points, record["step"]) + for metric, value in record.items(): + mesh.point_data[metric_field_name(metric)] = np.full(mesh.n_points, value) + mesh.field_data[metric_field_name(metric)] = np.asarray([value]) + + mesh.field_data["WithCollision"] = np.asarray([int(with_collision)]) + mesh.field_data["ForceScale"] = np.asarray([cfg.force_scale]) + mesh.field_data["SelfCollisionStiffness"] = np.asarray( + [cfg.collision_stiffness_scale * cfg.E] + ) + mesh.field_data["StiffnessRatio"] = np.asarray([cfg.stiffness_ratio]) + mesh.field_data["SmasPrestrain"] = np.asarray([cfg.smas_prestrain]) + mesh.field_data["SmasActivation"] = activation_value[np.newaxis, :] + mesh.field_data["NFree"] = np.asarray([forward.model.n_free]) + return mesh + + +def write_step_mesh( + *, + writer: Any, + body: pv.UnstructuredGrid, + forward: Any, + model_state: Any, + opt_state: Any | None, + record: MetricRecord, + cfg: Config, + activation_value: np.ndarray, + with_collision: bool, +) -> None: + if opt_state is None: + step_displacement = np.zeros_like(np.asarray(model_state.u)) + else: + step_displacement = np.asarray( + forward.model.dof_map.to_full_grad( + opt_state.line_search_state.alpha * opt_state.direction + ) + ) + writer.append( + make_step_mesh( + body=body, + forward=forward, + model_state=model_state, + step_displacement=step_displacement, + record=record, + cfg=cfg, + activation_value=activation_value, + with_collision=with_collision, + ), + time=record["step"], + ) + + +def run_forward_with_progress( + forward: Any, + case: str, + *, + body: pv.UnstructuredGrid, + cfg: Config, + activation_value: np.ndarray, + with_collision: bool, + series_path: Path, + plot_records_by_case: dict[str, list[MetricRecord]], +) -> tuple[Any, list[MetricRecord]]: + from liblaf.peach.optim import Result + + problem = forward.problem + model_state = forward.state + opt_state = forward.optimizer.init(problem, model_state, forward.free) + result = Result.UNKNOWN_ERROR + elastic_warp_model = make_elastic_warp_model(forward) + records = plot_records_by_case.setdefault( + case_name(with_collision=with_collision), [] + ) + records.clear() + + writer_context = ( + melon.io.SeriesWriter(series_path, clear=True) + if cfg.write_step_artifacts + else contextlib.nullcontext(None) + ) + with writer_context as writer: + record = collect_step_record( + body=body, + forward=forward, + model_state=model_state, + opt_state=None, + elastic_warp_model=elastic_warp_model, + ) + records.append(record) + log_step_metrics(case, record) + if cfg.write_step_artifacts: + write_step_mesh( + writer=writer, + body=body, + forward=forward, + model_state=model_state, + opt_state=None, + record=record, + cfg=cfg, + activation_value=activation_value, + with_collision=with_collision, + ) + plot_metrics(plot_records_by_case) + + while True: + model_state, opt_state = forward.optimizer.step( + problem, model_state, opt_state + ) + record = collect_step_record( + body=body, + forward=forward, + model_state=model_state, + opt_state=opt_state, + elastic_warp_model=elastic_warp_model, + ) + records.append(record) + log_step_metrics(case, record) + if cfg.write_step_artifacts: + write_step_mesh( + writer=writer, + body=body, + forward=forward, + model_state=model_state, + opt_state=opt_state, + record=record, + cfg=cfg, + activation_value=activation_value, + with_collision=with_collision, + ) + plot_metrics(plot_records_by_case) + done, result = forward.optimizer.terminate(problem, model_state, opt_state) + if bool(np.asarray(done)): + break + + solution = forward.optimizer.postprocess(problem, model_state, opt_state, result) + forward.state = model_state + return solution, records + + +def solve( + base_body: pv.UnstructuredGrid, + cfg: Config, + *, + with_collision: bool, + plot_records_by_case: dict[str, list[MetricRecord]], +) -> tuple[pv.UnstructuredGrid, np.ndarray, dict[str, float | str], list[MetricRecord]]: + from liblaf.apple.common import GLOBAL_POINT_ID + from liblaf.apple.forward import Forward + + body = base_body.copy(deep=True) + model, activation_value = build_model( + body, + E=cfg.E, + nu=cfg.nu, + stiffness_ratio=cfg.stiffness_ratio, + force_scale=cfg.force_scale, + collision_stiffness_scale=cfg.collision_stiffness_scale, + smas_prestrain=cfg.smas_prestrain, + with_collision=with_collision, + ) + forward = Forward(model) + + initial_energy = float(forward.problem.fun(forward.state)) + case = "self_collision" if with_collision else "no_collision" + series_path = ( + cfg.output_collision_steps if with_collision else cfg.output_no_collision_steps + ) + solution, records = run_forward_with_progress( + forward, + case, + body=body, + cfg=cfg, + activation_value=activation_value, + with_collision=with_collision, + series_path=series_path, + plot_records_by_case=plot_records_by_case, + ) + ic(solution) + final_energy = float(forward.problem.fun(forward.state)) + + global_ids = body.point_data[GLOBAL_POINT_ID.vtk] + displacement = np.asarray(forward.state.u)[global_ids] + deformed_points = body.points + displacement + result = body.copy(deep=True) + result.point_data["Displacement"] = displacement + result.field_data["WithCollision"] = np.asarray([int(with_collision)]) + result.field_data["InitialEnergy"] = np.asarray([initial_energy]) + result.field_data["FinalEnergy"] = np.asarray([final_energy]) + result.field_data["ForceScale"] = np.asarray([cfg.force_scale]) + result.field_data["SelfCollisionStiffness"] = np.asarray( + [cfg.collision_stiffness_scale * cfg.E] + ) + result.field_data["SmasPrestrain"] = np.asarray([cfg.smas_prestrain]) + result.field_data["SmasActivation"] = activation_value[np.newaxis, :] + result.field_data["OptimizerResult"] = np.asarray([solution.result.name]) + + min_y = float(deformed_points[:, 1].min()) + max_y = float(deformed_points[:, 1].max()) + metrics: dict[str, float | str] = { + "initial_energy": initial_energy, + "final_energy": final_energy, + "min_y": min_y, + "max_y": max_y, + "max_displacement": float(np.linalg.norm(displacement, axis=1).max()), + "optimizer_result": solution.result.name, + } + return result, displacement, metrics, records + + +def make_comparison( + base_body: pv.UnstructuredGrid, + no_collision: np.ndarray, + collision: np.ndarray, + cfg: Config, + no_collision_metrics: dict[str, float | str], + collision_metrics: dict[str, float | str], +) -> pv.UnstructuredGrid: + comparison = base_body.copy(deep=True) + comparison.point_data["DisplacementNoCollision"] = no_collision + comparison.point_data["DisplacementCollision"] = collision + comparison.point_data["CollisionDelta"] = collision - no_collision + comparison.field_data["NoCollisionMinY"] = np.asarray( + [no_collision_metrics["min_y"]] + ) + comparison.field_data["CollisionMinY"] = np.asarray([collision_metrics["min_y"]]) + comparison.field_data["NoCollisionMaxY"] = np.asarray( + [no_collision_metrics["max_y"]] + ) + comparison.field_data["CollisionMaxY"] = np.asarray([collision_metrics["max_y"]]) + comparison.field_data["NoCollisionMaxDisplacement"] = np.asarray( + [no_collision_metrics["max_displacement"]] + ) + comparison.field_data["CollisionMaxDisplacement"] = np.asarray( + [collision_metrics["max_displacement"]] + ) + comparison.field_data["ForceScale"] = np.asarray([cfg.force_scale]) + comparison.field_data["SelfCollisionStiffness"] = np.asarray( + [cfg.collision_stiffness_scale * cfg.E] + ) + comparison.field_data["StiffnessRatio"] = np.asarray([cfg.stiffness_ratio]) + comparison.field_data["SmasPrestrain"] = np.asarray([cfg.smas_prestrain]) + comparison.field_data["SmasActivation"] = diagonal_activation_from_prestrain( + cfg.smas_prestrain + )[np.newaxis, :] + return comparison + + +def metric_values(records: list[MetricRecord], metric: str) -> np.ndarray: + return np.asarray([record[metric] for record in records], dtype=float) + + +def positive_for_log(values: np.ndarray) -> np.ndarray: + return np.where(np.isfinite(values) & (values > 0.0), values, np.nan) + + +def plot_metric_figure( + *, + records_by_case: dict[str, list[MetricRecord]], + plot_name: str, + title: str, + ylabel: str, + log_scale: bool, +) -> None: + fig, axis = plt.subplots(figsize=(7, 4), constrained_layout=True) + for name, records in records_by_case.items(): + steps = metric_values(records, "step") + values = metric_values(records, plot_name) + if log_scale: + values = positive_for_log(values) + axis.semilogy(steps, values, marker=".", label=name.replace("_", " ")) + else: + axis.plot(steps, values, marker=".", label=name.replace("_", " ")) + + axis.set_title(title) + axis.set_xlabel("optimizer step") + axis.set_ylabel(ylabel) + axis.grid(visible=True, alpha=0.25) + axis.legend() + + output = metric_plot_path(plot_name) + output.parent.mkdir(parents=True, exist_ok=True) + fig.savefig(output) + plt.close(fig) + + +def plot_metrics(records_by_case: dict[str, list[MetricRecord]]) -> None: + for plot_name, (title, ylabel, log_scale) in METRIC_PLOTS.items(): + plot_metric_figure( + records_by_case=records_by_case, + plot_name=plot_name, + title=title, + ylabel=ylabel, + log_scale=log_scale, + ) + + +def main(cfg: Config) -> None: + if jax.default_backend() != "gpu": + msg = "This experiment uses Warp JAX FFI and needs JAX's active backend to be GPU." + raise RuntimeError(msg) + + wp.config.mode = "release" + wp.init() + + body = make_body_mesh(cfg) + records_by_case: dict[str, list[MetricRecord]] = {} + + no_collision_result, no_collision_u, no_collision_metrics, no_collision_records = ( + solve( + body, + cfg, + with_collision=False, + plot_records_by_case=records_by_case, + ) + ) + melon.save(cfg.output_no_collision, no_collision_result) + collision_result, collision_u, collision_metrics, collision_records = solve( + body, + cfg, + with_collision=True, + plot_records_by_case=records_by_case, + ) + melon.save(cfg.output_collision, collision_result) + comparison = make_comparison( + body, + no_collision_u, + collision_u, + cfg, + no_collision_metrics, + collision_metrics, + ) + melon.save(cfg.output_comparison, comparison) + if cfg.write_step_artifacts: + plot_metrics(records_by_case) + + metrics = { + "E": cfg.E, + "nu": cfg.nu, + "stiffness_ratio": cfg.stiffness_ratio, + "force_scale": cfg.force_scale, + "self_collision_stiffness": cfg.collision_stiffness_scale * cfg.E, + "write_step_artifacts": cfg.write_step_artifacts, + "smas_prestrain_x": cfg.smas_prestrain[0], + "smas_prestrain_y": cfg.smas_prestrain[1], + "smas_prestrain_z": cfg.smas_prestrain[2], + "n_points": float(body.n_points), + "n_cells": float(body.n_cells), + "smas_active_cells": float( + np.count_nonzero( + np.asarray(body.cell_data[SMAS_FRACTION]) > SMAS_ACTIVE_TOL + ) + ), + "no_collision": no_collision_metrics, + "collision": collision_metrics, + "step_counts": { + case_name(with_collision=False): len(no_collision_records), + case_name(with_collision=True): len(collision_records), + }, + "step_series": ( + { + case_name(with_collision=False): ( + cfg.output_no_collision_steps.as_posix() + ), + case_name(with_collision=True): cfg.output_collision_steps.as_posix(), + } + if cfg.write_step_artifacts + else {} + ), + "metrics_plots": metric_plot_paths() if cfg.write_step_artifacts else {}, + } + cherries.log_metrics(metrics) + print(f"saved: {cfg.output_no_collision}") + print(f"saved: {cfg.output_collision}") + print(f"saved: {cfg.output_comparison}") + if cfg.write_step_artifacts: + print(f"saved: {cfg.output_no_collision_steps}") + print(f"saved: {cfg.output_collision_steps}") + print(f"saved figures: {EXPERIMENT_DIR / 'fig'}") + else: + print("step artifacts disabled: WRITE_STEP_ARTIFACTS=false") + print( + "max y:", + f"{no_collision_metrics['max_y']:.6g}", + "without collision,", + f"{collision_metrics['max_y']:.6g}", + "with collision", + ) + print( + "max displacement:", + f"{no_collision_metrics['max_displacement']:.6g}", + "without collision,", + f"{collision_metrics['max_displacement']:.6g}", + "with collision", + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision-input.vtu b/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision-input.vtu new file mode 100644 index 000000000..4c82c3afa --- /dev/null +++ b/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2b925d13d59384af3b22b6ef14ed7fc87a5e889ef1f9378f7593c73e24b2068 +size 57166 diff --git a/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision.vtu b/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision.vtu new file mode 100644 index 000000000..1c6e19808 --- /dev/null +++ b/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e86d816601c94e310925074a515efe5c13b4389371c5e89a7563881961d78fcb +size 97141 diff --git a/exp/2026/05/13/toy/data/10-stretched-cylinder-no-collision-input.vtu b/exp/2026/05/13/toy/data/10-stretched-cylinder-no-collision-input.vtu new file mode 100644 index 000000000..a769b987d --- /dev/null +++ b/exp/2026/05/13/toy/data/10-stretched-cylinder-no-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cafca398b85872cddae92b33365a76219d91b752216a120d4e4634f7141cde9a +size 45938341 diff --git a/exp/2026/05/13/toy/data/10-stretched-cylinder-no-collision.vtu b/exp/2026/05/13/toy/data/10-stretched-cylinder-no-collision.vtu new file mode 100644 index 000000000..e8a00d10e --- /dev/null +++ b/exp/2026/05/13/toy/data/10-stretched-cylinder-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a7cdda46ab5a5d0a4ab4293d92d08b235afdbb239a4f803bed601ab1b42d12f +size 66572519 diff --git a/exp/2026/05/13/toy/data/20-activated-boxes-collision-collision.vtu b/exp/2026/05/13/toy/data/20-activated-boxes-collision-collision.vtu new file mode 100644 index 000000000..0d326f97b --- /dev/null +++ b/exp/2026/05/13/toy/data/20-activated-boxes-collision-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b0bb1939f5469911e42d722f1188a4d3e3ed478655243fe7894d85671392f43 +size 267441 diff --git a/exp/2026/05/13/toy/data/20-activated-boxes-collision-comparison.vtu b/exp/2026/05/13/toy/data/20-activated-boxes-collision-comparison.vtu new file mode 100644 index 000000000..3509dd954 --- /dev/null +++ b/exp/2026/05/13/toy/data/20-activated-boxes-collision-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad71c9fd4061e2649bbb389292d6a6b5c9d8dd589b9034846e6953b490fcd0d3 +size 358962 diff --git a/exp/2026/05/13/toy/data/20-activated-boxes-collision-input.vtu b/exp/2026/05/13/toy/data/20-activated-boxes-collision-input.vtu new file mode 100644 index 000000000..8cd2eefdd --- /dev/null +++ b/exp/2026/05/13/toy/data/20-activated-boxes-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30815e40f04e325cc33420a622ab45533bf9cccec7539dedf78986a1164a2ee9 +size 176142 diff --git a/exp/2026/05/13/toy/data/20-activated-boxes-collision-no-collision.vtu b/exp/2026/05/13/toy/data/20-activated-boxes-collision-no-collision.vtu new file mode 100644 index 000000000..33dc907da --- /dev/null +++ b/exp/2026/05/13/toy/data/20-activated-boxes-collision-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d936ea5f2d7327153b8bebec9e48e571c0a3372fbd5c4c4fce97ac2d65251ad3 +size 267259 diff --git a/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-input.vtu b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-input.vtu new file mode 100644 index 000000000..bfbe7e040 --- /dev/null +++ b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64fb6a20735d1b1c7822953e986769deee9cdc1c38ec18f3aae8ee67bf52405d +size 1668649 diff --git a/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-with-prestrain.vtu b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-with-prestrain.vtu new file mode 100644 index 000000000..023a08a70 --- /dev/null +++ b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-with-prestrain.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bfd3d1819fa2e32be6b69d118b7d95aa7a872a2c68e3bec2cea50476984f673 +size 2420059 diff --git a/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-without-prestrain.vtu b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-without-prestrain.vtu new file mode 100644 index 000000000..93ae314c3 --- /dev/null +++ b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-without-prestrain.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c58e4ee2adbee0239d052689f321ee50030c68f864ffdfb2c862878eb2502f3 +size 2361556 diff --git a/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision.vtu b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision.vtu new file mode 100644 index 000000000..d82362e8d --- /dev/null +++ b/exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13b61e289468959a0b8d1692941cb183f8545a10d57be18ad14eaebf95e5a9d6 +size 2419398 diff --git a/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-input.vtu b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-input.vtu new file mode 100644 index 000000000..3c0e6f84f --- /dev/null +++ b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4258a6e7ef2577c2fc63f58f06adc322b89ee980caa6599882dd16b07d12ec13 +size 57717 diff --git a/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-summary.json b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-summary.json new file mode 100644 index 000000000..02153cb7b --- /dev/null +++ b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-summary.json @@ -0,0 +1,121 @@ +{ + "target_input": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision-input.vtu", + "target_output": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/10-activation-fixed-side-no-collision.vtu", + "n_points": 372, + "n_surface_points": 212, + "inverse_max_steps": 80, + "optimizer_steps": 6, + "stop_reason": "point_error_tol", + "inverse_lr": 0.1, + "adam_beta1": 0.3, + "adam_beta2": 0.8, + "forward_rtol": 1e-05, + "bbox_diagonal": 1.7320508075688772, + "point_error_rel_tol": 0.001, + "point_error_tol": 0.0017320508075688772, + "target_activation_y": 0.25, + "recovered_activation_y": 0.2524867643486216, + "activation_abs_error": 0.0024867643486216062, + "target_activation": [ + 0.0, + 0.25, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "recovered_activation": [ + 0.0, + 0.2524867643486216, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "final_loss": 8.210978827772869e-07, + "surface_mean_error": 0.0012544476424056362, + "surface_rms_error": 0.0015694883396610059, + "surface_max_error": 0.0024878821613495347, + "all_rms_error": 0.0015013809564489073, + "all_max_error": 0.0024878821613495347, + "trace": [ + { + "step": 0.0, + "loss": 0.008298753266392844, + "surface_mean_error": 0.12611260184874679, + "surface_rms_error": 0.15778548665570777, + "surface_max_error": 0.2500011063109741, + "activation_y": 0.09999998493749633, + "grad_activation_y": -0.06639001530829114, + "optimizer_steps": 1.0, + "stopped": 0.0 + }, + { + "step": 1.0, + "loss": 0.0029877218160704964, + "surface_mean_error": 0.07566955744918995, + "surface_rms_error": 0.09467399562821616, + "surface_max_error": 0.1500146682220987, + "activation_y": 0.1862401548278188, + "grad_activation_y": -0.03983485088318566, + "optimizer_steps": 2.0, + "stopped": 0.0 + }, + { + "step": 2.0, + "loss": 0.0005397989827800521, + "surface_mean_error": 0.03216369091048932, + "surface_rms_error": 0.04024173142820965, + "surface_max_error": 0.06376993850975492, + "activation_y": 0.24544929671147087, + "grad_activation_y": -0.01693214967481535, + "optimizer_steps": 3.0, + "stopped": 0.0 + }, + { + "step": 3.0, + "loss": 2.7500377677095225e-06, + "surface_mean_error": 0.0022955918531676277, + "surface_rms_error": 0.002872301046744329, + "surface_max_error": 0.0045588952809243015, + "activation_y": 0.26934828355977697, + "grad_activation_y": -0.0012085516163604143, + "optimizer_steps": 4.0, + "stopped": 0.0 + }, + { + "step": 4.0, + "loss": 4.970604947236009e-05, + "surface_mean_error": 0.009760215175355495, + "surface_rms_error": 0.012211394204474781, + "surface_max_error": 0.01935095880642458, + "activation_y": 0.2653853188881138, + "grad_activation_y": 0.0051380810639520364, + "optimizer_steps": 5.0, + "stopped": 0.0 + }, + { + "step": 5.0, + "loss": 3.143025781316723e-05, + "surface_mean_error": 0.007761147592208621, + "surface_rms_error": 0.009710343631381008, + "surface_max_error": 0.015386203280242837, + "activation_y": 0.2524867643486216, + "grad_activation_y": 0.004085737256870073, + "optimizer_steps": 6.0, + "stopped": 0.0 + }, + { + "step": 6.0, + "loss": 8.212707984135499e-07, + "surface_mean_error": 0.0012545404315259347, + "surface_rms_error": 0.0015696535908411927, + "surface_max_error": 0.0024885059759505975, + "activation_y": 0.2524867643486216, + "grad_activation_y": 0.0006604495943599025, + "optimizer_steps": 6.0, + "stopped": 1.0 + } + ], + "passed": true +} diff --git a/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-target.vtu b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-target.vtu new file mode 100644 index 000000000..f426fd7c5 --- /dev/null +++ b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:316fddd3624a6a229cfd68360ab06a45ba312bf695d14f90da41739b78cc7877 +size 118446 diff --git a/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision.vtu b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision.vtu new file mode 100644 index 000000000..aef5e71a3 --- /dev/null +++ b/exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:095cdcbf63bfd9919b8cd97f9e2171bed725064a8feba2abe776bc1bd280dca0 +size 124494 diff --git a/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision-input.vtu b/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision-input.vtu new file mode 100644 index 000000000..f504428d0 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4e190d759c248ea10c98c01b8a5452638157472688dc2befa50e4fb4bc463ab +size 62004 diff --git a/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision-target.vtu b/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision-target.vtu new file mode 100644 index 000000000..f59f7245d --- /dev/null +++ b/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a10067514b19b76e48300f6b4b2a1eb68649454ce5ad00d6c8055aeaa91952 +size 83196 diff --git a/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision.vtu b/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision.vtu new file mode 100644 index 000000000..89e12f6cf --- /dev/null +++ b/exp/2026/05/13/toy/data/40-activation-affine-check-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84c3e7154afd321638db08d077ac7b4ca3500bbf445a79c5f43639c188d948d8 +size 90921 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-input.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-input.vtu new file mode 100644 index 000000000..13411d6f2 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd862ad0fd5c6dc5b0db3127a24a3196145e5e1030d73da2a6487fde7c54c8b7 +size 174449 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000000.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000000.vtu new file mode 100644 index 000000000..a17485c84 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efecddf1a465620d6cde3774fb052a1029b260dede400bbefb9c10deb1d97f2a +size 385173 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000001.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000001.vtu new file mode 100644 index 000000000..5fc216f1a --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3d53635c3c5bff20e78d5be201513bd53f0f7e6226ca66297d27baa45bc0e0 +size 388366 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000002.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000002.vtu new file mode 100644 index 000000000..f7f24a5b3 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdaebc7c0c86652ba805d3f771e340f223ed597c7c8c9bf3d6a03bbfc019610b +size 388360 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000003.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000003.vtu new file mode 100644 index 000000000..89d5669c3 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05aa45f65c212c32cc5e4e60e1f3fec9ecdff13b35ab4726db8423166232c4ed +size 388409 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000004.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000004.vtu new file mode 100644 index 000000000..c7f3b75cf --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c57d6927d9ebaada28514f67e859185b2d2a0336bed81518c8453ecf2fe331bd +size 388419 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000005.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000005.vtu new file mode 100644 index 000000000..4982867dd --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a9fd6cf15f97fcee646c15a53b0e552db61633db1686d3e62d2d7953758b489 +size 388422 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000006.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000006.vtu new file mode 100644 index 000000000..e415c634b --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35b0b41dc47b9674f87cac62272a79fc161fbf5db002a3845d825105723fdb2c +size 388321 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000007.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000007.vtu new file mode 100644 index 000000000..c6a741ad8 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e94c3e344b3016f9d017f9170ef4dd29e711bceb255bdaa8b3f8fb1f5bd2169a +size 388169 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000008.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000008.vtu new file mode 100644 index 000000000..5252ed994 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2686b4a75eb3bc85a66284ae717bf5d6172a09178dd1062d76e9a3de6ba03481 +size 388093 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000009.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000009.vtu new file mode 100644 index 000000000..c5f9fb05f --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4098764a431bb7dd21c02cfc796f386f7f4a3fc1e659fc68c390586c198e5041 +size 387986 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000010.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000010.vtu new file mode 100644 index 000000000..0f65cfc51 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e37232349cbc2025bcca83118ad2af693b3beff8581abca9dfb7b77ee7a3bbbd +size 387823 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000011.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000011.vtu new file mode 100644 index 000000000..46df9b847 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0af68b0cb15ecbbe6c465c7986a67a676735aa7b1e50ce4a6d45964e2955b75c +size 387720 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000012.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000012.vtu new file mode 100644 index 000000000..17e2f3dbf --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25df2f5406052548cf663473998d30df4d9243c0fb20788d4cde47f43363e268 +size 387602 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000013.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000013.vtu new file mode 100644 index 000000000..4ca9fc126 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893094fea7a9bde636b7f1c636fac58ba743eb843f17dc7bbdd47a5d3c4cc4bd +size 387681 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000014.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000014.vtu new file mode 100644 index 000000000..b1b062e2e --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18ff30260a04e7182d68ed8658b9c645b6df1a39b707ba68e7560169d08967b1 +size 387744 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000015.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000015.vtu new file mode 100644 index 000000000..b365570f6 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:689925496da0e4871e897ede45a7fbd9245841ee0772ce48e240a58c68a66fa6 +size 387834 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000016.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000016.vtu new file mode 100644 index 000000000..598a5deaf --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e9dae6947c368f086887f059a8cf69287a632ad5616cf0a409a2f8df9e70177 +size 387818 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000017.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000017.vtu new file mode 100644 index 000000000..8554022e7 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0edde74910b4e7c60bb17b446d9c6b3206bb2f97a596e61e125c71a7d223c44 +size 387905 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000018.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000018.vtu new file mode 100644 index 000000000..552526d45 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e403ccb2cdeb5e3c6531b4e279d323cda6687945a2fac06d155bb1f201f56c6 +size 387921 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000019.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000019.vtu new file mode 100644 index 000000000..a7d443435 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aee5faa207928db017ae0fc1557f9061a4a6700cf76ea2d19086efefc62ce26 +size 387935 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000020.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000020.vtu new file mode 100644 index 000000000..bcf1129f7 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b050770becc1d7b1b39777f9902a119427e6138667ddf36d25ac959f20dfae28 +size 387881 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000021.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000021.vtu new file mode 100644 index 000000000..3beda82ba --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9f649df76dbccf9a2990b9d59b4e83d1000fe8970c09d05f29e383c01b6796b +size 387849 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000022.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000022.vtu new file mode 100644 index 000000000..ef477dbdb --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28b3800d4144f6d0b411dee96d35af2e916745d05c801afbfcac1b613aa1ec7e +size 387893 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000023.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000023.vtu new file mode 100644 index 000000000..229dda02b --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6d034a7ada9d1676780661422c41b8dedb28c9b2a235ae9957fcd4b215f5aaf +size 388092 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000024.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000024.vtu new file mode 100644 index 000000000..eef6878d6 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.d/40-inverse-activation-diff-forward-collision-steps_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74c3aed15d1b5457b10913987e72421e3745f7660bcf494fd5dc460018a9f17 +size 387514 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.series b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.series new file mode 100644 index 000000000..03c9d23cc --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0420f8e5de3b6c6555c7320e75750d65fd8a7bce4d15dd51de29c9a4befabdc +size 3580 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-summary.json b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-summary.json new file mode 100644 index 000000000..8096f83f5 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-summary.json @@ -0,0 +1,400 @@ +{ + "target_input": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/20-activated-boxes-collision-input.vtu", + "target_output": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/20-activated-boxes-collision-collision.vtu", + "output_input": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-input.vtu", + "output_target": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-target.vtu", + "output": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision.vtu", + "output_series": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-steps.vtu.series", + "n_points": 1295, + "n_surface_points": 714, + "inverse_max_steps": 120, + "optimizer_steps": 24, + "stop_reason": "point_error_tol", + "inverse_lr": 0.5, + "adam_beta1": 0.0, + "adam_beta2": 0.9, + "forward_rtol": 0.001, + "forward_atol": 0.001, + "forward_max_steps": 5000, + "bbox_diagonal": 2.8722813232690143, + "point_error_rel_tol": 0.001, + "point_error_tol": 0.0028722813232690144, + "target_activation_y": 1.0, + "recovered_activation_y": 1.0027213383339504, + "activation_abs_error": 0.002721338333950385, + "target_activation": [ + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "recovered_activation": [ + 0.0, + 1.0027213383339504, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "final_loss": 2.5901045306667247e-06, + "surface_mean_error": 0.002196162939733575, + "surface_rms_error": 0.0027875282226374268, + "surface_max_error": 0.0059018212673149235, + "all_rms_error": 0.0028056025368021686, + "all_max_error": 0.0059018212673149235, + "trace": [ + { + "step": 0.0, + "loss": 0.01535138196987501, + "surface_mean_error": 0.18553606648610002, + "surface_rms_error": 0.21460229707443726, + "surface_max_error": 0.32998530280455035, + "activation_y": 0.0, + "next_activation_y": 0.4999999061148882, + "grad_activation_y": -0.05325657037163045, + "optimizer_steps": 1.0, + "stopped": 0.0, + "best_surface_mean_error": 0.18553606648610002, + "best_activation_y": 0.0 + }, + { + "step": 1.0, + "loss": 0.0012814705056969711, + "surface_mean_error": 0.05070119821351611, + "surface_rms_error": 0.06200331859740181, + "surface_max_error": 0.11776344276605065, + "activation_y": 0.4999999061148882, + "next_activation_y": 0.581441356102537, + "grad_activation_y": -0.006012385072777434, + "optimizer_steps": 2.0, + "stopped": 0.0, + "best_surface_mean_error": 0.05070119821351611, + "best_activation_y": 0.4999999061148882 + }, + { + "step": 2.0, + "loss": 0.0008571238674331021, + "surface_mean_error": 0.04150175986715546, + "surface_rms_error": 0.05070869355740992, + "surface_max_error": 0.09617795425924375, + "activation_y": 0.581441356102537, + "next_activation_y": 0.6604047265172215, + "grad_activation_y": -0.004652090191087516, + "optimizer_steps": 3.0, + "stopped": 0.0, + "best_surface_mean_error": 0.04150175986715546, + "best_activation_y": 0.581441356102537 + }, + { + "step": 3.0, + "loss": 0.0005423716481763846, + "surface_mean_error": 0.033038604772612196, + "surface_rms_error": 0.04033751286989759, + "surface_max_error": 0.07654204880818108, + "activation_y": 0.6604047265172215, + "next_activation_y": 0.7314434907671334, + "grad_activation_y": -0.003534972501764149, + "optimizer_steps": 4.0, + "stopped": 0.0, + "best_surface_mean_error": 0.033038604772612196, + "best_activation_y": 0.6604047265172215 + }, + { + "step": 4.0, + "loss": 0.0003307231727648502, + "surface_mean_error": 0.025859462338519244, + "surface_rms_error": 0.03149872248670651, + "surface_max_error": 0.05959847064917517, + "activation_y": 0.7314434907671334, + "next_activation_y": 0.7930500967215318, + "grad_activation_y": -0.0026701124392878098, + "optimizer_steps": 5.0, + "stopped": 0.0, + "best_surface_mean_error": 0.025859462338519244, + "best_activation_y": 0.7314434907671334 + }, + { + "step": 5.0, + "loss": 0.0001940194666892976, + "surface_mean_error": 0.019870145532326147, + "surface_rms_error": 0.0241258865136163, + "surface_max_error": 0.0454362117319903, + "activation_y": 0.7930500967215318, + "next_activation_y": 0.8448038975019978, + "grad_activation_y": -0.001991649890416086, + "optimizer_steps": 6.0, + "stopped": 0.0, + "best_surface_mean_error": 0.019870145532326147, + "best_activation_y": 0.7930500967215318 + }, + { + "step": 6.0, + "loss": 0.00011216904258066134, + "surface_mean_error": 0.015234738701708031, + "surface_rms_error": 0.018344130607417297, + "surface_max_error": 0.0342308071889831, + "activation_y": 0.8448038975019978, + "next_activation_y": 0.9036558893700753, + "grad_activation_y": -0.0020389240347311118, + "optimizer_steps": 7.0, + "stopped": 0.0, + "best_surface_mean_error": 0.015234738701708031, + "best_activation_y": 0.8448038975019978 + }, + { + "step": 7.0, + "loss": 4.74091812448683e-05, + "surface_mean_error": 0.010009485429663427, + "surface_rms_error": 0.011925918989101215, + "surface_max_error": 0.021840731124193668, + "activation_y": 0.9036558893700753, + "next_activation_y": 0.9338285983086988, + "grad_activation_y": -0.0009494381803055919, + "optimizer_steps": 8.0, + "stopped": 0.0, + "best_surface_mean_error": 0.010009485429663427, + "best_activation_y": 0.9036558893700753 + }, + { + "step": 8.0, + "loss": 2.8029562007095378e-05, + "surface_mean_error": 0.007745065187866482, + "surface_rms_error": 0.00916998833266903, + "surface_max_error": 0.0163573181827158, + "activation_y": 0.9338285983086988, + "next_activation_y": 0.9586791758585715, + "grad_activation_y": -0.0007154443702030188, + "optimizer_steps": 9.0, + "stopped": 0.0, + "best_surface_mean_error": 0.007745065187866482, + "best_activation_y": 0.9338285983086988 + }, + { + "step": 9.0, + "loss": 1.54971322156231e-05, + "surface_mean_error": 0.005749659056006755, + "surface_rms_error": 0.0068184599908534555, + "surface_max_error": 0.013354617453324866, + "activation_y": 0.9586791758585715, + "next_activation_y": 0.9780418004977299, + "grad_activation_y": -0.0005129303544802355, + "optimizer_steps": 10.0, + "stopped": 0.0, + "best_surface_mean_error": 0.005749659056006755, + "best_activation_y": 0.9586791758585715 + }, + { + "step": 10.0, + "loss": 9.640991091694025e-06, + "surface_mean_error": 0.00444793618485846, + "surface_rms_error": 0.00537800830001982, + "surface_max_error": 0.011710425907291861, + "activation_y": 0.9780418004977299, + "next_activation_y": 0.9930772496751237, + "grad_activation_y": -0.0003681596631172239, + "optimizer_steps": 11.0, + "stopped": 0.0, + "best_surface_mean_error": 0.00444793618485846, + "best_activation_y": 0.9780418004977299 + }, + { + "step": 11.0, + "loss": 6.677543688393566e-06, + "surface_mean_error": 0.0036182289939541094, + "surface_rms_error": 0.004475782732124148, + "surface_max_error": 0.010179043268315863, + "activation_y": 0.9930772496751237, + "next_activation_y": 1.0039472413914459, + "grad_activation_y": -0.0002469302647049685, + "optimizer_steps": 12.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0036182289939541094, + "best_activation_y": 0.9930772496751237 + }, + { + "step": 12.0, + "loss": 5.995467907808024e-06, + "surface_mean_error": 0.0034337694563515877, + "surface_rms_error": 0.0042410380478632905, + "surface_max_error": 0.009569013010763516, + "activation_y": 1.0039472413914459, + "next_activation_y": 1.012743435180486, + "grad_activation_y": -0.00018594622805491042, + "optimizer_steps": 13.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 13.0, + "loss": 5.850335227697646e-06, + "surface_mean_error": 0.00343597524818136, + "surface_rms_error": 0.004189392042181411, + "surface_max_error": 0.009004036166928714, + "activation_y": 1.012743435180486, + "next_activation_y": 1.0208035273536735, + "grad_activation_y": -0.0001589584970552922, + "optimizer_steps": 14.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 14.0, + "loss": 6.3738744407004375e-06, + "surface_mean_error": 0.003637272717228299, + "surface_rms_error": 0.004372827840437046, + "surface_max_error": 0.008783557880257661, + "activation_y": 1.0208035273536735, + "next_activation_y": 1.0312391986928426, + "grad_activation_y": -0.00019241983984432247, + "optimizer_steps": 15.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 15.0, + "loss": 7.770661326732946e-06, + "surface_mean_error": 0.004029401814264447, + "surface_rms_error": 0.00482824854167625, + "surface_max_error": 0.010446104639933063, + "activation_y": 1.0312391986928426, + "next_activation_y": 1.035091530749626, + "grad_activation_y": -6.65300335117653e-05, + "optimizer_steps": 16.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 16.0, + "loss": 8.19974644405477e-06, + "surface_mean_error": 0.004142926100786725, + "surface_rms_error": 0.004959762023743106, + "surface_max_error": 0.010391977842079606, + "activation_y": 1.035091530749626, + "next_activation_y": 1.0446417721880619, + "grad_activation_y": -0.00015472322854304238, + "optimizer_steps": 17.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 17.0, + "loss": 1.026718524071969e-05, + "surface_mean_error": 0.004603553528786064, + "surface_rms_error": 0.005549914929272256, + "surface_max_error": 0.012031526533315785, + "activation_y": 1.0446417721880619, + "next_activation_y": 1.0432586402575137, + "grad_activation_y": 2.1048587181114385e-05, + "optimizer_steps": 18.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 18.0, + "loss": 1.0038022331287115e-05, + "surface_mean_error": 0.004554235578412342, + "surface_rms_error": 0.005487628540076428, + "surface_max_error": 0.011987402548699077, + "activation_y": 1.0432586402575137, + "next_activation_y": 1.042002072220769, + "grad_activation_y": 1.7983135425775426e-05, + "optimizer_steps": 19.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 19.0, + "loss": 9.776095888624373e-06, + "surface_mean_error": 0.004496709936387102, + "surface_rms_error": 0.0054155597740098045, + "surface_max_error": 0.01189009117861196, + "activation_y": 1.042002072220769, + "next_activation_y": 1.0381384960610023, + "grad_activation_y": 5.205067781084157e-05, + "optimizer_steps": 20.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 20.0, + "loss": 8.703130746230853e-06, + "surface_mean_error": 0.004253907291467032, + "surface_rms_error": 0.0051097350458406895, + "surface_max_error": 0.011060386494595861, + "activation_y": 1.0381384960610023, + "next_activation_y": 1.0375160869660607, + "grad_activation_y": 7.900405691540356e-06, + "optimizer_steps": 21.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 21.0, + "loss": 8.614648029347623e-06, + "surface_mean_error": 0.0042318027360511235, + "surface_rms_error": 0.005083693941224518, + "surface_max_error": 0.011001243238512782, + "activation_y": 1.0375160869660607, + "next_activation_y": 1.0450453585319608, + "grad_activation_y": -9.011591865455142e-05, + "optimizer_steps": 22.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 22.0, + "loss": 1.0285618751457168e-05, + "surface_mean_error": 0.004590701520462251, + "surface_rms_error": 0.005554894801377566, + "surface_max_error": 0.012270122574041257, + "activation_y": 1.0450453585319608, + "next_activation_y": 1.06300703021567, + "grad_activation_y": -0.00020285617238657098, + "optimizer_steps": 23.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 23.0, + "loss": 1.565104087294162e-05, + "surface_mean_error": 0.005561288788517603, + "surface_rms_error": 0.006852234863081158, + "surface_max_error": 0.015126450584592723, + "activation_y": 1.06300703021567, + "next_activation_y": 1.0027213383339504, + "grad_activation_y": 0.0006433077942582876, + "optimizer_steps": 24.0, + "stopped": 0.0, + "best_surface_mean_error": 0.0034337694563515877, + "best_activation_y": 1.0039472413914459 + }, + { + "step": 24.0, + "loss": 2.5901045306667247e-06, + "surface_mean_error": 0.0021961629397335754, + "surface_rms_error": 0.002787528222637427, + "surface_max_error": 0.0059018212673149235, + "activation_y": 1.0027213383339504, + "next_activation_y": 1.0027213383339504, + "grad_activation_y": -0.00010063452705738057, + "optimizer_steps": 24.0, + "stopped": 1.0, + "best_surface_mean_error": 0.0021961629397335754, + "best_activation_y": 1.0027213383339504 + } + ], + "passed": true +} diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-target.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-target.vtu new file mode 100644 index 000000000..96e4ed0e3 --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3daedee33aacb1cc3ec934eb0e8662380aa2e7eb79a073b7d4f04d872fe92cc9 +size 341642 diff --git a/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision.vtu b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision.vtu new file mode 100644 index 000000000..a53b887da --- /dev/null +++ b/exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9df6d8f51a9c8a4d5aa769b4b775cdd46b3dc1bd4eb981ed51b5645d469e4d84 +size 389432 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-input.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-input.vtu new file mode 100644 index 000000000..f271b7e3d --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:765d1090424aa2c82d54926a45e56ad343d3050306906a53c1cafec5f9cfbbad +size 174237 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000000.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000000.vtu new file mode 100644 index 000000000..77a3bc6ed --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8566e83dbb3d92d3e28ac63bdfb696a3d243f246c1654894a6076236112e9f2d +size 397054 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000001.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000001.vtu new file mode 100644 index 000000000..6cf62babd --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e0d93cf52ab01efc3e6d76a76a1b020d2c6d4daed3815ab075fdd1825dcf891 +size 729567 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000002.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000002.vtu new file mode 100644 index 000000000..c4839bc25 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:870d3aa3b887d006409ec7e6f84c14c43e88d7bf9bbebdd6259dd3e97b01f57d +size 797858 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000003.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000003.vtu new file mode 100644 index 000000000..18444955f --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:749ad460c52fa0dcfcacf3888ab9382025c9487b0b65ccb395f5e48caf252f72 +size 738447 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000004.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000004.vtu new file mode 100644 index 000000000..d57f6dd09 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3222c4a0953dbb3a58133014081ece9578d35af3c49e8dc69a7b42c61f7ff007 +size 794455 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000005.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000005.vtu new file mode 100644 index 000000000..18c52888d --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce74dc0240649fda57e1d49485c7a0f7ae4c1129b6a96667097694599c116211 +size 814485 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000006.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000006.vtu new file mode 100644 index 000000000..21705c5b1 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:593280b11c4590451a856817597da14150b46183bf1b046887e69d05e738b959 +size 802924 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000007.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000007.vtu new file mode 100644 index 000000000..6f8cc69ef --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:216d483dcc4100b3d3d74915c93cc27437c48ed2a35928dd850aaf93dac4e637 +size 827251 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000008.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000008.vtu new file mode 100644 index 000000000..d78be5b55 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8d5c7e460b7a76ccabdd0335a6fa0b5649be842f3e8ecbd3a582f75b3431acf +size 809613 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000009.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000009.vtu new file mode 100644 index 000000000..4021ec865 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:744d56605bd482f9648de8607718671463d1a6249a1412dec996c79a24bcf449 +size 850422 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000010.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000010.vtu new file mode 100644 index 000000000..934713196 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-diff-forward-collision-steps_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac9916bfbc36dfb6b272a3f12b292dfdd4fc23e22697982d8092283817b2b33d +size 818243 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.series b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.series new file mode 100644 index 000000000..a63d9f2fe --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b58a01480f40b8529dfe1919168c277274176219cf17ac8c05ba5112881b4fb2 +size 1834 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-summary.json b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-summary.json new file mode 100644 index 000000000..adcf95e44 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-summary.json @@ -0,0 +1,353 @@ +{ + "target_input": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/20-activated-boxes-collision-input.vtu", + "target_output": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/20-activated-boxes-collision-collision.vtu", + "output_input": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-input.vtu", + "output_target": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-target.vtu", + "output": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision.vtu", + "output_series": "/home/liblaf/github/liblaf/apple/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-steps.vtu.series", + "n_points": 1295, + "n_cells": 5189, + "n_surface_points": 714, + "n_active_tets": 3021, + "n_activation_params": 18126, + "series_frames": 11, + "inverse_max_steps": 10, + "optimizer_steps": 10, + "stop_reason": "inverse_max_steps", + "inverse_lr": 0.25, + "activation_residual_scale": 0.05, + "adam_beta1": 0.0, + "adam_beta2": 0.9, + "adam_eps": 1e-08, + "forward_rtol": 0.001, + "forward_atol": 0.001, + "forward_max_steps": 5000, + "activation_xz_abs_max": 0.02, + "activation_y_min": 0.0, + "activation_y_max": 1.5, + "activation_shear_abs_max": 0.02, + "bbox_diagonal": 2.8722813232690143, + "point_error_rel_tol": 0.001, + "point_error_tol": 0.0028722813232690144, + "total_elapsed_s": 200.65843287701136, + "inverse_elapsed_s": 198.44912562699756, + "forward_elapsed_s": 191.22637133096578, + "backward_elapsed_s": 6.657577852951363, + "optimizer_elapsed_s": 0.07543258793884888, + "series_elapsed_s": 0.41227054901537485, + "target_active_activation_mean": [ + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "recovered_active_activation_mean": [ + 0.019888993986433796, + 0.644736367734632, + 0.01987850178518144, + -0.020000000000001274, + -0.012983230349465587, + -0.020000000000001274 + ], + "target_active_activation_min": [ + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "target_active_activation_max": [ + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "recovered_active_activation_min": [ + 0.0180140002311008, + 0.6409081917164112, + 0.01788457669592239, + -0.020000000000000004, + -0.013334068831992106, + -0.020000000000000004 + ], + "recovered_active_activation_max": [ + 0.01989454428711196, + 0.6491768458591826, + 0.019884576695922387, + -0.020000000000000004, + -0.011334068831992106, + -0.020000000000000004 + ], + "active_activation_mean_abs_error": 0.07466905973107502, + "active_activation_rms_error": 0.14604380545936207, + "active_activation_max_abs_error": 0.3590918082835888, + "active_activation_mean_vector_error": 0.3577318423622427, + "active_activation_max_vector_error": 0.36154655779133327, + "final_loss": 0.0005858798719905675, + "surface_mean_error": 0.03471991608062305, + "surface_rms_error": 0.04192421276508007, + "surface_max_error": 0.08986569772770638, + "all_rms_error": 0.04347234327821475, + "all_max_error": 0.08986569772770638, + "trace": [ + { + "step": 0.0, + "loss": 0.01535138203611644, + "surface_mean_error": 0.18553606685438884, + "surface_rms_error": 0.21460229753744325, + "surface_max_error": 0.32998530190561676, + "activation_y_mean": 0.0, + "activation_min": 0.0, + "activation_max": 0.0, + "activation_rms": 0.0, + "next_activation_y_mean": 0.2498576357442315, + "next_activation_min": -0.020000000000000004, + "next_activation_max": 0.24985998265258558, + "grad_norm": 0.001182434268186943, + "grad_abs_max": 2.6188286384808504e-05, + "optimizer_steps": 1.0, + "stopped": 0.0, + "best_surface_mean_error": 0.18553606685438884, + "forward_elapsed_s": 1.4890000279992819, + "backward_elapsed_s": 1.2277977299818303, + "series_elapsed_s": 0.07473548801499419, + "step_elapsed_s": 2.9127949999819975 + }, + { + "step": 1.0, + "loss": 0.004556272013789403, + "surface_mean_error": 0.10020707452582985, + "surface_rms_error": 0.11691371194760779, + "surface_max_error": 0.20701441739501641, + "activation_y_mean": 0.2498576357442315, + "activation_min": -0.020000000000000004, + "activation_max": 0.24985998265258558, + "activation_rms": 0.10346557271553555, + "next_activation_y_mean": 0.4085690591092168, + "next_activation_min": 0.013874220717941999, + "next_activation_max": 0.40910079343454736, + "grad_norm": 0.0006439835643775946, + "grad_abs_max": 1.3956984171567999e-05, + "optimizer_steps": 2.0, + "stopped": 0.0, + "best_surface_mean_error": 0.10020707452582985, + "forward_elapsed_s": 19.562361736985622, + "backward_elapsed_s": 0.6285800430050585, + "series_elapsed_s": 0.03907413000706583, + "step_elapsed_s": 20.232628660975024 + }, + { + "step": 2.0, + "loss": 0.0018843620797418764, + "surface_mean_error": 0.06270541133578207, + "surface_rms_error": 0.07518700844710892, + "surface_max_error": 0.13882004838129353, + "activation_y_mean": 0.4085690591092168, + "activation_min": 0.013874220717941999, + "activation_max": 0.40910079343454736, + "activation_rms": 0.16771709246546415, + "next_activation_y_mean": 0.48664730264808254, + "next_activation_min": -0.020000000000000004, + "next_activation_max": 0.4890112893001696, + "grad_norm": 0.00043167764526961627, + "grad_abs_max": 9.714026672003116e-06, + "optimizer_steps": 3.0, + "stopped": 0.0, + "best_surface_mean_error": 0.06270541133578207, + "forward_elapsed_s": 17.795603229023982, + "backward_elapsed_s": 0.5130642259900924, + "series_elapsed_s": 0.03122487201471813, + "step_elapsed_s": 18.34232810899266 + }, + { + "step": 3.0, + "loss": 0.0012210823974577484, + "surface_mean_error": 0.04979115717741419, + "surface_rms_error": 0.06052476511621706, + "surface_max_error": 0.1276135736060883, + "activation_y_mean": 0.48664730264808254, + "activation_min": -0.020000000000000004, + "activation_max": 0.4890112893001696, + "activation_rms": 0.19950732285178627, + "next_activation_y_mean": 0.5330964894129151, + "next_activation_min": 0.017968645698961096, + "next_activation_max": 0.5345429205825711, + "grad_norm": 0.00030221054874777565, + "grad_abs_max": 6.751370214527163e-06, + "optimizer_steps": 4.0, + "stopped": 0.0, + "best_surface_mean_error": 0.04979115717741419, + "forward_elapsed_s": 14.92178803801653, + "backward_elapsed_s": 0.5259691789979115, + "series_elapsed_s": 0.03177787401364185, + "step_elapsed_s": 15.481566214002669 + }, + { + "step": 4.0, + "loss": 0.0010986298381389847, + "surface_mean_error": 0.04781204974512, + "surface_rms_error": 0.05740983813264895, + "surface_max_error": 0.10683325601961943, + "activation_y_mean": 0.5330964894129151, + "activation_min": 0.017968645698961096, + "activation_max": 0.5345429205825711, + "activation_rms": 0.2183989839427856, + "next_activation_y_mean": 0.57629555641948, + "next_activation_min": -0.020000000000000004, + "next_activation_max": 0.5800695809349977, + "grad_norm": 0.00038739439438472, + "grad_abs_max": 6.723079833312706e-06, + "optimizer_steps": 5.0, + "stopped": 0.0, + "best_surface_mean_error": 0.04781204974512, + "forward_elapsed_s": 20.83666519599501, + "backward_elapsed_s": 0.8230045170057565, + "series_elapsed_s": 0.031120420986553654, + "step_elapsed_s": 21.70344986199052 + }, + { + "step": 5.0, + "loss": 0.0008015491937237773, + "surface_mean_error": 0.04040449682813267, + "surface_rms_error": 0.04903720609059342, + "surface_max_error": 0.10531664004122399, + "activation_y_mean": 0.57629555641948, + "activation_min": -0.020000000000000004, + "activation_max": 0.5800695809349977, + "activation_rms": 0.23593294032111303, + "next_activation_y_mean": 0.6122165266301556, + "next_activation_min": 0.01780513763835689, + "next_activation_max": 0.615204284599109, + "grad_norm": 0.00033546240265332135, + "grad_abs_max": 5.729041045808375e-06, + "optimizer_steps": 6.0, + "stopped": 0.0, + "best_surface_mean_error": 0.04040449682813267, + "forward_elapsed_s": 22.241403760010144, + "backward_elapsed_s": 0.4976999299833551, + "series_elapsed_s": 0.03520930800004862, + "step_elapsed_s": 22.776255257980665 + }, + { + "step": 6.0, + "loss": 0.0007692748040693952, + "surface_mean_error": 0.040139352589730073, + "surface_rms_error": 0.048039821109244214, + "surface_max_error": 0.08754213889418445, + "activation_y_mean": 0.6122165266301556, + "activation_min": 0.01780513763835689, + "activation_max": 0.615204284599109, + "activation_rms": 0.2505970594856236, + "next_activation_y_mean": 0.6447363677346305, + "next_activation_min": -0.020000000000000004, + "next_activation_max": 0.6491768458591826, + "grad_norm": 0.0003507230705428437, + "grad_abs_max": 5.575302682064201e-06, + "optimizer_steps": 7.0, + "stopped": 0.0, + "best_surface_mean_error": 0.040139352589730073, + "forward_elapsed_s": 15.426628135988722, + "backward_elapsed_s": 0.47184190299594775, + "series_elapsed_s": 0.03866684599779546, + "step_elapsed_s": 15.939506084978348 + }, + { + "step": 7.0, + "loss": 0.0005858798719905677, + "surface_mean_error": 0.03471991608062305, + "surface_rms_error": 0.04192421276508007, + "surface_max_error": 0.08986569772770638, + "activation_y_mean": 0.6447363677346305, + "activation_min": -0.020000000000000004, + "activation_max": 0.6491768458591826, + "activation_rms": 0.26376931024020883, + "next_activation_y_mean": 0.6681414839477786, + "next_activation_min": 0.01728941578922287, + "next_activation_max": 0.6724684804792965, + "grad_norm": 0.000363583709917297, + "grad_abs_max": 5.342236539502001e-06, + "optimizer_steps": 8.0, + "stopped": 0.0, + "best_surface_mean_error": 0.03471991608062305, + "forward_elapsed_s": 16.243339426990133, + "backward_elapsed_s": 0.49337660099263303, + "series_elapsed_s": 0.03039530199021101, + "step_elapsed_s": 16.769098482996924 + }, + { + "step": 8.0, + "loss": 0.0007115014529915193, + "surface_mean_error": 0.039028054342147525, + "surface_rms_error": 0.04620069652044823, + "surface_max_error": 0.07978872347631336, + "activation_y_mean": 0.6681414839477786, + "activation_min": 0.01728941578922287, + "activation_max": 0.6724684804792965, + "activation_rms": 0.2733606022536868, + "next_activation_y_mean": 0.691789128351941, + "next_activation_min": -0.020000000000000004, + "next_activation_max": 0.6968484561415752, + "grad_norm": 0.0003517832952749542, + "grad_abs_max": 5.84251198239686e-06, + "optimizer_steps": 9.0, + "stopped": 0.0, + "best_surface_mean_error": 0.03471991608062305, + "forward_elapsed_s": 20.877413263980998, + "backward_elapsed_s": 0.48203499300871044, + "series_elapsed_s": 0.03640932901180349, + "step_elapsed_s": 21.39774718999979 + }, + { + "step": 9.0, + "loss": 0.0005886154005245827, + "surface_mean_error": 0.035312802592572475, + "surface_rms_error": 0.0420219728424755, + "surface_max_error": 0.08279507497284384, + "activation_y_mean": 0.691789128351941, + "activation_min": -0.020000000000000004, + "activation_max": 0.6968484561415752, + "activation_rms": 0.2828920336817744, + "next_activation_y_mean": 0.7018364393732711, + "next_activation_min": 0.01662166463659907, + "next_activation_max": 0.7079580496648192, + "grad_norm": 0.0003553560206919637, + "grad_abs_max": 5.94222538838694e-06, + "optimizer_steps": 10.0, + "stopped": 0.0, + "best_surface_mean_error": 0.03471991608062305, + "forward_elapsed_s": 20.933623625984183, + "backward_elapsed_s": 0.4952169519965537, + "series_elapsed_s": 0.03363637998700142, + "step_elapsed_s": 21.46441551099997 + }, + { + "step": 10.0, + "loss": 0.0006754383951624816, + "surface_mean_error": 0.038207453970285896, + "surface_rms_error": 0.045014610800132936, + "surface_max_error": 0.07606458508085642, + "activation_y_mean": 0.7018364393732711, + "activation_min": 0.01662166463659907, + "activation_max": 0.7079580496648192, + "activation_rms": 0.2870713606238656, + "next_activation_y_mean": 0.7018364393732711, + "next_activation_min": 0.01662166463659907, + "next_activation_max": 0.7079580496648192, + "grad_norm": 0.0003494855671622883, + "grad_abs_max": 5.962760650682457e-06, + "optimizer_steps": 10.0, + "stopped": 0.0, + "best_surface_mean_error": 0.03471991608062305, + "forward_elapsed_s": 20.89854488999117, + "backward_elapsed_s": 0.49899177899351344, + "series_elapsed_s": 0.030020598991541192, + "step_elapsed_s": 21.42912635600078 + } + ], + "passed": false +} diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-target.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-target.vtu new file mode 100644 index 000000000..96e4ed0e3 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3daedee33aacb1cc3ec934eb0e8662380aa2e7eb79a073b7d4f04d872fe92cc9 +size 341642 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision.vtu new file mode 100644 index 000000000..95c77bd61 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:074e517661683125be84fe2caadaf9b43b106c0573231a01f8b3641eb2eb84d4 +size 831898 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-input.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-input.vtu new file mode 100644 index 000000000..f271b7e3d --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:765d1090424aa2c82d54926a45e56ad343d3050306906a53c1cafec5f9cfbbad +size 174237 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-inv-diff-forward-collision-steps_000000.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-inv-diff-forward-collision-steps_000000.vtu new file mode 100644 index 000000000..283f79fbe --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-steps.vtu.d/41-inverse-active-tet-activation-inv-diff-forward-collision-steps_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01d05c68c5ec165ebc48115df5a924abd413ba1fd757b0cdecac5fbde00bd136 +size 397047 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-steps.vtu.series b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-steps.vtu.series new file mode 100644 index 000000000..e00ac80ca --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-steps.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1a4db22dfbc0850568c8cdba279b9ddacd00aa1580d9b3ed016b0ea7fca73fb +size 211 diff --git a/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-target.vtu b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-target.vtu new file mode 100644 index 000000000..96e4ed0e3 --- /dev/null +++ b/exp/2026/05/13/toy/data/41-inverse-active-tet-activation-inv-diff-forward-collision-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3daedee33aacb1cc3ec934eb0e8662380aa2e7eb79a073b7d4f04d872fe92cc9 +size 341642 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-collision.vtu new file mode 100644 index 000000000..7bb52b8cd --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1dbb42c633b769839386d2133bd55fa827b47e269bba4304983280f41209806 +size 267447 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-comparison.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-comparison.vtu new file mode 100644 index 000000000..2a890181a --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86828fe900a8c7e14f576704653c882878edd392de63ab40e06c3869291700da +size 358990 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-input.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-input.vtu new file mode 100644 index 000000000..3ff8373da --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b23290bf50a89278d26c268515beadc71f58a0dd321c6ce2807186f1d90c60f0 +size 176140 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-no-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-no-collision.vtu new file mode 100644 index 000000000..bb9d50a80 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e3-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:536a127f41e35403f10294f7f7c65954a081a1b5e7afb1ff93391da819be3269 +size 267249 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-collision.vtu new file mode 100644 index 000000000..6afc7d85c --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6754afd9de408df0a96e3b30610027510c1d19685b210f92575672a0ab9ad9c +size 267447 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-comparison.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-comparison.vtu new file mode 100644 index 000000000..5df23a6d1 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d38fbf72bc9d76b5b7f99b255928053b8cb9a78f831178c8d4a13d0520fdf27 +size 358996 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-input.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-input.vtu new file mode 100644 index 000000000..4e878c8b3 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62c63ea0eb434c04a71f47758c649d1479c3f2abc286972ce92beeb0d09ce399 +size 176142 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-no-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-no-collision.vtu new file mode 100644 index 000000000..487ac235c --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e4-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9791689eef8b491537250bd72678b6c3ff7031f3c47e5b52863c3bbed133a2ac +size 267265 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-collision.vtu new file mode 100644 index 000000000..d7b38874b --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70775a4d8715c7a704c3821b49c78dad2b5f99613fa8d663e4b71670e473a03a +size 267413 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-comparison.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-comparison.vtu new file mode 100644 index 000000000..129a3ead8 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a6b8c88cde93e7db47e202824c3cd4be3ead1cfc9c2916f5174ecab938f8432 +size 358914 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-input.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-input.vtu new file mode 100644 index 000000000..a436b71b6 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b559cf903832b1f4cdbcfc29117f6fe3c495397c0e3d98effe6d7858458d7896 +size 176140 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-no-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-no-collision.vtu new file mode 100644 index 000000000..29e9c0cba --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e5-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f72feadd33f8e2c2d2cb69fee4acc47283d0c13801a50488e5bf6e8f0feb8ce4 +size 267220 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-collision.vtu new file mode 100644 index 000000000..226dd3a4f --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09baff3a2a8ca355d7e51b9d313ea19de199dc7c5c5a1a3d7b985a1d1ea09d16 +size 267495 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-comparison.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-comparison.vtu new file mode 100644 index 000000000..6ab5ef1e6 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-comparison.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48d07421069bd736704a3bdcec1ad7aa7e33e6a6b8caeb1163dece5d46fc6f9c +size 359002 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-input.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-input.vtu new file mode 100644 index 000000000..f46442f2a --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1d5ca4245dd84fd29f4649faafd024b149cca4cd5f5d752445bf25c6489481c +size 176140 diff --git a/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-no-collision.vtu b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-no-collision.vtu new file mode 100644 index 000000000..2cea98cf7 --- /dev/null +++ b/exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-1e6-no-collision.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c2a0d6bd29828f995ee4016f44c70e40f0c7364380aac534d7767c24420fdad +size 267239 diff --git a/exp/2026/05/13/toy/docs/20-activated-boxes-collision-rtol-sweep.md b/exp/2026/05/13/toy/docs/20-activated-boxes-collision-rtol-sweep.md new file mode 100644 index 000000000..480f10d2f --- /dev/null +++ b/exp/2026/05/13/toy/docs/20-activated-boxes-collision-rtol-sweep.md @@ -0,0 +1,44 @@ +# 20 Activated Boxes Collision Rtol Sweep + +Scene: two activated boxes from `exp/2026/05/13/toy/src/20-activated-boxes-collision.py`. + +Fixed parameters: + +- `E = 1` +- `nu = 0.49` +- `collision_stiffness = 0.1 * E` +- `lr = 0.05` +- `max_steps = 1500` + +Outputs: + +- Logs: `logs/rtol-sweep/20-activated-boxes-collision-*.log` +- VTUs: `exp/2026/05/13/toy/data/rtol-sweep/20-activated-boxes-collision-*` + +`elapsed` is the timestamp of the case's `Solution(...)` log line, measured from the start of that script run. `rel_grad` is computed from the rounded tensor values printed in the logs. + +| rtol | case | result | steps | elapsed | rel_grad | final_energy | final_gap | overlap | max_displacement | +| ---: | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| `1e-3` | no collision | `PRIMARY_SUCCESS` | 237 | `9.246s` | `9.369e-04` | `0.137353` | `-0.453856` | `0.453856` | `0.487421` | +| `1e-3` | collision | `PRIMARY_SUCCESS` | 173 | `37.773s` | `1.022e-03` | `0.179569` | `0.043286` | `0` | `0.329971` | +| `1e-4` | no collision | `PRIMARY_SUCCESS` | 484 | `9.712s` | `8.517e-05` | `0.137341` | `-0.455345` | `0.455345` | `0.488127` | +| `1e-4` | collision | `MAX_STEPS_REACHED` | 1500 | `13m 33.803s` | `2.555e-04` | `0.179484` | `0.047742` | `0` | `0.328479` | +| `1e-5` | no collision | `PRIMARY_SUCCESS` | 662 | `10.324s` | `9.928e-06` | `0.137341` | `-0.455664` | `0.455664` | `0.488147` | +| `1e-5` | collision | `MAX_STEPS_REACHED` | 1500 | `10m 42.737s` | `1.703e-04` | `0.179476` | `0.046589` | `0` | `0.328545` | +| `1e-6` | no collision | `PRIMARY_SUCCESS` | 957 | `12.237s` | `9.840e-07` | `0.137341` | `-0.455775` | `0.455775` | `0.488174` | +| `1e-6` | collision | `MAX_STEPS_REACHED` | 1500 | `8m 13.670s` | `2.555e-04` | `0.179370` | `0.020612` | `0` | `0.331687` | + +Total elapsed per run: + +| rtol | total elapsed | +| ---: | ---: | +| `1e-3` | `37.810s` | +| `1e-4` | `13m 33.842s` | +| `1e-5` | `10m 42.796s` | +| `1e-6` | `8m 13.707s` | + +Summary: + +- No-collision cases converged for all tested tolerances. +- The collision case converged only at `rtol = 1e-3`. +- For `rtol <= 1e-4`, the collision case reached `max_steps = 1500` before satisfying the tolerance, although the final overlap stayed zero in all collision runs. diff --git a/exp/2026/05/13/toy/docs/20-smas-layer-bottom-force-collision-prestrain-comparison.md b/exp/2026/05/13/toy/docs/20-smas-layer-bottom-force-collision-prestrain-comparison.md new file mode 100644 index 000000000..dd0cfdb2e --- /dev/null +++ b/exp/2026/05/13/toy/docs/20-smas-layer-bottom-force-collision-prestrain-comparison.md @@ -0,0 +1,50 @@ +# SMAS Prestrain Comparison + +Experiment: `20-smas-layer-bottom-force-collision` + +## Common Setup + +| quantity | value | +| --- | ---: | +| body bounds | `(0, 1, 0, 0.1, 0, 1)` | +| SMAS layer bounds | `(0, 1, 0.04, 0.06, 0, 1)` | +| `E_fat` | `1.0` | +| `E_smas / E_fat` | `100` | +| `E_smas` | `100.0` | +| `nu` | `0.49` | +| TetWild `lr` | `0.02` | +| bottom pressure | `0.3` | +| collision stiffness | `0.1` | +| optimizer max steps | `3000` | +| optimizer `rtol_primary` | `5e-4` | +| optimizer `rtol_secondary` | `5e-4` | +| mesh points | `9699` | +| mesh cells | `45769` | +| mesh generation wall time | `10.609466 s` | + +Wall times were measured with `time.perf_counter()` in one paired run. Both cases used the same generated tetrahedral mesh. + +## Saved Meshes + +| case | solution mesh | +| --- | --- | +| with prestrain | `exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-with-prestrain.vtu` | +| without prestrain | `exp/2026/05/13/toy/data/20-smas-layer-bottom-force-collision-without-prestrain.vtu` | + +## Displacement Summary + +| case | SMAS prestrain | SMAS activation | result | steps | bottom max `u_y` | bottom mean `u_y` | max displacement | +| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | +| with prestrain | `(0.8, 1, 0.8, 0, 0, 0)` | `(-0.2, 0, -0.2, 0, 0, 0)` | `PRIMARY_SUCCESS` | `302` | `0.0923113` | `0.0524899` | `0.0923158` | +| without prestrain | `(1, 1, 1, 0, 0, 0)` | `(0, 0, 0, 0, 0, 0)` | `PRIMARY_SUCCESS` | `1807` | `0.262284` | `0.132438` | `0.262286` | + +Removing prestrain increases bottom max `u_y` by about `2.84x` and bottom mean `u_y` by about `2.52x` under the same load. + +## Performance + +| case | solve wall time | save wall time | +| --- | ---: | ---: | +| with prestrain | `43.295485 s` | `0.106771 s` | +| without prestrain | `187.185539 s` | `0.088319 s` | + +The solve wall time includes forward model construction, initial/final energy evaluation, optimization, and result mesh construction. It does not include the shared mesh generation time or the VTU save time. diff --git a/exp/2026/05/13/toy/src/10-activation-fixed-side-no-collision.py b/exp/2026/05/13/toy/src/10-activation-fixed-side-no-collision.py new file mode 100644 index 000000000..54e371415 --- /dev/null +++ b/exp/2026/05/13/toy/src/10-activation-fixed-side-no-collision.py @@ -0,0 +1,242 @@ +from pathlib import Path +from typing import Any + +import numpy as np +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "10-activation-fixed-side-no-collision" + + +class Config(cherries.BaseConfig): + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + + E: float = 1.0 + nu: float = 0.49 + lr: float = 0.2 + coarsen: bool = False + y_stretch: float = 1.25 + target_energy_tol: float = 1.0e-8 + target_grad_tol: float = 1.0e-7 + final_error_tol: float = 1.0e-5 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def make_box_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = pv.Box((0.0, 1.0, 0.0, 1.0, 0.0, 1.0), quads=False) + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + return melon.tet.fix_winding(mesh) + + +def activation_from_y_stretch(y_stretch: float) -> np.ndarray: + if y_stretch <= 0.0: + msg = f"y_stretch must be positive, got {y_stretch}" + raise ValueError(msg) + activation = np.zeros(6, dtype=np.float64) + activation[1] = y_stretch - 1.0 + return activation + + +def activation_inv_from_activation(activation: np.ndarray) -> np.ndarray: + stretch = 1.0 + activation[:3] + activation_inv = np.zeros(6, dtype=np.float64) + activation_inv[:3] = (1.0 / stretch) - 1.0 + return activation_inv + + +def target_displacement(points: np.ndarray, y_stretch: float) -> np.ndarray: + y0 = points[:, 1].min() + displacement = np.zeros_like(points) + displacement[:, 1] = (points[:, 1] - y0) * (y_stretch - 1.0) + return displacement + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + y = mesh.points[:, 1] + fixed = np.isclose(y, y.min()) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[fixed, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedYMin"] = fixed.astype(np.int8) + + +def add_material(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + from liblaf.apple.common import ACTIVATION, LAMBDA, MU, NU, lame_converter + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_converter(cfg.E, cfg.nu) + activation = activation_from_y_stretch(cfg.y_stretch) + activation_inv = activation_inv_from_activation(activation) + + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, cfg.E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, cfg.nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + mesh.cell_data[ACTIVATION.vtk] = np.repeat( + activation[np.newaxis, :], mesh.n_cells, axis=0 + ) + mesh.cell_data["ExpectedActivationInv"] = np.repeat( + activation_inv[np.newaxis, :], mesh.n_cells, axis=0 + ) + mesh.cell_data["ExpectedYStretch"] = np.full( + mesh.n_cells, cfg.y_stretch, dtype=np.float64 + ) + return activation + + +def add_reference_fields( + mesh: pv.UnstructuredGrid, + cfg: Config, + target: np.ndarray, + activation: np.ndarray, +) -> None: + mesh.point_data["ExpectedDisplacement"] = target + mesh.point_data["ExpectedPoint"] = mesh.points + target + mesh.field_data["E"] = np.asarray([cfg.E]) + mesh.field_data["Nu"] = np.asarray([cfg.nu]) + mesh.field_data["ExpectedYStretch"] = np.asarray([cfg.y_stretch]) + mesh.field_data["Activation"] = activation[np.newaxis, :] + mesh.field_data["ExpectedActivationInv"] = activation_inv_from_activation( + activation + )[np.newaxis, :] + mesh.field_data["WithCollision"] = np.asarray([0]) + + +def build_model(mesh: pv.UnstructuredGrid): + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookeanActive + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="active")) + return Forward(builder.finalize()) + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def tensor_scalar(value: Any) -> float: + return float(to_numpy(value).reshape(-1)[0]) + + +def full_state_like(forward: Any, displacement: np.ndarray): + u = torch.as_tensor( + displacement, dtype=forward.state.u.dtype, device=forward.state.u.device + ) + return forward.model.State(u=u) + + +def state_metrics(forward: Any, state: Any, prefix: str) -> dict[str, float]: + energy = tensor_scalar(forward.problem.fun(state)) + free_grad = forward.problem.grad(state) + full_grad = forward.model.grad(state) + return { + f"{prefix}_energy": energy, + f"{prefix}_free_grad_norm": float(np.linalg.norm(to_numpy(free_grad))), + f"{prefix}_full_grad_norm": float(np.linalg.norm(to_numpy(full_grad))), + } + + +def result_mesh( + mesh: pv.UnstructuredGrid, + displacement: np.ndarray, + expected: np.ndarray, + metrics: dict[str, float | str], +) -> pv.UnstructuredGrid: + result = mesh.copy(deep=True) + error = displacement - expected + result.point_data["Displacement"] = displacement + result.point_data["ExpectedDisplacement"] = expected + result.point_data["ActivationError"] = error + result.point_data["DeformedPoint"] = result.points + displacement + result.point_data["ExpectedPoint"] = result.points + expected + result.point_data["ActivationErrorNorm"] = np.linalg.norm(error, axis=1) + for name, value in metrics.items(): + if isinstance(value, str): + continue + result.field_data[name] = np.asarray([value]) + return result + + +def solve( + mesh: pv.UnstructuredGrid, cfg: Config, expected: np.ndarray +) -> tuple[pv.UnstructuredGrid, dict[str, float | str]]: + from liblaf.apple.common import GLOBAL_POINT_ID + + forward = build_model(mesh) + + rest_state = full_state_like(forward, np.zeros_like(expected)) + expected_state = full_state_like(forward, expected) + + metrics: dict[str, float | str] = {} + metrics.update(state_metrics(forward, rest_state, "rest")) + metrics.update(state_metrics(forward, expected_state, "expected")) + metrics.update(state_metrics(forward, forward.state, "initial")) + + solution = forward.step() + displacement = to_numpy(forward.state.u)[mesh.point_data[GLOBAL_POINT_ID.vtk]] + error = displacement - expected + + metrics.update(state_metrics(forward, forward.state, "final")) + metrics["max_activation_error"] = float(np.linalg.norm(error, axis=1).max()) + metrics["rms_activation_error"] = float(np.sqrt(np.mean(np.square(error)))) + metrics["optimizer_steps"] = float(solution.state.step) + metrics["optimizer_result"] = solution.result.name + metrics["activation_check_pass"] = float( + metrics["expected_energy"] <= cfg.target_energy_tol + and metrics["expected_free_grad_norm"] <= cfg.target_grad_tol + and metrics["max_activation_error"] <= cfg.final_error_tol + ) + metrics["n_points"] = float(mesh.n_points) + metrics["n_cells"] = float(mesh.n_cells) + metrics["n_fixed"] = float(forward.model.n_fixed) + metrics["n_free"] = float(forward.model.n_free) + + return result_mesh(mesh, displacement, expected, metrics), metrics + + +def main(cfg: Config) -> None: + configure_runtime() + + mesh = make_box_mesh(cfg) + expected = target_displacement(mesh.points, cfg.y_stretch) + activation = add_material(mesh, cfg) + add_boundary_conditions(mesh) + add_reference_fields(mesh, cfg, expected, activation) + + melon.save(cfg.output_input, mesh) + result, metrics = solve(mesh, cfg, expected) + melon.save(cfg.output, result) + + cherries.log_metrics( + {name: value for name, value in metrics.items() if not isinstance(value, str)} + ) + print(metrics) + print(f"saved: {cfg.output}") + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/src/10-stretched-cylinder-no-collision.py b/exp/2026/05/13/toy/src/10-stretched-cylinder-no-collision.py new file mode 100644 index 000000000..dac45c421 --- /dev/null +++ b/exp/2026/05/13/toy/src/10-stretched-cylinder-no-collision.py @@ -0,0 +1,158 @@ +from pathlib import Path +from typing import Any + +import numpy as np +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "10-stretched-cylinder-no-collision" + + +class Config(cherries.BaseConfig): + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + + E: float = 1.0 + nu: float = 0.49 + lr: float = 0.01 + coarsen: bool = False + x_min_displacement: float = -0.25 + x_max_displacement: float = 0.25 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def make_cylinder_surface() -> pv.PolyData: + surface: pv.PolyData = pv.Cylinder() + surface.triangulate(inplace=True) + surface.compute_normals(auto_orient_normals=True, inplace=True) + return surface + + +def make_cylinder_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_cylinder_surface() + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + return melon.tet.fix_winding(mesh) + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + x = mesh.points[:, 0] + x_min = np.isclose(x, x.min()) + x_max = np.isclose(x, x.max()) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[x_min | x_max, :] = True + fixed_value[x_min, 0] = cfg.x_min_displacement + fixed_value[x_max, 0] = cfg.x_max_displacement + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedSide"] = np.select([x_min, x_max], [-1, 1], default=0) + + +def add_material(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import LAMBDA, MU, NU, lame_converter + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_converter(cfg.E, cfg.nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, cfg.E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, cfg.nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + mesh.field_data["E"] = np.asarray([cfg.E]) + mesh.field_data["Nu"] = np.asarray([cfg.nu]) + mesh.field_data["Lambda"] = np.asarray([float(lambda_)]) + mesh.field_data["Mu"] = np.asarray([float(mu)]) + mesh.field_data["XMinDisplacement"] = np.asarray([cfg.x_min_displacement]) + mesh.field_data["XMaxDisplacement"] = np.asarray([cfg.x_max_displacement]) + mesh.field_data["WithCollision"] = np.asarray([0]) + + +def build_model(mesh: pv.UnstructuredGrid): + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + builder.add_potential(StableNeoHookean.from_pyvista(mesh)) + return Forward(builder.finalize()) + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def tensor_scalar(value: Any) -> float: + return float(to_numpy(value).reshape(-1)[0]) + + +def solve( + mesh: pv.UnstructuredGrid, +) -> tuple[pv.UnstructuredGrid, dict[str, float | str]]: + from liblaf.apple.common import GLOBAL_POINT_ID + + forward = build_model(mesh) + + initial_energy = tensor_scalar(forward.problem.fun(forward.state)) + solution = forward.step() + final_energy = tensor_scalar(forward.problem.fun(forward.state)) + + displacement = to_numpy(forward.state.u)[mesh.point_data[GLOBAL_POINT_ID.vtk]] + result = mesh.copy(deep=True) + result.point_data["Displacement"] = displacement + result.point_data["DeformedPoint"] = result.points + displacement + + metrics: dict[str, float | str] = { + "initial_energy": initial_energy, + "final_energy": final_energy, + "optimizer_steps": float(solution.state.step), + "optimizer_result": solution.result.name, + "n_points": float(mesh.n_points), + "n_cells": float(mesh.n_cells), + "n_fixed": float(forward.model.n_fixed), + "n_free": float(forward.model.n_free), + } + for name, value in metrics.items(): + if isinstance(value, str): + continue + result.field_data[name] = np.asarray([value]) + return result, metrics + + +def main(cfg: Config) -> None: + configure_runtime() + + mesh = make_cylinder_mesh(cfg) + add_boundary_conditions(mesh, cfg) + add_material(mesh, cfg) + + melon.save(cfg.output_input, mesh) + result, metrics = solve(mesh) + melon.save(cfg.output, result) + + cherries.log_metrics( + {name: value for name, value in metrics.items() if not isinstance(value, str)} + ) + print(metrics) + print(f"saved: {cfg.output}") + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/src/20-activated-boxes-collision.py b/exp/2026/05/13/toy/src/20-activated-boxes-collision.py new file mode 100644 index 000000000..eb3f6c75f --- /dev/null +++ b/exp/2026/05/13/toy/src/20-activated-boxes-collision.py @@ -0,0 +1,387 @@ +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "20-activated-boxes-collision" +LOWER_BOX = (0.0, 1.0, 0.0, 1.0, 0.0, 1.0) +UPPER_BOX = (0.0, 1.0, 1.5, 2.5, 0.0, 1.0) +LOWER_ACTIVE_BOX = (0.0, 1.0, 0.0, 0.5, 0.0, 1.0) +UPPER_ACTIVE_BOX = (0.0, 1.0, 2.0, 2.5, 0.0, 1.0) + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output_no_collision: Path = cherries.output(f"{OUTPUT_STEM}-no-collision.vtu") + output_collision: Path = cherries.output(f"{OUTPUT_STEM}-collision.vtu") + output_comparison: Path = cherries.output(f"{OUTPUT_STEM}-comparison.vtu") + + E: float = 1.0 + nu: float = 0.49 + lr: float = 0.05 + coarsen: bool = False + y_stretch: float = 2.0 + collision_stiffness_scale: float = 0.1 + optimizer_rtol: float = 5e-4 + active_fraction_tol: float = 1.0e-6 + fixed_atol: float = 1.0e-6 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def make_box(bounds: tuple[float, float, float, float, float, float]) -> pv.PolyData: + box = pv.Box(bounds, quads=False) + box.triangulate(inplace=True) + box.compute_normals(auto_orient_normals=True, inplace=True) + return box + + +def make_scene_surface() -> pv.PolyData: + surface = pv.merge([make_box(LOWER_BOX), make_box(UPPER_BOX)]) + surface.clean(inplace=True) + return surface + + +def make_scene_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_scene_surface() + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + mesh = melon.tet.fix_winding(mesh) + add_scene_tags(mesh) + add_activation_fractions(mesh) + return mesh + + +def add_scene_tags(mesh: pv.UnstructuredGrid) -> None: + point_box_id = np.where(mesh.points[:, 1] < 1.25, 0, 1).astype(np.int8) + cell_centers = mesh.cell_centers().points + cell_box_id = np.where(cell_centers[:, 1] < 1.25, 0, 1).astype(np.int8) + mesh.point_data["BoxId"] = point_box_id + mesh.cell_data["BoxId"] = cell_box_id + + +def add_activation_fractions(mesh: pv.UnstructuredGrid) -> None: + lower_active = make_box(LOWER_ACTIVE_BOX) + upper_active = make_box(UPPER_ACTIVE_BOX) + lower_fraction = np.asarray(melon.tet.compute_volume_fraction(mesh, lower_active)) + upper_fraction = np.asarray(melon.tet.compute_volume_fraction(mesh, upper_active)) + active_fraction = np.clip(lower_fraction + upper_fraction, 0.0, 1.0) + passive_fraction = np.clip(1.0 - active_fraction, 0.0, 1.0) + + mesh.cell_data["LowerActivationFraction"] = lower_fraction + mesh.cell_data["UpperActivationFraction"] = upper_fraction + mesh.cell_data["ActiveFraction"] = active_fraction + mesh.cell_data["PassiveFraction"] = passive_fraction + + +def activation_from_y_stretch(y_stretch: float) -> np.ndarray: + if y_stretch <= 0.0: + msg = f"y_stretch must be positive, got {y_stretch}" + raise ValueError(msg) + activation = np.zeros(6, dtype=np.float64) + activation[1] = y_stretch - 1.0 + return activation + + +def activation_inv_from_activation(activation: np.ndarray) -> np.ndarray: + stretch = 1.0 + activation[:3] + activation_inv = np.zeros(6, dtype=np.float64) + activation_inv[:3] = (1.0 / stretch) - 1.0 + return activation_inv + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + y = mesh.points[:, 1] + lower_fixed = np.isclose(y, LOWER_BOX[2], atol=cfg.fixed_atol) + upper_fixed = np.isclose(y, UPPER_BOX[3], atol=cfg.fixed_atol) + fixed = lower_fixed | upper_fixed + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[fixed, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedLowerYMin"] = lower_fixed.astype(np.int8) + mesh.point_data["FixedUpperYMax"] = upper_fixed.astype(np.int8) + + +def add_material_fields(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import ACTIVATION, FRACTION, LAMBDA, MU, NU, lame_converter + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_converter(cfg.E, cfg.nu) + activation_value = activation_from_y_stretch(cfg.y_stretch) + active = np.asarray(mesh.cell_data["ActiveFraction"]) > cfg.active_fraction_tol + activation = np.zeros((mesh.n_cells, 6), dtype=np.float64) + activation[active] = activation_value + + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, cfg.E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, cfg.nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + mesh.cell_data[ACTIVATION.vtk] = activation + mesh.cell_data[FRACTION.vtk] = np.asarray(mesh.cell_data["ActiveFraction"]) + mesh.cell_data["ActivationMask"] = active.astype(np.int8) + + mesh.field_data["E"] = np.asarray([cfg.E]) + mesh.field_data["Nu"] = np.asarray([cfg.nu]) + mesh.field_data["Lambda"] = np.asarray([float(lambda_)]) + mesh.field_data["Mu"] = np.asarray([float(mu)]) + mesh.field_data["ActivationStretch"] = np.asarray([[1.0, cfg.y_stretch, 1.0]]) + mesh.field_data["Activation"] = activation_value[np.newaxis, :] + mesh.field_data["ActivationInv"] = activation_inv_from_activation(activation_value)[ + np.newaxis, : + ] + mesh.field_data["CollisionStiffness"] = np.asarray( + [cfg.collision_stiffness_scale * cfg.E] + ) + mesh.field_data["OptimizerRtol"] = np.asarray([cfg.optimizer_rtol]) + mesh.field_data["TetWildLr"] = np.asarray([cfg.lr]) + + +def set_fraction(mesh: pv.UnstructuredGrid, name: str) -> None: + from liblaf.apple.common import FRACTION + + mesh.cell_data[FRACTION.vtk] = np.asarray(mesh.cell_data[name]) + + +def build_model(mesh: pv.UnstructuredGrid, cfg: Config, *, with_collision: bool): + from liblaf.apple.collision import CollisionBuilder + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanActive + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + + set_fraction(mesh, "PassiveFraction") + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="passive")) + + set_fraction(mesh, "ActiveFraction") + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="active")) + + if with_collision: + collision_builder = CollisionBuilder( + stiffness=cfg.collision_stiffness_scale * cfg.E + ) + collision_builder.add_tetmesh(mesh) + builder.collision = collision_builder + + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer(rtol=cfg.optimizer_rtol) + return forward + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def tensor_scalar(value: Any) -> float: + return float(to_numpy(value).reshape(-1)[0]) + + +def gap_metrics( + mesh: pv.UnstructuredGrid, displacement: np.ndarray, prefix: str +) -> dict[str, float]: + box_id = np.asarray(mesh.point_data["BoxId"]) + deformed_y = mesh.points[:, 1] + displacement[:, 1] + lower_y_max = float(deformed_y[box_id == 0].max()) + upper_y_min = float(deformed_y[box_id == 1].min()) + gap = upper_y_min - lower_y_max + return { + f"{prefix}_lower_y_max": lower_y_max, + f"{prefix}_upper_y_min": upper_y_min, + f"{prefix}_gap": gap, + f"{prefix}_overlap": max(0.0, -gap), + } + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, metrics: dict[str, float | str] +) -> None: + for name, value in metrics.items(): + field_name = "".join(part.title() for part in name.split("_")) + mesh.field_data[field_name] = np.asarray([value]) + + +def make_result_mesh( + mesh: pv.UnstructuredGrid, + displacement: np.ndarray, + metrics: dict[str, float | str], + *, + with_collision: bool, +) -> pv.UnstructuredGrid: + result = mesh.copy(deep=True) + result.point_data["Displacement"] = displacement + result.point_data["DisplacementNorm"] = np.linalg.norm(displacement, axis=1) + result.point_data["DeformedPoint"] = result.points + displacement + result.field_data["WithCollision"] = np.asarray([int(with_collision)]) + add_metric_fields(result, metrics) + return result + + +def solve( + base_mesh: pv.UnstructuredGrid, + cfg: Config, + *, + with_collision: bool, +) -> tuple[pv.UnstructuredGrid, np.ndarray, dict[str, float | str]]: + from liblaf.apple.common import GLOBAL_POINT_ID + + mesh = base_mesh.copy(deep=True) + forward = build_model(mesh, cfg, with_collision=with_collision) + + initial_energy = tensor_scalar(forward.problem.fun(forward.state)) + solution = forward.step() + final_energy = tensor_scalar(forward.problem.fun(forward.state)) + + global_ids = mesh.point_data[GLOBAL_POINT_ID.vtk] + displacement = to_numpy(forward.state.u)[global_ids] + metrics: dict[str, float | str] = { + "initial_energy": initial_energy, + "final_energy": final_energy, + "optimizer_steps": float(solution.state.step), + "optimizer_result": solution.result.name, + "max_displacement": float(np.linalg.norm(displacement, axis=1).max()), + "n_points": float(mesh.n_points), + "n_cells": float(mesh.n_cells), + "n_fixed": float(forward.model.n_fixed), + "n_free": float(forward.model.n_free), + } + metrics.update(gap_metrics(mesh, displacement, "final")) + return ( + make_result_mesh(mesh, displacement, metrics, with_collision=with_collision), + displacement, + metrics, + ) + + +def make_comparison( + base_mesh: pv.UnstructuredGrid, + no_collision: np.ndarray, + collision: np.ndarray, + no_collision_metrics: dict[str, float | str], + collision_metrics: dict[str, float | str], +) -> pv.UnstructuredGrid: + comparison = base_mesh.copy(deep=True) + comparison.point_data["DisplacementNoCollision"] = no_collision + comparison.point_data["DisplacementCollision"] = collision + comparison.point_data["CollisionDelta"] = collision - no_collision + comparison.point_data["Displacement"] = collision + comparison.point_data["DeformedPoint"] = comparison.points + collision + comparison.field_data["NoCollisionFinalGap"] = np.asarray( + [no_collision_metrics["final_gap"]] + ) + comparison.field_data["CollisionFinalGap"] = np.asarray( + [collision_metrics["final_gap"]] + ) + comparison.field_data["NoCollisionFinalOverlap"] = np.asarray( + [no_collision_metrics["final_overlap"]] + ) + comparison.field_data["CollisionFinalOverlap"] = np.asarray( + [collision_metrics["final_overlap"]] + ) + comparison.field_data["CollisionDeltaMax"] = np.asarray( + [float(np.linalg.norm(collision - no_collision, axis=1).max())] + ) + return comparison + + +def log_metrics( + no_collision_metrics: dict[str, float | str], + collision_metrics: dict[str, float | str], + cfg: Config, +) -> None: + metrics: dict[str, float] = { + "E": cfg.E, + "nu": cfg.nu, + "tetwild_lr": cfg.lr, + "collision_stiffness": cfg.collision_stiffness_scale * cfg.E, + "optimizer_rtol": cfg.optimizer_rtol, + } + metrics.update( + { + f"no_collision/{name}": value + for name, value in no_collision_metrics.items() + if not isinstance(value, str) + } + ) + metrics.update( + { + f"collision/{name}": value + for name, value in collision_metrics.items() + if not isinstance(value, str) + } + ) + cherries.log_metrics(metrics) + + +def main(cfg: Config) -> None: + configure_runtime() + + mesh = make_scene_mesh(cfg) + add_boundary_conditions(mesh, cfg) + add_material_fields(mesh, cfg) + melon.save(cfg.output_input, mesh) + + no_collision_result, no_collision_u, no_collision_metrics = solve( + mesh, cfg, with_collision=False + ) + melon.save(cfg.output_no_collision, no_collision_result) + + collision_result, collision_u, collision_metrics = solve( + mesh, cfg, with_collision=True + ) + melon.save(cfg.output_collision, collision_result) + + comparison = make_comparison( + mesh, + no_collision_u, + collision_u, + no_collision_metrics, + collision_metrics, + ) + melon.save(cfg.output_comparison, comparison) + + log_metrics(no_collision_metrics, collision_metrics, cfg) + print(f"saved: {cfg.output_input}") + print(f"saved: {cfg.output_no_collision}") + print(f"saved: {cfg.output_collision}") + print(f"saved: {cfg.output_comparison}") + print( + "final gap:", + f"{no_collision_metrics['final_gap']:.6g}", + "without collision,", + f"{collision_metrics['final_gap']:.6g}", + "with collision", + ) + print( + "final overlap:", + f"{no_collision_metrics['final_overlap']:.6g}", + "without collision,", + f"{collision_metrics['final_overlap']:.6g}", + "with collision", + ) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/src/20-smas-layer-bottom-force-collision.py b/exp/2026/05/13/toy/src/20-smas-layer-bottom-force-collision.py new file mode 100644 index 000000000..1a9457ad6 --- /dev/null +++ b/exp/2026/05/13/toy/src/20-smas-layer-bottom-force-collision.py @@ -0,0 +1,392 @@ +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "20-smas-layer-bottom-force-collision" +BODY_BOUNDS = (0.0, 1.0, 0.0, 0.1, 0.0, 1.0) +SMAS_BOUNDS = (0.0, 1.0, 0.04, 0.06, 0.0, 1.0) +FAT_FRACTION = "FatFraction" +SMAS_FRACTION = "SmasFraction" +SMAS_ACTIVE_TOL = 1.0e-6 + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + + E_fat: float = 1.0 + nu: float = 0.49 + smas_stiffness_ratio: float = 1.0e2 + lr: float = 0.02 + coarsen: bool = False + bottom_pressure: float = 0.3 + smas_prestrain: tuple[float, float, float, float, float, float] = ( + 0.8, + 1.0, + 0.8, + 0.0, + 0.0, + 0.0, + ) + collision_stiffness_scale: float = 0.1 + optimizer_max_steps: int = 3000 + rtol_primary: float = 5.0e-4 + rtol_secondary: float = 5.0e-4 + boundary_atol: float = 1.0e-2 + bottom_atol: float = 1.0e-6 + + @property + def E_smas(self) -> float: + return self.smas_stiffness_ratio * self.E_fat + + @property + def collision_stiffness(self) -> float: + return self.collision_stiffness_scale * self.E_fat + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def make_box(bounds: tuple[float, float, float, float, float, float]) -> pv.PolyData: + box = pv.Box(bounds, quads=False) + box.triangulate(inplace=True) + box.compute_normals(auto_orient_normals=True, inplace=True) + return box + + +def make_body_mesh(cfg: Config) -> pv.UnstructuredGrid: + surface = make_box(BODY_BOUNDS) + smas_layer = make_box(SMAS_BOUNDS) + mesh: pv.UnstructuredGrid = melon.tetwild(surface, lr=cfg.lr, coarsen=cfg.coarsen) + mesh = melon.tet.fix_winding(mesh) + + smas_fraction = np.asarray(melon.tet.compute_volume_fraction(mesh, smas_layer)) + mesh.cell_data[SMAS_FRACTION] = smas_fraction + mesh.cell_data[FAT_FRACTION] = np.clip(1.0 - smas_fraction, 0.0, 1.0) + mesh.cell_data["SmasActive"] = (smas_fraction > SMAS_ACTIVE_TOL).astype(np.int8) + return mesh + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + x = mesh.points[:, 0] + z = mesh.points[:, 2] + side = ( + np.isclose(x, BODY_BOUNDS[0], atol=cfg.boundary_atol) + | np.isclose(x, BODY_BOUNDS[1], atol=cfg.boundary_atol) + | np.isclose(z, BODY_BOUNDS[4], atol=cfg.boundary_atol) + | np.isclose(z, BODY_BOUNDS[5], atol=cfg.boundary_atol) + ) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[side, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedSide"] = side.astype(np.int8) + + +def ensure_global_point_ids(mesh: pv.UnstructuredGrid) -> None: + from liblaf.apple.common import GLOBAL_POINT_ID + + if GLOBAL_POINT_ID.vtk not in mesh.point_data: + mesh.point_data[GLOBAL_POINT_ID.vtk] = np.arange(mesh.n_points) + + +def add_bottom_force(mesh: pv.UnstructuredGrid, cfg: Config) -> pv.PolyData: + from liblaf.apple.common import FIXED_MASK, FORCE, GLOBAL_POINT_ID + + ensure_global_point_ids(mesh) + + surface: pv.PolyData = mesh.extract_surface(algorithm=None) + surface = melon.tri.compute_point_area(surface) + + bottom = surface.points[:, 1] <= BODY_BOUNDS[2] + cfg.bottom_atol + free_bottom = bottom & ~surface.point_data[FIXED_MASK.vtk][:, 0] + force = np.zeros((surface.n_points, 3), dtype=np.float64) + force[free_bottom, 1] = ( + cfg.bottom_pressure * surface.point_data["Area"][free_bottom] + ) + surface.point_data[FORCE.vtk] = force + surface.point_data["LoadedBottom"] = free_bottom.astype(np.int8) + + mesh.point_data[FORCE.vtk] = np.zeros((mesh.n_points, 3), dtype=np.float64) + global_ids = surface.point_data[GLOBAL_POINT_ID.vtk][free_bottom] + mesh.point_data[FORCE.vtk][global_ids] = force[free_bottom] + mesh.point_data["LoadedBottom"] = np.zeros(mesh.n_points, dtype=np.int8) + mesh.point_data["LoadedBottom"][global_ids] = 1 + + return surface + + +def add_reference_fields(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import FORCE + + smas_fraction = np.asarray(mesh.cell_data[SMAS_FRACTION]) + fat_fraction = np.asarray(mesh.cell_data[FAT_FRACTION]) + mesh.cell_data["EffectiveYoungModulus"] = ( + cfg.E_fat * fat_fraction + cfg.E_smas * smas_fraction + ) + mesh.cell_data["Nu"] = np.full(mesh.n_cells, cfg.nu, dtype=np.float64) + + total_force = float(np.asarray(mesh.point_data[FORCE.vtk])[:, 1].sum()) + mesh.field_data["Efat"] = np.asarray([cfg.E_fat]) + mesh.field_data["Esmas"] = np.asarray([cfg.E_smas]) + mesh.field_data["Nu"] = np.asarray([cfg.nu]) + mesh.field_data["TetWildLr"] = np.asarray([cfg.lr]) + mesh.field_data["BottomPressure"] = np.asarray([cfg.bottom_pressure]) + mesh.field_data["TotalBottomForce"] = np.asarray([total_force]) + mesh.field_data["CollisionStiffness"] = np.asarray([cfg.collision_stiffness]) + mesh.field_data["OptimizerMaxSteps"] = np.asarray([cfg.optimizer_max_steps]) + mesh.field_data["RtolPrimary"] = np.asarray([cfg.rtol_primary]) + mesh.field_data["RtolSecondary"] = np.asarray([cfg.rtol_secondary]) + mesh.field_data["SmasLayerBounds"] = np.asarray([SMAS_BOUNDS]) + mesh.field_data["SmasPrestrain"] = np.asarray([cfg.smas_prestrain]) + mesh.field_data["SmasActivation"] = activation_from_prestrain(cfg.smas_prestrain)[ + np.newaxis, : + ] + + +def add_material( + mesh: pv.UnstructuredGrid, *, E: float, nu: float, fraction: np.ndarray +) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU, lame_converter + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_converter(E, nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, float(lambda_), dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, float(mu), dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = fraction + + +def activation_from_prestrain( + prestrain: tuple[float, float, float, float, float, float], +) -> np.ndarray: + prestrain_array = np.asarray(prestrain, dtype=np.float64) + activation = prestrain_array.copy() + activation[:3] -= 1.0 + return activation + + +def add_smas_activation(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + from liblaf.apple.common import ACTIVATION + + smas = np.asarray(mesh.cell_data[SMAS_FRACTION]) > SMAS_ACTIVE_TOL + activation_value = activation_from_prestrain(cfg.smas_prestrain) + + activation = np.zeros((mesh.n_cells, 6), dtype=np.float64) + activation[smas] = activation_value + mesh.cell_data[ACTIVATION.vtk] = activation + mesh.cell_data["SmasActivation"] = activation + return activation_value + + +def build_model(body: pv.UnstructuredGrid, cfg: Config): + from liblaf.apple.collision import CollisionBuilder + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanActive + from liblaf.apple.warp.potential import ExternalForce + + if not np.isclose(cfg.rtol_primary, cfg.rtol_secondary): + msg = ( + "Forward.default_optimizer currently exposes one rtol; keep " + f"rtol_primary and rtol_secondary equal, got {cfg.rtol_primary} and " + f"{cfg.rtol_secondary}." + ) + raise ValueError(msg) + + builder = ModelBuilder() + builder.add_vertices(body) + add_boundary_conditions(body, cfg) + force_surface = add_bottom_force(body, cfg) + builder.add_fixed(body) + + add_material( + body, + E=cfg.E_fat, + nu=cfg.nu, + fraction=np.asarray(body.cell_data[FAT_FRACTION]), + ) + builder.add_potential(StableNeoHookean.from_pyvista(body, name="fat")) + + add_material( + body, + E=cfg.E_smas, + nu=cfg.nu, + fraction=np.asarray(body.cell_data[SMAS_FRACTION]), + ) + add_smas_activation(body, cfg) + builder.add_potential(StableNeoHookeanActive.from_pyvista(body, name="smas")) + builder.add_potential(ExternalForce.from_pyvista(force_surface, name="force")) + + collision_builder = CollisionBuilder(stiffness=cfg.collision_stiffness) + collision_builder.add_tetmesh(body) + builder.collision = collision_builder + + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer( + max_steps=cfg.optimizer_max_steps, + rtol=cfg.rtol_primary, + ) + return forward + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def tensor_scalar(value: Any) -> float: + return float(to_numpy(value).reshape(-1)[0]) + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, metrics: dict[str, float | str] +) -> None: + for name, value in metrics.items(): + if isinstance(value, str): + mesh.field_data["".join(part.title() for part in name.split("_"))] = ( + np.asarray([value]) + ) + else: + mesh.field_data["".join(part.title() for part in name.split("_"))] = ( + np.asarray([value]) + ) + + +def solve( + base_body: pv.UnstructuredGrid, cfg: Config +) -> tuple[pv.UnstructuredGrid, dict[str, float | str]]: + from liblaf.apple.common import GLOBAL_POINT_ID + + body = base_body.copy(deep=True) + forward = build_model(body, cfg) + + initial_energy = tensor_scalar(forward.problem.fun(forward.state)) + solution = forward.step() + final_energy = tensor_scalar(forward.problem.fun(forward.state)) + + global_ids = body.point_data[GLOBAL_POINT_ID.vtk] + displacement = to_numpy(forward.state.u)[global_ids] + deformed_points = body.points + displacement + metrics: dict[str, float | str] = { + "initial_energy": initial_energy, + "final_energy": final_energy, + "optimizer_steps": float(solution.state.step), + "optimizer_result": solution.result.name, + "max_displacement": float(np.linalg.norm(displacement, axis=1).max()), + "bottom_max_displacement_y": float( + displacement[ + np.asarray(body.point_data["LoadedBottom"], dtype=bool), 1 + ].max() + ), + "bottom_mean_displacement_y": float( + displacement[ + np.asarray(body.point_data["LoadedBottom"], dtype=bool), 1 + ].mean() + ), + "min_y": float(deformed_points[:, 1].min()), + "max_y": float(deformed_points[:, 1].max()), + "n_points": float(body.n_points), + "n_cells": float(body.n_cells), + "n_fixed": float(forward.model.n_fixed), + "n_free": float(forward.model.n_free), + "smas_active_cells": float( + np.count_nonzero( + np.asarray(body.cell_data[SMAS_FRACTION]) > SMAS_ACTIVE_TOL + ) + ), + } + + result = body.copy(deep=True) + result.point_data["Displacement"] = displacement + result.point_data["DisplacementNorm"] = np.linalg.norm(displacement, axis=1) + result.point_data["DeformedPoint"] = result.points + displacement + add_reference_fields(result, cfg) + add_metric_fields(result, metrics) + return result, metrics + + +def make_input_mesh(base_body: pv.UnstructuredGrid, cfg: Config) -> pv.UnstructuredGrid: + mesh = base_body.copy(deep=True) + add_boundary_conditions(mesh, cfg) + add_bottom_force(mesh, cfg) + add_smas_activation(mesh, cfg) + add_reference_fields(mesh, cfg) + return mesh + + +def log_metrics(metrics: dict[str, float | str], cfg: Config) -> None: + scalars: dict[str, float] = { + "E_fat": cfg.E_fat, + "E_smas": cfg.E_smas, + "nu": cfg.nu, + "tetwild_lr": cfg.lr, + "bottom_pressure": cfg.bottom_pressure, + "collision_stiffness": cfg.collision_stiffness, + "optimizer_max_steps": float(cfg.optimizer_max_steps), + "rtol_primary": cfg.rtol_primary, + "rtol_secondary": cfg.rtol_secondary, + "smas_prestrain_x": cfg.smas_prestrain[0], + "smas_prestrain_y": cfg.smas_prestrain[1], + "smas_prestrain_z": cfg.smas_prestrain[2], + "smas_activation_x": activation_from_prestrain(cfg.smas_prestrain)[0], + "smas_activation_y": activation_from_prestrain(cfg.smas_prestrain)[1], + "smas_activation_z": activation_from_prestrain(cfg.smas_prestrain)[2], + } + scalars.update( + {name: value for name, value in metrics.items() if not isinstance(value, str)} + ) + cherries.log_metrics(scalars) + + +def main(cfg: Config) -> None: + configure_runtime() + + body = make_body_mesh(cfg) + input_mesh = make_input_mesh(body, cfg) + melon.save(cfg.output_input, input_mesh) + + result, metrics = solve(body, cfg) + melon.save(cfg.output, result) + + log_metrics(metrics, cfg) + print(f"saved: {cfg.output_input}") + print(f"saved: {cfg.output}") + print( + f"optimizer: {metrics['optimizer_result']} in {metrics['optimizer_steps']:.0f} steps" + ) + print( + "bottom max displacement y:", + f"{metrics['bottom_max_displacement_y']:.6g}", + ) + print( + "bottom mean displacement y:", + f"{metrics['bottom_mean_displacement_y']:.6g}", + ) + print("max displacement:", f"{metrics['max_displacement']:.6g}") + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/src/30-inverse-activation-diff-forward-no-collision.py b/exp/2026/05/13/toy/src/30-inverse-activation-diff-forward-no-collision.py new file mode 100644 index 000000000..c397c4542 --- /dev/null +++ b/exp/2026/05/13/toy/src/30-inverse-activation-diff-forward-no-collision.py @@ -0,0 +1,498 @@ +import contextlib +import io +import json +import logging +import math +import warnings +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "30-inverse-activation-diff-forward-no-collision" +TARGET_STEM = "10-activation-fixed-side-no-collision" + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + target_input: Path = cherries.output(f"{TARGET_STEM}-input.vtu") + target_output: Path = cherries.output(f"{TARGET_STEM}.vtu") + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output_target: Path = cherries.output(f"{OUTPUT_STEM}-target.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + output_summary: Path = cherries.output(f"{OUTPUT_STEM}-summary.json") + + forward_rtol: float = 1.0e-5 + forward_max_steps: int = 800 + inverse_max_steps: int = 80 + inverse_lr: float = 0.1 + adam_beta1: float = 0.3 + adam_beta2: float = 0.8 + activation_min: float = -0.75 + activation_max: float = 1.5 + point_error_rel_tol: float = 1.0e-3 + activation_tol: float = 5.0e-3 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + logging.getLogger("liblaf.apple.forward._forward").setLevel(logging.WARNING) + logging.getLogger("liblaf.apple.inverse._diff_forward").setLevel(logging.WARNING) + warnings.filterwarnings( + "ignore", + message=r"The \.grad attribute of a Tensor that is not a leaf Tensor.*", + category=UserWarning, + ) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def require_path(path: Path) -> None: + if path.exists(): + return + msg = f"missing target file: {path}. Run {TARGET_STEM}.py first." + raise FileNotFoundError(msg) + + +def load_target(cfg: Config) -> tuple[pv.UnstructuredGrid, pv.UnstructuredGrid]: + require_path(cfg.target_input) + require_path(cfg.target_output) + input_mesh = pv.read(cfg.target_input) + target_mesh = pv.read(cfg.target_output) + if input_mesh.n_points != target_mesh.n_points: + msg = ( + "target input/output point counts differ: " + f"{input_mesh.n_points} != {target_mesh.n_points}" + ) + raise ValueError(msg) + if not np.allclose(input_mesh.points, target_mesh.points): + msg = "target input/output rest points differ" + raise ValueError(msg) + if "Displacement" not in target_mesh.point_data: + msg = f"{cfg.target_output} has no point_data['Displacement']" + raise KeyError(msg) + return input_mesh, target_mesh + + +def surface_point_ids(mesh: pv.UnstructuredGrid) -> np.ndarray: + surface = mesh.extract_surface(algorithm=None) + point_ids = np.asarray(surface.point_data["vtkOriginalPointIds"], dtype=np.int64) + return np.unique(point_ids) + + +def zero_activation(mesh: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + from liblaf.apple.common import ACTIVATION, ACTIVATION_INV + + result = mesh.copy(deep=True) + activation = np.zeros((result.n_cells, 6), dtype=np.float64) + result.cell_data[ACTIVATION.vtk] = activation + if ACTIVATION_INV.vtk in result.cell_data: + result.cell_data[ACTIVATION_INV.vtk] = activation.copy() + result.field_data["InitialActivation"] = np.zeros((1, 6), dtype=np.float64) + result.field_data["InitialActivationY"] = np.asarray([0.0]) + result.field_data["TargetSource"] = np.asarray([TARGET_STEM]) + return result + + +def target_activation(target_mesh: pv.UnstructuredGrid) -> np.ndarray: + from liblaf.apple.common import ACTIVATION + + if "Activation" in target_mesh.field_data: + return np.asarray(target_mesh.field_data["Activation"]).reshape(-1)[:6] + if ACTIVATION.vtk in target_mesh.cell_data: + return np.asarray(target_mesh.cell_data[ACTIVATION.vtk]).mean(axis=0) + msg = "target mesh has no activation field" + raise KeyError(msg) + + +def activation_vector(activation_y: float) -> np.ndarray: + activation = np.zeros(6, dtype=np.float64) + activation[1] = activation_y + return activation + + +def activation_inv_vector(activation_y: float) -> np.ndarray: + activation_inv = np.zeros(6, dtype=np.float64) + activation_inv[1] = (1.0 / (1.0 + activation_y)) - 1.0 + return activation_inv + + +def activation_inv_field(activation_y: torch.Tensor, n_cells: int) -> torch.Tensor: + activation_inv = torch.zeros( + (n_cells, 6), dtype=activation_y.dtype, device=activation_y.device + ) + activation_inv[:, 1] = (1.0 / (1.0 + activation_y)) - 1.0 + return activation_inv + + +def build_forward(mesh: pv.UnstructuredGrid, cfg: Config): + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookeanActive + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="active")) + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer( + max_steps=cfg.forward_max_steps, + rtol=cfg.forward_rtol, + ) + return forward + + +def material_tree( + base_materials: dict[str, dict[str, torch.Tensor]], + activation_y: torch.Tensor, + n_cells: int, +) -> dict[str, dict[str, torch.Tensor]]: + materials = {name: dict(values) for name, values in base_materials.items()} + materials["active"]["activation_inv"] = activation_inv_field(activation_y, n_cells) + return materials + + +def forward_quiet(differentiable_forward: Any, materials: Any) -> torch.Tensor: + with contextlib.redirect_stdout(io.StringIO()): + return differentiable_forward.forward(materials) + + +def surface_loss( + output: torch.Tensor, + target: torch.Tensor, + point_ids: torch.Tensor, +) -> torch.Tensor: + residual = output[point_ids] - target[point_ids] + return residual.square().mean() + + +def point_error_stats(residual: torch.Tensor) -> dict[str, torch.Tensor]: + point_error = torch.linalg.vector_norm(residual, dim=1) + return { + "mean": point_error.mean(), + "rms": torch.linalg.vector_norm(residual) / math.sqrt(residual.shape[0]), + "max": point_error.max(), + } + + +def solve_inverse( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + surface_ids: np.ndarray, + point_error_tol: float, + cfg: Config, +) -> tuple[np.ndarray, float, list[dict[str, float]], str, int]: + from liblaf.apple.inverse import DifferentiableForward + + forward = build_forward(mesh, cfg) + differentiable_forward = DifferentiableForward(forward) + base_materials = forward.model.get_materials() + + target = torch.as_tensor( + target_displacement, + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + surface_ids_t = torch.as_tensor( + surface_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + activation_y = torch.nn.Parameter(torch.zeros(())) + optimizer = torch.optim.Adam( + [activation_y], + lr=cfg.inverse_lr, + betas=(cfg.adam_beta1, cfg.adam_beta2), + ) + + trace: list[dict[str, float]] = [] + stop_reason = "inverse_max_steps" + optimizer_steps = 0 + for step in range(cfg.inverse_max_steps + 1): + optimizer.zero_grad() + materials = material_tree(base_materials, activation_y, mesh.n_cells) + output = forward_quiet(differentiable_forward, materials) + loss = surface_loss(output, target, surface_ids_t) + loss.backward() + if activation_y.grad is None: + msg = "differentiable forward did not produce activation gradients" + raise RuntimeError(msg) + if not torch.isfinite(activation_y.grad): + grad = float(activation_y.grad.detach().cpu()) + msg = f"non-finite inverse gradient at step {step}: {grad}" + raise FloatingPointError(msg) + + residual = output.detach()[surface_ids_t] - target[surface_ids_t] + error_stats = point_error_stats(residual) + grad_value = float(activation_y.grad.detach().cpu()) + loss_value = float(loss.detach().cpu()) + surface_mean_error = float(error_stats["mean"].cpu()) + stopped = surface_mean_error <= point_error_tol + if stopped: + stop_reason = "point_error_tol" + elif optimizer_steps < cfg.inverse_max_steps: + optimizer.step() + optimizer_steps += 1 + with torch.no_grad(): + activation_y.clamp_(cfg.activation_min, cfg.activation_max) + trace.append( + { + "step": float(step), + "loss": loss_value, + "surface_mean_error": surface_mean_error, + "surface_rms_error": float(error_stats["rms"].cpu()), + "surface_max_error": float(error_stats["max"].cpu()), + "activation_y": float(activation_y.detach().cpu()), + "grad_activation_y": grad_value, + "optimizer_steps": float(optimizer_steps), + "stopped": float(stopped), + } + ) + if stopped or optimizer_steps >= cfg.inverse_max_steps: + break + + final_activation_y = float(activation_y.detach().cpu()) + final_y = torch.as_tensor( + final_activation_y, + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + final_materials = material_tree(base_materials, final_y, mesh.n_cells) + with torch.no_grad(): + output = forward_quiet(differentiable_forward, final_materials) + return to_numpy(output), final_activation_y, trace, stop_reason, optimizer_steps + + +def add_surface_mask(mesh: pv.UnstructuredGrid, surface_ids: np.ndarray) -> None: + mask = np.zeros(mesh.n_points, dtype=np.int8) + mask[surface_ids] = 1 + mesh.point_data["SurfaceMask"] = mask + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, + metrics: dict[str, float | int | bool | str], +) -> None: + for name, value in metrics.items(): + if isinstance(value, str): + continue + mesh.field_data[name] = np.asarray([value]) + + +def make_target_mesh( + target_mesh: pv.UnstructuredGrid, + surface_ids: np.ndarray, +) -> pv.UnstructuredGrid: + result = target_mesh.copy(deep=True) + add_surface_mask(result, surface_ids) + result.point_data["TargetDisplacement"] = target_mesh.point_data["Displacement"] + result.point_data["TargetPoint"] = ( + target_mesh.points + result.point_data["TargetDisplacement"] + ) + return result + + +def make_result_mesh( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + displacement: np.ndarray, + target_activation_value: np.ndarray, + recovered_activation_y: float, + surface_ids: np.ndarray, + metrics: dict[str, float | int | bool | str], +) -> pv.UnstructuredGrid: + result = mesh.copy(deep=True) + add_surface_mask(result, surface_ids) + error = displacement - target_displacement + target_activation_inv = activation_inv_vector(float(target_activation_value[1])) + recovered_activation = activation_vector(recovered_activation_y) + recovered_activation_inv = activation_inv_vector(recovered_activation_y) + + result.point_data["Displacement"] = displacement + result.point_data["TargetDisplacement"] = target_displacement + result.point_data["DisplacementError"] = error + result.point_data["DisplacementErrorNorm"] = np.linalg.norm(error, axis=1) + result.point_data["DeformedPoint"] = result.points + displacement + result.point_data["TargetPoint"] = result.points + target_displacement + + result.cell_data["TargetActivation"] = np.repeat( + target_activation_value[np.newaxis, :], result.n_cells, axis=0 + ) + result.cell_data["RecoveredActivation"] = np.repeat( + recovered_activation[np.newaxis, :], result.n_cells, axis=0 + ) + result.cell_data["ActivationError"] = ( + result.cell_data["RecoveredActivation"] - result.cell_data["TargetActivation"] + ) + result.cell_data["TargetActivationInv"] = np.repeat( + target_activation_inv[np.newaxis, :], result.n_cells, axis=0 + ) + result.cell_data["RecoveredActivationInv"] = np.repeat( + recovered_activation_inv[np.newaxis, :], result.n_cells, axis=0 + ) + add_metric_fields(result, metrics) + return result + + +def summarize( + target_activation_value: np.ndarray, + recovered_activation_y: float, + target_displacement: np.ndarray, + displacement: np.ndarray, + surface_ids: np.ndarray, + trace: list[dict[str, float]], + stop_reason: str, + optimizer_steps: int, + bbox_diagonal: float, + point_error_tol: float, + cfg: Config, +) -> dict[str, Any]: + error = displacement - target_displacement + error_norm = np.linalg.norm(error, axis=1) + surface_error = error[surface_ids] + surface_error_norm = np.linalg.norm(surface_error, axis=1) + target_activation_y = float(target_activation_value[1]) + recovered_activation = activation_vector(recovered_activation_y) + activation_abs_error = abs(recovered_activation_y - target_activation_y) + final_loss = float(np.mean(np.square(surface_error))) + surface_mean = float(surface_error_norm.mean()) + surface_rms = float(np.linalg.norm(surface_error) / math.sqrt(surface_ids.size)) + all_rms = float(np.linalg.norm(error) / math.sqrt(error.shape[0])) + metrics: dict[str, Any] = { + "target_input": str(cfg.target_input), + "target_output": str(cfg.target_output), + "n_points": int(displacement.shape[0]), + "n_surface_points": int(surface_ids.size), + "inverse_max_steps": int(cfg.inverse_max_steps), + "optimizer_steps": int(optimizer_steps), + "stop_reason": stop_reason, + "inverse_lr": float(cfg.inverse_lr), + "adam_beta1": float(cfg.adam_beta1), + "adam_beta2": float(cfg.adam_beta2), + "forward_rtol": float(cfg.forward_rtol), + "bbox_diagonal": bbox_diagonal, + "point_error_rel_tol": float(cfg.point_error_rel_tol), + "point_error_tol": point_error_tol, + "target_activation_y": target_activation_y, + "recovered_activation_y": recovered_activation_y, + "activation_abs_error": activation_abs_error, + "target_activation": target_activation_value.tolist(), + "recovered_activation": recovered_activation.tolist(), + "final_loss": final_loss, + "surface_mean_error": surface_mean, + "surface_rms_error": surface_rms, + "surface_max_error": float(surface_error_norm.max()), + "all_rms_error": all_rms, + "all_max_error": float(error_norm.max()), + "trace": trace, + } + metrics["passed"] = bool( + stop_reason == "point_error_tol" + and surface_mean <= point_error_tol + and activation_abs_error <= cfg.activation_tol + ) + return metrics + + +def save_summary(path: Path, summary: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(summary, indent=2), encoding="utf-8") + + +def main(cfg: Config) -> None: + configure_runtime() + + input_mesh, target_mesh = load_target(cfg) + surface_ids = surface_point_ids(input_mesh) + target_displacement = np.asarray(target_mesh.point_data["Displacement"]) + target_activation_value = target_activation(target_mesh) + bbox_diagonal = float(input_mesh.length) + point_error_tol = cfg.point_error_rel_tol * bbox_diagonal + + inverse_input = zero_activation(input_mesh) + add_surface_mask(inverse_input, surface_ids) + melon.save(cfg.output_input, inverse_input) + melon.save(cfg.output_target, make_target_mesh(target_mesh, surface_ids)) + + inverse_mesh = inverse_input.copy(deep=True) + displacement, recovered_activation_y, trace, stop_reason, optimizer_steps = ( + solve_inverse( + inverse_mesh, target_displacement, surface_ids, point_error_tol, cfg + ) + ) + summary = summarize( + target_activation_value, + recovered_activation_y, + target_displacement, + displacement, + surface_ids, + trace, + stop_reason, + optimizer_steps, + bbox_diagonal, + point_error_tol, + cfg, + ) + metrics = { + name: value + for name, value in summary.items() + if isinstance(value, int | float | bool) + } + result = make_result_mesh( + inverse_mesh, + target_displacement, + displacement, + target_activation_value, + recovered_activation_y, + surface_ids, + metrics, + ) + melon.save(cfg.output, result) + save_summary(cfg.output_summary, summary) + + cherries.log_metrics(metrics) + print( + "activation_y:", + f"target={summary['target_activation_y']:.8f}", + f"recovered={summary['recovered_activation_y']:.8f}", + f"abs_error={summary['activation_abs_error']:.3e}", + ) + print( + "surface error:", + f"mean={summary['surface_mean_error']:.3e}", + f"rms={summary['surface_rms_error']:.3e}", + f"max={summary['surface_max_error']:.3e}", + f"tol={summary['point_error_tol']:.3e}", + f"loss={summary['final_loss']:.3e}", + ) + print( + "inverse stop:", + f"reason={summary['stop_reason']}", + f"optimizer_steps={summary['optimizer_steps']}", + f"bbox_diagonal={summary['bbox_diagonal']:.6g}", + ) + print(f"saved: {cfg.output}") + print(f"saved: {cfg.output_summary}") + if not summary["passed"]: + msg = "inverse activation recovery missed the geometry-scaled tolerance" + raise RuntimeError(msg) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/src/40-inverse-activation-diff-forward-collision.py b/exp/2026/05/13/toy/src/40-inverse-activation-diff-forward-collision.py new file mode 100644 index 000000000..8b51a9c18 --- /dev/null +++ b/exp/2026/05/13/toy/src/40-inverse-activation-diff-forward-collision.py @@ -0,0 +1,589 @@ +import json +import math +import warnings +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "40-inverse-activation-diff-forward-collision" +TARGET_STEM = "20-activated-boxes-collision" + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + target_input: Path = cherries.output(f"{TARGET_STEM}-input.vtu") + target_output: Path = cherries.output(f"{TARGET_STEM}-collision.vtu") + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output_target: Path = cherries.output(f"{OUTPUT_STEM}-target.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + output_series: Path = cherries.output(f"{OUTPUT_STEM}-steps.vtu.series") + output_summary: Path = cherries.output(f"{OUTPUT_STEM}-summary.json") + + forward_rtol: float = 1.0e-3 + forward_atol: float = 1.0e-3 + forward_max_steps: int = 5000 + inverse_max_steps: int = 120 + inverse_lr: float = 0.5 + adam_beta1: float = 0.0 + adam_beta2: float = 0.9 + activation_min: float = -0.75 + activation_max: float = 1.5 + point_error_rel_tol: float = 1.0e-3 + activation_tol: float = 2.5e-2 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + warnings.filterwarnings( + "ignore", + message=r"The \.grad attribute of a Tensor that is not a leaf Tensor.*", + category=UserWarning, + ) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def require_path(path: Path) -> None: + if path.exists(): + return + msg = f"missing target file: {path}. Run {TARGET_STEM}.py first." + raise FileNotFoundError(msg) + + +def load_target(cfg: Config) -> tuple[pv.UnstructuredGrid, pv.UnstructuredGrid]: + require_path(cfg.target_input) + require_path(cfg.target_output) + input_mesh = pv.read(cfg.target_input) + target_mesh = pv.read(cfg.target_output) + if input_mesh.n_points != target_mesh.n_points: + msg = ( + "target input/output point counts differ: " + f"{input_mesh.n_points} != {target_mesh.n_points}" + ) + raise ValueError(msg) + if not np.allclose(input_mesh.points, target_mesh.points): + msg = "target input/output rest points differ" + raise ValueError(msg) + if "Displacement" not in target_mesh.point_data: + msg = f"{cfg.target_output} has no point_data['Displacement']" + raise KeyError(msg) + return input_mesh, target_mesh + + +def surface_point_ids(mesh: pv.UnstructuredGrid) -> np.ndarray: + surface = mesh.extract_surface(algorithm=None) + point_ids = np.asarray(surface.point_data["vtkOriginalPointIds"], dtype=np.int64) + return np.unique(point_ids) + + +def zero_activation(mesh: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + from liblaf.apple.common import ACTIVATION, ACTIVATION_INV + + result = mesh.copy(deep=True) + activation = np.zeros((result.n_cells, 6), dtype=np.float64) + result.cell_data[ACTIVATION.vtk] = activation + if ACTIVATION_INV.vtk in result.cell_data: + result.cell_data[ACTIVATION_INV.vtk] = activation.copy() + result.field_data["InitialActivation"] = np.zeros((1, 6), dtype=np.float64) + result.field_data["InitialActivationY"] = np.asarray([0.0]) + result.field_data["TargetSource"] = np.asarray([TARGET_STEM]) + return result + + +def target_activation(target_mesh: pv.UnstructuredGrid) -> np.ndarray: + from liblaf.apple.common import ACTIVATION + + if "Activation" in target_mesh.field_data: + return np.asarray(target_mesh.field_data["Activation"]).reshape(-1)[:6] + if ACTIVATION.vtk in target_mesh.cell_data: + return np.asarray(target_mesh.cell_data[ACTIVATION.vtk]).mean(axis=0) + msg = "target mesh has no activation field" + raise KeyError(msg) + + +def activation_vector(activation_y: float) -> np.ndarray: + activation = np.zeros(6, dtype=np.float64) + activation[1] = activation_y + return activation + + +def activation_inv_vector(activation_y: float) -> np.ndarray: + activation_inv = np.zeros(6, dtype=np.float64) + activation_inv[1] = (1.0 / (1.0 + activation_y)) - 1.0 + return activation_inv + + +def activation_inv_field(activation_y: torch.Tensor, n_cells: int) -> torch.Tensor: + activation_inv = torch.zeros( + (n_cells, 6), dtype=activation_y.dtype, device=activation_y.device + ) + activation_inv[:, 1] = (1.0 / (1.0 + activation_y)) - 1.0 + return activation_inv + + +def set_fraction(mesh: pv.UnstructuredGrid, name: str) -> None: + from liblaf.apple.common import FRACTION + + mesh.cell_data[FRACTION.vtk] = np.asarray(mesh.cell_data[name]) + + +def build_forward(mesh: pv.UnstructuredGrid, cfg: Config): + from liblaf.apple.collision import CollisionBuilder + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanActive + + collision_stiffness = float(np.asarray(mesh.field_data["CollisionStiffness"])[0]) + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + + set_fraction(mesh, "PassiveFraction") + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="passive")) + + set_fraction(mesh, "ActiveFraction") + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="active")) + + collision_builder = CollisionBuilder(stiffness=collision_stiffness) + collision_builder.add_tetmesh(mesh) + builder.collision = collision_builder + + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer( + max_steps=cfg.forward_max_steps, + atol=cfg.forward_atol, + rtol=cfg.forward_rtol, + ) + return forward + + +def material_tree( + base_materials: dict[str, dict[str, torch.Tensor]], + activation_y: torch.Tensor, + n_cells: int, +) -> dict[str, dict[str, torch.Tensor]]: + materials = {name: dict(values) for name, values in base_materials.items()} + materials["active"]["activation_inv"] = activation_inv_field(activation_y, n_cells) + return materials + + +def point_error_stats(residual: torch.Tensor) -> dict[str, torch.Tensor]: + point_error = torch.linalg.vector_norm(residual, dim=1) + return { + "mean": point_error.mean(), + "rms": torch.linalg.vector_norm(residual) / math.sqrt(residual.shape[0]), + "max": point_error.max(), + } + + +def inverse_tensors( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + surface_ids: np.ndarray, +) -> tuple[np.ndarray, torch.Tensor, torch.Tensor, torch.Tensor]: + from liblaf.apple.common import GLOBAL_POINT_ID + + global_ids = np.asarray(mesh.point_data[GLOBAL_POINT_ID.vtk], dtype=np.int64) + surface_global_ids = global_ids[surface_ids] + target = torch.as_tensor( + target_displacement, + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + surface_ids_t = torch.as_tensor( + surface_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + surface_global_ids_t = torch.as_tensor( + surface_global_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + return global_ids, target, surface_ids_t, surface_global_ids_t + + +def solve_inverse( # noqa: PLR0915 + mesh: pv.UnstructuredGrid, + target_activation_value: np.ndarray, + target_displacement: np.ndarray, + surface_ids: np.ndarray, + point_error_tol: float, + cfg: Config, + series_writer: Any, +) -> tuple[np.ndarray, float, list[dict[str, float]], str, int]: + from liblaf.apple.inverse import DifferentiableForward + + forward = build_forward(mesh, cfg) + differentiable_forward = DifferentiableForward(forward) + base_materials = forward.model.get_materials() + global_ids, target, surface_ids_t, surface_global_ids_t = inverse_tensors( + mesh, target_displacement, surface_ids + ) + activation_y = torch.nn.Parameter(torch.zeros(())) + optimizer = torch.optim.Adam( + [activation_y], + lr=cfg.inverse_lr, + betas=(cfg.adam_beta1, cfg.adam_beta2), + ) + + trace: list[dict[str, float]] = [] + stop_reason = "inverse_max_steps" + optimizer_steps = 0 + best_displacement: np.ndarray | None = None + best_activation_y = math.nan + best_surface_mean_error = math.inf + for step in range(cfg.inverse_max_steps + 1): + optimizer.zero_grad() + materials = material_tree(base_materials, activation_y, mesh.n_cells) + evaluated_activation_y = float(activation_y.detach().cpu()) + print( + "inverse forward:", + f"step={step:03d}", + f"activation_y={evaluated_activation_y:.8f}", + flush=True, + ) + output = differentiable_forward.forward(materials) + print("inverse backward:", f"step={step:03d}", flush=True) + residual = output[surface_global_ids_t] - target[surface_ids_t] + loss = residual.square().mean() + loss.backward() + if activation_y.grad is None: + msg = "differentiable forward did not produce activation gradients" + raise RuntimeError(msg) + if not torch.isfinite(activation_y.grad): + grad = float(activation_y.grad.detach().cpu()) + msg = f"non-finite inverse gradient at step {step}: {grad}" + raise FloatingPointError(msg) + + error_stats = point_error_stats(residual.detach()) + grad_value = float(activation_y.grad.detach().cpu()) + loss_value = float(loss.detach().cpu()) + surface_mean_error = float(error_stats["mean"].cpu()) + displacement = to_numpy(output)[global_ids] + if surface_mean_error < best_surface_mean_error: + best_surface_mean_error = surface_mean_error + best_activation_y = evaluated_activation_y + best_displacement = displacement + stopped = surface_mean_error <= point_error_tol + if stopped: + stop_reason = "point_error_tol" + elif optimizer_steps < cfg.inverse_max_steps: + optimizer.step() + optimizer_steps += 1 + with torch.no_grad(): + activation_y.clamp_(cfg.activation_min, cfg.activation_max) + trace.append( + { + "step": float(step), + "loss": loss_value, + "surface_mean_error": surface_mean_error, + "surface_rms_error": float(error_stats["rms"].cpu()), + "surface_max_error": float(error_stats["max"].cpu()), + "activation_y": evaluated_activation_y, + "next_activation_y": float(activation_y.detach().cpu()), + "grad_activation_y": grad_value, + "optimizer_steps": float(optimizer_steps), + "stopped": float(stopped), + "best_surface_mean_error": best_surface_mean_error, + "best_activation_y": best_activation_y, + } + ) + step_mesh = make_result_mesh( + mesh, + target_displacement, + displacement, + target_activation_value, + evaluated_activation_y, + surface_ids, + { + "inverse_step": step, + "optimizer_steps": optimizer_steps, + "loss": loss_value, + "surface_mean_error": surface_mean_error, + "surface_rms_error": float(error_stats["rms"].cpu()), + "surface_max_error": float(error_stats["max"].cpu()), + "point_error_tol": point_error_tol, + "activation_y": evaluated_activation_y, + "next_activation_y": float(activation_y.detach().cpu()), + "grad_activation_y": grad_value, + "best_surface_mean_error": best_surface_mean_error, + "best_activation_y": best_activation_y, + "stopped": stopped, + }, + ) + series_writer.append(step_mesh, time=float(step)) + print( + "inverse step:", + f"{step:03d}", + f"loss={loss_value:.3e}", + f"mean_error={surface_mean_error:.3e}", + f"tol={point_error_tol:.3e}", + f"activation_y={evaluated_activation_y:.8f}", + f"next_activation_y={float(activation_y.detach().cpu()):.8f}", + f"grad={grad_value:.3e}", + f"optimizer_steps={optimizer_steps}", + flush=True, + ) + if stopped or optimizer_steps >= cfg.inverse_max_steps: + break + + if best_displacement is None: + msg = "inverse solve did not evaluate any forward states" + raise RuntimeError(msg) + return ( + best_displacement, + best_activation_y, + trace, + stop_reason, + optimizer_steps, + ) + + +def add_surface_mask(mesh: pv.UnstructuredGrid, surface_ids: np.ndarray) -> None: + mask = np.zeros(mesh.n_points, dtype=np.int8) + mask[surface_ids] = 1 + mesh.point_data["SurfaceMask"] = mask + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, + metrics: dict[str, float | int | bool | str], +) -> None: + for name, value in metrics.items(): + if isinstance(value, str): + continue + mesh.field_data[name] = np.asarray([value]) + + +def make_target_mesh( + target_mesh: pv.UnstructuredGrid, + surface_ids: np.ndarray, +) -> pv.UnstructuredGrid: + result = target_mesh.copy(deep=True) + add_surface_mask(result, surface_ids) + result.point_data["TargetDisplacement"] = target_mesh.point_data["Displacement"] + result.point_data["TargetPoint"] = ( + target_mesh.points + result.point_data["TargetDisplacement"] + ) + return result + + +def make_result_mesh( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + displacement: np.ndarray, + target_activation_value: np.ndarray, + recovered_activation_y: float, + surface_ids: np.ndarray, + metrics: dict[str, float | int | bool | str], +) -> pv.UnstructuredGrid: + result = mesh.copy(deep=True) + add_surface_mask(result, surface_ids) + error = displacement - target_displacement + target_activation_inv = activation_inv_vector(float(target_activation_value[1])) + recovered_activation = activation_vector(recovered_activation_y) + recovered_activation_inv = activation_inv_vector(recovered_activation_y) + + result.point_data["Displacement"] = displacement + result.point_data["TargetDisplacement"] = target_displacement + result.point_data["DisplacementError"] = error + result.point_data["DisplacementErrorNorm"] = np.linalg.norm(error, axis=1) + result.point_data["DeformedPoint"] = result.points + displacement + result.point_data["TargetPoint"] = result.points + target_displacement + + result.cell_data["TargetActivation"] = np.repeat( + target_activation_value[np.newaxis, :], result.n_cells, axis=0 + ) + result.cell_data["RecoveredActivation"] = np.repeat( + recovered_activation[np.newaxis, :], result.n_cells, axis=0 + ) + result.cell_data["ActivationError"] = ( + result.cell_data["RecoveredActivation"] - result.cell_data["TargetActivation"] + ) + result.cell_data["TargetActivationInv"] = np.repeat( + target_activation_inv[np.newaxis, :], result.n_cells, axis=0 + ) + result.cell_data["RecoveredActivationInv"] = np.repeat( + recovered_activation_inv[np.newaxis, :], result.n_cells, axis=0 + ) + add_metric_fields(result, metrics) + return result + + +def summarize( + target_activation_value: np.ndarray, + recovered_activation_y: float, + target_displacement: np.ndarray, + displacement: np.ndarray, + surface_ids: np.ndarray, + trace: list[dict[str, float]], + stop_reason: str, + optimizer_steps: int, + bbox_diagonal: float, + point_error_tol: float, + cfg: Config, +) -> dict[str, Any]: + error = displacement - target_displacement + error_norm = np.linalg.norm(error, axis=1) + surface_error = error[surface_ids] + surface_error_norm = np.linalg.norm(surface_error, axis=1) + target_activation_y = float(target_activation_value[1]) + recovered_activation = activation_vector(recovered_activation_y) + activation_abs_error = abs(recovered_activation_y - target_activation_y) + final_loss = float(np.mean(np.square(surface_error))) + surface_mean = float(surface_error_norm.mean()) + surface_rms = float(np.linalg.norm(surface_error) / math.sqrt(surface_ids.size)) + all_rms = float(np.linalg.norm(error) / math.sqrt(error.shape[0])) + metrics: dict[str, Any] = { + "target_input": str(cfg.target_input), + "target_output": str(cfg.target_output), + "output_input": str(cfg.output_input), + "output_target": str(cfg.output_target), + "output": str(cfg.output), + "output_series": str(cfg.output_series), + "n_points": int(displacement.shape[0]), + "n_surface_points": int(surface_ids.size), + "inverse_max_steps": int(cfg.inverse_max_steps), + "optimizer_steps": int(optimizer_steps), + "stop_reason": stop_reason, + "inverse_lr": float(cfg.inverse_lr), + "adam_beta1": float(cfg.adam_beta1), + "adam_beta2": float(cfg.adam_beta2), + "forward_rtol": float(cfg.forward_rtol), + "forward_atol": float(cfg.forward_atol), + "forward_max_steps": int(cfg.forward_max_steps), + "bbox_diagonal": bbox_diagonal, + "point_error_rel_tol": float(cfg.point_error_rel_tol), + "point_error_tol": point_error_tol, + "target_activation_y": target_activation_y, + "recovered_activation_y": recovered_activation_y, + "activation_abs_error": activation_abs_error, + "target_activation": target_activation_value.tolist(), + "recovered_activation": recovered_activation.tolist(), + "final_loss": final_loss, + "surface_mean_error": surface_mean, + "surface_rms_error": surface_rms, + "surface_max_error": float(surface_error_norm.max()), + "all_rms_error": all_rms, + "all_max_error": float(error_norm.max()), + "trace": trace, + } + metrics["passed"] = bool( + stop_reason == "point_error_tol" + and surface_mean <= point_error_tol + and activation_abs_error <= cfg.activation_tol + ) + return metrics + + +def save_summary(path: Path, summary: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(summary, indent=2), encoding="utf-8") + + +def main(cfg: Config) -> None: + configure_runtime() + + input_mesh, target_mesh = load_target(cfg) + surface_ids = surface_point_ids(input_mesh) + target_displacement = np.asarray(target_mesh.point_data["Displacement"]) + target_activation_value = target_activation(target_mesh) + bbox_diagonal = float(input_mesh.length) + point_error_tol = cfg.point_error_rel_tol * bbox_diagonal + + inverse_input = zero_activation(input_mesh) + add_surface_mask(inverse_input, surface_ids) + melon.save(cfg.output_input, inverse_input) + melon.save(cfg.output_target, make_target_mesh(target_mesh, surface_ids)) + + inverse_mesh = inverse_input.copy(deep=True) + with melon.SeriesWriter(cfg.output_series, clear=True) as series_writer: + displacement, recovered_activation_y, trace, stop_reason, optimizer_steps = ( + solve_inverse( + inverse_mesh, + target_activation_value, + target_displacement, + surface_ids, + point_error_tol, + cfg, + series_writer, + ) + ) + summary = summarize( + target_activation_value, + recovered_activation_y, + target_displacement, + displacement, + surface_ids, + trace, + stop_reason, + optimizer_steps, + bbox_diagonal, + point_error_tol, + cfg, + ) + metrics = { + name: value + for name, value in summary.items() + if isinstance(value, int | float | bool) + } + result = make_result_mesh( + inverse_mesh, + target_displacement, + displacement, + target_activation_value, + recovered_activation_y, + surface_ids, + metrics, + ) + melon.save(cfg.output, result) + save_summary(cfg.output_summary, summary) + cherries.log_metrics(metrics) + print( + "activation_y:", + f"target={summary['target_activation_y']:.8f}", + f"recovered={summary['recovered_activation_y']:.8f}", + f"abs_error={summary['activation_abs_error']:.3e}", + ) + print( + "surface error:", + f"mean={summary['surface_mean_error']:.3e}", + f"rms={summary['surface_rms_error']:.3e}", + f"max={summary['surface_max_error']:.3e}", + f"tol={summary['point_error_tol']:.3e}", + f"loss={summary['final_loss']:.3e}", + ) + print( + "inverse stop:", + f"reason={summary['stop_reason']}", + f"optimizer_steps={summary['optimizer_steps']}", + f"bbox_diagonal={summary['bbox_diagonal']:.6g}", + ) + print(f"saved: {cfg.output}") + print(f"saved: {cfg.output_series}") + print(f"saved: {cfg.output_summary}") + if not summary["passed"]: + msg = "inverse activation recovery missed the geometry-scaled tolerance" + raise RuntimeError(msg) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/13/toy/src/41-inverse-active-tet-activation-inv-diff-forward-collision.py b/exp/2026/05/13/toy/src/41-inverse-active-tet-activation-inv-diff-forward-collision.py new file mode 100644 index 000000000..e30408877 --- /dev/null +++ b/exp/2026/05/13/toy/src/41-inverse-active-tet-activation-inv-diff-forward-collision.py @@ -0,0 +1,888 @@ +import json +import math +import time +import warnings +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +OUTPUT_STEM = "41-inverse-active-tet-activation-inv-diff-forward-collision" +TARGET_STEM = "20-activated-boxes-collision" + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + target_input: Path = cherries.output(f"{TARGET_STEM}-input.vtu") + target_output: Path = cherries.output(f"{TARGET_STEM}-collision.vtu") + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output_target: Path = cherries.output(f"{OUTPUT_STEM}-target.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + output_series: Path = cherries.output(f"{OUTPUT_STEM}-steps.vtu.series") + output_summary: Path = cherries.output(f"{OUTPUT_STEM}-summary.json") + + forward_rtol: float = 1.0e-3 + forward_atol: float = 1.0e-3 + forward_max_steps: int = 5000 + inverse_max_steps: int = 120 + inverse_lr: float = 0.5 + activation_inv_residual_scale: float = 0.05 + adam_beta1: float = 0.0 + adam_beta2: float = 0.9 + adam_eps: float = 1.0e-8 + activation_inv_xz_abs_max: float = 0.02 + activation_inv_y_min: float = -0.8 + activation_inv_y_max: float = 0.0 + activation_inv_shear_abs_max: float = 0.02 + active_fraction_tol: float = 1.0e-6 + point_error_rel_tol: float = 1.0e-3 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + warnings.filterwarnings( + "ignore", + message=r"The \.grad attribute of a Tensor that is not a leaf Tensor.*", + category=UserWarning, + ) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def require_path(path: Path) -> None: + if path.exists(): + return + msg = f"missing target file: {path}. Run {TARGET_STEM}.py first." + raise FileNotFoundError(msg) + + +def load_target(cfg: Config) -> tuple[pv.UnstructuredGrid, pv.UnstructuredGrid]: + require_path(cfg.target_input) + require_path(cfg.target_output) + input_mesh = pv.read(cfg.target_input) + target_mesh = pv.read(cfg.target_output) + if input_mesh.n_points != target_mesh.n_points: + msg = ( + "target input/output point counts differ: " + f"{input_mesh.n_points} != {target_mesh.n_points}" + ) + raise ValueError(msg) + if not np.allclose(input_mesh.points, target_mesh.points): + msg = "target input/output rest points differ" + raise ValueError(msg) + if "Displacement" not in target_mesh.point_data: + msg = f"{cfg.target_output} has no point_data['Displacement']" + raise KeyError(msg) + return input_mesh, target_mesh + + +def surface_point_ids(mesh: pv.UnstructuredGrid) -> np.ndarray: + surface = mesh.extract_surface(algorithm=None) + point_ids = np.asarray(surface.point_data["vtkOriginalPointIds"], dtype=np.int64) + return np.unique(point_ids) + + +def zero_activation(mesh: pv.UnstructuredGrid) -> pv.UnstructuredGrid: + from liblaf.apple.common import ACTIVATION, ACTIVATION_INV + + result = mesh.copy(deep=True) + activation = np.zeros((result.n_cells, 6), dtype=np.float64) + result.cell_data[ACTIVATION.vtk] = activation + if ACTIVATION_INV.vtk in result.cell_data: + result.cell_data[ACTIVATION_INV.vtk] = activation.copy() + result.field_data["Activation"] = np.zeros((1, 6), dtype=np.float64) + result.field_data["ActivationInv"] = np.zeros((1, 6), dtype=np.float64) + result.field_data["InitialActivation"] = np.zeros((1, 6), dtype=np.float64) + result.field_data["TargetSource"] = np.asarray([TARGET_STEM]) + return result + + +def target_activation_field(target_mesh: pv.UnstructuredGrid) -> np.ndarray: + from liblaf.apple.common import ACTIVATION + + if ACTIVATION.vtk in target_mesh.cell_data: + return np.asarray(target_mesh.cell_data[ACTIVATION.vtk], dtype=np.float64) + if "Activation" in target_mesh.field_data: + activation = np.asarray(target_mesh.field_data["Activation"]).reshape(-1)[:6] + return np.repeat(activation[np.newaxis, :], target_mesh.n_cells, axis=0) + msg = "target mesh has no cell activation field" + raise KeyError(msg) + + +def active_cell_ids(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + if "ActivationMask" in mesh.cell_data: + active = np.asarray(mesh.cell_data["ActivationMask"], dtype=bool) + else: + active_fraction = np.asarray(mesh.cell_data["ActiveFraction"], dtype=np.float64) + active = active_fraction > cfg.active_fraction_tol + ids = np.flatnonzero(active).astype(np.int64) + if ids.size == 0: + msg = "target has no active tets" + raise ValueError(msg) + return ids + + +def activation_matrices_torch(activation: torch.Tensor) -> torch.Tensor: + matrices = torch.zeros( + (*activation.shape[:-1], 3, 3), + dtype=activation.dtype, + device=activation.device, + ) + matrices[..., 0, 0] = 1.0 + activation[..., 0] + matrices[..., 1, 1] = 1.0 + activation[..., 1] + matrices[..., 2, 2] = 1.0 + activation[..., 2] + matrices[..., 0, 1] = activation[..., 3] + matrices[..., 1, 0] = activation[..., 3] + matrices[..., 0, 2] = activation[..., 4] + matrices[..., 2, 0] = activation[..., 4] + matrices[..., 1, 2] = activation[..., 5] + matrices[..., 2, 1] = activation[..., 5] + return matrices + + +def pack_activation_matrices_torch(matrices: torch.Tensor) -> torch.Tensor: + return torch.stack( + ( + matrices[..., 0, 0] - 1.0, + matrices[..., 1, 1] - 1.0, + matrices[..., 2, 2] - 1.0, + matrices[..., 0, 1], + matrices[..., 0, 2], + matrices[..., 1, 2], + ), + dim=-1, + ) + + +def activation_to_activation_inv_torch(activation: torch.Tensor) -> torch.Tensor: + matrices = activation_matrices_torch(activation) + return pack_activation_matrices_torch(torch.linalg.inv(matrices)) + + +def activation_inv_to_activation_torch(activation_inv: torch.Tensor) -> torch.Tensor: + matrices = activation_matrices_torch(activation_inv) + return pack_activation_matrices_torch(torch.linalg.inv(matrices)) + + +def activation_to_activation_inv_numpy(activation: np.ndarray) -> np.ndarray: + activation_t = torch.as_tensor(activation, dtype=torch.float64, device="cpu") + return activation_to_activation_inv_torch(activation_t).numpy() + + +def activation_inv_to_activation_numpy(activation_inv: np.ndarray) -> np.ndarray: + activation_inv_t = torch.as_tensor( + activation_inv, dtype=torch.float64, device="cpu" + ) + return activation_inv_to_activation_torch(activation_inv_t).numpy() + + +def full_activation_from_active( + active_activation: torch.Tensor, + active_ids_t: torch.Tensor, + n_cells: int, +) -> torch.Tensor: + full_activation = torch.zeros( + (n_cells, 6), + dtype=active_activation.dtype, + device=active_activation.device, + ) + return full_activation.index_copy(0, active_ids_t, active_activation) + + +def full_activation_from_active_inv( + active_activation_inv: torch.Tensor, + active_ids_t: torch.Tensor, + n_cells: int, +) -> torch.Tensor: + active_activation = activation_inv_to_activation_torch(active_activation_inv) + return full_activation_from_active(active_activation, active_ids_t, n_cells) + + +def full_activation_inv_from_active( + active_activation_inv: torch.Tensor, + active_ids_t: torch.Tensor, + n_cells: int, +) -> torch.Tensor: + full_activation_inv = torch.zeros( + (n_cells, 6), + dtype=active_activation_inv.dtype, + device=active_activation_inv.device, + ) + return full_activation_inv.index_copy(0, active_ids_t, active_activation_inv) + + +def precondition_active_activation_inv( + raw_active_activation_inv: torch.Tensor, cfg: Config +) -> torch.Tensor: + active_mean = raw_active_activation_inv.mean(dim=0, keepdim=True) + active_residual = raw_active_activation_inv - active_mean + return active_mean + cfg.activation_inv_residual_scale * active_residual + + +def clamp_active_activation_inv_( + active_activation_inv: torch.Tensor, cfg: Config +) -> None: + active_activation_inv[:, 0].clamp_( + -cfg.activation_inv_xz_abs_max, cfg.activation_inv_xz_abs_max + ) + active_activation_inv[:, 2].clamp_( + -cfg.activation_inv_xz_abs_max, cfg.activation_inv_xz_abs_max + ) + active_activation_inv[:, 1].clamp_( + cfg.activation_inv_y_min, cfg.activation_inv_y_max + ) + active_activation_inv[:, 3:].clamp_( + -cfg.activation_inv_shear_abs_max, cfg.activation_inv_shear_abs_max + ) + + +def set_fraction(mesh: pv.UnstructuredGrid, name: str) -> None: + from liblaf.apple.common import FRACTION + + mesh.cell_data[FRACTION.vtk] = np.asarray(mesh.cell_data[name]) + + +def build_forward(mesh: pv.UnstructuredGrid, cfg: Config): + from liblaf.apple.collision import CollisionBuilder + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanActive + + collision_stiffness = float(np.asarray(mesh.field_data["CollisionStiffness"])[0]) + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + + set_fraction(mesh, "PassiveFraction") + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="passive")) + + set_fraction(mesh, "ActiveFraction") + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="active")) + + collision_builder = CollisionBuilder(stiffness=collision_stiffness) + collision_builder.add_tetmesh(mesh) + builder.collision = collision_builder + + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer( + max_steps=cfg.forward_max_steps, + atol=cfg.forward_atol, + rtol=cfg.forward_rtol, + ) + return forward + + +def material_tree( + base_materials: dict[str, dict[str, torch.Tensor]], + active_activation_inv: torch.Tensor, + active_ids_t: torch.Tensor, + n_cells: int, +) -> dict[str, dict[str, torch.Tensor]]: + materials = {name: dict(values) for name, values in base_materials.items()} + materials["active"]["activation_inv"] = full_activation_inv_from_active( + active_activation_inv, active_ids_t, n_cells + ) + return materials + + +def point_error_stats(residual: torch.Tensor) -> dict[str, torch.Tensor]: + point_error = torch.linalg.vector_norm(residual, dim=1) + return { + "mean": point_error.mean(), + "rms": torch.linalg.vector_norm(residual) / math.sqrt(residual.shape[0]), + "max": point_error.max(), + } + + +def inverse_tensors( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + surface_ids: np.ndarray, +) -> tuple[np.ndarray, torch.Tensor, torch.Tensor, torch.Tensor]: + from liblaf.apple.common import GLOBAL_POINT_ID + + global_ids = np.asarray(mesh.point_data[GLOBAL_POINT_ID.vtk], dtype=np.int64) + surface_global_ids = global_ids[surface_ids] + target = torch.as_tensor( + target_displacement, + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + surface_ids_t = torch.as_tensor( + surface_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + surface_global_ids_t = torch.as_tensor( + surface_global_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + return global_ids, target, surface_ids_t, surface_global_ids_t + + +def solve_inverse( # noqa: PLR0915 + mesh: pv.UnstructuredGrid, + target_activation: np.ndarray, + target_displacement: np.ndarray, + surface_ids: np.ndarray, + active_ids: np.ndarray, + point_error_tol: float, + cfg: Config, + series_writer: Any, +) -> tuple[np.ndarray, np.ndarray, list[dict[str, float]], str, int, dict[str, float]]: + from liblaf.apple.inverse import DifferentiableForward + + forward = build_forward(mesh, cfg) + differentiable_forward = DifferentiableForward(forward) + base_materials = forward.model.get_materials() + global_ids, target, surface_ids_t, surface_global_ids_t = inverse_tensors( + mesh, target_displacement, surface_ids + ) + active_ids_t = torch.as_tensor( + active_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + raw_active_activation_inv = torch.nn.Parameter( + torch.zeros( + (active_ids.size, 6), + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + ) + optimizer = torch.optim.Adam( + [raw_active_activation_inv], + lr=cfg.inverse_lr, + betas=(cfg.adam_beta1, cfg.adam_beta2), + eps=cfg.adam_eps, + ) + + trace: list[dict[str, float]] = [] + stop_reason = "inverse_max_steps" + optimizer_steps = 0 + best_displacement: np.ndarray | None = None + best_activation_inv: np.ndarray | None = None + best_surface_mean_error = math.inf + timing = { + "inverse_elapsed_s": 0.0, + "forward_elapsed_s": 0.0, + "backward_elapsed_s": 0.0, + "optimizer_elapsed_s": 0.0, + "series_elapsed_s": 0.0, + } + inverse_start = time.perf_counter() + for step in range(cfg.inverse_max_steps + 1): + step_start = time.perf_counter() + optimizer.zero_grad() + active_activation_inv = precondition_active_activation_inv( + raw_active_activation_inv, + cfg, + ) + materials = material_tree( + base_materials, active_activation_inv, active_ids_t, mesh.n_cells + ) + with torch.no_grad(): + active_inv_values = active_activation_inv.detach() + activation_inv_y_mean = float(active_inv_values[:, 1].mean().cpu()) + activation_inv_min = float(active_inv_values.min().cpu()) + activation_inv_max = float(active_inv_values.max().cpu()) + activation_inv_rms = float( + torch.linalg.vector_norm(active_inv_values).cpu() + / math.sqrt(active_inv_values.numel()) + ) + print( + "inverse forward:", + f"step={step:03d}", + f"active_activation_inv_y_mean={activation_inv_y_mean:.8f}", + f"activation_inv_range=[{activation_inv_min:.3e}, {activation_inv_max:.3e}]", + flush=True, + ) + forward_start = time.perf_counter() + output = differentiable_forward.forward(materials) + forward_elapsed = time.perf_counter() - forward_start + timing["forward_elapsed_s"] += forward_elapsed + print("inverse backward:", f"step={step:03d}", flush=True) + backward_start = time.perf_counter() + residual = output[surface_global_ids_t] - target[surface_ids_t] + loss = residual.square().mean() + loss.backward() + backward_elapsed = time.perf_counter() - backward_start + timing["backward_elapsed_s"] += backward_elapsed + if raw_active_activation_inv.grad is None: + msg = "differentiable forward did not produce activation_inv gradients" + raise RuntimeError(msg) + grad = raw_active_activation_inv.grad.detach() + if not torch.isfinite(grad).all(): + nonfinite = int((~torch.isfinite(grad)).sum().detach().cpu()) + msg = f"non-finite inverse gradient at step {step}: {nonfinite} entries" + raise FloatingPointError(msg) + + error_stats = point_error_stats(residual.detach()) + grad_norm = float(torch.linalg.vector_norm(grad).cpu()) + grad_abs_max = float(grad.abs().max().cpu()) + loss_value = float(loss.detach().cpu()) + surface_mean_error = float(error_stats["mean"].cpu()) + displacement = to_numpy(output)[global_ids] + if surface_mean_error < best_surface_mean_error: + best_surface_mean_error = surface_mean_error + best_activation_inv = to_numpy( + full_activation_inv_from_active( + active_activation_inv, active_ids_t, mesh.n_cells + ) + ) + best_displacement = displacement + stopped = surface_mean_error <= point_error_tol + did_optimizer_step = False + if stopped: + stop_reason = "point_error_tol" + elif optimizer_steps < cfg.inverse_max_steps: + optimizer_start = time.perf_counter() + optimizer.step() + optimizer_steps += 1 + did_optimizer_step = True + timing["optimizer_elapsed_s"] += time.perf_counter() - optimizer_start + with torch.no_grad(): + clamp_active_activation_inv_(raw_active_activation_inv, cfg) + next_active_inv = precondition_active_activation_inv( + raw_active_activation_inv, + cfg, + ).detach() + next_activation_inv_y_mean = float(next_active_inv[:, 1].mean().cpu()) + next_activation_inv_min = float(next_active_inv.min().cpu()) + next_activation_inv_max = float(next_active_inv.max().cpu()) + trace.append( + { + "step": float(step), + "loss": loss_value, + "surface_mean_error": surface_mean_error, + "surface_rms_error": float(error_stats["rms"].cpu()), + "surface_max_error": float(error_stats["max"].cpu()), + "activation_inv_y_mean": activation_inv_y_mean, + "activation_inv_min": activation_inv_min, + "activation_inv_max": activation_inv_max, + "activation_inv_rms": activation_inv_rms, + "next_activation_inv_y_mean": next_activation_inv_y_mean, + "next_activation_inv_min": next_activation_inv_min, + "next_activation_inv_max": next_activation_inv_max, + "grad_norm": grad_norm, + "grad_abs_max": grad_abs_max, + "optimizer_steps": float(optimizer_steps), + "stopped": float(stopped), + "best_surface_mean_error": best_surface_mean_error, + "forward_elapsed_s": forward_elapsed, + "backward_elapsed_s": backward_elapsed, + } + ) + evaluated_activation_inv = to_numpy( + full_activation_inv_from_active( + active_inv_values, active_ids_t, mesh.n_cells + ) + ) + evaluated_activation = activation_inv_to_activation_numpy( + evaluated_activation_inv + ) + series_start = time.perf_counter() + step_mesh = make_result_mesh( + mesh, + target_displacement, + displacement, + target_activation, + evaluated_activation, + evaluated_activation_inv, + surface_ids, + active_ids, + { + "inverse_step": step, + "optimizer_steps": optimizer_steps, + "loss": loss_value, + "surface_mean_error": surface_mean_error, + "surface_rms_error": float(error_stats["rms"].cpu()), + "surface_max_error": float(error_stats["max"].cpu()), + "point_error_tol": point_error_tol, + "activation_inv_y_mean": activation_inv_y_mean, + "activation_inv_min": activation_inv_min, + "activation_inv_max": activation_inv_max, + "activation_inv_rms": activation_inv_rms, + "next_activation_inv_y_mean": next_activation_inv_y_mean, + "next_activation_inv_min": next_activation_inv_min, + "next_activation_inv_max": next_activation_inv_max, + "grad_norm": grad_norm, + "grad_abs_max": grad_abs_max, + "best_surface_mean_error": best_surface_mean_error, + "stopped": stopped, + }, + ) + series_writer.append(step_mesh, time=float(step)) + series_elapsed = time.perf_counter() - series_start + timing["series_elapsed_s"] += series_elapsed + step_elapsed = time.perf_counter() - step_start + trace[-1]["series_elapsed_s"] = series_elapsed + trace[-1]["step_elapsed_s"] = step_elapsed + print( + "inverse step:", + f"{step:03d}", + f"loss={loss_value:.3e}", + f"mean_error={surface_mean_error:.3e}", + f"tol={point_error_tol:.3e}", + f"activation_inv_y_mean={activation_inv_y_mean:.8f}", + f"next_activation_inv_y_mean={next_activation_inv_y_mean:.8f}", + f"grad_norm={grad_norm:.3e}", + f"step_elapsed={step_elapsed:.3f}s", + f"optimizer_steps={optimizer_steps}", + flush=True, + ) + if stopped or not did_optimizer_step: + break + + if best_displacement is None: + msg = "inverse solve did not evaluate any forward states" + raise RuntimeError(msg) + if best_activation_inv is None: + msg = "inverse solve did not record any activation_inv states" + raise RuntimeError(msg) + timing["inverse_elapsed_s"] = time.perf_counter() - inverse_start + return ( + best_displacement, + best_activation_inv, + trace, + stop_reason, + optimizer_steps, + timing, + ) + + +def add_surface_mask(mesh: pv.UnstructuredGrid, surface_ids: np.ndarray) -> None: + mask = np.zeros(mesh.n_points, dtype=np.int8) + mask[surface_ids] = 1 + mesh.point_data["SurfaceMask"] = mask + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, + metrics: dict[str, float | int | bool | str], +) -> None: + for name, value in metrics.items(): + if isinstance(value, str): + continue + mesh.field_data[name] = np.asarray([value]) + + +def make_target_mesh( + target_mesh: pv.UnstructuredGrid, + surface_ids: np.ndarray, +) -> pv.UnstructuredGrid: + result = target_mesh.copy(deep=True) + add_surface_mask(result, surface_ids) + result.point_data["TargetDisplacement"] = target_mesh.point_data["Displacement"] + result.point_data["TargetPoint"] = ( + target_mesh.points + result.point_data["TargetDisplacement"] + ) + return result + + +def make_result_mesh( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + displacement: np.ndarray, + target_activation: np.ndarray, + recovered_activation: np.ndarray, + recovered_activation_inv: np.ndarray, + surface_ids: np.ndarray, + active_ids: np.ndarray, + metrics: dict[str, float | int | bool | str], +) -> pv.UnstructuredGrid: + result = mesh.copy(deep=True) + add_surface_mask(result, surface_ids) + error = displacement - target_displacement + active_mask = np.zeros(result.n_cells, dtype=np.int8) + active_mask[active_ids] = 1 + target_activation_inv = activation_to_activation_inv_numpy(target_activation) + + result.point_data["Displacement"] = displacement + result.point_data["TargetDisplacement"] = target_displacement + result.point_data["DisplacementError"] = error + result.point_data["DisplacementErrorNorm"] = np.linalg.norm(error, axis=1) + result.point_data["DeformedPoint"] = result.points + displacement + result.point_data["TargetPoint"] = result.points + target_displacement + + result.cell_data["InverseActiveMask"] = active_mask + result.cell_data["TargetActivation"] = target_activation + result.cell_data["RecoveredActivation"] = recovered_activation + result.cell_data["ActivationError"] = ( + result.cell_data["RecoveredActivation"] - result.cell_data["TargetActivation"] + ) + result.cell_data["ActivationErrorNorm"] = np.linalg.norm( + result.cell_data["ActivationError"], axis=1 + ) + result.cell_data["TargetActivationInv"] = target_activation_inv + result.cell_data["RecoveredActivationInv"] = recovered_activation_inv + result.cell_data["ActivationInvError"] = ( + recovered_activation_inv - target_activation_inv + ) + add_metric_fields(result, metrics) + return result + + +def summarize( + target_activation: np.ndarray, + recovered_activation: np.ndarray, + target_activation_inv: np.ndarray, + recovered_activation_inv: np.ndarray, + target_displacement: np.ndarray, + displacement: np.ndarray, + surface_ids: np.ndarray, + active_ids: np.ndarray, + trace: list[dict[str, float]], + stop_reason: str, + optimizer_steps: int, + bbox_diagonal: float, + point_error_tol: float, + timing: dict[str, float], + total_elapsed_s: float, + cfg: Config, +) -> dict[str, Any]: + error = displacement - target_displacement + error_norm = np.linalg.norm(error, axis=1) + surface_error = error[surface_ids] + surface_error_norm = np.linalg.norm(surface_error, axis=1) + active_target = target_activation[active_ids] + active_recovered = recovered_activation[active_ids] + active_target_inv = target_activation_inv[active_ids] + active_recovered_inv = recovered_activation_inv[active_ids] + activation_error = active_recovered - active_target + activation_error_norm = np.linalg.norm(activation_error, axis=1) + activation_inv_error = active_recovered_inv - active_target_inv + activation_inv_error_norm = np.linalg.norm(activation_inv_error, axis=1) + final_loss = float(np.mean(np.square(surface_error))) + surface_mean = float(surface_error_norm.mean()) + surface_rms = float(np.linalg.norm(surface_error) / math.sqrt(surface_ids.size)) + all_rms = float(np.linalg.norm(error) / math.sqrt(error.shape[0])) + frame_count = len(trace) + metrics: dict[str, Any] = { + "target_input": str(cfg.target_input), + "target_output": str(cfg.target_output), + "output_input": str(cfg.output_input), + "output_target": str(cfg.output_target), + "output": str(cfg.output), + "output_series": str(cfg.output_series), + "n_points": int(displacement.shape[0]), + "n_cells": int(target_activation.shape[0]), + "n_surface_points": int(surface_ids.size), + "n_active_tets": int(active_ids.size), + "n_activation_params": int(active_ids.size * 6), + "optimized_parameter": "activation_inv", + "series_frames": int(frame_count), + "inverse_max_steps": int(cfg.inverse_max_steps), + "optimizer_steps": int(optimizer_steps), + "stop_reason": stop_reason, + "inverse_lr": float(cfg.inverse_lr), + "activation_inv_residual_scale": float(cfg.activation_inv_residual_scale), + "adam_beta1": float(cfg.adam_beta1), + "adam_beta2": float(cfg.adam_beta2), + "adam_eps": float(cfg.adam_eps), + "forward_rtol": float(cfg.forward_rtol), + "forward_atol": float(cfg.forward_atol), + "forward_max_steps": int(cfg.forward_max_steps), + "activation_inv_xz_abs_max": float(cfg.activation_inv_xz_abs_max), + "activation_inv_y_min": float(cfg.activation_inv_y_min), + "activation_inv_y_max": float(cfg.activation_inv_y_max), + "activation_inv_shear_abs_max": float(cfg.activation_inv_shear_abs_max), + "bbox_diagonal": bbox_diagonal, + "point_error_rel_tol": float(cfg.point_error_rel_tol), + "point_error_tol": point_error_tol, + "total_elapsed_s": float(total_elapsed_s), + **{name: float(value) for name, value in timing.items()}, + "target_active_activation_mean": active_target.mean(axis=0).tolist(), + "recovered_active_activation_mean": active_recovered.mean(axis=0).tolist(), + "target_active_activation_inv_mean": active_target_inv.mean(axis=0).tolist(), + "recovered_active_activation_inv_mean": active_recovered_inv.mean( + axis=0 + ).tolist(), + "target_active_activation_min": active_target.min(axis=0).tolist(), + "target_active_activation_max": active_target.max(axis=0).tolist(), + "recovered_active_activation_min": active_recovered.min(axis=0).tolist(), + "recovered_active_activation_max": active_recovered.max(axis=0).tolist(), + "target_active_activation_inv_min": active_target_inv.min(axis=0).tolist(), + "target_active_activation_inv_max": active_target_inv.max(axis=0).tolist(), + "recovered_active_activation_inv_min": active_recovered_inv.min( + axis=0 + ).tolist(), + "recovered_active_activation_inv_max": active_recovered_inv.max( + axis=0 + ).tolist(), + "active_activation_mean_abs_error": float(np.abs(activation_error).mean()), + "active_activation_rms_error": float( + np.linalg.norm(activation_error) / math.sqrt(activation_error.size) + ), + "active_activation_max_abs_error": float(np.abs(activation_error).max()), + "active_activation_mean_vector_error": float(activation_error_norm.mean()), + "active_activation_max_vector_error": float(activation_error_norm.max()), + "active_activation_inv_mean_abs_error": float( + np.abs(activation_inv_error).mean() + ), + "active_activation_inv_rms_error": float( + np.linalg.norm(activation_inv_error) / math.sqrt(activation_inv_error.size) + ), + "active_activation_inv_max_abs_error": float( + np.abs(activation_inv_error).max() + ), + "active_activation_inv_mean_vector_error": float( + activation_inv_error_norm.mean() + ), + "active_activation_inv_max_vector_error": float( + activation_inv_error_norm.max() + ), + "final_loss": final_loss, + "surface_mean_error": surface_mean, + "surface_rms_error": surface_rms, + "surface_max_error": float(surface_error_norm.max()), + "all_rms_error": all_rms, + "all_max_error": float(error_norm.max()), + "trace": trace, + } + metrics["passed"] = bool( + stop_reason == "point_error_tol" and surface_mean <= point_error_tol + ) + return metrics + + +def save_summary(path: Path, summary: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(summary, indent=2), encoding="utf-8") + + +def main(cfg: Config) -> None: + total_start = time.perf_counter() + configure_runtime() + + input_mesh, target_mesh = load_target(cfg) + surface_ids = surface_point_ids(input_mesh) + active_ids = active_cell_ids(input_mesh, cfg) + target_displacement = np.asarray(target_mesh.point_data["Displacement"]) + target_activation = target_activation_field(input_mesh) + target_activation_inv = activation_to_activation_inv_numpy(target_activation) + bbox_diagonal = float(input_mesh.length) + point_error_tol = cfg.point_error_rel_tol * bbox_diagonal + + inverse_input = zero_activation(input_mesh) + add_surface_mask(inverse_input, surface_ids) + melon.save(cfg.output_input, inverse_input) + melon.save(cfg.output_target, make_target_mesh(target_mesh, surface_ids)) + + inverse_mesh = inverse_input.copy(deep=True) + with melon.SeriesWriter(cfg.output_series, clear=True) as series_writer: + ( + displacement, + recovered_activation_inv, + trace, + stop_reason, + optimizer_steps, + timing, + ) = solve_inverse( + inverse_mesh, + target_activation, + target_displacement, + surface_ids, + active_ids, + point_error_tol, + cfg, + series_writer, + ) + recovered_activation = activation_inv_to_activation_numpy(recovered_activation_inv) + total_elapsed_s = time.perf_counter() - total_start + summary = summarize( + target_activation, + recovered_activation, + target_activation_inv, + recovered_activation_inv, + target_displacement, + displacement, + surface_ids, + active_ids, + trace, + stop_reason, + optimizer_steps, + bbox_diagonal, + point_error_tol, + timing, + total_elapsed_s, + cfg, + ) + metrics = { + name: value + for name, value in summary.items() + if isinstance(value, int | float | bool) + } + result = make_result_mesh( + inverse_mesh, + target_displacement, + displacement, + target_activation, + recovered_activation, + recovered_activation_inv, + surface_ids, + active_ids, + metrics, + ) + melon.save(cfg.output, result) + save_summary(cfg.output_summary, summary) + cherries.log_metrics(metrics) + target_y_mean = summary["target_active_activation_mean"][1] + recovered_y_mean = summary["recovered_active_activation_mean"][1] + target_inv_y_mean = summary["target_active_activation_inv_mean"][1] + recovered_inv_y_mean = summary["recovered_active_activation_inv_mean"][1] + print( + "active activation_inv:", + f"params={summary['n_activation_params']}", + f"target_y_mean={target_inv_y_mean:.8f}", + f"recovered_y_mean={recovered_inv_y_mean:.8f}", + f"rms_error={summary['active_activation_inv_rms_error']:.3e}", + ) + print( + "derived activation:", + f"target_y_mean={target_y_mean:.8f}", + f"recovered_y_mean={recovered_y_mean:.8f}", + f"rms_error={summary['active_activation_rms_error']:.3e}", + ) + print( + "surface error:", + f"mean={summary['surface_mean_error']:.3e}", + f"rms={summary['surface_rms_error']:.3e}", + f"max={summary['surface_max_error']:.3e}", + f"tol={summary['point_error_tol']:.3e}", + f"loss={summary['final_loss']:.3e}", + ) + print( + "inverse stop:", + f"reason={summary['stop_reason']}", + f"optimizer_steps={summary['optimizer_steps']}", + f"bbox_diagonal={summary['bbox_diagonal']:.6g}", + f"total_elapsed={summary['total_elapsed_s']:.3f}s", + ) + print(f"saved: {cfg.output}") + print(f"saved: {cfg.output_series}") + print(f"saved: {cfg.output_summary}") + if not summary["passed"]: + msg = "inverse activation_inv recovery missed the geometry-scaled tolerance" + raise RuntimeError(msg) + + +if __name__ == "__main__": + cherries.main(main, profile="debug") diff --git a/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu b/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu new file mode 100644 index 000000000..6f92e2806 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c91925aa29467afab39c55e32b29397f989f55e157c7f5739abbfef14bc0ca7 +size 11538612 diff --git a/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu b/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu new file mode 100644 index 000000000..9a2486529 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b065c5629d573980fcfbc30b03b368e5904a7d1f0f5d791f9b7c2653121ededd +size 13728011 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz new file mode 100644 index 000000000..506440153 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1a3d66a92640d6e0637f68551943f94a4474c49a2425c47415686ebd245b8da +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-checkpoint.npz new file mode 100644 index 000000000..cae7cd5dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9491a2c7ff39092f4e70495c43e769c95208a10e8dbdd29be132b3a92bf90de +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-checkpoint.npz new file mode 100644 index 000000000..373bac335 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ee7b3c3a75266594dd5bdfcfdaa41ce3e448f7e01ada042543ad9dcc1aea9df +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000000.vtu new file mode 100644 index 000000000..186b6cf72 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cd31564e570b6572c32997e5314b3f8b66d24e92660cad46a85a96c73d6cb33 +size 16097656 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000001.vtu new file mode 100644 index 000000000..317d73435 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3aa07bd8154b3f8272568fe50ecf35f6224e700cc8603cdacb2e550d1427a73 +size 27485043 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000002.vtu new file mode 100644 index 000000000..3a5f0f8db --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:136e32260630de221fced21b3248084c77dbb3c373fcd64795738abf0cfee60a +size 27526090 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000003.vtu new file mode 100644 index 000000000..55e1b2df2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6c0554501b180eb42b21afd23e4c641a7fe8338638f1d563febbe7e02af70dd +size 27543969 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000004.vtu new file mode 100644 index 000000000..3e055294b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:495f5571fcc63dc3f99f5506db1748ad4991b2787b4b24a814d7c148ac060a83 +size 27559335 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000005.vtu new file mode 100644 index 000000000..375b7faaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af81914d377ddbf7e83f7e9cbc4991d440f93f9c76501c7f7d7835257b3feabb +size 27566440 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000006.vtu new file mode 100644 index 000000000..76bf8efe1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2b2ca87c068a166e66676da741e5b0bb8576c7a2a237ef7356b91727c2700f9 +size 27573602 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000007.vtu new file mode 100644 index 000000000..4eb8c26a6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:055be9ff062a7894d3b0137d836d267053def9363254a18aab17633dc7de8d68 +size 27579176 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000008.vtu new file mode 100644 index 000000000..5f1b2eebc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dd81659c209aac8d1b690669be4c0b067551d1c82862d1f8a8a070c756a5062 +size 27583028 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000009.vtu new file mode 100644 index 000000000..ca83c1d46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eefe0968b24396238a415d2429f428ca755f4cf0b25e0a22bc6b6ef77ad60fb6 +size 27585579 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000010.vtu new file mode 100644 index 000000000..7504b09b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d10f738de9e502bbf44dec2ec15d22313b956a74a5ce6708c65758cb09b25bb +size 27587226 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000011.vtu new file mode 100644 index 000000000..37cafed95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3f97d38b8968ca48ce22611588dd948462d788ede5ef5289d2b1d4fbb0673fa +size 27588276 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000012.vtu new file mode 100644 index 000000000..e8e166812 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52bb3ac607b8953fa4ee7a2d5c88137f2555573f7460794e3a9020838b075a09 +size 27589688 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000013.vtu new file mode 100644 index 000000000..1e1de3cbb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4392061824d6252c33db864cfccce6d4be9943c07a4204ee9b13a99c891578b9 +size 27590387 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000014.vtu new file mode 100644 index 000000000..6b1d7021b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:336dbba48f30c7c4131bb9a08ec097bb9ffb780154ef7a142679d5d477e5ca58 +size 27592152 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000015.vtu new file mode 100644 index 000000000..d03d7ac8b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30d9fbc80a8e62fd19af532f0a94ef4472252afc386ae880164016f5bb9624f4 +size 27592909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000016.vtu new file mode 100644 index 000000000..65f65bbf8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90b47faa6e38ea75610fc9250a8b828e4f6d858555ceea42915e36f8f7efa129 +size 27593250 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000017.vtu new file mode 100644 index 000000000..849f517bd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1fd5f3efc6dfc1d969f0415c93bd9edf4ddc64b39d4ddc574ae853e5cc3ab69 +size 27594441 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000018.vtu new file mode 100644 index 000000000..fcc0bf367 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9302e8b641ead1192169b6585ce5ed18880ab065f4a0ff151fe31ee81fe4acb3 +size 27595286 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000019.vtu new file mode 100644 index 000000000..30b7cb78e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1c7973336b1d01158a84176e94b3d16c85619351f2fdeacc91591f2360b6e8f +size 27595675 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000020.vtu new file mode 100644 index 000000000..d9b7ddcc2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63b5ce7b6ceb565508b47c7d9437a337b7a6915eeae6d11c2d45c504844e41ea +size 27596157 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000021.vtu new file mode 100644 index 000000000..9a32808ef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29f31300fd64c1795b1388f1b7d84ce1780ad2fb88681ba8e18794e13b00f59b +size 27596865 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000022.vtu new file mode 100644 index 000000000..0c5999a55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8496781e1f948c0abf87653ab30121712bd8092440ba2759b2926258d7828ae3 +size 27597080 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000023.vtu new file mode 100644 index 000000000..9b561a122 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81d593825f47938b2562491d396eaf088ec2f88d7bc305f534ae3671c5368786 +size 27597916 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000024.vtu new file mode 100644 index 000000000..0df409f1f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e044dbd4c9ed9ab5341249d24a021bffe71e8747b8190ef315dc5d0c272f54e +size 27597960 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000025.vtu new file mode 100644 index 000000000..f4735c7d0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f581720120a00f11480336704c26a277d1c3d0147039b6749c3815ea4560d8 +size 27598611 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000026.vtu new file mode 100644 index 000000000..d2e4b1f92 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b0908abd79a89c9a6313001f3d658ca5287440a6be21a13aef3667ae734a32e +size 27598456 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000027.vtu new file mode 100644 index 000000000..4df7045be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37383b4ac3e77f3ce029c30d31a9f317594564eed22e94145e09951377e12354 +size 27598928 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000028.vtu new file mode 100644 index 000000000..66202aca3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bf3b47536b615f056b607e8667a4a211ad7b7c23cab3ba68632e6decc894b3b +size 27598323 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000029.vtu new file mode 100644 index 000000000..575e9a27e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa7cae2ec4db0c02f0ad4635ee9ff5b1f67df0615a0c5ca0add208040d6220a9 +size 27597452 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000030.vtu new file mode 100644 index 000000000..fc52169c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:955d2122fe851ba1082cf798105d927590379c2f51a4ac69737a59dac51ff5e6 +size 27599494 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000031.vtu new file mode 100644 index 000000000..490850ca3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9fcdb7fa0f6f80f12eb3295a9f0c8582b54bc09e4b43c3d1d874c1eb30b267d +size 27599489 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000032.vtu new file mode 100644 index 000000000..b14d1c3f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02eb17d1e793117d31f20b7ac2a2567a15e490be08fb456b6c18a567c41aa0ec +size 27600097 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000033.vtu new file mode 100644 index 000000000..4997cab9f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd91fb3ccf91e702911dc1ad30915fa1ce7508721f357a60309544e2fb9d172f +size 27600846 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000034.vtu new file mode 100644 index 000000000..378073461 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f04ac4311a2c7246911d184197085124b5ffdc15457472ddfcc0e169e014cb77 +size 27600619 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000035.vtu new file mode 100644 index 000000000..fae03cba3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62690feb2e808e560ee24b239496318f1bc6d603c9173d69dccfeee42192b486 +size 27600363 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000036.vtu new file mode 100644 index 000000000..cfdec05d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3194700667c35130c037024db92edbe8792510c3695b885b3f6a610b6a69e156 +size 27601159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000037.vtu new file mode 100644 index 000000000..d9e5c3718 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:490c48c16389554b1565c3d61f30250f577e7bb4c352644596a0aa642b9ca567 +size 27601792 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000038.vtu new file mode 100644 index 000000000..45987ea4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e78a44c2b65d67cea758d5e29d1cf41ae6b25e74eb6d7687ed53603ae878f1d +size 27601169 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000039.vtu new file mode 100644 index 000000000..3de7533e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58bb81895c6244708a56b4e5ab66179d851939b62849e2e7bb2085d862e95e96 +size 27602159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000040.vtu new file mode 100644 index 000000000..cbbe3fca6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ed2596a1e760856bc288ad2bec73159f9f314b84059b339be4f345ffbdb91b6 +size 27601828 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000041.vtu new file mode 100644 index 000000000..9227b1e40 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42dac42f9a619c216b75a27ab681f7a54691284ff91e1f0ae34829b984cc48da +size 27601929 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000042.vtu new file mode 100644 index 000000000..928e8f52a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12fbb7c53976d51af303e3b2c9b5e9e9a598d3b43e64ec900e57ee0ab3047c38 +size 27601880 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000043.vtu new file mode 100644 index 000000000..3d8839b3a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d32369a9977ff7f8a2b924fff04bcd5b6cc7e785e261a333b83c5f3dfbdd60e9 +size 27602510 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000044.vtu new file mode 100644 index 000000000..9c4a52466 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff6e74188d3d54865e00eaf5f6878958a2233efb557852b64219021f31a66448 +size 27602985 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000045.vtu new file mode 100644 index 000000000..9324973a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c59581901e637e6e47613e2e274ea5c6e5390029a8a1238f7c2dd01dd604a3dc +size 27603081 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000046.vtu new file mode 100644 index 000000000..6daff2428 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa08f70e05334985fe43c699e10c19e612d41283b8e5fc4493f3732dbf55637c +size 27602764 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000047.vtu new file mode 100644 index 000000000..a291e14c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9dfcbc3d8d89ab7db6b8fc7858c717f059b63889652ff3d59943536935af816 +size 27602423 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000048.vtu new file mode 100644 index 000000000..cc4f6fc8a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9972a27edb512e9feaa3cd10f09e27dbadb92b36ea85e9dd78f11f08210d75a +size 27603779 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000049.vtu new file mode 100644 index 000000000..41a180f85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc76d7904a75753aa6cb8d1f7fefdfeaa05103f86aa75fbb0630de29d6a01a02 +size 27603125 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000050.vtu new file mode 100644 index 000000000..41469e6e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd9aa9a8ea85a77dd54de4c63e4a2f113041bbe244917f813feb5030cc7cc98b +size 27603775 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000051.vtu new file mode 100644 index 000000000..d9376881e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b64227284ca7547b605aad194d5678033d3564791b30e424372e3e18c3b6519a +size 27603664 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.series new file mode 100644 index 000000000..8052d69a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63dd88f2f7d71dde7fce635c5d38c7e8d6c4a7f42a53bc918510a91854b40fd6 +size 7271 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000000.vtu new file mode 100644 index 000000000..ebf2d7d8a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bf826ca31b54e6a8d447cc86e99580da4d89205c38a34a7ac3c0191ea2e45b0 +size 16097650 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000001.vtu new file mode 100644 index 000000000..eec08a9f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb8f3a6be5a5dada99da9c659f47fe87905db9962d651f14ec5d7140ac43c52 +size 27484871 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000002.vtu new file mode 100644 index 000000000..cd79e6505 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8138dd4f4151189a978e946a8c94bf557091cc76cc17dbda7c6c143447bf723d +size 27539828 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000003.vtu new file mode 100644 index 000000000..3b8be13de --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7164a78198205b98df0cbc3608e79da230ae3fe2846bb75ad11c2e34e26be2e9 +size 27563446 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000004.vtu new file mode 100644 index 000000000..d91250605 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d735f4102563b7522b034fd8c19fa97daf7b76a258da887da96f25575b39f8b +size 27582575 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000005.vtu new file mode 100644 index 000000000..b75fe94af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f83feb0c8e0af9235f55ef10e5876ee6449d4fe3bcbea7b96e3eb9ab9760c8a3 +size 27587782 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000006.vtu new file mode 100644 index 000000000..800c8155a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70b32eccb8d16df61a0ad2558c24b3607fe10d56fdfa437917d9696aa2a16ca7 +size 27592379 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000007.vtu new file mode 100644 index 000000000..f04383a80 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a98334c549badd7319a8e8fb8d02a05f4ab80eb4ad94e35d4083784c809f472e +size 27596959 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000008.vtu new file mode 100644 index 000000000..a3e451e96 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53a71adee37e73b34a939fb772153d49de895b9905f54d08c0505b22b5dfcf72 +size 27599614 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000009.vtu new file mode 100644 index 000000000..34255fa3e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abbeeba314ea125d84bc191bcaf168707fb9bfbfdffeb2448ee6377f44647818 +size 27600956 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000010.vtu new file mode 100644 index 000000000..f233fcc27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4b008b1d6a6dfcfb43c40a31c971615feded09843a91fc3ef3dcc4e44a87a6c +size 27601804 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000011.vtu new file mode 100644 index 000000000..9fb1c63e5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab988d8da639e672f7bd6008037f49ff0833bb99e82f32a8539e494de410473a +size 27603661 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000012.vtu new file mode 100644 index 000000000..d73e84351 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:703d2f57f903ea4641311afaa01084f55d9fe1694916cf72dc915e74a13abe80 +size 27603411 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000013.vtu new file mode 100644 index 000000000..9d0df58a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7551b96d810eba57402941425cd6767b611b337eef22968a84fbb5c34ef54ac4 +size 27603095 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000014.vtu new file mode 100644 index 000000000..d67b8e22e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:528a9955b0302db3ed9d11e4fa6b73e03e1db9cc6d8992bc8a5e53516757dd4d +size 27604900 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000015.vtu new file mode 100644 index 000000000..e6d28d893 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b8af6b3009a25f76aa7c22d983bc9b9af20dfb975909a97123c9e273a4c252b +size 27604840 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000016.vtu new file mode 100644 index 000000000..3f2fcab95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c783aa2c03736c3374a5790301360e2e2aed0cc9b6ee4c0054b0eef5fafc0f19 +size 27606147 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000017.vtu new file mode 100644 index 000000000..3e5e14fd1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:106797fc8ce8fa90814a2ca7e4bfbc6d7a8bfac9700c6769ce63e24ed60ee58c +size 27606558 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000018.vtu new file mode 100644 index 000000000..c6abd9fac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b542ecae1d72aba2d1fdb445a4a8681d7d28d6477b2337badb1971fe6c0ba4c4 +size 27606316 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000019.vtu new file mode 100644 index 000000000..70af05010 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17f7438edc94658a037f1d99b208d1012d53b52240fd6c4e485b300a8c0dda0e +size 27606747 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000020.vtu new file mode 100644 index 000000000..0a0d050a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef4a66b72ca47158b8af4f999b7cc97792f47a668632a473a22adbba1de7d4ce +size 27607235 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000021.vtu new file mode 100644 index 000000000..7c0b30b33 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:724a6500df00b4ad04d8845954071752f4b322b7f8d7044507c73699bdb5b81e +size 27607817 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000022.vtu new file mode 100644 index 000000000..61799425f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05f2a8d0214689269a33d21e4085c5ac9985c66c0e2158763c04e190ab95f1e4 +size 27607077 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000023.vtu new file mode 100644 index 000000000..ceefcb8bb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db1bec3e8381dc7e18da58a7d091a265cc18f5ea53219258dbe1d00fc7735147 +size 27607037 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000024.vtu new file mode 100644 index 000000000..ab33cfed1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b6df58a254971dde6eb5d0655fc26910f1599e8a85194118e4a7e2f70970c5f +size 27606805 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000025.vtu new file mode 100644 index 000000000..e8ca8c09c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fbec9b1cfeb89dd0943f8fd13217ff27af305940527c7b44c396397e4726477 +size 27605387 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000026.vtu new file mode 100644 index 000000000..3e40291db --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f3b349f874e0a76840e83a754772c8414cc04e9ca45f071ae78d1272a0455e +size 27606175 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000027.vtu new file mode 100644 index 000000000..7257ec7a0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cc2f6a0120283b4f2c83ceb58af5247e809d3dc63582ffdf804a0fb7a67a55f +size 27606921 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000028.vtu new file mode 100644 index 000000000..1941c3cc6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e2393fc1cf84009e2551d6172fbe42f10cb967b2acb0eca0396e61e0d6f0160 +size 27607533 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000029.vtu new file mode 100644 index 000000000..7d2e1b10b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:450161139ce43457d28da0019e1cc42d697eacdcc6bc31701bf28c9d38699850 +size 27608205 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000030.vtu new file mode 100644 index 000000000..4fed3bc42 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc6868745e5e909712d5d7337ecd17a683538bc595b76e29cfc09055b4ed77d +size 27608082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000031.vtu new file mode 100644 index 000000000..d935bb3e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b17619e8322c499a94227d3fa98a2d5f290491be3679bb03aceff0fb1f2d1c0f +size 27608682 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000032.vtu new file mode 100644 index 000000000..383522f7d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f59759f3ac40c19dd780a7315fbdcec413794191c705aab39d20b7326dd7ef4 +size 27608590 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000033.vtu new file mode 100644 index 000000000..58d5645da --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b1870f4ce18b623a18cbdeb2430993cb76b4a55aa42b85607a2c1d22b3b54b +size 27608861 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000034.vtu new file mode 100644 index 000000000..3515eed42 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d52fd28dee116181a11a133dff1bc00a2ec1183bfcccb7d6d0f9319a61d7e4 +size 27608279 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000035.vtu new file mode 100644 index 000000000..0a14f7835 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b748ddb0c142454639f7f84bb549906a6be38bbbedcc3f0cb474193a1c4dfc49 +size 27609033 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000036.vtu new file mode 100644 index 000000000..eb07b2d12 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76f7a3a9b3ef588c486c1490b97c599131478b8e4155c76262b95e5f4e790eca +size 27609212 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000037.vtu new file mode 100644 index 000000000..0002cd4e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d02995b87e76ba3a10d732d6d1dc30c87fc19ca61780fb268a6d54ea8eea9cb7 +size 27608833 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000038.vtu new file mode 100644 index 000000000..c0ac39225 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:615070ca10bce2d4f90ce1fd0ade24ba25f22097694c30fb8b928f545fe92b90 +size 27608950 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000039.vtu new file mode 100644 index 000000000..af0157377 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:742d67a872bd8c0a9145b0b25e1a030ee7ca662dacc69242cc820cf3ec6ef528 +size 27608960 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000040.vtu new file mode 100644 index 000000000..aad2ee3ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9915c548489a649b4d3c0366ae80e710769dfb0f36ed58c3864ea44ba8e48055 +size 27608547 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000041.vtu new file mode 100644 index 000000000..7326e1de1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aa15b58cdc432c60eaaa266bc0b4a8c0755602781cf8061dc0b956af99ea0d8 +size 27608048 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000042.vtu new file mode 100644 index 000000000..03758d78d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:119b5d421626ca183288dc818dab6480fcd9672ece87cd9618d5b2c784afd8d8 +size 27609343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000043.vtu new file mode 100644 index 000000000..b4ec06a3b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4b1297f138a7c93e43c5b2e0146a799012593700f441fb15c943bad031f4664 +size 27609147 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000044.vtu new file mode 100644 index 000000000..841af3869 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13422c2e59ce697110d6dd4c319b6bee3c25affe8f6af786aaa6634b3ca0ac1 +size 27609188 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000045.vtu new file mode 100644 index 000000000..29f2ba504 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d16862583f7b08cdf9b833dfd4b75d87a182bedf21da99414f4da17d5a19f615 +size 27606595 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000046.vtu new file mode 100644 index 000000000..ba0462cee --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:412cd0cbb0cea2bab7d9cce659833c940200a7c261401599c5f773d6e1fed5dc +size 27607221 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000047.vtu new file mode 100644 index 000000000..c2d5848cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a47033409765dc7e46f132512fb39620af47b5dd458bd504d7928a772a2ca27a +size 27608027 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000048.vtu new file mode 100644 index 000000000..93577d9ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e6289192b9b7458aa8facfcf4cede6972a2e6ae9431e8ca03989b8e05bb624e +size 27607286 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000049.vtu new file mode 100644 index 000000000..8abcc982c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:765752a5eae584d9ad3e3bb7356228a9885e0a3eb043344f2bdb131f824b6b65 +size 27608909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000050.vtu new file mode 100644 index 000000000..fc2094c3f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5458d4975e7289c3fb569ecf92880c602e39ac31df4a4a476362936b298af05d +size 27609308 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000051.vtu new file mode 100644 index 000000000..3d4d88d02 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ce30deba047f9ef648bae517cae63ed21a741205a0015c923b6be8b53193546 +size 27609146 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000052.vtu new file mode 100644 index 000000000..bf4b8e878 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdd178077f94b9b4ac3d8db04944fbe1912a99f21bf02040147a5ba9defee69c +size 27609477 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000053.vtu new file mode 100644 index 000000000..1ce03214c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cddb04da8d2d7c7f15ad5b6c91fb6026376bd79c560d3e2e982983b8f2d7bfdc +size 27610023 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000054.vtu new file mode 100644 index 000000000..b0ea6cbf0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:307665c41fa55b56f7e144149f6e823e7f82fb2dff02b1c2b2ced06a06271090 +size 27609945 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000055.vtu new file mode 100644 index 000000000..9c1c344af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:734c9f2e71974ac807474af0605a161875d7aae43d117324653f9bb4aa38308e +size 27610159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000056.vtu new file mode 100644 index 000000000..49d326b3a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54fe4232075d19a8f5b72c5d8a236599b1561b4e0befbb1a36b3ef81f08d0b2c +size 27610042 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000057.vtu new file mode 100644 index 000000000..a8aa8d4a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c51df1f696506643a83c4a83cd0ef926ea78ee294967d8cda26d564a060150b +size 27609653 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000058.vtu new file mode 100644 index 000000000..5611556cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d2448f5010c43e60cb416ed2ac05ea9b2f633ca1ba7ba072e2f1efc860c870b +size 27609437 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000059.vtu new file mode 100644 index 000000000..d7e5d1322 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47e233f410c7606d5565dd91d6cf07f1d911d6656aeb321d70936bb63d5da908 +size 27609873 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000060.vtu new file mode 100644 index 000000000..41673443b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6db2db5b9fa5c3bdfbd723a3199d828399e2b9783a16b3822cc598a99f31ea37 +size 27609059 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000061.vtu new file mode 100644 index 000000000..67d2a526e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feafbbf31437c24237192310ba65fc2b474e324bdaea6f8bb990e55aa72f58c1 +size 27608459 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000062.vtu new file mode 100644 index 000000000..1de2335b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a67b9e1a42ce9fe8c735f2af6101cf57817a32394b11800503511a779b5f2c0 +size 27607678 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000063.vtu new file mode 100644 index 000000000..f89ee4f7d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dde3f85954fa1d830b278f375c5f9c353de047cbc73fa9a98dfe211676bb274 +size 27607819 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000064.vtu new file mode 100644 index 000000000..7e159ce5b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86cc63078c5efa5bd3fe55b9080e2e45697c5e12494ca053f0ed8fcd1dc084db +size 27608724 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000065.vtu new file mode 100644 index 000000000..aad1cf2a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68bcb9279047f8dfa482ede3fafc846ce8d648f95a060999cd4802cf20a0db04 +size 27608805 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000066.vtu new file mode 100644 index 000000000..0e6fe5cce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a52eabd9c364b98d7c3461ea3025df63d91056f73b92c6926809e0dfc9b6183 +size 27609777 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000067.vtu new file mode 100644 index 000000000..41e4b0a9d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12f2ffd31475536f626eccfb7438c074f12597ccb87a6d5f72397472a016b2f2 +size 27609255 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000068.vtu new file mode 100644 index 000000000..6e0a9894b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cf7c8af40f982f3dcb2e6fe6fa0f44ff997db68b4ba4c281d555287ddab69ea +size 27610200 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000069.vtu new file mode 100644 index 000000000..a85f6c2e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5558b4c63d4269056250e0af272d895985884a2bb371384dd8e3d2ecde0f5e7 +size 27610106 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000070.vtu new file mode 100644 index 000000000..266f126f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51671a371bf93b7d9b2a0e6d16158e3fe796d543c2179b07752bc02edb927294 +size 27610394 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000071.vtu new file mode 100644 index 000000000..c51158afb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d4410642b3c51dd1dedd05b2dd235b1982eb0857272600b318b880d6bf02c3e +size 27610715 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000072.vtu new file mode 100644 index 000000000..ba99567ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e8d0a26bfc60c05c0ecc10f1f512315b5ee50199b257e423212f11812740755 +size 27610280 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000073.vtu new file mode 100644 index 000000000..c1bf56539 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db0e57a213bd00363cc14e8de78b309471365bcd5620fbf48106dd689cb9846f +size 27609726 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000074.vtu new file mode 100644 index 000000000..0c666a3c5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c75ee932b32d51f5db226e107df516c0e04974c3d24e712bd4da72dbd34ae1b7 +size 27609039 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000075.vtu new file mode 100644 index 000000000..97b96ef48 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146575a2651d3f7e4cfd02d10a720f479ecbd8ebe3bfd3bfec8829369544363f +size 27608956 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000076.vtu new file mode 100644 index 000000000..1afdb7674 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0adaa40318d867b1ede35d236769b74938a89edf2ca036354ccc055a5cc413f +size 27608631 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000077.vtu new file mode 100644 index 000000000..a96a129f8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c9ac058d4cc8ac3ffcb14dca013bab9149327623a884f622093e659bea8b7dc +size 27606697 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000078.vtu new file mode 100644 index 000000000..dceb1e3a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b93a777b55a0dd43699cd98632a6dd4fd31567a1ca035f821c7a0d89975a1ba7 +size 27608241 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000079.vtu new file mode 100644 index 000000000..46e805926 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44e50e42d21bdcb29b65d84a22580387a5744a7d62b5d2bc333d53ab02bbfce +size 27607397 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000080.vtu new file mode 100644 index 000000000..196926d2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2513682314bd557c8ac4cb2bbf6f9c1ae7aaa82ca06a2a2c2c3f76aa6a9abdf2 +size 27610074 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000081.vtu new file mode 100644 index 000000000..85065051e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d618b2970127189134ece1669c508cd8276b21db1881bef77f89b0ec3de1ae2 +size 27608934 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000082.vtu new file mode 100644 index 000000000..1790eb774 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7393028c52d38b550c0871f96bd4a3077fcbf32a392f47870a69dc2847b4a9ba +size 27609540 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000083.vtu new file mode 100644 index 000000000..08d4a6e73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea003c8bc198fd68ade5a1bad89b11f2ff64e1b94064de44fa569878cd1055be +size 27609541 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000084.vtu new file mode 100644 index 000000000..8329dcc9d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1606e069f6ac116b3f5e4c3009548cd6529903f2fbad44fe5f50e7bfa8bfc16a +size 27610003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000085.vtu new file mode 100644 index 000000000..353795762 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2f89321378f9f8cb0bb22d276785ec32e64fdf785a3198ef07f3544fcd47d1f +size 27609613 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000086.vtu new file mode 100644 index 000000000..12de7b19c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35049dfea2186fca5c0fef065b30dcf10835cf650d3a4cb289c8c108c8f82c39 +size 27609864 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000087.vtu new file mode 100644 index 000000000..d7f85de62 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95407913ffe628f3cc8beb5a20103928a62a75b6f19042da88537617fe2291dc +size 27609612 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000088.vtu new file mode 100644 index 000000000..bd16ed589 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97aa701e6095752de052244fd4d94d9d8e322813115f04a897f3ec788fda6eb9 +size 27608374 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000089.vtu new file mode 100644 index 000000000..2ad75fa68 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c59d1eaf0508f96dbcc11bb5b4f2e07f67c46ebde1735499e692c0e35cc598cb +size 27608863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000090.vtu new file mode 100644 index 000000000..4f05646b1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd800d9ad828823dcfd4623b9d145983078bbf9909cfd0af246d72e2ed8a22e5 +size 27609356 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000091.vtu new file mode 100644 index 000000000..e5b32ed2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2aa5903423f714ceb576d18ed4ee6748a84e166b4047e2925642f3c544f1a15d +size 27609416 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000092.vtu new file mode 100644 index 000000000..1a004e0a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8ee0e1686c55c3aa2bb27167f28fabaaf6edc8811a60fb3e2ff3256e1fff9fe +size 27608167 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000093.vtu new file mode 100644 index 000000000..11399c8d2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67e5a6075f2306e9413d05c0f28f86c449db6f5ad9e3139447dda0bfacaa4608 +size 27609267 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000094.vtu new file mode 100644 index 000000000..e73478048 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998301b0c20292e1d69f801c2732f07f1a7a1f9d9de78102429160f530540cc7 +size 27608665 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000095.vtu new file mode 100644 index 000000000..f7f35d8ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:062ad5a9fdeb907e2bec9e685fc287a8bfe0279740664ec626925a7d7a2c806f +size 27608931 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000096.vtu new file mode 100644 index 000000000..cbfd86197 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b0a34337e958a63fa3050700153c437e122314028ddb28677c0748301524fc1 +size 27609622 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000097.vtu new file mode 100644 index 000000000..78387f7d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1801a532285904b3d59f2d2410ec631eb98aa7e372b57a1f9c81e35564770e39 +size 27609460 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000098.vtu new file mode 100644 index 000000000..931325e6c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e9e6adb86f9ae4aac516d1e2e6d96d60eb1626166d12e74f661d34e4e22431a +size 27609710 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000099.vtu new file mode 100644 index 000000000..d4d2f8d50 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:576e89dde3e2b5f95ddd62c62d5c8d0bb77b86a6ebee7fbfdda412a060004c45 +size 27610237 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000100.vtu new file mode 100644 index 000000000..7c9600040 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62c443e140b071c06e83dc44b81d23584bc8f691a7cf3653a8dcdd778ed8f982 +size 27609485 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000101.vtu new file mode 100644 index 000000000..3fb1147cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:554ee3b998f2ae9336726bb0c9304a28230a8d93795615ff7e46fc6f56c73fa4 +size 27609231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000102.vtu new file mode 100644 index 000000000..057fa7ff1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:828a6918ad9a01cd5c335a1705772a6add3b25ebb1e06f5726b2482f347ed66c +size 27609303 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000103.vtu new file mode 100644 index 000000000..db26c779e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b090635eb258bebb3330800bb5983a619b659faecae3687dabeace304ccd4e +size 27608945 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000104.vtu new file mode 100644 index 000000000..35f06b4f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ab600e1bb5d1bdf641ed95e244b8265cf2e861d4aff4691c3f8389504012ec0 +size 27608206 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000105.vtu new file mode 100644 index 000000000..f3e5053fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5262d15a1f03fa81eee19c7eb98db7bacc7faede1cbfb6301d9ea9fc7fa8989 +size 27608725 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000106.vtu new file mode 100644 index 000000000..cf005d0db --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:230021c54d99895dccfdb9c2edb9dcbc2770abbbc9d05e4a1135dd7f01470c97 +size 27607909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000107.vtu new file mode 100644 index 000000000..df044ef46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d71bcce3ee599b8c399ee446d5038e46cc2f1e81c7b90b28156e64f93ee0132 +size 27608363 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000108.vtu new file mode 100644 index 000000000..c308d9e41 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ee36d69610642ba8ae3ea1978f39bc41dfa0146f478d6ea7bd53bbedc7b1b0e +size 27608662 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000109.vtu new file mode 100644 index 000000000..95e635152 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e2f28789d694983e047971c02408fda0ded74b4694fdcd37ac1cc28b291058e +size 27608992 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000110.vtu new file mode 100644 index 000000000..01460f45d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11fcdc881a005558289cf4fd7c6fd619527b7532acba82451b3d7fc38fbf9786 +size 27610327 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000111.vtu new file mode 100644 index 000000000..5fb4a1a90 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d27f1b9a48a2b8cbeb2a2ee66ea11749caa7bc628fdb0c0ec52378d602dfa00 +size 27609656 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000112.vtu new file mode 100644 index 000000000..45afe6a71 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.d/20-inverse-face-fresh-nu04-smas1-noclamp_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbe7fcf485d4cfe8a59041cbbad51c17393747dac40510c63e33dd98439bad4f +size 27610465 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.series new file mode 100644 index 000000000..07a60c8af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60ec76f75b4d391366a5714615a36ce61bc9423d195d8a883b40379e669136e5 +size 13829 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-checkpoint.npz new file mode 100644 index 000000000..644cc9e19 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9509cc74570d7ba03fdc3e169c40356acf6c0c324559717a05d8d326d287fbf6 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-summary.json b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-summary.json new file mode 100644 index 000000000..5e39a8d43 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-summary.json @@ -0,0 +1,16724 @@ +{ + "mesh/n_points": 58651, + "mesh/n_cells": 253876, + "target/n_points": 6787, + "activation/n_active_tets": 58494, + "activation/n_params": 350964, + "optimized_parameterization": "per active muscle tetrahedron ActivationInv, 6 DoF", + "optimizer/steps": 286, + "best/step": 286, + "series/frames": 287, + "stop_reason": "max_point_error_tol", + "time/total_s": 5327.792600961002, + "time/inverse_s": 5322.7743575720015, + "time/forward_s": 2813.523649623021, + "time/backward_s": 2200.784158729017, + "time/optimizer_s": 0.23925908009550767, + "time/series_s": 303.99866595205094, + "target/displacement_mean": 0.2500759838629745, + "target/displacement_rms": 0.3514786357965242, + "target/displacement_max": 0.9656781194874481, + "loss/final": 0.0006209938330491274, + "loss/data": 0.0005722376479213914, + "loss/data_objective": 0.0005722376479213914, + "loss/smooth": 0.04785739705523447, + "loss/activation_l2": 0.08987880725014971, + "loss/activation_l2_penalty": 8.987880725014972e-07, + "loss/regularization": 4.8756185127735975e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783, + "best/loss": 0.0006209938330491274, + "lowest/loss": 0.000453943576629423, + "lowest/target_error_max": 0.19954123669972448, + "forward/all_success": true, + "forward/failures": 0, + "forward/max_steps_used": 2522.0, + "forward/max_grad_norm": 0.003492879465023442, + "forward/max_relative_grad_norm": 0.0004999635379835783, + "adjoint/all_success": true, + "adjoint/failures": 0, + "adjoint/max_absolute_residual": 1.4196615829571516e-06, + "adjoint/max_relative_residual": 0.0004998956917423327, + "target/error_mean": 0.031548278458864334, + "target/error_rms": 0.0414332347731163, + "target/error_max": 0.19954123669972448, + "all/error_rms": 0.1897619980145341, + "all/error_max": 1.0490306566281222, + "active_activation_inv/mean": [ + 0.013428950431413502, + 0.03708937913509207, + 0.06419704666362107, + -0.0025584655464802692, + -0.006709782951379128, + 0.0071312545984488634 + ], + "active_activation_inv/min": [ + -1.1232765541530967, + -1.1770525955011413, + -1.4828948411713732, + -4.24364063630052, + -2.475686778989671, + -3.1111828124786043 + ], + "active_activation_inv/max": [ + 3.929867358040286, + 4.039691327677526, + 3.832427182069358, + 3.34307883356129, + 2.563983136228041, + 2.208496034550553 + ], + "active_activation_inv/rms": 0.29979794403923066, + "trace": [ + { + "step": 0.0, + "loss/total": 0.041179077140461894, + "loss/data": 0.041179077140461894, + "loss/mse": 0.041179077140461894, + "loss/smooth": 0.0, + "loss/activation_l2": 0.0, + "loss/activation_l2_penalty": 0.0, + "loss/regularization": 0.0, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.2500759838629745, + "target/error_rms": 0.35147863579652416, + "target/error_max": 0.9656781194874481, + "activation_inv/rms": 0.0, + "activation_inv/min": 0.0, + "activation_inv/max": 0.0, + "grad/norm": 0.0017736537590602771, + "grad/abs_max": 9.355773973553312e-05, + "optimizer/steps": 0.0, + "optimizer/lr": 0.03, + "best/step": 0.0, + "best/loss": 0.041179077140461894, + "best/target_error_max": 0.9656781194874481, + "lowest/loss": 0.041179077140461894, + "lowest/loss_step": 0.0, + "lowest/target_error_max": 0.9656781194874481, + "lowest/target_error_max_step": 0.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 0.1313483220001217, + "time/backward_s": 5.83204096800182, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1, + "forward/grad_norm": 0.0, + "forward/relative_grad_norm": 0.0, + "forward/grad_norm_first": 0.0, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4196615829571516e-06, + "adjoint/relative_residual": 0.0004991327674932713, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4196615829571516e-06, + "adjoint/solver_0/relative_residual": 0.0004991327674932713, + "adjoint/residual_converged": true, + "time/series_s": 0.8513992209991557, + "time/step_s": 6.854768716999388 + }, + { + "step": 1.0, + "loss/total": 0.03253224163282941, + "loss/data": 0.03253146360122041, + "loss/mse": 0.03253146360122041, + "loss/smooth": 0.0007712177840855387, + "loss/activation_l2": 0.0006813824917601708, + "loss/activation_l2_penalty": 6.813824917601709e-09, + "loss/regularization": 7.780316090031405e-07, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.22082668712269463, + "target/error_rms": 0.3124010096073014, + "target/error_max": 0.921883814234012, + "activation_inv/rms": 0.026103304230694065, + "activation_inv/min": -0.029995542622261794, + "activation_inv/max": 0.02999679376673148, + "grad/norm": 0.0010785989975296124, + "grad/abs_max": 6.895782196176563e-05, + "optimizer/steps": 1.0, + "optimizer/lr": 0.03, + "best/step": 1.0, + "best/loss": 0.03253224163282941, + "best/target_error_max": 0.921883814234012, + "lowest/loss": 0.03253224163282941, + "lowest/loss_step": 1.0, + "lowest/target_error_max": 0.921883814234012, + "lowest/target_error_max_step": 1.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.850321375000931, + "time/backward_s": 4.928499364003073, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 846, + "forward/grad_norm": 0.002371657002781126, + "forward/relative_grad_norm": 0.0004983527159079937, + "forward/grad_norm_first": 4.758992831934287, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.238807122746628e-06, + "adjoint/relative_residual": 0.0004900286234092364, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.238807122746628e-06, + "adjoint/solver_0/relative_residual": 0.0004900286234092364, + "adjoint/residual_converged": true, + "time/series_s": 1.0666796799996519, + "time/step_s": 11.861261695004941 + }, + { + "step": 2.0, + "loss/total": 0.028123572970080397, + "loss/data": 0.02812134359114227, + "loss/mse": 0.02812134359114227, + "loss/smooth": 0.002209206130421286, + "loss/activation_l2": 0.002017280770549769, + "loss/activation_l2_penalty": 2.0172807705497692e-08, + "loss/regularization": 2.2293789381267837e-06, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.20617900225208866, + "target/error_rms": 0.2904548687376867, + "target/error_max": 0.8815707551127202, + "activation_inv/rms": 0.044914148890408345, + "activation_inv/min": -0.0632979459996925, + "activation_inv/max": 0.06326966369175946, + "grad/norm": 0.0009700807050073789, + "grad/abs_max": 7.299646503874113e-05, + "optimizer/steps": 2.0, + "optimizer/lr": 0.03, + "best/step": 2.0, + "best/loss": 0.028123572970080397, + "best/target_error_max": 0.8815707551127202, + "lowest/loss": 0.028123572970080397, + "lowest/loss_step": 2.0, + "lowest/target_error_max": 0.8815707551127202, + "lowest/target_error_max_step": 2.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.886030658999516, + "time/backward_s": 4.823998861000291, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 842, + "forward/grad_norm": 0.001901558542816085, + "forward/relative_grad_norm": 0.0004942312572546772, + "forward/grad_norm_first": 3.847507649311247, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.1195092822817783e-06, + "adjoint/relative_residual": 0.0004762985087419231, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.1195092822817783e-06, + "adjoint/solver_0/relative_residual": 0.0004762985087419231, + "adjoint/residual_converged": true, + "time/series_s": 1.122415521000221, + "time/step_s": 11.846164244001557 + }, + { + "step": 3.0, + "loss/total": 0.024560916723467642, + "loss/data": 0.024557303322083127, + "loss/mse": 0.024557303322083127, + "loss/smooth": 0.003580334115187362, + "loss/activation_l2": 0.003306726932917226, + "loss/activation_l2_penalty": 3.306726932917226e-08, + "loss/regularization": 3.613401384516534e-06, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.18989828687377053, + "target/error_rms": 0.2714256987948072, + "target/error_max": 0.8383005737329392, + "activation_inv/rms": 0.05750414709320734, + "activation_inv/min": -0.10028192260964505, + "activation_inv/max": 0.10046084309430243, + "grad/norm": 0.0008592431720553125, + "grad/abs_max": 8.144254869152617e-05, + "optimizer/steps": 3.0, + "optimizer/lr": 0.03, + "best/step": 3.0, + "best/loss": 0.024560916723467642, + "best/target_error_max": 0.8383005737329392, + "lowest/loss": 0.024560916723467642, + "lowest/loss_step": 3.0, + "lowest/target_error_max": 0.8383005737329392, + "lowest/target_error_max_step": 3.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.9010984289998305, + "time/backward_s": 4.541124786002911, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 827, + "forward/grad_norm": 0.0016812616415791128, + "forward/relative_grad_norm": 0.0004968529857946155, + "forward/grad_norm_first": 3.383821149610837, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.0906801639579237e-06, + "adjoint/relative_residual": 0.0004965656041799691, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.0906801639579237e-06, + "adjoint/solver_0/relative_residual": 0.0004965656041799691, + "adjoint/residual_converged": true, + "time/series_s": 1.1128108100019745, + "time/step_s": 11.567911923993961 + }, + { + "step": 4.0, + "loss/total": 0.021441211948395187, + "loss/data": 0.021436113225995642, + "loss/mse": 0.021436113225995642, + "loss/smooth": 0.005052381915950293, + "loss/activation_l2": 0.004634048359586624, + "loss/activation_l2_penalty": 4.6340483595866246e-08, + "loss/regularization": 5.098722399546159e-06, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.17413705980196037, + "target/error_rms": 0.2535908903686939, + "target/error_max": 0.7944534377184274, + "activation_inv/rms": 0.06807384490086207, + "activation_inv/min": -0.13857266917294253, + "activation_inv/max": 0.13898730642583396, + "grad/norm": 0.0007844959294105578, + "grad/abs_max": 7.773687443684333e-05, + "optimizer/steps": 4.0, + "optimizer/lr": 0.03, + "best/step": 4.0, + "best/loss": 0.021441211948395187, + "best/target_error_max": 0.7944534377184274, + "lowest/loss": 0.021441211948395187, + "lowest/loss_step": 4.0, + "lowest/target_error_max": 0.7944534377184274, + "lowest/target_error_max_step": 4.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.386218853003811, + "time/backward_s": 4.906499312994129, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 903, + "forward/grad_norm": 0.0017171635104783413, + "forward/relative_grad_norm": 0.00049798453560226, + "forward/grad_norm_first": 3.448226576758277, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.0002837812523763e-06, + "adjoint/relative_residual": 0.00048743842549200765, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.0002837812523763e-06, + "adjoint/solver_0/relative_residual": 0.00048743842549200765, + "adjoint/residual_converged": true, + "time/series_s": 1.1392080980003811, + "time/step_s": 12.498754088999704 + }, + { + "step": 5.0, + "loss/total": 0.01882368869301952, + "loss/data": 0.018816831839444447, + "loss/mse": 0.018816831839444447, + "loss/smooth": 0.006794599961309335, + "loss/activation_l2": 0.0062253613761132165, + "loss/activation_l2_penalty": 6.225361376113217e-08, + "loss/regularization": 6.856853575070467e-06, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.16239470103279544, + "target/error_rms": 0.23759313020020875, + "target/error_max": 0.765438926272808, + "activation_inv/rms": 0.07890095928512667, + "activation_inv/min": -0.1785430371644158, + "activation_inv/max": 0.18157831320166212, + "grad/norm": 0.000742457901588542, + "grad/abs_max": 7.072858468493543e-05, + "optimizer/steps": 5.0, + "optimizer/lr": 0.03, + "best/step": 5.0, + "best/loss": 0.01882368869301952, + "best/target_error_max": 0.765438926272808, + "lowest/loss": 0.01882368869301952, + "lowest/loss_step": 5.0, + "lowest/target_error_max": 0.765438926272808, + "lowest/target_error_max_step": 5.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.887215725997521, + "time/backward_s": 4.717536817006476, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 825, + "forward/grad_norm": 0.0015830346463132738, + "forward/relative_grad_norm": 0.0004929341095260318, + "forward/grad_norm_first": 3.2114528406958898, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 9.223726309331267e-07, + "adjoint/relative_residual": 0.0004797364447274302, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 9.223726309331267e-07, + "adjoint/solver_0/relative_residual": 0.0004797364447274302, + "adjoint/residual_converged": true, + "time/series_s": 1.0875183719981578, + "time/step_s": 11.710221801004081 + }, + { + "step": 6.0, + "loss/total": 0.016469585232375888, + "loss/data": 0.016460881318513542, + "loss/mse": 0.016460881318513542, + "loss/smooth": 0.00862451934700686, + "loss/activation_l2": 0.007939451533761252, + "loss/activation_l2_penalty": 7.939451533761253e-08, + "loss/regularization": 8.703913862344473e-06, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.15104429997811042, + "target/error_rms": 0.22222206001101835, + "target/error_max": 0.7407293988404958, + "activation_inv/rms": 0.08910360000449619, + "activation_inv/min": -0.2193563559969962, + "activation_inv/max": 0.22608864983614607, + "grad/norm": 0.0007409836685515063, + "grad/abs_max": 7.356410124189374e-05, + "optimizer/steps": 6.0, + "optimizer/lr": 0.03, + "best/step": 6.0, + "best/loss": 0.016469585232375888, + "best/target_error_max": 0.7407293988404958, + "lowest/loss": 0.016469585232375888, + "lowest/loss_step": 6.0, + "lowest/target_error_max": 0.7407293988404958, + "lowest/target_error_max_step": 6.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.420863307997934, + "time/backward_s": 5.024713049999264, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 766, + "forward/grad_norm": 0.0015844862344339189, + "forward/relative_grad_norm": 0.0004968582367624837, + "forward/grad_norm_first": 3.1890107020432885, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 8.9657515482718e-07, + "adjoint/relative_residual": 0.0004985741004077533, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 8.9657515482718e-07, + "adjoint/solver_0/relative_residual": 0.0004985741004077533, + "adjoint/residual_converged": true, + "time/series_s": 1.1839492699946277, + "time/step_s": 11.64306850200228 + }, + { + "step": 7.0, + "loss/total": 0.014529369749535595, + "loss/data": 0.014518815948715942, + "loss/mse": 0.014518815948715942, + "loss/smooth": 0.01045718385369099, + "loss/activation_l2": 0.009661696596261548, + "loss/activation_l2_penalty": 9.661696596261549e-08, + "loss/regularization": 1.0553800819653606e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.1421174412316025, + "target/error_rms": 0.20870181562733903, + "target/error_max": 0.7055223026568417, + "activation_inv/rms": 0.09829392960026345, + "activation_inv/min": -0.26322319192205895, + "activation_inv/max": 0.2684481345673618, + "grad/norm": 0.0008097187327478511, + "grad/abs_max": 6.205192207445933e-05, + "optimizer/steps": 7.0, + "optimizer/lr": 0.03, + "best/step": 7.0, + "best/loss": 0.014529369749535595, + "best/target_error_max": 0.7055223026568417, + "lowest/loss": 0.014529369749535595, + "lowest/loss_step": 7.0, + "lowest/target_error_max": 0.7055223026568417, + "lowest/target_error_max_step": 7.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.694085153001652, + "time/backward_s": 4.881993132003117, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 855, + "forward/grad_norm": 0.0016698345761336302, + "forward/relative_grad_norm": 0.000497448398326254, + "forward/grad_norm_first": 3.3567995831367843, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 8.304573201271925e-07, + "adjoint/relative_residual": 0.0004917238507104496, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 8.304573201271925e-07, + "adjoint/solver_0/relative_residual": 0.0004917238507104496, + "adjoint/residual_converged": true, + "time/series_s": 1.1832274719999987, + "time/step_s": 12.772325899000862 + }, + { + "step": 8.0, + "loss/total": 0.013490960454359015, + "loss/data": 0.013478644015894851, + "loss/mse": 0.013478644015894851, + "loss/smooth": 0.012203446375684946, + "loss/activation_l2": 0.011299208847890398, + "loss/activation_l2_penalty": 1.12992088478904e-07, + "loss/regularization": 1.231643846416385e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.13872518005935422, + "target/error_rms": 0.20108687686590726, + "target/error_max": 0.7006894367225438, + "activation_inv/rms": 0.1062977367957117, + "activation_inv/min": -0.3033767486635233, + "activation_inv/max": 0.3115378212495516, + "grad/norm": 0.0012442825899082956, + "grad/abs_max": 8.651388513711291e-05, + "optimizer/steps": 8.0, + "optimizer/lr": 0.03, + "best/step": 8.0, + "best/loss": 0.013490960454359015, + "best/target_error_max": 0.7006894367225438, + "lowest/loss": 0.013490960454359015, + "lowest/loss_step": 8.0, + "lowest/target_error_max": 0.7006894367225438, + "lowest/target_error_max_step": 8.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.863538076002442, + "time/backward_s": 6.39188622799702, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 969, + "forward/grad_norm": 0.002019601531474339, + "forward/relative_grad_norm": 0.0004991305145056061, + "forward/grad_norm_first": 4.0462393558021095, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 8.06270608560859e-07, + "adjoint/relative_residual": 0.0004954813168251061, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 8.06270608560859e-07, + "adjoint/solver_0/relative_residual": 0.0004954813168251061, + "adjoint/residual_converged": true, + "time/series_s": 1.0880508810005267, + "time/step_s": 14.356845148002321 + }, + { + "step": 9.0, + "loss/total": 0.012829867818761114, + "loss/data": 0.012816049903171627, + "loss/mse": 0.012816049903171627, + "loss/smooth": 0.013689913499953802, + "loss/activation_l2": 0.012800208953296255, + "loss/activation_l2_penalty": 1.2800208953296257e-07, + "loss/regularization": 1.3817915589486765e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.13721556134206842, + "target/error_rms": 0.19608199741311005, + "target/error_max": 0.6495099547962053, + "activation_inv/rms": 0.1131380084379085, + "activation_inv/min": -0.3525708530026251, + "activation_inv/max": 0.35331512512138263, + "grad/norm": 0.0015531665230152914, + "grad/abs_max": 0.00010187151924024545, + "optimizer/steps": 9.0, + "optimizer/lr": 0.03, + "best/step": 9.0, + "best/loss": 0.012829867818761114, + "best/target_error_max": 0.6495099547962053, + "lowest/loss": 0.012829867818761114, + "lowest/loss_step": 9.0, + "lowest/target_error_max": 0.6495099547962053, + "lowest/target_error_max_step": 9.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.156161427003099, + "time/backward_s": 6.094145196999307, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1115, + "forward/grad_norm": 0.0026205265303955077, + "forward/relative_grad_norm": 0.0004912627900549191, + "forward/grad_norm_first": 5.334266269388233, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 7.887258563779914e-07, + "adjoint/relative_residual": 0.0004970711297041806, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 7.887258563779914e-07, + "adjoint/solver_0/relative_residual": 0.0004970711297041806, + "adjoint/residual_converged": true, + "time/series_s": 1.2063061139997444, + "time/step_s": 15.471394795000379 + }, + { + "step": 10.0, + "loss/total": 0.010635329671841007, + "loss/data": 0.010620258313918498, + "loss/mse": 0.010620258313918498, + "loss/smooth": 0.014930884244176965, + "loss/activation_l2": 0.014047367833264181, + "loss/activation_l2_penalty": 1.4047367833264182e-07, + "loss/regularization": 1.5071357922509607e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.12376925261891891, + "target/error_rms": 0.1784958681363675, + "target/error_max": 0.660084662054217, + "activation_inv/rms": 0.1185215922659841, + "activation_inv/min": -0.3842803244748976, + "activation_inv/max": 0.40255434394634626, + "grad/norm": 0.001009012699803335, + "grad/abs_max": 7.380116629730766e-05, + "optimizer/steps": 10.0, + "optimizer/lr": 0.03, + "best/step": 9.0, + "best/loss": 0.012829867818761114, + "best/target_error_max": 0.6495099547962053, + "lowest/loss": 0.010635329671841007, + "lowest/loss_step": 10.0, + "lowest/target_error_max": 0.6495099547962053, + "lowest/target_error_max_step": 9.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.6353763209990575, + "time/backward_s": 6.883597813000961, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1042, + "forward/grad_norm": 0.0026371533444386587, + "forward/relative_grad_norm": 0.0004922480296366512, + "forward/grad_norm_first": 5.3573669891279225, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 7.170673774272875e-07, + "adjoint/relative_residual": 0.0004964345294768908, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 7.170673774272875e-07, + "adjoint/solver_0/relative_residual": 0.0004964345294768908, + "adjoint/residual_converged": true, + "time/series_s": 1.219997857006092, + "time/step_s": 15.746578010999656 + }, + { + "step": 11.0, + "loss/total": 0.008963860879776115, + "loss/data": 0.008947631262945404, + "loss/mse": 0.008947631262945404, + "loss/smooth": 0.016076857083275435, + "loss/activation_l2": 0.01527597474354254, + "loss/activation_l2_penalty": 1.527597474354254e-07, + "loss/regularization": 1.622961683071086e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.11273769559514477, + "target/error_rms": 0.1638380108181133, + "target/error_max": 0.6253883581093542, + "activation_inv/rms": 0.12359601427045509, + "activation_inv/min": -0.4192222610014071, + "activation_inv/max": 0.435594357028036, + "grad/norm": 0.0005558305680354366, + "grad/abs_max": 4.661662517850736e-05, + "optimizer/steps": 11.0, + "optimizer/lr": 0.03, + "best/step": 11.0, + "best/loss": 0.008963860879776115, + "best/target_error_max": 0.6253883581093542, + "lowest/loss": 0.008963860879776115, + "lowest/loss_step": 11.0, + "lowest/target_error_max": 0.6253883581093542, + "lowest/target_error_max_step": 11.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.6237998779979534, + "time/backward_s": 5.495089033000113, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 958, + "forward/grad_norm": 0.0018560198610610029, + "forward/relative_grad_norm": 0.0004977046575625714, + "forward/grad_norm_first": 3.729159116473938, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 6.426736765993576e-07, + "adjoint/relative_residual": 0.00048473684191957305, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 6.426736765993576e-07, + "adjoint/solver_0/relative_residual": 0.00048473684191957305, + "adjoint/residual_converged": true, + "time/series_s": 1.2719965080032125, + "time/step_s": 14.405822457993054 + }, + { + "step": 12.0, + "loss/total": 0.007979797221007673, + "loss/data": 0.007962413858342697, + "loss/mse": 0.007962413858342697, + "loss/smooth": 0.017217995863237842, + "loss/activation_l2": 0.016536680173710433, + "loss/activation_l2_penalty": 1.6536680173710434e-07, + "loss/regularization": 1.7383362664974948e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.10674554641279677, + "target/error_rms": 0.15455497913373123, + "target/error_max": 0.60476388229169, + "activation_inv/rms": 0.12859502390726646, + "activation_inv/min": -0.4505524955360552, + "activation_inv/max": 0.4802446455179866, + "grad/norm": 0.0005371304429113195, + "grad/abs_max": 4.0939846485935236e-05, + "optimizer/steps": 12.0, + "optimizer/lr": 0.03, + "best/step": 12.0, + "best/loss": 0.007979797221007673, + "best/target_error_max": 0.60476388229169, + "lowest/loss": 0.007979797221007673, + "lowest/loss_step": 12.0, + "lowest/target_error_max": 0.60476388229169, + "lowest/target_error_max_step": 12.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.4481779060006374, + "time/backward_s": 4.776802754997334, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 717, + "forward/grad_norm": 0.0015092546876725459, + "forward/relative_grad_norm": 0.0004806657050530904, + "forward/grad_norm_first": 3.139925881555968, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 6.221509379807662e-07, + "adjoint/relative_residual": 0.0004974425638016379, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 6.221509379807662e-07, + "adjoint/solver_0/relative_residual": 0.0004974425638016379, + "adjoint/residual_converged": true, + "time/series_s": 1.1385584519957774, + "time/step_s": 11.376913774001878 + }, + { + "step": 13.0, + "loss/total": 0.007108648037327599, + "loss/data": 0.00709019072441627, + "loss/mse": 0.00709019072441627, + "loss/smooth": 0.0182800441260829, + "loss/activation_l2": 0.017726878524611793, + "loss/activation_l2_penalty": 1.7726878524611795e-07, + "loss/regularization": 1.8457312911329016e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.10126646920579807, + "target/error_rms": 0.14584434227370222, + "target/error_max": 0.5864598254352847, + "activation_inv/rms": 0.1331423243172951, + "activation_inv/min": -0.48365742383553184, + "activation_inv/max": 0.5204778352484484, + "grad/norm": 0.0004709350608130238, + "grad/abs_max": 3.6677889016028066e-05, + "optimizer/steps": 13.0, + "optimizer/lr": 0.03, + "best/step": 13.0, + "best/loss": 0.007108648037327599, + "best/target_error_max": 0.5864598254352847, + "lowest/loss": 0.007108648037327599, + "lowest/loss_step": 13.0, + "lowest/target_error_max": 0.5864598254352847, + "lowest/target_error_max_step": 13.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.316051474001142, + "time/backward_s": 5.882772526005283, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 870, + "forward/grad_norm": 0.0016316900281619702, + "forward/relative_grad_norm": 0.0004963992815463466, + "forward/grad_norm_first": 3.287051550677208, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 5.491381601181379e-07, + "adjoint/relative_residual": 0.00046528839606321587, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 5.491381601181379e-07, + "adjoint/solver_0/relative_residual": 0.00046528839606321587, + "adjoint/residual_converged": true, + "time/series_s": 1.2165582630041172, + "time/step_s": 13.43024613900343 + }, + { + "step": 14.0, + "loss/total": 0.0063542646118373465, + "loss/data": 0.0063348050232746615, + "loss/mse": 0.0063348050232746615, + "loss/smooth": 0.01927083795836798, + "loss/activation_l2": 0.018875060431682317, + "loss/activation_l2_penalty": 1.8875060431682318e-07, + "loss/regularization": 1.9459588562684803e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0956808367106054, + "target/error_rms": 0.1378565017321417, + "target/error_max": 0.5658609460166341, + "activation_inv/rms": 0.1373865365735752, + "activation_inv/min": -0.5175572116213902, + "activation_inv/max": 0.565152667598772, + "grad/norm": 0.0004555929959876616, + "grad/abs_max": 4.583953903580002e-05, + "optimizer/steps": 14.0, + "optimizer/lr": 0.03, + "best/step": 14.0, + "best/loss": 0.0063542646118373465, + "best/target_error_max": 0.5658609460166341, + "lowest/loss": 0.0063542646118373465, + "lowest/loss_step": 14.0, + "lowest/target_error_max": 0.5658609460166341, + "lowest/target_error_max_step": 14.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.789243232997251, + "time/backward_s": 5.863297120005882, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 801, + "forward/grad_norm": 0.001655939225790922, + "forward/relative_grad_norm": 0.0004966101563108667, + "forward/grad_norm_first": 3.334485218933665, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 5.557465479221477e-07, + "adjoint/relative_residual": 0.0004981724469469185, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 5.557465479221477e-07, + "adjoint/solver_0/relative_residual": 0.0004981724469469185, + "adjoint/residual_converged": true, + "time/series_s": 1.172264566004742, + "time/step_s": 12.838545363003504 + }, + { + "step": 15.0, + "loss/total": 0.00570454197973032, + "loss/data": 0.005684082881328785, + "loss/mse": 0.005684082881328785, + "loss/smooth": 0.02025881116897845, + "loss/activation_l2": 0.020028723255636628, + "loss/activation_l2_penalty": 2.002872325563663e-07, + "loss/regularization": 2.0459098401534817e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.09095150647458723, + "target/error_rms": 0.13058425879096744, + "target/error_max": 0.5557676429538554, + "activation_inv/rms": 0.1415228718463437, + "activation_inv/min": -0.5487989485086197, + "activation_inv/max": 0.603495894523654, + "grad/norm": 0.00040505666792585833, + "grad/abs_max": 2.566607368138997e-05, + "optimizer/steps": 15.0, + "optimizer/lr": 0.03, + "best/step": 15.0, + "best/loss": 0.00570454197973032, + "best/target_error_max": 0.5557676429538554, + "lowest/loss": 0.00570454197973032, + "lowest/loss_step": 15.0, + "lowest/target_error_max": 0.5557676429538554, + "lowest/target_error_max_step": 15.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.040759237999737, + "time/backward_s": 5.075851232002606, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 704, + "forward/grad_norm": 0.0015557531694542633, + "forward/relative_grad_norm": 0.00046102958156367136, + "forward/grad_norm_first": 3.3745191885033154, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 5.045370596019893e-07, + "adjoint/relative_residual": 0.00047745497963569574, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 5.045370596019893e-07, + "adjoint/solver_0/relative_residual": 0.00047745497963569574, + "adjoint/residual_converged": true, + "time/series_s": 1.167741722005303, + "time/step_s": 11.29817087900301 + }, + { + "step": 16.0, + "loss/total": 0.005192200012181909, + "loss/data": 0.00517092053517983, + "loss/mse": 0.00517092053517983, + "loss/smooth": 0.02106915374040332, + "loss/activation_l2": 0.021032326167591497, + "loss/activation_l2_penalty": 2.1032326167591497e-07, + "loss/regularization": 2.1279477002079234e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08645699709004344, + "target/error_rms": 0.12455023727612682, + "target/error_max": 0.5463309653885488, + "activation_inv/rms": 0.14502526044655634, + "activation_inv/min": -0.5825375199726506, + "activation_inv/max": 0.6458258902934603, + "grad/norm": 0.0005008482039035438, + "grad/abs_max": 4.330284754056029e-05, + "optimizer/steps": 16.0, + "optimizer/lr": 0.03, + "best/step": 16.0, + "best/loss": 0.005192200012181909, + "best/target_error_max": 0.5463309653885488, + "lowest/loss": 0.005192200012181909, + "lowest/loss_step": 16.0, + "lowest/target_error_max": 0.5463309653885488, + "lowest/target_error_max_step": 16.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.175393637997331, + "time/backward_s": 5.348235792997002, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 730, + "forward/grad_norm": 0.0017910146360710423, + "forward/relative_grad_norm": 0.000492426437536191, + "forward/grad_norm_first": 3.63712120135591, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.928218920030642e-07, + "adjoint/relative_residual": 0.0004889625710016801, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.928218920030642e-07, + "adjoint/solver_0/relative_residual": 0.0004889625710016801, + "adjoint/residual_converged": true, + "time/series_s": 1.2163016000049538, + "time/step_s": 11.759947505997843 + }, + { + "step": 17.0, + "loss/total": 0.0047541486848426415, + "loss/data": 0.004731964920792086, + "loss/mse": 0.004731964920792086, + "loss/smooth": 0.02196238844410139, + "loss/activation_l2": 0.022137560645395352, + "loss/activation_l2_penalty": 2.2137560645395355e-07, + "loss/regularization": 2.2183764050555345e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08262866820437875, + "target/error_rms": 0.11914652643856746, + "target/error_max": 0.520476163107289, + "activation_inv/rms": 0.1487869639632295, + "activation_inv/min": -0.6114410880711435, + "activation_inv/max": 0.6708849721924264, + "grad/norm": 0.000466108591667515, + "grad/abs_max": 6.273599524864026e-05, + "optimizer/steps": 17.0, + "optimizer/lr": 0.03, + "best/step": 17.0, + "best/loss": 0.0047541486848426415, + "best/target_error_max": 0.520476163107289, + "lowest/loss": 0.0047541486848426415, + "lowest/loss_step": 17.0, + "lowest/target_error_max": 0.520476163107289, + "lowest/target_error_max_step": 17.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.01455113299744, + "time/backward_s": 5.611048175996984, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 832, + "forward/grad_norm": 0.0017039706685397513, + "forward/relative_grad_norm": 0.00048643101175914146, + "forward/grad_norm_first": 3.503005826823147, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.791247108277555e-07, + "adjoint/relative_residual": 0.0004969324624117139, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.791247108277555e-07, + "adjoint/solver_0/relative_residual": 0.0004969324624117139, + "adjoint/residual_converged": true, + "time/series_s": 1.1623358540018671, + "time/step_s": 12.802082725000218 + }, + { + "step": 18.0, + "loss/total": 0.004513458906191184, + "loss/data": 0.004490597682279285, + "loss/mse": 0.004490597682279285, + "loss/smooth": 0.022631595966111317, + "loss/activation_l2": 0.022962794578838784, + "loss/activation_l2_penalty": 2.2962794578838786e-07, + "loss/regularization": 2.2861223911899706e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08059379742270702, + "target/error_rms": 0.11606805351533148, + "target/error_max": 0.5268512293508748, + "activation_inv/rms": 0.15153479659417762, + "activation_inv/min": -0.628727061446887, + "activation_inv/max": 0.7199907942788847, + "grad/norm": 0.0006178057776376174, + "grad/abs_max": 6.33853259078217e-05, + "optimizer/steps": 18.0, + "optimizer/lr": 0.03, + "best/step": 17.0, + "best/loss": 0.0047541486848426415, + "best/target_error_max": 0.520476163107289, + "lowest/loss": 0.004513458906191184, + "lowest/loss_step": 18.0, + "lowest/target_error_max": 0.520476163107289, + "lowest/target_error_max_step": 17.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.094061635994876, + "time/backward_s": 5.94526065899845, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1004, + "forward/grad_norm": 0.0016438760705832327, + "forward/relative_grad_norm": 0.00045111896999248073, + "forward/grad_norm_first": 3.6439967723162536, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.404401667874391e-07, + "adjoint/relative_residual": 0.00046892609452999276, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.404401667874391e-07, + "adjoint/solver_0/relative_residual": 0.00046892609452999276, + "adjoint/residual_converged": true, + "time/series_s": 1.1053986670012819, + "time/step_s": 14.152005552001356 + }, + { + "step": 19.0, + "loss/total": 0.0043884741405237826, + "loss/data": 0.0043648043640558895, + "loss/mse": 0.0043648043640558895, + "loss/smooth": 0.023429398539878854, + "loss/activation_l2": 0.02403779280144147, + "loss/activation_l2_penalty": 2.4037792801441474e-07, + "loss/regularization": 2.366977646789327e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08039027702475438, + "target/error_rms": 0.11443082229962201, + "target/error_max": 0.4943684750933733, + "activation_inv/rms": 0.15504126160942278, + "activation_inv/min": -0.6532098570820776, + "activation_inv/max": 0.7422036919323012, + "grad/norm": 0.0008754444105116155, + "grad/abs_max": 0.00014666742503444791, + "optimizer/steps": 19.0, + "optimizer/lr": 0.03, + "best/step": 19.0, + "best/loss": 0.0043884741405237826, + "best/target_error_max": 0.4943684750933733, + "lowest/loss": 0.0043884741405237826, + "lowest/loss_step": 19.0, + "lowest/target_error_max": 0.4943684750933733, + "lowest/target_error_max_step": 19.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.923845538003661, + "time/backward_s": 6.616282928996952, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1025, + "forward/grad_norm": 0.0021474362667647617, + "forward/relative_grad_norm": 0.0004870006285770812, + "forward/grad_norm_first": 4.409514363542287, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.6029372161749517e-07, + "adjoint/relative_residual": 0.0004970753374796622, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.6029372161749517e-07, + "adjoint/solver_0/relative_residual": 0.0004970753374796622, + "adjoint/residual_converged": true, + "time/series_s": 1.0672780780005269, + "time/step_s": 14.620519156997034 + }, + { + "step": 20.0, + "loss/total": 0.004533208713163264, + "loss/data": 0.0045089280617876225, + "loss/mse": 0.0045089280617876225, + "loss/smooth": 0.02403298152287373, + "loss/activation_l2": 0.024766985276823587, + "loss/activation_l2_penalty": 2.476698527682359e-07, + "loss/regularization": 2.4280651375641967e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08077636592829182, + "target/error_rms": 0.11630470405517943, + "target/error_max": 0.497854391417869, + "activation_inv/rms": 0.1573753007203595, + "activation_inv/min": -0.6752497386867226, + "activation_inv/max": 0.7976323958347648, + "grad/norm": 0.0009983381114638792, + "grad/abs_max": 9.163818699919051e-05, + "optimizer/steps": 20.0, + "optimizer/lr": 0.03, + "best/step": 19.0, + "best/loss": 0.0043884741405237826, + "best/target_error_max": 0.4943684750933733, + "lowest/loss": 0.0043884741405237826, + "lowest/loss_step": 19.0, + "lowest/target_error_max": 0.4943684750933733, + "lowest/target_error_max_step": 19.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 8.26112692800234, + "time/backward_s": 7.167867616000876, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1218, + "forward/grad_norm": 0.0026235943640969765, + "forward/relative_grad_norm": 0.0004984916249024233, + "forward/grad_norm_first": 5.26306608382945, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.579188574933724e-07, + "adjoint/relative_residual": 0.0004865432273998992, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.579188574933724e-07, + "adjoint/solver_0/relative_residual": 0.0004865432273998992, + "adjoint/residual_converged": true, + "time/series_s": 1.0613064849967486, + "time/step_s": 16.497671514000103 + }, + { + "step": 21.0, + "loss/total": 0.004758163986008317, + "loss/data": 0.004733353584191617, + "loss/mse": 0.004733353584191617, + "loss/smooth": 0.024555518918766943, + "loss/activation_l2": 0.02548828979331917, + "loss/activation_l2_penalty": 2.5488289793319175e-07, + "loss/regularization": 2.4810401816700133e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08632785445669444, + "target/error_rms": 0.11916400778999862, + "target/error_max": 0.49267635347332334, + "activation_inv/rms": 0.15965052393687648, + "activation_inv/min": -0.68113468632268, + "activation_inv/max": 0.8603359250032944, + "grad/norm": 0.0011798548834062034, + "grad/abs_max": 0.00010700506576102475, + "optimizer/steps": 21.0, + "optimizer/lr": 0.03, + "best/step": 21.0, + "best/loss": 0.004758163986008317, + "best/target_error_max": 0.49267635347332334, + "lowest/loss": 0.0043884741405237826, + "lowest/loss_step": 19.0, + "lowest/target_error_max": 0.49267635347332334, + "lowest/target_error_max_step": 21.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.1505301450015395, + "time/backward_s": 6.62262477799959, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1067, + "forward/grad_norm": 0.002977714822795651, + "forward/relative_grad_norm": 0.0004917706670576308, + "forward/grad_norm_first": 6.055088321172054, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.454202464390979e-07, + "adjoint/relative_residual": 0.00046190752376760097, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.454202464390979e-07, + "adjoint/solver_0/relative_residual": 0.00046190752376760097, + "adjoint/residual_converged": true, + "time/series_s": 1.0173859739952604, + "time/step_s": 14.802784373001487 + }, + { + "step": 22.0, + "loss/total": 0.005137542513432194, + "loss/data": 0.005111990572322386, + "loss/mse": 0.005111990572322386, + "loss/smooth": 0.025286925072619697, + "loss/activation_l2": 0.026501603718790127, + "loss/activation_l2_penalty": 2.650160371879013e-07, + "loss/regularization": 2.55519411098076e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0885717829289409, + "target/error_rms": 0.12383849045013087, + "target/error_max": 0.491392713686743, + "activation_inv/rms": 0.1627931316695828, + "activation_inv/min": -0.6923112177109374, + "activation_inv/max": 0.8927890040739455, + "grad/norm": 0.0014725558863343303, + "grad/abs_max": 0.0001562118434693424, + "optimizer/steps": 22.0, + "optimizer/lr": 0.03, + "best/step": 22.0, + "best/loss": 0.005137542513432194, + "best/target_error_max": 0.491392713686743, + "lowest/loss": 0.0043884741405237826, + "lowest/loss_step": 19.0, + "lowest/target_error_max": 0.491392713686743, + "lowest/target_error_max_step": 22.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.988935708002828, + "time/backward_s": 6.96593449300417, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1033, + "forward/grad_norm": 0.0031283519734330617, + "forward/relative_grad_norm": 0.0004658927671826946, + "forward/grad_norm_first": 6.7147468125563625, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.880452834288153e-07, + "adjoint/relative_residual": 0.00048700638392398945, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.880452834288153e-07, + "adjoint/solver_0/relative_residual": 0.00048700638392398945, + "adjoint/residual_converged": true, + "time/series_s": 1.0839074589966913, + "time/step_s": 15.051721016003285 + }, + { + "step": 23.0, + "loss/total": 0.005119010481280589, + "loss/data": 0.005093170439756352, + "loss/mse": 0.005093170439756352, + "loss/smooth": 0.025571142436346547, + "loss/activation_l2": 0.026889908789048622, + "loss/activation_l2_penalty": 2.6889908789048627e-07, + "loss/regularization": 2.5840041524237035e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.08807837762104506, + "target/error_rms": 0.12361032043995783, + "target/error_max": 0.4920338912397623, + "activation_inv/rms": 0.16398142818334224, + "activation_inv/min": -0.7046876862335503, + "activation_inv/max": 0.9239121018819358, + "grad/norm": 0.0025801067304874435, + "grad/abs_max": 0.0005983352444533824, + "optimizer/steps": 23.0, + "optimizer/lr": 0.03, + "best/step": 22.0, + "best/loss": 0.005137542513432194, + "best/target_error_max": 0.491392713686743, + "lowest/loss": 0.0043884741405237826, + "lowest/loss_step": 19.0, + "lowest/target_error_max": 0.491392713686743, + "lowest/target_error_max_step": 22.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.782732405001298, + "time/backward_s": 7.179605249002634, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1155, + "forward/grad_norm": 0.003163595519472416, + "forward/relative_grad_norm": 0.00047948298427214175, + "forward/grad_norm_first": 6.597930736321695, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.953644740169057e-07, + "adjoint/relative_residual": 0.0004952224318878035, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.953644740169057e-07, + "adjoint/solver_0/relative_residual": 0.0004952224318878035, + "adjoint/residual_converged": true, + "time/series_s": 1.0687944230012363, + "time/step_s": 16.038192824998987 + }, + { + "step": 24.0, + "loss/total": 0.003921962661331662, + "loss/data": 0.0038955445548452534, + "loss/mse": 0.0038955445548452534, + "loss/smooth": 0.026143127937468376, + "loss/activation_l2": 0.02749785489408344, + "loss/activation_l2_penalty": 2.7497854894083445e-07, + "loss/regularization": 2.641810648640921e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.07661563236205081, + "target/error_rms": 0.1081047346999, + "target/error_max": 0.48509136833599986, + "activation_inv/rms": 0.16582477165394632, + "activation_inv/min": -0.7139932584016726, + "activation_inv/max": 0.9614234089844351, + "grad/norm": 0.0009175010055743119, + "grad/abs_max": 9.080072761070594e-05, + "optimizer/steps": 24.0, + "optimizer/lr": 0.03, + "best/step": 24.0, + "best/loss": 0.003921962661331662, + "best/target_error_max": 0.48509136833599986, + "lowest/loss": 0.003921962661331662, + "lowest/loss_step": 24.0, + "lowest/target_error_max": 0.48509136833599986, + "lowest/target_error_max_step": 24.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.6803212969971355, + "time/backward_s": 6.6660213330033, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1114, + "forward/grad_norm": 0.003368610393061946, + "forward/relative_grad_norm": 0.0004955867735050893, + "forward/grad_norm_first": 6.797216094443152, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 4.0743165693121147e-07, + "adjoint/relative_residual": 0.00046573646065641087, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 4.0743165693121147e-07, + "adjoint/solver_0/relative_residual": 0.00046573646065641087, + "adjoint/residual_converged": true, + "time/series_s": 1.0431512700015446, + "time/step_s": 15.401899404001597 + }, + { + "step": 25.0, + "loss/total": 0.0031580176380483996, + "loss/data": 0.003131101774212644, + "loss/mse": 0.003131101774212644, + "loss/smooth": 0.02663258380464942, + "loss/activation_l2": 0.028328003110612232, + "loss/activation_l2_penalty": 2.8328003110612236e-07, + "loss/regularization": 2.6915863835755544e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06714746026645489, + "target/error_rms": 0.09691906583659343, + "target/error_max": 0.4968845515509463, + "activation_inv/rms": 0.16830924844051864, + "activation_inv/min": -0.7160351778262004, + "activation_inv/max": 0.9720485962110565, + "grad/norm": 0.000492243105684301, + "grad/abs_max": 0.00010819003015122576, + "optimizer/steps": 25.0, + "optimizer/lr": 0.03, + "best/step": 24.0, + "best/loss": 0.003921962661331662, + "best/target_error_max": 0.48509136833599986, + "lowest/loss": 0.0031580176380483996, + "lowest/loss_step": 25.0, + "lowest/target_error_max": 0.48509136833599986, + "lowest/target_error_max_step": 24.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.233092280999699, + "time/backward_s": 6.618005723001261, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1073, + "forward/grad_norm": 0.0021037430106579345, + "forward/relative_grad_norm": 0.000486937031204071, + "forward/grad_norm_first": 4.320359463021153, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.919168284391891e-07, + "adjoint/relative_residual": 0.0004997063590415646, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.919168284391891e-07, + "adjoint/solver_0/relative_residual": 0.0004997063590415646, + "adjoint/residual_converged": true, + "time/series_s": 1.0524697479995666, + "time/step_s": 14.91057616899343 + }, + { + "step": 26.0, + "loss/total": 0.0028850714487195315, + "loss/data": 0.002857880808184125, + "loss/mse": 0.002857880808184125, + "loss/smooth": 0.026903306525680477, + "loss/activation_l2": 0.028733400972642025, + "loss/activation_l2_penalty": 2.873340097264203e-07, + "loss/regularization": 2.71906405354069e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06301979583952542, + "target/error_rms": 0.09259396537870258, + "target/error_max": 0.4923474914759756, + "activation_inv/rms": 0.16950929464970949, + "activation_inv/min": -0.7278721908390829, + "activation_inv/max": 0.9937184118851394, + "grad/norm": 0.0002115235834196881, + "grad/abs_max": 2.5788206249526316e-05, + "optimizer/steps": 26.0, + "optimizer/lr": 0.03, + "best/step": 24.0, + "best/loss": 0.003921962661331662, + "best/target_error_max": 0.48509136833599986, + "lowest/loss": 0.0028850714487195315, + "lowest/loss_step": 26.0, + "lowest/target_error_max": 0.48509136833599986, + "lowest/target_error_max_step": 24.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 6.575749818999611, + "time/backward_s": 6.250614866003161, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 986, + "forward/grad_norm": 0.0014836488679210102, + "forward/relative_grad_norm": 0.0004949250384428625, + "forward/grad_norm_first": 2.9977244081020413, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.7175978215007295e-07, + "adjoint/relative_residual": 0.0004961464694330528, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.7175978215007295e-07, + "adjoint/solver_0/relative_residual": 0.0004961464694330528, + "adjoint/residual_converged": true, + "time/series_s": 1.0343804559961427, + "time/step_s": 13.86783718100196 + }, + { + "step": 27.0, + "loss/total": 0.0027516776232357053, + "loss/data": 0.0027241405842244235, + "loss/mse": 0.0027241405842244235, + "loss/smooth": 0.027243827589567456, + "loss/activation_l2": 0.02932114217143319, + "loss/activation_l2_penalty": 2.9321142171433193e-07, + "loss/regularization": 2.753703901128179e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06150122138557623, + "target/error_rms": 0.09040144773549409, + "target/error_max": 0.4894510609228456, + "activation_inv/rms": 0.17123417349183892, + "activation_inv/min": -0.7478049208366971, + "activation_inv/max": 1.0107121539293407, + "grad/norm": 0.00019876526561198987, + "grad/abs_max": 2.3111644301260906e-05, + "optimizer/steps": 27.0, + "optimizer/lr": 0.03, + "best/step": 24.0, + "best/loss": 0.003921962661331662, + "best/target_error_max": 0.48509136833599986, + "lowest/loss": 0.0027516776232357053, + "lowest/loss_step": 27.0, + "lowest/target_error_max": 0.48509136833599986, + "lowest/target_error_max_step": 24.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 5.954917062001186, + "time/backward_s": 5.981495596002787, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 895, + "forward/grad_norm": 0.0011934013053349036, + "forward/relative_grad_norm": 0.0004896568668983354, + "forward/grad_norm_first": 2.4372195837757595, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.59723110643082e-07, + "adjoint/relative_residual": 0.0004917259616630663, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.59723110643082e-07, + "adjoint/solver_0/relative_residual": 0.0004917259616630663, + "adjoint/residual_converged": true, + "time/series_s": 0.9916830869988189, + "time/step_s": 12.935592912996071 + }, + { + "step": 28.0, + "loss/total": 0.0026173491838931452, + "loss/data": 0.002589506504036888, + "loss/mse": 0.002589506504036888, + "loss/smooth": 0.02754372402938799, + "loss/activation_l2": 0.029895582686937313, + "loss/activation_l2_penalty": 2.9895582686937315e-07, + "loss/regularization": 2.7842679856257366e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06020239700603821, + "target/error_rms": 0.0881392053067797, + "target/error_max": 0.4856508510704425, + "activation_inv/rms": 0.172903391195596, + "activation_inv/min": -0.7629494658160603, + "activation_inv/max": 1.0242667931544647, + "grad/norm": 0.0001792141478953569, + "grad/abs_max": 2.6035473736381257e-05, + "optimizer/steps": 28.0, + "optimizer/lr": 0.03, + "best/step": 24.0, + "best/loss": 0.003921962661331662, + "best/target_error_max": 0.48509136833599986, + "lowest/loss": 0.0026173491838931452, + "lowest/loss_step": 28.0, + "lowest/target_error_max": 0.48509136833599986, + "lowest/target_error_max_step": 24.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 5.568584487999033, + "time/backward_s": 5.847761345001345, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 836, + "forward/grad_norm": 0.0013488606702473994, + "forward/relative_grad_norm": 0.0004996834267279225, + "forward/grad_norm_first": 2.699430475571593, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.4266086774701487e-07, + "adjoint/relative_residual": 0.000480424960996995, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.4266086774701487e-07, + "adjoint/solver_0/relative_residual": 0.000480424960996995, + "adjoint/residual_converged": true, + "time/series_s": 0.975737647000642, + "time/step_s": 12.39907434899942 + }, + { + "step": 29.0, + "loss/total": 0.0025160624992349883, + "loss/data": 0.002487983391569448, + "loss/mse": 0.002487983391569448, + "loss/smooth": 0.027775354452443307, + "loss/activation_l2": 0.030375321309719046, + "loss/activation_l2_penalty": 3.037532130971905e-07, + "loss/regularization": 2.8079107665540498e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.059052083126932206, + "target/error_rms": 0.08639415590598905, + "target/error_max": 0.4857656892849159, + "activation_inv/rms": 0.1742851723748152, + "activation_inv/min": -0.7844276541438764, + "activation_inv/max": 1.0545576793204507, + "grad/norm": 0.00021369137157029513, + "grad/abs_max": 2.8756049008896676e-05, + "optimizer/steps": 29.0, + "optimizer/lr": 0.03, + "best/step": 24.0, + "best/loss": 0.003921962661331662, + "best/target_error_max": 0.48509136833599986, + "lowest/loss": 0.0025160624992349883, + "lowest/loss_step": 29.0, + "lowest/target_error_max": 0.48509136833599986, + "lowest/target_error_max_step": 24.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 5.447581178996188, + "time/backward_s": 5.810341041003994, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 819, + "forward/grad_norm": 0.0013794726233648713, + "forward/relative_grad_norm": 0.0004983995642962961, + "forward/grad_norm_first": 2.7678046334422186, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.4921256868378464e-07, + "adjoint/relative_residual": 0.0004995002202486573, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.4921256868378464e-07, + "adjoint/solver_0/relative_residual": 0.0004995002202486573, + "adjoint/residual_converged": true, + "time/series_s": 0.9479105770005845, + "time/step_s": 12.212683918995026 + }, + { + "step": 30.0, + "loss/total": 0.0024334261002552852, + "loss/data": 0.0024050775540084015, + "loss/mse": 0.0024050775540084015, + "loss/smooth": 0.02803979239136431, + "loss/activation_l2": 0.03087538555196321, + "loss/activation_l2_penalty": 3.087538555196321e-07, + "loss/regularization": 2.834854624688394e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05778479312050011, + "target/error_rms": 0.08494252563954761, + "target/error_max": 0.48106775259855195, + "activation_inv/rms": 0.17571393101277774, + "activation_inv/min": -0.7992972586618147, + "activation_inv/max": 1.0854363156387519, + "grad/norm": 0.0009428407575272503, + "grad/abs_max": 0.0003688861679872752, + "optimizer/steps": 30.0, + "optimizer/lr": 0.03, + "best/step": 30.0, + "best/loss": 0.0024334261002552852, + "best/target_error_max": 0.48106775259855195, + "lowest/loss": 0.0024334261002552852, + "lowest/loss_step": 30.0, + "lowest/target_error_max": 0.48106775259855195, + "lowest/target_error_max_step": 30.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.872180884005502, + "time/backward_s": 6.279078384002787, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 873, + "forward/grad_norm": 0.0013606365921305578, + "forward/relative_grad_norm": 0.000492517251880625, + "forward/grad_norm_first": 2.762617120385349, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.0773529770252634e-07, + "adjoint/relative_residual": 0.00044769508552949496, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.0773529770252634e-07, + "adjoint/solver_0/relative_residual": 0.00044769508552949496, + "adjoint/residual_converged": true, + "time/series_s": 1.0319016600042232, + "time/step_s": 13.19625459600502 + }, + { + "step": 31.0, + "loss/total": 0.0024446488710468356, + "loss/data": 0.0024159891283199873, + "loss/mse": 0.0024159891283199873, + "loss/smooth": 0.0283449696206934, + "loss/activation_l2": 0.031477310615487454, + "loss/activation_l2_penalty": 3.1477310615487457e-07, + "loss/regularization": 2.8659742726848273e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05812469834344254, + "target/error_rms": 0.08513499506642355, + "target/error_max": 0.48048002727937256, + "activation_inv/rms": 0.17741846187893598, + "activation_inv/min": -0.8155031408761064, + "activation_inv/max": 1.1157748132120104, + "grad/norm": 0.00046143294365367474, + "grad/abs_max": 6.061007011708759e-05, + "optimizer/steps": 31.0, + "optimizer/lr": 0.03, + "best/step": 31.0, + "best/loss": 0.0024446488710468356, + "best/target_error_max": 0.48048002727937256, + "lowest/loss": 0.0024334261002552852, + "lowest/loss_step": 30.0, + "lowest/target_error_max": 0.48048002727937256, + "lowest/target_error_max_step": 31.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.011436054999649, + "time/backward_s": 6.684786584999529, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 910, + "forward/grad_norm": 0.001460129906999606, + "forward/relative_grad_norm": 0.0004994237596063479, + "forward/grad_norm_first": 2.923629240528121, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.966317918874241e-07, + "adjoint/relative_residual": 0.00043056603101289436, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.966317918874241e-07, + "adjoint/solver_0/relative_residual": 0.00043056603101289436, + "adjoint/residual_converged": true, + "time/series_s": 1.0220091139999568, + "time/step_s": 13.731050057001994 + }, + { + "step": 32.0, + "loss/total": 0.0024731527732243575, + "loss/data": 0.002444344070361676, + "loss/mse": 0.002444344070361676, + "loss/smooth": 0.028490938846805626, + "loss/activation_l2": 0.03177640158761264, + "loss/activation_l2_penalty": 3.177640158761264e-07, + "loss/regularization": 2.8808702862681752e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.058790218646102135, + "target/error_rms": 0.08563312566457577, + "target/error_max": 0.4742025139896238, + "activation_inv/rms": 0.17825936605859632, + "activation_inv/min": -0.8259045015615589, + "activation_inv/max": 1.1423466599617542, + "grad/norm": 0.000548224841102947, + "grad/abs_max": 4.802606782307446e-05, + "optimizer/steps": 32.0, + "optimizer/lr": 0.03, + "best/step": 32.0, + "best/loss": 0.0024731527732243575, + "best/target_error_max": 0.4742025139896238, + "lowest/loss": 0.0024334261002552852, + "lowest/loss_step": 30.0, + "lowest/target_error_max": 0.4742025139896238, + "lowest/target_error_max_step": 32.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.957047215997591, + "time/backward_s": 6.801201205002144, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 903, + "forward/grad_norm": 0.0015819344133645495, + "forward/relative_grad_norm": 0.0004979950628095845, + "forward/grad_norm_first": 3.1766066202335517, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.0507745335667186e-07, + "adjoint/relative_residual": 0.0004402491232570492, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.0507745335667186e-07, + "adjoint/solver_0/relative_residual": 0.0004402491232570492, + "adjoint/residual_converged": true, + "time/series_s": 1.0492634160036687, + "time/step_s": 13.820952471003693 + }, + { + "step": 33.0, + "loss/total": 0.002417436550316315, + "loss/data": 0.0023882717202930127, + "loss/mse": 0.0023882717202930127, + "loss/smooth": 0.028840520332986105, + "loss/activation_l2": 0.032430969031607006, + "loss/activation_l2_penalty": 3.243096903160701e-07, + "loss/regularization": 2.9164830023302176e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0584582678498159, + "target/error_rms": 0.08464523117623955, + "target/error_max": 0.47425306191526917, + "activation_inv/rms": 0.18008600454118306, + "activation_inv/min": -0.8477649550258074, + "activation_inv/max": 1.1785754345031194, + "grad/norm": 0.0005984074102968347, + "grad/abs_max": 4.797402700833128e-05, + "optimizer/steps": 33.0, + "optimizer/lr": 0.03, + "best/step": 32.0, + "best/loss": 0.0024731527732243575, + "best/target_error_max": 0.4742025139896238, + "lowest/loss": 0.002417436550316315, + "lowest/loss_step": 33.0, + "lowest/target_error_max": 0.4742025139896238, + "lowest/target_error_max_step": 32.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 5.680584591995284, + "time/backward_s": 5.970245348995377, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 864, + "forward/grad_norm": 0.0017614724069379487, + "forward/relative_grad_norm": 0.0004971368307630193, + "forward/grad_norm_first": 3.543234574341218, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.735595541012358e-07, + "adjoint/relative_residual": 0.0003993738044164726, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.735595541012358e-07, + "adjoint/solver_0/relative_residual": 0.0003993738044164726, + "adjoint/residual_converged": true, + "time/series_s": 0.9456909310029005, + "time/step_s": 12.6032828660027 + }, + { + "step": 34.0, + "loss/total": 0.0023134622211363294, + "loss/data": 0.0022841340525349982, + "loss/mse": 0.0022841340525349982, + "loss/smooth": 0.029000632091375884, + "loss/activation_l2": 0.03275365099554109, + "loss/activation_l2_penalty": 3.2753650995541094e-07, + "loss/regularization": 2.9328168601331296e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05697643939471793, + "target/error_rms": 0.08277923747900191, + "target/error_max": 0.46755017461081644, + "activation_inv/rms": 0.180979697744087, + "activation_inv/min": -0.9022585774700029, + "activation_inv/max": 1.1887042650976483, + "grad/norm": 0.0005754862206555621, + "grad/abs_max": 5.644664176707992e-05, + "optimizer/steps": 34.0, + "optimizer/lr": 0.03, + "best/step": 34.0, + "best/loss": 0.0023134622211363294, + "best/target_error_max": 0.46755017461081644, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.46755017461081644, + "lowest/target_error_max_step": 34.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 5.80899108399899, + "time/backward_s": 6.761467386997538, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 879, + "forward/grad_norm": 0.0017298063590569564, + "forward/relative_grad_norm": 0.00048707197022095105, + "forward/grad_norm_first": 3.5514389347271664, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.31309823186952e-07, + "adjoint/relative_residual": 0.0004945874302989271, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.31309823186952e-07, + "adjoint/solver_0/relative_residual": 0.0004945874302989271, + "adjoint/residual_converged": true, + "time/series_s": 0.9328294560036738, + "time/step_s": 13.515821321998374 + }, + { + "step": 35.0, + "loss/total": 0.002367202468575956, + "loss/data": 0.0023377040518563863, + "loss/mse": 0.0023377040518563863, + "loss/smooth": 0.029166789388718566, + "loss/activation_l2": 0.03316273308509277, + "loss/activation_l2_penalty": 3.316273308509278e-07, + "loss/regularization": 2.9498416719569497e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05726705747943009, + "target/error_rms": 0.08374432610970822, + "target/error_max": 0.4642936258378083, + "activation_inv/rms": 0.18210637848546868, + "activation_inv/min": -0.9036172099657929, + "activation_inv/max": 1.22565584651784, + "grad/norm": 0.0006422846840831804, + "grad/abs_max": 6.981284781258641e-05, + "optimizer/steps": 35.0, + "optimizer/lr": 0.03, + "best/step": 35.0, + "best/loss": 0.002367202468575956, + "best/target_error_max": 0.4642936258378083, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4642936258378083, + "lowest/target_error_max_step": 35.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.855989678995684, + "time/backward_s": 6.132009041000856, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1182, + "forward/grad_norm": 0.0016431341002798331, + "forward/relative_grad_norm": 0.0004987719824726167, + "forward/grad_norm_first": 3.294359262391094, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.2094227914036016e-07, + "adjoint/relative_residual": 0.0004735891279846231, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.2094227914036016e-07, + "adjoint/solver_0/relative_residual": 0.0004735891279846231, + "adjoint/residual_converged": true, + "time/series_s": 1.0153778259991668, + "time/step_s": 15.015783164999448 + }, + { + "step": 36.0, + "loss/total": 0.002469756399641527, + "loss/data": 0.0024399330849523876, + "loss/mse": 0.0024399330849523876, + "loss/smooth": 0.029485706230396768, + "loss/activation_l2": 0.03376084587426729, + "loss/activation_l2_penalty": 3.376084587426729e-07, + "loss/regularization": 2.982331468913944e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.060112947693937255, + "target/error_rms": 0.08555582537067341, + "target/error_max": 0.4601287141298659, + "activation_inv/rms": 0.18374124706844483, + "activation_inv/min": -0.9489574503934421, + "activation_inv/max": 1.217098572014449, + "grad/norm": 0.0007521027526415365, + "grad/abs_max": 6.0986205698569894e-05, + "optimizer/steps": 36.0, + "optimizer/lr": 0.03, + "best/step": 36.0, + "best/loss": 0.002469756399641527, + "best/target_error_max": 0.4601287141298659, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4601287141298659, + "lowest/target_error_max_step": 36.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.488412006001454, + "time/backward_s": 6.791815648997726, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1138, + "forward/grad_norm": 0.001801091344513779, + "forward/relative_grad_norm": 0.0004560112863363293, + "forward/grad_norm_first": 3.9496639633287303, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.3514501454714405e-07, + "adjoint/relative_residual": 0.0004840757886972292, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.3514501454714405e-07, + "adjoint/solver_0/relative_residual": 0.0004840757886972292, + "adjoint/residual_converged": true, + "time/series_s": 1.0619608519991743, + "time/step_s": 15.354780119996576 + }, + { + "step": 37.0, + "loss/total": 0.0027319015071498604, + "loss/data": 0.0027019711344624556, + "loss/mse": 0.0027019711344624556, + "loss/smooth": 0.029590530648262434, + "loss/activation_l2": 0.033984203914265106, + "loss/activation_l2_penalty": 3.398420391426511e-07, + "loss/regularization": 2.9930372687405086e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06374318220935211, + "target/error_rms": 0.0900328462472856, + "target/error_max": 0.4523062079334643, + "activation_inv/rms": 0.18434805101835253, + "activation_inv/min": -0.9607236389417082, + "activation_inv/max": 1.2489707373914272, + "grad/norm": 0.0008857001753768678, + "grad/abs_max": 8.116394762330423e-05, + "optimizer/steps": 37.0, + "optimizer/lr": 0.03, + "best/step": 37.0, + "best/loss": 0.0027319015071498604, + "best/target_error_max": 0.4523062079334643, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4523062079334643, + "lowest/target_error_max_step": 37.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.587301181003568, + "time/backward_s": 7.150543643001583, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1153, + "forward/grad_norm": 0.0022419521849308226, + "forward/relative_grad_norm": 0.0004945971144316975, + "forward/grad_norm_first": 4.5328856952731575, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.5856892669673646e-07, + "adjoint/relative_residual": 0.0004921549471357909, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.5856892669673646e-07, + "adjoint/solver_0/relative_residual": 0.0004921549471357909, + "adjoint/residual_converged": true, + "time/series_s": 1.0059738559939433, + "time/step_s": 15.75588329799939 + }, + { + "step": 38.0, + "loss/total": 0.00275894810944711, + "loss/data": 0.0027286582153335658, + "loss/mse": 0.0027286582153335658, + "loss/smooth": 0.029944394905525504, + "loss/activation_l2": 0.03454992080187748, + "loss/activation_l2_penalty": 3.454992080187748e-07, + "loss/regularization": 3.0289894113544282e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0654559873652897, + "target/error_rms": 0.09047637617632957, + "target/error_max": 0.45558112721605243, + "activation_inv/rms": 0.18587608991443058, + "activation_inv/min": -1.0208201116849642, + "activation_inv/max": 1.2562920620618236, + "grad/norm": 0.0009145839898206099, + "grad/abs_max": 0.0001361215887336661, + "optimizer/steps": 38.0, + "optimizer/lr": 0.03, + "best/step": 37.0, + "best/loss": 0.0027319015071498604, + "best/target_error_max": 0.4523062079334643, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4523062079334643, + "lowest/target_error_max_step": 37.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 8.15696475700679, + "time/backward_s": 6.996476120999432, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1233, + "forward/grad_norm": 0.00256332497964298, + "forward/relative_grad_norm": 0.000492350795239437, + "forward/grad_norm_first": 5.206298038772132, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.6485720682185905e-07, + "adjoint/relative_residual": 0.0004983310122270105, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.6485720682185905e-07, + "adjoint/solver_0/relative_residual": 0.0004983310122270105, + "adjoint/residual_converged": true, + "time/series_s": 1.0023197760019684, + "time/step_s": 16.16276880199439 + }, + { + "step": 39.0, + "loss/total": 0.002489351964490486, + "loss/data": 0.0024588353775230314, + "loss/mse": 0.0024588353775230314, + "loss/smooth": 0.03016678934005338, + "loss/activation_l2": 0.034979762740146456, + "loss/activation_l2_penalty": 3.497976274014646e-07, + "loss/regularization": 3.0516586967454846e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06119031285369509, + "target/error_rms": 0.08588658878177136, + "target/error_max": 0.4504357482888526, + "activation_inv/rms": 0.18702877516613975, + "activation_inv/min": -1.0101613047192937, + "activation_inv/max": 1.2737017031132623, + "grad/norm": 0.0007673162837719112, + "grad/abs_max": 6.002280592155602e-05, + "optimizer/steps": 39.0, + "optimizer/lr": 0.03, + "best/step": 39.0, + "best/loss": 0.002489351964490486, + "best/target_error_max": 0.4504357482888526, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4504357482888526, + "lowest/target_error_max_step": 39.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.1675517600015155, + "time/backward_s": 6.954053624001972, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1085, + "forward/grad_norm": 0.0023320968105382846, + "forward/relative_grad_norm": 0.0004749952455974738, + "forward/grad_norm_first": 4.909726638642144, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.4130477825669745e-07, + "adjoint/relative_residual": 0.0004910742908680765, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.4130477825669745e-07, + "adjoint/solver_0/relative_residual": 0.0004910742908680765, + "adjoint/residual_converged": true, + "time/series_s": 1.0053687330000685, + "time/step_s": 15.13893642200128 + }, + { + "step": 40.0, + "loss/total": 0.002443878042747662, + "loss/data": 0.002413098312324233, + "loss/mse": 0.002413098312324233, + "loss/smooth": 0.030426156395316675, + "loss/activation_l2": 0.03535740281123908, + "loss/activation_l2_penalty": 3.535740281123908e-07, + "loss/regularization": 3.077973042342907e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06028573592665538, + "target/error_rms": 0.0850840463128823, + "target/error_max": 0.45973226591074023, + "activation_inv/rms": 0.1880356423959008, + "activation_inv/min": -1.0346269083469062, + "activation_inv/max": 1.2928920535671176, + "grad/norm": 0.00086702136239698, + "grad/abs_max": 7.622372066777862e-05, + "optimizer/steps": 40.0, + "optimizer/lr": 0.03, + "best/step": 39.0, + "best/loss": 0.002489351964490486, + "best/target_error_max": 0.4504357482888526, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4504357482888526, + "lowest/target_error_max_step": 39.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 8.645296770999266, + "time/backward_s": 7.024570520996349, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1306, + "forward/grad_norm": 0.001993733602335359, + "forward/relative_grad_norm": 0.00045922976048651937, + "forward/grad_norm_first": 4.341472992131756, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.029759735182487e-07, + "adjoint/relative_residual": 0.00044003805657381303, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.029759735182487e-07, + "adjoint/solver_0/relative_residual": 0.00044003805657381303, + "adjoint/residual_converged": true, + "time/series_s": 0.9631952260024264, + "time/step_s": 16.64007103900076 + }, + { + "step": 41.0, + "loss/total": 0.0025225903224911387, + "loss/data": 0.002491604402012208, + "loss/mse": 0.002491604402012208, + "loss/smooth": 0.030627947417730252, + "loss/activation_l2": 0.03579730612006404, + "loss/activation_l2_penalty": 3.5797306120064046e-07, + "loss/regularization": 3.098592047893089e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.061540738259520285, + "target/error_rms": 0.08645700206482193, + "target/error_max": 0.4438860516175238, + "activation_inv/rms": 0.18920176035138797, + "activation_inv/min": -1.0385039240642626, + "activation_inv/max": 1.3135534334067667, + "grad/norm": 0.0009438377479964365, + "grad/abs_max": 0.00015203085089068625, + "optimizer/steps": 41.0, + "optimizer/lr": 0.03, + "best/step": 41.0, + "best/loss": 0.0025225903224911387, + "best/target_error_max": 0.4438860516175238, + "lowest/loss": 0.0023134622211363294, + "lowest/loss_step": 34.0, + "lowest/target_error_max": 0.4438860516175238, + "lowest/target_error_max_step": 41.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.124534907998168, + "time/backward_s": 6.9951599829946645, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1393, + "forward/grad_norm": 0.00210610911696387, + "forward/relative_grad_norm": 0.0004657795726946473, + "forward/grad_norm_first": 4.5216863092117165, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.266290695911893e-07, + "adjoint/relative_residual": 0.0004668580431575667, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.266290695911893e-07, + "adjoint/solver_0/relative_residual": 0.0004668580431575667, + "adjoint/residual_converged": true, + "time/series_s": 0.9314847899950109, + "time/step_s": 17.06334258199786 + }, + { + "step": 42.0, + "loss/total": 0.0022947754733950066, + "loss/data": 0.0022635397576316802, + "loss/mse": 0.0022635397576316802, + "loss/smooth": 0.030873648994962897, + "loss/activation_l2": 0.03620667683634692, + "loss/activation_l2_penalty": 3.6206676836346924e-07, + "loss/regularization": 3.1235715763326364e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.057581969192631005, + "target/error_rms": 0.08240521386960319, + "target/error_max": 0.44490279679552397, + "activation_inv/rms": 0.19028052143177168, + "activation_inv/min": -1.0558836937479321, + "activation_inv/max": 1.343300818175141, + "grad/norm": 0.0007517401431349029, + "grad/abs_max": 7.306254577337433e-05, + "optimizer/steps": 42.0, + "optimizer/lr": 0.03, + "best/step": 41.0, + "best/loss": 0.0025225903224911387, + "best/target_error_max": 0.4438860516175238, + "lowest/loss": 0.0022947754733950066, + "lowest/loss_step": 42.0, + "lowest/target_error_max": 0.4438860516175238, + "lowest/target_error_max_step": 41.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 8.749028608996014, + "time/backward_s": 7.1520178520004265, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1325, + "forward/grad_norm": 0.00230358294128621, + "forward/relative_grad_norm": 0.000471600335269747, + "forward/grad_norm_first": 4.884608362223919, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.252092294523956e-07, + "adjoint/relative_residual": 0.0004876838290308868, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.252092294523956e-07, + "adjoint/solver_0/relative_residual": 0.0004876838290308868, + "adjoint/residual_converged": true, + "time/series_s": 0.9938877540043904, + "time/step_s": 16.901756537998153 + }, + { + "step": 43.0, + "loss/total": 0.001994876926407683, + "loss/data": 0.001963557743816117, + "loss/mse": 0.001963557743816117, + "loss/smooth": 0.030955032053825916, + "loss/activation_l2": 0.03641505377397035, + "loss/activation_l2_penalty": 3.6415053773970353e-07, + "loss/regularization": 3.131918259156562e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.053597059708887985, + "target/error_rms": 0.07675072137412359, + "target/error_max": 0.4352234065356707, + "activation_inv/rms": 0.1908272878127506, + "activation_inv/min": -1.0793246531911067, + "activation_inv/max": 1.3760679255626969, + "grad/norm": 0.0005023564503385342, + "grad/abs_max": 5.5866553396822375e-05, + "optimizer/steps": 43.0, + "optimizer/lr": 0.03, + "best/step": 43.0, + "best/loss": 0.001994876926407683, + "best/target_error_max": 0.4352234065356707, + "lowest/loss": 0.001994876926407683, + "lowest/loss_step": 43.0, + "lowest/target_error_max": 0.4352234065356707, + "lowest/target_error_max_step": 43.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.9741666200061445, + "time/backward_s": 6.755267392996757, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1216, + "forward/grad_norm": 0.0020960908013726927, + "forward/relative_grad_norm": 0.000475758526232759, + "forward/grad_norm_first": 4.405787149986264, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.0556266620294293e-07, + "adjoint/relative_residual": 0.0004919806346689899, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.0556266620294293e-07, + "adjoint/solver_0/relative_residual": 0.0004919806346689899, + "adjoint/residual_converged": true, + "time/series_s": 1.0362442340046982, + "time/step_s": 15.777417145000072 + }, + { + "step": 44.0, + "loss/total": 0.0018154120291238778, + "loss/data": 0.0017837788893656594, + "loss/mse": 0.0017837788893656594, + "loss/smooth": 0.0312623432490828, + "loss/activation_l2": 0.03707965091355028, + "loss/activation_l2_penalty": 3.707965091355029e-07, + "loss/regularization": 3.1633139758218304e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05095755540611564, + "target/error_rms": 0.07315283089598773, + "target/error_max": 0.43706160317597653, + "activation_inv/rms": 0.19256077200081612, + "activation_inv/min": -1.089398640862676, + "activation_inv/max": 1.3894944816718282, + "grad/norm": 0.000357513839599695, + "grad/abs_max": 3.340252427091248e-05, + "optimizer/steps": 44.0, + "optimizer/lr": 0.03, + "best/step": 43.0, + "best/loss": 0.001994876926407683, + "best/target_error_max": 0.4352234065356707, + "lowest/loss": 0.0018154120291238778, + "lowest/loss_step": 44.0, + "lowest/target_error_max": 0.4352234065356707, + "lowest/target_error_max_step": 43.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.506628732000536, + "time/backward_s": 6.827222489999258, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1135, + "forward/grad_norm": 0.001782316376731736, + "forward/relative_grad_norm": 0.0004934163089852345, + "forward/grad_norm_first": 3.6121959170690316, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.8905305874584553e-07, + "adjoint/relative_residual": 0.0004882886346253748, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.8905305874584553e-07, + "adjoint/solver_0/relative_residual": 0.0004882886346253748, + "adjoint/residual_converged": true, + "time/series_s": 1.0194864820005023, + "time/step_s": 15.360345237997535 + }, + { + "step": 45.0, + "loss/total": 0.0017365677937014768, + "loss/data": 0.0017049795385131246, + "loss/mse": 0.0017049795385131246, + "loss/smooth": 0.031217219329553222, + "loss/activation_l2": 0.037103585879894325, + "loss/activation_l2_penalty": 3.7103585879894326e-07, + "loss/regularization": 3.158825518835216e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.049392788022242964, + "target/error_rms": 0.07151879903591345, + "target/error_max": 0.42930374364851004, + "activation_inv/rms": 0.1926229110980683, + "activation_inv/min": -1.1144489793569208, + "activation_inv/max": 1.4237287335477042, + "grad/norm": 0.00030080147357762005, + "grad/abs_max": 2.784667707066381e-05, + "optimizer/steps": 45.0, + "optimizer/lr": 0.03, + "best/step": 45.0, + "best/loss": 0.0017365677937014768, + "best/target_error_max": 0.42930374364851004, + "lowest/loss": 0.0017365677937014768, + "lowest/loss_step": 45.0, + "lowest/target_error_max": 0.42930374364851004, + "lowest/target_error_max_step": 45.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.791079905997321, + "time/backward_s": 6.6995079569969676, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1330, + "forward/grad_norm": 0.0014953370258837166, + "forward/relative_grad_norm": 0.00046937923535748125, + "forward/grad_norm_first": 3.1857758359183945, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.886543987416191e-07, + "adjoint/relative_residual": 0.000498756019919287, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.886543987416191e-07, + "adjoint/solver_0/relative_residual": 0.000498756019919287, + "adjoint/residual_converged": true, + "time/series_s": 1.030315989999508, + "time/step_s": 16.533099223001045 + }, + { + "step": 46.0, + "loss/total": 0.0016460693811817064, + "loss/data": 0.0016141412644062815, + "loss/mse": 0.0016141412644062815, + "loss/smooth": 0.0315501621300024, + "loss/activation_l2": 0.03779546454224821, + "loss/activation_l2_penalty": 3.779546454224822e-07, + "loss/regularization": 3.192811677542488e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04812187313665915, + "target/error_rms": 0.06958752613233814, + "target/error_max": 0.4300176047370351, + "activation_inv/rms": 0.19441055666359328, + "activation_inv/min": -1.1325315758682961, + "activation_inv/max": 1.444658422183233, + "grad/norm": 0.00024950381499397653, + "grad/abs_max": 1.8725130176968493e-05, + "optimizer/steps": 46.0, + "optimizer/lr": 0.03, + "best/step": 45.0, + "best/loss": 0.0017365677937014768, + "best/target_error_max": 0.42930374364851004, + "lowest/loss": 0.0016460693811817064, + "lowest/loss_step": 46.0, + "lowest/target_error_max": 0.42930374364851004, + "lowest/target_error_max_step": 45.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 8.243055888000526, + "time/backward_s": 6.6416254569994635, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1247, + "forward/grad_norm": 0.001548523518768331, + "forward/relative_grad_norm": 0.0004937759137927299, + "forward/grad_norm_first": 3.1360855714366576, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.7871466654983293e-07, + "adjoint/relative_residual": 0.0004949469006430537, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.7871466654983293e-07, + "adjoint/solver_0/relative_residual": 0.0004949469006430537, + "adjoint/residual_converged": true, + "time/series_s": 0.9349577090033563, + "time/step_s": 15.826451348002593 + }, + { + "step": 47.0, + "loss/total": 0.0015837751012966798, + "loss/data": 0.0015518606962194098, + "loss/mse": 0.0015518606962194098, + "loss/smooth": 0.03153537253616212, + "loss/activation_l2": 0.03790325411078019, + "loss/activation_l2_penalty": 3.790325411078019e-07, + "loss/regularization": 3.1914405077269924e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0469372559058195, + "target/error_rms": 0.06823182606861866, + "target/error_max": 0.423920433456668, + "activation_inv/rms": 0.19468758078208326, + "activation_inv/min": -1.1638253404671524, + "activation_inv/max": 1.472930691752769, + "grad/norm": 0.00021634829127767808, + "grad/abs_max": 1.9616561056018606e-05, + "optimizer/steps": 47.0, + "optimizer/lr": 0.03, + "best/step": 47.0, + "best/loss": 0.0015837751012966798, + "best/target_error_max": 0.423920433456668, + "lowest/loss": 0.0015837751012966798, + "lowest/loss_step": 47.0, + "lowest/target_error_max": 0.423920433456668, + "lowest/target_error_max_step": 47.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.599827070000174, + "time/backward_s": 6.646792523002659, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 995, + "forward/grad_norm": 0.001575939742259688, + "forward/relative_grad_norm": 0.0004857358864623976, + "forward/grad_norm_first": 3.2444375352564907, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.712186901506708e-07, + "adjoint/relative_residual": 0.0004912050279034361, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.712186901506708e-07, + "adjoint/solver_0/relative_residual": 0.0004912050279034361, + "adjoint/residual_converged": true, + "time/series_s": 0.982494272000622, + "time/step_s": 14.241055532998871 + }, + { + "step": 48.0, + "loss/total": 0.001515572338546044, + "loss/data": 0.0014834415420358336, + "loss/mse": 0.0014834415420358336, + "loss/smooth": 0.031746227079533305, + "loss/activation_l2": 0.03845694306772059, + "loss/activation_l2_penalty": 3.8456943067720597e-07, + "loss/regularization": 3.2130796510210516e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04539702125595763, + "target/error_rms": 0.06671075345180491, + "target/error_max": 0.42156919723594993, + "activation_inv/rms": 0.1961044187868305, + "activation_inv/min": -1.1789441679549606, + "activation_inv/max": 1.494903300577286, + "grad/norm": 0.000185333035632324, + "grad/abs_max": 1.86065759136759e-05, + "optimizer/steps": 48.0, + "optimizer/lr": 0.03, + "best/step": 48.0, + "best/loss": 0.001515572338546044, + "best/target_error_max": 0.42156919723594993, + "lowest/loss": 0.001515572338546044, + "lowest/loss_step": 48.0, + "lowest/target_error_max": 0.42156919723594993, + "lowest/target_error_max_step": 48.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.127773970998533, + "time/backward_s": 6.556556351999461, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 926, + "forward/grad_norm": 0.0015715517166014952, + "forward/relative_grad_norm": 0.0004933234449910827, + "forward/grad_norm_first": 3.1856416567226042, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.600966234806127e-07, + "adjoint/relative_residual": 0.0004818025034085584, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.600966234806127e-07, + "adjoint/solver_0/relative_residual": 0.0004818025034085584, + "adjoint/residual_converged": true, + "time/series_s": 1.0375757689980674, + "time/step_s": 13.74216802000592 + }, + { + "step": 49.0, + "loss/total": 0.0014511107014778335, + "loss/data": 0.00141893016468721, + "loss/mse": 0.00141893016468721, + "loss/smooth": 0.031793522405415206, + "loss/activation_l2": 0.03870143852082889, + "loss/activation_l2_penalty": 3.8701438520828894e-07, + "loss/regularization": 3.2180536790623494e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.043585400662096124, + "target/error_rms": 0.06524408397748895, + "target/error_max": 0.4180700082999076, + "activation_inv/rms": 0.1967268119012477, + "activation_inv/min": -1.2018239845670236, + "activation_inv/max": 1.5177822628854654, + "grad/norm": 0.0001723576592812163, + "grad/abs_max": 1.5427037317522333e-05, + "optimizer/steps": 49.0, + "optimizer/lr": 0.03, + "best/step": 49.0, + "best/loss": 0.0014511107014778335, + "best/target_error_max": 0.4180700082999076, + "lowest/loss": 0.0014511107014778335, + "lowest/loss_step": 49.0, + "lowest/target_error_max": 0.4180700082999076, + "lowest/target_error_max_step": 49.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.48811617600586, + "time/backward_s": 6.307691401001648, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 980, + "forward/grad_norm": 0.001239774220142385, + "forward/relative_grad_norm": 0.0004898808815159128, + "forward/grad_norm_first": 2.5307666963976287, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.623964655736586e-07, + "adjoint/relative_residual": 0.0004969892861122407, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.623964655736586e-07, + "adjoint/solver_0/relative_residual": 0.0004969892861122407, + "adjoint/residual_converged": true, + "time/series_s": 1.024320706994331, + "time/step_s": 13.83247282299999 + }, + { + "step": 50.0, + "loss/total": 0.001412291120861639, + "loss/data": 0.001379967008024398, + "loss/mse": 0.001379967008024398, + "loss/smooth": 0.03193261326916335, + "loss/activation_l2": 0.039149956807771794, + "loss/activation_l2_penalty": 3.9149956807771797e-07, + "loss/regularization": 3.232411283724107e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.042838568421563854, + "target/error_rms": 0.0643420626345876, + "target/error_max": 0.41447655678755857, + "activation_inv/rms": 0.19786348022758468, + "activation_inv/min": -1.214001064614918, + "activation_inv/max": 1.5420831356504567, + "grad/norm": 0.0001868173239543644, + "grad/abs_max": 1.6955458207661368e-05, + "optimizer/steps": 50.0, + "optimizer/lr": 0.03, + "best/step": 50.0, + "best/loss": 0.001412291120861639, + "best/target_error_max": 0.41447655678755857, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.41447655678755857, + "lowest/target_error_max_step": 50.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.198435988997517, + "time/backward_s": 6.67512008700578, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 940, + "forward/grad_norm": 0.000955917001264885, + "forward/relative_grad_norm": 0.0004818321731361625, + "forward/grad_norm_first": 1.9839210716108602, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.599342586809347e-07, + "adjoint/relative_residual": 0.0004992277600700119, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.599342586809347e-07, + "adjoint/solver_0/relative_residual": 0.0004992277600700119, + "adjoint/residual_converged": true, + "time/series_s": 1.0155192949969205, + "time/step_s": 13.901986966004188 + }, + { + "step": 51.0, + "loss/total": 0.0014457351746295134, + "loss/data": 0.0014133453210936906, + "loss/mse": 0.0014133453210936906, + "loss/smooth": 0.03199565387782133, + "loss/activation_l2": 0.039419965800150725, + "loss/activation_l2_penalty": 3.941996580015073e-07, + "loss/regularization": 3.2389853535822835e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0434908329671536, + "target/error_rms": 0.0651155585346626, + "target/error_max": 0.41118548373044284, + "activation_inv/rms": 0.19854461916695382, + "activation_inv/min": -1.2243063155770666, + "activation_inv/max": 1.5633108547299712, + "grad/norm": 0.00027592586028186126, + "grad/abs_max": 3.158855642208949e-05, + "optimizer/steps": 51.0, + "optimizer/lr": 0.03, + "best/step": 51.0, + "best/loss": 0.0014457351746295134, + "best/target_error_max": 0.41118548373044284, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.41118548373044284, + "lowest/target_error_max_step": 51.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.483527907999814, + "time/backward_s": 6.7161310619994765, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1586, + "forward/grad_norm": 0.000989964951570207, + "forward/relative_grad_norm": 0.0004965302550315039, + "forward/grad_norm_first": 1.99376561959431, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4635731350793123e-07, + "adjoint/relative_residual": 0.00046753149592881535, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4635731350793123e-07, + "adjoint/solver_0/relative_residual": 0.00046753149592881535, + "adjoint/residual_converged": true, + "time/series_s": 1.015867148002144, + "time/step_s": 18.227830356001505 + }, + { + "step": 52.0, + "loss/total": 0.0015350408800159493, + "loss/data": 0.001502464094171949, + "loss/mse": 0.001502464094171949, + "loss/smooth": 0.03217697436052806, + "loss/activation_l2": 0.03998114834723568, + "loss/activation_l2_penalty": 3.9981148347235683e-07, + "loss/regularization": 3.257678584400042e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.045798277970587505, + "target/error_rms": 0.06713711553616111, + "target/error_max": 0.40872911184954747, + "activation_inv/rms": 0.1999528653138926, + "activation_inv/min": -1.2462730928066612, + "activation_inv/max": 1.5853534509487783, + "grad/norm": 0.0004648258443942345, + "grad/abs_max": 4.435563420083342e-05, + "optimizer/steps": 52.0, + "optimizer/lr": 0.03, + "best/step": 52.0, + "best/loss": 0.0015350408800159493, + "best/target_error_max": 0.40872911184954747, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.40872911184954747, + "lowest/target_error_max_step": 52.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.147439080996264, + "time/backward_s": 6.863581140998576, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1548, + "forward/grad_norm": 0.0012012040839630516, + "forward/relative_grad_norm": 0.0004786903302082844, + "forward/grad_norm_first": 2.50935523063604, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.699268528566246e-07, + "adjoint/relative_residual": 0.0004968366175403426, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.699268528566246e-07, + "adjoint/solver_0/relative_residual": 0.0004968366175403426, + "adjoint/residual_converged": true, + "time/series_s": 1.0061708579960396, + "time/step_s": 18.028985775003093 + }, + { + "step": 53.0, + "loss/total": 0.0018382381440647493, + "loss/data": 0.0018055806838256471, + "loss/mse": 0.0018055806838256471, + "loss/smooth": 0.03225623526721765, + "loss/activation_l2": 0.040122497188454474, + "loss/activation_l2_penalty": 4.012249718845448e-07, + "loss/regularization": 3.2657460239102196e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.052129908325821955, + "target/error_rms": 0.07359851935655323, + "target/error_max": 0.4068407860859036, + "activation_inv/rms": 0.2003060088675686, + "activation_inv/min": -1.2721698005592623, + "activation_inv/max": 1.6124403232917768, + "grad/norm": 0.0007675745360038341, + "grad/abs_max": 6.727759465883185e-05, + "optimizer/steps": 53.0, + "optimizer/lr": 0.03, + "best/step": 53.0, + "best/loss": 0.0018382381440647493, + "best/target_error_max": 0.4068407860859036, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.4068407860859036, + "lowest/target_error_max_step": 53.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.674579898994125, + "time/backward_s": 7.089165056000638, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1462, + "forward/grad_norm": 0.0017749863052113261, + "forward/relative_grad_norm": 0.0004583022318518894, + "forward/grad_norm_first": 3.8729602036608726, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.9736220397533166e-07, + "adjoint/relative_residual": 0.0004992831082822086, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.9736220397533166e-07, + "adjoint/solver_0/relative_residual": 0.0004992831082822086, + "adjoint/residual_converged": true, + "time/series_s": 1.0147736549988622, + "time/step_s": 17.79032429899962 + }, + { + "step": 54.0, + "loss/total": 0.0024327139748280087, + "loss/data": 0.002399712876344529, + "loss/mse": 0.002399712876344529, + "loss/smooth": 0.03259217921537473, + "loss/activation_l2": 0.040891926810502126, + "loss/activation_l2_penalty": 4.089192681050213e-07, + "loss/regularization": 3.300109848347976e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.060116003836842624, + "target/error_rms": 0.0848477379134741, + "target/error_max": 0.4110296861706087, + "activation_inv/rms": 0.20221752350007188, + "activation_inv/min": -1.2674405097303099, + "activation_inv/max": 1.6343847887669418, + "grad/norm": 0.0010527008049722112, + "grad/abs_max": 0.00015988676811319607, + "optimizer/steps": 54.0, + "optimizer/lr": 0.03, + "best/step": 53.0, + "best/loss": 0.0018382381440647493, + "best/target_error_max": 0.4068407860859036, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.4068407860859036, + "lowest/target_error_max_step": 53.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.488929762002954, + "time/backward_s": 7.478404086999944, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1424, + "forward/grad_norm": 0.002643668613953193, + "forward/relative_grad_norm": 0.0004959091399666235, + "forward/grad_norm_first": 5.3309535979335285, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.3452256683826684e-07, + "adjoint/relative_residual": 0.0004872090377661217, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.3452256683826684e-07, + "adjoint/solver_0/relative_residual": 0.0004872090377661217, + "adjoint/residual_converged": true, + "time/series_s": 1.0188409800030058, + "time/step_s": 17.993388955001137 + }, + { + "step": 55.0, + "loss/total": 0.002326811475582921, + "loss/data": 0.0022936168736432346, + "loss/mse": 0.0022936168736432346, + "loss/smooth": 0.032785478050507355, + "loss/activation_l2": 0.040912388917893776, + "loss/activation_l2_penalty": 4.091238891789378e-07, + "loss/regularization": 3.3194601939686295e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.06021027720231993, + "target/error_rms": 0.08295089282780327, + "target/error_max": 0.40221631084852016, + "activation_inv/rms": 0.20226811147062648, + "activation_inv/min": -1.3153024582497723, + "activation_inv/max": 1.6264429585746223, + "grad/norm": 0.0009556135363770148, + "grad/abs_max": 9.223227980076217e-05, + "optimizer/steps": 55.0, + "optimizer/lr": 0.03, + "best/step": 55.0, + "best/loss": 0.002326811475582921, + "best/target_error_max": 0.40221631084852016, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.40221631084852016, + "lowest/target_error_max_step": 55.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.857168365000689, + "time/backward_s": 7.376935657004651, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1351, + "forward/grad_norm": 0.0031950474954582316, + "forward/relative_grad_norm": 0.0004795017558293562, + "forward/grad_norm_first": 6.663265476331804, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.328450125498393e-07, + "adjoint/relative_residual": 0.0004958509761614924, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.328450125498393e-07, + "adjoint/solver_0/relative_residual": 0.0004958509761614924, + "adjoint/residual_converged": true, + "time/series_s": 0.9518190660019172, + "time/step_s": 17.198758853999607 + }, + { + "step": 56.0, + "loss/total": 0.0022063239435847087, + "loss/data": 0.002172756453808806, + "loss/mse": 0.002172756453808806, + "loss/smooth": 0.0331522587543934, + "loss/activation_l2": 0.041523102150926895, + "loss/activation_l2_penalty": 4.1523102150926897e-07, + "loss/regularization": 3.356748977590267e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05969315694728941, + "target/error_rms": 0.0807357997509557, + "target/error_max": 0.4017251167688233, + "activation_inv/rms": 0.20377218198499739, + "activation_inv/min": -1.3031786353505057, + "activation_inv/max": 1.6654063843846834, + "grad/norm": 0.0008648610866263128, + "grad/abs_max": 6.17157623182998e-05, + "optimizer/steps": 56.0, + "optimizer/lr": 0.03, + "best/step": 56.0, + "best/loss": 0.0022063239435847087, + "best/target_error_max": 0.4017251167688233, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.4017251167688233, + "lowest/target_error_max_step": 56.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.290091738999763, + "time/backward_s": 7.2986955489977845, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1257, + "forward/grad_norm": 0.002744534063540281, + "forward/relative_grad_norm": 0.0004658920474493854, + "forward/grad_norm_first": 5.8909227546719345, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.141692278797077e-07, + "adjoint/relative_residual": 0.0004808699923137724, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.141692278797077e-07, + "adjoint/solver_0/relative_residual": 0.0004808699923137724, + "adjoint/residual_converged": true, + "time/series_s": 1.010163721999561, + "time/step_s": 16.611139184999047 + }, + { + "step": 57.0, + "loss/total": 0.002525003163165559, + "loss/data": 0.002491114048268917, + "loss/mse": 0.002491114048268917, + "loss/smooth": 0.03346937040773482, + "loss/activation_l2": 0.04197444889068234, + "loss/activation_l2_penalty": 4.197444889068234e-07, + "loss/regularization": 3.388911489664165e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0639895958376334, + "target/error_rms": 0.08644849417315927, + "target/error_max": 0.40267203034894317, + "activation_inv/rms": 0.2048766675116577, + "activation_inv/min": -1.3297534810528595, + "activation_inv/max": 1.653003739615483, + "grad/norm": 0.0010159768758870194, + "grad/abs_max": 7.415465302463832e-05, + "optimizer/steps": 57.0, + "optimizer/lr": 0.03, + "best/step": 56.0, + "best/loss": 0.0022063239435847087, + "best/target_error_max": 0.4017251167688233, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.4017251167688233, + "lowest/target_error_max_step": 56.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.436332165998465, + "time/backward_s": 6.47818142700271, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1442, + "forward/grad_norm": 0.0029346131728253282, + "forward/relative_grad_norm": 0.0004992450233362573, + "forward/grad_norm_first": 5.878102005332907, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.3386041326220674e-07, + "adjoint/relative_residual": 0.00047724092355738083, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.3386041326220674e-07, + "adjoint/solver_0/relative_residual": 0.00047724092355738083, + "adjoint/residual_converged": true, + "time/series_s": 0.9937623440055177, + "time/step_s": 16.91608924799948 + }, + { + "step": 58.0, + "loss/total": 0.0023214737376531453, + "loss/data": 0.002287357392424217, + "loss/mse": 0.002287357392424217, + "loss/smooth": 0.03369406568402178, + "loss/activation_l2": 0.04222795449064747, + "loss/activation_l2_penalty": 4.2227954490647474e-07, + "loss/regularization": 3.411634522892825e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05973883034582297, + "target/error_rms": 0.08283762537200504, + "target/error_max": 0.3930975519181308, + "activation_inv/rms": 0.2054944147431931, + "activation_inv/min": -1.3343125817031292, + "activation_inv/max": 1.6883663124600354, + "grad/norm": 0.0009772447178553081, + "grad/abs_max": 9.133073239273405e-05, + "optimizer/steps": 58.0, + "optimizer/lr": 0.03, + "best/step": 58.0, + "best/loss": 0.0023214737376531453, + "best/target_error_max": 0.3930975519181308, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.3930975519181308, + "lowest/target_error_max_step": 58.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.789415347004251, + "time/backward_s": 7.259083165998163, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1341, + "forward/grad_norm": 0.0030584418351237187, + "forward/relative_grad_norm": 0.0004956615819283263, + "forward/grad_norm_first": 6.170423423225841, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.2217473528657634e-07, + "adjoint/relative_residual": 0.00048061135037030003, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.2217473528657634e-07, + "adjoint/solver_0/relative_residual": 0.00048061135037030003, + "adjoint/residual_converged": true, + "time/series_s": 0.9418081139956485, + "time/step_s": 17.002607399001135 + }, + { + "step": 59.0, + "loss/total": 0.0018573679744909003, + "loss/data": 0.0018229729565873603, + "loss/mse": 0.0018229729565873603, + "loss/smooth": 0.03396826627707744, + "loss/activation_l2": 0.04267516264625801, + "loss/activation_l2_penalty": 4.267516264625801e-07, + "loss/regularization": 3.4395017903540025e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.052295394619793684, + "target/error_rms": 0.07395213904791449, + "target/error_max": 0.39346896194054626, + "activation_inv/rms": 0.20657967626622425, + "activation_inv/min": -1.3433270827830808, + "activation_inv/max": 1.6899240066129728, + "grad/norm": 0.0007168657970765534, + "grad/abs_max": 7.431212800089197e-05, + "optimizer/steps": 59.0, + "optimizer/lr": 0.03, + "best/step": 58.0, + "best/loss": 0.0023214737376531453, + "best/target_error_max": 0.3930975519181308, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.3930975519181308, + "lowest/target_error_max_step": 58.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 8.968572888996277, + "time/backward_s": 7.360393668001052, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1367, + "forward/grad_norm": 0.0026132875164915103, + "forward/relative_grad_norm": 0.0004937798415215908, + "forward/grad_norm_first": 5.292414344900394, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.9223230740987455e-07, + "adjoint/relative_residual": 0.0004883235514457968, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.9223230740987455e-07, + "adjoint/solver_0/relative_residual": 0.0004883235514457968, + "adjoint/residual_converged": true, + "time/series_s": 0.9958537190032075, + "time/step_s": 17.331666889003827 + }, + { + "step": 60.0, + "loss/total": 0.0014521067956813401, + "loss/data": 0.0014176439135481886, + "loss/mse": 0.0014176439135481886, + "loss/smooth": 0.034034479473822654, + "loss/activation_l2": 0.04284026593289973, + "loss/activation_l2_penalty": 4.2840265932899735e-07, + "loss/regularization": 3.446288213315165e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04523358239254131, + "target/error_rms": 0.06521450559993969, + "target/error_max": 0.3915249023781366, + "activation_inv/rms": 0.20697890214439665, + "activation_inv/min": -1.359764933986528, + "activation_inv/max": 1.709325906774998, + "grad/norm": 0.0004351379099222816, + "grad/abs_max": 4.66045839862642e-05, + "optimizer/steps": 60.0, + "optimizer/lr": 0.03, + "best/step": 60.0, + "best/loss": 0.0014521067956813401, + "best/target_error_max": 0.3915249023781366, + "lowest/loss": 0.001412291120861639, + "lowest/loss_step": 50.0, + "lowest/target_error_max": 0.3915249023781366, + "lowest/target_error_max_step": 60.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.260513377994357, + "time/backward_s": 7.064531110001553, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1410, + "forward/grad_norm": 0.0020602002680988347, + "forward/relative_grad_norm": 0.0004998333169155137, + "forward/grad_norm_first": 4.121774596404242, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.585468398153105e-07, + "adjoint/relative_residual": 0.0004899200476799809, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.585468398153105e-07, + "adjoint/solver_0/relative_residual": 0.0004899200476799809, + "adjoint/residual_converged": true, + "time/series_s": 1.0007422199996654, + "time/step_s": 17.33763816300052 + }, + { + "step": 61.0, + "loss/total": 0.0012752041238553095, + "loss/data": 0.001240589395466743, + "loss/mse": 0.001240589395466743, + "loss/smooth": 0.03418264440531209, + "loss/activation_l2": 0.043208398325445395, + "loss/activation_l2_penalty": 4.32083983254454e-07, + "loss/regularization": 3.461472838856654e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04079335688062317, + "target/error_rms": 0.06100629628489365, + "target/error_max": 0.3892653853540994, + "activation_inv/rms": 0.20786629915752433, + "activation_inv/min": -1.3667151884403275, + "activation_inv/max": 1.7248319965179704, + "grad/norm": 0.00022806241347103062, + "grad/abs_max": 1.6372683306089542e-05, + "optimizer/steps": 61.0, + "optimizer/lr": 0.03, + "best/step": 61.0, + "best/loss": 0.0012752041238553095, + "best/target_error_max": 0.3892653853540994, + "lowest/loss": 0.0012752041238553095, + "lowest/loss_step": 61.0, + "lowest/target_error_max": 0.3892653853540994, + "lowest/target_error_max_step": 61.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.013937766001618, + "time/backward_s": 7.03067568300321, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1366, + "forward/grad_norm": 0.0013189755688444332, + "forward/relative_grad_norm": 0.0004802583536456288, + "forward/grad_norm_first": 2.7463875616782585, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.460868574985437e-07, + "adjoint/relative_residual": 0.0004984756455315933, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.460868574985437e-07, + "adjoint/solver_0/relative_residual": 0.0004984756455315933, + "adjoint/residual_converged": true, + "time/series_s": 1.0026622850054991, + "time/step_s": 17.059687889995985 + }, + { + "step": 62.0, + "loss/total": 0.001193293117211403, + "loss/data": 0.001158645294977811, + "loss/mse": 0.001158645294977811, + "loss/smooth": 0.03421311206046837, + "loss/activation_l2": 0.0434710173123549, + "loss/activation_l2_penalty": 4.34710173123549e-07, + "loss/regularization": 3.4647822233591925e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03920476715062222, + "target/error_rms": 0.05895706815076062, + "target/error_max": 0.3887697350874234, + "activation_inv/rms": 0.20849704389356435, + "activation_inv/min": -1.3784179687151257, + "activation_inv/max": 1.742912633793811, + "grad/norm": 0.0001158010768596011, + "grad/abs_max": 9.936857693278978e-06, + "optimizer/steps": 62.0, + "optimizer/lr": 0.03, + "best/step": 62.0, + "best/loss": 0.001193293117211403, + "best/target_error_max": 0.3887697350874234, + "lowest/loss": 0.001193293117211403, + "lowest/loss_step": 62.0, + "lowest/target_error_max": 0.3887697350874234, + "lowest/target_error_max_step": 62.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.493499274998612, + "time/backward_s": 6.797545770001307, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 981, + "forward/grad_norm": 0.0009190293908485883, + "forward/relative_grad_norm": 0.0004658159976693862, + "forward/grad_norm_first": 1.9729451015996904, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.155621072749431e-07, + "adjoint/relative_residual": 0.0004518213257740169, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.155621072749431e-07, + "adjoint/solver_0/relative_residual": 0.0004518213257740169, + "adjoint/residual_converged": true, + "time/series_s": 0.9575143689944525, + "time/step_s": 14.260578310997516 + }, + { + "step": 63.0, + "loss/total": 0.0011572306754737884, + "loss/data": 0.0011225681291554704, + "loss/mse": 0.0011225681291554704, + "loss/smooth": 0.03422556291893081, + "loss/activation_l2": 0.04369833993871169, + "loss/activation_l2_penalty": 4.369833993871169e-07, + "loss/regularization": 3.4662546318317924e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03821405366675927, + "target/error_rms": 0.05803192558813133, + "target/error_max": 0.38610271347492486, + "activation_inv/rms": 0.20904147899092104, + "activation_inv/min": -1.3894234738102529, + "activation_inv/max": 1.7619080033511099, + "grad/norm": 8.43501140158663e-05, + "grad/abs_max": 6.90582032190431e-06, + "optimizer/steps": 63.0, + "optimizer/lr": 0.03, + "best/step": 63.0, + "best/loss": 0.0011572306754737884, + "best/target_error_max": 0.38610271347492486, + "lowest/loss": 0.0011572306754737884, + "lowest/loss_step": 63.0, + "lowest/target_error_max": 0.38610271347492486, + "lowest/target_error_max_step": 63.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.130842846992891, + "time/backward_s": 6.338749034002831, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1237, + "forward/grad_norm": 0.0007488654467806187, + "forward/relative_grad_norm": 0.00048066118289303856, + "forward/grad_norm_first": 1.557990271386786, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2856472746175834e-07, + "adjoint/relative_residual": 0.00048671240162671294, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2856472746175834e-07, + "adjoint/solver_0/relative_residual": 0.00048671240162671294, + "adjoint/residual_converged": true, + "time/series_s": 0.9525614969970775, + "time/step_s": 15.434979697995004 + }, + { + "step": 64.0, + "loss/total": 0.0011367844513262156, + "loss/data": 0.00110206125942785, + "loss/mse": 0.00110206125942785, + "loss/smooth": 0.03428274155514712, + "loss/activation_l2": 0.0440450343218625, + "loss/activation_l2_penalty": 4.40450343218625e-07, + "loss/regularization": 3.472319189836575e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.038194090447213114, + "target/error_rms": 0.05749942415610395, + "target/error_max": 0.38441763252742417, + "activation_inv/rms": 0.2098690885334534, + "activation_inv/min": -1.4011696596309215, + "activation_inv/max": 1.7765936524842627, + "grad/norm": 9.472873999082093e-05, + "grad/abs_max": 5.951926780265903e-06, + "optimizer/steps": 64.0, + "optimizer/lr": 0.03, + "best/step": 64.0, + "best/loss": 0.0011367844513262156, + "best/target_error_max": 0.38441763252742417, + "lowest/loss": 0.0011367844513262156, + "lowest/loss_step": 64.0, + "lowest/target_error_max": 0.38441763252742417, + "lowest/target_error_max_step": 64.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.626216431002831, + "time/backward_s": 5.202700552996248, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1163, + "forward/grad_norm": 0.0007598754185031466, + "forward/relative_grad_norm": 0.00048375736532984686, + "forward/grad_norm_first": 1.570777982853099, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.1618404292484864e-07, + "adjoint/relative_residual": 0.0004646118932246931, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.1618404292484864e-07, + "adjoint/solver_0/relative_residual": 0.0004646118932246931, + "adjoint/residual_converged": true, + "time/series_s": 1.011204856004042, + "time/step_s": 13.852416432993778 + }, + { + "step": 65.0, + "loss/total": 0.0011302156989515398, + "loss/data": 0.0010955230103197758, + "loss/mse": 0.0010955230103197758, + "loss/smooth": 0.03425065845626843, + "loss/activation_l2": 0.04420301754955267, + "loss/activation_l2_penalty": 4.4203017549552676e-07, + "loss/regularization": 3.469268863176396e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03814519213631909, + "target/error_rms": 0.05732860569523148, + "target/error_max": 0.3815870705926757, + "activation_inv/rms": 0.21024513680357193, + "activation_inv/min": -1.4248881372679043, + "activation_inv/max": 1.8030026421171412, + "grad/norm": 0.00013412527786625173, + "grad/abs_max": 1.3227028860683248e-05, + "optimizer/steps": 65.0, + "optimizer/lr": 0.03, + "best/step": 65.0, + "best/loss": 0.0011302156989515398, + "best/target_error_max": 0.3815870705926757, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3815870705926757, + "lowest/target_error_max_step": 65.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.060236245000851, + "time/backward_s": 6.481325879001815, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1370, + "forward/grad_norm": 0.0009100801950035414, + "forward/relative_grad_norm": 0.00048032626526584694, + "forward/grad_norm_first": 1.894712533573066, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3088869934328857e-07, + "adjoint/relative_residual": 0.0004976929416876766, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3088869934328857e-07, + "adjoint/solver_0/relative_residual": 0.0004976929416876766, + "adjoint/residual_converged": true, + "time/series_s": 1.0101233390014386, + "time/step_s": 16.564143603005505 + }, + { + "step": 66.0, + "loss/total": 0.0011535172990931406, + "loss/data": 0.0011186993366958196, + "loss/mse": 0.0011186993366958196, + "loss/smooth": 0.03437125025022515, + "loss/activation_l2": 0.044671214709585697, + "loss/activation_l2_penalty": 4.46712147095857e-07, + "loss/regularization": 3.481796239732101e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03963704010589987, + "target/error_rms": 0.05793183934666203, + "target/error_max": 0.3799692981870694, + "activation_inv/rms": 0.21135565927976874, + "activation_inv/min": -1.4507365925298734, + "activation_inv/max": 1.809771148894545, + "grad/norm": 0.00023627461508584223, + "grad/abs_max": 2.1143981315716245e-05, + "optimizer/steps": 66.0, + "optimizer/lr": 0.03, + "best/step": 66.0, + "best/loss": 0.0011535172990931406, + "best/target_error_max": 0.3799692981870694, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3799692981870694, + "lowest/target_error_max_step": 66.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.85233818800043, + "time/backward_s": 6.84716258199478, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1340, + "forward/grad_norm": 0.0011751417236666717, + "forward/relative_grad_norm": 0.0004991825214219925, + "forward/grad_norm_first": 2.3541323528698745, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2341207301318e-07, + "adjoint/relative_residual": 0.0004765621038512551, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2341207301318e-07, + "adjoint/solver_0/relative_residual": 0.0004765621038512551, + "adjoint/residual_converged": true, + "time/series_s": 0.9545806940004695, + "time/step_s": 16.665973966999445 + }, + { + "step": 67.0, + "loss/total": 0.0012609781339396483, + "loss/data": 0.001226230154350744, + "loss/mse": 0.001226230154350744, + "loss/smooth": 0.03430088118477192, + "loss/activation_l2": 0.04470984041323145, + "loss/activation_l2_penalty": 4.4709840413231455e-07, + "loss/regularization": 3.474797958890423e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04153495076848314, + "target/error_rms": 0.06065220905335792, + "target/error_max": 0.37568270739899207, + "activation_inv/rms": 0.21144701561675316, + "activation_inv/min": -1.504195995307029, + "activation_inv/max": 1.8470562099241083, + "grad/norm": 0.0003849708728528065, + "grad/abs_max": 3.820795097930855e-05, + "optimizer/steps": 67.0, + "optimizer/lr": 0.03, + "best/step": 67.0, + "best/loss": 0.0012609781339396483, + "best/target_error_max": 0.37568270739899207, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.37568270739899207, + "lowest/target_error_max_step": 67.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.179789582995, + "time/backward_s": 6.939686660000007, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1401, + "forward/grad_norm": 0.0014847710517415348, + "forward/relative_grad_norm": 0.0004978489896960873, + "forward/grad_norm_first": 2.982372330709992, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4286759020786797e-07, + "adjoint/relative_residual": 0.0004948266985488331, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4286759020786797e-07, + "adjoint/solver_0/relative_residual": 0.0004948266985488331, + "adjoint/residual_converged": true, + "time/series_s": 0.9584482040008879, + "time/step_s": 17.089649786998052 + }, + { + "step": 68.0, + "loss/total": 0.001445940260479803, + "loss/data": 0.0014109881018503374, + "loss/mse": 0.0014109881018503374, + "loss/smooth": 0.034498775692001764, + "loss/activation_l2": 0.0453382937463809, + "loss/activation_l2_penalty": 4.5338293746380905e-07, + "loss/regularization": 3.495215862946557e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.046179950686604555, + "target/error_rms": 0.06506123504477157, + "target/error_max": 0.37516675916572334, + "activation_inv/rms": 0.21292790739210515, + "activation_inv/min": -1.4755640045120315, + "activation_inv/max": 1.8460156692175391, + "grad/norm": 0.0005381262316206199, + "grad/abs_max": 5.1878955916386114e-05, + "optimizer/steps": 68.0, + "optimizer/lr": 0.03, + "best/step": 68.0, + "best/loss": 0.001445940260479803, + "best/target_error_max": 0.37516675916572334, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.37516675916572334, + "lowest/target_error_max_step": 68.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.382764880996547, + "time/backward_s": 7.166234452997742, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1433, + "forward/grad_norm": 0.001852037168381232, + "forward/relative_grad_norm": 0.0004953201009439472, + "forward/grad_norm_first": 3.7390712891557327, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3119243283013832e-07, + "adjoint/relative_residual": 0.0004391182586628376, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3119243283013832e-07, + "adjoint/solver_0/relative_residual": 0.0004391182586628376, + "adjoint/residual_converged": true, + "time/series_s": 0.9942837619964848, + "time/step_s": 17.554974063001282 + }, + { + "step": 69.0, + "loss/total": 0.0014913972571532481, + "loss/data": 0.0014565309445202562, + "loss/mse": 0.0014565309445202562, + "loss/smooth": 0.0344142738669102, + "loss/activation_l2": 0.045203876608167846, + "loss/activation_l2_penalty": 4.5203876608167853e-07, + "loss/regularization": 3.486631263299188e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04638999523684835, + "target/error_rms": 0.06610289580313988, + "target/error_max": 0.3697207283541229, + "activation_inv/rms": 0.21261203307472476, + "activation_inv/min": -1.5213111692647485, + "activation_inv/max": 1.876251795726302, + "grad/norm": 0.0005448128454100233, + "grad/abs_max": 4.802235037877298e-05, + "optimizer/steps": 69.0, + "optimizer/lr": 0.03, + "best/step": 69.0, + "best/loss": 0.0014913972571532481, + "best/target_error_max": 0.3697207283541229, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3697207283541229, + "lowest/target_error_max_step": 69.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.264375177001057, + "time/backward_s": 7.220626802998595, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1411, + "forward/grad_norm": 0.0021197635962429888, + "forward/relative_grad_norm": 0.0004782345572742361, + "forward/grad_norm_first": 4.4324768338048885, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.552588181203075e-07, + "adjoint/relative_residual": 0.0004771890313755068, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.552588181203075e-07, + "adjoint/solver_0/relative_residual": 0.0004771890313755068, + "adjoint/residual_converged": true, + "time/series_s": 0.9503498109988868, + "time/step_s": 17.447286128997803 + }, + { + "step": 70.0, + "loss/total": 0.001306729529660725, + "loss/data": 0.0012715457501300408, + "loss/mse": 0.0012715457501300408, + "loss/smooth": 0.03472467046079663, + "loss/activation_l2": 0.04591090698876458, + "loss/activation_l2_penalty": 4.5910906988764585e-07, + "loss/regularization": 3.518377953068428e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0438491514813156, + "target/error_rms": 0.06176274969907122, + "target/error_max": 0.37104650964994024, + "activation_inv/rms": 0.21426830607620106, + "activation_inv/min": -1.4942338557371104, + "activation_inv/max": 1.86776355865151, + "grad/norm": 0.0004356933390800029, + "grad/abs_max": 3.4146195248299104e-05, + "optimizer/steps": 70.0, + "optimizer/lr": 0.03, + "best/step": 69.0, + "best/loss": 0.0014913972571532481, + "best/target_error_max": 0.3697207283541229, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3697207283541229, + "lowest/target_error_max_step": 69.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.483914465999987, + "time/backward_s": 7.167279631001293, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1120, + "forward/grad_norm": 0.002031214694269239, + "forward/relative_grad_norm": 0.0004751712476963523, + "forward/grad_norm_first": 4.274700340386003, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4884389407038737e-07, + "adjoint/relative_residual": 0.0004978867282409912, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4884389407038737e-07, + "adjoint/solver_0/relative_residual": 0.0004978867282409912, + "adjoint/residual_converged": true, + "time/series_s": 0.9462654640010442, + "time/step_s": 15.605883084994275 + }, + { + "step": 71.0, + "loss/total": 0.0011867462619295386, + "loss/data": 0.0011516168846790308, + "loss/mse": 0.0011516168846790308, + "loss/smooth": 0.03467044680657538, + "loss/activation_l2": 0.04589304439323909, + "loss/activation_l2_penalty": 4.589304439323909e-07, + "loss/regularization": 3.512937725050778e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04062170329849539, + "target/error_rms": 0.0587779776279951, + "target/error_max": 0.3658225235420585, + "activation_inv/rms": 0.21422661924522612, + "activation_inv/min": -1.5160506735475676, + "activation_inv/max": 1.895532992192778, + "grad/norm": 0.00032453555653795736, + "grad/abs_max": 3.15975743735706e-05, + "optimizer/steps": 71.0, + "optimizer/lr": 0.03, + "best/step": 71.0, + "best/loss": 0.0011867462619295386, + "best/target_error_max": 0.3658225235420585, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3658225235420585, + "lowest/target_error_max_step": 71.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.590324281998619, + "time/backward_s": 7.076715873001376, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1161, + "forward/grad_norm": 0.0017257475762807214, + "forward/relative_grad_norm": 0.00048345353553808806, + "forward/grad_norm_first": 3.5696244818231584, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0616381315462314e-07, + "adjoint/relative_residual": 0.0004334389969235808, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0616381315462314e-07, + "adjoint/solver_0/relative_residual": 0.0004334389969235808, + "adjoint/residual_converged": true, + "time/series_s": 1.0236615130052087, + "time/step_s": 15.702811167000618 + }, + { + "step": 72.0, + "loss/total": 0.0011474135146954383, + "loss/data": 0.001112129581484389, + "loss/mse": 0.001112129581484389, + "loss/smooth": 0.03482072853471334, + "loss/activation_l2": 0.0463204676335926, + "loss/activation_l2_penalty": 4.6320467633592605e-07, + "loss/regularization": 3.528393321104926e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04036611984668387, + "target/error_rms": 0.0577614814946186, + "target/error_max": 0.36521871236611286, + "activation_inv/rms": 0.21522190323847756, + "activation_inv/min": -1.5314262426906997, + "activation_inv/max": 1.9017482552274207, + "grad/norm": 0.00032399363409823764, + "grad/abs_max": 5.360573713389767e-05, + "optimizer/steps": 72.0, + "optimizer/lr": 0.03, + "best/step": 72.0, + "best/loss": 0.0011474135146954383, + "best/target_error_max": 0.36521871236611286, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.36521871236611286, + "lowest/target_error_max_step": 72.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.381352616001095, + "time/backward_s": 7.105765549000353, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1416, + "forward/grad_norm": 0.0016435674592418404, + "forward/relative_grad_norm": 0.0004918548196133336, + "forward/grad_norm_first": 3.3415703042900207, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3135017018377052e-07, + "adjoint/relative_residual": 0.0004949504042050349, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3135017018377052e-07, + "adjoint/solver_0/relative_residual": 0.0004949504042050349, + "adjoint/residual_converged": true, + "time/series_s": 0.9918501220017788, + "time/step_s": 17.49077287399996 + }, + { + "step": 73.0, + "loss/total": 0.0011848327858343254, + "loss/data": 0.00114952442388478, + "loss/mse": 0.00114952442388478, + "loss/smooth": 0.03484291733475301, + "loss/activation_l2": 0.046544461479236514, + "loss/activation_l2_penalty": 4.654446147923652e-07, + "loss/regularization": 3.5308361949545376e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0411408481348218, + "target/error_rms": 0.05872455424823879, + "target/error_max": 0.36103082903803196, + "activation_inv/rms": 0.2157416544834041, + "activation_inv/min": -1.5426356287088174, + "activation_inv/max": 1.9254143723752808, + "grad/norm": 0.0003782072541994347, + "grad/abs_max": 4.4347991602579115e-05, + "optimizer/steps": 73.0, + "optimizer/lr": 0.03, + "best/step": 73.0, + "best/loss": 0.0011848327858343254, + "best/target_error_max": 0.36103082903803196, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.36103082903803196, + "lowest/target_error_max_step": 73.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.541918064001948, + "time/backward_s": 7.0639133820004645, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1433, + "forward/grad_norm": 0.001711472417628539, + "forward/relative_grad_norm": 0.0004939373870098458, + "forward/grad_norm_first": 3.464958236891721, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3470790930966103e-07, + "adjoint/relative_residual": 0.0004938990373099084, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3470790930966103e-07, + "adjoint/solver_0/relative_residual": 0.0004938990373099084, + "adjoint/residual_converged": true, + "time/series_s": 0.9596319319971371, + "time/step_s": 17.57758070300042 + }, + { + "step": 74.0, + "loss/total": 0.0012907754965368703, + "loss/data": 0.0012554030776958521, + "loss/mse": 0.0012554030776958521, + "loss/smooth": 0.03490493082581861, + "loss/activation_l2": 0.046748801519965716, + "loss/activation_l2_penalty": 4.674880151996572e-07, + "loss/regularization": 3.5372418841018264e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04387127803524091, + "target/error_rms": 0.06136944869466856, + "target/error_max": 0.3605931460996281, + "activation_inv/rms": 0.21621471161779376, + "activation_inv/min": -1.5725742027942307, + "activation_inv/max": 1.9404689554630996, + "grad/norm": 0.00047947415064472583, + "grad/abs_max": 4.8721492561568826e-05, + "optimizer/steps": 74.0, + "optimizer/lr": 0.03, + "best/step": 74.0, + "best/loss": 0.0012907754965368703, + "best/target_error_max": 0.3605931460996281, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3605931460996281, + "lowest/target_error_max_step": 74.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.514704035005707, + "time/backward_s": 6.912026051999419, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1443, + "forward/grad_norm": 0.00197622396518613, + "forward/relative_grad_norm": 0.00048322935802698724, + "forward/grad_norm_first": 4.089619002568471, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4790321771667634e-07, + "adjoint/relative_residual": 0.0004991833894973717, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4790321771667634e-07, + "adjoint/solver_0/relative_residual": 0.0004991833894973717, + "adjoint/residual_converged": true, + "time/series_s": 0.9616482639976311, + "time/step_s": 17.400793519998842 + }, + { + "step": 75.0, + "loss/total": 0.0014457800437699551, + "loss/data": 0.0014102281383263741, + "loss/mse": 0.0014102281383263741, + "loss/smooth": 0.035078905018223784, + "loss/activation_l2": 0.047300042535722814, + "loss/activation_l2_penalty": 4.7300042535722817e-07, + "loss/regularization": 3.555190544358101e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.046385024413215306, + "target/error_rms": 0.06504371157136654, + "target/error_max": 0.3570695376242319, + "activation_inv/rms": 0.2174857294990244, + "activation_inv/min": -1.5739483932886233, + "activation_inv/max": 1.9467099739799807, + "grad/norm": 0.0005813276259699782, + "grad/abs_max": 5.355431861109774e-05, + "optimizer/steps": 75.0, + "optimizer/lr": 0.03, + "best/step": 75.0, + "best/loss": 0.0014457800437699551, + "best/target_error_max": 0.3570695376242319, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3570695376242319, + "lowest/target_error_max_step": 75.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.265292996999051, + "time/backward_s": 7.26985756099748, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1412, + "forward/grad_norm": 0.0022011263293584583, + "forward/relative_grad_norm": 0.00047899491067318996, + "forward/grad_norm_first": 4.595302121822019, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.558204660004601e-07, + "adjoint/relative_residual": 0.0004860267291469814, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.558204660004601e-07, + "adjoint/solver_0/relative_residual": 0.0004860267291469814, + "adjoint/residual_converged": true, + "time/series_s": 1.0066875760021503, + "time/step_s": 17.554005739002605 + }, + { + "step": 76.0, + "loss/total": 0.0015014219697173953, + "loss/data": 0.001465815164086842, + "loss/mse": 0.001465815164086842, + "loss/smooth": 0.03513474255798687, + "loss/activation_l2": 0.047206307256634446, + "loss/activation_l2_penalty": 4.7206307256634447e-07, + "loss/regularization": 3.560680563055321e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04802998224194519, + "target/error_rms": 0.06631323768494889, + "target/error_max": 0.3568993608672319, + "activation_inv/rms": 0.21727012509002344, + "activation_inv/min": -1.5935484789262673, + "activation_inv/max": 1.9905629106095053, + "grad/norm": 0.0005997607737735741, + "grad/abs_max": 6.0543341860057176e-05, + "optimizer/steps": 76.0, + "optimizer/lr": 0.03, + "best/step": 76.0, + "best/loss": 0.0015014219697173953, + "best/target_error_max": 0.3568993608672319, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3568993608672319, + "lowest/target_error_max_step": 76.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.482669181001256, + "time/backward_s": 7.224073092998879, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1438, + "forward/grad_norm": 0.0026593916586560174, + "forward/relative_grad_norm": 0.0004960391515687924, + "forward/grad_norm_first": 5.361253542679692, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4181839275927686e-07, + "adjoint/relative_residual": 0.00045062914983637445, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4181839275927686e-07, + "adjoint/solver_0/relative_residual": 0.00045062914983637445, + "adjoint/residual_converged": true, + "time/series_s": 1.0197892779979156, + "time/step_s": 17.73978865599929 + }, + { + "step": 77.0, + "loss/total": 0.001405469123473966, + "loss/data": 0.0013696088780037706, + "loss/mse": 0.0013696088780037706, + "loss/smooth": 0.03538109626203769, + "loss/activation_l2": 0.04791492081577631, + "loss/activation_l2_penalty": 4.791492081577632e-07, + "loss/regularization": 3.586024547019546e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04672841672625605, + "target/error_rms": 0.06410012975034693, + "target/error_max": 0.3549058041925909, + "activation_inv/rms": 0.2188947711019528, + "activation_inv/min": -1.5880349810108279, + "activation_inv/max": 1.9567678294465427, + "grad/norm": 0.0005437170395739999, + "grad/abs_max": 4.712605684649661e-05, + "optimizer/steps": 77.0, + "optimizer/lr": 0.03, + "best/step": 77.0, + "best/loss": 0.001405469123473966, + "best/target_error_max": 0.3549058041925909, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3549058041925909, + "lowest/target_error_max_step": 77.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.243027641998196, + "time/backward_s": 7.301199361005274, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1247, + "forward/grad_norm": 0.00239219023008213, + "forward/relative_grad_norm": 0.000477773518478599, + "forward/grad_norm_first": 5.006954419951352, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.528996211398041e-07, + "adjoint/relative_residual": 0.00048755032894010503, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.528996211398041e-07, + "adjoint/solver_0/relative_residual": 0.00048755032894010503, + "adjoint/residual_converged": true, + "time/series_s": 0.9989860559944646, + "time/step_s": 16.555722221994074 + }, + { + "step": 78.0, + "loss/total": 0.0014870351737489667, + "loss/data": 0.0014511042984633024, + "loss/mse": 0.0014511042984633024, + "loss/smooth": 0.035451985858684, + "loss/activation_l2": 0.047888942698032906, + "loss/activation_l2_penalty": 4.788894269803291e-07, + "loss/regularization": 3.5930875285664325e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04877260944078159, + "target/error_rms": 0.06597964000651949, + "target/error_max": 0.35201521702038063, + "activation_inv/rms": 0.21883542377328427, + "activation_inv/min": -1.6233807157712823, + "activation_inv/max": 1.9852607868665026, + "grad/norm": 0.0006199714878434012, + "grad/abs_max": 5.092785241281444e-05, + "optimizer/steps": 78.0, + "optimizer/lr": 0.03, + "best/step": 78.0, + "best/loss": 0.0014870351737489667, + "best/target_error_max": 0.35201521702038063, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.35201521702038063, + "lowest/target_error_max_step": 78.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.222599922999507, + "time/backward_s": 7.280905943000107, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1394, + "forward/grad_norm": 0.0022900713316986302, + "forward/relative_grad_norm": 0.00048429644585053493, + "forward/grad_norm_first": 4.7286560769132695, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.53973679274133e-07, + "adjoint/relative_residual": 0.00047567349477269343, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.53973679274133e-07, + "adjoint/solver_0/relative_residual": 0.00047567349477269343, + "adjoint/residual_converged": true, + "time/series_s": 0.960997957001382, + "time/step_s": 17.476334785998915 + }, + { + "step": 79.0, + "loss/total": 0.0019834604365635503, + "loss/data": 0.0019473234270526573, + "loss/mse": 0.0019473234270526573, + "loss/smooth": 0.03565403252165613, + "loss/activation_l2": 0.04829769892368556, + "loss/activation_l2_penalty": 4.829769892368556e-07, + "loss/regularization": 3.6137009510892985e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05551890710761671, + "target/error_rms": 0.07643278276471406, + "target/error_max": 0.3566344054809459, + "activation_inv/rms": 0.2197673745661206, + "activation_inv/min": -1.6346525050358935, + "activation_inv/max": 1.9739369206817794, + "grad/norm": 0.0008976913764648726, + "grad/abs_max": 6.517883368509948e-05, + "optimizer/steps": 79.0, + "optimizer/lr": 0.03, + "best/step": 78.0, + "best/loss": 0.0014870351737489667, + "best/target_error_max": 0.35201521702038063, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.35201521702038063, + "lowest/target_error_max_step": 78.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.17894370900467, + "time/backward_s": 6.492035107999982, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1403, + "forward/grad_norm": 0.0025930919839093096, + "forward/relative_grad_norm": 0.0004988004951381479, + "forward/grad_norm_first": 5.198655593136744, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.0775947481206647e-07, + "adjoint/relative_residual": 0.0004975788868197756, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.0775947481206647e-07, + "adjoint/solver_0/relative_residual": 0.0004975788868197756, + "adjoint/residual_converged": true, + "time/series_s": 0.9457082110020565, + "time/step_s": 16.623640727004386 + }, + { + "step": 80.0, + "loss/total": 0.002090129169436186, + "loss/data": 0.0020536940386590733, + "loss/mse": 0.0020536940386590733, + "loss/smooth": 0.035947688067471006, + "loss/activation_l2": 0.04874427096416797, + "loss/activation_l2_penalty": 4.874427096416797e-07, + "loss/regularization": 3.643513077711269e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05622789526499037, + "target/error_rms": 0.07849256089577673, + "target/error_max": 0.3469335619001287, + "activation_inv/rms": 0.22078104756560962, + "activation_inv/min": -1.6802793062188963, + "activation_inv/max": 1.987181545238623, + "grad/norm": 0.0009662582020357832, + "grad/abs_max": 7.424311293973607e-05, + "optimizer/steps": 80.0, + "optimizer/lr": 0.03, + "best/step": 80.0, + "best/loss": 0.002090129169436186, + "best/target_error_max": 0.3469335619001287, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3469335619001287, + "lowest/target_error_max_step": 80.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.044764774000214, + "time/backward_s": 7.4696219940015, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1373, + "forward/grad_norm": 0.003001077266394785, + "forward/relative_grad_norm": 0.00048574155009932046, + "forward/grad_norm_first": 6.178341683516984, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 3.1414207439656895e-07, + "adjoint/relative_residual": 0.0004945700264375349, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 3.1414207439656895e-07, + "adjoint/solver_0/relative_residual": 0.0004945700264375349, + "adjoint/residual_converged": true, + "time/series_s": 1.0172648330044467, + "time/step_s": 17.54344573999697 + }, + { + "step": 81.0, + "loss/total": 0.0015676856833357921, + "loss/data": 0.0015310086429401962, + "loss/mse": 0.0015310086429401962, + "loss/smooth": 0.036188807938050724, + "loss/activation_l2": 0.04882324575452044, + "loss/activation_l2_penalty": 4.882324575452044e-07, + "loss/regularization": 3.667704039559593e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0484099912539109, + "target/error_rms": 0.0677718667945674, + "target/error_max": 0.3504926796278789, + "activation_inv/rms": 0.22095982837276204, + "activation_inv/min": -1.6516018641639085, + "activation_inv/max": 2.0058864772172007, + "grad/norm": 0.0007486654299182619, + "grad/abs_max": 5.276051181724266e-05, + "optimizer/steps": 81.0, + "optimizer/lr": 0.03, + "best/step": 80.0, + "best/loss": 0.002090129169436186, + "best/target_error_max": 0.3469335619001287, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3469335619001287, + "lowest/target_error_max_step": 80.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.50923845199577, + "time/backward_s": 7.883601723995525, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1383, + "forward/grad_norm": 0.002700399675064343, + "forward/relative_grad_norm": 0.0004749879511191712, + "forward/grad_norm_first": 5.685196158558623, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.721353400689192e-07, + "adjoint/relative_residual": 0.0004962101904310676, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.721353400689192e-07, + "adjoint/solver_0/relative_residual": 0.0004962101904310676, + "adjoint/residual_converged": true, + "time/series_s": 0.9633399989979807, + "time/step_s": 18.36297324399493 + }, + { + "step": 82.0, + "loss/total": 0.0012752076967474555, + "loss/data": 0.0012382838258810775, + "loss/mse": 0.0012382838258810775, + "loss/smooth": 0.036430866050548356, + "loss/activation_l2": 0.04930048158296514, + "loss/activation_l2_penalty": 4.930048158296515e-07, + "loss/regularization": 3.6923870866378006e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04216388944350663, + "target/error_rms": 0.06094958143944248, + "target/error_max": 0.3475137482786009, + "activation_inv/rms": 0.22203711757939287, + "activation_inv/min": -1.688297646240015, + "activation_inv/max": 2.0073415274358846, + "grad/norm": 0.0005748328994498469, + "grad/abs_max": 4.559471254949948e-05, + "optimizer/steps": 82.0, + "optimizer/lr": 0.03, + "best/step": 80.0, + "best/loss": 0.002090129169436186, + "best/target_error_max": 0.3469335619001287, + "lowest/loss": 0.0011302156989515398, + "lowest/loss_step": 65.0, + "lowest/target_error_max": 0.3469335619001287, + "lowest/target_error_max_step": 80.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 9.302962648995162, + "time/backward_s": 7.548800174998178, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1419, + "forward/grad_norm": 0.0019329776236798341, + "forward/relative_grad_norm": 0.0004838483721271146, + "forward/grad_norm_first": 3.9950069795254173, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.454345365953274e-07, + "adjoint/relative_residual": 0.0004976169110768106, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.454345365953274e-07, + "adjoint/solver_0/relative_residual": 0.0004976169110768106, + "adjoint/residual_converged": true, + "time/series_s": 0.9380499050021172, + "time/step_s": 17.79668467600277 + }, + { + "step": 83.0, + "loss/total": 0.0010997654023247626, + "loss/data": 0.0010628070883385596, + "loss/mse": 0.0010628070883385596, + "loss/smooth": 0.036463667815726235, + "loss/activation_l2": 0.04946461704769114, + "loss/activation_l2_penalty": 4.946461704769114e-07, + "loss/regularization": 3.695831398620315e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.039351976336242205, + "target/error_rms": 0.056466107223853125, + "target/error_max": 0.3458252968843026, + "activation_inv/rms": 0.22240642312597705, + "activation_inv/min": -1.6774221215391552, + "activation_inv/max": 2.0261120730763755, + "grad/norm": 0.00040431302793910606, + "grad/abs_max": 5.139771673770614e-05, + "optimizer/steps": 83.0, + "optimizer/lr": 0.03, + "best/step": 83.0, + "best/loss": 0.0010997654023247626, + "best/target_error_max": 0.3458252968843026, + "lowest/loss": 0.0010997654023247626, + "lowest/loss_step": 83.0, + "lowest/target_error_max": 0.3458252968843026, + "lowest/target_error_max_step": 83.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.436691881004663, + "time/backward_s": 7.381188766994455, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1443, + "forward/grad_norm": 0.0016160544343105678, + "forward/relative_grad_norm": 0.00048368325648011704, + "forward/grad_norm_first": 3.3411419821951176, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2474410739642517e-07, + "adjoint/relative_residual": 0.0004918477045490336, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2474410739642517e-07, + "adjoint/solver_0/relative_residual": 0.0004918477045490336, + "adjoint/residual_converged": true, + "time/series_s": 0.9796265890036011, + "time/step_s": 17.80970549400081 + }, + { + "step": 84.0, + "loss/total": 0.0009837961442172901, + "loss/data": 0.0009468088290216519, + "loss/mse": 0.0009468088290216519, + "loss/smooth": 0.036490640584418865, + "loss/activation_l2": 0.04966746112192463, + "loss/activation_l2_penalty": 4.966746112192464e-07, + "loss/regularization": 3.6987315195638114e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.036525810185921846, + "target/error_rms": 0.053295651671266354, + "target/error_max": 0.34265254809499596, + "activation_inv/rms": 0.22286197773941754, + "activation_inv/min": -1.706136517519322, + "activation_inv/max": 2.0341405328609827, + "grad/norm": 0.0002312477983044274, + "grad/abs_max": 2.96763064774621e-05, + "optimizer/steps": 84.0, + "optimizer/lr": 0.03, + "best/step": 84.0, + "best/loss": 0.0009837961442172901, + "best/target_error_max": 0.34265254809499596, + "lowest/loss": 0.0009837961442172901, + "lowest/loss_step": 84.0, + "lowest/target_error_max": 0.34265254809499596, + "lowest/target_error_max_step": 84.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.534634452000319, + "time/backward_s": 7.087507908996486, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1303, + "forward/grad_norm": 0.0014823839154182593, + "forward/relative_grad_norm": 0.0004891444298925844, + "forward/grad_norm_first": 3.030564849207808, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.044995700185123e-07, + "adjoint/relative_residual": 0.00047416643257925127, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.044995700185123e-07, + "adjoint/solver_0/relative_residual": 0.00047416643257925127, + "adjoint/residual_converged": true, + "time/series_s": 0.9539690539968433, + "time/step_s": 16.58794535799825 + }, + { + "step": 85.0, + "loss/total": 0.0009228569092006051, + "loss/data": 0.0008857818827910945, + "loss/mse": 0.0008857818827910945, + "loss/smooth": 0.03657486086324762, + "loss/activation_l2": 0.05001655462629026, + "loss/activation_l2_penalty": 5.001655462629027e-07, + "loss/regularization": 3.7075026409510524e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03566969934733422, + "target/error_rms": 0.051549448574871135, + "target/error_max": 0.3416241208406726, + "activation_inv/rms": 0.2236438119561779, + "activation_inv/min": -1.7055097767554643, + "activation_inv/max": 2.0474017422493995, + "grad/norm": 0.00012018694878720759, + "grad/abs_max": 9.288085635377136e-06, + "optimizer/steps": 85.0, + "optimizer/lr": 0.03, + "best/step": 85.0, + "best/loss": 0.0009228569092006051, + "best/target_error_max": 0.3416241208406726, + "lowest/loss": 0.0009228569092006051, + "lowest/loss_step": 85.0, + "lowest/target_error_max": 0.3416241208406726, + "lowest/target_error_max_step": 85.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.489046489994507, + "time/backward_s": 6.925425389003067, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 995, + "forward/grad_norm": 0.001320519668826978, + "forward/relative_grad_norm": 0.0004578426144055851, + "forward/grad_norm_first": 2.8842218423494774, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0483277326576362e-07, + "adjoint/relative_residual": 0.0004910272616821108, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0483277326576362e-07, + "adjoint/solver_0/relative_residual": 0.0004910272616821108, + "adjoint/residual_converged": true, + "time/series_s": 0.953543602998252, + "time/step_s": 14.380269426001178 + }, + { + "step": 86.0, + "loss/total": 0.0008967176190143941, + "loss/data": 0.0008596913159724883, + "loss/mse": 0.0008596913159724883, + "loss/smooth": 0.03652521485481501, + "loss/activation_l2": 0.05010881870907969, + "loss/activation_l2_penalty": 5.010881870907969e-07, + "loss/regularization": 3.7026303041905806e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03440136888800583, + "target/error_rms": 0.05078458376237286, + "target/error_max": 0.33947612321808873, + "activation_inv/rms": 0.2238499915324539, + "activation_inv/min": -1.7212496522430292, + "activation_inv/max": 2.060533414746459, + "grad/norm": 0.00010714051135148429, + "grad/abs_max": 8.430624878396923e-06, + "optimizer/steps": 86.0, + "optimizer/lr": 0.03, + "best/step": 86.0, + "best/loss": 0.0008967176190143941, + "best/target_error_max": 0.33947612321808873, + "lowest/loss": 0.0008967176190143941, + "lowest/loss_step": 86.0, + "lowest/target_error_max": 0.33947612321808873, + "lowest/target_error_max_step": 86.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.457797707000282, + "time/backward_s": 6.770647265999287, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 994, + "forward/grad_norm": 0.0012239678468384003, + "forward/relative_grad_norm": 0.00046604185892628144, + "forward/grad_norm_first": 2.626304533370269, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9556447492198143e-07, + "adjoint/relative_residual": 0.0004758699188842039, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9556447492198143e-07, + "adjoint/solver_0/relative_residual": 0.0004758699188842039, + "adjoint/residual_converged": true, + "time/series_s": 0.9520579800009727, + "time/step_s": 14.192501165001886 + }, + { + "step": 87.0, + "loss/total": 0.0008763794926249438, + "loss/data": 0.0008393187139566018, + "loss/mse": 0.0008393187139566018, + "loss/smooth": 0.036556591442592615, + "loss/activation_l2": 0.05041872257494359, + "loss/activation_l2_penalty": 5.041872257494359e-07, + "loss/regularization": 3.706077866834205e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03392746571991179, + "target/error_rms": 0.0501792401483901, + "target/error_max": 0.3375297076640681, + "activation_inv/rms": 0.22454113782321403, + "activation_inv/min": -1.7329772909395953, + "activation_inv/max": 2.0741697213763097, + "grad/norm": 0.00011436539537620218, + "grad/abs_max": 1.1349065320097427e-05, + "optimizer/steps": 87.0, + "optimizer/lr": 0.03, + "best/step": 87.0, + "best/loss": 0.0008763794926249438, + "best/target_error_max": 0.3375297076640681, + "lowest/loss": 0.0008763794926249438, + "lowest/loss_step": 87.0, + "lowest/target_error_max": 0.3375297076640681, + "lowest/target_error_max_step": 87.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.282403110999439, + "time/backward_s": 6.861106860000291, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1116, + "forward/grad_norm": 0.0010560650788479452, + "forward/relative_grad_norm": 0.00047489533109359636, + "forward/grad_norm_first": 2.2237849262826446, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0115486882796465e-07, + "adjoint/relative_residual": 0.0004953779275307978, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0115486882796465e-07, + "adjoint/solver_0/relative_residual": 0.0004953779275307978, + "adjoint/residual_converged": true, + "time/series_s": 0.9366156280011637, + "time/step_s": 15.09167420000449 + }, + { + "step": 88.0, + "loss/total": 0.0008704470041894022, + "loss/data": 0.0008334304246930118, + "loss/mse": 0.0008334304246930118, + "loss/smooth": 0.03651108367096555, + "loss/activation_l2": 0.05054958254248039, + "loss/activation_l2_penalty": 5.054958254248039e-07, + "loss/regularization": 3.7016579496390347e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03313309064053168, + "target/error_rms": 0.0500029126559547, + "target/error_max": 0.3336935457260028, + "activation_inv/rms": 0.22483234318594023, + "activation_inv/min": -1.7479408910926975, + "activation_inv/max": 2.08930478945531, + "grad/norm": 0.00022088234288632533, + "grad/abs_max": 7.137791386407711e-05, + "optimizer/steps": 88.0, + "optimizer/lr": 0.03, + "best/step": 88.0, + "best/loss": 0.0008704470041894022, + "best/target_error_max": 0.3336935457260028, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.3336935457260028, + "lowest/target_error_max_step": 88.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.7676435180037515, + "time/backward_s": 6.9482808409957215, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1034, + "forward/grad_norm": 0.0009889850733117993, + "forward/relative_grad_norm": 0.0004965588277916574, + "forward/grad_norm_first": 1.991677557541582, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.892246719580665e-07, + "adjoint/relative_residual": 0.0004676410662469652, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.892246719580665e-07, + "adjoint/solver_0/relative_residual": 0.0004676410662469652, + "adjoint/residual_converged": true, + "time/series_s": 0.9893230579982628, + "time/step_s": 14.717885544996534 + }, + { + "step": 89.0, + "loss/total": 0.0009048444241331299, + "loss/data": 0.000867808654114532, + "loss/mse": 0.000867808654114532, + "loss/smooth": 0.03652696994751043, + "loss/activation_l2": 0.05088000710874737, + "loss/activation_l2_penalty": 5.088000710874738e-07, + "loss/regularization": 3.703577001859791e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03479212715124613, + "target/error_rms": 0.051023778401286544, + "target/error_max": 0.33392897118980563, + "activation_inv/rms": 0.22556597063552686, + "activation_inv/min": -1.7583596043677086, + "activation_inv/max": 2.0631124903169784, + "grad/norm": 0.00023305442314434187, + "grad/abs_max": 2.2501398609902634e-05, + "optimizer/steps": 89.0, + "optimizer/lr": 0.03, + "best/step": 88.0, + "best/loss": 0.0008704470041894022, + "best/target_error_max": 0.3336935457260028, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.3336935457260028, + "lowest/target_error_max_step": 88.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.549643872996967, + "time/backward_s": 6.452384604999679, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1147, + "forward/grad_norm": 0.0010972103996548276, + "forward/relative_grad_norm": 0.0004968083873968234, + "forward/grad_norm_first": 2.2085182687916975, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9962330199639873e-07, + "adjoint/relative_residual": 0.000483469189881231, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9962330199639873e-07, + "adjoint/solver_0/relative_residual": 0.000483469189881231, + "adjoint/residual_converged": true, + "time/series_s": 0.9881511619969388, + "time/step_s": 14.99745633600105 + }, + { + "step": 90.0, + "loss/total": 0.0009771589677496548, + "loss/data": 0.0009401701009879125, + "loss/mse": 0.0009401701009879125, + "loss/smooth": 0.036479779959770156, + "loss/activation_l2": 0.050908680197218066, + "loss/activation_l2_penalty": 5.090868019721807e-07, + "loss/regularization": 3.698886676174234e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03587209328532145, + "target/error_rms": 0.0531084767524332, + "target/error_max": 0.3291749170643727, + "activation_inv/rms": 0.22562951978235932, + "activation_inv/min": -1.7803900425733334, + "activation_inv/max": 2.073267286387439, + "grad/norm": 0.0003151986094509178, + "grad/abs_max": 2.6294872976288147e-05, + "optimizer/steps": 90.0, + "optimizer/lr": 0.03, + "best/step": 90.0, + "best/loss": 0.0009771589677496548, + "best/target_error_max": 0.3291749170643727, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.3291749170643727, + "lowest/target_error_max_step": 90.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.411385478997545, + "time/backward_s": 6.155467812997813, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1134, + "forward/grad_norm": 0.0015293079817209148, + "forward/relative_grad_norm": 0.0004945479375575013, + "forward/grad_norm_first": 3.0923351723473758, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9017151959453414e-07, + "adjoint/relative_residual": 0.00044249851259682224, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9017151959453414e-07, + "adjoint/solver_0/relative_residual": 0.00044249851259682224, + "adjoint/residual_converged": true, + "time/series_s": 1.1126946000003954, + "time/step_s": 14.691813249002735 + }, + { + "step": 91.0, + "loss/total": 0.0010617433073262577, + "loss/data": 0.0010246401704744632, + "loss/mse": 0.0010246401704744632, + "loss/smooth": 0.03658871482814672, + "loss/activation_l2": 0.051442202364774495, + "loss/activation_l2_penalty": 5.14422023647745e-07, + "loss/regularization": 3.7103136851794464e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0391970064496339, + "target/error_rms": 0.055442948256955005, + "target/error_max": 0.32919780618578637, + "activation_inv/rms": 0.2268087352038596, + "activation_inv/min": -1.7859313981284617, + "activation_inv/max": 2.0761613083771286, + "grad/norm": 0.00038940394608636585, + "grad/abs_max": 2.7634082749823768e-05, + "optimizer/steps": 91.0, + "optimizer/lr": 0.03, + "best/step": 90.0, + "best/loss": 0.0009771589677496548, + "best/target_error_max": 0.3291749170643727, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.3291749170643727, + "lowest/target_error_max_step": 90.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 7.379098998004338, + "time/backward_s": 7.252960650999739, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1127, + "forward/grad_norm": 0.001593741459237855, + "forward/relative_grad_norm": 0.0004462345182334159, + "forward/grad_norm_first": 3.5715333397946645, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.1515527997892088e-07, + "adjoint/relative_residual": 0.0004795521865054418, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.1515527997892088e-07, + "adjoint/solver_0/relative_residual": 0.0004795521865054418, + "adjoint/residual_converged": true, + "time/series_s": 0.9813126490043942, + "time/step_s": 15.620248011000513 + }, + { + "step": 92.0, + "loss/total": 0.0010958605366933737, + "loss/data": 0.0010587754665386312, + "loss/mse": 0.0010587754665386312, + "loss/smooth": 0.03657115034618231, + "loss/activation_l2": 0.051391980856031326, + "loss/activation_l2_penalty": 5.139198085603133e-07, + "loss/regularization": 3.708507015474262e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.039126531907254694, + "target/error_rms": 0.05635890701225401, + "target/error_max": 0.32433405928560355, + "activation_inv/rms": 0.22669799482137318, + "activation_inv/min": -1.8067967883894833, + "activation_inv/max": 2.0952025578089897, + "grad/norm": 0.0004199461218494172, + "grad/abs_max": 3.847601285902664e-05, + "optimizer/steps": 92.0, + "optimizer/lr": 0.03, + "best/step": 92.0, + "best/loss": 0.0010958605366933737, + "best/target_error_max": 0.32433405928560355, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.32433405928560355, + "lowest/target_error_max_step": 92.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.461931711004581, + "time/backward_s": 7.2545931530039525, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1141, + "forward/grad_norm": 0.0018838299943201614, + "forward/relative_grad_norm": 0.00046100083610509785, + "forward/grad_norm_first": 4.086391708605688, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.264231875747341e-07, + "adjoint/relative_residual": 0.0004964648683084522, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.264231875747341e-07, + "adjoint/solver_0/relative_residual": 0.0004964648683084522, + "adjoint/residual_converged": true, + "time/series_s": 0.9858252390040434, + "time/step_s": 15.71479743099917 + }, + { + "step": 93.0, + "loss/total": 0.0010765749646200464, + "loss/data": 0.001039335164791332, + "loss/mse": 0.001039335164791332, + "loss/smooth": 0.036720648191850204, + "loss/activation_l2": 0.05191516368642138, + "loss/activation_l2_penalty": 5.191516368642138e-07, + "loss/regularization": 3.7239799828714416e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03965938839234696, + "target/error_rms": 0.05583910363154119, + "target/error_max": 0.324934703394815, + "activation_inv/rms": 0.2278489931652571, + "activation_inv/min": -1.8174441346030443, + "activation_inv/max": 2.106965018831204, + "grad/norm": 0.000430082871194926, + "grad/abs_max": 3.0714763757024155e-05, + "optimizer/steps": 93.0, + "optimizer/lr": 0.03, + "best/step": 92.0, + "best/loss": 0.0010958605366933737, + "best/target_error_max": 0.32433405928560355, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.32433405928560355, + "lowest/target_error_max_step": 92.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.157588273999863, + "time/backward_s": 7.292086525994819, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1399, + "forward/grad_norm": 0.0020065624773942872, + "forward/relative_grad_norm": 0.00048570347642315986, + "forward/grad_norm_first": 4.131249980278313, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9858946931927873e-07, + "adjoint/relative_residual": 0.00043948895070581543, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9858946931927873e-07, + "adjoint/solver_0/relative_residual": 0.00043948895070581543, + "adjoint/residual_converged": true, + "time/series_s": 0.9780866729997797, + "time/step_s": 17.43469496400212 + }, + { + "step": 94.0, + "loss/total": 0.001077854365895292, + "loss/data": 0.0010406012671134632, + "loss/mse": 0.0010406012671134632, + "loss/smooth": 0.03673357470843423, + "loss/activation_l2": 0.05195240733946126, + "loss/activation_l2_penalty": 5.195240733946126e-07, + "loss/regularization": 3.7253098781828844e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03928805616388281, + "target/error_rms": 0.055873104454114496, + "target/error_max": 0.3205259935595829, + "activation_inv/rms": 0.22793070732014423, + "activation_inv/min": -1.814829428973797, + "activation_inv/max": 2.118994176594869, + "grad/norm": 0.00042190427203194283, + "grad/abs_max": 3.120548807259611e-05, + "optimizer/steps": 94.0, + "optimizer/lr": 0.03, + "best/step": 94.0, + "best/loss": 0.001077854365895292, + "best/target_error_max": 0.3205259935595829, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.3205259935595829, + "lowest/target_error_max_step": 94.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.639483302998997, + "time/backward_s": 7.328826020995621, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1487, + "forward/grad_norm": 0.0018533064156072761, + "forward/relative_grad_norm": 0.00046640080863558596, + "forward/grad_norm_first": 3.9736346534838973, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0022422252177843e-07, + "adjoint/relative_residual": 0.00044283709898617496, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0022422252177843e-07, + "adjoint/solver_0/relative_residual": 0.00044283709898617496, + "adjoint/residual_converged": true, + "time/series_s": 0.9833836570032872, + "time/step_s": 17.963728632996208 + }, + { + "step": 95.0, + "loss/total": 0.001169651492356342, + "loss/data": 0.0011322561675085145, + "loss/mse": 0.0011322561675085145, + "loss/smooth": 0.03687213742614005, + "loss/activation_l2": 0.05231874216873981, + "loss/activation_l2_penalty": 5.231874216873981e-07, + "loss/regularization": 3.7395324847827454e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.041852839012193506, + "target/error_rms": 0.05828180249894081, + "target/error_max": 0.31971953170625333, + "activation_inv/rms": 0.22873290574104072, + "activation_inv/min": -1.8328787673440947, + "activation_inv/max": 2.1444597738991598, + "grad/norm": 0.0005057474035065812, + "grad/abs_max": 5.2109829185876535e-05, + "optimizer/steps": 95.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.535921542003052, + "time/backward_s": 7.427003413999046, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1456, + "forward/grad_norm": 0.0020098471676937386, + "forward/relative_grad_norm": 0.0004676955720716184, + "forward/grad_norm_first": 4.297340594419761, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.322632114007227e-07, + "adjoint/relative_residual": 0.0004924675685693185, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.322632114007227e-07, + "adjoint/solver_0/relative_residual": 0.0004924675685693185, + "adjoint/residual_converged": true, + "time/series_s": 0.9752907759975642, + "time/step_s": 17.950592774999677 + }, + { + "step": 96.0, + "loss/total": 0.0013747919559187237, + "loss/data": 0.001337269560972498, + "loss/mse": 0.001337269560972498, + "loss/smooth": 0.03699595844210057, + "loss/activation_l2": 0.0526436504125241, + "loss/activation_l2_penalty": 5.26436504125241e-07, + "loss/regularization": 3.7522394946225806e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04601810065337702, + "target/error_rms": 0.06333884023975726, + "target/error_max": 0.3226235197672904, + "activation_inv/rms": 0.22944204151053943, + "activation_inv/min": -1.8144025921974047, + "activation_inv/max": 2.1346130852948524, + "grad/norm": 0.0006149221462816416, + "grad/abs_max": 5.1655117478002084e-05, + "optimizer/steps": 96.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 10.450678355999116, + "time/backward_s": 7.191104696998082, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1598, + "forward/grad_norm": 0.0024682931450536205, + "forward/relative_grad_norm": 0.0004962972296103923, + "forward/grad_norm_first": 4.973417133501434, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2557812782634517e-07, + "adjoint/relative_residual": 0.0004401057722028834, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2557812782634517e-07, + "adjoint/solver_0/relative_residual": 0.0004401057722028834, + "adjoint/residual_converged": true, + "time/series_s": 0.972364524997829, + "time/step_s": 18.621061596997606 + }, + { + "step": 97.0, + "loss/total": 0.001550348063546467, + "loss/data": 0.0015126662354175984, + "loss/mse": 0.0015126662354175984, + "loss/smooth": 0.03715464618615708, + "loss/activation_l2": 0.05271819427115735, + "loss/activation_l2_penalty": 5.271819427115736e-07, + "loss/regularization": 3.7681828128868655e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04956135052410254, + "target/error_rms": 0.06736466956983307, + "target/error_max": 0.3224970063400479, + "activation_inv/rms": 0.2296044299902712, + "activation_inv/min": -1.839129098489909, + "activation_inv/max": 2.1759320336479537, + "grad/norm": 0.0006856246468721122, + "grad/abs_max": 6.395178333507162e-05, + "optimizer/steps": 97.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 9.29466460900585, + "time/backward_s": 7.44503698200424, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1424, + "forward/grad_norm": 0.003026430070041681, + "forward/relative_grad_norm": 0.0004819367367842047, + "forward/grad_norm_first": 6.2797247834559995, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.499035287970566e-07, + "adjoint/relative_residual": 0.00045842721120854655, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.499035287970566e-07, + "adjoint/solver_0/relative_residual": 0.00045842721120854655, + "adjoint/residual_converged": true, + "time/series_s": 0.9499828670013812, + "time/step_s": 17.696549129999767 + }, + { + "step": 98.0, + "loss/total": 0.0014850231010652868, + "loss/data": 0.0014470343855939865, + "loss/mse": 0.0014470343855939865, + "loss/smooth": 0.03745475170420655, + "loss/activation_l2": 0.05339637670937783, + "loss/activation_l2_penalty": 5.339637670937784e-07, + "loss/regularization": 3.7988715471300325e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04868238659642392, + "target/error_rms": 0.06588704847526529, + "target/error_max": 0.34778261151087203, + "activation_inv/rms": 0.2310765602768438, + "activation_inv/min": -1.8172563790503349, + "activation_inv/max": 2.1467086908830737, + "grad/norm": 0.0006300755328724259, + "grad/abs_max": 5.139643838750159e-05, + "optimizer/steps": 98.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 10.051801191002596, + "time/backward_s": 7.454743233000045, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1544, + "forward/grad_norm": 0.0027403004147560977, + "forward/relative_grad_norm": 0.00045042362022921215, + "forward/grad_norm_first": 6.083829292437217, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.6422574475240184e-07, + "adjoint/relative_residual": 0.0004955702891915007, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.6422574475240184e-07, + "adjoint/solver_0/relative_residual": 0.0004955702891915007, + "adjoint/residual_converged": true, + "time/series_s": 0.9791960130023654, + "time/step_s": 18.492701308001415 + }, + { + "step": 99.0, + "loss/total": 0.0013381615899211781, + "loss/data": 0.0012999953198439282, + "loss/mse": 0.0012999953198439282, + "loss/smooth": 0.03763221548285016, + "loss/activation_l2": 0.05340545943997306, + "loss/activation_l2_penalty": 5.340545943997307e-07, + "loss/regularization": 3.816627007724989e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04573229693962257, + "target/error_rms": 0.06244986757017011, + "target/error_max": 0.4193446642650702, + "activation_inv/rms": 0.23109621251758553, + "activation_inv/min": -1.8482468716702045, + "activation_inv/max": 2.175788551967752, + "grad/norm": 0.0005574397662913291, + "grad/abs_max": 4.585322839997643e-05, + "optimizer/steps": 99.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 11.159787042000971, + "time/backward_s": 7.465002860000823, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1700, + "forward/grad_norm": 0.002751855019933835, + "forward/relative_grad_norm": 0.0004943573388218949, + "forward/grad_norm_first": 5.566530126753642, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3198322564042876e-07, + "adjoint/relative_residual": 0.0004590449824516415, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3198322564042876e-07, + "adjoint/solver_0/relative_residual": 0.0004590449824516415, + "adjoint/residual_converged": true, + "time/series_s": 0.9861334720044397, + "time/step_s": 19.61782058600511 + }, + { + "step": 100.0, + "loss/total": 0.0014426791514619932, + "loss/data": 0.0014042798387667557, + "loss/mse": 0.0014042798387667557, + "loss/smooth": 0.03786056676792762, + "loss/activation_l2": 0.053874592730988, + "loss/activation_l2_penalty": 5.3874592730988e-07, + "loss/regularization": 3.83993126952375e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.047567116872191534, + "target/error_rms": 0.06490639041188678, + "target/error_max": 0.3902111342740455, + "activation_inv/rms": 0.2321090104476515, + "activation_inv/min": -1.8433390316247256, + "activation_inv/max": 2.1747639921500723, + "grad/norm": 0.0007057639475823948, + "grad/abs_max": 7.30545406839652e-05, + "optimizer/steps": 100.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 9.24417627799994, + "time/backward_s": 7.5927718359962455, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1420, + "forward/grad_norm": 0.00224412595933249, + "forward/relative_grad_norm": 0.00044202921204044237, + "forward/grad_norm_first": 5.076872519292163, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.5100021427044004e-07, + "adjoint/relative_residual": 0.00047787775871578175, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.5100021427044004e-07, + "adjoint/solver_0/relative_residual": 0.00047787775871578175, + "adjoint/residual_converged": true, + "time/series_s": 0.9849128490022849, + "time/step_s": 17.82876922900323 + }, + { + "step": 101.0, + "loss/total": 0.0017443057666245443, + "loss/data": 0.0017057242009385462, + "loss/mse": 0.0017057242009385462, + "loss/smooth": 0.03803971053460307, + "loss/activation_l2": 0.05418551513949496, + "loss/activation_l2_penalty": 5.418551513949496e-07, + "loss/regularization": 3.858156568599802e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.051608224959539165, + "target/error_rms": 0.07153441551320341, + "target/error_max": 0.38981901919508904, + "activation_inv/rms": 0.23277782355605733, + "activation_inv/min": -1.877421616030689, + "activation_inv/max": 2.186100948005174, + "grad/norm": 0.0008485734317906931, + "grad/abs_max": 9.87005873387601e-05, + "optimizer/steps": 101.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 6.0, + "stopped": 0.0, + "time/forward_s": 9.887904040995636, + "time/backward_s": 7.663586121998378, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1527, + "forward/grad_norm": 0.0026475447705758505, + "forward/relative_grad_norm": 0.00048963159773721, + "forward/grad_norm_first": 5.4072179630792805, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.8881379595545984e-07, + "adjoint/relative_residual": 0.0004989224947385093, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.8881379595545984e-07, + "adjoint/solver_0/relative_residual": 0.0004989224947385093, + "adjoint/residual_converged": true, + "time/series_s": 0.9833007479974185, + "time/step_s": 18.54161563699745 + }, + { + "step": 102.0, + "loss/total": 0.001638511924242322, + "loss/data": 0.001599722198675929, + "loss/mse": 0.001599722198675929, + "loss/smooth": 0.03824641296878476, + "loss/activation_l2": 0.05433125976082741, + "loss/activation_l2_penalty": 5.433125976082742e-07, + "loss/regularization": 3.8789725566393036e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04914648834429567, + "target/error_rms": 0.06927601746656478, + "target/error_max": 0.38581707200179693, + "activation_inv/rms": 0.23309066854086505, + "activation_inv/min": -1.8824603256732417, + "activation_inv/max": 2.2005642021704985, + "grad/norm": 0.0008834631338340376, + "grad/abs_max": 0.0002673760029992005, + "optimizer/steps": 102.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 7.0, + "stopped": 0.0, + "time/forward_s": 9.652839385002153, + "time/backward_s": 7.7367313299982925, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1472, + "forward/grad_norm": 0.002749653406494547, + "forward/relative_grad_norm": 0.00046527223946339115, + "forward/grad_norm_first": 5.9097731892747, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4550770988293643e-07, + "adjoint/relative_residual": 0.00043793777322594514, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4550770988293643e-07, + "adjoint/solver_0/relative_residual": 0.00043793777322594514, + "adjoint/residual_converged": true, + "time/series_s": 0.9863597880030284, + "time/step_s": 18.382720246001554 + }, + { + "step": 103.0, + "loss/total": 0.0012509714772369139, + "loss/data": 0.001211921999593525, + "loss/mse": 0.001211921999593525, + "loss/smooth": 0.03850134720926871, + "loss/activation_l2": 0.05481304341200062, + "loss/activation_l2_penalty": 5.481304341200062e-07, + "loss/regularization": 3.904947764338872e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04248291928292606, + "target/error_rms": 0.060297313362873604, + "target/error_max": 0.3752216375855371, + "activation_inv/rms": 0.2341218559041437, + "activation_inv/min": -1.861570644523571, + "activation_inv/max": 2.2040093582660876, + "grad/norm": 0.0005447784532002679, + "grad/abs_max": 3.753000430228158e-05, + "optimizer/steps": 103.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 8.0, + "stopped": 0.0, + "time/forward_s": 11.039091569997254, + "time/backward_s": 7.595365627996216, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1692, + "forward/grad_norm": 0.0022908883645077795, + "forward/relative_grad_norm": 0.0004848525947850643, + "forward/grad_norm_first": 4.7249171998828485, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3026159341376197e-07, + "adjoint/relative_residual": 0.00047190407477255624, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3026159341376197e-07, + "adjoint/solver_0/relative_residual": 0.00047190407477255624, + "adjoint/residual_converged": true, + "time/series_s": 0.9928799859990249, + "time/step_s": 19.634540213002765 + }, + { + "step": 104.0, + "loss/total": 0.0010362734273017882, + "loss/data": 0.0009971989865870496, + "loss/mse": 0.0009971989865870496, + "loss/smooth": 0.03852578011308802, + "loss/activation_l2": 0.05486606016505571, + "loss/activation_l2_penalty": 5.486606016505571e-07, + "loss/regularization": 3.907444071473858e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03788227772922976, + "target/error_rms": 0.054695493047975614, + "target/error_max": 0.36800312273468105, + "activation_inv/rms": 0.23423505323724655, + "activation_inv/min": -1.8863579627834826, + "activation_inv/max": 2.2182668197769626, + "grad/norm": 0.000417443591144451, + "grad/abs_max": 0.00010890022055504224, + "optimizer/steps": 104.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 9.0, + "stopped": 0.0, + "time/forward_s": 10.166271141002653, + "time/backward_s": 7.549569338996662, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1554, + "forward/grad_norm": 0.0018137080602691163, + "forward/relative_grad_norm": 0.0004882564484477316, + "forward/grad_norm_first": 3.7146627884491235, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0303633360646718e-07, + "adjoint/relative_residual": 0.00045872499484808036, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0303633360646718e-07, + "adjoint/solver_0/relative_residual": 0.00045872499484808036, + "adjoint/residual_converged": true, + "time/series_s": 0.9717421870009275, + "time/step_s": 18.694500808996963 + }, + { + "step": 105.0, + "loss/total": 0.0009111606744452605, + "loss/data": 0.0008719628107002821, + "loss/mse": 0.0008719628107002821, + "loss/smooth": 0.03864513131283467, + "loss/activation_l2": 0.05527324321437533, + "loss/activation_l2_penalty": 5.527324321437534e-07, + "loss/regularization": 3.9197863744978425e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03485030338068156, + "target/error_rms": 0.05114575673602695, + "target/error_max": 0.3544848111324086, + "activation_inv/rms": 0.2351026227296823, + "activation_inv/min": -1.8944401336879209, + "activation_inv/max": 2.228372605510802, + "grad/norm": 0.00023613161000629354, + "grad/abs_max": 1.9983340020907414e-05, + "optimizer/steps": 105.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008704470041894022, + "lowest/loss_step": 88.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 10.0, + "stopped": 0.0, + "time/forward_s": 9.950788294998347, + "time/backward_s": 7.466277280000213, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1520, + "forward/grad_norm": 0.0015319342501073825, + "forward/relative_grad_norm": 0.0004922188831292758, + "forward/grad_norm_first": 3.112302885188249, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9371248498090117e-07, + "adjoint/relative_residual": 0.00046803484503383206, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9371248498090117e-07, + "adjoint/solver_0/relative_residual": 0.00046803484503383206, + "adjoint/residual_converged": true, + "time/series_s": 0.9770803360006539, + "time/step_s": 18.401107108998985 + }, + { + "step": 106.0, + "loss/total": 0.0008508064718960874, + "loss/data": 0.000811599714684808, + "loss/mse": 0.000811599714684808, + "loss/smooth": 0.03865219823121332, + "loss/activation_l2": 0.05545589800660942, + "loss/activation_l2_penalty": 5.545589800660942e-07, + "loss/regularization": 3.9206757211279414e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03347280413155569, + "target/error_rms": 0.049343683932742834, + "target/error_max": 0.3383205804241479, + "activation_inv/rms": 0.23549075991768642, + "activation_inv/min": -1.915405309727477, + "activation_inv/max": 2.240770395452245, + "grad/norm": 0.00016705542318063267, + "grad/abs_max": 2.3316307428722143e-05, + "optimizer/steps": 106.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008508064718960874, + "lowest/loss_step": 106.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 11.0, + "stopped": 0.0, + "time/forward_s": 9.156816265000089, + "time/backward_s": 6.891784447005193, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1397, + "forward/grad_norm": 0.0013133457091607573, + "forward/relative_grad_norm": 0.0004962289462288908, + "forward/grad_norm_first": 2.6466527580496337, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9531993048083055e-07, + "adjoint/relative_residual": 0.0004891535102943355, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9531993048083055e-07, + "adjoint/solver_0/relative_residual": 0.0004891535102943355, + "adjoint/residual_converged": true, + "time/series_s": 0.9777672859927407, + "time/step_s": 17.033321408998745 + }, + { + "step": 107.0, + "loss/total": 0.0008318268253245334, + "loss/data": 0.0007926402576915011, + "loss/mse": 0.0007926402576915011, + "loss/smooth": 0.03862987763555655, + "loss/activation_l2": 0.05566899974756846, + "loss/activation_l2_penalty": 5.566899974756846e-07, + "loss/regularization": 3.918656763303224e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033067483377936316, + "target/error_rms": 0.048763929015969404, + "target/error_max": 0.3233229536601433, + "activation_inv/rms": 0.23594278914086028, + "activation_inv/min": -1.9387406848956628, + "activation_inv/max": 2.251003109958332, + "grad/norm": 0.00018688195342191983, + "grad/abs_max": 1.8499955551570128e-05, + "optimizer/steps": 107.0, + "optimizer/lr": 0.03, + "best/step": 95.0, + "best/loss": 0.001169651492356342, + "best/target_error_max": 0.31971953170625333, + "lowest/loss": 0.0008318268253245334, + "lowest/loss_step": 107.0, + "lowest/target_error_max": 0.31971953170625333, + "lowest/target_error_max_step": 95.0, + "stagnation/no_improve_steps": 12.0, + "stopped": 0.0, + "time/forward_s": 6.764885447999404, + "time/backward_s": 7.012361809996946, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1032, + "forward/grad_norm": 0.0011642308842451598, + "forward/relative_grad_norm": 0.0004722517976036141, + "forward/grad_norm_first": 2.4652757070548206, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.863165312020971e-07, + "adjoint/relative_residual": 0.00047215314108059415, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.863165312020971e-07, + "adjoint/solver_0/relative_residual": 0.00047215314108059415, + "adjoint/residual_converged": true, + "time/series_s": 0.9747666330003995, + "time/step_s": 14.75903248400573 + }, + { + "step": 108.0, + "loss/total": 0.0008428832017216306, + "loss/data": 0.0008036961779215375, + "loss/mse": 0.0008036961779215375, + "loss/smooth": 0.038628121588205416, + "loss/activation_l2": 0.055890221188768144, + "loss/activation_l2_penalty": 5.589022118876815e-07, + "loss/regularization": 3.91870238000931e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033369284962690766, + "target/error_rms": 0.04910283631079382, + "target/error_max": 0.31510480902293403, + "activation_inv/rms": 0.23641112746393333, + "activation_inv/min": -1.9472687935116235, + "activation_inv/max": 2.2679810405680785, + "grad/norm": 0.00023785623018541985, + "grad/abs_max": 6.056681523099023e-05, + "optimizer/steps": 108.0, + "optimizer/lr": 0.03, + "best/step": 108.0, + "best/loss": 0.0008428832017216306, + "best/target_error_max": 0.31510480902293403, + "lowest/loss": 0.0008318268253245334, + "lowest/loss_step": 107.0, + "lowest/target_error_max": 0.31510480902293403, + "lowest/target_error_max_step": 108.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.185676549001073, + "time/backward_s": 7.295505214999139, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1403, + "forward/grad_norm": 0.0012442238473021768, + "forward/relative_grad_norm": 0.0004940971265842048, + "forward/grad_norm_first": 2.518176650618781, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8219301403050432e-07, + "adjoint/relative_residual": 0.00045851687650573373, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8219301403050432e-07, + "adjoint/solver_0/relative_residual": 0.00045851687650573373, + "adjoint/residual_converged": true, + "time/series_s": 0.9773797760062735, + "time/step_s": 17.470027569004742 + }, + { + "step": 109.0, + "loss/total": 0.0008496655036716252, + "loss/data": 0.0008104966089711651, + "loss/mse": 0.0008104966089711651, + "loss/smooth": 0.03860778291735337, + "loss/activation_l2": 0.05611117831067487, + "loss/activation_l2_penalty": 5.611117831067488e-07, + "loss/regularization": 3.916889470046012e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03394377541204127, + "target/error_rms": 0.0493101391897599, + "target/error_max": 0.31237277618678994, + "activation_inv/rms": 0.23687798190349998, + "activation_inv/min": -1.9757158232986027, + "activation_inv/max": 2.2704232396876183, + "grad/norm": 0.0002446707006192106, + "grad/abs_max": 2.1767477258397685e-05, + "optimizer/steps": 109.0, + "optimizer/lr": 0.03, + "best/step": 109.0, + "best/loss": 0.0008496655036716252, + "best/target_error_max": 0.31237277618678994, + "lowest/loss": 0.0008318268253245334, + "lowest/loss_step": 107.0, + "lowest/target_error_max": 0.31237277618678994, + "lowest/target_error_max_step": 109.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.494082567005535, + "time/backward_s": 7.379366542001662, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1444, + "forward/grad_norm": 0.0012169954646630745, + "forward/relative_grad_norm": 0.0004404112201062369, + "forward/grad_norm_first": 2.7633162124468775, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9540638224965418e-07, + "adjoint/relative_residual": 0.0004897029266181808, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9540638224965418e-07, + "adjoint/solver_0/relative_residual": 0.0004897029266181808, + "adjoint/residual_converged": true, + "time/series_s": 0.9764297500005341, + "time/step_s": 17.86212668799999 + }, + { + "step": 110.0, + "loss/total": 0.0008535557477478765, + "loss/data": 0.0008143925185963977, + "loss/mse": 0.0008143925185963977, + "loss/smooth": 0.03860058455831171, + "loss/activation_l2": 0.05626445931670283, + "loss/activation_l2_penalty": 5.626445931670283e-07, + "loss/regularization": 3.916322915147874e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03379129672446623, + "target/error_rms": 0.04942850954448448, + "target/error_max": 0.3078146697366227, + "activation_inv/rms": 0.23720130547006446, + "activation_inv/min": -1.9828993920019944, + "activation_inv/max": 2.2878508135486606, + "grad/norm": 0.00026610370823480653, + "grad/abs_max": 2.0823987304606065e-05, + "optimizer/steps": 110.0, + "optimizer/lr": 0.03, + "best/step": 110.0, + "best/loss": 0.0008535557477478765, + "best/target_error_max": 0.3078146697366227, + "lowest/loss": 0.0008318268253245334, + "lowest/loss_step": 107.0, + "lowest/target_error_max": 0.3078146697366227, + "lowest/target_error_max_step": 110.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.988897404000454, + "time/backward_s": 6.48128223400272, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1671, + "forward/grad_norm": 0.0014079972489980843, + "forward/relative_grad_norm": 0.0004895142763666367, + "forward/grad_norm_first": 2.8763149860485817, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9292024997309637e-07, + "adjoint/relative_residual": 0.00048231468447794087, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9292024997309637e-07, + "adjoint/solver_0/relative_residual": 0.00048231468447794087, + "adjoint/residual_converged": true, + "time/series_s": 0.9794158270015032, + "time/step_s": 18.46162478300539 + }, + { + "step": 111.0, + "loss/total": 0.0008410272303219542, + "loss/data": 0.0008018531747481672, + "loss/mse": 0.0008018531747481672, + "loss/smooth": 0.03860863652332293, + "loss/activation_l2": 0.05654190504640394, + "loss/activation_l2_penalty": 5.654190504640395e-07, + "loss/regularization": 3.917405557378697e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033883724258576636, + "target/error_rms": 0.049046503690319265, + "target/error_max": 0.30799471738280526, + "activation_inv/rms": 0.2377854180693256, + "activation_inv/min": -2.014850655072014, + "activation_inv/max": 2.287659302473158, + "grad/norm": 0.00025440410648583584, + "grad/abs_max": 1.8566358193237e-05, + "optimizer/steps": 111.0, + "optimizer/lr": 0.03, + "best/step": 110.0, + "best/loss": 0.0008535557477478765, + "best/target_error_max": 0.3078146697366227, + "lowest/loss": 0.0008318268253245334, + "lowest/loss_step": 107.0, + "lowest/target_error_max": 0.3078146697366227, + "lowest/target_error_max_step": 110.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.462868020993483, + "time/backward_s": 7.440255232999334, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1443, + "forward/grad_norm": 0.001440320414757081, + "forward/relative_grad_norm": 0.0004999449248558936, + "forward/grad_norm_first": 2.880958167886684, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.965404808420167e-07, + "adjoint/relative_residual": 0.0004951925976120316, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.965404808420167e-07, + "adjoint/solver_0/relative_residual": 0.0004951925976120316, + "adjoint/residual_converged": true, + "time/series_s": 0.9719089940044796, + "time/step_s": 17.881890507000207 + }, + { + "step": 112.0, + "loss/total": 0.0008177818068659833, + "loss/data": 0.0007786240856774923, + "loss/mse": 0.0007786240856774923, + "loss/smooth": 0.03859084325940915, + "loss/activation_l2": 0.056687792908182086, + "loss/activation_l2_penalty": 5.66877929081821e-07, + "loss/regularization": 3.915772118849097e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033236896643940486, + "target/error_rms": 0.048330862365909395, + "target/error_max": 0.3041879178686769, + "activation_inv/rms": 0.23809198413256608, + "activation_inv/min": -2.015895400764219, + "activation_inv/max": 2.299924366145726, + "grad/norm": 0.0002434177252376463, + "grad/abs_max": 1.6979432150822998e-05, + "optimizer/steps": 112.0, + "optimizer/lr": 0.03, + "best/step": 112.0, + "best/loss": 0.0008177818068659833, + "best/target_error_max": 0.3041879178686769, + "lowest/loss": 0.0008177818068659833, + "lowest/loss_step": 112.0, + "lowest/target_error_max": 0.3041879178686769, + "lowest/target_error_max_step": 112.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.21241487700172, + "time/backward_s": 7.400382471001649, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1561, + "forward/grad_norm": 0.0014087419563126198, + "forward/relative_grad_norm": 0.0004950037054256744, + "forward/grad_norm_first": 2.845922042343468, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7625603621247264e-07, + "adjoint/relative_residual": 0.00045066064970453103, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7625603621247264e-07, + "adjoint/solver_0/relative_residual": 0.00045066064970453103, + "adjoint/residual_converged": true, + "time/series_s": 0.9772286890001851, + "time/step_s": 18.601829602994258 + }, + { + "step": 113.0, + "loss/total": 0.0008110252327572928, + "loss/data": 0.0007718687517831023, + "loss/mse": 0.0007718687517831023, + "loss/smooth": 0.038587410103705234, + "loss/activation_l2": 0.05690708704851643, + "loss/activation_l2_penalty": 5.690708704851644e-07, + "loss/regularization": 3.91564809741904e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03344773478305038, + "target/error_rms": 0.048120746620863096, + "target/error_max": 0.3027517882178841, + "activation_inv/rms": 0.23855206360146294, + "activation_inv/min": -2.0424989213312417, + "activation_inv/max": 2.3052166227333477, + "grad/norm": 0.0002484299384084022, + "grad/abs_max": 1.5039315342673363e-05, + "optimizer/steps": 113.0, + "optimizer/lr": 0.03, + "best/step": 113.0, + "best/loss": 0.0008110252327572928, + "best/target_error_max": 0.3027517882178841, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.3027517882178841, + "lowest/target_error_max_step": 113.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.821046416000172, + "time/backward_s": 6.567151132003346, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1498, + "forward/grad_norm": 0.001417563175638212, + "forward/relative_grad_norm": 0.0004943459128888406, + "forward/grad_norm_first": 2.867553141795607, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8541162314831706e-07, + "adjoint/relative_residual": 0.00047614012592587303, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8541162314831706e-07, + "adjoint/solver_0/relative_residual": 0.00047614012592587303, + "adjoint/residual_converged": true, + "time/series_s": 0.9791980899972259, + "time/step_s": 17.37948937300098 + }, + { + "step": 114.0, + "loss/total": 0.0008388181626458231, + "loss/data": 0.0007996257511669377, + "loss/mse": 0.0007996257511669377, + "loss/smooth": 0.03862073054764493, + "loss/activation_l2": 0.05716809312404703, + "loss/activation_l2_penalty": 5.716809312404704e-07, + "loss/regularization": 3.9192411478885396e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03436499097007205, + "target/error_rms": 0.048978334531717314, + "target/error_max": 0.29838204886451236, + "activation_inv/rms": 0.23909850088205703, + "activation_inv/min": -2.0460467231934776, + "activation_inv/max": 2.309066285055918, + "grad/norm": 0.0003053557889090107, + "grad/abs_max": 2.4034899988680505e-05, + "optimizer/steps": 114.0, + "optimizer/lr": 0.03, + "best/step": 114.0, + "best/loss": 0.0008388181626458231, + "best/target_error_max": 0.29838204886451236, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.29838204886451236, + "lowest/target_error_max_step": 114.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.68445249999786, + "time/backward_s": 7.449442798999371, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1642, + "forward/grad_norm": 0.0014654908549655858, + "forward/relative_grad_norm": 0.0004934346052287344, + "forward/grad_norm_first": 2.96997989082312, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.839098037422024e-07, + "adjoint/relative_residual": 0.0004640139650720735, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.839098037422024e-07, + "adjoint/solver_0/relative_residual": 0.0004640139650720735, + "adjoint/residual_converged": true, + "time/series_s": 0.9968618470011279, + "time/step_s": 19.14263980599935 + }, + { + "step": 115.0, + "loss/total": 0.000979576802528221, + "loss/data": 0.0009404180773320809, + "loss/mse": 0.0009404180773320809, + "loss/smooth": 0.03858663903346617, + "loss/activation_l2": 0.05720861626739092, + "loss/activation_l2_penalty": 5.720861626739092e-07, + "loss/regularization": 3.915872519614008e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.038249380459603785, + "target/error_rms": 0.053115480154059064, + "target/error_max": 0.2949279997596836, + "activation_inv/rms": 0.23918322739563266, + "activation_inv/min": -2.0655798260712093, + "activation_inv/max": 2.3269778646343493, + "grad/norm": 0.00043705775825909204, + "grad/abs_max": 3.885774364244062e-05, + "optimizer/steps": 115.0, + "optimizer/lr": 0.03, + "best/step": 115.0, + "best/loss": 0.000979576802528221, + "best/target_error_max": 0.2949279997596836, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.2949279997596836, + "lowest/target_error_max_step": 115.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.316484695002146, + "time/backward_s": 7.54533606699988, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1574, + "forward/grad_norm": 0.0017917002115880386, + "forward/relative_grad_norm": 0.0004913847108574715, + "forward/grad_norm_first": 3.6462270233469467, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9244032860399627e-07, + "adjoint/relative_residual": 0.0004477186253888621, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9244032860399627e-07, + "adjoint/solver_0/relative_residual": 0.0004477186253888621, + "adjoint/residual_converged": true, + "time/series_s": 0.9768697219988098, + "time/step_s": 18.85037632300373 + }, + { + "step": 116.0, + "loss/total": 0.001287196021426972, + "loss/data": 0.0012478145116900288, + "loss/mse": 0.0012478145116900288, + "loss/smooth": 0.03880319129782831, + "loss/activation_l2": 0.057831843911496525, + "loss/activation_l2_penalty": 5.783184391149652e-07, + "loss/regularization": 3.938150973694328e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.044813606959230506, + "target/error_rms": 0.061183686837833554, + "target/error_max": 0.294299664300601, + "activation_inv/rms": 0.24048252308950963, + "activation_inv/min": -2.070429596442597, + "activation_inv/max": 2.313909098547195, + "grad/norm": 0.0006230269563878119, + "grad/abs_max": 5.213252823622216e-05, + "optimizer/steps": 116.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.362990346002334, + "time/backward_s": 7.934123325998371, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1583, + "forward/grad_norm": 0.002352212585830292, + "forward/relative_grad_norm": 0.0004889528909961701, + "forward/grad_norm_first": 4.8107141386115995, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.3685422699532982e-07, + "adjoint/relative_residual": 0.00047838293611313207, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.3685422699532982e-07, + "adjoint/solver_0/relative_residual": 0.00047838293611313207, + "adjoint/residual_converged": true, + "time/series_s": 0.9761162110007717, + "time/step_s": 19.284841553999286 + }, + { + "step": 117.0, + "loss/total": 0.0018848402397986228, + "loss/data": 0.0018453036982324018, + "loss/mse": 0.0018453036982324018, + "loss/smooth": 0.0389599664954083, + "loss/activation_l2": 0.05765750708127248, + "loss/activation_l2_penalty": 5.765750708127248e-07, + "loss/regularization": 3.953654156622103e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.054147187262016554, + "target/error_rms": 0.0744037035012183, + "target/error_max": 0.3481369624307458, + "activation_inv/rms": 0.24011977653094815, + "activation_inv/min": -2.0663687860650177, + "activation_inv/max": 2.354863530070186, + "grad/norm": 0.0007021643761886634, + "grad/abs_max": 5.780794981106849e-05, + "optimizer/steps": 117.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.606450632003543, + "time/backward_s": 7.568379121999897, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1771, + "forward/grad_norm": 0.002944243571811794, + "forward/relative_grad_norm": 0.00048266952499263413, + "forward/grad_norm_first": 6.0999160281700515, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.824076694394819e-07, + "adjoint/relative_residual": 0.00046904241475728925, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.824076694394819e-07, + "adjoint/solver_0/relative_residual": 0.00046904241475728925, + "adjoint/residual_converged": true, + "time/series_s": 0.9896663280014764, + "time/step_s": 20.171244329998444 + }, + { + "step": 118.0, + "loss/total": 0.001605020456519257, + "loss/data": 0.0015649359731393572, + "loss/mse": 0.0015649359731393572, + "loss/smooth": 0.039498546661893, + "loss/activation_l2": 0.05859367180068736, + "loss/activation_l2_penalty": 5.859367180068736e-07, + "loss/regularization": 4.008448337989987e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05092733548810895, + "target/error_rms": 0.06851866840079478, + "target/error_max": 0.3509916480660857, + "activation_inv/rms": 0.24206129761010406, + "activation_inv/min": -2.113200794569053, + "activation_inv/max": 2.407594772697048, + "grad/norm": 0.0006279940832388463, + "grad/abs_max": 7.65181953364472e-05, + "optimizer/steps": 118.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 9.436259392001375, + "time/backward_s": 7.805366589003825, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1446, + "forward/grad_norm": 0.00316020688700991, + "forward/relative_grad_norm": 0.0004912826675589121, + "forward/grad_norm_first": 6.432563360544272, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.6831685348478367e-07, + "adjoint/relative_residual": 0.00048391515327727734, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.6831685348478367e-07, + "adjoint/solver_0/relative_residual": 0.00048391515327727734, + "adjoint/residual_converged": true, + "time/series_s": 0.9965671350000775, + "time/step_s": 18.24544566399709 + }, + { + "step": 119.0, + "loss/total": 0.001338751866855322, + "loss/data": 0.0012982632219050395, + "loss/mse": 0.0012982632219050395, + "loss/smooth": 0.03989837154070441, + "loss/activation_l2": 0.05902734095780458, + "loss/activation_l2_penalty": 5.902734095780459e-07, + "loss/regularization": 4.048864495028245e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.045743576973781494, + "target/error_rms": 0.062408249981193334, + "target/error_max": 0.34052159584945796, + "activation_inv/rms": 0.24295542998213604, + "activation_inv/min": -2.068524549199166, + "activation_inv/max": 2.3917388983879913, + "grad/norm": 0.0005611855928509065, + "grad/abs_max": 6.614309872910342e-05, + "optimizer/steps": 119.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 8.25900965600158, + "time/backward_s": 7.576216339999519, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1262, + "forward/grad_norm": 0.0028994941853923988, + "forward/relative_grad_norm": 0.0004932465997477413, + "forward/grad_norm_first": 5.8783865654122565, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.4825257427400757e-07, + "adjoint/relative_residual": 0.0004915661168758448, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.4825257427400757e-07, + "adjoint/solver_0/relative_residual": 0.0004915661168758448, + "adjoint/residual_converged": true, + "time/series_s": 0.9946731219970388, + "time/step_s": 16.836889086996962 + }, + { + "step": 120.0, + "loss/total": 0.001463707803772647, + "loss/data": 0.0014230968497912773, + "loss/mse": 0.0014230968497912773, + "loss/smooth": 0.040018522273731955, + "loss/activation_l2": 0.05924317076378142, + "loss/activation_l2_penalty": 5.924317076378142e-07, + "loss/regularization": 4.061095398136977e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04798761324086761, + "target/error_rms": 0.06533980830530368, + "target/error_max": 0.3455002429812582, + "activation_inv/rms": 0.24339920041730093, + "activation_inv/min": -2.1097702109397924, + "activation_inv/max": 2.445833157477873, + "grad/norm": 0.0006742060925069516, + "grad/abs_max": 7.720892486023811e-05, + "optimizer/steps": 120.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 8.71356934600044, + "time/backward_s": 7.753449817995715, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1339, + "forward/grad_norm": 0.0025659941004372395, + "forward/relative_grad_norm": 0.00048300347362590745, + "forward/grad_norm_first": 5.312578978313178, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2945454244253937e-07, + "adjoint/relative_residual": 0.0004339592873845512, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2945454244253937e-07, + "adjoint/solver_0/relative_residual": 0.0004339592873845512, + "adjoint/residual_converged": true, + "time/series_s": 0.9660556910021114, + "time/step_s": 17.43989952300035 + }, + { + "step": 121.0, + "loss/total": 0.0015284965855687411, + "loss/data": 0.0014875693496379124, + "loss/mse": 0.0014875693496379124, + "loss/smooth": 0.04032736441098183, + "loss/activation_l2": 0.059987151984696924, + "loss/activation_l2_penalty": 5.998715198469693e-07, + "loss/regularization": 4.09272359308288e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04871902904486509, + "target/error_rms": 0.06680350326826982, + "target/error_max": 0.3426851698151962, + "activation_inv/rms": 0.24492274697278918, + "activation_inv/min": -2.0856501037913056, + "activation_inv/max": 2.4163131138720635, + "grad/norm": 0.0007007901056562636, + "grad/abs_max": 5.3456787431246134e-05, + "optimizer/steps": 121.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 8.921273505999125, + "time/backward_s": 7.705802135998965, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1365, + "forward/grad_norm": 0.002851227808928211, + "forward/relative_grad_norm": 0.0004946404704882205, + "forward/grad_norm_first": 5.764242877486327, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.6687899104939527e-07, + "adjoint/relative_residual": 0.0004936797718048169, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.6687899104939527e-07, + "adjoint/solver_0/relative_residual": 0.0004936797718048169, + "adjoint/residual_converged": true, + "time/series_s": 0.9970033710051212, + "time/step_s": 17.630932412997936 + }, + { + "step": 122.0, + "loss/total": 0.00126347681076547, + "loss/data": 0.0012225597981180905, + "loss/mse": 0.0012225597981180905, + "loss/smooth": 0.04031992935034985, + "loss/activation_l2": 0.05970832970296915, + "loss/activation_l2_penalty": 5.970832970296916e-07, + "loss/regularization": 4.091701264737954e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04377798825867145, + "target/error_rms": 0.06056136882827428, + "target/error_max": 0.3399538430404447, + "activation_inv/rms": 0.2443528794652708, + "activation_inv/min": -2.1407939252332917, + "activation_inv/max": 2.4239816752266554, + "grad/norm": 0.0005549529471107321, + "grad/abs_max": 7.765422618854023e-05, + "optimizer/steps": 122.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 6.0, + "stopped": 0.0, + "time/forward_s": 8.414504707005108, + "time/backward_s": 7.817372543002421, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1282, + "forward/grad_norm": 0.00274676629342604, + "forward/relative_grad_norm": 0.0004996520482238226, + "forward/grad_norm_first": 5.497358217964528, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9419484055732905e-07, + "adjoint/relative_residual": 0.00039625265780762536, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9419484055732905e-07, + "adjoint/solver_0/relative_residual": 0.00039625265780762536, + "adjoint/residual_converged": true, + "time/series_s": 0.9813365269947099, + "time/step_s": 17.22017766200588 + }, + { + "step": 123.0, + "loss/total": 0.0010182788399314554, + "loss/data": 0.0009770916971906921, + "loss/mse": 0.0009770916971906921, + "loss/smooth": 0.04058285860703619, + "loss/activation_l2": 0.060428413372712715, + "loss/activation_l2_penalty": 6.042841337271272e-07, + "loss/regularization": 4.118714274076332e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03779025136418432, + "target/error_rms": 0.0541412512930028, + "target/error_max": 0.33759278728632425, + "activation_inv/rms": 0.2458219139391619, + "activation_inv/min": -2.1472473824155913, + "activation_inv/max": 2.3827319039955936, + "grad/norm": 0.0004086145941995323, + "grad/abs_max": 4.132112256188197e-05, + "optimizer/steps": 123.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 7.0, + "stopped": 0.0, + "time/forward_s": 8.819352286001958, + "time/backward_s": 7.689134321997699, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1346, + "forward/grad_norm": 0.002012000984903212, + "forward/relative_grad_norm": 0.0004900244460400344, + "forward/grad_norm_first": 4.105919615159024, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.1847716190042012e-07, + "adjoint/relative_residual": 0.0004986639127279669, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.1847716190042012e-07, + "adjoint/solver_0/relative_residual": 0.0004986639127279669, + "adjoint/residual_converged": true, + "time/series_s": 0.9794776359995012, + "time/step_s": 17.494895594005357 + }, + { + "step": 124.0, + "loss/total": 0.0008881253599765386, + "loss/data": 0.0008470063207187686, + "loss/mse": 0.0008470063207187686, + "loss/smooth": 0.04051557782092212, + "loss/activation_l2": 0.06034614368479213, + "loss/activation_l2_penalty": 6.034614368479214e-07, + "loss/regularization": 4.111903925777004e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03416871158266306, + "target/error_rms": 0.05040852072969714, + "target/error_max": 0.3328514459507654, + "activation_inv/rms": 0.24565452099400112, + "activation_inv/min": -2.1501098892513237, + "activation_inv/max": 2.3900490312888354, + "grad/norm": 0.0002811596696484041, + "grad/abs_max": 3.475694461758086e-05, + "optimizer/steps": 124.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 8.0, + "stopped": 0.0, + "time/forward_s": 9.038523401999555, + "time/backward_s": 7.535495242998877, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1382, + "forward/grad_norm": 0.001526252157380028, + "forward/relative_grad_norm": 0.0004865361002545267, + "forward/grad_norm_first": 3.1369761803524625, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8982820115259342e-07, + "adjoint/relative_residual": 0.0004653577628492774, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8982820115259342e-07, + "adjoint/solver_0/relative_residual": 0.0004653577628492774, + "adjoint/residual_converged": true, + "time/series_s": 0.9837763850009651, + "time/step_s": 17.564895490002527 + }, + { + "step": 125.0, + "loss/total": 0.0008291879179676843, + "loss/data": 0.0007879906680447499, + "loss/mse": 0.0007879906680447499, + "loss/smooth": 0.04058998673243804, + "loss/activation_l2": 0.06072631904964401, + "loss/activation_l2_penalty": 6.072631904964402e-07, + "loss/regularization": 4.119724992293448e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03293963288105257, + "target/error_rms": 0.04862069522471115, + "target/error_max": 0.32939752941543204, + "activation_inv/rms": 0.24642710697008155, + "activation_inv/min": -2.1547807778475274, + "activation_inv/max": 2.4117815902279087, + "grad/norm": 0.00022564425670202175, + "grad/abs_max": 1.760904367174247e-05, + "optimizer/steps": 125.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 9.0, + "stopped": 0.0, + "time/forward_s": 8.481861407999531, + "time/backward_s": 7.566537307997351, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1294, + "forward/grad_norm": 0.0012707420662251656, + "forward/relative_grad_norm": 0.0004994721019951744, + "forward/grad_norm_first": 2.544170257255815, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6893747113637023e-07, + "adjoint/relative_residual": 0.0004293732733705182, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6893747113637023e-07, + "adjoint/solver_0/relative_residual": 0.0004293732733705182, + "adjoint/residual_converged": true, + "time/series_s": 0.9801483169940184, + "time/step_s": 17.0354811349971 + }, + { + "step": 126.0, + "loss/total": 0.0008468909992241321, + "loss/data": 0.0008057482884064102, + "loss/mse": 0.0008057482884064102, + "loss/smooth": 0.04053436163489907, + "loss/activation_l2": 0.060834918282284746, + "loss/activation_l2_penalty": 6.083491828228475e-07, + "loss/regularization": 4.1142710817721917e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03322873631832427, + "target/error_rms": 0.04916548449084206, + "target/error_max": 0.32584663675430475, + "activation_inv/rms": 0.24664735612263258, + "activation_inv/min": -2.1608080110322647, + "activation_inv/max": 2.417460061111302, + "grad/norm": 0.00026580417718963977, + "grad/abs_max": 2.198834843339068e-05, + "optimizer/steps": 126.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 10.0, + "stopped": 0.0, + "time/forward_s": 8.310537096003827, + "time/backward_s": 7.363887980005529, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1268, + "forward/grad_norm": 0.0013280278996059438, + "forward/relative_grad_norm": 0.0004999467579642761, + "forward/grad_norm_first": 2.656338656967226, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.724909468852698e-07, + "adjoint/relative_residual": 0.0004335469813483595, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.724909468852698e-07, + "adjoint/solver_0/relative_residual": 0.0004335469813483595, + "adjoint/residual_converged": true, + "time/series_s": 0.9713574289999087, + "time/step_s": 16.652598799999396 + }, + { + "step": 127.0, + "loss/total": 0.0009123994782665772, + "loss/data": 0.000871264948204198, + "loss/mse": 0.000871264948204198, + "loss/smooth": 0.04052429100549806, + "loss/activation_l2": 0.061023905688122035, + "loss/activation_l2_penalty": 6.102390568812204e-07, + "loss/regularization": 4.113453006237928e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03611331927414109, + "target/error_rms": 0.051125285765583686, + "target/error_max": 0.3162276295086766, + "activation_inv/rms": 0.24703017161497104, + "activation_inv/min": -2.188772920998262, + "activation_inv/max": 2.4503341384917467, + "grad/norm": 0.0003505294252611445, + "grad/abs_max": 2.5609770480483466e-05, + "optimizer/steps": 127.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 11.0, + "stopped": 0.0, + "time/forward_s": 8.781156431003183, + "time/backward_s": 7.26828609900258, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1344, + "forward/grad_norm": 0.0016191990655697187, + "forward/relative_grad_norm": 0.00048263768859298624, + "forward/grad_norm_first": 3.3548956159849492, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.969428335912706e-07, + "adjoint/relative_residual": 0.00047603032223465737, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.969428335912706e-07, + "adjoint/solver_0/relative_residual": 0.00047603032223465737, + "adjoint/residual_converged": true, + "time/series_s": 0.9806915540029877, + "time/step_s": 17.0372082449976 + }, + { + "step": 128.0, + "loss/total": 0.0009874040885557026, + "loss/data": 0.0009462239437370209, + "loss/mse": 0.0009462239437370209, + "loss/smooth": 0.04056718053217898, + "loss/activation_l2": 0.061296428650280406, + "loss/activation_l2_penalty": 6.129642865028041e-07, + "loss/regularization": 4.118014481868179e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03752593137731949, + "target/error_rms": 0.053279187599015274, + "target/error_max": 0.31511405389808755, + "activation_inv/rms": 0.24758115568491962, + "activation_inv/min": -2.1825854779909823, + "activation_inv/max": 2.4443649778493755, + "grad/norm": 0.0004190657227664281, + "grad/abs_max": 2.9998555823180253e-05, + "optimizer/steps": 128.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 12.0, + "stopped": 0.0, + "time/forward_s": 9.063736625001184, + "time/backward_s": 7.4512111810036, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1389, + "forward/grad_norm": 0.0019093353785632837, + "forward/relative_grad_norm": 0.00048054188059996894, + "forward/grad_norm_first": 3.973296513051951, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.1088179068125476e-07, + "adjoint/relative_residual": 0.0004891157753500139, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.1088179068125476e-07, + "adjoint/solver_0/relative_residual": 0.0004891157753500139, + "adjoint/residual_converged": true, + "time/series_s": 0.9704281570011517, + "time/step_s": 17.492586409003707 + }, + { + "step": 129.0, + "loss/total": 0.0009635131667451619, + "loss/data": 0.0009223035099161655, + "loss/mse": 0.0009223035099161655, + "loss/smooth": 0.040595588055080276, + "loss/activation_l2": 0.0614068773916175, + "loss/activation_l2_penalty": 6.140687739161751e-07, + "loss/regularization": 4.120965682899645e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03786276950861976, + "target/error_rms": 0.05260143087168348, + "target/error_max": 0.3052805732664405, + "activation_inv/rms": 0.2478041109255807, + "activation_inv/min": -2.213763662641544, + "activation_inv/max": 2.477687881455719, + "grad/norm": 0.0004060959521017463, + "grad/abs_max": 3.0048416120803614e-05, + "optimizer/steps": 129.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 13.0, + "stopped": 0.0, + "time/forward_s": 8.950902550997853, + "time/backward_s": 7.448085809002805, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1379, + "forward/grad_norm": 0.0021207721298851993, + "forward/relative_grad_norm": 0.0004926968909967032, + "forward/grad_norm_first": 4.304415490820278, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.1188867047887407e-07, + "adjoint/relative_residual": 0.000497783344765101, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.1188867047887407e-07, + "adjoint/solver_0/relative_residual": 0.000497783344765101, + "adjoint/residual_converged": true, + "time/series_s": 0.9775946529989596, + "time/step_s": 17.383439429002465 + }, + { + "step": 130.0, + "loss/total": 0.0008687228351675868, + "loss/data": 0.0008274292428915055, + "loss/mse": 0.0008274292428915055, + "loss/smooth": 0.040676323130564705, + "loss/activation_l2": 0.061726914551667296, + "loss/activation_l2_penalty": 6.17269145516673e-07, + "loss/regularization": 4.129359227608138e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034854609855216254, + "target/error_rms": 0.04982256244588908, + "target/error_max": 0.30267312416497333, + "activation_inv/rms": 0.24844901801308714, + "activation_inv/min": -2.211467405478352, + "activation_inv/max": 2.4717031712832145, + "grad/norm": 0.00031778387718995666, + "grad/abs_max": 2.3567019225365335e-05, + "optimizer/steps": 130.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0008110252327572928, + "lowest/loss_step": 113.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 14.0, + "stopped": 0.0, + "time/forward_s": 9.328215847999672, + "time/backward_s": 7.5700339899995015, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1428, + "forward/grad_norm": 0.0019205767897416475, + "forward/relative_grad_norm": 0.00048349198479953826, + "forward/grad_norm_first": 3.9723032648368357, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.96604609352584e-07, + "adjoint/relative_residual": 0.00048763831176549524, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.96604609352584e-07, + "adjoint/solver_0/relative_residual": 0.00048763831176549524, + "adjoint/residual_converged": true, + "time/series_s": 0.9763935490045696, + "time/step_s": 17.88142314700235 + }, + { + "step": 131.0, + "loss/total": 0.0007728215780504503, + "loss/data": 0.0007315642207336247, + "loss/mse": 0.0007315642207336247, + "loss/smooth": 0.04063943929140182, + "loss/activation_l2": 0.06179180254237327, + "loss/activation_l2_penalty": 6.179180254237328e-07, + "loss/regularization": 4.125735731682555e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033069869495981806, + "target/error_rms": 0.04684754702437337, + "target/error_max": 0.29845928274686834, + "activation_inv/rms": 0.24857956984107382, + "activation_inv/min": -2.2365391906468157, + "activation_inv/max": 2.4955443057195343, + "grad/norm": 0.00022141936160454054, + "grad/abs_max": 1.6354598327950922e-05, + "optimizer/steps": 131.0, + "optimizer/lr": 0.03, + "best/step": 116.0, + "best/loss": 0.001287196021426972, + "best/target_error_max": 0.294299664300601, + "lowest/loss": 0.0007728215780504503, + "lowest/loss_step": 131.0, + "lowest/target_error_max": 0.294299664300601, + "lowest/target_error_max_step": 116.0, + "stagnation/no_improve_steps": 15.0, + "stopped": 0.0, + "time/forward_s": 9.112829214005615, + "time/backward_s": 7.4848376649970305, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1395, + "forward/grad_norm": 0.0016313095582381942, + "forward/relative_grad_norm": 0.0004914783793014356, + "forward/grad_norm_first": 3.3191888533466343, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5467219568077932e-07, + "adjoint/relative_residual": 0.00040799569303946655, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5467219568077932e-07, + "adjoint/solver_0/relative_residual": 0.00040799569303946655, + "adjoint/residual_converged": true, + "time/series_s": 0.9745767310014344, + "time/step_s": 17.579019762000826 + }, + { + "step": 132.0, + "loss/total": 0.0007291501745055533, + "loss/data": 0.0006878438431419575, + "loss/mse": 0.0006878438431419575, + "loss/smooth": 0.04068523724649823, + "loss/activation_l2": 0.06210941170975375, + "loss/activation_l2_penalty": 6.210941170975376e-07, + "loss/regularization": 4.130633136359577e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03116824927076892, + "target/error_rms": 0.04542611065704252, + "target/error_max": 0.2938709800793139, + "activation_inv/rms": 0.24921759911722477, + "activation_inv/min": -2.2456180751999253, + "activation_inv/max": 2.498935116903285, + "grad/norm": 0.00015924300136988833, + "grad/abs_max": 1.4265179393578786e-05, + "optimizer/steps": 132.0, + "optimizer/lr": 0.03, + "best/step": 132.0, + "best/loss": 0.0007291501745055533, + "best/target_error_max": 0.2938709800793139, + "lowest/loss": 0.0007291501745055533, + "lowest/loss_step": 132.0, + "lowest/target_error_max": 0.2938709800793139, + "lowest/target_error_max_step": 132.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.141603356001724, + "time/backward_s": 7.497836809998262, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1408, + "forward/grad_norm": 0.0013356806196813341, + "forward/relative_grad_norm": 0.0004611321039287986, + "forward/grad_norm_first": 2.896524896665123, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5737500924995865e-07, + "adjoint/relative_residual": 0.0004281149538452001, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5737500924995865e-07, + "adjoint/solver_0/relative_residual": 0.0004281149538452001, + "adjoint/residual_converged": true, + "time/series_s": 0.9833346499945037, + "time/step_s": 17.63452166800562 + }, + { + "step": 133.0, + "loss/total": 0.0007077821774370667, + "loss/data": 0.0006665283980479354, + "loss/mse": 0.0006665283980479354, + "loss/smooth": 0.04063180808389148, + "loss/activation_l2": 0.062197130523975644, + "loss/activation_l2_penalty": 6.219713052397565e-07, + "loss/regularization": 4.125377938913124e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031330479846056226, + "target/error_rms": 0.04471672163904468, + "target/error_max": 0.2925827442339473, + "activation_inv/rms": 0.24939352542513135, + "activation_inv/min": -2.267616479315608, + "activation_inv/max": 2.514802258115333, + "grad/norm": 0.0001292697156695803, + "grad/abs_max": 1.7593498215847493e-05, + "optimizer/steps": 133.0, + "optimizer/lr": 0.03, + "best/step": 133.0, + "best/loss": 0.0007077821774370667, + "best/target_error_max": 0.2925827442339473, + "lowest/loss": 0.0007077821774370667, + "lowest/loss_step": 133.0, + "lowest/target_error_max": 0.2925827442339473, + "lowest/target_error_max_step": 133.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.837903661005839, + "time/backward_s": 7.2065535849978914, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1045, + "forward/grad_norm": 0.0014113224698303973, + "forward/relative_grad_norm": 0.0004849115981098188, + "forward/grad_norm_first": 2.91047373445329, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8078277689090332e-07, + "adjoint/relative_residual": 0.0004995940765369318, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8078277689090332e-07, + "adjoint/solver_0/relative_residual": 0.0004995940765369318, + "adjoint/residual_converged": true, + "time/series_s": 0.989275326995994, + "time/step_s": 15.045330166001804 + }, + { + "step": 134.0, + "loss/total": 0.0007005252851765893, + "loss/data": 0.0006592495604148484, + "loss/mse": 0.0006592495604148484, + "loss/smooth": 0.04065111407615693, + "loss/activation_l2": 0.06246106855839112, + "loss/activation_l2_penalty": 6.246106855839113e-07, + "loss/regularization": 4.127572476174084e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030686009139454413, + "target/error_rms": 0.044471886414279134, + "target/error_max": 0.28905031148565513, + "activation_inv/rms": 0.24992212498774716, + "activation_inv/min": -2.284363366840584, + "activation_inv/max": 2.526051778854335, + "grad/norm": 0.0001391714172113945, + "grad/abs_max": 3.237821614141454e-05, + "optimizer/steps": 134.0, + "optimizer/lr": 0.03, + "best/step": 134.0, + "best/loss": 0.0007005252851765893, + "best/target_error_max": 0.28905031148565513, + "lowest/loss": 0.0007005252851765893, + "lowest/loss_step": 134.0, + "lowest/target_error_max": 0.28905031148565513, + "lowest/target_error_max_step": 134.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 6.958744777002721, + "time/backward_s": 7.211548336003034, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1061, + "forward/grad_norm": 0.0014341977882458903, + "forward/relative_grad_norm": 0.0004860443076555773, + "forward/grad_norm_first": 2.950755241150149, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5988988925130018e-07, + "adjoint/relative_residual": 0.000444289074400562, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5988988925130018e-07, + "adjoint/solver_0/relative_residual": 0.000444289074400562, + "adjoint/residual_converged": true, + "time/series_s": 0.9777883289934834, + "time/step_s": 15.160235042996646 + }, + { + "step": 135.0, + "loss/total": 0.0006922414255546948, + "loss/data": 0.0006510072325133536, + "loss/mse": 0.0006510072325133536, + "loss/smooth": 0.04060799691232451, + "loss/activation_l2": 0.06261961290166435, + "loss/activation_l2_penalty": 6.261961290166435e-07, + "loss/regularization": 4.123419304134115e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030725221034983798, + "target/error_rms": 0.044193005074786, + "target/error_max": 0.2872218850631803, + "activation_inv/rms": 0.2502391114547531, + "activation_inv/min": -2.3068219846835523, + "activation_inv/max": 2.540616164253819, + "grad/norm": 0.00014259559295176874, + "grad/abs_max": 1.2876252342012049e-05, + "optimizer/steps": 135.0, + "optimizer/lr": 0.03, + "best/step": 135.0, + "best/loss": 0.0006922414255546948, + "best/target_error_max": 0.2872218850631803, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2872218850631803, + "lowest/target_error_max_step": 135.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 7.471255947006284, + "time/backward_s": 7.255276110001432, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1143, + "forward/grad_norm": 0.0013458790193718265, + "forward/relative_grad_norm": 0.0004901317492378011, + "forward/grad_norm_first": 2.745953555273229, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6984110830674884e-07, + "adjoint/relative_residual": 0.0004749189125750717, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6984110830674884e-07, + "adjoint/solver_0/relative_residual": 0.0004749189125750717, + "adjoint/residual_converged": true, + "time/series_s": 0.9768053820007481, + "time/step_s": 15.715222630002245 + }, + { + "step": 136.0, + "loss/total": 0.000720786596927992, + "loss/data": 0.000679591415826628, + "loss/mse": 0.000679591415826628, + "loss/smooth": 0.040567341319140846, + "loss/activation_l2": 0.06278397822231777, + "loss/activation_l2_penalty": 6.278397822231777e-07, + "loss/regularization": 4.119518110136402e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03130962465986041, + "target/error_rms": 0.04515278781514918, + "target/error_max": 0.2815601316461929, + "activation_inv/rms": 0.2505673127571068, + "activation_inv/min": -2.3266647339776307, + "activation_inv/max": 2.5552609527899044, + "grad/norm": 0.00020963713905133638, + "grad/abs_max": 1.981255450639413e-05, + "optimizer/steps": 136.0, + "optimizer/lr": 0.03, + "best/step": 136.0, + "best/loss": 0.000720786596927992, + "best/target_error_max": 0.2815601316461929, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2815601316461929, + "lowest/target_error_max_step": 136.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 8.993492084999161, + "time/backward_s": 7.407684001002053, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1377, + "forward/grad_norm": 0.0013140960322017348, + "forward/relative_grad_norm": 0.00048443248011486646, + "forward/grad_norm_first": 2.7126505470693094, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8057892827974816e-07, + "adjoint/relative_residual": 0.0004942113159769637, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8057892827974816e-07, + "adjoint/solver_0/relative_residual": 0.0004942113159769637, + "adjoint/residual_converged": true, + "time/series_s": 0.9756293730024481, + "time/step_s": 17.388923302001785 + }, + { + "step": 137.0, + "loss/total": 0.0008570365699417051, + "loss/data": 0.0008157752221953304, + "loss/mse": 0.0008157752221953304, + "loss/smooth": 0.04062944103208799, + "loss/activation_l2": 0.06319067142866944, + "loss/activation_l2_penalty": 6.319067142866944e-07, + "loss/regularization": 4.126134774637468e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.035671716212707115, + "target/error_rms": 0.049470452459887515, + "target/error_max": 0.28138774409095585, + "activation_inv/rms": 0.25137754758265396, + "activation_inv/min": -2.3446229062801596, + "activation_inv/max": 2.5654338194808153, + "grad/norm": 0.0003645950634525172, + "grad/abs_max": 3.18858814439211e-05, + "optimizer/steps": 137.0, + "optimizer/lr": 0.03, + "best/step": 137.0, + "best/loss": 0.0008570365699417051, + "best/target_error_max": 0.28138774409095585, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.28138774409095585, + "lowest/target_error_max_step": 137.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.16338710799755, + "time/backward_s": 7.506633899000008, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1415, + "forward/grad_norm": 0.0015642228220264934, + "forward/relative_grad_norm": 0.00048581124314326193, + "forward/grad_norm_first": 3.219816017237, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8690913056446145e-07, + "adjoint/relative_residual": 0.0004668902648065089, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8690913056446145e-07, + "adjoint/solver_0/relative_residual": 0.0004668902648065089, + "adjoint/residual_converged": true, + "time/series_s": 0.9870555480010808, + "time/step_s": 17.66942702900269 + }, + { + "step": 138.0, + "loss/total": 0.001234827256903528, + "loss/data": 0.0011935536373675196, + "loss/mse": 0.0011935536373675196, + "loss/smooth": 0.04064291732561366, + "loss/activation_l2": 0.06307022103946436, + "loss/activation_l2_penalty": 6.307022103946436e-07, + "loss/regularization": 4.1273619536008306e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.043705761065977615, + "target/error_rms": 0.05983862391551596, + "target/error_max": 0.2764568156703163, + "activation_inv/rms": 0.25113785266156985, + "activation_inv/min": -2.3746302241952546, + "activation_inv/max": 2.589519716129265, + "grad/norm": 0.0005839115325836879, + "grad/abs_max": 6.392109164849177e-05, + "optimizer/steps": 138.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.85478151999996, + "time/backward_s": 7.610921149003843, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1671, + "forward/grad_norm": 0.0021733199602116944, + "forward/relative_grad_norm": 0.00046743678275983904, + "forward/grad_norm_first": 4.649441465389147, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2086314458616724e-07, + "adjoint/relative_residual": 0.0004561123558427547, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2086314458616724e-07, + "adjoint/solver_0/relative_residual": 0.0004561123558427547, + "adjoint/residual_converged": true, + "time/series_s": 0.9817815040005371, + "time/step_s": 19.459300226000778 + }, + { + "step": 139.0, + "loss/total": 0.0015816566784722095, + "loss/data": 0.0015400181288870902, + "loss/mse": 0.0015400181288870902, + "loss/smooth": 0.04099991853449279, + "loss/activation_l2": 0.06386310506264303, + "loss/activation_l2_penalty": 6.386310506264304e-07, + "loss/regularization": 4.163854958511922e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05003610678238786, + "target/error_rms": 0.06797098194568967, + "target/error_max": 0.29576559267684344, + "activation_inv/rms": 0.2527115056000479, + "activation_inv/min": -2.3698422405045796, + "activation_inv/max": 2.5834246767812643, + "grad/norm": 0.0007528535279004081, + "grad/abs_max": 6.384706210309132e-05, + "optimizer/steps": 139.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.515469731995836, + "time/backward_s": 7.911051843999303, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1465, + "forward/grad_norm": 0.0030882604240297447, + "forward/relative_grad_norm": 0.0004965256416347251, + "forward/grad_norm_first": 6.2197400598732, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.535326908523871e-07, + "adjoint/relative_residual": 0.0004609359753137849, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.535326908523871e-07, + "adjoint/solver_0/relative_residual": 0.0004609359753137849, + "adjoint/residual_converged": true, + "time/series_s": 0.967993899997964, + "time/step_s": 18.40132426499622 + }, + { + "step": 140.0, + "loss/total": 0.0016566821354877792, + "loss/data": 0.0016145964467118056, + "loss/mse": 0.0016145964467118056, + "loss/smooth": 0.04144573127563258, + "loss/activation_l2": 0.06399575003410271, + "loss/activation_l2_penalty": 6.399575003410271e-07, + "loss/regularization": 4.208568877597361e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05136193449913113, + "target/error_rms": 0.06959733716267755, + "target/error_max": 0.29775973771024106, + "activation_inv/rms": 0.2529738129413847, + "activation_inv/min": -2.4158494580307517, + "activation_inv/max": 2.620836207219514, + "grad/norm": 0.0008529241745321222, + "grad/abs_max": 0.0001300522252073561, + "optimizer/steps": 140.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 9.456983094001771, + "time/backward_s": 8.203254580002977, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1449, + "forward/grad_norm": 0.0032836568453465734, + "forward/relative_grad_norm": 0.000475402023237892, + "forward/grad_norm_first": 6.9071158405723185, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.527825638498364e-07, + "adjoint/relative_residual": 0.0004488328904275051, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.527825638498364e-07, + "adjoint/solver_0/relative_residual": 0.0004488328904275051, + "adjoint/residual_converged": true, + "time/series_s": 0.9784041609964333, + "time/step_s": 18.645574861999194 + }, + { + "step": 141.0, + "loss/total": 0.001718802118834635, + "loss/data": 0.0016763692205873696, + "loss/mse": 0.0016763692205873696, + "loss/smooth": 0.04179036691268139, + "loss/activation_l2": 0.06425313345839842, + "loss/activation_l2_penalty": 6.425313345839843e-07, + "loss/regularization": 4.2432898247265376e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.05048524293822342, + "target/error_rms": 0.0709162016873585, + "target/error_max": 0.28420208394712565, + "activation_inv/rms": 0.25348201801784365, + "activation_inv/min": -2.3969544833504766, + "activation_inv/max": 2.6220800475834523, + "grad/norm": 0.0009331319554302073, + "grad/abs_max": 9.584864602441432e-05, + "optimizer/steps": 141.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 9.149674013999174, + "time/backward_s": 8.170021038000414, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1412, + "forward/grad_norm": 0.003397374213968553, + "forward/relative_grad_norm": 0.0004911819376517868, + "forward/grad_norm_first": 6.916732789911853, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.739817705588107e-07, + "adjoint/relative_residual": 0.00047742635027545256, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.739817705588107e-07, + "adjoint/solver_0/relative_residual": 0.00047742635027545256, + "adjoint/residual_converged": true, + "time/series_s": 0.9839426699982141, + "time/step_s": 18.310521396000695 + }, + { + "step": 142.0, + "loss/total": 0.0015031208254047644, + "loss/data": 0.0014603822863588475, + "loss/mse": 0.0014603822863588475, + "loss/smooth": 0.04209057564588147, + "loss/activation_l2": 0.06479634000353987, + "loss/activation_l2_penalty": 6.479634000353988e-07, + "loss/regularization": 4.273853904591687e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04635794635547679, + "target/error_rms": 0.06619023235400026, + "target/error_max": 0.32803788360303654, + "activation_inv/rms": 0.2545512522136551, + "activation_inv/min": -2.431521813623046, + "activation_inv/max": 2.6377514650795266, + "grad/norm": 0.0009004532349985711, + "grad/abs_max": 0.00016946925950474912, + "optimizer/steps": 142.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 9.741359806997934, + "time/backward_s": 8.263739645997703, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1496, + "forward/grad_norm": 0.0031391423107964473, + "forward/relative_grad_norm": 0.0004911543855648323, + "forward/grad_norm_first": 6.39135555551724, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.570050688817083e-07, + "adjoint/relative_residual": 0.00047981958079581344, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.570050688817083e-07, + "adjoint/solver_0/relative_residual": 0.00047981958079581344, + "adjoint/residual_converged": true, + "time/series_s": 0.9704171019984642, + "time/step_s": 18.982268870000553 + }, + { + "step": 143.0, + "loss/total": 0.0011419825431142744, + "loss/data": 0.0010991556159493673, + "loss/mse": 0.0010991556159493673, + "loss/smooth": 0.04217925781105657, + "loss/activation_l2": 0.0647669353850449, + "loss/activation_l2_penalty": 6.47669353850449e-07, + "loss/regularization": 4.282692716490702e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.039551883214905534, + "target/error_rms": 0.05742357397313495, + "target/error_max": 0.33945002935699586, + "activation_inv/rms": 0.2544934879030206, + "activation_inv/min": -2.4320733717513177, + "activation_inv/max": 2.6587021092391256, + "grad/norm": 0.0006442821899591797, + "grad/abs_max": 9.866995879008327e-05, + "optimizer/steps": 143.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 9.587993205001112, + "time/backward_s": 7.993614393002645, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1473, + "forward/grad_norm": 0.0027251528460116277, + "forward/relative_grad_norm": 0.0004866501381302102, + "forward/grad_norm_first": 5.599819320882375, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.2685443689957985e-07, + "adjoint/relative_residual": 0.0004881881601943263, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.2685443689957985e-07, + "adjoint/solver_0/relative_residual": 0.0004881881601943263, + "adjoint/residual_converged": true, + "time/series_s": 0.9918991790036671, + "time/step_s": 18.580673372998717 + }, + { + "step": 144.0, + "loss/total": 0.0008806273684644815, + "loss/data": 0.0008377070683720841, + "loss/mse": 0.0008377070683720841, + "loss/smooth": 0.04226914672768831, + "loss/activation_l2": 0.06511533647091197, + "loss/activation_l2_penalty": 6.511533647091198e-07, + "loss/regularization": 4.292030009239743e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034790303543914526, + "target/error_rms": 0.05013104033546733, + "target/error_max": 0.34048654447931703, + "activation_inv/rms": 0.255177068857905, + "activation_inv/min": -2.4575946165180445, + "activation_inv/max": 2.6738949069074214, + "grad/norm": 0.0004185506321132103, + "grad/abs_max": 7.936812371369313e-05, + "optimizer/steps": 144.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 6.0, + "stopped": 0.0, + "time/forward_s": 9.05092509399401, + "time/backward_s": 8.025878801003273, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1394, + "forward/grad_norm": 0.0017018827203611699, + "forward/relative_grad_norm": 0.0004485992295331277, + "forward/grad_norm_first": 3.7937709392242525, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8513131442184284e-07, + "adjoint/relative_residual": 0.00045635556506452195, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8513131442184284e-07, + "adjoint/solver_0/relative_residual": 0.00045635556506452195, + "adjoint/residual_converged": true, + "time/series_s": 0.9767183789954288, + "time/step_s": 18.06037796899909 + }, + { + "step": 145.0, + "loss/total": 0.0007238156493011257, + "loss/data": 0.0006809217604377195, + "loss/mse": 0.0006809217604377195, + "loss/smooth": 0.042241718188021714, + "loss/activation_l2": 0.06521706753844063, + "loss/activation_l2_penalty": 6.521706753844063e-07, + "loss/regularization": 4.289388886340612e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030828190890277676, + "target/error_rms": 0.04519696097430843, + "target/error_max": 0.3239767789431636, + "activation_inv/rms": 0.25537632532879906, + "activation_inv/min": -2.4601915463367114, + "activation_inv/max": 2.686473319702763, + "grad/norm": 0.0002013869176648833, + "grad/abs_max": 2.532459687217966e-05, + "optimizer/steps": 145.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006922414255546948, + "lowest/loss_step": 135.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 7.0, + "stopped": 0.0, + "time/forward_s": 9.451171538996277, + "time/backward_s": 6.6851299879999715, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1451, + "forward/grad_norm": 0.0013632096921715612, + "forward/relative_grad_norm": 0.00048070931666743263, + "forward/grad_norm_first": 2.8358295645737726, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.776276759680458e-07, + "adjoint/relative_residual": 0.00048565915880737555, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.776276759680458e-07, + "adjoint/solver_0/relative_residual": 0.00048565915880737555, + "adjoint/residual_converged": true, + "time/series_s": 1.002131022993126, + "time/step_s": 17.145290248001402 + }, + { + "step": 146.0, + "loss/total": 0.0006645464955657844, + "loss/data": 0.0006216690691932003, + "loss/mse": 0.0006216690691932003, + "loss/smooth": 0.04222337478391472, + "loss/activation_l2": 0.06540515886693937, + "loss/activation_l2_penalty": 6.540515886693938e-07, + "loss/regularization": 4.287742637258411e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029163260459480363, + "target/error_rms": 0.0431857292120858, + "target/error_max": 0.3270372368548276, + "activation_inv/rms": 0.2557443232350219, + "activation_inv/min": -2.4783772340712185, + "activation_inv/max": 2.7037839127420766, + "grad/norm": 8.86143686252382e-05, + "grad/abs_max": 1.0104730467663127e-05, + "optimizer/steps": 146.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006645464955657844, + "lowest/loss_step": 146.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 8.0, + "stopped": 0.0, + "time/forward_s": 9.245941022003535, + "time/backward_s": 7.050409477997164, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1413, + "forward/grad_norm": 0.0011060252568347766, + "forward/relative_grad_norm": 0.0004966089171434013, + "forward/grad_norm_first": 2.2271554510073357, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.577579927246436e-07, + "adjoint/relative_residual": 0.00045142052151057855, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.577579927246436e-07, + "adjoint/solver_0/relative_residual": 0.00045142052151057855, + "adjoint/residual_converged": true, + "time/series_s": 0.9717225969943684, + "time/step_s": 17.274995631996717 + }, + { + "step": 147.0, + "loss/total": 0.0006571571608820666, + "loss/data": 0.0006143186476105462, + "loss/mse": 0.0006143186476105462, + "loss/smooth": 0.04218224721868733, + "loss/activation_l2": 0.06562660528329622, + "loss/activation_l2_penalty": 6.562660528329623e-07, + "loss/regularization": 4.2838513271520296e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02871429329119798, + "target/error_rms": 0.04292966273838683, + "target/error_max": 0.3197107874182133, + "activation_inv/rms": 0.2561769023220014, + "activation_inv/min": -2.490057725102791, + "activation_inv/max": 2.714476913449878, + "grad/norm": 0.00010431273914038602, + "grad/abs_max": 1.0354652854847019e-05, + "optimizer/steps": 147.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 9.0, + "stopped": 0.0, + "time/forward_s": 8.236413108003035, + "time/backward_s": 6.751327623001998, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1269, + "forward/grad_norm": 0.0008842280089054938, + "forward/relative_grad_norm": 0.00047655519362863605, + "forward/grad_norm_first": 1.8554577113570268, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6525217003771042e-07, + "adjoint/relative_residual": 0.0004756854615890818, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6525217003771042e-07, + "adjoint/solver_0/relative_residual": 0.0004756854615890818, + "adjoint/residual_converged": true, + "time/series_s": 0.9585603500017896, + "time/step_s": 15.95317713500117 + }, + { + "step": 148.0, + "loss/total": 0.0006781689151707274, + "loss/data": 0.0006354042268404173, + "loss/mse": 0.0006354042268404173, + "loss/smooth": 0.042107812678878254, + "loss/activation_l2": 0.06568756514318097, + "loss/activation_l2_penalty": 6.568756514318098e-07, + "loss/regularization": 4.276468833031007e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030251061727687822, + "target/error_rms": 0.0436601956079133, + "target/error_max": 0.31460297786340724, + "activation_inv/rms": 0.2562958547132219, + "activation_inv/min": -2.5065042250162684, + "activation_inv/max": 2.735507411479411, + "grad/norm": 0.0001690498833005791, + "grad/abs_max": 1.3983894922607155e-05, + "optimizer/steps": 148.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 10.0, + "stopped": 0.0, + "time/forward_s": 9.586651151003025, + "time/backward_s": 6.93998199699854, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1474, + "forward/grad_norm": 0.0010347807920160032, + "forward/relative_grad_norm": 0.00046067300790649494, + "forward/grad_norm_first": 2.2462370797857507, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.69541628589367e-07, + "adjoint/relative_residual": 0.00047986696928079106, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.69541628589367e-07, + "adjoint/solver_0/relative_residual": 0.00047986696928079106, + "adjoint/residual_converged": true, + "time/series_s": 1.07807583000249, + "time/step_s": 17.612063333996048 + }, + { + "step": 149.0, + "loss/total": 0.0007765723134280625, + "loss/data": 0.000733762400120268, + "loss/mse": 0.000733762400120268, + "loss/smooth": 0.04214920392685524, + "loss/activation_l2": 0.06607093809392636, + "loss/activation_l2_penalty": 6.607093809392636e-07, + "loss/regularization": 4.28099133077945e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033169251536234685, + "target/error_rms": 0.04691787719367538, + "target/error_max": 0.30609123411880823, + "activation_inv/rms": 0.25704267757305665, + "activation_inv/min": -2.5140524917888345, + "activation_inv/max": 2.7375001783565147, + "grad/norm": 0.0002956909815230424, + "grad/abs_max": 2.5040876995601314e-05, + "optimizer/steps": 149.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 11.0, + "stopped": 0.0, + "time/forward_s": 10.404171889997087, + "time/backward_s": 6.995361002998834, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1596, + "forward/grad_norm": 0.0015014361233138187, + "forward/relative_grad_norm": 0.00047354345286125413, + "forward/grad_norm_first": 3.1706406544992016, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7081470985369586e-07, + "adjoint/relative_residual": 0.00044990114358605, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7081470985369586e-07, + "adjoint/solver_0/relative_residual": 0.00044990114358605, + "adjoint/residual_converged": true, + "time/series_s": 0.992661495001812, + "time/step_s": 18.399315889000718 + }, + { + "step": 150.0, + "loss/total": 0.000987286746819104, + "loss/data": 0.0009445152878200326, + "loss/mse": 0.0009445152878200326, + "loss/smooth": 0.04211127573125647, + "loss/activation_l2": 0.06601832678147615, + "loss/activation_l2_penalty": 6.601832678147615e-07, + "loss/regularization": 4.277145899907123e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03905028602789265, + "target/error_rms": 0.05323106107772132, + "target/error_max": 0.29908141137311756, + "activation_inv/rms": 0.25694031754762847, + "activation_inv/min": -2.540096463682138, + "activation_inv/max": 2.7716238504583735, + "grad/norm": 0.00047383274658606726, + "grad/abs_max": 4.0447840355427424e-05, + "optimizer/steps": 150.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 12.0, + "stopped": 0.0, + "time/forward_s": 10.640391059998365, + "time/backward_s": 7.3162750659976155, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1629, + "forward/grad_norm": 0.002267937424805475, + "forward/relative_grad_norm": 0.0004886610060362013, + "forward/grad_norm_first": 4.641126254787475, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.150692198118001e-07, + "adjoint/relative_residual": 0.0004992790233814466, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.150692198118001e-07, + "adjoint/solver_0/relative_residual": 0.0004992790233814466, + "adjoint/residual_converged": true, + "time/series_s": 0.9741094630007865, + "time/step_s": 18.937793141994916 + }, + { + "step": 151.0, + "loss/total": 0.0011091939598458788, + "loss/data": 0.0010662261358337253, + "loss/mse": 0.0010662261358337253, + "loss/smooth": 0.042302225465992216, + "loss/activation_l2": 0.0665598546161254, + "loss/activation_l2_penalty": 6.655985461612541e-07, + "loss/regularization": 4.296782401215347e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04146859240886878, + "target/error_rms": 0.056556859950859864, + "target/error_max": 0.2854190700325359, + "activation_inv/rms": 0.2579919661852388, + "activation_inv/min": -2.534175216802805, + "activation_inv/max": 2.7526395526461185, + "grad/norm": 0.0005326199507733444, + "grad/abs_max": 4.679966995403623e-05, + "optimizer/steps": 151.0, + "optimizer/lr": 0.03, + "best/step": 138.0, + "best/loss": 0.001234827256903528, + "best/target_error_max": 0.2764568156703163, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2764568156703163, + "lowest/target_error_max_step": 138.0, + "stagnation/no_improve_steps": 13.0, + "stopped": 0.0, + "time/forward_s": 11.061682084000495, + "time/backward_s": 7.559515011998883, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1693, + "forward/grad_norm": 0.00272466543434478, + "forward/relative_grad_norm": 0.00047910300362784085, + "forward/grad_norm_first": 5.687013885768193, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.1533117424269893e-07, + "adjoint/relative_residual": 0.00047049152300714195, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.1533117424269893e-07, + "adjoint/solver_0/relative_residual": 0.00047049152300714195, + "adjoint/residual_converged": true, + "time/series_s": 0.9756443750011385, + "time/step_s": 19.603860791001352 + }, + { + "step": 152.0, + "loss/total": 0.0009597208660046778, + "loss/data": 0.0009166330586723802, + "loss/mse": 0.0009166330586723802, + "loss/smooth": 0.04242250913488052, + "loss/activation_l2": 0.06652981974169266, + "loss/activation_l2_penalty": 6.652981974169266e-07, + "loss/regularization": 4.308780733229745e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03875981514894882, + "target/error_rms": 0.05243948108073859, + "target/error_max": 0.2743067219470016, + "activation_inv/rms": 0.2579337506835673, + "activation_inv/min": -2.566128760299979, + "activation_inv/max": 2.790250770483645, + "grad/norm": 0.00045485982552161017, + "grad/abs_max": 3.7413475721205446e-05, + "optimizer/steps": 152.0, + "optimizer/lr": 0.03, + "best/step": 152.0, + "best/loss": 0.0009597208660046778, + "best/target_error_max": 0.2743067219470016, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2743067219470016, + "lowest/target_error_max_step": 152.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.771112185000675, + "time/backward_s": 7.262682716005656, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1644, + "forward/grad_norm": 0.0025972727070476477, + "forward/relative_grad_norm": 0.0004697308039601078, + "forward/grad_norm_first": 5.529279078891796, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9727860205077932e-07, + "adjoint/relative_residual": 0.0004648916865819642, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9727860205077932e-07, + "adjoint/solver_0/relative_residual": 0.0004648916865819642, + "adjoint/residual_converged": true, + "time/series_s": 0.9747170569971786, + "time/step_s": 19.02069864999794 + }, + { + "step": 153.0, + "loss/total": 0.0007754318912787711, + "loss/data": 0.000732269001369965, + "loss/mse": 0.000732269001369965, + "loss/smooth": 0.04249341225935922, + "loss/activation_l2": 0.0669477649446812, + "loss/activation_l2_penalty": 6.69477649446812e-07, + "loss/regularization": 4.316288990880604e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033634213213397324, + "target/error_rms": 0.04687010778854572, + "target/error_max": 0.2736811907797801, + "activation_inv/rms": 0.2587426616247912, + "activation_inv/min": -2.561307570781084, + "activation_inv/max": 2.7783185961349783, + "grad/norm": 0.00030378141839319415, + "grad/abs_max": 2.337455477705711e-05, + "optimizer/steps": 153.0, + "optimizer/lr": 0.03, + "best/step": 153.0, + "best/loss": 0.0007754318912787711, + "best/target_error_max": 0.2736811907797801, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2736811907797801, + "lowest/target_error_max_step": 153.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.504567165997287, + "time/backward_s": 6.351671643998998, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1606, + "forward/grad_norm": 0.002158952466084402, + "forward/relative_grad_norm": 0.0004888649965529258, + "forward/grad_norm_first": 4.416254960587403, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.894521690232248e-07, + "adjoint/relative_residual": 0.000499498068516136, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.894521690232248e-07, + "adjoint/solver_0/relative_residual": 0.000499498068516136, + "adjoint/residual_converged": true, + "time/series_s": 0.9787085220013978, + "time/step_s": 17.8473390500003 + }, + { + "step": 154.0, + "loss/total": 0.0006933976897381179, + "loss/data": 0.0006502710642161092, + "loss/mse": 0.0006502710642161092, + "loss/smooth": 0.0424573662859406, + "loss/activation_l2": 0.0669259236067998, + "loss/activation_l2_penalty": 6.69259236067998e-07, + "loss/regularization": 4.31266255220086e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031835713011647566, + "target/error_rms": 0.044168010965497724, + "target/error_max": 0.2717044532551538, + "activation_inv/rms": 0.25870045150095855, + "activation_inv/min": -2.5842134489995394, + "activation_inv/max": 2.800782874055647, + "grad/norm": 0.00022328293847789386, + "grad/abs_max": 1.7886432719139456e-05, + "optimizer/steps": 154.0, + "optimizer/lr": 0.03, + "best/step": 154.0, + "best/loss": 0.0006933976897381179, + "best/target_error_max": 0.2717044532551538, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2717044532551538, + "lowest/target_error_max_step": 154.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.540182083001127, + "time/backward_s": 7.136229089999688, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1612, + "forward/grad_norm": 0.0016918408851082582, + "forward/relative_grad_norm": 0.0004818151355008996, + "forward/grad_norm_first": 3.5113900756758176, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7809793434986374e-07, + "adjoint/relative_residual": 0.0004982889128941462, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7809793434986374e-07, + "adjoint/solver_0/relative_residual": 0.0004982889128941462, + "adjoint/residual_converged": true, + "time/series_s": 0.9765942230005749, + "time/step_s": 18.665450013002555 + }, + { + "step": 155.0, + "loss/total": 0.0006818263574174601, + "loss/data": 0.0006386995175686633, + "loss/mse": 0.0006386995175686633, + "loss/smooth": 0.04245473928545668, + "loss/activation_l2": 0.06721005633400604, + "loss/activation_l2_penalty": 6.721005633400605e-07, + "loss/regularization": 4.312683984879674e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03131550039983558, + "target/error_rms": 0.043773262989020935, + "target/error_max": 0.2687094035838498, + "activation_inv/rms": 0.2592490237860232, + "activation_inv/min": -2.5885240509801224, + "activation_inv/max": 2.799377717144484, + "grad/norm": 0.0002222495858706153, + "grad/abs_max": 1.780543750245378e-05, + "optimizer/steps": 155.0, + "optimizer/lr": 0.03, + "best/step": 155.0, + "best/loss": 0.0006818263574174601, + "best/target_error_max": 0.2687094035838498, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2687094035838498, + "lowest/target_error_max_step": 155.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.95536660500511, + "time/backward_s": 7.315419454993389, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1522, + "forward/grad_norm": 0.0015412561076307888, + "forward/relative_grad_norm": 0.0004912067356685383, + "forward/grad_norm_first": 3.1376933492842283, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7531662722129755e-07, + "adjoint/relative_residual": 0.0004949306724142333, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7531662722129755e-07, + "adjoint/solver_0/relative_residual": 0.0004949306724142333, + "adjoint/residual_converged": true, + "time/series_s": 0.9678364259962109, + "time/step_s": 18.25057253900013 + }, + { + "step": 156.0, + "loss/total": 0.000744801813952494, + "loss/data": 0.0007017061379224429, + "loss/mse": 0.0007017061379224429, + "loss/smooth": 0.042422615467550474, + "loss/activation_l2": 0.06730605625005766, + "loss/activation_l2_penalty": 6.730605625005766e-07, + "loss/regularization": 4.309567603005105e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03427548057189543, + "target/error_rms": 0.04588156943443989, + "target/error_max": 0.26686800980188696, + "activation_inv/rms": 0.2594341077230549, + "activation_inv/min": -2.607714396207481, + "activation_inv/max": 2.8175003750797956, + "grad/norm": 0.000291129164017373, + "grad/abs_max": 2.2460606747271788e-05, + "optimizer/steps": 156.0, + "optimizer/lr": 0.03, + "best/step": 156.0, + "best/loss": 0.000744801813952494, + "best/target_error_max": 0.26686800980188696, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.26686800980188696, + "lowest/target_error_max_step": 156.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.237843563998467, + "time/backward_s": 7.394977414995083, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1566, + "forward/grad_norm": 0.0014079650581988283, + "forward/relative_grad_norm": 0.0004217884097125633, + "forward/grad_norm_first": 3.3380838016822607, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6254312344721696e-07, + "adjoint/relative_residual": 0.0004377846395934496, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6254312344721696e-07, + "adjoint/solver_0/relative_residual": 0.0004377846395934496, + "adjoint/residual_converged": true, + "time/series_s": 0.9735740949981846, + "time/step_s": 18.61862992499664 + }, + { + "step": 157.0, + "loss/total": 0.0008744631004697765, + "loss/data": 0.0008313143172471252, + "loss/mse": 0.0008313143172471252, + "loss/smooth": 0.04247337219384287, + "loss/activation_l2": 0.0675411028808497, + "loss/activation_l2_penalty": 6.754110288084971e-07, + "loss/regularization": 4.314878322265137e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03788965546735989, + "target/error_rms": 0.049939392785068745, + "target/error_max": 0.2682153150907647, + "activation_inv/rms": 0.25988671162806637, + "activation_inv/min": -2.6185842035098883, + "activation_inv/max": 2.820937469240423, + "grad/norm": 0.00039626870002334996, + "grad/abs_max": 4.603420838163208e-05, + "optimizer/steps": 157.0, + "optimizer/lr": 0.03, + "best/step": 156.0, + "best/loss": 0.000744801813952494, + "best/target_error_max": 0.26686800980188696, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.26686800980188696, + "lowest/target_error_max_step": 156.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.904254821005452, + "time/backward_s": 7.3895009879997815, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1515, + "forward/grad_norm": 0.0019306985288430258, + "forward/relative_grad_norm": 0.0004845922963858602, + "forward/grad_norm_first": 3.9841709066412663, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9511754978352852e-07, + "adjoint/relative_residual": 0.00048281778556532386, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9511754978352852e-07, + "adjoint/solver_0/relative_residual": 0.00048281778556532386, + "adjoint/residual_converged": true, + "time/series_s": 0.9743487820014707, + "time/step_s": 18.27506633000303 + }, + { + "step": 158.0, + "loss/total": 0.0009421103976149189, + "loss/data": 0.00089889171148793, + "loss/mse": 0.00089889171148793, + "loss/smooth": 0.04254167569979085, + "loss/activation_l2": 0.06770104271980311, + "loss/activation_l2_penalty": 6.770104271980312e-07, + "loss/regularization": 4.321868612698888e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03955803419293655, + "target/error_rms": 0.05192952083799531, + "target/error_max": 0.2603416680308742, + "activation_inv/rms": 0.26019424036631383, + "activation_inv/min": -2.6351134813162402, + "activation_inv/max": 2.8378946907125093, + "grad/norm": 0.00046905224643337427, + "grad/abs_max": 7.732510055620244e-05, + "optimizer/steps": 158.0, + "optimizer/lr": 0.03, + "best/step": 158.0, + "best/loss": 0.0009421103976149189, + "best/target_error_max": 0.2603416680308742, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2603416680308742, + "lowest/target_error_max_step": 158.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.781773972004885, + "time/backward_s": 7.384245216002455, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1495, + "forward/grad_norm": 0.0022753369677156734, + "forward/relative_grad_norm": 0.0004865925298669663, + "forward/grad_norm_first": 4.676062265768336, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0817796457151457e-07, + "adjoint/relative_residual": 0.0004953938677057023, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0817796457151457e-07, + "adjoint/solver_0/relative_residual": 0.0004953938677057023, + "adjoint/residual_converged": true, + "time/series_s": 0.9764470659938524, + "time/step_s": 18.154771622001135 + }, + { + "step": 159.0, + "loss/total": 0.0008414748782877749, + "loss/data": 0.000798163145552849, + "loss/mse": 0.000798163145552849, + "loss/smooth": 0.04263261258496906, + "loss/activation_l2": 0.06791201499567978, + "loss/activation_l2_penalty": 6.791201499567978e-07, + "loss/regularization": 4.3311732734925855e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03686180437919068, + "target/error_rms": 0.048933520583119165, + "target/error_max": 0.2725358131593703, + "activation_inv/rms": 0.26059933805687185, + "activation_inv/min": -2.6441682125083794, + "activation_inv/max": 2.8396902300843383, + "grad/norm": 0.0003473171476832363, + "grad/abs_max": 3.0553725671387927e-05, + "optimizer/steps": 159.0, + "optimizer/lr": 0.03, + "best/step": 158.0, + "best/loss": 0.0009421103976149189, + "best/target_error_max": 0.2603416680308742, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2603416680308742, + "lowest/target_error_max_step": 158.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.692066257994156, + "time/backward_s": 7.506002506001096, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1484, + "forward/grad_norm": 0.00207513761616972, + "forward/relative_grad_norm": 0.0004396157138660793, + "forward/grad_norm_first": 4.720344497971863, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9591730549265518e-07, + "adjoint/relative_residual": 0.0004947622092404947, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9591730549265518e-07, + "adjoint/solver_0/relative_residual": 0.0004947622092404947, + "adjoint/residual_converged": true, + "time/series_s": 0.9591027520000353, + "time/step_s": 18.164040926007146 + }, + { + "step": 160.0, + "loss/total": 0.0007225292238434535, + "loss/data": 0.0006791625031996057, + "loss/mse": 0.0006791625031996057, + "loss/smooth": 0.0426859600449101, + "loss/activation_l2": 0.06807605989377846, + "loss/activation_l2_penalty": 6.807605989377847e-07, + "loss/regularization": 4.3366720643847884e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03266079446351404, + "target/error_rms": 0.045138536857089386, + "target/error_max": 0.26857482414172656, + "activation_inv/rms": 0.2609138936388372, + "activation_inv/min": -2.66180965881365, + "activation_inv/max": 2.8531642763525813, + "grad/norm": 0.00026602654379756247, + "grad/abs_max": 1.9410553008397656e-05, + "optimizer/steps": 160.0, + "optimizer/lr": 0.03, + "best/step": 158.0, + "best/loss": 0.0009421103976149189, + "best/target_error_max": 0.2603416680308742, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2603416680308742, + "lowest/target_error_max_step": 158.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 9.28762990100222, + "time/backward_s": 7.594562920996395, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1428, + "forward/grad_norm": 0.0017655078182970644, + "forward/relative_grad_norm": 0.0004924815522111661, + "forward/grad_norm_first": 3.584921730306865, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.79231569680449e-07, + "adjoint/relative_residual": 0.0004906787095098603, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.79231569680449e-07, + "adjoint/solver_0/relative_residual": 0.0004906787095098603, + "adjoint/residual_converged": true, + "time/series_s": 0.974534314002085, + "time/step_s": 17.86376803899475 + }, + { + "step": 161.0, + "loss/total": 0.0007022221710879185, + "loss/data": 0.0006588612997977439, + "loss/mse": 0.0006588612997977439, + "loss/smooth": 0.042678344604855104, + "loss/activation_l2": 0.06825266853196023, + "loss/activation_l2_penalty": 6.825266853196023e-07, + "loss/regularization": 4.3360871290174705e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03185189741530245, + "target/error_rms": 0.04445878877559792, + "target/error_max": 0.26706535700221523, + "activation_inv/rms": 0.2612521167990036, + "activation_inv/min": -2.6720065760684095, + "activation_inv/max": 2.86189622058644, + "grad/norm": 0.0002849083467538782, + "grad/abs_max": 2.133255207395406e-05, + "optimizer/steps": 161.0, + "optimizer/lr": 0.03, + "best/step": 158.0, + "best/loss": 0.0009421103976149189, + "best/target_error_max": 0.2603416680308742, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2603416680308742, + "lowest/target_error_max_step": 158.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 9.277902567002457, + "time/backward_s": 7.558458690997213, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1426, + "forward/grad_norm": 0.0014200071696228713, + "forward/relative_grad_norm": 0.0004943854262986963, + "forward/grad_norm_first": 2.872267453864904, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7975654861712445e-07, + "adjoint/relative_residual": 0.000499640089912667, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7975654861712445e-07, + "adjoint/solver_0/relative_residual": 0.000499640089912667, + "adjoint/residual_converged": true, + "time/series_s": 0.9742002010025317, + "time/step_s": 17.817478040000424 + }, + { + "step": 162.0, + "loss/total": 0.000781013232346393, + "loss/data": 0.0007376210401083233, + "loss/mse": 0.0007376210401083233, + "loss/smooth": 0.04270808532593688, + "loss/activation_l2": 0.06841069121327795, + "loss/activation_l2_penalty": 6.841069121327795e-07, + "loss/regularization": 4.339219223806966e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0334828849221799, + "target/error_rms": 0.047041079072710164, + "target/error_max": 0.26383943497046186, + "activation_inv/rms": 0.26155437525164427, + "activation_inv/min": -2.696783547852354, + "activation_inv/max": 2.8765377737805164, + "grad/norm": 0.0003688970491776996, + "grad/abs_max": 3.153022808211158e-05, + "optimizer/steps": 162.0, + "optimizer/lr": 0.03, + "best/step": 158.0, + "best/loss": 0.0009421103976149189, + "best/target_error_max": 0.2603416680308742, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2603416680308742, + "lowest/target_error_max_step": 158.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 9.370360371998686, + "time/backward_s": 7.745498383002996, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1440, + "forward/grad_norm": 0.0014615882732884106, + "forward/relative_grad_norm": 0.00047781075921264263, + "forward/grad_norm_first": 3.058927085896683, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8449606130326723e-07, + "adjoint/relative_residual": 0.0004846631574695071, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8449606130326723e-07, + "adjoint/solver_0/relative_residual": 0.0004846631574695071, + "adjoint/residual_converged": true, + "time/series_s": 0.9794682860010653, + "time/step_s": 18.102536150996457 + }, + { + "step": 163.0, + "loss/total": 0.0008906867899001313, + "loss/data": 0.0008472674669832798, + "loss/mse": 0.0008472674669832798, + "loss/smooth": 0.04273279040500502, + "loss/activation_l2": 0.06865325118465399, + "loss/activation_l2_penalty": 6.865325118465399e-07, + "loss/regularization": 4.341932291685156e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.036762695001375, + "target/error_rms": 0.05041629102730425, + "target/error_max": 0.26187871852722155, + "activation_inv/rms": 0.26201765433774493, + "activation_inv/min": -2.6982341818236844, + "activation_inv/max": 2.8838774404934666, + "grad/norm": 0.00045438118720652005, + "grad/abs_max": 4.026056826732318e-05, + "optimizer/steps": 163.0, + "optimizer/lr": 0.03, + "best/step": 158.0, + "best/loss": 0.0009421103976149189, + "best/target_error_max": 0.2603416680308742, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2603416680308742, + "lowest/target_error_max_step": 158.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 9.445953333000944, + "time/backward_s": 8.195123027006048, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1454, + "forward/grad_norm": 0.0018981848226645665, + "forward/relative_grad_norm": 0.0004896993221345331, + "forward/grad_norm_first": 3.8762251382963644, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9088607103612339e-07, + "adjoint/relative_residual": 0.00046787897511762485, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9088607103612339e-07, + "adjoint/solver_0/relative_residual": 0.00046787897511762485, + "adjoint/residual_converged": true, + "time/series_s": 0.9699569149961462, + "time/step_s": 18.61796606700227 + }, + { + "step": 164.0, + "loss/total": 0.0009112280757741381, + "loss/data": 0.0008676907205546816, + "loss/mse": 0.0008676907205546816, + "loss/smooth": 0.04284984020022582, + "loss/activation_l2": 0.06875150192306309, + "loss/activation_l2_penalty": 6.875150192306309e-07, + "loss/regularization": 4.3537355219456456e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.037506353315417566, + "target/error_rms": 0.05102031126584828, + "target/error_max": 0.2594821767417658, + "activation_inv/rms": 0.26220507608180105, + "activation_inv/min": -2.7315727427367844, + "activation_inv/max": 2.9045748434683625, + "grad/norm": 0.00044934186508881365, + "grad/abs_max": 3.6465230980725185e-05, + "optimizer/steps": 164.0, + "optimizer/lr": 0.03, + "best/step": 164.0, + "best/loss": 0.0009112280757741381, + "best/target_error_max": 0.2594821767417658, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2594821767417658, + "lowest/target_error_max_step": 164.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.54552586900536, + "time/backward_s": 8.043440949004435, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1465, + "forward/grad_norm": 0.002219340245976336, + "forward/relative_grad_norm": 0.0004871006633892272, + "forward/grad_norm_first": 4.556225053224633, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9953608860811568e-07, + "adjoint/relative_residual": 0.0004832908073848707, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9953608860811568e-07, + "adjoint/solver_0/relative_residual": 0.0004832908073848707, + "adjoint/residual_converged": true, + "time/series_s": 0.9799008699992555, + "time/step_s": 18.58069085599709 + }, + { + "step": 165.0, + "loss/total": 0.0008416493943883282, + "loss/data": 0.0007979565480414073, + "loss/mse": 0.0007979565480414073, + "loss/smooth": 0.043001225178076405, + "loss/activation_l2": 0.06916211688444208, + "loss/activation_l2_penalty": 6.916211688444209e-07, + "loss/regularization": 4.3692846346920824e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03642114715933345, + "target/error_rms": 0.04892718716750659, + "target/error_max": 0.2594597582677906, + "activation_inv/rms": 0.2629869139034147, + "activation_inv/min": -2.7258474335422576, + "activation_inv/max": 2.9056292127535763, + "grad/norm": 0.00040151360774091515, + "grad/abs_max": 3.099522674217687e-05, + "optimizer/steps": 165.0, + "optimizer/lr": 0.03, + "best/step": 165.0, + "best/loss": 0.0008416493943883282, + "best/target_error_max": 0.2594597582677906, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2594597582677906, + "lowest/target_error_max_step": 165.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.728268733997538, + "time/backward_s": 8.023042270004225, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1483, + "forward/grad_norm": 0.00214413949652787, + "forward/relative_grad_norm": 0.0004816763805663214, + "forward/grad_norm_first": 4.451410912046259, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8570668928156658e-07, + "adjoint/relative_residual": 0.00046903740936489577, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8570668928156658e-07, + "adjoint/solver_0/relative_residual": 0.00046903740936489577, + "adjoint/residual_converged": true, + "time/series_s": 0.9796580000038375, + "time/step_s": 18.74319867599843 + }, + { + "step": 166.0, + "loss/total": 0.000772228419734198, + "loss/data": 0.0007285256009482324, + "loss/mse": 0.0007285256009482324, + "loss/smooth": 0.04301162114892849, + "loss/activation_l2": 0.06911976370371688, + "loss/activation_l2_penalty": 6.911976370371688e-07, + "loss/regularization": 4.370281878596566e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034987716648090895, + "target/error_rms": 0.04675015297135077, + "target/error_max": 0.25519044488724674, + "activation_inv/rms": 0.2629063782104133, + "activation_inv/min": -2.756484684459474, + "activation_inv/max": 2.9312327991383795, + "grad/norm": 0.00033738097358459985, + "grad/abs_max": 3.323413508907522e-05, + "optimizer/steps": 166.0, + "optimizer/lr": 0.03, + "best/step": 166.0, + "best/loss": 0.000772228419734198, + "best/target_error_max": 0.25519044488724674, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.25519044488724674, + "lowest/target_error_max_step": 166.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.296058467996772, + "time/backward_s": 8.053973784000846, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1423, + "forward/grad_norm": 0.0021020291644992177, + "forward/relative_grad_norm": 0.0004981436777791328, + "forward/grad_norm_first": 4.219724666326522, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.823288008781485e-07, + "adjoint/relative_residual": 0.000481950486653529, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.823288008781485e-07, + "adjoint/solver_0/relative_residual": 0.000481950486653529, + "adjoint/residual_converged": true, + "time/series_s": 0.9754509869962931, + "time/step_s": 18.336983263005095 + }, + { + "step": 167.0, + "loss/total": 0.0007092548808988381, + "loss/data": 0.0006654128349999058, + "loss/mse": 0.0006654128349999058, + "loss/smooth": 0.0431461697804555, + "loss/activation_l2": 0.06958761184768476, + "loss/activation_l2_penalty": 6.958761184768477e-07, + "loss/regularization": 4.3842045898932344e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033269477183564954, + "target/error_rms": 0.044679284965179526, + "target/error_max": 0.2559716993041543, + "activation_inv/rms": 0.26379463953553867, + "activation_inv/min": -2.7537663581458567, + "activation_inv/max": 2.928879703788041, + "grad/norm": 0.000269354698828372, + "grad/abs_max": 2.139468618218449e-05, + "optimizer/steps": 167.0, + "optimizer/lr": 0.03, + "best/step": 166.0, + "best/loss": 0.000772228419734198, + "best/target_error_max": 0.25519044488724674, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.25519044488724674, + "lowest/target_error_max_step": 166.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 9.154985147994012, + "time/backward_s": 7.786385282997799, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1396, + "forward/grad_norm": 0.0019399107560120687, + "forward/relative_grad_norm": 0.0004908112360736369, + "forward/grad_norm_first": 3.952457917489529, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7819530244565995e-07, + "adjoint/relative_residual": 0.0004928561958014537, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7819530244565995e-07, + "adjoint/solver_0/relative_residual": 0.0004928561958014537, + "adjoint/residual_converged": true, + "time/series_s": 1.0106544040027075, + "time/step_s": 17.959183503997338 + }, + { + "step": 168.0, + "loss/total": 0.0006578054925388208, + "loss/data": 0.000613992104542889, + "loss/mse": 0.000613992104542889, + "loss/smooth": 0.043117875491247744, + "loss/activation_l2": 0.06955125046840739, + "loss/activation_l2_penalty": 6.95512504684074e-07, + "loss/regularization": 4.381338799593182e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031559581061804294, + "target/error_rms": 0.04291825152110308, + "target/error_max": 0.2504746947827466, + "activation_inv/rms": 0.26372571067002054, + "activation_inv/min": -2.780333328138231, + "activation_inv/max": 2.953087130256385, + "grad/norm": 0.0002268878093135642, + "grad/abs_max": 1.789009992745437e-05, + "optimizer/steps": 168.0, + "optimizer/lr": 0.03, + "best/step": 168.0, + "best/loss": 0.0006578054925388208, + "best/target_error_max": 0.2504746947827466, + "lowest/loss": 0.0006571571608820666, + "lowest/loss_step": 147.0, + "lowest/target_error_max": 0.2504746947827466, + "lowest/target_error_max_step": 168.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 9.15573060099996, + "time/backward_s": 7.841583888999594, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1404, + "forward/grad_norm": 0.001777580799819647, + "forward/relative_grad_norm": 0.00048713463777408204, + "forward/grad_norm_first": 3.6490544132565543, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6480313933591214e-07, + "adjoint/relative_residual": 0.000474519040278824, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6480313933591214e-07, + "adjoint/solver_0/relative_residual": 0.000474519040278824, + "adjoint/residual_converged": true, + "time/series_s": 0.9800099179992685, + "time/step_s": 17.988982343005773 + }, + { + "step": 169.0, + "loss/total": 0.0006466527513436148, + "loss/data": 0.000602831005765165, + "loss/mse": 0.000602831005765165, + "loss/smooth": 0.043123398284815255, + "loss/activation_l2": 0.06983472936345506, + "loss/activation_l2_penalty": 6.983472936345506e-07, + "loss/regularization": 4.382174557844981e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03070057469022362, + "target/error_rms": 0.042526380251503834, + "target/error_max": 0.25216392178883623, + "activation_inv/rms": 0.2642626143885189, + "activation_inv/min": -2.783093924350273, + "activation_inv/max": 2.951960509547502, + "grad/norm": 0.00022880643267418748, + "grad/abs_max": 2.043576255840715e-05, + "optimizer/steps": 169.0, + "optimizer/lr": 0.03, + "best/step": 168.0, + "best/loss": 0.0006578054925388208, + "best/target_error_max": 0.2504746947827466, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.2504746947827466, + "lowest/target_error_max_step": 168.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 10.357043538999278, + "time/backward_s": 7.67613225900277, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1596, + "forward/grad_norm": 0.0015962839347167797, + "forward/relative_grad_norm": 0.0004927103971178199, + "forward/grad_norm_first": 3.23980160364886, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.707495372146104e-07, + "adjoint/relative_residual": 0.0004961709127011575, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.707495372146104e-07, + "adjoint/solver_0/relative_residual": 0.0004961709127011575, + "adjoint/residual_converged": true, + "time/series_s": 0.9743163499952061, + "time/step_s": 19.01433327599807 + }, + { + "step": 170.0, + "loss/total": 0.0006961281111234184, + "loss/data": 0.0006523298991314107, + "loss/mse": 0.0006523298991314107, + "loss/smooth": 0.04309870690825016, + "loss/activation_l2": 0.06995050837574579, + "loss/activation_l2_penalty": 6.99505083757458e-07, + "loss/regularization": 4.3798211992007624e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.032151250470595034, + "target/error_rms": 0.044237876275814055, + "target/error_max": 0.24786043675852, + "activation_inv/rms": 0.2644815841901772, + "activation_inv/min": -2.808412938907842, + "activation_inv/max": 2.9771381884511015, + "grad/norm": 0.000293056849683118, + "grad/abs_max": 2.698939937446906e-05, + "optimizer/steps": 170.0, + "optimizer/lr": 0.03, + "best/step": 170.0, + "best/loss": 0.0006961281111234184, + "best/target_error_max": 0.24786043675852, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24786043675852, + "lowest/target_error_max_step": 170.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.133578524997574, + "time/backward_s": 7.688537315996655, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1709, + "forward/grad_norm": 0.001687007038430626, + "forward/relative_grad_norm": 0.00048618735520087545, + "forward/grad_norm_first": 3.4698702473115826, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5368582116007674e-07, + "adjoint/relative_residual": 0.0004293087260298687, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5368582116007674e-07, + "adjoint/solver_0/relative_residual": 0.0004293087260298687, + "adjoint/residual_converged": true, + "time/series_s": 1.0037427959978231, + "time/step_s": 19.837931423004193 + }, + { + "step": 171.0, + "loss/total": 0.0008136148301750982, + "loss/data": 0.0007697864989619559, + "loss/mse": 0.0007697864989619559, + "loss/smooth": 0.04312660610285073, + "loss/activation_l2": 0.07017251102915845, + "loss/activation_l2_penalty": 7.017251102915845e-07, + "loss/regularization": 4.382833121314232e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034681504471995195, + "target/error_rms": 0.048055795663851694, + "target/error_max": 0.24934208281884251, + "activation_inv/rms": 0.26490094569321276, + "activation_inv/min": -2.8066918121711635, + "activation_inv/max": 2.968648333768373, + "grad/norm": 0.000394021369812099, + "grad/abs_max": 3.281492863593627e-05, + "optimizer/steps": 171.0, + "optimizer/lr": 0.03, + "best/step": 170.0, + "best/loss": 0.0006961281111234184, + "best/target_error_max": 0.24786043675852, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24786043675852, + "lowest/target_error_max_step": 170.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.14380249500391, + "time/backward_s": 7.762336088999291, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1709, + "forward/grad_norm": 0.00196128764772696, + "forward/relative_grad_norm": 0.00048106511597966454, + "forward/grad_norm_first": 4.0769691723185915, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7515500611664404e-07, + "adjoint/relative_residual": 0.0004504089023589316, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7515500611664404e-07, + "adjoint/solver_0/relative_residual": 0.0004504089023589316, + "adjoint/residual_converged": true, + "time/series_s": 0.9900004890005221, + "time/step_s": 19.903049157001078 + }, + { + "step": 172.0, + "loss/total": 0.0009316655511515157, + "loss/data": 0.0008877376351023415, + "loss/mse": 0.0008877376351023415, + "loss/smooth": 0.043224376618717135, + "loss/activation_l2": 0.07035394304570816, + "loss/activation_l2_penalty": 7.035394304570816e-07, + "loss/regularization": 4.3927916049174214e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0369825261812225, + "target/error_rms": 0.05160632621401202, + "target/error_max": 0.24523680839963324, + "activation_inv/rms": 0.26524317718974066, + "activation_inv/min": -2.8391359609989992, + "activation_inv/max": 3.001501031586037, + "grad/norm": 0.0004991017753246781, + "grad/abs_max": 6.294478377103756e-05, + "optimizer/steps": 172.0, + "optimizer/lr": 0.03, + "best/step": 172.0, + "best/loss": 0.0009316655511515157, + "best/target_error_max": 0.24523680839963324, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24523680839963324, + "lowest/target_error_max_step": 172.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.546918806998292, + "time/backward_s": 7.942341078996833, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1768, + "forward/grad_norm": 0.0023204421551678463, + "forward/relative_grad_norm": 0.00047191805612962497, + "forward/grad_norm_first": 4.917044654317008, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.967192054293666e-07, + "adjoint/relative_residual": 0.000471057585733207, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.967192054293666e-07, + "adjoint/solver_0/relative_residual": 0.000471057585733207, + "adjoint/residual_converged": true, + "time/series_s": 0.9761221660010051, + "time/step_s": 20.47761385299964 + }, + { + "step": 173.0, + "loss/total": 0.0009323318314508538, + "loss/data": 0.0008883290549680295, + "loss/mse": 0.0008883290549680295, + "loss/smooth": 0.04329727701406154, + "loss/activation_l2": 0.07054994687628424, + "loss/activation_l2_penalty": 7.054994687628425e-07, + "loss/regularization": 4.4002776482824385e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.037458784567835274, + "target/error_rms": 0.051623513682275524, + "target/error_max": 0.250052261829945, + "activation_inv/rms": 0.265612399703561, + "activation_inv/min": -2.830103186271554, + "activation_inv/max": 2.9871091027418686, + "grad/norm": 0.0005148054866371857, + "grad/abs_max": 8.135681607943046e-05, + "optimizer/steps": 173.0, + "optimizer/lr": 0.03, + "best/step": 172.0, + "best/loss": 0.0009316655511515157, + "best/target_error_max": 0.24523680839963324, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24523680839963324, + "lowest/target_error_max_step": 172.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.393812324000464, + "time/backward_s": 7.95065016400622, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1738, + "forward/grad_norm": 0.0024804271039733355, + "forward/relative_grad_norm": 0.00048114400138140505, + "forward/grad_norm_first": 5.155269725595289, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.064196022905859e-07, + "adjoint/relative_residual": 0.000494121282252316, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.064196022905859e-07, + "adjoint/solver_0/relative_residual": 0.000494121282252316, + "adjoint/residual_converged": true, + "time/series_s": 0.9966095490017324, + "time/step_s": 20.34803912800271 + }, + { + "step": 174.0, + "loss/total": 0.0009485948816743409, + "loss/data": 0.0009044110790610158, + "loss/mse": 0.0009044110790610158, + "loss/smooth": 0.04347564612379494, + "loss/activation_l2": 0.07081564895302207, + "loss/activation_l2_penalty": 7.081564895302208e-07, + "loss/regularization": 4.418380261332516e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03770900706690669, + "target/error_rms": 0.052088705466569685, + "target/error_max": 0.24899329299728437, + "activation_inv/rms": 0.2661120984717194, + "activation_inv/min": -2.859879339287604, + "activation_inv/max": 3.014983177372998, + "grad/norm": 0.0005002915491840022, + "grad/abs_max": 4.7069086628905376e-05, + "optimizer/steps": 174.0, + "optimizer/lr": 0.03, + "best/step": 172.0, + "best/loss": 0.0009316655511515157, + "best/target_error_max": 0.24523680839963324, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24523680839963324, + "lowest/target_error_max_step": 172.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 11.278963090997422, + "time/backward_s": 8.104221124995092, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1724, + "forward/grad_norm": 0.0024198522743655703, + "forward/relative_grad_norm": 0.00047137609963121666, + "forward/grad_norm_first": 5.133591364217985, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0414306898892278e-07, + "adjoint/relative_residual": 0.00048430757164016674, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0414306898892278e-07, + "adjoint/solver_0/relative_residual": 0.00048430757164016674, + "adjoint/residual_converged": true, + "time/series_s": 0.9766605640033958, + "time/step_s": 20.3668603880069 + }, + { + "step": 175.0, + "loss/total": 0.0009300186317242177, + "loss/data": 0.0008857978184793519, + "loss/mse": 0.0008857978184793519, + "loss/smooth": 0.04351055220575855, + "loss/activation_l2": 0.07102610391071648, + "loss/activation_l2_penalty": 7.102610391071648e-07, + "loss/regularization": 4.4220813244865716e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.037881078152084864, + "target/error_rms": 0.05154991227381533, + "target/error_max": 0.24922487778438768, + "activation_inv/rms": 0.26650723050363284, + "activation_inv/min": -2.8627656248673152, + "activation_inv/max": 3.0110893170197515, + "grad/norm": 0.00046938264626221596, + "grad/abs_max": 4.424603236023565e-05, + "optimizer/steps": 175.0, + "optimizer/lr": 0.03, + "best/step": 172.0, + "best/loss": 0.0009316655511515157, + "best/target_error_max": 0.24523680839963324, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24523680839963324, + "lowest/target_error_max_step": 172.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 10.790484161996574, + "time/backward_s": 8.331620609998936, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1656, + "forward/grad_norm": 0.0024818618387235127, + "forward/relative_grad_norm": 0.0004942425038068002, + "forward/grad_norm_first": 5.021546750041705, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.794638680658265e-07, + "adjoint/relative_residual": 0.00043020878756476716, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.794638680658265e-07, + "adjoint/solver_0/relative_residual": 0.00043020878756476716, + "adjoint/residual_converged": true, + "time/series_s": 0.9922747400050866, + "time/step_s": 20.121265551999386 + }, + { + "step": 176.0, + "loss/total": 0.0009148350173702273, + "loss/data": 0.0008704859668429427, + "loss/mse": 0.0008704859668429427, + "loss/smooth": 0.043637142652945674, + "loss/activation_l2": 0.0711907874338982, + "loss/activation_l2_penalty": 7.11907874338982e-07, + "loss/regularization": 4.434905052728465e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03781747865558871, + "target/error_rms": 0.051102425583614206, + "target/error_max": 0.24973366371432493, + "activation_inv/rms": 0.26681601794850734, + "activation_inv/min": -2.880704721195392, + "activation_inv/max": 3.0317274753265746, + "grad/norm": 0.0004695200701942766, + "grad/abs_max": 4.564360015189936e-05, + "optimizer/steps": 176.0, + "optimizer/lr": 0.03, + "best/step": 172.0, + "best/loss": 0.0009316655511515157, + "best/target_error_max": 0.24523680839963324, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24523680839963324, + "lowest/target_error_max_step": 172.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 10.441241323998838, + "time/backward_s": 8.076741424003558, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1593, + "forward/grad_norm": 0.0023561842593713346, + "forward/relative_grad_norm": 0.00048081645562328185, + "forward/grad_norm_first": 4.900381906266115, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0592756700169238e-07, + "adjoint/relative_residual": 0.0004979699747042923, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0592756700169238e-07, + "adjoint/solver_0/relative_residual": 0.0004979699747042923, + "adjoint/residual_converged": true, + "time/series_s": 0.9761228910065256, + "time/step_s": 19.501097770000342 + }, + { + "step": 177.0, + "loss/total": 0.0009046617344901524, + "loss/data": 0.0008601892038232169, + "loss/mse": 0.0008601892038232169, + "loss/smooth": 0.043757213291688864, + "loss/activation_l2": 0.07153173752465497, + "loss/activation_l2_penalty": 7.153173752465498e-07, + "loss/regularization": 4.447253066693541e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03754213003410084, + "target/error_rms": 0.050799287509468584, + "target/error_max": 0.24514907633070276, + "activation_inv/rms": 0.2674541783645471, + "activation_inv/min": -2.8988470904835015, + "activation_inv/max": 3.040308445147866, + "grad/norm": 0.00046153453780760085, + "grad/abs_max": 4.226157154077844e-05, + "optimizer/steps": 177.0, + "optimizer/lr": 0.03, + "best/step": 177.0, + "best/loss": 0.0009046617344901524, + "best/target_error_max": 0.24514907633070276, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24514907633070276, + "lowest/target_error_max_step": 177.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.237582830995962, + "time/backward_s": 7.7903672980028205, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1563, + "forward/grad_norm": 0.0021142532023187832, + "forward/relative_grad_norm": 0.0004464048353636094, + "forward/grad_norm_first": 4.736178990078958, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8730035849469008e-07, + "adjoint/relative_residual": 0.00045562880360832693, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8730035849469008e-07, + "adjoint/solver_0/relative_residual": 0.00045562880360832693, + "adjoint/residual_converged": true, + "time/series_s": 0.9802035950051504, + "time/step_s": 19.01991479800199 + }, + { + "step": 178.0, + "loss/total": 0.0009101661133825296, + "loss/data": 0.0008656320728260155, + "loss/mse": 0.0008656320728260155, + "loss/smooth": 0.04381818663086337, + "loss/activation_l2": 0.07158539256507682, + "loss/activation_l2_penalty": 7.158539256507683e-07, + "loss/regularization": 4.453404055651414e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03756005786658804, + "target/error_rms": 0.050959750965620366, + "target/error_max": 0.24589727000024525, + "activation_inv/rms": 0.26755446653920173, + "activation_inv/min": -2.89774667589927, + "activation_inv/max": 3.046554686235379, + "grad/norm": 0.0004779393340849128, + "grad/abs_max": 3.4746398984257914e-05, + "optimizer/steps": 178.0, + "optimizer/lr": 0.03, + "best/step": 177.0, + "best/loss": 0.0009046617344901524, + "best/target_error_max": 0.24514907633070276, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24514907633070276, + "lowest/target_error_max_step": 177.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 10.220455219001451, + "time/backward_s": 7.886601553000219, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1564, + "forward/grad_norm": 0.002226983013758968, + "forward/relative_grad_norm": 0.0004842572208713333, + "forward/grad_norm_first": 4.5987605714002875, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.757784502145859e-07, + "adjoint/relative_residual": 0.0004262540493721319, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.757784502145859e-07, + "adjoint/solver_0/relative_residual": 0.0004262540493721319, + "adjoint/residual_converged": true, + "time/series_s": 0.9940854879969265, + "time/step_s": 19.108178134993068 + }, + { + "step": 179.0, + "loss/total": 0.0009151155400027162, + "loss/data": 0.0008704395712300258, + "loss/mse": 0.0008704395712300258, + "loss/smooth": 0.04395612251675316, + "loss/activation_l2": 0.07198462559373034, + "loss/activation_l2_penalty": 7.198462559373034e-07, + "loss/regularization": 4.467596877269047e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03692093938463521, + "target/error_rms": 0.05110106372366507, + "target/error_max": 0.24401639762877092, + "activation_inv/rms": 0.26829950725584706, + "activation_inv/min": -2.929573141548212, + "activation_inv/max": 3.0646739821469136, + "grad/norm": 0.000500780547329495, + "grad/abs_max": 5.0768427929895274e-05, + "optimizer/steps": 179.0, + "optimizer/lr": 0.03, + "best/step": 179.0, + "best/loss": 0.0009151155400027162, + "best/target_error_max": 0.24401639762877092, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24401639762877092, + "lowest/target_error_max_step": 179.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.85916272799659, + "time/backward_s": 8.392447931000788, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1669, + "forward/grad_norm": 0.0021790603866799923, + "forward/relative_grad_norm": 0.0004932189199509661, + "forward/grad_norm_first": 4.41803892457456, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.949666847615211e-07, + "adjoint/relative_residual": 0.00047147715047281453, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.949666847615211e-07, + "adjoint/solver_0/relative_residual": 0.00047147715047281453, + "adjoint/residual_converged": true, + "time/series_s": 0.9916046430007555, + "time/step_s": 20.255444155998703 + }, + { + "step": 180.0, + "loss/total": 0.0008195487951781525, + "loss/data": 0.0007748441746384346, + "loss/mse": 0.0007748441746384346, + "loss/smooth": 0.043985178919225966, + "loss/activation_l2": 0.07194416204920016, + "loss/activation_l2_penalty": 7.194416204920017e-07, + "loss/regularization": 4.470462053971797e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03470122394419725, + "target/error_rms": 0.04821340606009187, + "target/error_max": 0.24395910297652926, + "activation_inv/rms": 0.26822408924106755, + "activation_inv/min": -2.923679906944885, + "activation_inv/max": 3.0696713420176285, + "grad/norm": 0.000418123734170307, + "grad/abs_max": 2.9497150518384956e-05, + "optimizer/steps": 180.0, + "optimizer/lr": 0.03, + "best/step": 180.0, + "best/loss": 0.0008195487951781525, + "best/target_error_max": 0.24395910297652926, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24395910297652926, + "lowest/target_error_max_step": 180.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.945176293003897, + "time/backward_s": 7.823975433995656, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1668, + "forward/grad_norm": 0.0020642992474239337, + "forward/relative_grad_norm": 0.0004827022897753429, + "forward/grad_norm_first": 4.276547452022013, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9382935297189523e-07, + "adjoint/relative_residual": 0.0004968003763462895, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9382935297189523e-07, + "adjoint/solver_0/relative_residual": 0.0004968003763462895, + "adjoint/residual_converged": true, + "time/series_s": 1.0046438830031548, + "time/step_s": 19.786167276004562 + }, + { + "step": 181.0, + "loss/total": 0.0007421481325722768, + "loss/data": 0.0006973279076519828, + "loss/mse": 0.0006973279076519828, + "loss/smooth": 0.04409630651585574, + "loss/activation_l2": 0.07239184044381947, + "loss/activation_l2_penalty": 7.239184044381947e-07, + "loss/regularization": 4.482022492029393e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033055343692729965, + "target/error_rms": 0.04573820856741055, + "target/error_max": 0.24401131144523153, + "activation_inv/rms": 0.2690573181383838, + "activation_inv/min": -2.9497814854036455, + "activation_inv/max": 3.082917010708972, + "grad/norm": 0.0003666634368397529, + "grad/abs_max": 2.3143829642048016e-05, + "optimizer/steps": 181.0, + "optimizer/lr": 0.03, + "best/step": 180.0, + "best/loss": 0.0008195487951781525, + "best/target_error_max": 0.24395910297652926, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24395910297652926, + "lowest/target_error_max_step": 180.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.400686574001156, + "time/backward_s": 8.39034700099728, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1738, + "forward/grad_norm": 0.0018796774376481906, + "forward/relative_grad_norm": 0.00048616179417458095, + "forward/grad_norm_first": 3.8663618987986488, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7371039271457693e-07, + "adjoint/relative_residual": 0.0004693284001962673, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7371039271457693e-07, + "adjoint/solver_0/relative_residual": 0.0004693284001962673, + "adjoint/residual_converged": true, + "time/series_s": 0.9692406169997412, + "time/step_s": 20.767725106001308 + }, + { + "step": 182.0, + "loss/total": 0.0006822111545121195, + "loss/data": 0.0006374611347799589, + "loss/mse": 0.0006374611347799589, + "loss/smooth": 0.044027439639683204, + "loss/activation_l2": 0.07225800924773926, + "loss/activation_l2_penalty": 7.225800924773926e-07, + "loss/regularization": 4.47500197321606e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031489641663920626, + "target/error_rms": 0.04373080612497186, + "target/error_max": 0.24204188870334017, + "activation_inv/rms": 0.26880849921038447, + "activation_inv/min": -2.952618051496583, + "activation_inv/max": 3.0976884612580444, + "grad/norm": 0.00030004540413715997, + "grad/abs_max": 3.312554631362775e-05, + "optimizer/steps": 182.0, + "optimizer/lr": 0.03, + "best/step": 182.0, + "best/loss": 0.0006822111545121195, + "best/target_error_max": 0.24204188870334017, + "lowest/loss": 0.0006466527513436148, + "lowest/loss_step": 169.0, + "lowest/target_error_max": 0.24204188870334017, + "lowest/target_error_max_step": 182.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.624456345001818, + "time/backward_s": 8.122018330999708, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1776, + "forward/grad_norm": 0.0017061055785659144, + "forward/relative_grad_norm": 0.00047708269142419186, + "forward/grad_norm_first": 3.5761213081799963, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6276795784371376e-07, + "adjoint/relative_residual": 0.00045995105061737076, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6276795784371376e-07, + "adjoint/solver_0/relative_residual": 0.00045995105061737076, + "adjoint/residual_converged": true, + "time/series_s": 0.9637947259980137, + "time/step_s": 20.722085601002618 + }, + { + "step": 183.0, + "loss/total": 0.000631932150936002, + "loss/data": 0.000587083877841377, + "loss/mse": 0.000587083877841377, + "loss/smooth": 0.044121088527098014, + "loss/activation_l2": 0.0727184567526882, + "loss/activation_l2_penalty": 7.27184567526882e-07, + "loss/regularization": 4.484827309462489e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03066422966019067, + "target/error_rms": 0.04196726859737397, + "target/error_max": 0.24203828506118552, + "activation_inv/rms": 0.2696635992355813, + "activation_inv/min": -2.971251743823246, + "activation_inv/max": 3.1017012291207773, + "grad/norm": 0.0002446995122124865, + "grad/abs_max": 2.286374802603841e-05, + "optimizer/steps": 183.0, + "optimizer/lr": 0.03, + "best/step": 183.0, + "best/loss": 0.000631932150936002, + "best/target_error_max": 0.24203828506118552, + "lowest/loss": 0.000631932150936002, + "lowest/loss_step": 183.0, + "lowest/target_error_max": 0.24203828506118552, + "lowest/target_error_max_step": 183.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.588811784000427, + "time/backward_s": 8.064391284999147, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1774, + "forward/grad_norm": 0.001693667806277449, + "forward/relative_grad_norm": 0.0004826632703881171, + "forward/grad_norm_first": 3.5090049526982736, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.666535688370674e-07, + "adjoint/relative_residual": 0.0004907203829758238, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.666535688370674e-07, + "adjoint/solver_0/relative_residual": 0.0004907203829758238, + "adjoint/residual_converged": true, + "time/series_s": 0.9755448249998153, + "time/step_s": 20.64110890700249 + }, + { + "step": 184.0, + "loss/total": 0.0006183641224353278, + "loss/data": 0.0005736069620916948, + "loss/mse": 0.0005736069620916948, + "loss/smooth": 0.04403123624192155, + "loss/activation_l2": 0.07259241017114336, + "loss/activation_l2_penalty": 7.259241017114336e-07, + "loss/regularization": 4.475716034363298e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030779294792165336, + "target/error_rms": 0.04148277818896758, + "target/error_max": 0.23985678899118443, + "activation_inv/rms": 0.2694297870895929, + "activation_inv/min": -2.987026046002738, + "activation_inv/max": 3.1277900409517865, + "grad/norm": 0.00021535226651083787, + "grad/abs_max": 2.2986918771037857e-05, + "optimizer/steps": 184.0, + "optimizer/lr": 0.03, + "best/step": 184.0, + "best/loss": 0.0006183641224353278, + "best/target_error_max": 0.23985678899118443, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23985678899118443, + "lowest/target_error_max_step": 184.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.701298642001348, + "time/backward_s": 7.939654159003112, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1796, + "forward/grad_norm": 0.0018042946115644414, + "forward/relative_grad_norm": 0.0004957625972135642, + "forward/grad_norm_first": 3.63943270772238, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.52951441412049e-07, + "adjoint/relative_residual": 0.0004556337893709311, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.52951441412049e-07, + "adjoint/solver_0/relative_residual": 0.0004556337893709311, + "adjoint/residual_converged": true, + "time/series_s": 0.9734738080005627, + "time/step_s": 20.626504416002717 + }, + { + "step": 185.0, + "loss/total": 0.0006412545199506321, + "loss/data": 0.0005964277300973015, + "loss/mse": 0.0005964277300973015, + "loss/smooth": 0.04409633994309048, + "loss/activation_l2": 0.07304499102401224, + "loss/activation_l2_penalty": 7.304499102401224e-07, + "loss/regularization": 4.48267898533306e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03155395411000382, + "target/error_rms": 0.04229991950691992, + "target/error_max": 0.24002704823051807, + "activation_inv/rms": 0.270268368522867, + "activation_inv/min": -2.9934099310721654, + "activation_inv/max": 3.120676306067351, + "grad/norm": 0.0002409211600537348, + "grad/abs_max": 2.7076213986316418e-05, + "optimizer/steps": 185.0, + "optimizer/lr": 0.03, + "best/step": 184.0, + "best/loss": 0.0006183641224353278, + "best/target_error_max": 0.23985678899118443, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23985678899118443, + "lowest/target_error_max_step": 184.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.720579392000218, + "time/backward_s": 7.96213470800285, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1797, + "forward/grad_norm": 0.0018549948751330008, + "forward/relative_grad_norm": 0.0004919382664456167, + "forward/grad_norm_first": 3.7707879253545906, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7064005621284542e-07, + "adjoint/relative_residual": 0.0004985074214760262, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7064005621284542e-07, + "adjoint/solver_0/relative_residual": 0.0004985074214760262, + "adjoint/residual_converged": true, + "time/series_s": 0.9839260080043459, + "time/step_s": 20.673748902001535 + }, + { + "step": 186.0, + "loss/total": 0.0007088642620815032, + "loss/data": 0.0006641346556142928, + "loss/mse": 0.0006641346556142928, + "loss/smooth": 0.04400108906782089, + "loss/activation_l2": 0.07285173993895243, + "loss/activation_l2_penalty": 7.285173993895243e-07, + "loss/regularization": 4.472960646721041e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.033954698161585424, + "target/error_rms": 0.04463635252619638, + "target/error_max": 0.23668953321052125, + "activation_inv/rms": 0.2699106147207857, + "activation_inv/min": -3.019961635725027, + "activation_inv/max": 3.1537222160442644, + "grad/norm": 0.00031239668091438563, + "grad/abs_max": 3.38411575617123e-05, + "optimizer/steps": 186.0, + "optimizer/lr": 0.03, + "best/step": 186.0, + "best/loss": 0.0007088642620815032, + "best/target_error_max": 0.23668953321052125, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23668953321052125, + "lowest/target_error_max_step": 186.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.576269857003354, + "time/backward_s": 7.6284966910025105, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1779, + "forward/grad_norm": 0.0020553334528439567, + "forward/relative_grad_norm": 0.000482960469906815, + "forward/grad_norm_first": 4.255697061998726, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7111598144126427e-07, + "adjoint/relative_residual": 0.00047373127521467534, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7111598144126427e-07, + "adjoint/solver_0/relative_residual": 0.00047373127521467534, + "adjoint/residual_converged": true, + "time/series_s": 0.9874805500003276, + "time/step_s": 20.20428105299652 + }, + { + "step": 187.0, + "loss/total": 0.0008230368052833724, + "loss/data": 0.0007781674021662234, + "loss/mse": 0.0007781674021662234, + "loss/smooth": 0.04413482071437159, + "loss/activation_l2": 0.07345824027774411, + "loss/activation_l2_penalty": 7.345824027774412e-07, + "loss/regularization": 4.486940311714903e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03622497471957519, + "target/error_rms": 0.04831668662583011, + "target/error_max": 0.23889586681597422, + "activation_inv/rms": 0.271031806763974, + "activation_inv/min": -3.014464664028518, + "activation_inv/max": 3.135888555103676, + "grad/norm": 0.00038343853719798867, + "grad/abs_max": 3.996444768121734e-05, + "optimizer/steps": 187.0, + "optimizer/lr": 0.03, + "best/step": 186.0, + "best/loss": 0.0007088642620815032, + "best/target_error_max": 0.23668953321052125, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23668953321052125, + "lowest/target_error_max_step": 186.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 10.18590241199854, + "time/backward_s": 7.793567836000875, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1567, + "forward/grad_norm": 0.002485053079086486, + "forward/relative_grad_norm": 0.0004999109945556599, + "forward/grad_norm_first": 4.970991048707173, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6668754174153043e-07, + "adjoint/relative_residual": 0.00042632046513305544, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6668754174153043e-07, + "adjoint/solver_0/relative_residual": 0.00042632046513305544, + "adjoint/residual_converged": true, + "time/series_s": 0.9779839390030247, + "time/step_s": 18.964385838000453 + }, + { + "step": 188.0, + "loss/total": 0.000857721589161815, + "loss/data": 0.0008127887100039363, + "loss/mse": 0.0008127887100039363, + "loss/smooth": 0.044200446443241025, + "loss/activation_l2": 0.07324327146376727, + "loss/activation_l2_penalty": 7.324327146376728e-07, + "loss/regularization": 4.49328791578787e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03715068948389575, + "target/error_rms": 0.04937981500584838, + "target/error_max": 0.23437529307430274, + "activation_inv/rms": 0.2706349413209005, + "activation_inv/min": -3.0483392401404994, + "activation_inv/max": 3.170967877022005, + "grad/norm": 0.0004088025484434664, + "grad/abs_max": 3.461620611335265e-05, + "optimizer/steps": 188.0, + "optimizer/lr": 0.03, + "best/step": 188.0, + "best/loss": 0.000857721589161815, + "best/target_error_max": 0.23437529307430274, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23437529307430274, + "lowest/target_error_max_step": 188.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.365381825999066, + "time/backward_s": 7.93104020699684, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1746, + "forward/grad_norm": 0.002658781942922704, + "forward/relative_grad_norm": 0.0004819764128848843, + "forward/grad_norm_first": 5.516415060663415, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8910448527234297e-07, + "adjoint/relative_residual": 0.00047324120862585656, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8910448527234297e-07, + "adjoint/solver_0/relative_residual": 0.00047324120862585656, + "adjoint/residual_converged": true, + "time/series_s": 0.9917447799962247, + "time/step_s": 20.300078678003047 + }, + { + "step": 189.0, + "loss/total": 0.000813972344052467, + "loss/data": 0.0007688725093752556, + "loss/mse": 0.0007688725093752556, + "loss/smooth": 0.04436181954239445, + "loss/activation_l2": 0.07380151348169185, + "loss/activation_l2_penalty": 7.380151348169186e-07, + "loss/regularization": 4.509983467721138e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03580463437219103, + "target/error_rms": 0.0480272581783071, + "target/error_max": 0.2363945525549876, + "activation_inv/rms": 0.2716643397313896, + "activation_inv/min": -3.0404409820552343, + "activation_inv/max": 3.157254233435111, + "grad/norm": 0.0004168622010448322, + "grad/abs_max": 3.895664023777343e-05, + "optimizer/steps": 189.0, + "optimizer/lr": 0.03, + "best/step": 188.0, + "best/loss": 0.000857721589161815, + "best/target_error_max": 0.23437529307430274, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23437529307430274, + "lowest/target_error_max_step": 188.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.572708368003077, + "time/backward_s": 7.9924651099936455, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1771, + "forward/grad_norm": 0.0023999478730043103, + "forward/relative_grad_norm": 0.0004839365703040938, + "forward/grad_norm_first": 4.959219906642398, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8120103940577602e-07, + "adjoint/relative_residual": 0.00046623306931934907, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8120103940577602e-07, + "adjoint/solver_0/relative_residual": 0.00046623306931934907, + "adjoint/residual_converged": true, + "time/series_s": 0.9767808589967899, + "time/step_s": 20.548887565004406 + }, + { + "step": 190.0, + "loss/total": 0.0008023475981713589, + "loss/data": 0.0007572031412745389, + "loss/mse": 0.0007572031412745389, + "loss/smooth": 0.04440726846226515, + "loss/activation_l2": 0.07371884345549387, + "loss/activation_l2_penalty": 7.371884345549388e-07, + "loss/regularization": 4.514445689682009e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03523510505240221, + "target/error_rms": 0.047661403922079515, + "target/error_max": 0.23239265719338315, + "activation_inv/rms": 0.27151214237211174, + "activation_inv/min": -3.0673271027146973, + "activation_inv/max": 3.1795962281096517, + "grad/norm": 0.00038789317008384495, + "grad/abs_max": 4.3874770709435664e-05, + "optimizer/steps": 190.0, + "optimizer/lr": 0.03, + "best/step": 190.0, + "best/loss": 0.0008023475981713589, + "best/target_error_max": 0.23239265719338315, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23239265719338315, + "lowest/target_error_max_step": 190.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.869487256000866, + "time/backward_s": 8.154076370999974, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1980, + "forward/grad_norm": 0.0023230277237019665, + "forward/relative_grad_norm": 0.0004951123191245498, + "forward/grad_norm_first": 4.691920669252402, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7848402643582078e-07, + "adjoint/relative_residual": 0.0004627673470641798, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7848402643582078e-07, + "adjoint/solver_0/relative_residual": 0.0004627673470641798, + "adjoint/residual_converged": true, + "time/series_s": 0.9741690869996091, + "time/step_s": 22.009880470999633 + }, + { + "step": 191.0, + "loss/total": 0.0007690110397269032, + "loss/data": 0.0007238080556973729, + "loss/mse": 0.0007238080556973729, + "loss/smooth": 0.04446175609582588, + "loss/activation_l2": 0.07412279337044315, + "loss/activation_l2_penalty": 7.412279337044316e-07, + "loss/regularization": 4.5202984029530317e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034098324814427115, + "target/error_rms": 0.04659854254257442, + "target/error_max": 0.2361324534183902, + "activation_inv/rms": 0.2722550153265191, + "activation_inv/min": -3.0681094618089224, + "activation_inv/max": 3.179987457436151, + "grad/norm": 0.00038846660097236683, + "grad/abs_max": 4.271802877756375e-05, + "optimizer/steps": 191.0, + "optimizer/lr": 0.03, + "best/step": 190.0, + "best/loss": 0.0008023475981713589, + "best/target_error_max": 0.23239265719338315, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23239265719338315, + "lowest/target_error_max_step": 190.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.084700688996236, + "time/backward_s": 8.445035388001997, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1697, + "forward/grad_norm": 0.002070519161295613, + "forward/relative_grad_norm": 0.00048136382567632815, + "forward/grad_norm_first": 4.301360116511626, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8067062623752316e-07, + "adjoint/relative_residual": 0.00047912121349127354, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8067062623752316e-07, + "adjoint/solver_0/relative_residual": 0.00047912121349127354, + "adjoint/residual_converged": true, + "time/series_s": 0.9699398130032932, + "time/step_s": 20.50643280499935 + }, + { + "step": 192.0, + "loss/total": 0.0007318988544279092, + "loss/data": 0.0006866707854409248, + "loss/mse": 0.0006866707854409248, + "loss/smooth": 0.04448679931713495, + "loss/activation_l2": 0.07412696698494736, + "loss/activation_l2_penalty": 7.412696698494737e-07, + "loss/regularization": 4.522806898698442e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03280508976386496, + "target/error_rms": 0.04538735899259588, + "target/error_max": 0.23128556618664992, + "activation_inv/rms": 0.2722626801178365, + "activation_inv/min": -3.0865068138878815, + "activation_inv/max": 3.190171061177944, + "grad/norm": 0.00035385802383407255, + "grad/abs_max": 3.527586644953284e-05, + "optimizer/steps": 192.0, + "optimizer/lr": 0.03, + "best/step": 192.0, + "best/loss": 0.0007318988544279092, + "best/target_error_max": 0.23128556618664992, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23128556618664992, + "lowest/target_error_max_step": 192.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.231547772993508, + "time/backward_s": 8.525038189996849, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1882, + "forward/grad_norm": 0.0019231530744052078, + "forward/relative_grad_norm": 0.0004990051868752714, + "forward/grad_norm_first": 3.8539741168780846, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8268657469354858e-07, + "adjoint/relative_residual": 0.0004973955597252875, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8268657469354858e-07, + "adjoint/solver_0/relative_residual": 0.0004973955597252875, + "adjoint/residual_converged": true, + "time/series_s": 0.972725168998295, + "time/step_s": 21.74122160999832 + }, + { + "step": 193.0, + "loss/total": 0.0006854475821741044, + "loss/data": 0.0006401975466868646, + "loss/mse": 0.0006401975466868646, + "loss/smooth": 0.04450640354996042, + "loss/activation_l2": 0.07436319372794421, + "loss/activation_l2_penalty": 7.436319372794422e-07, + "loss/regularization": 4.5250035487239865e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031824969938354514, + "target/error_rms": 0.04382456662718519, + "target/error_max": 0.23188900286128045, + "activation_inv/rms": 0.2726961564231227, + "activation_inv/min": -3.097501617943632, + "activation_inv/max": 3.202480185500269, + "grad/norm": 0.0003276604680458971, + "grad/abs_max": 3.458677033781748e-05, + "optimizer/steps": 193.0, + "optimizer/lr": 0.03, + "best/step": 192.0, + "best/loss": 0.0007318988544279092, + "best/target_error_max": 0.23128556618664992, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.23128556618664992, + "lowest/target_error_max_step": 192.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 12.287584035999316, + "time/backward_s": 8.457653413999651, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1884, + "forward/grad_norm": 0.00175165345857559, + "forward/relative_grad_norm": 0.00048529420021530174, + "forward/grad_norm_first": 3.609467118705448, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7294322569411757e-07, + "adjoint/relative_residual": 0.00048765884822320985, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7294322569411757e-07, + "adjoint/solver_0/relative_residual": 0.00048765884822320985, + "adjoint/residual_converged": true, + "time/series_s": 0.9794579840017832, + "time/step_s": 21.731657236996398 + }, + { + "step": 194.0, + "loss/total": 0.0006541673873420064, + "loss/data": 0.0006089200548663666, + "loss/mse": 0.0006089200548663666, + "loss/smooth": 0.04450225952699777, + "loss/activation_l2": 0.0745072948642013, + "loss/activation_l2_penalty": 7.450729486420131e-07, + "loss/regularization": 4.524733247563978e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03109406902655185, + "target/error_rms": 0.04274061493005336, + "target/error_max": 0.2303408256547148, + "activation_inv/rms": 0.27296024410928654, + "activation_inv/min": -3.1072661640746175, + "activation_inv/max": 3.203146290500701, + "grad/norm": 0.0002832210082691436, + "grad/abs_max": 3.378631518192329e-05, + "optimizer/steps": 194.0, + "optimizer/lr": 0.03, + "best/step": 194.0, + "best/loss": 0.0006541673873420064, + "best/target_error_max": 0.2303408256547148, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.2303408256547148, + "lowest/target_error_max_step": 194.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.17372092900041, + "time/backward_s": 8.411870440999337, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1861, + "forward/grad_norm": 0.0016738141892400915, + "forward/relative_grad_norm": 0.0004910096983589476, + "forward/grad_norm_first": 3.408922868192446, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5948505165466703e-07, + "adjoint/relative_residual": 0.00046111516009446823, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5948505165466703e-07, + "adjoint/solver_0/relative_residual": 0.00046111516009446823, + "adjoint/residual_converged": true, + "time/series_s": 0.9778621689983993, + "time/step_s": 21.575909603998298 + }, + { + "step": 195.0, + "loss/total": 0.0006281514580392285, + "loss/data": 0.0005829176021896511, + "loss/mse": 0.0005829176021896511, + "loss/smooth": 0.044488046569071044, + "loss/activation_l2": 0.07458092805063711, + "loss/activation_l2_penalty": 7.458092805063711e-07, + "loss/regularization": 4.523385584957742e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03081305832549012, + "target/error_rms": 0.04181809185710119, + "target/error_max": 0.22988894027060533, + "activation_inv/rms": 0.27309508975929453, + "activation_inv/min": -3.1252636767844963, + "activation_inv/max": 3.221235274187116, + "grad/norm": 0.0002591721479113546, + "grad/abs_max": 3.1714105639654795e-05, + "optimizer/steps": 195.0, + "optimizer/lr": 0.03, + "best/step": 195.0, + "best/loss": 0.0006281514580392285, + "best/target_error_max": 0.22988894027060533, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22988894027060533, + "lowest/target_error_max_step": 195.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.025549892001436, + "time/backward_s": 8.18206992100022, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1846, + "forward/grad_norm": 0.0015733616064955674, + "forward/relative_grad_norm": 0.0004631748688244688, + "forward/grad_norm_first": 3.3969062494447004, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.502195962750206e-07, + "adjoint/relative_residual": 0.0004439075809343215, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.502195962750206e-07, + "adjoint/solver_0/relative_residual": 0.0004439075809343215, + "adjoint/residual_converged": true, + "time/series_s": 1.0004075779943378, + "time/step_s": 21.2201900450018 + }, + { + "step": 196.0, + "loss/total": 0.00063281623626349, + "loss/data": 0.0005875762519648901, + "loss/mse": 0.0005875762519648901, + "loss/smooth": 0.04449135974071006, + "loss/activation_l2": 0.07486245578898815, + "loss/activation_l2_penalty": 7.486245578898815e-07, + "loss/regularization": 4.523998429859994e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03121121973575781, + "target/error_rms": 0.04198486341402899, + "target/error_max": 0.22888697925697404, + "activation_inv/rms": 0.27361004328969385, + "activation_inv/min": -3.1331469311803164, + "activation_inv/max": 3.2189228707736284, + "grad/norm": 0.0002526213909426386, + "grad/abs_max": 2.8096530659149466e-05, + "optimizer/steps": 196.0, + "optimizer/lr": 0.03, + "best/step": 196.0, + "best/loss": 0.00063281623626349, + "best/target_error_max": 0.22888697925697404, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22888697925697404, + "lowest/target_error_max_step": 196.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.587958660005825, + "time/backward_s": 8.010508589002711, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1786, + "forward/grad_norm": 0.0016798282634706118, + "forward/relative_grad_norm": 0.0004932584671767447, + "forward/grad_norm_first": 3.4055741061788902, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5268911644375325e-07, + "adjoint/relative_residual": 0.00044941288621928773, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5268911644375325e-07, + "adjoint/solver_0/relative_residual": 0.00044941288621928773, + "adjoint/residual_converged": true, + "time/series_s": 0.9852641859979485, + "time/step_s": 20.595463838006253 + }, + { + "step": 197.0, + "loss/total": 0.0006759987829146767, + "loss/data": 0.0006307701880332467, + "loss/mse": 0.0006307701880332467, + "loss/smooth": 0.04448005934369298, + "loss/activation_l2": 0.07485355377369889, + "loss/activation_l2_penalty": 7.485355377369889e-07, + "loss/regularization": 4.5228594881429965e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.032682338978425894, + "target/error_rms": 0.043500696133507336, + "target/error_max": 0.22723877732572034, + "activation_inv/rms": 0.27359377510041943, + "activation_inv/min": -3.1504722133729617, + "activation_inv/max": 3.2364513956146674, + "grad/norm": 0.0002840152535664845, + "grad/abs_max": 2.584833338916782e-05, + "optimizer/steps": 197.0, + "optimizer/lr": 0.03, + "best/step": 197.0, + "best/loss": 0.0006759987829146767, + "best/target_error_max": 0.22723877732572034, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22723877732572034, + "lowest/target_error_max_step": 197.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.680710647000524, + "time/backward_s": 7.835018620004121, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1633, + "forward/grad_norm": 0.0017429202075205325, + "forward/relative_grad_norm": 0.0004759939979718957, + "forward/grad_norm_first": 3.661643245391175, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6739233941989923e-07, + "adjoint/relative_residual": 0.00047552084082281144, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6739233941989923e-07, + "adjoint/solver_0/relative_residual": 0.00047552084082281144, + "adjoint/residual_converged": true, + "time/series_s": 0.9909417170056258, + "time/step_s": 19.51874074999796 + }, + { + "step": 198.0, + "loss/total": 0.0007712502229953493, + "loss/data": 0.0007259678777422393, + "loss/mse": 0.0007259678777422393, + "loss/smooth": 0.04452995419448549, + "loss/activation_l2": 0.07523910586244541, + "loss/activation_l2_penalty": 7.523910586244541e-07, + "loss/regularization": 4.5282345253109946e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03540035435559602, + "target/error_rms": 0.046668015098423866, + "target/error_max": 0.22784955423279094, + "activation_inv/rms": 0.27429747695238726, + "activation_inv/min": -3.167866348836759, + "activation_inv/max": 3.2423774357974753, + "grad/norm": 0.0003515368209596631, + "grad/abs_max": 2.3530057340664003e-05, + "optimizer/steps": 198.0, + "optimizer/lr": 0.03, + "best/step": 197.0, + "best/loss": 0.0006759987829146767, + "best/target_error_max": 0.22723877732572034, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22723877732572034, + "lowest/target_error_max_step": 197.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.657343944003514, + "time/backward_s": 7.876370987003611, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1778, + "forward/grad_norm": 0.001976920426311587, + "forward/relative_grad_norm": 0.0004866056482969155, + "forward/grad_norm_first": 4.0626746385510835, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6017633663900954e-07, + "adjoint/relative_residual": 0.000424139979181528, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6017633663900954e-07, + "adjoint/solver_0/relative_residual": 0.000424139979181528, + "adjoint/residual_converged": true, + "time/series_s": 0.9844451480021235, + "time/step_s": 20.52513616500073 + }, + { + "step": 199.0, + "loss/total": 0.000863140324417366, + "loss/data": 0.0008177837619821447, + "loss/mse": 0.0008177837619821447, + "loss/smooth": 0.044603899402621, + "loss/activation_l2": 0.07526630326003085, + "loss/activation_l2_penalty": 7.526630326003086e-07, + "loss/regularization": 4.535656243522131e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03754638027837192, + "target/error_rms": 0.04953131621455697, + "target/error_max": 0.22542658739634067, + "activation_inv/rms": 0.27434704893625306, + "activation_inv/min": -3.169224939257822, + "activation_inv/max": 3.2459163105659714, + "grad/norm": 0.00041561532241837833, + "grad/abs_max": 2.9603960506096078e-05, + "optimizer/steps": 199.0, + "optimizer/lr": 0.03, + "best/step": 199.0, + "best/loss": 0.000863140324417366, + "best/target_error_max": 0.22542658739634067, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22542658739634067, + "lowest/target_error_max_step": 199.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.236737200000789, + "time/backward_s": 7.969248526998854, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1726, + "forward/grad_norm": 0.0021431493967480077, + "forward/relative_grad_norm": 0.00046021611258723603, + "forward/grad_norm_first": 4.656832601317852, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9117288220898416e-07, + "adjoint/relative_residual": 0.0004769541178332496, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9117288220898416e-07, + "adjoint/solver_0/relative_residual": 0.0004769541178332496, + "adjoint/residual_converged": true, + "time/series_s": 0.9769356920005521, + "time/step_s": 20.195416520000435 + }, + { + "step": 200.0, + "loss/total": 0.0008606135882720845, + "loss/data": 0.0008150870861746251, + "loss/mse": 0.0008150870861746251, + "loss/smooth": 0.04477072760701959, + "loss/activation_l2": 0.07557744904397753, + "loss/activation_l2_penalty": 7.557744904397754e-07, + "loss/regularization": 4.5526502097459364e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.037472616798864225, + "target/error_rms": 0.04944958299646089, + "target/error_max": 0.22378321704478057, + "activation_inv/rms": 0.2749135301217049, + "activation_inv/min": -3.2069818562816823, + "activation_inv/max": 3.273245314732603, + "grad/norm": 0.0004262838277305715, + "grad/abs_max": 3.8672315253704494e-05, + "optimizer/steps": 200.0, + "optimizer/lr": 0.03, + "best/step": 200.0, + "best/loss": 0.0008606135882720845, + "best/target_error_max": 0.22378321704478057, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22378321704478057, + "lowest/target_error_max_step": 200.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.585398778996023, + "time/backward_s": 8.37764452999545, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1772, + "forward/grad_norm": 0.002492536834997612, + "forward/relative_grad_norm": 0.0004891522499981141, + "forward/grad_norm_first": 5.095625819992082, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9991277095769384e-07, + "adjoint/relative_residual": 0.0004995835030831446, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9991277095769384e-07, + "adjoint/solver_0/relative_residual": 0.0004995835030831446, + "adjoint/residual_converged": true, + "time/series_s": 0.9931127090021619, + "time/step_s": 20.968209137994563 + }, + { + "step": 201.0, + "loss/total": 0.0007854243621566129, + "loss/data": 0.000739801291845496, + "loss/mse": 0.000739801291845496, + "loss/smooth": 0.0448649342000681, + "loss/activation_l2": 0.07581361110488596, + "loss/activation_l2_penalty": 7.581361110488597e-07, + "loss/regularization": 4.562307031111696e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.035372670133603845, + "target/error_rms": 0.04711054951427003, + "target/error_max": 0.22837535116481045, + "activation_inv/rms": 0.27534271572875496, + "activation_inv/min": -3.190441255302852, + "activation_inv/max": 3.2600775469002845, + "grad/norm": 0.0003873338312145154, + "grad/abs_max": 3.4182737492822744e-05, + "optimizer/steps": 201.0, + "optimizer/lr": 0.03, + "best/step": 200.0, + "best/loss": 0.0008606135882720845, + "best/target_error_max": 0.22378321704478057, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22378321704478057, + "lowest/target_error_max_step": 200.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.364208492996113, + "time/backward_s": 8.371019926002191, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1742, + "forward/grad_norm": 0.0023336258949574027, + "forward/relative_grad_norm": 0.0004817994233210339, + "forward/grad_norm_first": 4.843563072101177, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8849166595066353e-07, + "adjoint/relative_residual": 0.0004944292627343035, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8849166595066353e-07, + "adjoint/solver_0/relative_residual": 0.0004944292627343035, + "adjoint/residual_converged": true, + "time/series_s": 1.002246791998914, + "time/step_s": 20.744366651000746 + }, + { + "step": 202.0, + "loss/total": 0.0007201241352350934, + "loss/data": 0.0006744446644872637, + "loss/mse": 0.0006744446644872637, + "loss/smooth": 0.04492047777050408, + "loss/activation_l2": 0.07589929773256243, + "loss/activation_l2_penalty": 7.589929773256243e-07, + "loss/regularization": 4.56794707478297e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03349006921008627, + "target/error_rms": 0.04498148500729818, + "target/error_max": 0.22113229407718882, + "activation_inv/rms": 0.2754982717415165, + "activation_inv/min": -3.225326919568687, + "activation_inv/max": 3.2894340390956485, + "grad/norm": 0.0003498597648063903, + "grad/abs_max": 2.5339763319136478e-05, + "optimizer/steps": 202.0, + "optimizer/lr": 0.03, + "best/step": 202.0, + "best/loss": 0.0007201241352350934, + "best/target_error_max": 0.22113229407718882, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22113229407718882, + "lowest/target_error_max_step": 202.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.932179108996934, + "time/backward_s": 8.97889172599389, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1767, + "forward/grad_norm": 0.0019933127990358615, + "forward/relative_grad_norm": 0.00044695900130635593, + "forward/grad_norm_first": 4.459721793743671, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.819629626610275e-07, + "adjoint/relative_residual": 0.0004998956917423327, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.819629626610275e-07, + "adjoint/solver_0/relative_residual": 0.0004998956917423327, + "adjoint/residual_converged": true, + "time/series_s": 1.176426211000944, + "time/step_s": 22.102038495999295 + }, + { + "step": 203.0, + "loss/total": 0.0006697910054166084, + "loss/data": 0.0006240942086264123, + "loss/mse": 0.0006240942086264123, + "loss/smooth": 0.04493488388624639, + "loss/activation_l2": 0.07619129039497677, + "loss/activation_l2_penalty": 7.619129039497677e-07, + "loss/regularization": 4.5696796790196164e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0319647564207138, + "target/error_rms": 0.043269881278774465, + "target/error_max": 0.2266545032309089, + "activation_inv/rms": 0.2760276986010222, + "activation_inv/min": -3.2142779775775066, + "activation_inv/max": 3.2778311742713946, + "grad/norm": 0.00032088110822553267, + "grad/abs_max": 4.3053642057833836e-05, + "optimizer/steps": 203.0, + "optimizer/lr": 0.03, + "best/step": 202.0, + "best/loss": 0.0007201241352350934, + "best/target_error_max": 0.22113229407718882, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22113229407718882, + "lowest/target_error_max_step": 202.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 12.369590447997325, + "time/backward_s": 8.366864921998058, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1743, + "forward/grad_norm": 0.0018216829306145468, + "forward/relative_grad_norm": 0.00045929389089911955, + "forward/grad_norm_first": 3.9662685846929016, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7404139056211396e-07, + "adjoint/relative_residual": 0.0004970465052634809, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7404139056211396e-07, + "adjoint/solver_0/relative_residual": 0.0004970465052634809, + "adjoint/residual_converged": true, + "time/series_s": 1.0615778120045434, + "time/step_s": 21.80533094099519 + }, + { + "step": 204.0, + "loss/total": 0.0006184892379313156, + "loss/data": 0.0005727809119323528, + "loss/mse": 0.0005727809119323528, + "loss/smooth": 0.044945985696652195, + "loss/activation_l2": 0.0762340302310499, + "loss/activation_l2_penalty": 7.623403023104991e-07, + "loss/regularization": 4.570832599896269e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030528807622474903, + "target/error_rms": 0.04145289779734414, + "target/error_max": 0.22083904660024298, + "activation_inv/rms": 0.27610510721652703, + "activation_inv/min": -3.2416906927714595, + "activation_inv/max": 3.3026051614863396, + "grad/norm": 0.00026506389123787284, + "grad/abs_max": 1.8992957100108454e-05, + "optimizer/steps": 204.0, + "optimizer/lr": 0.03, + "best/step": 204.0, + "best/loss": 0.0006184892379313156, + "best/target_error_max": 0.22083904660024298, + "lowest/loss": 0.0006183641224353278, + "lowest/loss_step": 184.0, + "lowest/target_error_max": 0.22083904660024298, + "lowest/target_error_max_step": 204.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.285776115997578, + "time/backward_s": 8.92342258199642, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1663, + "forward/grad_norm": 0.0017931364767933698, + "forward/relative_grad_norm": 0.00048403316072283725, + "forward/grad_norm_first": 3.7045736166414014, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.586110890483013e-07, + "adjoint/relative_residual": 0.0004728341495217916, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.586110890483013e-07, + "adjoint/solver_0/relative_residual": 0.0004728341495217916, + "adjoint/residual_converged": true, + "time/series_s": 1.23053548700409, + "time/step_s": 21.45330515299429 + }, + { + "step": 205.0, + "loss/total": 0.0005694101127313819, + "loss/data": 0.0005237442613288088, + "loss/mse": 0.0005237442613288088, + "loss/smooth": 0.04490152669817199, + "loss/activation_l2": 0.07643247044010569, + "loss/activation_l2_penalty": 7.643247044010569e-07, + "loss/regularization": 4.566585140257305e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028870188988572697, + "target/error_rms": 0.03963877879030113, + "target/error_max": 0.22717487806126477, + "activation_inv/rms": 0.2764642299468517, + "activation_inv/min": -3.2352362902644187, + "activation_inv/max": 3.2959497871122228, + "grad/norm": 0.00021521221394748044, + "grad/abs_max": 1.9384303500880555e-05, + "optimizer/steps": 205.0, + "optimizer/lr": 0.03, + "best/step": 204.0, + "best/loss": 0.0006184892379313156, + "best/target_error_max": 0.22083904660024298, + "lowest/loss": 0.0005694101127313819, + "lowest/loss_step": 205.0, + "lowest/target_error_max": 0.22083904660024298, + "lowest/target_error_max_step": 204.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.417269208999642, + "time/backward_s": 8.767631476002862, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1648, + "forward/grad_norm": 0.0016602780643359808, + "forward/relative_grad_norm": 0.00049330755736602, + "forward/grad_norm_first": 3.3656043568456875, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5585596101742096e-07, + "adjoint/relative_residual": 0.00048588482435570697, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5585596101742096e-07, + "adjoint/solver_0/relative_residual": 0.00048588482435570697, + "adjoint/residual_converged": true, + "time/series_s": 1.1632918790055555, + "time/step_s": 21.35531392499979 + }, + { + "step": 206.0, + "loss/total": 0.0005347517676478655, + "loss/data": 0.0004890781041765757, + "loss/mse": 0.0004890781041765757, + "loss/smooth": 0.044908038715135365, + "loss/activation_l2": 0.0765624756154411, + "loss/activation_l2_penalty": 7.656247561544111e-07, + "loss/regularization": 4.567366347128978e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027648061476160796, + "target/error_rms": 0.038304494677905976, + "target/error_max": 0.22013120723857763, + "activation_inv/rms": 0.27669925120144634, + "activation_inv/min": -3.2566551519236264, + "activation_inv/max": 3.312144254817852, + "grad/norm": 0.00017751361425739107, + "grad/abs_max": 2.05335594586863e-05, + "optimizer/steps": 206.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.092220923994319, + "time/backward_s": 8.624003662000177, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1617, + "forward/grad_norm": 0.0015652955742015136, + "forward/relative_grad_norm": 0.00048752278865526495, + "forward/grad_norm_first": 3.2107126284682432, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5475109064483333e-07, + "adjoint/relative_residual": 0.0004992455066074907, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5475109064483333e-07, + "adjoint/solver_0/relative_residual": 0.0004992455066074907, + "adjoint/residual_converged": true, + "time/series_s": 1.1620754760006093, + "time/step_s": 20.891478730998642 + }, + { + "step": 207.0, + "loss/total": 0.0006029415684112861, + "loss/data": 0.0005573164239118713, + "loss/mse": 0.0005573164239118713, + "loss/smooth": 0.044858812274584936, + "loss/activation_l2": 0.07663322248298743, + "loss/activation_l2_penalty": 7.663322248298744e-07, + "loss/regularization": 4.562514449941481e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02912793070291514, + "target/error_rms": 0.040889476295687795, + "target/error_max": 0.22372234494543897, + "activation_inv/rms": 0.27682706241079, + "activation_inv/min": -3.260285092662193, + "activation_inv/max": 3.3179650813384334, + "grad/norm": 0.00025543385994262823, + "grad/abs_max": 3.1954137406900934e-05, + "optimizer/steps": 207.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 21.41510161399492, + "time/backward_s": 12.288946200002101, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 2522, + "forward/grad_norm": 0.0015127455577216772, + "forward/relative_grad_norm": 0.0004942812911562361, + "forward/grad_norm_first": 3.0604952782716537, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.466391652618933e-07, + "adjoint/relative_residual": 0.000443168226116401, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.466391652618933e-07, + "adjoint/solver_0/relative_residual": 0.000443168226116401, + "adjoint/residual_converged": true, + "time/series_s": 1.205423981999047, + "time/step_s": 34.92856114100141 + }, + { + "step": 208.0, + "loss/total": 0.0007300512604404934, + "loss/data": 0.0006843792397079917, + "loss/mse": 0.0006843792397079917, + "loss/smooth": 0.04490124199886699, + "loss/activation_l2": 0.07707787336347179, + "loss/activation_l2_penalty": 7.707787336347179e-07, + "loss/regularization": 4.567202073250171e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.032596865365889814, + "target/error_rms": 0.04531156275305427, + "target/error_max": 0.2216124697479078, + "activation_inv/rms": 0.27762902111175586, + "activation_inv/min": -3.2843458503968552, + "activation_inv/max": 3.323564522731121, + "grad/norm": 0.00038815924946358456, + "grad/abs_max": 6.445529614440901e-05, + "optimizer/steps": 208.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 14.854011001996696, + "time/backward_s": 9.863728005999292, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1926, + "forward/grad_norm": 0.0018841786045468872, + "forward/relative_grad_norm": 0.000491119097665033, + "forward/grad_norm_first": 3.8365003794496877, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7401621042059197e-07, + "adjoint/relative_residual": 0.0004745815490211188, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7401621042059197e-07, + "adjoint/solver_0/relative_residual": 0.0004745815490211188, + "adjoint/residual_converged": true, + "time/series_s": 1.2195465400000103, + "time/step_s": 25.945298279999406 + }, + { + "step": 209.0, + "loss/total": 0.0008530832547748629, + "loss/data": 0.0008074314655951581, + "loss/mse": 0.0008074314655951581, + "loss/smooth": 0.044884119832199885, + "loss/activation_l2": 0.07676693475049902, + "loss/activation_l2_penalty": 7.676693475049903e-07, + "loss/regularization": 4.5651789179704876e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03617239976644121, + "target/error_rms": 0.04921681010371837, + "target/error_max": 0.22630819997284488, + "activation_inv/rms": 0.2770684658175647, + "activation_inv/min": -3.29485800482839, + "activation_inv/max": 3.351378101518659, + "grad/norm": 0.0004612842020778928, + "grad/abs_max": 6.553735844543951e-05, + "optimizer/steps": 209.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 13.370104639005149, + "time/backward_s": 9.072172845997557, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1961, + "forward/grad_norm": 0.002520162335142408, + "forward/relative_grad_norm": 0.0004975816701428786, + "forward/grad_norm_first": 5.064821488337288, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8796572581892822e-07, + "adjoint/relative_residual": 0.0004719493447013342, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8796572581892822e-07, + "adjoint/solver_0/relative_residual": 0.0004719493447013342, + "adjoint/residual_converged": true, + "time/series_s": 1.2825164619935094, + "time/step_s": 23.731900589998986 + }, + { + "step": 210.0, + "loss/total": 0.0008738428706983868, + "loss/data": 0.0008279131265052064, + "loss/mse": 0.0008279131265052064, + "loss/smooth": 0.04515280845110543, + "loss/activation_l2": 0.07769357420749382, + "loss/activation_l2_penalty": 7.769357420749383e-07, + "loss/regularization": 4.5929744193180374e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03679122964946168, + "target/error_rms": 0.049837128523979174, + "target/error_max": 0.22770773844206887, + "activation_inv/rms": 0.27873567085590933, + "activation_inv/min": -3.3131030824594543, + "activation_inv/max": 3.335059462530756, + "grad/norm": 0.00045012430708337033, + "grad/abs_max": 5.149867574016701e-05, + "optimizer/steps": 210.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 12.522460962994955, + "time/backward_s": 9.231943619997764, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1789, + "forward/grad_norm": 0.0025990560889100536, + "forward/relative_grad_norm": 0.0004877993133883799, + "forward/grad_norm_first": 5.328125763147019, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9860709946272204e-07, + "adjoint/relative_residual": 0.000492461111485625, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9860709946272204e-07, + "adjoint/solver_0/relative_residual": 0.000492461111485625, + "adjoint/residual_converged": true, + "time/series_s": 1.2612074940043385, + "time/step_s": 23.022977909000474 + }, + { + "step": 211.0, + "loss/total": 0.0008177663777657237, + "loss/data": 0.0007718163461559656, + "loss/mse": 0.0007718163461559656, + "loss/smooth": 0.04517764047264932, + "loss/activation_l2": 0.07723911371088027, + "loss/activation_l2_penalty": 7.723911371088028e-07, + "loss/regularization": 4.5950031609758124e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.035895876705503316, + "target/error_rms": 0.04811911302661237, + "target/error_max": 0.2297175937797752, + "activation_inv/rms": 0.2779192575387324, + "activation_inv/min": -3.3386070976379694, + "activation_inv/max": 3.3708045975659906, + "grad/norm": 0.00039481336069154867, + "grad/abs_max": 4.9713891073813243e-05, + "optimizer/steps": 211.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 12.66442880500108, + "time/backward_s": 8.824619630999223, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1788, + "forward/grad_norm": 0.0024320689734914076, + "forward/relative_grad_norm": 0.0004757426545324584, + "forward/grad_norm_first": 5.112152442756161, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.890619482985099e-07, + "adjoint/relative_residual": 0.0004855307042109695, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.890619482985099e-07, + "adjoint/solver_0/relative_residual": 0.0004855307042109695, + "adjoint/residual_converged": true, + "time/series_s": 1.2007481760010705, + "time/step_s": 22.69763697400049 + }, + { + "step": 212.0, + "loss/total": 0.0007826652276947221, + "loss/data": 0.0007366076496462315, + "loss/mse": 0.0007366076496462315, + "loss/smooth": 0.045277029217900534, + "loss/activation_l2": 0.0780548830590066, + "loss/activation_l2_penalty": 7.80548830590066e-07, + "loss/regularization": 4.60575780484906e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03462235937097804, + "target/error_rms": 0.047008753960711344, + "target/error_max": 0.228788586207056, + "activation_inv/rms": 0.27938304003465675, + "activation_inv/min": -3.340669396966538, + "activation_inv/max": 3.3565594202150355, + "grad/norm": 0.0004186195264778427, + "grad/abs_max": 4.2538972178880366e-05, + "optimizer/steps": 212.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 6.0, + "stopped": 0.0, + "time/forward_s": 14.180033714001183, + "time/backward_s": 9.872216187002778, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 2025, + "forward/grad_norm": 0.002320977145439661, + "forward/relative_grad_norm": 0.00047961860041222906, + "forward/grad_norm_first": 4.839214207799272, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8628483918517752e-07, + "adjoint/relative_residual": 0.0004896987045965289, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8628483918517752e-07, + "adjoint/solver_0/relative_residual": 0.0004896987045965289, + "adjoint/residual_converged": true, + "time/series_s": 1.203149516004487, + "time/step_s": 25.26793195799837 + }, + { + "step": 213.0, + "loss/total": 0.0007692417730134392, + "loss/data": 0.0007231660997152892, + "loss/mse": 0.0007231660997152892, + "loss/smooth": 0.045298266723777826, + "loss/activation_l2": 0.0777406574372203, + "loss/activation_l2_penalty": 7.774065743722031e-07, + "loss/regularization": 4.607567329815003e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.035007792542594895, + "target/error_rms": 0.04657787349317127, + "target/error_max": 0.22216212880666408, + "activation_inv/rms": 0.27882011662937867, + "activation_inv/min": -3.362911510954146, + "activation_inv/max": 3.382414346277878, + "grad/norm": 0.0003643792704059444, + "grad/abs_max": 3.672935884170081e-05, + "optimizer/steps": 213.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 7.0, + "stopped": 0.0, + "time/forward_s": 14.057494175998727, + "time/backward_s": 8.753154057994834, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1779, + "forward/grad_norm": 0.0024341841678946147, + "forward/relative_grad_norm": 0.0004838935811319625, + "forward/grad_norm_first": 5.0304121873251075, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8703982351425091e-07, + "adjoint/relative_residual": 0.0004962318216944584, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8703982351425091e-07, + "adjoint/solver_0/relative_residual": 0.0004962318216944584, + "adjoint/residual_converged": true, + "time/series_s": 1.2666460149994236, + "time/step_s": 24.084300002999953 + }, + { + "step": 214.0, + "loss/total": 0.0008083680846480567, + "loss/data": 0.0007621976451895715, + "loss/mse": 0.0007621976451895715, + "loss/smooth": 0.04538764066782923, + "loss/activation_l2": 0.07827987906560382, + "loss/activation_l2_penalty": 7.827987906560383e-07, + "loss/regularization": 4.617043945848527e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.036572599916667024, + "target/error_rms": 0.04781833263057919, + "target/error_max": 0.22455054209391687, + "activation_inv/rms": 0.27978541610599333, + "activation_inv/min": -3.373498223290006, + "activation_inv/max": 3.3864823014811702, + "grad/norm": 0.00038823115598217905, + "grad/abs_max": 3.988570724163005e-05, + "optimizer/steps": 214.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 8.0, + "stopped": 0.0, + "time/forward_s": 12.507891715002188, + "time/backward_s": 10.241807295002218, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1592, + "forward/grad_norm": 0.0023697453378861907, + "forward/relative_grad_norm": 0.0004909164382692763, + "forward/grad_norm_first": 4.827186773864646, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.876951057749572e-07, + "adjoint/relative_residual": 0.0004850524508566178, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.876951057749572e-07, + "adjoint/solver_0/relative_residual": 0.0004850524508566178, + "adjoint/residual_converged": true, + "time/series_s": 1.2579186749935616, + "time/step_s": 24.015028474001156 + }, + { + "step": 215.0, + "loss/total": 0.0008925995056787271, + "loss/data": 0.0008463146026585936, + "loss/mse": 0.0008463146026585936, + "loss/smooth": 0.04550166039049383, + "loss/activation_l2": 0.07832426296396006, + "loss/activation_l2_penalty": 7.832426296396006e-07, + "loss/regularization": 4.6284903020133434e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03829491124446851, + "target/error_rms": 0.05038793315840391, + "target/error_max": 0.22279692529963027, + "activation_inv/rms": 0.27986472261426604, + "activation_inv/min": -3.3787420826263466, + "activation_inv/max": 3.411767247309784, + "grad/norm": 0.0004635225215861621, + "grad/abs_max": 4.3956858251207e-05, + "optimizer/steps": 215.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 9.0, + "stopped": 0.0, + "time/forward_s": 10.970122915001411, + "time/backward_s": 8.8724147920002, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1596, + "forward/grad_norm": 0.0024055061173339355, + "forward/relative_grad_norm": 0.00047698893345174626, + "forward/grad_norm_first": 5.043106765447178, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.0376123014672951e-07, + "adjoint/relative_residual": 0.000499718229910871, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.0376123014672951e-07, + "adjoint/solver_0/relative_residual": 0.000499718229910871, + "adjoint/residual_converged": true, + "time/series_s": 1.1745739399993909, + "time/step_s": 21.0243088970019 + }, + { + "step": 216.0, + "loss/total": 0.000926296427028931, + "loss/data": 0.0008798201443625398, + "loss/mse": 0.0008798201443625398, + "loss/smooth": 0.04569072435502081, + "loss/activation_l2": 0.07855583113704065, + "loss/activation_l2_penalty": 7.855583113704066e-07, + "loss/regularization": 4.647628266639122e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0381617362582156, + "target/error_rms": 0.051375679392954204, + "target/error_max": 0.24834756846424444, + "activation_inv/rms": 0.2802781317495902, + "activation_inv/min": -3.405287511570259, + "activation_inv/max": 3.412986447851452, + "grad/norm": 0.0004912553188067808, + "grad/abs_max": 4.048215534128251e-05, + "optimizer/steps": 216.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 10.0, + "stopped": 0.0, + "time/forward_s": 12.2155773150007, + "time/backward_s": 8.34816461900482, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1739, + "forward/grad_norm": 0.002446679988389737, + "forward/relative_grad_norm": 0.00047966647803121776, + "forward/grad_norm_first": 5.10079419856916, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.890530624803248e-07, + "adjoint/relative_residual": 0.0004547328433605325, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.890530624803248e-07, + "adjoint/solver_0/relative_residual": 0.0004547328433605325, + "adjoint/residual_converged": true, + "time/series_s": 1.260386780006229, + "time/step_s": 21.831394572000136 + }, + { + "step": 217.0, + "loss/total": 0.0009774734570638316, + "loss/data": 0.0009308952273577363, + "loss/mse": 0.0009308952273577363, + "loss/smooth": 0.04578949865006159, + "loss/activation_l2": 0.07887310560336351, + "loss/activation_l2_penalty": 7.887310560336352e-07, + "loss/regularization": 4.657822970609523e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.037894731576835324, + "target/error_rms": 0.0528458672184799, + "target/error_max": 0.2303841339533255, + "activation_inv/rms": 0.2808435607297477, + "activation_inv/min": -3.4013967581676128, + "activation_inv/max": 3.433794084434319, + "grad/norm": 0.0006516010382015487, + "grad/abs_max": 0.00013503377370785167, + "optimizer/steps": 217.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 11.0, + "stopped": 0.0, + "time/forward_s": 11.014155837001454, + "time/backward_s": 9.015722816999187, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1628, + "forward/grad_norm": 0.0024609277246432177, + "forward/relative_grad_norm": 0.0004999635379835783, + "forward/grad_norm_first": 4.9222143970107854, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.914468750330222e-07, + "adjoint/relative_residual": 0.00044767973551657395, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.914468750330222e-07, + "adjoint/solver_0/relative_residual": 0.00044767973551657395, + "adjoint/residual_converged": true, + "time/series_s": 1.1658240019969526, + "time/step_s": 21.20348828999704 + }, + { + "step": 218.0, + "loss/total": 0.0009320989105278625, + "loss/data": 0.0008853995504885269, + "loss/mse": 0.0008853995504885269, + "loss/smooth": 0.04591041944051406, + "loss/activation_l2": 0.0788940598821626, + "loss/activation_l2_penalty": 7.889405988216261e-07, + "loss/regularization": 4.669936003933569e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03691584149329206, + "target/error_rms": 0.05153832216385765, + "target/error_max": 0.2283199231583275, + "activation_inv/rms": 0.28088086421499525, + "activation_inv/min": -3.4279819996226983, + "activation_inv/max": 3.424950581593344, + "grad/norm": 0.0005421350481929706, + "grad/abs_max": 6.035448778828386e-05, + "optimizer/steps": 218.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 12.0, + "stopped": 0.0, + "time/forward_s": 11.667754477995913, + "time/backward_s": 9.226059485998121, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1716, + "forward/grad_norm": 0.002298924732577323, + "forward/relative_grad_norm": 0.0004687945436127989, + "forward/grad_norm_first": 4.903906762353704, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.95940878314566e-07, + "adjoint/relative_residual": 0.0004698129225313831, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.95940878314566e-07, + "adjoint/solver_0/relative_residual": 0.0004698129225313831, + "adjoint/residual_converged": true, + "time/series_s": 1.150090242997976, + "time/step_s": 22.05105154299963 + }, + { + "step": 219.0, + "loss/total": 0.0009233329880044518, + "loss/data": 0.0008765100866221395, + "loss/mse": 0.0008765100866221395, + "loss/smooth": 0.046030429474299805, + "loss/activation_l2": 0.07924719080124955, + "loss/activation_l2_penalty": 7.924719080124955e-07, + "loss/regularization": 4.6822901382312296e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0360320945299014, + "target/error_rms": 0.05127894558068076, + "target/error_max": 0.22743791474853625, + "activation_inv/rms": 0.28150877570912336, + "activation_inv/min": -3.431149489992155, + "activation_inv/max": 3.458703563761574, + "grad/norm": 0.0006895045370394205, + "grad/abs_max": 9.57651446020214e-05, + "optimizer/steps": 219.0, + "optimizer/lr": 0.03, + "best/step": 206.0, + "best/loss": 0.0005347517676478655, + "best/target_error_max": 0.22013120723857763, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.22013120723857763, + "lowest/target_error_max_step": 206.0, + "stagnation/no_improve_steps": 13.0, + "stopped": 0.0, + "time/forward_s": 13.465084376002778, + "time/backward_s": 8.480952598998556, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1896, + "forward/grad_norm": 0.0021437699640711747, + "forward/relative_grad_norm": 0.00046970207536618157, + "forward/grad_norm_first": 4.5641057949337, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.070936807808314e-07, + "adjoint/relative_residual": 0.0004990659548702335, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.070936807808314e-07, + "adjoint/solver_0/relative_residual": 0.0004990659548702335, + "adjoint/residual_converged": true, + "time/series_s": 1.2102836390040466, + "time/step_s": 23.16360364400316 + }, + { + "step": 220.0, + "loss/total": 0.0008065172897814582, + "loss/data": 0.0007596125228789166, + "loss/mse": 0.0007596125228789166, + "loss/smooth": 0.04611181037764902, + "loss/activation_l2": 0.07929565248925705, + "loss/activation_l2_penalty": 7.929565248925705e-07, + "loss/regularization": 4.690476690254159e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03424527609441064, + "target/error_rms": 0.04773717177040079, + "target/error_max": 0.21760396931181453, + "activation_inv/rms": 0.28159483746911457, + "activation_inv/min": -3.4451289050106833, + "activation_inv/max": 3.446596365206379, + "grad/norm": 0.0004428746655090521, + "grad/abs_max": 4.882689302161581e-05, + "optimizer/steps": 220.0, + "optimizer/lr": 0.03, + "best/step": 220.0, + "best/loss": 0.0008065172897814582, + "best/target_error_max": 0.21760396931181453, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.21760396931181453, + "lowest/target_error_max_step": 220.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.502693307993468, + "time/backward_s": 9.687615412003652, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1763, + "forward/grad_norm": 0.002143807010127524, + "forward/relative_grad_norm": 0.0004728335326945261, + "forward/grad_norm_first": 4.533957221499621, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8462240524808643e-07, + "adjoint/relative_residual": 0.00047792296873406354, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8462240524808643e-07, + "adjoint/solver_0/relative_residual": 0.00047792296873406354, + "adjoint/residual_converged": true, + "time/series_s": 1.290952240000479, + "time/step_s": 23.4981699380005 + }, + { + "step": 221.0, + "loss/total": 0.0006175393704674559, + "loss/data": 0.0005706200017089011, + "loss/mse": 0.0005706200017089011, + "loss/smooth": 0.04612376980414218, + "loss/activation_l2": 0.07955989544126539, + "loss/activation_l2_penalty": 7.95598954412654e-07, + "loss/regularization": 4.6919368758554836e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02988139904876633, + "target/error_rms": 0.041374629969665025, + "target/error_max": 0.22235588959853853, + "activation_inv/rms": 0.2820636372190953, + "activation_inv/min": -3.4669090384851726, + "activation_inv/max": 3.4769307597460695, + "grad/norm": 0.00029260320429553893, + "grad/abs_max": 3.760082124553874e-05, + "optimizer/steps": 221.0, + "optimizer/lr": 0.03, + "best/step": 220.0, + "best/loss": 0.0008065172897814582, + "best/target_error_max": 0.21760396931181453, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.21760396931181453, + "lowest/target_error_max_step": 220.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 12.375419625001086, + "time/backward_s": 9.523821741000575, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1748, + "forward/grad_norm": 0.0020094268260725766, + "forward/relative_grad_norm": 0.0004982156822644308, + "forward/grad_norm_first": 4.033246839881812, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6695665625731402e-07, + "adjoint/relative_residual": 0.0004986545649853522, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6695665625731402e-07, + "adjoint/solver_0/relative_residual": 0.0004986545649853522, + "adjoint/residual_converged": true, + "time/series_s": 1.2556958540008054, + "time/step_s": 23.162307611004508 + }, + { + "step": 222.0, + "loss/total": 0.0005662324120531043, + "loss/data": 0.0005193761184214325, + "loss/mse": 0.0005193761184214325, + "loss/smooth": 0.046060454072928, + "loss/activation_l2": 0.07958395587438222, + "loss/activation_l2_penalty": 7.958395587438222e-07, + "loss/regularization": 4.685629363167182e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02837702796339121, + "target/error_rms": 0.039473134601451375, + "target/error_max": 0.2203640427220405, + "activation_inv/rms": 0.28210628471266325, + "activation_inv/min": -3.46917203383401, + "activation_inv/max": 3.475118922125081, + "grad/norm": 0.00022190351744885063, + "grad/abs_max": 2.0283194317130246e-05, + "optimizer/steps": 222.0, + "optimizer/lr": 0.03, + "best/step": 220.0, + "best/loss": 0.0008065172897814582, + "best/target_error_max": 0.21760396931181453, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.21760396931181453, + "lowest/target_error_max_step": 220.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 14.52168877999793, + "time/backward_s": 8.865465053000662, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 2052, + "forward/grad_norm": 0.0015740960010689864, + "forward/relative_grad_norm": 0.0004985241402040183, + "forward/grad_norm_first": 3.157512092443098, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5964460903500296e-07, + "adjoint/relative_residual": 0.000499784549129423, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5964460903500296e-07, + "adjoint/solver_0/relative_residual": 0.000499784549129423, + "adjoint/residual_converged": true, + "time/series_s": 1.2082233379987883, + "time/step_s": 24.60259783500078 + }, + { + "step": 223.0, + "loss/total": 0.0005861423073770493, + "loss/data": 0.0005392981974805739, + "loss/mse": 0.0005392981974805739, + "loss/smooth": 0.0460465969398141, + "loss/activation_l2": 0.07975129566612935, + "loss/activation_l2_penalty": 7.975129566612935e-07, + "loss/regularization": 4.684410989647539e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029514638829289234, + "target/error_rms": 0.040223060455934004, + "target/error_max": 0.21688404691937532, + "activation_inv/rms": 0.2824027189425225, + "activation_inv/min": -3.4996938394412567, + "activation_inv/max": 3.4934393234165366, + "grad/norm": 0.00025236196189584866, + "grad/abs_max": 1.788324880981741e-05, + "optimizer/steps": 223.0, + "optimizer/lr": 0.03, + "best/step": 223.0, + "best/loss": 0.0005861423073770493, + "best/target_error_max": 0.21688404691937532, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.21688404691937532, + "lowest/target_error_max_step": 223.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.411229614001059, + "time/backward_s": 8.953412294998998, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1764, + "forward/grad_norm": 0.001427662096822985, + "forward/relative_grad_norm": 0.0004459199465900084, + "forward/grad_norm_first": 3.2016107548909862, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5395473334454427e-07, + "adjoint/relative_residual": 0.00047298581660520895, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5395473334454427e-07, + "adjoint/solver_0/relative_residual": 0.00047298581660520895, + "adjoint/residual_converged": true, + "time/series_s": 1.2004482699994696, + "time/step_s": 22.57890276300168 + }, + { + "step": 224.0, + "loss/total": 0.0006169169337621744, + "loss/data": 0.0005701429398532609, + "loss/mse": 0.0005701429398532609, + "loss/smooth": 0.0459755906929454, + "loss/activation_l2": 0.07984032159680607, + "loss/activation_l2_penalty": 7.984032159680608e-07, + "loss/regularization": 4.6773993908913465e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03060762145500685, + "target/error_rms": 0.04135733090468705, + "target/error_max": 0.22019938274945342, + "activation_inv/rms": 0.28256029727618504, + "activation_inv/min": -3.493426904947836, + "activation_inv/max": 3.497307516110247, + "grad/norm": 0.0002804453353498725, + "grad/abs_max": 2.247623480495877e-05, + "optimizer/steps": 224.0, + "optimizer/lr": 0.03, + "best/step": 223.0, + "best/loss": 0.0005861423073770493, + "best/target_error_max": 0.21688404691937532, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.21688404691937532, + "lowest/target_error_max_step": 223.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 12.57202108999627, + "time/backward_s": 8.924832588003483, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1755, + "forward/grad_norm": 0.0016242738589962544, + "forward/relative_grad_norm": 0.0004831393155711947, + "forward/grad_norm_first": 3.3619161319462187, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.583559296526644e-07, + "adjoint/relative_residual": 0.00047316434490468694, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.583559296526644e-07, + "adjoint/solver_0/relative_residual": 0.00047316434490468694, + "adjoint/residual_converged": true, + "time/series_s": 1.2620063110007322, + "time/step_s": 22.766054104999057 + }, + { + "step": 225.0, + "loss/total": 0.0006177351177923727, + "loss/data": 0.0005709442706597744, + "loss/mse": 0.0005709442706597744, + "loss/smooth": 0.04599104286097545, + "loss/activation_l2": 0.07998042716227781, + "loss/activation_l2_penalty": 7.998042716227782e-07, + "loss/regularization": 4.679084713259824e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030819631092328527, + "target/error_rms": 0.04138638437915691, + "target/error_max": 0.215716637392263, + "activation_inv/rms": 0.28280811014233276, + "activation_inv/min": -3.5265525204957453, + "activation_inv/max": 3.5110992044184135, + "grad/norm": 0.0003109670891851313, + "grad/abs_max": 4.125274723109915e-05, + "optimizer/steps": 225.0, + "optimizer/lr": 0.03, + "best/step": 225.0, + "best/loss": 0.0006177351177923727, + "best/target_error_max": 0.215716637392263, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.215716637392263, + "lowest/target_error_max_step": 225.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.953541507995396, + "time/backward_s": 9.199353451003844, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1788, + "forward/grad_norm": 0.0017099340441500941, + "forward/relative_grad_norm": 0.0004726496186055428, + "forward/grad_norm_first": 3.617762454130206, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6262173212045533e-07, + "adjoint/relative_residual": 0.00048556936532038986, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6262173212045533e-07, + "adjoint/solver_0/relative_residual": 0.00048556936532038986, + "adjoint/residual_converged": true, + "time/series_s": 1.220702385995537, + "time/step_s": 23.387262491996808 + }, + { + "step": 226.0, + "loss/total": 0.0005763004984641515, + "loss/data": 0.0005295387347357721, + "loss/mse": 0.0005295387347357721, + "loss/smooth": 0.04596042279294289, + "loss/activation_l2": 0.08013409354365499, + "loss/activation_l2_penalty": 8.013409354365499e-07, + "loss/regularization": 4.676176372837944e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029482876688763048, + "target/error_rms": 0.03985744854111106, + "target/error_max": 0.2207593453421533, + "activation_inv/rms": 0.28307965936049695, + "activation_inv/min": -3.5191859300411297, + "activation_inv/max": 3.5167665318831647, + "grad/norm": 0.00024159922105546864, + "grad/abs_max": 3.3477567398394556e-05, + "optimizer/steps": 226.0, + "optimizer/lr": 0.03, + "best/step": 225.0, + "best/loss": 0.0006177351177923727, + "best/target_error_max": 0.215716637392263, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.215716637392263, + "lowest/target_error_max_step": 225.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 12.593869525000628, + "time/backward_s": 8.992863144994772, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1751, + "forward/grad_norm": 0.0015588418986298765, + "forward/relative_grad_norm": 0.00045983777014509846, + "forward/grad_norm_first": 3.389982293403161, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.512514201275702e-07, + "adjoint/relative_residual": 0.00046894310058555463, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.512514201275702e-07, + "adjoint/solver_0/relative_residual": 0.00046894310058555463, + "adjoint/residual_converged": true, + "time/series_s": 1.3522778260012274, + "time/step_s": 22.946510257002956 + }, + { + "step": 227.0, + "loss/total": 0.0005401863610346704, + "loss/data": 0.0004934169341755163, + "loss/mse": 0.0004934169341755163, + "loss/smooth": 0.04596685275034098, + "loss/activation_l2": 0.08025741088130627, + "loss/activation_l2_penalty": 8.025741088130627e-07, + "loss/regularization": 4.676942685915405e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02823918764556778, + "target/error_rms": 0.03847402763588118, + "target/error_max": 0.2153498746951647, + "activation_inv/rms": 0.28329738947139327, + "activation_inv/min": -3.5465034278437795, + "activation_inv/max": 3.530267139999394, + "grad/norm": 0.0002140755345851684, + "grad/abs_max": 2.216493753342738e-05, + "optimizer/steps": 227.0, + "optimizer/lr": 0.03, + "best/step": 227.0, + "best/loss": 0.0005401863610346704, + "best/target_error_max": 0.2153498746951647, + "lowest/loss": 0.0005347517676478655, + "lowest/loss_step": 206.0, + "lowest/target_error_max": 0.2153498746951647, + "lowest/target_error_max_step": 227.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 12.26030353999522, + "time/backward_s": 9.02022409500205, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1759, + "forward/grad_norm": 0.0013644867228568547, + "forward/relative_grad_norm": 0.0004580892328661093, + "forward/grad_norm_first": 2.9786483177518126, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4341629112250115e-07, + "adjoint/relative_residual": 0.00046063933238535805, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4341629112250115e-07, + "adjoint/solver_0/relative_residual": 0.00046063933238535805, + "adjoint/residual_converged": true, + "time/series_s": 1.141651046993502, + "time/step_s": 22.43560489400261 + }, + { + "step": 228.0, + "loss/total": 0.0005192154882755777, + "loss/data": 0.0004724964290643178, + "loss/mse": 0.0004724964290643178, + "loss/smooth": 0.04591529536554081, + "loss/activation_l2": 0.0803763845719042, + "loss/activation_l2_penalty": 8.037638457190421e-07, + "loss/regularization": 4.671905921125985e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027603367505067204, + "target/error_rms": 0.037649558924281616, + "target/error_max": 0.21652311606484903, + "activation_inv/rms": 0.28350729192016244, + "activation_inv/min": -3.5470659942644915, + "activation_inv/max": 3.539030860942886, + "grad/norm": 0.00018035502765419316, + "grad/abs_max": 1.5234707121911032e-05, + "optimizer/steps": 228.0, + "optimizer/lr": 0.03, + "best/step": 227.0, + "best/loss": 0.0005401863610346704, + "best/target_error_max": 0.2153498746951647, + "lowest/loss": 0.0005192154882755777, + "lowest/loss_step": 228.0, + "lowest/target_error_max": 0.2153498746951647, + "lowest/target_error_max_step": 227.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.711711841999204, + "time/backward_s": 8.677310036000563, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1692, + "forward/grad_norm": 0.0012748279702044858, + "forward/relative_grad_norm": 0.0004616408974017893, + "forward/grad_norm_first": 2.761514366208631, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4078918335862222e-07, + "adjoint/relative_residual": 0.0004621038435793755, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4078918335862222e-07, + "adjoint/solver_0/relative_residual": 0.0004621038435793755, + "adjoint/residual_converged": true, + "time/series_s": 1.2341632099996787, + "time/step_s": 21.630346081001335 + }, + { + "step": 229.0, + "loss/total": 0.0005093119296352104, + "loss/data": 0.00046262055054186276, + "loss/mse": 0.00046262055054186276, + "loss/smooth": 0.045885822255666904, + "loss/activation_l2": 0.08055568376807758, + "loss/activation_l2_penalty": 8.055568376807758e-07, + "loss/regularization": 4.669137909334768e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027529253211024157, + "target/error_rms": 0.037254015241656675, + "target/error_max": 0.21474662805752778, + "activation_inv/rms": 0.28382333196563947, + "activation_inv/min": -3.5684613981053857, + "activation_inv/max": 3.549252982947113, + "grad/norm": 0.00016477748729517986, + "grad/abs_max": 1.4316101709340067e-05, + "optimizer/steps": 229.0, + "optimizer/lr": 0.03, + "best/step": 229.0, + "best/loss": 0.0005093119296352104, + "best/target_error_max": 0.21474662805752778, + "lowest/loss": 0.0005093119296352104, + "lowest/loss_step": 229.0, + "lowest/target_error_max": 0.21474662805752778, + "lowest/target_error_max_step": 229.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.292992845999834, + "time/backward_s": 8.623245538998162, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1607, + "forward/grad_norm": 0.0014411923656112596, + "forward/relative_grad_norm": 0.0004977869278599519, + "forward/grad_norm_first": 2.895199301048594, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4903359296622966e-07, + "adjoint/relative_residual": 0.0004943576595485668, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4903359296622966e-07, + "adjoint/solver_0/relative_residual": 0.0004943576595485668, + "adjoint/residual_converged": true, + "time/series_s": 1.2367445839990978, + "time/step_s": 21.165946155997517 + }, + { + "step": 230.0, + "loss/total": 0.0005067371060612542, + "loss/data": 0.0004600960113440758, + "loss/mse": 0.0004600960113440758, + "loss/smooth": 0.04583489762474833, + "loss/activation_l2": 0.08061970924300503, + "loss/activation_l2_penalty": 8.061970924300503e-07, + "loss/regularization": 4.664109471717838e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027486181848211846, + "target/error_rms": 0.0371522278474956, + "target/error_max": 0.21473170753470924, + "activation_inv/rms": 0.2839361006335845, + "activation_inv/min": -3.573153388881689, + "activation_inv/max": 3.558313165789026, + "grad/norm": 0.0001619020771371064, + "grad/abs_max": 1.1521201312811372e-05, + "optimizer/steps": 230.0, + "optimizer/lr": 0.03, + "best/step": 230.0, + "best/loss": 0.0005067371060612542, + "best/target_error_max": 0.21473170753470924, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.21473170753470924, + "lowest/target_error_max_step": 230.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.395976389998395, + "time/backward_s": 8.283532515000843, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1681, + "forward/grad_norm": 0.0014846628747852246, + "forward/relative_grad_norm": 0.0004821275841213993, + "forward/grad_norm_first": 3.079398324596561, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5022908022448995e-07, + "adjoint/relative_residual": 0.0004996884722407556, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5022908022448995e-07, + "adjoint/solver_0/relative_residual": 0.0004996884722407556, + "adjoint/residual_converged": true, + "time/series_s": 1.1966005780050182, + "time/step_s": 20.88994587200432 + }, + { + "step": 231.0, + "loss/total": 0.0005170594564208725, + "loss/data": 0.0004704507195079977, + "loss/mse": 0.0004704507195079977, + "loss/smooth": 0.04579991903173231, + "loss/activation_l2": 0.08088178811424665, + "loss/activation_l2_penalty": 8.088178811424665e-07, + "loss/regularization": 4.660873691287478e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028109166443416305, + "target/error_rms": 0.03756796718647408, + "target/error_max": 0.21424211524069822, + "activation_inv/rms": 0.2843972364743488, + "activation_inv/min": -3.5915694018372104, + "activation_inv/max": 3.5668037770256196, + "grad/norm": 0.00017383876301535768, + "grad/abs_max": 1.4498300366721224e-05, + "optimizer/steps": 231.0, + "optimizer/lr": 0.03, + "best/step": 231.0, + "best/loss": 0.0005170594564208725, + "best/target_error_max": 0.21424211524069822, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.21424211524069822, + "lowest/target_error_max_step": 231.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.000468605998321, + "time/backward_s": 8.782338515004085, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1593, + "forward/grad_norm": 0.0015936477314537662, + "forward/relative_grad_norm": 0.00048633306414685415, + "forward/grad_norm_first": 3.2768648667748095, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.510587471129644e-07, + "adjoint/relative_residual": 0.0004968878370164621, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.510587471129644e-07, + "adjoint/solver_0/relative_residual": 0.0004968878370164621, + "adjoint/residual_converged": true, + "time/series_s": 1.2671453489965643, + "time/step_s": 21.063230344007025 + }, + { + "step": 232.0, + "loss/total": 0.0005624285900882015, + "loss/data": 0.0005158321589863992, + "loss/mse": 0.0005158321589863992, + "loss/smooth": 0.0457879413887083, + "loss/activation_l2": 0.08084897130940664, + "loss/activation_l2_penalty": 8.084897130940665e-07, + "loss/regularization": 4.659643110180237e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02987859249080636, + "target/error_rms": 0.03933823174672697, + "target/error_max": 0.21202648967995316, + "activation_inv/rms": 0.2843395352556634, + "activation_inv/min": -3.6003387412687515, + "activation_inv/max": 3.579401534787514, + "grad/norm": 0.0002245784874525438, + "grad/abs_max": 2.20557662617404e-05, + "optimizer/steps": 232.0, + "optimizer/lr": 0.03, + "best/step": 232.0, + "best/loss": 0.0005624285900882015, + "best/target_error_max": 0.21202648967995316, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.21202648967995316, + "lowest/target_error_max_step": 232.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.596853160997853, + "time/backward_s": 8.73856018800143, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1633, + "forward/grad_norm": 0.0017581595707652719, + "forward/relative_grad_norm": 0.0004842205711607974, + "forward/grad_norm_first": 3.630906399846923, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4892430530373427e-07, + "adjoint/relative_residual": 0.00046782231323431274, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4892430530373427e-07, + "adjoint/solver_0/relative_residual": 0.00046782231323431274, + "adjoint/residual_converged": true, + "time/series_s": 1.226364841000759, + "time/step_s": 21.57649848300207 + }, + { + "step": 233.0, + "loss/total": 0.0006687932047790572, + "loss/data": 0.0006221738894100618, + "loss/mse": 0.0006221738894100618, + "loss/smooth": 0.045806260148831324, + "loss/activation_l2": 0.08130552201640504, + "loss/activation_l2_penalty": 8.130552201640505e-07, + "loss/regularization": 4.661931536899537e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03289251868523048, + "target/error_rms": 0.04320325992596144, + "target/error_max": 0.2157835840986291, + "activation_inv/rms": 0.28514123170177447, + "activation_inv/min": -3.6150089539268904, + "activation_inv/max": 3.5832820813377246, + "grad/norm": 0.00030536222151847625, + "grad/abs_max": 3.311900686094899e-05, + "optimizer/steps": 233.0, + "optimizer/lr": 0.03, + "best/step": 232.0, + "best/loss": 0.0005624285900882015, + "best/target_error_max": 0.21202648967995316, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.21202648967995316, + "lowest/target_error_max_step": 232.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.401222152999253, + "time/backward_s": 8.78281925200281, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1645, + "forward/grad_norm": 0.0020506622955248585, + "forward/relative_grad_norm": 0.0004877027199779016, + "forward/grad_norm_first": 4.204738279125809, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5581796116233835e-07, + "adjoint/relative_residual": 0.0004456882484288253, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5581796116233835e-07, + "adjoint/solver_0/relative_residual": 0.0004456882484288253, + "adjoint/residual_converged": true, + "time/series_s": 1.1538269810043857, + "time/step_s": 21.345166690996848 + }, + { + "step": 234.0, + "loss/total": 0.0007845697227290368, + "loss/data": 0.0007378485390954881, + "loss/mse": 0.0007378485390954881, + "loss/smooth": 0.04590941187666677, + "loss/activation_l2": 0.08117717568819671, + "loss/activation_l2_penalty": 8.117717568819672e-07, + "loss/regularization": 4.672118363354874e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03591788107425774, + "target/error_rms": 0.04704833277903123, + "target/error_max": 0.2094613026328535, + "activation_inv/rms": 0.2849160853447848, + "activation_inv/min": -3.632050086163138, + "activation_inv/max": 3.6070187714401305, + "grad/norm": 0.0003745339980280587, + "grad/abs_max": 4.16372402001713e-05, + "optimizer/steps": 234.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.535023548000026, + "time/backward_s": 8.648850999001297, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1663, + "forward/grad_norm": 0.0024127506011746994, + "forward/relative_grad_norm": 0.00046883954435894293, + "forward/grad_norm_first": 5.1462182109099155, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.66560895037907e-07, + "adjoint/relative_residual": 0.0004374807936760358, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.66560895037907e-07, + "adjoint/solver_0/relative_residual": 0.0004374807936760358, + "adjoint/residual_converged": true, + "time/series_s": 1.2466276999984984, + "time/step_s": 21.442960413005494 + }, + { + "step": 235.0, + "loss/total": 0.0007430906208126013, + "loss/data": 0.0006961799428084171, + "loss/mse": 0.0006961799428084171, + "loss/smooth": 0.04609251932096136, + "loss/activation_l2": 0.08181586832228227, + "loss/activation_l2_penalty": 8.181586832228228e-07, + "loss/regularization": 4.6910678004184185e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034553696438104804, + "target/error_rms": 0.04570054516551472, + "target/error_max": 0.22428031707001594, + "activation_inv/rms": 0.28603473272014057, + "activation_inv/min": -3.636490033769393, + "activation_inv/max": 3.60530212296685, + "grad/norm": 0.00034881350337928954, + "grad/abs_max": 4.0768271137137556e-05, + "optimizer/steps": 235.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.903172308004287, + "time/backward_s": 8.554069341997092, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1755, + "forward/grad_norm": 0.002643237114414657, + "forward/relative_grad_norm": 0.00047668652229017767, + "forward/grad_norm_first": 5.545021708848767, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8177062342444387e-07, + "adjoint/relative_residual": 0.0004915101599913299, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8177062342444387e-07, + "adjoint/solver_0/relative_residual": 0.0004915101599913299, + "adjoint/residual_converged": true, + "time/series_s": 1.1509887809952488, + "time/step_s": 21.615342673998384 + }, + { + "step": 236.0, + "loss/total": 0.0006257217616973305, + "loss/data": 0.0005787101803590688, + "loss/mse": 0.0005787101803590688, + "loss/smooth": 0.04619477197472168, + "loss/activation_l2": 0.08168093635400116, + "loss/activation_l2_penalty": 8.168093635400116e-07, + "loss/regularization": 4.701158133826169e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03170006047288222, + "target/error_rms": 0.04166689982560745, + "target/error_max": 0.21138205797280696, + "activation_inv/rms": 0.2857987689861542, + "activation_inv/min": -3.66305939904529, + "activation_inv/max": 3.633492809063273, + "grad/norm": 0.00028159135916083745, + "grad/abs_max": 3.059581192664532e-05, + "optimizer/steps": 236.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 11.905178480999894, + "time/backward_s": 8.463115589998779, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1711, + "forward/grad_norm": 0.0024082612409297008, + "forward/relative_grad_norm": 0.0004791297788994489, + "forward/grad_norm_first": 5.0263234451038015, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5538873475701503e-07, + "adjoint/relative_residual": 0.00046084886860636086, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5538873475701503e-07, + "adjoint/solver_0/relative_residual": 0.00046084886860636086, + "adjoint/residual_converged": true, + "time/series_s": 1.2391134960053023, + "time/step_s": 21.61450254000374 + }, + { + "step": 237.0, + "loss/total": 0.0005735564914142726, + "loss/data": 0.0005265598449905053, + "loss/mse": 0.0005265598449905053, + "loss/smooth": 0.04617548996890959, + "loss/activation_l2": 0.08211564548576838, + "loss/activation_l2_penalty": 8.211564548576839e-07, + "loss/regularization": 4.699664642376728e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029674297880816297, + "target/error_rms": 0.039745182537906605, + "target/error_max": 0.22217993182112733, + "activation_inv/rms": 0.28655827589823396, + "activation_inv/min": -3.661238522238094, + "activation_inv/max": 3.6345179030926764, + "grad/norm": 0.00024887790502681586, + "grad/abs_max": 2.7449634408709198e-05, + "optimizer/steps": 237.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 11.754550024998025, + "time/backward_s": 8.603387284994824, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1643, + "forward/grad_norm": 0.002128228834506487, + "forward/relative_grad_norm": 0.0004945275356892736, + "forward/grad_norm_first": 4.3035598241059665, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3548403450286675e-07, + "adjoint/relative_residual": 0.00042124407805992423, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3548403450286675e-07, + "adjoint/solver_0/relative_residual": 0.00042124407805992423, + "adjoint/residual_converged": true, + "time/series_s": 1.2474930890020914, + "time/step_s": 21.61291662199801 + }, + { + "step": 238.0, + "loss/total": 0.000628798573455347, + "loss/data": 0.000581785489372482, + "loss/mse": 0.000581785489372482, + "loss/smooth": 0.046192913045741656, + "loss/activation_l2": 0.0820171037123284, + "loss/activation_l2_penalty": 8.20171037123284e-07, + "loss/regularization": 4.701308408286494e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031969563478995495, + "target/error_rms": 0.041777463639113444, + "target/error_max": 0.21164918488886725, + "activation_inv/rms": 0.2863862840855484, + "activation_inv/min": -3.6924805943719177, + "activation_inv/max": 3.657989495833213, + "grad/norm": 0.0003049894180807945, + "grad/abs_max": 2.9453380084960678e-05, + "optimizer/steps": 238.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 11.762473463000788, + "time/backward_s": 8.838413759003743, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1668, + "forward/grad_norm": 0.0020054771181791655, + "forward/relative_grad_norm": 0.0004894508517778113, + "forward/grad_norm_first": 4.097402447855096, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.424883363352622e-07, + "adjoint/relative_residual": 0.00042147073978984333, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.424883363352622e-07, + "adjoint/solver_0/relative_residual": 0.00042147073978984333, + "adjoint/residual_converged": true, + "time/series_s": 1.1955132430011872, + "time/step_s": 21.803849871997954 + }, + { + "step": 239.0, + "loss/total": 0.0007863599031626905, + "loss/data": 0.0007392996276715996, + "loss/mse": 0.0007392996276715996, + "loss/smooth": 0.04623566097082112, + "loss/activation_l2": 0.08246145202698124, + "loss/activation_l2_penalty": 8.246145202698125e-07, + "loss/regularization": 4.706027549109094e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.0358451519395689, + "target/error_rms": 0.0470945738171055, + "target/error_max": 0.22044692787992357, + "activation_inv/rms": 0.2871610210787342, + "activation_inv/min": -3.680416684435068, + "activation_inv/max": 3.659043083360248, + "grad/norm": 0.0004015942480508955, + "grad/abs_max": 3.574153668737211e-05, + "optimizer/steps": 239.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 12.521234570005618, + "time/backward_s": 8.884781638997083, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1760, + "forward/grad_norm": 0.0022871592369606243, + "forward/relative_grad_norm": 0.00048261714246761585, + "forward/grad_norm_first": 4.739075834037734, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8899187433457348e-07, + "adjoint/relative_residual": 0.0004959095190691623, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8899187433457348e-07, + "adjoint/solver_0/relative_residual": 0.0004959095190691623, + "adjoint/residual_converged": true, + "time/series_s": 1.1623636850054027, + "time/step_s": 22.57795656199596 + }, + { + "step": 240.0, + "loss/total": 0.00092298569885392, + "loss/data": 0.0008757607869044044, + "loss/mse": 0.0008757607869044044, + "loss/smooth": 0.04640056558090328, + "loss/activation_l2": 0.08243463686123163, + "loss/activation_l2_penalty": 8.243463686123164e-07, + "loss/regularization": 4.72249119495156e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03909106657190993, + "target/error_rms": 0.05125702255021466, + "target/error_max": 0.21363502884479607, + "activation_inv/rms": 0.28711432716120533, + "activation_inv/min": -3.720402198053786, + "activation_inv/max": 3.6843837752801782, + "grad/norm": 0.0004657026933005792, + "grad/abs_max": 4.033155504712085e-05, + "optimizer/steps": 240.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 6.0, + "stopped": 0.0, + "time/forward_s": 11.729011815004924, + "time/backward_s": 8.997653214995808, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1677, + "forward/grad_norm": 0.002728090730804443, + "forward/relative_grad_norm": 0.0004868533733336319, + "forward/grad_norm_first": 5.603516130789816, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7719265836042998e-07, + "adjoint/relative_residual": 0.00042719143077466523, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7719265836042998e-07, + "adjoint/solver_0/relative_residual": 0.00042719143077466523, + "adjoint/residual_converged": true, + "time/series_s": 1.1794357870021486, + "time/step_s": 21.913394696006435 + }, + { + "step": 241.0, + "loss/total": 0.0008660092906548664, + "loss/data": 0.0008186525739644439, + "loss/mse": 0.0008186525739644439, + "loss/smooth": 0.046529017933657706, + "loss/activation_l2": 0.08276987567648467, + "loss/activation_l2_penalty": 8.276987567648467e-07, + "loss/regularization": 4.7356716690422556e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.037546739176433086, + "target/error_rms": 0.049557620220237894, + "target/error_max": 0.21976298406640576, + "activation_inv/rms": 0.28769754200633113, + "activation_inv/min": -3.7005415478259116, + "activation_inv/max": 3.6865879283147263, + "grad/norm": 0.0004489903375618286, + "grad/abs_max": 3.955182596048549e-05, + "optimizer/steps": 241.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 7.0, + "stopped": 0.0, + "time/forward_s": 12.066496279003331, + "time/backward_s": 9.061215574001835, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1725, + "forward/grad_norm": 0.0025451636094784113, + "forward/relative_grad_norm": 0.00047255898836955345, + "forward/grad_norm_first": 5.385917255028545, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7420988859926984e-07, + "adjoint/relative_residual": 0.0004344027275961017, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7420988859926984e-07, + "adjoint/solver_0/relative_residual": 0.0004344027275961017, + "adjoint/residual_converged": true, + "time/series_s": 1.171695215998625, + "time/step_s": 22.30683523799962 + }, + { + "step": 242.0, + "loss/total": 0.0008088293885336659, + "loss/data": 0.0007613490418360001, + "loss/mse": 0.0007613490418360001, + "loss/smooth": 0.04665122066940012, + "loss/activation_l2": 0.08291260282657505, + "loss/activation_l2_penalty": 8.291260282657506e-07, + "loss/regularization": 4.7480346697665876e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03584206762017567, + "target/error_rms": 0.047791705614133505, + "target/error_max": 0.2136751334234245, + "activation_inv/rms": 0.2879454858589991, + "activation_inv/min": -3.7313251231033284, + "activation_inv/max": 3.696349824417, + "grad/norm": 0.00044807935174123384, + "grad/abs_max": 3.513379593627813e-05, + "optimizer/steps": 242.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 8.0, + "stopped": 0.0, + "time/forward_s": 12.886083887002314, + "time/backward_s": 9.183835593998083, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1854, + "forward/grad_norm": 0.002436973133136736, + "forward/relative_grad_norm": 0.0004989816401477723, + "forward/grad_norm_first": 4.883893388171621, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.92968489848962e-07, + "adjoint/relative_residual": 0.0004989580705567758, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.92968489848962e-07, + "adjoint/solver_0/relative_residual": 0.0004989580705567758, + "adjoint/residual_converged": true, + "time/series_s": 1.181713395002589, + "time/step_s": 23.25891572299588 + }, + { + "step": 243.0, + "loss/total": 0.0007955959011183142, + "loss/data": 0.0007480377045265054, + "loss/mse": 0.0007480377045265054, + "loss/smooth": 0.04672735811970664, + "loss/activation_l2": 0.0830838472102143, + "loss/activation_l2_penalty": 8.308384721021431e-07, + "loss/regularization": 4.7558196591808785e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03534239080360895, + "target/error_rms": 0.04737207102903056, + "target/error_max": 0.2182689203934035, + "activation_inv/rms": 0.2882426880429308, + "activation_inv/min": -3.7249026041469735, + "activation_inv/max": 3.7149096349094375, + "grad/norm": 0.0004588335923808917, + "grad/abs_max": 4.582812615395502e-05, + "optimizer/steps": 243.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 9.0, + "stopped": 0.0, + "time/forward_s": 11.58563259600487, + "time/backward_s": 9.098916767004994, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1669, + "forward/grad_norm": 0.0022993709582909486, + "forward/relative_grad_norm": 0.0004910689011153523, + "forward/grad_norm_first": 4.682379505337125, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8884196996380484e-07, + "adjoint/relative_residual": 0.0004926135280018562, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8884196996380484e-07, + "adjoint/solver_0/relative_residual": 0.0004926135280018562, + "adjoint/residual_converged": true, + "time/series_s": 1.228730433002056, + "time/step_s": 21.920764917005727 + }, + { + "step": 244.0, + "loss/total": 0.0007791544002427423, + "loss/data": 0.0007315105244717488, + "loss/mse": 0.0007315105244717488, + "loss/smooth": 0.046811110489045585, + "loss/activation_l2": 0.08327652819479056, + "loss/activation_l2_penalty": 8.327652819479057e-07, + "loss/regularization": 4.7643875770993496e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03475518129712963, + "target/error_rms": 0.0468458277055198, + "target/error_max": 0.211485692250202, + "activation_inv/rms": 0.28857672843594057, + "activation_inv/min": -3.7442634224394555, + "activation_inv/max": 3.705777000066758, + "grad/norm": 0.0004480280504208799, + "grad/abs_max": 5.423447531995418e-05, + "optimizer/steps": 244.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 10.0, + "stopped": 0.0, + "time/forward_s": 11.452429394004866, + "time/backward_s": 8.008618979998573, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1645, + "forward/grad_norm": 0.0023991019071461055, + "forward/relative_grad_norm": 0.0004975529661268896, + "forward/grad_norm_first": 4.821802040135499, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7886900089177348e-07, + "adjoint/relative_residual": 0.00047183955762322276, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7886900089177348e-07, + "adjoint/solver_0/relative_residual": 0.00047183955762322276, + "adjoint/residual_converged": true, + "time/series_s": 1.1776085270030308, + "time/step_s": 20.646528930003115 + }, + { + "step": 245.0, + "loss/total": 0.0007096042213310151, + "loss/data": 0.000661847146645515, + "loss/mse": 0.000661847146645515, + "loss/smooth": 0.04692278688862642, + "loss/activation_l2": 0.08342877968736695, + "loss/activation_l2_penalty": 8.342877968736696e-07, + "loss/regularization": 4.775707468550009e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03314829626413961, + "target/error_rms": 0.04455941471716774, + "target/error_max": 0.21979045879996817, + "activation_inv/rms": 0.28884040521950344, + "activation_inv/min": -3.7433671540119464, + "activation_inv/max": 3.7258855210510142, + "grad/norm": 0.0004247468308154995, + "grad/abs_max": 4.141675866237744e-05, + "optimizer/steps": 245.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 11.0, + "stopped": 0.0, + "time/forward_s": 12.091887591996056, + "time/backward_s": 9.342869389001862, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1728, + "forward/grad_norm": 0.0021734263895042123, + "forward/relative_grad_norm": 0.00048013079467784404, + "forward/grad_norm_first": 4.526738158843838, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6100371329333412e-07, + "adjoint/relative_residual": 0.00044650527943669235, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6100371329333412e-07, + "adjoint/solver_0/relative_residual": 0.00044650527943669235, + "adjoint/residual_converged": true, + "time/series_s": 1.18241174799914, + "time/step_s": 22.624565694997727 + }, + { + "step": 246.0, + "loss/total": 0.0006137494891750705, + "loss/data": 0.0005659173457126732, + "loss/mse": 0.0005659173457126732, + "loss/smooth": 0.046996037037473945, + "loss/activation_l2": 0.08361064249233213, + "loss/activation_l2_penalty": 8.361064249233214e-07, + "loss/regularization": 4.783214346239727e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03018686373452399, + "target/error_rms": 0.041203786684454374, + "target/error_max": 0.21181394987836896, + "activation_inv/rms": 0.28915504922503454, + "activation_inv/min": -3.7597129018353606, + "activation_inv/max": 3.720095008153831, + "grad/norm": 0.00032230106760347955, + "grad/abs_max": 3.5388062617525206e-05, + "optimizer/steps": 246.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 12.0, + "stopped": 0.0, + "time/forward_s": 11.967089754005428, + "time/backward_s": 8.926318705001904, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1724, + "forward/grad_norm": 0.0019478854682126472, + "forward/relative_grad_norm": 0.0004780847236499251, + "forward/grad_norm_first": 4.0743520381525, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5284956551155063e-07, + "adjoint/relative_residual": 0.0004584133556156639, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5284956551155063e-07, + "adjoint/solver_0/relative_residual": 0.0004584133556156639, + "adjoint/residual_converged": true, + "time/series_s": 1.1850644329970237, + "time/step_s": 22.085627976994147 + }, + { + "step": 247.0, + "loss/total": 0.0005231056354782074, + "loss/data": 0.00047531556440248544, + "loss/mse": 0.00047531556440248544, + "loss/smooth": 0.04695365264287455, + "loss/activation_l2": 0.08364184328474197, + "loss/activation_l2_penalty": 8.364184328474198e-07, + "loss/regularization": 4.7790071075721976e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027713946451914835, + "target/error_rms": 0.03776170935229834, + "target/error_max": 0.21747386754342896, + "activation_inv/rms": 0.2892089958572208, + "activation_inv/min": -3.7635162431630422, + "activation_inv/max": 3.737757871345321, + "grad/norm": 0.000229498054094378, + "grad/abs_max": 2.3406698155180934e-05, + "optimizer/steps": 247.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0005067371060612542, + "lowest/loss_step": 230.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 13.0, + "stopped": 0.0, + "time/forward_s": 11.788842338995892, + "time/backward_s": 9.321270555003139, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1689, + "forward/grad_norm": 0.0016222897519279607, + "forward/relative_grad_norm": 0.00047935539886472553, + "forward/grad_norm_first": 3.384315177778507, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4390752593588683e-07, + "adjoint/relative_residual": 0.00047093616763086685, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4390752593588683e-07, + "adjoint/solver_0/relative_residual": 0.00047093616763086685, + "adjoint/residual_converged": true, + "time/series_s": 1.1936363610002445, + "time/step_s": 22.311243394993653 + }, + { + "step": 248.0, + "loss/total": 0.0004684310001294904, + "loss/data": 0.00042065612009690014, + "loss/mse": 0.00042065612009690014, + "loss/smooth": 0.04693688615678996, + "loss/activation_l2": 0.08379938758002788, + "loss/activation_l2_penalty": 8.379938758002788e-07, + "loss/regularization": 4.7774880032590244e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.025388849302326152, + "target/error_rms": 0.0355241940132454, + "target/error_max": 0.21222372513360982, + "activation_inv/rms": 0.28948123873582526, + "activation_inv/min": -3.7748831214452934, + "activation_inv/max": 3.7378914441341005, + "grad/norm": 0.000148964611240252, + "grad/abs_max": 1.3732005102104091e-05, + "optimizer/steps": 248.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.0004684310001294904, + "lowest/loss_step": 248.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 14.0, + "stopped": 0.0, + "time/forward_s": 10.491028174001258, + "time/backward_s": 9.351447750996158, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1508, + "forward/grad_norm": 0.0014506018042852037, + "forward/relative_grad_norm": 0.0004997183489092934, + "forward/grad_norm_first": 2.9028387839897194, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.0958982705577407e-07, + "adjoint/relative_residual": 0.0003812204520051953, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.0958982705577407e-07, + "adjoint/solver_0/relative_residual": 0.0003812204520051953, + "adjoint/residual_converged": true, + "time/series_s": 1.2181014730012976, + "time/step_s": 21.069149392998952 + }, + { + "step": 249.0, + "loss/total": 0.000453943576629423, + "loss/data": 0.0004062664318824221, + "loss/mse": 0.0004062664318824221, + "loss/smooth": 0.04683858730465042, + "loss/activation_l2": 0.08385574423504556, + "loss/activation_l2_penalty": 8.385574423504556e-07, + "loss/regularization": 4.767714474700087e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.024961042339011818, + "target/error_rms": 0.034911306129207856, + "target/error_max": 0.2137682289014131, + "activation_inv/rms": 0.28957856314832003, + "activation_inv/min": -3.788605717205308, + "activation_inv/max": 3.753243843045933, + "grad/norm": 0.00013611210338331997, + "grad/abs_max": 1.162568067951465e-05, + "optimizer/steps": 249.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 15.0, + "stopped": 0.0, + "time/forward_s": 9.605275479007105, + "time/backward_s": 7.776678401998652, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1366, + "forward/grad_norm": 0.001142073823589574, + "forward/relative_grad_norm": 0.0004577685042304919, + "forward/grad_norm_first": 2.4948719997881863, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.2206328380573971e-07, + "adjoint/relative_residual": 0.000432065048362304, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.2206328380573971e-07, + "adjoint/solver_0/relative_residual": 0.000432065048362304, + "adjoint/residual_converged": true, + "time/series_s": 1.2103757200020482, + "time/step_s": 18.599476051997044 + }, + { + "step": 250.0, + "loss/total": 0.0004840807509890416, + "loss/data": 0.0004364805145065647, + "loss/mse": 0.0004364805145065647, + "loss/smooth": 0.04676127036166651, + "loss/activation_l2": 0.08389661208103909, + "loss/activation_l2_penalty": 8.389661208103909e-07, + "loss/regularization": 4.7600236482476896e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02559610487753065, + "target/error_rms": 0.03618620653674123, + "target/error_max": 0.21196543780010874, + "activation_inv/rms": 0.28964911890257683, + "activation_inv/min": -3.7926904823058156, + "activation_inv/max": 3.756630304699759, + "grad/norm": 0.000182751394581634, + "grad/abs_max": 1.65209060971331e-05, + "optimizer/steps": 250.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 16.0, + "stopped": 0.0, + "time/forward_s": 9.066933548005181, + "time/backward_s": 8.71492504899652, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1308, + "forward/grad_norm": 0.0011724558818177497, + "forward/relative_grad_norm": 0.00046878182973329925, + "forward/grad_norm_first": 2.501069383352138, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3540977946559062e-07, + "adjoint/relative_residual": 0.0004624205828672234, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3540977946559062e-07, + "adjoint/solver_0/relative_residual": 0.0004624205828672234, + "adjoint/residual_converged": true, + "time/series_s": 1.2250376960000722, + "time/step_s": 19.014100266998867 + }, + { + "step": 251.0, + "loss/total": 0.0005542658508102156, + "loss/data": 0.0005067279537018352, + "loss/mse": 0.0005067279537018352, + "loss/smooth": 0.046696303393936725, + "loss/activation_l2": 0.08415937144437134, + "loss/activation_l2_penalty": 8.415937144437135e-07, + "loss/regularization": 4.753789710838044e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028362858260424707, + "target/error_rms": 0.038989535276859937, + "target/error_max": 0.21114837156541047, + "activation_inv/rms": 0.29010234649925076, + "activation_inv/min": -3.813698468522375, + "activation_inv/max": 3.7733899828283115, + "grad/norm": 0.00026273510692524226, + "grad/abs_max": 2.0640283956196774e-05, + "optimizer/steps": 251.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 17.0, + "stopped": 0.0, + "time/forward_s": 9.190406308996899, + "time/backward_s": 8.455223834003846, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1327, + "forward/grad_norm": 0.0015681427916137238, + "forward/relative_grad_norm": 0.00048021491367254454, + "forward/grad_norm_first": 3.265502063692737, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5205668034018138e-07, + "adjoint/relative_residual": 0.00048193407020271105, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5205668034018138e-07, + "adjoint/solver_0/relative_residual": 0.00048193407020271105, + "adjoint/residual_converged": true, + "time/series_s": 1.155820733998553, + "time/step_s": 18.80851430799521 + }, + { + "step": 252.0, + "loss/total": 0.0006399976207620082, + "loss/data": 0.0005924689587199595, + "loss/mse": 0.0005924689587199595, + "loss/smooth": 0.04668802000396878, + "loss/activation_l2": 0.08406420380799369, + "loss/activation_l2_penalty": 8.40642038079937e-07, + "loss/regularization": 4.752866204204872e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030241758785260156, + "target/error_rms": 0.04215930355401852, + "target/error_max": 0.2105188174170741, + "activation_inv/rms": 0.28993827585883464, + "activation_inv/min": -3.8134925601992786, + "activation_inv/max": 3.770037239177759, + "grad/norm": 0.0003410108857188776, + "grad/abs_max": 4.447751668749315e-05, + "optimizer/steps": 252.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 18.0, + "stopped": 0.0, + "time/forward_s": 9.831823913002154, + "time/backward_s": 10.76892845799739, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1428, + "forward/grad_norm": 0.0020062566179289425, + "forward/relative_grad_norm": 0.0004904826113553224, + "forward/grad_norm_first": 4.090372566695421, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.637921524570078e-07, + "adjoint/relative_residual": 0.00048009794369630206, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.637921524570078e-07, + "adjoint/solver_0/relative_residual": 0.00048009794369630206, + "adjoint/residual_converged": true, + "time/series_s": 1.2199318209968624, + "time/step_s": 21.82776921599725 + }, + { + "step": 253.0, + "loss/total": 0.0006435925075908626, + "loss/data": 0.0005959838883067371, + "loss/mse": 0.0005959838883067371, + "loss/smooth": 0.04676334522540222, + "loss/activation_l2": 0.08452740587232087, + "loss/activation_l2_penalty": 8.452740587232088e-07, + "loss/regularization": 4.7608619284125434e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.030825318260781435, + "target/error_rms": 0.04228417747716291, + "target/error_max": 0.2099959269011362, + "activation_inv/rms": 0.2907359727868584, + "activation_inv/min": -3.840116163688945, + "activation_inv/max": 3.796242271683736, + "grad/norm": 0.0003466787555564822, + "grad/abs_max": 3.3705458659855616e-05, + "optimizer/steps": 253.0, + "optimizer/lr": 0.03, + "best/step": 234.0, + "best/loss": 0.0007845697227290368, + "best/target_error_max": 0.2094613026328535, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2094613026328535, + "lowest/target_error_max_step": 234.0, + "stagnation/no_improve_steps": 19.0, + "stopped": 0.0, + "time/forward_s": 10.795255591998284, + "time/backward_s": 8.04957264699624, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1453, + "forward/grad_norm": 0.0020165338911862403, + "forward/relative_grad_norm": 0.0004476078176718402, + "forward/grad_norm_first": 4.505135548514134, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.621168142286175e-07, + "adjoint/relative_residual": 0.0004737839642451276, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.621168142286175e-07, + "adjoint/solver_0/relative_residual": 0.0004737839642451276, + "adjoint/residual_converged": true, + "time/series_s": 1.0655209010001272, + "time/step_s": 19.917803569995158 + }, + { + "step": 254.0, + "loss/total": 0.0006122727836977257, + "loss/data": 0.0005647255865291343, + "loss/mse": 0.0005647255865291343, + "loss/smooth": 0.046703575470953135, + "loss/activation_l2": 0.08436216976383298, + "loss/activation_l2_penalty": 8.4362169763833e-07, + "loss/regularization": 4.754719716859146e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029614241905689228, + "target/error_rms": 0.04116037851608513, + "target/error_max": 0.20910993033664463, + "activation_inv/rms": 0.29045166510769566, + "activation_inv/min": -3.8412416061254264, + "activation_inv/max": 3.790689236506898, + "grad/norm": 0.0002955921741572311, + "grad/abs_max": 3.077492725869918e-05, + "optimizer/steps": 254.0, + "optimizer/lr": 0.03, + "best/step": 254.0, + "best/loss": 0.0006122727836977257, + "best/target_error_max": 0.20910993033664463, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20910993033664463, + "lowest/target_error_max_step": 254.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.275521556999593, + "time/backward_s": 8.576461044001917, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1478, + "forward/grad_norm": 0.0019249404568304055, + "forward/relative_grad_norm": 0.00045625548261005823, + "forward/grad_norm_first": 4.2189968782809535, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6371770528869988e-07, + "adjoint/relative_residual": 0.0004915259740978214, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6371770528869988e-07, + "adjoint/solver_0/relative_residual": 0.0004915259740978214, + "adjoint/residual_converged": true, + "time/series_s": 1.135332081001252, + "time/step_s": 19.9994942609992 + }, + { + "step": 255.0, + "loss/total": 0.0005782692732645167, + "loss/data": 0.0005307113705053551, + "loss/mse": 0.0005307113705053551, + "loss/smooth": 0.046709961466521885, + "loss/activation_l2": 0.08479412926396646, + "loss/activation_l2_penalty": 8.479412926396646e-07, + "loss/regularization": 4.755790275916155e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028935921115476524, + "target/error_rms": 0.03990155525184533, + "target/error_max": 0.21035254654568938, + "activation_inv/rms": 0.29119431530159795, + "activation_inv/min": -3.866585738033058, + "activation_inv/max": 3.8128409821982268, + "grad/norm": 0.00028599363587353575, + "grad/abs_max": 3.1731447710114145e-05, + "optimizer/steps": 255.0, + "optimizer/lr": 0.03, + "best/step": 254.0, + "best/loss": 0.0006122727836977257, + "best/target_error_max": 0.20910993033664463, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20910993033664463, + "lowest/target_error_max_step": 254.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 10.165702600999794, + "time/backward_s": 8.966053528994962, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1400, + "forward/grad_norm": 0.0017843790040948048, + "forward/relative_grad_norm": 0.00047103533366114946, + "forward/grad_norm_first": 3.788206269422753, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4660480198469912e-07, + "adjoint/relative_residual": 0.00045403418800898785, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4660480198469912e-07, + "adjoint/solver_0/relative_residual": 0.00045403418800898785, + "adjoint/residual_converged": true, + "time/series_s": 1.16865654400317, + "time/step_s": 20.307862319001288 + }, + { + "step": 256.0, + "loss/total": 0.0005691799312903817, + "loss/data": 0.0005216784657665544, + "loss/mse": 0.0005216784657665544, + "loss/smooth": 0.04665489044926611, + "loss/activation_l2": 0.0846575074561239, + "loss/activation_l2_penalty": 8.46575074561239e-07, + "loss/regularization": 4.750146552382735e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02870448631573249, + "target/error_rms": 0.03956052827376883, + "target/error_max": 0.20753302722044242, + "activation_inv/rms": 0.2909596320043794, + "activation_inv/min": -3.8639154100291933, + "activation_inv/max": 3.8111454417868154, + "grad/norm": 0.00026032491339683135, + "grad/abs_max": 3.0122395211389372e-05, + "optimizer/steps": 256.0, + "optimizer/lr": 0.03, + "best/step": 256.0, + "best/loss": 0.0005691799312903817, + "best/target_error_max": 0.20753302722044242, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20753302722044242, + "lowest/target_error_max_step": 256.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.440780010001617, + "time/backward_s": 8.373608473004424, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1704, + "forward/grad_norm": 0.0017399009773640076, + "forward/relative_grad_norm": 0.00048801873648717734, + "forward/grad_norm_first": 3.565233970089022, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.497394294776486e-07, + "adjoint/relative_residual": 0.00046773974591633304, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.497394294776486e-07, + "adjoint/solver_0/relative_residual": 0.00046773974591633304, + "adjoint/residual_converged": true, + "time/series_s": 1.2526939659946947, + "time/step_s": 21.080251127001247 + }, + { + "step": 257.0, + "loss/total": 0.0005459847950313422, + "loss/data": 0.0004984413470715728, + "loss/mse": 0.0004984413470715728, + "loss/smooth": 0.04669232974635353, + "loss/activation_l2": 0.0851118213415796, + "loss/activation_l2_penalty": 8.511182134157961e-07, + "loss/regularization": 4.754344795976933e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028971282197672765, + "target/error_rms": 0.03866941997515244, + "target/error_max": 0.20849610205040042, + "activation_inv/rms": 0.2917393037312244, + "activation_inv/min": -3.8878300615145784, + "activation_inv/max": 3.8282343883365346, + "grad/norm": 0.00022741984942368555, + "grad/abs_max": 1.4453430833937017e-05, + "optimizer/steps": 257.0, + "optimizer/lr": 0.03, + "best/step": 256.0, + "best/loss": 0.0005691799312903817, + "best/target_error_max": 0.20753302722044242, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20753302722044242, + "lowest/target_error_max_step": 256.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.413655292999465, + "time/backward_s": 8.596685698001238, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1688, + "forward/grad_norm": 0.0017152597745802316, + "forward/relative_grad_norm": 0.00047808530707178147, + "forward/grad_norm_first": 3.58776927299022, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.370368745422249e-07, + "adjoint/relative_residual": 0.00043792523399193404, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.370368745422249e-07, + "adjoint/solver_0/relative_residual": 0.00043792523399193404, + "adjoint/residual_converged": true, + "time/series_s": 1.1609609779989114, + "time/step_s": 21.178546374998405 + }, + { + "step": 258.0, + "loss/total": 0.0005599766024720913, + "loss/data": 0.0005124968249155948, + "loss/mse": 0.0005124968249155948, + "loss/smooth": 0.046630171929322034, + "loss/activation_l2": 0.08496056271744999, + "loss/activation_l2_penalty": 8.496056271745e-07, + "loss/regularization": 4.7479777556496536e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029925424256809854, + "target/error_rms": 0.03921084639161446, + "target/error_max": 0.23966012908842166, + "activation_inv/rms": 0.291479952513805, + "activation_inv/min": -3.8868582757421595, + "activation_inv/max": 3.8301102923921455, + "grad/norm": 0.00021873227961528315, + "grad/abs_max": 1.2864644266414755e-05, + "optimizer/steps": 258.0, + "optimizer/lr": 0.03, + "best/step": 256.0, + "best/loss": 0.0005691799312903817, + "best/target_error_max": 0.20753302722044242, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20753302722044242, + "lowest/target_error_max_step": 256.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 12.32531743599975, + "time/backward_s": 8.677903974996298, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1813, + "forward/grad_norm": 0.0017059893849282629, + "forward/relative_grad_norm": 0.00046011191176814154, + "forward/grad_norm_first": 3.7077705255932187, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4606863578876246e-07, + "adjoint/relative_residual": 0.0004603423600593965, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4606863578876246e-07, + "adjoint/solver_0/relative_residual": 0.0004603423600593965, + "adjoint/residual_converged": true, + "time/series_s": 1.2212427579943324, + "time/step_s": 22.23171054499835 + }, + { + "step": 259.0, + "loss/total": 0.0006031051628456367, + "loss/data": 0.0005556079321467611, + "loss/mse": 0.0005556079321467611, + "loss/smooth": 0.046643971991365815, + "loss/activation_l2": 0.08532587075097349, + "loss/activation_l2_penalty": 8.53258707509735e-07, + "loss/regularization": 4.749723069887555e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031744872317489285, + "target/error_rms": 0.04082675343987424, + "target/error_max": 0.2065501803386301, + "activation_inv/rms": 0.2921059238546413, + "activation_inv/min": -3.9101756892454023, + "activation_inv/max": 3.8403794465176015, + "grad/norm": 0.00026091396513654896, + "grad/abs_max": 1.9956419678180825e-05, + "optimizer/steps": 259.0, + "optimizer/lr": 0.03, + "best/step": 259.0, + "best/loss": 0.0006031051628456367, + "best/target_error_max": 0.2065501803386301, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2065501803386301, + "lowest/target_error_max_step": 259.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.919344604000798, + "time/backward_s": 8.336364569004218, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1623, + "forward/grad_norm": 0.002019459915177894, + "forward/relative_grad_norm": 0.000490243297258709, + "forward/grad_norm_first": 4.119301429453698, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5548139245011006e-07, + "adjoint/relative_residual": 0.00047061282583256295, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5548139245011006e-07, + "adjoint/solver_0/relative_residual": 0.00047061282583256295, + "adjoint/residual_converged": true, + "time/series_s": 1.166448848998698, + "time/step_s": 20.43896175599366 + }, + { + "step": 260.0, + "loss/total": 0.0007284654891910013, + "loss/data": 0.0006809071503741695, + "loss/mse": 0.0006809071503741695, + "loss/smooth": 0.046704735989662086, + "loss/activation_l2": 0.08536028271696297, + "loss/activation_l2_penalty": 8.536028271696297e-07, + "loss/regularization": 4.7558338816831715e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.034997503111455934, + "target/error_rms": 0.04519647609186483, + "target/error_max": 0.2083505659996269, + "activation_inv/rms": 0.29216482114889014, + "activation_inv/min": -3.909287131398703, + "activation_inv/max": 3.8548344986938043, + "grad/norm": 0.0003567074597815912, + "grad/abs_max": 3.801738010266029e-05, + "optimizer/steps": 260.0, + "optimizer/lr": 0.03, + "best/step": 259.0, + "best/loss": 0.0006031051628456367, + "best/target_error_max": 0.2065501803386301, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2065501803386301, + "lowest/target_error_max_step": 259.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 10.812261054001283, + "time/backward_s": 8.478898457004107, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1593, + "forward/grad_norm": 0.0022175499020268353, + "forward/relative_grad_norm": 0.00048563864475628963, + "forward/grad_norm_first": 4.566255025152866, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7719499852137036e-07, + "adjoint/relative_residual": 0.00048448135516288737, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7719499852137036e-07, + "adjoint/solver_0/relative_residual": 0.00048448135516288737, + "adjoint/residual_converged": true, + "time/series_s": 1.1687820839943015, + "time/step_s": 20.46696322200296 + }, + { + "step": 261.0, + "loss/total": 0.0008459407461068835, + "loss/data": 0.0007981681961610704, + "loss/mse": 0.0007981681961610704, + "loss/smooth": 0.04691455540127877, + "loss/activation_l2": 0.08579945445343663, + "loss/activation_l2_penalty": 8.579945445343664e-07, + "loss/regularization": 4.777254994581314e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03734915543708019, + "target/error_rms": 0.048933675403378514, + "target/error_max": 0.2064236244760629, + "activation_inv/rms": 0.29291543908342665, + "activation_inv/min": -3.9322106130210264, + "activation_inv/max": 3.844631331848628, + "grad/norm": 0.00043104748003557335, + "grad/abs_max": 5.5313738579046965e-05, + "optimizer/steps": 261.0, + "optimizer/lr": 0.03, + "best/step": 261.0, + "best/loss": 0.0008459407461068835, + "best/target_error_max": 0.2064236244760629, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2064236244760629, + "lowest/target_error_max_step": 261.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 10.737426587002119, + "time/backward_s": 8.33776377599861, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1583, + "forward/grad_norm": 0.0025463408683082276, + "forward/relative_grad_norm": 0.0004909247795900122, + "forward/grad_norm_first": 5.18682489491519, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.798326238980445e-07, + "adjoint/relative_residual": 0.0004541411212517811, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.798326238980445e-07, + "adjoint/solver_0/relative_residual": 0.0004541411212517811, + "adjoint/residual_converged": true, + "time/series_s": 1.1872893549953005, + "time/step_s": 20.275310328004707 + }, + { + "step": 262.0, + "loss/total": 0.0007967323725411958, + "loss/data": 0.0007487332967131928, + "loss/mse": 0.0007487332967131928, + "loss/smooth": 0.047140418904989635, + "loss/activation_l2": 0.08586569230133737, + "loss/activation_l2_penalty": 8.586569230133737e-07, + "loss/regularization": 4.799907582800301e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.036008530238760716, + "target/error_rms": 0.04739409129986119, + "target/error_max": 0.21066810910342373, + "activation_inv/rms": 0.29302848377135177, + "activation_inv/min": -3.9342251943374915, + "activation_inv/max": 3.875459788869238, + "grad/norm": 0.0004391840214879878, + "grad/abs_max": 6.50079897564061e-05, + "optimizer/steps": 262.0, + "optimizer/lr": 0.03, + "best/step": 261.0, + "best/loss": 0.0008459407461068835, + "best/target_error_max": 0.2064236244760629, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2064236244760629, + "lowest/target_error_max_step": 261.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.05121758000314, + "time/backward_s": 8.786715570000524, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1646, + "forward/grad_norm": 0.0025860533300784646, + "forward/relative_grad_norm": 0.00047174127352551427, + "forward/grad_norm_first": 5.481931463727642, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.889360224570725e-07, + "adjoint/relative_residual": 0.0004926298811353074, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.889360224570725e-07, + "adjoint/solver_0/relative_residual": 0.0004926298811353074, + "adjoint/residual_converged": true, + "time/series_s": 1.1273696360003669, + "time/step_s": 20.972459675998834 + }, + { + "step": 263.0, + "loss/total": 0.000680845311587158, + "loss/data": 0.0006327254593778548, + "loss/mse": 0.0006327254593778548, + "loss/smooth": 0.04725745534891106, + "loss/activation_l2": 0.08623968603921786, + "loss/activation_l2_penalty": 8.623968603921787e-07, + "loss/regularization": 4.811985220930323e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03277011468409792, + "target/error_rms": 0.043568066036187146, + "target/error_max": 0.2057142691507339, + "activation_inv/rms": 0.293665942933834, + "activation_inv/min": -3.9496249368742, + "activation_inv/max": 3.856055215122947, + "grad/norm": 0.00037100124227678477, + "grad/abs_max": 4.77361085450864e-05, + "optimizer/steps": 263.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.197722691998933, + "time/backward_s": 8.768420039006742, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1662, + "forward/grad_norm": 0.002400032624763825, + "forward/relative_grad_norm": 0.0004922844877468677, + "forward/grad_norm_first": 4.875296062544063, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.71800810094783e-07, + "adjoint/relative_residual": 0.00048728956207357986, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.71800810094783e-07, + "adjoint/solver_0/relative_residual": 0.00048728956207357986, + "adjoint/residual_converged": true, + "time/series_s": 1.1695847700029844, + "time/step_s": 21.148251351994986 + }, + { + "step": 264.0, + "loss/total": 0.0007394366765923888, + "loss/data": 0.000691291705180847, + "loss/mse": 0.000691291705180847, + "loss/smooth": 0.047282481838199865, + "loss/activation_l2": 0.0862489573341868, + "loss/activation_l2_penalty": 8.624895733418681e-07, + "loss/regularization": 4.814497141154173e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03349720964388865, + "target/error_rms": 0.04553981901086719, + "target/error_max": 0.2110368438257167, + "activation_inv/rms": 0.2936817279542376, + "activation_inv/min": -3.959781488288977, + "activation_inv/max": 3.883809357535165, + "grad/norm": 0.00045300129984941203, + "grad/abs_max": 4.76928922902249e-05, + "optimizer/steps": 264.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 13.045657611000934, + "time/backward_s": 8.897864769001899, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1930, + "forward/grad_norm": 0.002093786254899809, + "forward/relative_grad_norm": 0.00048474425416853307, + "forward/grad_norm_first": 4.319362709087117, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.776634109781072e-07, + "adjoint/relative_residual": 0.00048209972006330666, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.776634109781072e-07, + "adjoint/solver_0/relative_residual": 0.00048209972006330666, + "adjoint/residual_converged": true, + "time/series_s": 1.1322376989992335, + "time/step_s": 23.082875200998387 + }, + { + "step": 265.0, + "loss/total": 0.0007332823733810875, + "loss/data": 0.0006850219832858694, + "loss/mse": 0.0006850219832858694, + "loss/smooth": 0.04739405010651232, + "loss/activation_l2": 0.08663399887057686, + "loss/activation_l2_penalty": 8.663399887057687e-07, + "loss/regularization": 4.826039009521809e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03364534826738413, + "target/error_rms": 0.04533283522853614, + "target/error_max": 0.20609046026925437, + "activation_inv/rms": 0.2943365401552734, + "activation_inv/min": -3.982093845188435, + "activation_inv/max": 3.867918316649846, + "grad/norm": 0.000682415614060371, + "grad/abs_max": 0.00022075611966546906, + "optimizer/steps": 265.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 2.0, + "stopped": 0.0, + "time/forward_s": 11.137023730996589, + "time/backward_s": 8.428532780999376, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1646, + "forward/grad_norm": 0.0021093204859860717, + "forward/relative_grad_norm": 0.00045517258040634955, + "forward/grad_norm_first": 4.634111492618915, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.7467232568307834e-07, + "adjoint/relative_residual": 0.0004761473861794877, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.7467232568307834e-07, + "adjoint/solver_0/relative_residual": 0.0004761473861794877, + "adjoint/residual_converged": true, + "time/series_s": 1.2066471290017944, + "time/step_s": 20.779242472002807 + }, + { + "step": 266.0, + "loss/total": 0.0006406473417679582, + "loss/data": 0.000592344569574743, + "loss/mse": 0.000592344569574743, + "loss/smooth": 0.04743713504555488, + "loss/activation_l2": 0.08656371476602932, + "loss/activation_l2_penalty": 8.656371476602933e-07, + "loss/regularization": 4.830277219321517e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03188978049519035, + "target/error_rms": 0.04215487763858684, + "target/error_max": 0.21144592636943646, + "activation_inv/rms": 0.2942171218097773, + "activation_inv/min": -3.989975504534811, + "activation_inv/max": 3.8928035070327374, + "grad/norm": 0.000372048015596684, + "grad/abs_max": 7.559452807573433e-05, + "optimizer/steps": 266.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 3.0, + "stopped": 0.0, + "time/forward_s": 11.05252945200482, + "time/backward_s": 8.791699362001964, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1628, + "forward/grad_norm": 0.002219422466464998, + "forward/relative_grad_norm": 0.000450518308949002, + "forward/grad_norm_first": 4.926375737409228, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6131637594454298e-07, + "adjoint/relative_residual": 0.00047289073732139974, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6131637594454298e-07, + "adjoint/solver_0/relative_residual": 0.00047289073732139974, + "adjoint/residual_converged": true, + "time/series_s": 1.2178909089998342, + "time/step_s": 21.069301463998272 + }, + { + "step": 267.0, + "loss/total": 0.0011739332783238443, + "loss/data": 0.0011254874098209633, + "loss/mse": 0.0011254874098209633, + "loss/smooth": 0.04757502278929171, + "loss/activation_l2": 0.08708457135893488, + "loss/activation_l2_penalty": 8.708457135893489e-07, + "loss/regularization": 4.8445868502881064e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.04220801709181421, + "target/error_rms": 0.05810733369776047, + "target/error_max": 0.28712166931925137, + "activation_inv/rms": 0.2951009511318709, + "activation_inv/min": -4.00594406347388, + "activation_inv/max": 3.882705562426793, + "grad/norm": 0.0006156609602110655, + "grad/abs_max": 0.00014276434709010197, + "optimizer/steps": 267.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 4.0, + "stopped": 0.0, + "time/forward_s": 16.945427003993245, + "time/backward_s": 8.766799919001642, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 2503, + "forward/grad_norm": 0.0019860315417832403, + "forward/relative_grad_norm": 0.000491272756228605, + "forward/grad_norm_first": 4.042625031824635, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 2.281260886342749e-07, + "adjoint/relative_residual": 0.000485147938156991, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 2.281260886342749e-07, + "adjoint/solver_0/relative_residual": 0.000485147938156991, + "adjoint/residual_converged": true, + "time/series_s": 1.146733437999501, + "time/step_s": 26.866115484001057 + }, + { + "step": 268.0, + "loss/total": 0.0009365975174530684, + "loss/data": 0.000888038045012464, + "loss/mse": 0.000888038045012464, + "loss/smooth": 0.0476918728580146, + "loss/activation_l2": 0.08675995825898365, + "loss/activation_l2_penalty": 8.675995825898366e-07, + "loss/regularization": 4.855947244060444e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.038300657402582365, + "target/error_rms": 0.05161505725112965, + "target/error_max": 0.2266801680653171, + "activation_inv/rms": 0.2945504341517487, + "activation_inv/min": -4.044575232241155, + "activation_inv/max": 3.911048851025315, + "grad/norm": 0.00047613380531151827, + "grad/abs_max": 5.1374364500597125e-05, + "optimizer/steps": 268.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 5.0, + "stopped": 0.0, + "time/forward_s": 12.233067938999739, + "time/backward_s": 8.857109147997107, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1803, + "forward/grad_norm": 0.003492879465023442, + "forward/relative_grad_norm": 0.0004990773227489597, + "forward/grad_norm_first": 6.998673964555971, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9425134741794784e-07, + "adjoint/relative_residual": 0.0004650694480522976, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9425134741794784e-07, + "adjoint/solver_0/relative_residual": 0.0004650694480522976, + "adjoint/residual_converged": true, + "time/series_s": 1.2183472760007135, + "time/step_s": 22.31567274400004 + }, + { + "step": 269.0, + "loss/total": 0.0008825612413615824, + "loss/data": 0.0008338006787663387, + "loss/mse": 0.0008338006787663387, + "loss/smooth": 0.0478845303942083, + "loss/activation_l2": 0.08760322010353777, + "loss/activation_l2_penalty": 8.760322010353778e-07, + "loss/regularization": 4.876056259524368e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03710779929179139, + "target/error_rms": 0.050014018397835376, + "target/error_max": 0.2388613771352736, + "activation_inv/rms": 0.29597841154979154, + "activation_inv/min": -4.034805613153971, + "activation_inv/max": 3.900484804449028, + "grad/norm": 0.000489260368150089, + "grad/abs_max": 7.101814013324032e-05, + "optimizer/steps": 269.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 6.0, + "stopped": 0.0, + "time/forward_s": 11.05394309500116, + "time/backward_s": 8.347681675004424, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1638, + "forward/grad_norm": 0.002927192349841607, + "forward/relative_grad_norm": 0.0004886086858735971, + "forward/grad_norm_first": 5.990872521244681, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8957097552887137e-07, + "adjoint/relative_residual": 0.00046839287386172586, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8957097552887137e-07, + "adjoint/solver_0/relative_residual": 0.00046839287386172586, + "adjoint/residual_converged": true, + "time/series_s": 1.1837444039992988, + "time/step_s": 20.592432649995317 + }, + { + "step": 270.0, + "loss/total": 0.0008346015667334985, + "loss/data": 0.0007856598337568065, + "loss/mse": 0.0007856598337568065, + "loss/smooth": 0.04806763731104853, + "loss/activation_l2": 0.08740956656434071, + "loss/activation_l2_penalty": 8.740956656434071e-07, + "loss/regularization": 4.894173297669194e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03653281843822339, + "target/error_rms": 0.0485487332612337, + "target/error_max": 0.22664023979186923, + "activation_inv/rms": 0.2956510892324612, + "activation_inv/min": -4.076497920239412, + "activation_inv/max": 3.920676169113276, + "grad/norm": 0.0004293879086885788, + "grad/abs_max": 6.04587511127364e-05, + "optimizer/steps": 270.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 7.0, + "stopped": 0.0, + "time/forward_s": 10.970025664995774, + "time/backward_s": 8.7874307069942, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1625, + "forward/grad_norm": 0.0029064490574945688, + "forward/relative_grad_norm": 0.0004747170651906749, + "forward/grad_norm_first": 6.1224869940733315, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.9388408824037217e-07, + "adjoint/relative_residual": 0.0004935082868318884, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.9388408824037217e-07, + "adjoint/solver_0/relative_residual": 0.0004935082868318884, + "adjoint/residual_converged": true, + "time/series_s": 1.144069681999099, + "time/step_s": 20.908643908995145 + }, + { + "step": 271.0, + "loss/total": 0.0007774508989711399, + "loss/data": 0.0007284137586626696, + "loss/mse": 0.0007284137586626696, + "loss/smooth": 0.04815714261701958, + "loss/activation_l2": 0.08799976914506805, + "loss/activation_l2_penalty": 8.799976914506805e-07, + "loss/regularization": 4.903714030847026e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.03488069812365037, + "target/error_rms": 0.04674656432282493, + "target/error_max": 0.22828307231498446, + "activation_inv/rms": 0.2966475503776629, + "activation_inv/min": -4.0608385854688205, + "activation_inv/max": 3.9253908603966656, + "grad/norm": 0.00039048660715869187, + "grad/abs_max": 3.1446494219345045e-05, + "optimizer/steps": 271.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 8.0, + "stopped": 0.0, + "time/forward_s": 11.844705240000621, + "time/backward_s": 8.484115152001323, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1755, + "forward/grad_norm": 0.0025458248804421752, + "forward/relative_grad_norm": 0.000488352790139079, + "forward/grad_norm_first": 5.213085564059426, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.8896880380241726e-07, + "adjoint/relative_residual": 0.0004995403801869029, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.8896880380241726e-07, + "adjoint/solver_0/relative_residual": 0.0004995403801869029, + "adjoint/residual_converged": true, + "time/series_s": 1.1884208600022248, + "time/step_s": 21.52437264999753 + }, + { + "step": 272.0, + "loss/total": 0.0006616939273575054, + "loss/data": 0.0006126437385204846, + "loss/mse": 0.0006126437385204846, + "loss/smooth": 0.04817144579354505, + "loss/activation_l2": 0.08787430434757376, + "loss/activation_l2_penalty": 8.787430434757377e-07, + "loss/regularization": 4.905018883702079e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.032183124993110115, + "target/error_rms": 0.04287110000409896, + "target/error_max": 0.22470207785404261, + "activation_inv/rms": 0.2964360037977401, + "activation_inv/min": -4.093005195587695, + "activation_inv/max": 3.9396406431781195, + "grad/norm": 0.0003281918997607419, + "grad/abs_max": 6.147806033810911e-05, + "optimizer/steps": 272.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 9.0, + "stopped": 0.0, + "time/forward_s": 11.351517549002892, + "time/backward_s": 8.727415237997775, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1690, + "forward/grad_norm": 0.0021779632733815377, + "forward/relative_grad_norm": 0.0004899196851816878, + "forward/grad_norm_first": 4.44555166746124, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.6135246405584233e-07, + "adjoint/relative_residual": 0.0004650944517444236, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.6135246405584233e-07, + "adjoint/solver_0/relative_residual": 0.0004650944517444236, + "adjoint/residual_converged": true, + "time/series_s": 1.1674633069997071, + "time/step_s": 21.253505685002892 + }, + { + "step": 273.0, + "loss/total": 0.0005590350862510152, + "loss/data": 0.0005099890643471572, + "loss/mse": 0.0005099890643471572, + "loss/smooth": 0.04816425210941468, + "loss/activation_l2": 0.08817697944431892, + "loss/activation_l2_penalty": 8.817697944431892e-07, + "loss/regularization": 4.9046021903857876e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02873263183196057, + "target/error_rms": 0.03911479506582479, + "target/error_max": 0.22377470373544028, + "activation_inv/rms": 0.2969460884475816, + "activation_inv/min": -4.087701829069561, + "activation_inv/max": 3.946942973821552, + "grad/norm": 0.00023165435532037808, + "grad/abs_max": 1.7830819914544317e-05, + "optimizer/steps": 273.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 10.0, + "stopped": 0.0, + "time/forward_s": 10.975044941995293, + "time/backward_s": 8.531506829996943, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1639, + "forward/grad_norm": 0.0015460969003418183, + "forward/relative_grad_norm": 0.00046296006169864657, + "forward/grad_norm_first": 3.3395902330517124, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3737720192065016e-07, + "adjoint/relative_residual": 0.00043401405212529294, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3737720192065016e-07, + "adjoint/solver_0/relative_residual": 0.00043401405212529294, + "adjoint/residual_converged": true, + "time/series_s": 1.142684377002297, + "time/step_s": 20.656337692002126 + }, + { + "step": 274.0, + "loss/total": 0.0004968990820300125, + "loss/data": 0.0004479047322610525, + "loss/mse": 0.0004479047322610525, + "loss/smooth": 0.048111820548239946, + "loss/activation_l2": 0.0882529220720036, + "loss/activation_l2_penalty": 8.825292207200361e-07, + "loss/regularization": 4.899434976895998e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.026559965574352452, + "target/error_rms": 0.03665670739146054, + "target/error_max": 0.2203659500959327, + "activation_inv/rms": 0.29707393367982254, + "activation_inv/min": -4.110348916074267, + "activation_inv/max": 3.9527867635091667, + "grad/norm": 0.00017852945367622308, + "grad/abs_max": 2.1147534339662336e-05, + "optimizer/steps": 274.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 11.0, + "stopped": 0.0, + "time/forward_s": 10.724607605996425, + "time/backward_s": 8.583561432998977, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1594, + "forward/grad_norm": 0.0013403308281914601, + "forward/relative_grad_norm": 0.0004988237322252831, + "forward/grad_norm_first": 2.686982879126786, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4806802312638005e-07, + "adjoint/relative_residual": 0.0004991579689615409, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4806802312638005e-07, + "adjoint/solver_0/relative_residual": 0.0004991579689615409, + "adjoint/residual_converged": true, + "time/series_s": 1.1589879380044295, + "time/step_s": 20.474934007994307 + }, + { + "step": 275.0, + "loss/total": 0.0004791757056495057, + "loss/data": 0.0004302236440947216, + "loss/mse": 0.0004302236440947216, + "loss/smooth": 0.04806857451001548, + "loss/activation_l2": 0.0883487044768642, + "loss/activation_l2_penalty": 8.834870447686421e-07, + "loss/regularization": 4.895206155478412e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02575483057922963, + "target/error_rms": 0.03592590892773855, + "target/error_max": 0.21679655747348894, + "activation_inv/rms": 0.29723509967173156, + "activation_inv/min": -4.112626552344393, + "activation_inv/max": 3.9575842236959615, + "grad/norm": 0.00015222396182344524, + "grad/abs_max": 1.2249723688864854e-05, + "optimizer/steps": 275.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 12.0, + "stopped": 0.0, + "time/forward_s": 11.2078574929983, + "time/backward_s": 8.234520620004332, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1653, + "forward/grad_norm": 0.0010310079637345707, + "forward/relative_grad_norm": 0.0004457112142397666, + "forward/grad_norm_first": 2.313174833379778, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3884351681871273e-07, + "adjoint/relative_residual": 0.00047758208208212343, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3884351681871273e-07, + "adjoint/solver_0/relative_residual": 0.00047758208208212343, + "adjoint/residual_converged": true, + "time/series_s": 1.1383315280036186, + "time/step_s": 20.587755740998546 + }, + { + "step": 276.0, + "loss/total": 0.00048329801621284244, + "loss/data": 0.00043442694759828745, + "loss/mse": 0.00043442694759828745, + "loss/smooth": 0.047985600552511824, + "loss/activation_l2": 0.08854680620431839, + "loss/activation_l2_penalty": 8.85468062043184e-07, + "loss/regularization": 4.8871068614555e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.026112784960039846, + "target/error_rms": 0.03610098118881067, + "target/error_max": 0.21577388344862913, + "activation_inv/rms": 0.2975681538812888, + "activation_inv/min": -4.12898655063984, + "activation_inv/max": 3.96572616923196, + "grad/norm": 0.00017837287876272778, + "grad/abs_max": 2.1506060001929014e-05, + "optimizer/steps": 276.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 13.0, + "stopped": 0.0, + "time/forward_s": 11.532486363998032, + "time/backward_s": 8.20193244600523, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1722, + "forward/grad_norm": 0.0011692592467551911, + "forward/relative_grad_norm": 0.000481764761821905, + "forward/grad_norm_first": 2.4270335637113982, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3616335166592815e-07, + "adjoint/relative_residual": 0.0004660917447575755, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3616335166592815e-07, + "adjoint/solver_0/relative_residual": 0.0004660917447575755, + "adjoint/residual_converged": true, + "time/series_s": 1.1379141559955315, + "time/step_s": 20.879495711000345 + }, + { + "step": 277.0, + "loss/total": 0.0005002027955197305, + "loss/data": 0.0004513717406697578, + "loss/mse": 0.0004513717406697578, + "loss/smooth": 0.0479452440386758, + "loss/activation_l2": 0.08858108112969501, + "loss/activation_l2_penalty": 8.858108112969502e-07, + "loss/regularization": 4.883105484997275e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027134829668659526, + "target/error_rms": 0.036798304607811395, + "target/error_max": 0.21060594791554035, + "activation_inv/rms": 0.29762574003216696, + "activation_inv/min": -4.13467299899259, + "activation_inv/max": 3.9675961283139562, + "grad/norm": 0.000185903012448557, + "grad/abs_max": 1.27026587722976e-05, + "optimizer/steps": 277.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 14.0, + "stopped": 0.0, + "time/forward_s": 11.755259987003228, + "time/backward_s": 8.509099035996769, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1734, + "forward/grad_norm": 0.0012788685667190823, + "forward/relative_grad_norm": 0.00045342311153159814, + "forward/grad_norm_first": 2.820475035776734, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.262879471629177e-07, + "adjoint/relative_residual": 0.00042409609867375737, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.262879471629177e-07, + "adjoint/solver_0/relative_residual": 0.00042409609867375737, + "adjoint/residual_converged": true, + "time/series_s": 1.1610656400007429, + "time/step_s": 21.432560132998333 + }, + { + "step": 278.0, + "loss/total": 0.0005120294824231452, + "loss/data": 0.0004632534152354477, + "loss/mse": 0.0004632534152354477, + "loss/smooth": 0.0478880076481179, + "loss/activation_l2": 0.08880595395795877, + "loss/activation_l2_penalty": 8.880595395795878e-07, + "loss/regularization": 4.877606718769749e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.027772724519827093, + "target/error_rms": 0.0372794882704463, + "target/error_max": 0.21388875216792438, + "activation_inv/rms": 0.2980032784349172, + "activation_inv/min": -4.149836730509318, + "activation_inv/max": 3.9779708033338963, + "grad/norm": 0.00020609828426103378, + "grad/abs_max": 2.014733521521028e-05, + "optimizer/steps": 278.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 15.0, + "stopped": 0.0, + "time/forward_s": 13.183301550998294, + "time/backward_s": 9.356650946996524, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1759, + "forward/grad_norm": 0.0015056012315207297, + "forward/relative_grad_norm": 0.00046387033553194073, + "forward/grad_norm_first": 3.2457372593015457, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5039473642975457e-07, + "adjoint/relative_residual": 0.0004985318141619359, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5039473642975457e-07, + "adjoint/solver_0/relative_residual": 0.0004985318141619359, + "adjoint/residual_converged": true, + "time/series_s": 1.2387351249999483, + "time/step_s": 23.787091012003657 + }, + { + "step": 279.0, + "loss/total": 0.0005167374368107379, + "loss/data": 0.0004679982310388578, + "loss/mse": 0.0004679982310388578, + "loss/smooth": 0.04785104253840674, + "loss/activation_l2": 0.08881632334733479, + "loss/activation_l2_penalty": 8.881632334733479e-07, + "loss/regularization": 4.8739205771880094e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02813627855222406, + "target/error_rms": 0.037469917175203, + "target/error_max": 0.20921100089622732, + "activation_inv/rms": 0.29802067603999355, + "activation_inv/min": -4.15524571990206, + "activation_inv/max": 3.981187633284005, + "grad/norm": 0.00020685749760497485, + "grad/abs_max": 1.4725181332352358e-05, + "optimizer/steps": 279.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 16.0, + "stopped": 0.0, + "time/forward_s": 14.424414745000831, + "time/backward_s": 9.079736473999219, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1734, + "forward/grad_norm": 0.0014726491142193344, + "forward/relative_grad_norm": 0.00044827282754677497, + "forward/grad_norm_first": 3.285162570032579, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3403126204213628e-07, + "adjoint/relative_residual": 0.00044203184440575887, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3403126204213628e-07, + "adjoint/solver_0/relative_residual": 0.00044203184440575887, + "adjoint/residual_converged": true, + "time/series_s": 1.1338499819976278, + "time/step_s": 24.645005372003652 + }, + { + "step": 280.0, + "loss/total": 0.0005149998738009153, + "loss/data": 0.00046627940744366404, + "loss/mse": 0.00046627940744366404, + "loss/smooth": 0.047829523147730146, + "loss/activation_l2": 0.08909432095211328, + "loss/activation_l2_penalty": 8.909432095211328e-07, + "loss/regularization": 4.872046635725128e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028057760061665844, + "target/error_rms": 0.037401045738468225, + "target/error_max": 0.21146666541143183, + "activation_inv/rms": 0.2984867182172656, + "activation_inv/min": -4.1734383536375805, + "activation_inv/max": 3.991661024839532, + "grad/norm": 0.00021043372479626407, + "grad/abs_max": 1.6086976906331506e-05, + "optimizer/steps": 280.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 17.0, + "stopped": 0.0, + "time/forward_s": 12.121429215003445, + "time/backward_s": 9.057445751001069, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1744, + "forward/grad_norm": 0.0016903290120141357, + "forward/relative_grad_norm": 0.0004980214591477034, + "forward/grad_norm_first": 3.394088710367834, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.436191608609637e-07, + "adjoint/relative_residual": 0.0004745246999579582, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.436191608609637e-07, + "adjoint/solver_0/relative_residual": 0.0004745246999579582, + "adjoint/residual_converged": true, + "time/series_s": 1.20301013700373, + "time/step_s": 22.38910430300166 + }, + { + "step": 281.0, + "loss/total": 0.0005123870188664494, + "loss/data": 0.00046370513593933885, + "loss/mse": 0.00046370513593933885, + "loss/smooth": 0.04779105186091903, + "loss/activation_l2": 0.08908310661914806, + "loss/activation_l2_penalty": 8.908310661914807e-07, + "loss/regularization": 4.868188292711051e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028127994742420327, + "target/error_rms": 0.03729765954879765, + "target/error_max": 0.2087876249132665, + "activation_inv/rms": 0.29846793231291713, + "activation_inv/min": -4.176315981095555, + "activation_inv/max": 3.994658726188753, + "grad/norm": 0.00020767675459322271, + "grad/abs_max": 2.2049699195597875e-05, + "optimizer/steps": 281.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 18.0, + "stopped": 0.0, + "time/forward_s": 11.23098292099894, + "time/backward_s": 9.280765924006118, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1653, + "forward/grad_norm": 0.0015234068244318574, + "forward/relative_grad_norm": 0.00044684662674179744, + "forward/grad_norm_first": 3.409238725913291, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.2040685362832443e-07, + "adjoint/relative_residual": 0.00039893286059193583, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.2040685362832443e-07, + "adjoint/solver_0/relative_residual": 0.00039893286059193583, + "adjoint/residual_converged": true, + "time/series_s": 1.160897510999348, + "time/step_s": 21.679890513005375 + }, + { + "step": 282.0, + "loss/total": 0.0005066563265576994, + "loss/data": 0.00045794123666434466, + "loss/mse": 0.00045794123666434466, + "loss/smooth": 0.04782150154709341, + "loss/activation_l2": 0.08935883462612433, + "loss/activation_l2_penalty": 8.935883462612434e-07, + "loss/regularization": 4.871508989335465e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.02783502878595565, + "target/error_rms": 0.037065127950582255, + "target/error_max": 0.20802129179615295, + "activation_inv/rms": 0.2989294810254156, + "activation_inv/min": -4.198040417259263, + "activation_inv/max": 4.007028946709452, + "grad/norm": 0.0002054712069583829, + "grad/abs_max": 1.5711963422398383e-05, + "optimizer/steps": 282.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 19.0, + "stopped": 0.0, + "time/forward_s": 14.249132529002964, + "time/backward_s": 9.856459413000266, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1671, + "forward/grad_norm": 0.0016274246087825534, + "forward/relative_grad_norm": 0.0004611861635280135, + "forward/grad_norm_first": 3.528780213900975, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.2946790764923666e-07, + "adjoint/relative_residual": 0.00043164509418048614, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.2946790764923666e-07, + "adjoint/solver_0/relative_residual": 0.00043164509418048614, + "adjoint/residual_converged": true, + "time/series_s": 1.1921353110010386, + "time/step_s": 25.30488205399888 + }, + { + "step": 283.0, + "loss/total": 0.0005134054504643547, + "loss/data": 0.0004647272598619246, + "loss/mse": 0.0004647272598619246, + "loss/smooth": 0.047784257142103326, + "loss/activation_l2": 0.08939334603268194, + "loss/activation_l2_penalty": 8.939334603268195e-07, + "loss/regularization": 4.8678190602430144e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028109050182500712, + "target/error_rms": 0.037338743679799585, + "target/error_max": 0.20896446895712162, + "activation_inv/rms": 0.2989872004495877, + "activation_inv/min": -4.196196091825655, + "activation_inv/max": 4.007681125420748, + "grad/norm": 0.00021685901267362164, + "grad/abs_max": 1.539098627769172e-05, + "optimizer/steps": 283.0, + "optimizer/lr": 0.03, + "best/step": 263.0, + "best/loss": 0.000680845311587158, + "best/target_error_max": 0.2057142691507339, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.2057142691507339, + "lowest/target_error_max_step": 263.0, + "stagnation/no_improve_steps": 20.0, + "stopped": 0.0, + "time/forward_s": 11.098588920998736, + "time/backward_s": 9.140812759993423, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1615, + "forward/grad_norm": 0.0016984405135469537, + "forward/relative_grad_norm": 0.0004910848619924802, + "forward/grad_norm_first": 3.458547890594439, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3954595024549884e-07, + "adjoint/relative_residual": 0.00046183593261618226, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3954595024549884e-07, + "adjoint/solver_0/relative_residual": 0.00046183593261618226, + "adjoint/residual_converged": true, + "time/series_s": 1.2432689609995577, + "time/step_s": 21.49041291100002 + }, + { + "step": 284.0, + "loss/total": 0.0005344851727081002, + "loss/data": 0.0004857814553517051, + "loss/mse": 0.0004857814553517051, + "loss/smooth": 0.047807811669931935, + "loss/activation_l2": 0.08959056864632106, + "loss/activation_l2_penalty": 8.959056864632107e-07, + "loss/regularization": 4.870371735639514e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.028815343522921682, + "target/error_rms": 0.03817517997410248, + "target/error_max": 0.20390713575204641, + "activation_inv/rms": 0.29931683655671804, + "activation_inv/min": -4.223227131501694, + "activation_inv/max": 4.022373396976416, + "grad/norm": 0.00023701906535234372, + "grad/abs_max": 1.540105973086412e-05, + "optimizer/steps": 284.0, + "optimizer/lr": 0.03, + "best/step": 284.0, + "best/loss": 0.0005344851727081002, + "best/target_error_max": 0.20390713575204641, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20390713575204641, + "lowest/target_error_max_step": 284.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 0.0, + "time/forward_s": 11.207539506001922, + "time/backward_s": 9.351892330996634, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1619, + "forward/grad_norm": 0.0017582466060935018, + "forward/relative_grad_norm": 0.00047402021497501686, + "forward/grad_norm_first": 3.7092228359631663, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.4725441336964792e-07, + "adjoint/relative_residual": 0.0004766695506821943, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.4725441336964792e-07, + "adjoint/solver_0/relative_residual": 0.0004766695506821943, + "adjoint/residual_converged": true, + "time/series_s": 1.2378658709931187, + "time/step_s": 21.810810104994744 + }, + { + "step": 285.0, + "loss/total": 0.0005651254784260968, + "loss/data": 0.0005164584362176196, + "loss/mse": 0.0005164584362176196, + "loss/smooth": 0.04776988384766577, + "loss/activation_l2": 0.08971583608114453, + "loss/activation_l2_penalty": 8.971583608114454e-07, + "loss/regularization": 4.866704220847722e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.029986633769440448, + "target/error_rms": 0.03936210498249374, + "target/error_max": 0.20892394099794923, + "activation_inv/rms": 0.2995260190386547, + "activation_inv/min": -4.212859831838379, + "activation_inv/max": 4.0200577505243436, + "grad/norm": 0.00026395282602365916, + "grad/abs_max": 2.1397522591153828e-05, + "optimizer/steps": 285.0, + "optimizer/lr": 0.03, + "best/step": 284.0, + "best/loss": 0.0005344851727081002, + "best/target_error_max": 0.20390713575204641, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.20390713575204641, + "lowest/target_error_max_step": 284.0, + "stagnation/no_improve_steps": 1.0, + "stopped": 0.0, + "time/forward_s": 11.230035394000879, + "time/backward_s": 9.027318822998495, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1620, + "forward/grad_norm": 0.0018206272429526634, + "forward/relative_grad_norm": 0.00045472039047914954, + "forward/grad_norm_first": 4.003839020797431, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.5342368163068198e-07, + "adjoint/relative_residual": 0.00048166408922506237, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.5342368163068198e-07, + "adjoint/solver_0/relative_residual": 0.00048166408922506237, + "adjoint/residual_converged": true, + "time/series_s": 1.1971784600027604, + "time/step_s": 21.46182750599837 + }, + { + "step": 286.0, + "loss/total": 0.0006209938330491274, + "loss/data": 0.0005722376479213914, + "loss/mse": 0.0005722376479213914, + "loss/smooth": 0.04785739705523447, + "loss/activation_l2": 0.08987880725014971, + "loss/activation_l2_penalty": 8.987880725014972e-07, + "loss/regularization": 4.8756185127735975e-05, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_l2_weight": 1e-05, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.031548278458864334, + "target/error_rms": 0.041433234773116306, + "target/error_max": 0.19954123669972448, + "activation_inv/rms": 0.2997979440392307, + "activation_inv/min": -4.24364063630052, + "activation_inv/max": 4.039691327677526, + "grad/norm": 0.0003159786015677894, + "grad/abs_max": 3.3196339963448816e-05, + "optimizer/steps": 286.0, + "optimizer/lr": 0.03, + "best/step": 286.0, + "best/loss": 0.0006209938330491274, + "best/target_error_max": 0.19954123669972448, + "lowest/loss": 0.000453943576629423, + "lowest/loss_step": 249.0, + "lowest/target_error_max": 0.19954123669972448, + "lowest/target_error_max_step": 286.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 1.0, + "time/forward_s": 11.25173196200194, + "time/backward_s": 9.057755551999435, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1622, + "forward/grad_norm": 0.002181186431960064, + "forward/relative_grad_norm": 0.0004975405715597388, + "forward/grad_norm_first": 4.383936821719418, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.585239539052749e-07, + "adjoint/relative_residual": 0.0004727986619434599, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.585239539052749e-07, + "adjoint/solver_0/relative_residual": 0.0004727986619434599, + "adjoint/residual_converged": true, + "time/series_s": 1.1778005000014673, + "time/step_s": 21.501672890997725 + } + ], + "repeated/forward_failure": false, + "repeated/adjoint_failure": false, + "passed": true +} diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.png b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.png new file mode 100644 index 000000000..7ad08afd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ea59cc0fd5f638738a57dcece40163ddbe7318aa9964fbafef06d6d5431ddef +size 409425 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu new file mode 100644 index 000000000..edf2381ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98af240c2abc51fb4654226cda7f7513287842b983a728f65b672bae7f63c152 +size 27593762 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000000.vtu new file mode 100644 index 000000000..be90d1f4a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b8a2ebc36b75271a2d04004f14685fca798003e43bcc3d57b1b641d5bbc96ed +size 16098826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000001.vtu new file mode 100644 index 000000000..8f06da0fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f218a3e40a949eb795039881d0ae2f535810b80697697fd9923d46acfe3b7c31 +size 27448149 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000002.vtu new file mode 100644 index 000000000..fe2301187 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab18dfc4fd6795129f22e8d769d670d69a4fcfc9d8bcecc836cd7eb9f652e260 +size 27528985 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000003.vtu new file mode 100644 index 000000000..e3cb36fbb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3365b89c18515422b61399610943a648be64a31c511d217028129c95b604af8c +size 27557384 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000004.vtu new file mode 100644 index 000000000..658fc436f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbf52727adaf4311671d46cb5935005d7246f00ba1f17cdfe2b22b00cadefc09 +size 27571748 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000005.vtu new file mode 100644 index 000000000..9c2fd9f0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cd65b11a1946ca8f6f63d55bebb526ca0fd7b3a61b60e9ae9088a15081b2d1b +size 27575688 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000006.vtu new file mode 100644 index 000000000..26044a74f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd9c2a0a1ce5c8cf801df3e584fe6dd1e3c1269e8ee08fdc95a9ae9ce87c5ca +size 27578145 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000007.vtu new file mode 100644 index 000000000..72d86fca6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de50353aee45531eb4b8f23f895b033c67b8b1f81e8e02a604780e991b79fd43 +size 27581041 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000008.vtu new file mode 100644 index 000000000..1d9ad7688 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0e051200bdc96870d56023be5579a03345dd623201bae0e2e4200b997534f86 +size 27583728 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000009.vtu new file mode 100644 index 000000000..d1c8ff820 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb38f4c3f46f4cb4c3bb73a758a11e6e98d9ac6a98cef64aae1288370fec4220 +size 27584933 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000010.vtu new file mode 100644 index 000000000..15c4e527f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4766b87799f9bbfc965c91ba445f171aaa550978d6b4b315a5fc21e06bd78cc1 +size 27585705 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000011.vtu new file mode 100644 index 000000000..8fe7a6220 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e328895ab39abf22f6ac9d132a6bc7971bb041e4811ed38650c4c39aa0b67937 +size 27586554 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000012.vtu new file mode 100644 index 000000000..dd543c0de --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:859c6f3cb8f147c644347a082ff78916bcf89ab54d65209ad3e0d09f63f37495 +size 27586709 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000013.vtu new file mode 100644 index 000000000..9a2ad669e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3844b1bac8f450a19684c1a2aff312bc7a38f24d6fc17a67860e692fd9545b0c +size 27586878 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000014.vtu new file mode 100644 index 000000000..037318a1f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4d3e00b10ef4d84d56cd804479e6f9cb47e62f01fd6301a7b893799222939f2 +size 27588115 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000015.vtu new file mode 100644 index 000000000..aa10bee3f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad2a5e4b577631a459f86aa7175e67c3c059b13ac1c34d032e9117b88590e47 +size 27588078 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000016.vtu new file mode 100644 index 000000000..524affdb2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ec0c514d216f8d127a3918a5c92830b42e647eac655fa35850633aef11d191f +size 27588484 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000017.vtu new file mode 100644 index 000000000..da00e8212 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5cd44e6c4cc597a58e4b2928c2e41980df78b7d08652cba4c6d9eedecdeb081 +size 27588505 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000018.vtu new file mode 100644 index 000000000..c37a5b7d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ff7fffc7e55385ded99b3452054329424a74e653bbad457613bba1c92c69d7d +size 27589046 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000019.vtu new file mode 100644 index 000000000..6eaabdd24 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e619b0b567b7be0b1b8697d984de94c8b5f4dad4e4656821585363708166cec7 +size 27588439 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000020.vtu new file mode 100644 index 000000000..e0dba3b6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64aefd4f4636d3b0bb9a37bed21f2af1f2861c78a2973cffc4e1f090f81b38fa +size 27589012 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000021.vtu new file mode 100644 index 000000000..18660c22e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f8fcfd8e060790122ccf8c91327ebc8d0bdad8675d95565868cb966dace1908 +size 27589512 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000022.vtu new file mode 100644 index 000000000..9c7f52182 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbe82faea85b7570e1cc7187043696d1238a8c97853234ee1c10fb4be8b5c943 +size 27588335 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000023.vtu new file mode 100644 index 000000000..21ff1e163 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ec537a58706b6b41e6ca3f15f79d2a550079fed7b954879291912144f9718b3 +size 27588640 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000024.vtu new file mode 100644 index 000000000..b649d1697 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a2d604324a657f07db8a14f6ab98dc96b89103265d796e161e7a8dcbc27f3cd +size 27589670 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000025.vtu new file mode 100644 index 000000000..fb43bf92d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb6b7dc4609bf5d1fe4baff51fb53cc1490dd86960ef58c7d8a5c3eb0e4b9bb5 +size 27588566 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000026.vtu new file mode 100644 index 000000000..546c1a01f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7914150a936d8edd5cab573a32c69801c4433d0ee019974aeb1a447a4ae7bac +size 27589437 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000027.vtu new file mode 100644 index 000000000..d5a62896c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a10ae8bc6a7da5698f83ba59bc324a06d89d9df5689d766a89fe73f9e81bdff +size 27589744 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000028.vtu new file mode 100644 index 000000000..f089e931d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d42163d19f81cd13ca8c107f7075c5770285c8619ea6f8b504f870eb33e976c +size 27589987 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000029.vtu new file mode 100644 index 000000000..a663758fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f427a55bb25ddb706302f5206bb217268415e0b352042aecc98adb7d5513e9e1 +size 27589538 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000030.vtu new file mode 100644 index 000000000..0ead646a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfe176a04c4b01b5ce3e40229de9050a6119ce55fb5f2d79ba560afdde0eab11 +size 27590366 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000031.vtu new file mode 100644 index 000000000..78a2cd3f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0e74f2f99d40db5470e8b603611547d21a3c6367b49f508218441c37da84d5b +size 27589609 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000032.vtu new file mode 100644 index 000000000..c67163bc5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42220f814cddfc7caf500e1f7565573ea981ae99be47fafb5223746d8d43ab5a +size 27590550 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000033.vtu new file mode 100644 index 000000000..725041f9c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b2c1547707de562eeae7df7aefa5c2afb694b5476861a373a07d48af0f7fa4d +size 27589972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000034.vtu new file mode 100644 index 000000000..f8d3b7e7c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:884ebd445d1eef89774a4085ec1f5503daa17c3789a563bdf6fbf78176d25fc4 +size 27590324 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000035.vtu new file mode 100644 index 000000000..4e2e6a618 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b600e000f83e7e6f3176cc9395bf40f49630b260e231c5e0a0ac142bd735fec +size 27590650 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000036.vtu new file mode 100644 index 000000000..b9a4f2bd8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21ab3983b275845b2787803ea4f9b56a2aa3cbf3d29955c8f37119921acf242b +size 27590048 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000037.vtu new file mode 100644 index 000000000..c8ce54b6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b722a437e7a93ed736b14584d3c841e88694f5eceadfe0b2554cbcece4b545e +size 27590936 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000038.vtu new file mode 100644 index 000000000..fa7cf6249 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d554691db4be2967f457b1fc3ab86f1aeec5e3b03b1c8fe812f5046c609c92ae +size 27590264 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000039.vtu new file mode 100644 index 000000000..7ca7616d8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a78a989ed31358ed6dd4e4050f24da0ead9ffe79c4e4e449875da5c10b3d65d3 +size 27590335 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000040.vtu new file mode 100644 index 000000000..8a24b8311 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8911cb19f846a19e4f76620a99e842a138ab9168928fc1636c16898629a50701 +size 27590515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000041.vtu new file mode 100644 index 000000000..e4e56d2ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d964f5dd5c1117aee9c42c2cf680cd6bd74e71c353141b1df38adac7fb476d7 +size 27590825 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000042.vtu new file mode 100644 index 000000000..ee905318f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7688afa2df8b29e5f335958a8d7c17e3f7a87f8f8e38ffc0e189376a23d26ef3 +size 27590595 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000043.vtu new file mode 100644 index 000000000..83483ae01 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b867aeaa68f7283436d377dc5ddf6d9d5514cd2c0e2535f35a739629a18ca98 +size 27591041 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000044.vtu new file mode 100644 index 000000000..b8f67d777 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da2e01a4e70e77d6f00e9c521d1e74906d6576be5fbe860e30bcca3b2d308c58 +size 27589996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000045.vtu new file mode 100644 index 000000000..fa8f3d0c8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c7bf397d5466fadc8d948c327859b35bfcb02b5897b326b2c0e48867e9bdb4c +size 27591474 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000046.vtu new file mode 100644 index 000000000..cf8ff6fd4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ddbfd0c4ed2da4349f464def80cc28da8c41a3c27a3d52f49be430559972039 +size 27590768 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000047.vtu new file mode 100644 index 000000000..98c6b7855 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74d3c4a290a9042eb9ae7d14c5a0409876809a9fc577789f5e1de16b0a4fe575 +size 27591184 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000048.vtu new file mode 100644 index 000000000..9c873ffce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2de86f363dd9847a01dbe34f4661ebfd0b338556424bf2b9eb65b5a5ab2f288 +size 27591298 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000049.vtu new file mode 100644 index 000000000..9af675ac7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4aa446f2aea383add372bee4ddef6f251b8f7aec167baa5f76284a9b82c88760 +size 27591912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000050.vtu new file mode 100644 index 000000000..897463b6c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7512d873cccde0c75ac94e04891ca2479ef4bf7b07d017b2735e22195b35efa9 +size 27591205 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000051.vtu new file mode 100644 index 000000000..a9412a2dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd45ff94ef915f84db77f4ad108f4e62d17bfb6219ca41e1540fd25fd580bd4b +size 27592113 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000052.vtu new file mode 100644 index 000000000..20d2f90b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78f9f5aa8169d25b20f250643e659c401ee309aa5e069f6965c6816e8c6a1b73 +size 27592118 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000053.vtu new file mode 100644 index 000000000..257614921 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9aca7fc5c64b9b443e4e9885a7df014bac2fa56e5a712ad88a19b2b8dbbeb19 +size 27591881 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000054.vtu new file mode 100644 index 000000000..8c47f9b89 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04c0fdd6c15a143f55f7d0a60de411a62354e3b39f69effbc2b48bdf14fba4ce +size 27590664 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000055.vtu new file mode 100644 index 000000000..4b68c8bb8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88c3644ba66c97af11660ce281eeb2ed7b18bb7e9f7b69ebd3c0a51f911ce968 +size 27591733 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000056.vtu new file mode 100644 index 000000000..43768b035 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e4ec05fdfb63e90d87dde83bf810f59c2e85aaf9b8542eda0a8abd2d8c10d40 +size 27591399 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000057.vtu new file mode 100644 index 000000000..5ff67cfd4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f26315a9ffba19f423f2a97b237471eb61821a50eeb7aa0c19767a7df822cab +size 27591133 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000058.vtu new file mode 100644 index 000000000..02fbfd92e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceead79146f07fee872a9442cbe2d98a53c5336ef701ca77a94d722c30e4e224 +size 27591486 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000059.vtu new file mode 100644 index 000000000..573420a8b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af821bf05e12704813ea301ce0482f1d8e2c5193ecb5cc514b0a716f6b16814e +size 27590949 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000060.vtu new file mode 100644 index 000000000..80b30b7e5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:329414823f151d7203375a5db5934aed56f7bce764182fa6d919513b16be7372 +size 27592989 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000061.vtu new file mode 100644 index 000000000..9f91b164d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:005729f6f97362d96330393d468c5f6670597474e3c7aa28e562e29e57a117c3 +size 27591453 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000062.vtu new file mode 100644 index 000000000..72db6c1e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:462033b63802453290b468da5613cdbf0d07b3b0d45b5df1d201c479335c653c +size 27592424 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000063.vtu new file mode 100644 index 000000000..b925ef443 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5d31aaeded588b99c29110092850fbdb58fae537ba7d7fb1e2c6d621e5e1b7a +size 27592145 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000064.vtu new file mode 100644 index 000000000..f22ff78a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b44c9038eddcc3009ba7cc4317e876659391517059a74cbaf15e72bd1e26bd2 +size 27592061 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000065.vtu new file mode 100644 index 000000000..2f3bffd2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:501a81932e9f67b3e12960e2a9de19267752f8b4c018649c3c87dc8f4f05b2b4 +size 27591876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000066.vtu new file mode 100644 index 000000000..0b270da4f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4727248b7039ff17c6845e3b3ebe8824bff461bec255298f48d5211c9f9fc6d5 +size 27592550 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000067.vtu new file mode 100644 index 000000000..c62385751 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fce434aa8295b49d339480a76dfd2d6ce47d9920e9ac5f1729db6dd7c4dc468 +size 27591825 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000068.vtu new file mode 100644 index 000000000..d27043fc8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9108afa047c60bab81065b8d734cc5b0f098d618df11c770578196589aa8340 +size 27591756 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000069.vtu new file mode 100644 index 000000000..54e01d74b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4e437c11feaf3d19300b534ac8e62dfaf8d67bc5b06ff235592249fd879934b +size 27592573 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000070.vtu new file mode 100644 index 000000000..819f5051c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c35d8d3932c8f7660d6a4b52ef09a76d48324407cad0fc900f7fa2ba7a94e3a1 +size 27591725 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000071.vtu new file mode 100644 index 000000000..447ae3195 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d69bb6f49f76cf2aa3583222d842f21ee0615008c9530a7f3937a7f1fe3b8d +size 27591995 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000072.vtu new file mode 100644 index 000000000..d9b615a59 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:919dac6eff4c6bf3ca3be4919611bce394005e08a17cf07581eb418c6e903cbd +size 27592004 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000073.vtu new file mode 100644 index 000000000..b630553ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49faffd2922605bdf7f08308b4aa734169f7d9006180feec79644733c287421c +size 27592116 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000074.vtu new file mode 100644 index 000000000..50160e805 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7734e7a4f7f4fa430ea489f330528896ba49b612fe8b0ee051c69239eedff548 +size 27591712 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000075.vtu new file mode 100644 index 000000000..df68153d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c47a6d332a09263786082e274ad3db04e25ed19d34c6375b30bd22c26407266 +size 27591403 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000076.vtu new file mode 100644 index 000000000..1c5d718b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef8da9a65f54282d178537ab00c76401b6ce3b38df3ba8d3b0ebb92e3853578f +size 27592581 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000077.vtu new file mode 100644 index 000000000..0fcf1b656 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c79ba440dc20d05fcb367b9478617991d5e4c8e095ee27c8c9a0595186ab111f +size 27591216 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000078.vtu new file mode 100644 index 000000000..751f406c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c899b1410c17bcb32849faabde4c88f9e230d4264191f52f5e84f51e25ec6e0 +size 27591532 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000079.vtu new file mode 100644 index 000000000..5035bfa51 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893c3328e0c29708a84a7a0f1db7120fdd449bfbad228400db70ba69825ac0cb +size 27591642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000080.vtu new file mode 100644 index 000000000..2883c3afd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2aecca57e4c1205e45df845e682e5a6c53125f78df2613ae1a0c33fbbf3e0484 +size 27592823 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000081.vtu new file mode 100644 index 000000000..4cddf6956 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:715762d44bb046b84fa9383f7160cb3442e1ac9a96a09dca3b5735eb12ecc9ae +size 27592026 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000082.vtu new file mode 100644 index 000000000..671cee8fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a0cade7e3ad96358ea7b2ea7e369eb4428baccd21c00e4a3b58a4af74929779 +size 27591823 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000083.vtu new file mode 100644 index 000000000..b303b7b82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55d08a12c3d93dd3650bbf1b148968c0aef5ac4f51a5743c297f8f10a9e61667 +size 27592205 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000084.vtu new file mode 100644 index 000000000..077d21692 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daa77b1fe213a5544bb9d0a8a52d0a54a9695c0d1c95a31fb7302087d2f6b379 +size 27591807 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000085.vtu new file mode 100644 index 000000000..c924a5649 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbf9139f44effb166b3baf49fb8fc5fd4bc0c50d9f9350e4f497af7c42a27f91 +size 27592835 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000086.vtu new file mode 100644 index 000000000..deffffa18 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32694d2be43df6d52ade6a13d8d9acfb418bee8cc9a14b247c87031f85441b2f +size 27591940 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000087.vtu new file mode 100644 index 000000000..5998c704b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43d953686fe37f5137fe4ddfc7d585ac1d3daf3c1715e48f12c2676fad6a3d62 +size 27592090 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000088.vtu new file mode 100644 index 000000000..83575e272 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2469e62b32cbe321541a1026bb65eab9ce5fb9c619138f53ac24ea18c962c1ac +size 27591864 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000089.vtu new file mode 100644 index 000000000..46681649f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efa5a2a4c8f68f0e62dfa74be159c2e92cc64a98092510f1360f1ba665a11cd2 +size 27591969 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000090.vtu new file mode 100644 index 000000000..5553bdcac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:491e3fb24be02e58a39d492a5feb0a8095f43543002ed6fd5401138606d5b864 +size 27591986 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000091.vtu new file mode 100644 index 000000000..d43fda5fc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d7f06c96455f05d4e9ab755a4242a9bf651bf276c6a405baa7d9c75f6211946 +size 27591750 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000092.vtu new file mode 100644 index 000000000..440c5d366 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e71db501605a2eb10b91ce69ace24c5bdb98f043bd50a6f6869c9baba682844 +size 27592118 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000093.vtu new file mode 100644 index 000000000..7b7f0c990 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4458c82d5dbaafc498870eab43b1c649f5b3ed6f2897b8baeb1fa3f02fe0ed6 +size 27591996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000094.vtu new file mode 100644 index 000000000..e53b3c262 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b167523463453d5c6595f5d8925d6cd8b0953166601bd9d66363a5a77321923b +size 27592444 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000095.vtu new file mode 100644 index 000000000..453be6084 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3438f613d201eaec5a4e806dee2db1a15874e2b9f68bda0898edf8d09bec5237 +size 27592575 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000096.vtu new file mode 100644 index 000000000..0d656df45 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2918b276ebc1e133d7ce682c498e63915722a9c91b69eb83b1b74942467bb07 +size 27591561 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000097.vtu new file mode 100644 index 000000000..b02495a6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27b97ce147ee39f3234aca5e367388b30bb74c463b96365d0c5c938338882a04 +size 27591807 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000098.vtu new file mode 100644 index 000000000..bfcdc15c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ce4b711c44e15880209cbef311990b6ebbeaff0c514636c83dadf62f164f167 +size 27591290 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000099.vtu new file mode 100644 index 000000000..0ecaabebb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7697861bdad356efaae5907e0a950fb59485d34af5606866b69f007786a86f08 +size 27592422 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000100.vtu new file mode 100644 index 000000000..1b3595680 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f3e51bf0d733902331e1b5eee6bc02a65796884f34a17499103744ff79105de +size 27592797 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000101.vtu new file mode 100644 index 000000000..6cbf1e8ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc7ce41f8aa394606194d8c34d55c6f2cce779fa8a45308ef3d8594f2dd378df +size 27592784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000102.vtu new file mode 100644 index 000000000..2e81ab981 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9172d73661cd480766b992912da3090879006d13da98cec61d0c18470e88c84 +size 27593032 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000103.vtu new file mode 100644 index 000000000..2766a6f3b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52b28d6259fe7b1aa1af4cd4960934fdae6b61adb7722ccdebc4ef44fc423373 +size 27592733 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000104.vtu new file mode 100644 index 000000000..64d4cadcf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc83a38243f6f8773658fa99ee353f7084bb4d78b3afc45e0d762d252b885c67 +size 27592776 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000105.vtu new file mode 100644 index 000000000..2f65fa463 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aca8be3ed67bb30866809c2b0ec81e1c0305bde6d256e2a697f331ab163d8d5d +size 27593226 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000106.vtu new file mode 100644 index 000000000..ab73df66e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b99e85f2f76c4e41c9b093fd7663e475ee3d248abfadac6fa76d663d98910172 +size 27593276 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000107.vtu new file mode 100644 index 000000000..1161f7209 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90100547ecc96f272b94cc38ffc8b3c0cd89ef34dd28d99911021793f5ed1d5a +size 27592918 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000108.vtu new file mode 100644 index 000000000..074c96f33 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44b1dba19b6cf4f0e432e0fa625f1911fb118af65284e8421d064f32dde73927 +size 27592917 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000109.vtu new file mode 100644 index 000000000..9b6a24c22 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dc00624affda02e30f02ecc874fa49b0505904638a047d0a42eda0f34f56dd9 +size 27592251 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000110.vtu new file mode 100644 index 000000000..37565641d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4de07f6d0f4562d13ab91b0a3e1b8a83c4176480929ebee42b15a496c2074945 +size 27592195 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000111.vtu new file mode 100644 index 000000000..00af927a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94cd6c87be833ecad1dc7b3d45197a4be0015631cdfe33a870f693970a403018 +size 27592504 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000112.vtu new file mode 100644 index 000000000..0799a7464 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5fd33f7d3a04bcc18a1000cf555d6d0e407b9bde86c4ec8458d6e2cf0f0b904 +size 27592956 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000113.vtu new file mode 100644 index 000000000..ea257835e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f9ff8f6f9a90815293039c9a35e8ec29f1cf5f6cc444feb3f376c24e487cada +size 27592369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000114.vtu new file mode 100644 index 000000000..5119a25be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d31d88f54dd08923077f5f9367b85045fe7a3553ddbdb8e1fbff3bcd97290a47 +size 27592262 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000115.vtu new file mode 100644 index 000000000..0e23f2b2b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adb332905d1bd453dd9135a39da99212fcac52349f80cab5f74ed3f07e833a49 +size 27593180 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000116.vtu new file mode 100644 index 000000000..386a0c93e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3feda86eaa0d42f6b802d3b00d4a00e98176e3c6a8b1cbeb0d02fa51dabf8b4 +size 27592568 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000117.vtu new file mode 100644 index 000000000..1ba9e3514 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b577f15cc317b6d8ec9294f9e8ba13ff3c998f4a85985e454f8be1d6c3667592 +size 27592465 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000118.vtu new file mode 100644 index 000000000..25866ee92 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:182c163004634afa0afdbe3e932f6af686cfb6050119d7a4bbbe628505b49efe +size 27591724 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000119.vtu new file mode 100644 index 000000000..8f62dfc63 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a353cb36db2a5927689a03985f0773b2a7c537e515094a786ebab436dac219a +size 27593055 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000120.vtu new file mode 100644 index 000000000..f95cfe5aa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:371422f76f4981a02549147dcaa242a878542e9140c9237e8895347a9cb9972c +size 27592678 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000121.vtu new file mode 100644 index 000000000..eb8990a4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd5f76bdc46298c8af2aaf1d052897ede446cc4ad753d443318d0ad3f24910d +size 27591639 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000122.vtu new file mode 100644 index 000000000..e94d2d29a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:240bf2b5287687e327702e4d626ab5079cc08ddb0070f226d40343657d27996e +size 27592926 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000123.vtu new file mode 100644 index 000000000..4f29614e0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e69dd365e957568dbdb2889bafec6aec9ac835a475c5e37611c170e09061b075 +size 27592790 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000124.vtu new file mode 100644 index 000000000..05e112ae1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b63f03bcadaaabd572168c78eee6baaee83bae8025c44e7dc5c43559200fb544 +size 27593458 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000125.vtu new file mode 100644 index 000000000..ca8e0e80b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7353aa15234642718a3b91c35a27d3355393dcbfcefb3fc5604eae5dfae9729a +size 27593481 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000126.vtu new file mode 100644 index 000000000..451ddd3fd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f860c0077a8cb0c293ee5e6e3e7782a982048db0d477abc534f4a66661f711ae +size 27593268 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000127.vtu new file mode 100644 index 000000000..55c39352f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a42e1c69d8e9b1082dd7b41b8aa0969391cf421e4be56c4fbd3c75dbff8f27b1 +size 27593708 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000128.vtu new file mode 100644 index 000000000..f7710bd70 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fff54bf3b41ab0030c019bd879c99a46556a707a2f6b0ef7875954b344cd7a4b +size 27593483 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000129.vtu new file mode 100644 index 000000000..08203eeed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8745f49d0aa64d63a6a4fbbecfae4cfa38f7ff4ed79b0234e594410829b0820f +size 27593141 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000130.vtu new file mode 100644 index 000000000..30ff5f958 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a5dd1c5320cb66c899d98aa6b1a81c82c448a835defa5f55f4d7f2c4655c9c6 +size 27593033 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000131.vtu new file mode 100644 index 000000000..e9e83a057 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b26f28c92dea1fda10f3d8d3774c128549b6e44c6813c5cb1baea03a8417d50 +size 27593726 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000132.vtu new file mode 100644 index 000000000..ab580649c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26fa6bc7e65d68c1e201264be51bddbd498ff537d9e26733c114cf9b56f8fabc +size 27593624 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000133.vtu new file mode 100644 index 000000000..cd8f4dc66 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b2a65d4202da84b195f00b46336be42e6624471b051bb6cd2224377ba621149 +size 27593780 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000134.vtu new file mode 100644 index 000000000..8f2f0ecd0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fbf7f931b521531477aa87fdd90f050078c69d3b909c9aa258690f888a960fd +size 27593585 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000135.vtu new file mode 100644 index 000000000..1fb65d4f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cf05514a8a4c04827107224c4e7bdcdef2bfb0e669b833d03d0986e7574db7e +size 27593763 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000136.vtu new file mode 100644 index 000000000..29ad8f498 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abf4bed11e23f0ab2d220f5b6cdf6838ac50a9d4667ee47c33b296268c1ca808 +size 27593774 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000137.vtu new file mode 100644 index 000000000..819b90dab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14642f328a69e462908acec179fc133fea0f6190e957205a70b33b8923fadee3 +size 27593058 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000138.vtu new file mode 100644 index 000000000..87bee716c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cb883647c7af6874a11c8825537f461640fa96c5db5bf703f69b52349334ae9 +size 27594300 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000139.vtu new file mode 100644 index 000000000..ae913f501 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdbc8d0b3746a23e714dda68380bfbc4aac8e334494d121652d3a5a6fd073b0a +size 27592769 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000140.vtu new file mode 100644 index 000000000..f4f94dfff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae1897ff95b909b7179b10a9aba659c597651c95b61bcfc4e15813c2bc1e30fb +size 27593250 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000141.vtu new file mode 100644 index 000000000..96a976475 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53da0fa5c993012f9fead9dd5145f4449c427d6068938e67b6f077d823a95f23 +size 27593514 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000142.vtu new file mode 100644 index 000000000..e2c7ddbaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d87ab2b27dd54d9a451181a2928934e89087cf62e2c92a8c00c08ffd9be932a6 +size 27593030 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000143.vtu new file mode 100644 index 000000000..17af280cd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de731ced64b02ea87466220fba577ce586a20139b0f9f7e3ce5760b191c60628 +size 27593648 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000144.vtu new file mode 100644 index 000000000..a309b4ae7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91032a3a9057c73ee43928446ef5a5a78c08565464a7c4884eb38e3fdf542742 +size 27593400 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000145.vtu new file mode 100644 index 000000000..0e5c92e46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d33f68f36369d95d7891dc9e281cfd1db2efe52cc5255f500240be93f6e0bdd7 +size 27593562 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000146.vtu new file mode 100644 index 000000000..b1cff4bca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b31992ee069b6135cb7e5637d7d9ce0cfc29b51ee8330927fcd7eb0c608c0d5 +size 27593897 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000147.vtu new file mode 100644 index 000000000..8e19125cd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f43bdd67a4945b543968bf8cabbd667cbcd860bd5ad30eb08ee020ce7d647376 +size 27593180 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000148.vtu new file mode 100644 index 000000000..0e9e81b8e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d123d4ff942f30f5f9bc1d1df899bf2f74f7b84b61556218ee185fca3cda355f +size 27593996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000149.vtu new file mode 100644 index 000000000..27081e574 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f7b274e6c0c866cb241be5d6d58f4a2cd2b34870c4bdb50d1507593f12dd5be +size 27593793 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000150.vtu new file mode 100644 index 000000000..586902ae9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97ed78865c479933c82fa1e6dad7697e2dd822c65594842f0025343ab7b97f23 +size 27594438 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000151.vtu new file mode 100644 index 000000000..39b6fe756 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c30169970414d10b45e910b884fb0c20a1dc9f2af84f20a464f411ff747f4de +size 27592777 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000152.vtu new file mode 100644 index 000000000..dd5918696 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b5720ac0c26b496fcf85f012e06246c6c065afd1a59dbb5afc37a12d5bce7ca +size 27594128 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000153.vtu new file mode 100644 index 000000000..20941de48 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4c561d3ab1e74a13f7bef34d7fc8d5f7e622cb41f353c7e9612cb2474157f9c +size 27593091 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000154.vtu new file mode 100644 index 000000000..44fa9f7c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:796b134454fb5256ce6dc6c3fe75540d42b9c34edba06775defba1d00d9a54eb +size 27593948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000155.vtu new file mode 100644 index 000000000..bb7f86aa5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91206a9ecdfad4991f673a30b25704c1c8def110e39113a93c3305c3102aea1c +size 27593350 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000156.vtu new file mode 100644 index 000000000..2701a22ed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f325801ea00e308e3defe95211a8c337e5d8d01a090aa12f2dbb1642e3daf9f +size 27594260 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000157.vtu new file mode 100644 index 000000000..67213e8a1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:949c35b20ab013b5523af8fe6b5ffdf63c75cb54a8f6ac2ff463cffeaf286921 +size 27594574 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000158.vtu new file mode 100644 index 000000000..70a8dfb1a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e1085c6b6d9a0b92154fab47883cc925aa42ac4c28e2ac6a6a13b20d7a31372 +size 27593418 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000159.vtu new file mode 100644 index 000000000..09407b96f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9ae29eff9cc88a7f275aec3ee33d7983fe77f46a8737a279314148413bbdf73 +size 27594422 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000160.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000160.vtu new file mode 100644 index 000000000..b405af1fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3ad6f62392a257f94edb1e5d94f1311b8499450f0863f8e5740f059ee4f16b4 +size 27593428 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000161.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000161.vtu new file mode 100644 index 000000000..75cf5c1f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adc3f27f795f4eefd4d39910fd8d146624b8532c5946149d7105c5d3198eea5c +size 27594343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000162.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000162.vtu new file mode 100644 index 000000000..7d888856a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a0e363125b02a78a38de3e4c0cc4fa5c7570717b409e38454ed0ddf4d0e3848 +size 27594059 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000163.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000163.vtu new file mode 100644 index 000000000..7fb349b5d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91c064df2833e7dbb64c61886499876561ce77a62bb8568d53e51f950c1ad6d0 +size 27593380 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000164.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000164.vtu new file mode 100644 index 000000000..458ea306b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0595a881e8c4c779a14a9f8e3acd8d612f2bce4e7331be6ccdd0b4be9e4cb63 +size 27593962 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000165.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000165.vtu new file mode 100644 index 000000000..13317ac37 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4de34b86578044926c6cc6cc2e5d7a9bcb95157876464654c3545ae23a1f5a10 +size 27593979 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000166.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000166.vtu new file mode 100644 index 000000000..2d76b1050 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f54c4e26fd696d86fbc4cf4517ada5e285722d1a53860d1b77107335cf77100 +size 27594125 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000167.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000167.vtu new file mode 100644 index 000000000..eccfaa6a1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c32797b5e8467d83933c828e210cfc60b9cadde7b38aa5e36c32cd85fcbd0016 +size 27593797 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000168.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000168.vtu new file mode 100644 index 000000000..969208182 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0c300a40eeabc1f969d8170293865fc38d6c92fa41faed59408931a32b7fa31 +size 27593940 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000169.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000169.vtu new file mode 100644 index 000000000..d0ebf9c09 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6ead767e4a8383159fcfb45211b63a8a4f9b5258aa724877433eb22a85877f1 +size 27593661 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000170.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000170.vtu new file mode 100644 index 000000000..d3d82ac8f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d115f60c1c41b0a08b8d659dcc3be3e50936e86ccc83d53647c6d760967c33 +size 27594285 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000171.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000171.vtu new file mode 100644 index 000000000..2965c1144 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:199c82b8015bf160e7b89b0a532ae04d9ea2fd6af0ecdfa9bf204d988ea5f344 +size 27593401 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000172.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000172.vtu new file mode 100644 index 000000000..638efad78 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6e394e227867a0122285366dece2b7f5b5a945a33bfd09de9b8e4f9cb030684 +size 27593965 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000173.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000173.vtu new file mode 100644 index 000000000..191a9114c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45fdbe6ab7ff4abb0ef6ad57ed4a2a8c168c0a4d6bad6dcfb4bba157170c6635 +size 27593527 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000174.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000174.vtu new file mode 100644 index 000000000..d567525f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:503c0acc03ee8360cb5ecdea9a9905feaabadb640c58483c004edaf9a1836c5f +size 27593648 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000175.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000175.vtu new file mode 100644 index 000000000..d817d2dff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76c70de27afe970b6775c8f66cf23a378bbe5cd9f36ba016432b4d9e7c8f5d33 +size 27593232 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000176.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000176.vtu new file mode 100644 index 000000000..81f2c195e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2beec28a799b9fdd7d55eb1927c7535c52b76b9e91583ac2ce87713eca67117b +size 27594128 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000177.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000177.vtu new file mode 100644 index 000000000..da3724103 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf6405fec4b467655da959532db765532d7447a29a40a5dcaf7778e16ac6df8 +size 27594170 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000178.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000178.vtu new file mode 100644 index 000000000..8841343c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:881b9d5a04a364248eaadaad146544a3b9022791334500aa88c73b4cd2e568c5 +size 27594214 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000179.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000179.vtu new file mode 100644 index 000000000..c22c36653 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebf929966af48672ccd3e5bd2b5e24e2081185b80b8c97f74ef4c4f31e4435a4 +size 27594075 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000180.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000180.vtu new file mode 100644 index 000000000..0c8a15f43 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dedea3f81c2ec390b80266a04578fe52a7444a299e990c7d2691562d3058621 +size 27594434 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000181.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000181.vtu new file mode 100644 index 000000000..c9af306da --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d44abb15b17bc8ea1ba5f8cae024fc17663ce44c48bc74d96319f7684809e29 +size 27594001 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000182.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000182.vtu new file mode 100644 index 000000000..24dddce58 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8dbe800f5a00ec5e0b7a112ac0ad1c8da8691e470af31afbb83c02df4fc91ad +size 27594747 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000183.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000183.vtu new file mode 100644 index 000000000..6a3d5fa56 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9af2f70129b8013f5692c1771e3dc214cc34de56b2d3671d65308b68317c5387 +size 27593658 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000184.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000184.vtu new file mode 100644 index 000000000..61fc32a61 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59338532bfdd39555b3911ad2a16e0a133d252d45c90abe6947f5150950a6ea5 +size 27595275 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000185.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000185.vtu new file mode 100644 index 000000000..32a4c65e5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ed3c8ace3ef11efc49c7bdf18f726f4e33bb8921d3d4625f20d3449c460f1e7 +size 27593961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000186.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000186.vtu new file mode 100644 index 000000000..5d5146468 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e4bd497e0e0ee48df452b13caaffba5a14f79a62555cf1ecb838b5ae95a33ae +size 27594634 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000187.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000187.vtu new file mode 100644 index 000000000..4deaf4112 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:875fae06ec1625983e52976b77eac6bb2f385b569e281833111079fc9806e464 +size 27593895 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000188.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000188.vtu new file mode 100644 index 000000000..7cfa0587b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abee224b6dd305738135a7d88bd3d6df5457b01225913acc679379b96a14c167 +size 27593708 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000189.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000189.vtu new file mode 100644 index 000000000..d3c357e2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d988a00be206cfb644dbaf73f924739a7457ef6a558fee445854ae2f3fd78aed +size 27594029 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000190.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000190.vtu new file mode 100644 index 000000000..979c9eaf7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d67c57bc2c9e0d6d2f144ab1c332fcb1362885ee13b5f52002e8968df436496a +size 27593912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000191.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000191.vtu new file mode 100644 index 000000000..9da3e1eea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f59d317148920b1a70048351b2b2ce492dcc194166533437081cf6213af6aa9a +size 27593750 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000192.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000192.vtu new file mode 100644 index 000000000..284372292 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5e972e0126e963cef09fead698c5b0bf06b551acbccde1d73162c08eaa668b5 +size 27594271 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000193.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000193.vtu new file mode 100644 index 000000000..f9fcb82af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893e298f1570cde59f37412e203ccce69a2409ffd820cd9b7d88b6efd8c0ac38 +size 27594151 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000194.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000194.vtu new file mode 100644 index 000000000..590f96e8f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffd95cd8b8289e184e98641a6cce676851d1b8fe2ae4228512f1eea4e1da8385 +size 27593891 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000195.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000195.vtu new file mode 100644 index 000000000..95fd4469b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a84c97e7e98b8e25ded43413ba369dbcdac78eae1720f80b1c733aebefd076e7 +size 27594256 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000196.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000196.vtu new file mode 100644 index 000000000..1f20c54fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9af398d15ea93cc5b60b13066cf51002c05c465d3be64aca79f96d2417d7fba +size 27594714 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000197.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000197.vtu new file mode 100644 index 000000000..112374115 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fb8a4a4a6ee67ebf878faac19526c0e27579ff11d0355bca5e0deb9aa846eb5 +size 27594217 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000198.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000198.vtu new file mode 100644 index 000000000..b2b9486ed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000198.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6938b1ab4dd7b9c624b59cd828cd13e3332c4de3313f59b46b87b75a087acc6 +size 27594243 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000199.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000199.vtu new file mode 100644 index 000000000..16a914b65 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000199.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc1d13a673f602de41c017bc2486e527cde7a367a05308950c7ddbc1f558ac48 +size 27593994 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000200.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000200.vtu new file mode 100644 index 000000000..8ffcc66e7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000200.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbfaa436cdfc1da5c785b409b078e0f596566bf33e2db0b952095208fae77a0b +size 27594933 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000201.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000201.vtu new file mode 100644 index 000000000..ca62c9204 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000201.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:090fa774bd09c123b98c41d1f48a63fdd308d81087b2b1d65a1d7a4c9c9396eb +size 27594045 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000202.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000202.vtu new file mode 100644 index 000000000..06eabc8c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000202.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01898beeec47166077d339f5508c685563f656e1334200ee257dd3dd590dcd26 +size 27594179 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000203.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000203.vtu new file mode 100644 index 000000000..105d41e93 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000203.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22616af21dcde0f8056400db4e4d514c3c82cc3319c19e351f57386d9cc4c749 +size 27593680 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000204.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000204.vtu new file mode 100644 index 000000000..3e9335173 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000204.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:832175d2be3d33e5c18fbd62656c751fbbd6dcc1e691680e66d24986cc190d60 +size 27594306 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000205.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000205.vtu new file mode 100644 index 000000000..559e691b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000205.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca308f42af5052794c7df819c8cbfc86fdcd6e198ced43126a94f60c0b4de70b +size 27593530 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000206.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000206.vtu new file mode 100644 index 000000000..64adf9aa9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000206.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef8013b59cb5476d3fb9041ec251506813de3b8e2a0aa5e00e129649e90af92c +size 27593972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000207.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000207.vtu new file mode 100644 index 000000000..6916f788f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000207.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29de5d068bcbc93e07c6eca663ac3efeb21cd5e10080a75f3468427f126d498c +size 27594376 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000208.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000208.vtu new file mode 100644 index 000000000..d746b76bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000208.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16e46f9882831be41a84fdee0347b99e4cc376a9879b1a051c5842722ca783c7 +size 27594007 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000209.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000209.vtu new file mode 100644 index 000000000..26c69602b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000209.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c58f82e8121b1b60d6d4cba6ac0f69adecd11239d01e2b95ab56991b8c23f1d +size 27593837 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000210.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000210.vtu new file mode 100644 index 000000000..09ef89c06 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000210.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:147655e181ab36c870fbe3967ef3f423cc5ad155f29a76e9bd51d5bbb96d6f13 +size 27593690 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000211.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000211.vtu new file mode 100644 index 000000000..2cd9128cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000211.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40eeb77ba27a8e9f93050da193047b136bb6d0bd5b05def06c4cd604e061a0b3 +size 27595140 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000212.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000212.vtu new file mode 100644 index 000000000..c4fa5845d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000212.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dfea825143706fac51f0570d7977940f25dba3c51301414bfa530995255b9f7 +size 27594602 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000213.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000213.vtu new file mode 100644 index 000000000..ebfd48097 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000213.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879abdd88156ac54537188022fc450bd0922989ce1dd9989b7f2f9bff5ab0fce +size 27594361 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000214.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000214.vtu new file mode 100644 index 000000000..4d6d66573 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000214.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b96b3cc09bbf78d6322dc565641d4d134dd396967d635d4c59cfeaa4950dee0d +size 27595215 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000215.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000215.vtu new file mode 100644 index 000000000..881aa0395 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000215.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c06282888ed5cf88d4aef1cc6c2bfafc973cfc538c70b9d844b0ad9643e1533 +size 27593882 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000216.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000216.vtu new file mode 100644 index 000000000..f993bcf77 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000216.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8def5a6b0b353bba894fffaa90c9bcfca5cc00cab6aff68c9b8b9ce274e4bc2d +size 27594454 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000217.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000217.vtu new file mode 100644 index 000000000..0b0841c95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000217.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef544d38da528669cd3780bf0fc6d4846b1fa72a75a7413648e48725f74f2adf +size 27594528 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000218.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000218.vtu new file mode 100644 index 000000000..7392e16d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000218.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71db457899d7d09ea40f803480ea07123139c5b2551ab042c955780f23216415 +size 27593690 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000219.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000219.vtu new file mode 100644 index 000000000..43508d3e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000219.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aebba0a95de5433aa9ab3ec5e1fa2512e595d4e54bcb094e1496c05eef09b122 +size 27594642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000220.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000220.vtu new file mode 100644 index 000000000..57fa9860a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000220.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f9ea8c108be4edea787c212a854d4ab4a415373013939126d02c3a254faf0dd +size 27594086 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000221.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000221.vtu new file mode 100644 index 000000000..46b77240b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000221.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebc5eb9d1df6ea192edce8b21458b4847a04618eaf0eacb5a015e577fa97b51f +size 27594371 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000222.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000222.vtu new file mode 100644 index 000000000..b0626c216 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000222.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bae8743e82327b09e76ff9d9cb51f183566f1bc3a78b2c9599fca0f84cf7036 +size 27594272 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000223.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000223.vtu new file mode 100644 index 000000000..b3259bdf1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000223.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f26f865d9ba77cfb73f56cf404435be3548285382b805bc733cded253a6b948 +size 27594489 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000224.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000224.vtu new file mode 100644 index 000000000..bc718b605 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000224.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a00d3188d7b0a48fa08afd68b62fdcd7a7d79bb0a43ff108921a61e0c748bf5 +size 27594483 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000225.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000225.vtu new file mode 100644 index 000000000..4940cddb2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000225.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9033658546be43e22eea6d6c11226629a8ba5eeec5f632fda7e5cc9c843829be +size 27594781 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000226.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000226.vtu new file mode 100644 index 000000000..fc60bd6c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000226.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:890f1ba249a746bdd47b995a196851ec6df0c1c3e8bbeb34f25edc1c80eae235 +size 27594686 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000227.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000227.vtu new file mode 100644 index 000000000..be6b368ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000227.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4df9faed602831cc8af7c89835591e130e4d3ddd2764bf8114cda702bf476632 +size 27594629 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000228.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000228.vtu new file mode 100644 index 000000000..6de9ac0c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000228.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4cb8154b11546d7845aff0d040eca1313b013550203c5bf7047f81c428f9a7e +size 27594978 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000229.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000229.vtu new file mode 100644 index 000000000..422c74fe0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000229.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25c88a5df30b0be1319ce0f3778617fa6738d24095ba368d253f763b88d20020 +size 27594668 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000230.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000230.vtu new file mode 100644 index 000000000..180a411f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000230.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d610965567f33c6fbb3bfdc43e68f31133cf346eace1924d529fd890e46051f7 +size 27594817 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000231.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000231.vtu new file mode 100644 index 000000000..6d182be13 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000231.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14c4d1a897a4f4bf58c5e11a537bcd0559a24519bbe1691184885f7a6a86e248 +size 27594096 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000232.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000232.vtu new file mode 100644 index 000000000..e7c4c0a8a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000232.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:706a089c68bb4ba3fdf83bbd533ddd837c9839e5cb7c93fe2c79f846d41efe71 +size 27594419 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000233.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000233.vtu new file mode 100644 index 000000000..21ecf7bbf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000233.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fed98a74ac8e61e029b205c3ca58a24273ee7a45795795428f8c16adc67a4b0 +size 27594199 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000234.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000234.vtu new file mode 100644 index 000000000..6a23746a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000234.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3ac35b3c84c5c8c5048bfcff6a29dbc4099699faa6809c566d746512fc7941b +size 27593843 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000235.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000235.vtu new file mode 100644 index 000000000..0856723c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000235.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b056114a722798dcb6660d10476012f5dafb5ace2c24e13394706921c227744d +size 27594233 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000236.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000236.vtu new file mode 100644 index 000000000..fe2910fcd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000236.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45cbd26ce45a971e45846751871fdef6a5a5735830e82809185b3e222fe11234 +size 27594706 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000237.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000237.vtu new file mode 100644 index 000000000..70b3d33cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000237.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b314e48652e401347aa895e7f83e44f6218e7cca1191694561f78e94321dbe2 +size 27594295 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000238.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000238.vtu new file mode 100644 index 000000000..f8b62e8dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000238.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57b7d7f0102d853f479d8afe2eaa5946fc6dce76e5ee0158d13eafebc0468482 +size 27593776 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000239.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000239.vtu new file mode 100644 index 000000000..289a3710d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000239.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4a3bcbcf5a70d309baee51f14c395c3ac78c51508b1f184dde91fb6923ce6d9 +size 27593906 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000240.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000240.vtu new file mode 100644 index 000000000..880e1bb7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000240.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99c109c6dac304bdec9118614672487d3cd875430c32a44aaaa76f9b927dad58 +size 27594581 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000241.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000241.vtu new file mode 100644 index 000000000..926131f11 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000241.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adc5da1e71fefa88f377341b54eb88b9026249d5ef9a8b42d45ab1fba04cb1de +size 27594213 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000242.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000242.vtu new file mode 100644 index 000000000..a9dc2e3ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000242.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:274a65ae526af9355e906ffca4758fbd8456a2e76feafe3d1f54e1eed3fc98b7 +size 27594315 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000243.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000243.vtu new file mode 100644 index 000000000..5edd68eb9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000243.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0927383419d75060ae8bab4aa524ff64fa4f672033166ad1e972f325eaf7d990 +size 27594927 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000244.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000244.vtu new file mode 100644 index 000000000..3dcb14a5e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000244.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f04f33f96c0dfee89783ad5e791b49d431e430fc647f275288f03cb10ef349e +size 27595171 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000245.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000245.vtu new file mode 100644 index 000000000..70a00ac60 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000245.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b536ed0efbcc7f59a50a98065e3a337ad215d83cfe425ec5402ab2b705ce1d1 +size 27594515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000246.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000246.vtu new file mode 100644 index 000000000..4eadbb516 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000246.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f02a0ade430c5bcabde33f1539c2305cd9ec1863aba7e70a3aff724b8b19e1 +size 27595091 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000247.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000247.vtu new file mode 100644 index 000000000..22bdbd527 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000247.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1486e2dcb31369f8f15032a1a86e84326b0ef7ed7f172a61c9155d656c7337a9 +size 27594406 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000248.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000248.vtu new file mode 100644 index 000000000..94892395a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000248.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3706318ab9d1e643730b8e327a8c37044a4a2e218afd0fadc3f1c6e49e04797f +size 27593973 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000249.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000249.vtu new file mode 100644 index 000000000..cbcbbcfa7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000249.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43ce928b5dddc7f456b98077c2f91268fcab7e7437cb76075f39420835eed941 +size 27594566 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000250.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000250.vtu new file mode 100644 index 000000000..7266e2cda --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000250.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c67250ea8a080f90b5fc089fc52f0d06d86662049d0b46ec7f5e34266aac4cf +size 27594603 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000251.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000251.vtu new file mode 100644 index 000000000..b4f38510f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000251.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c81d9ac9e82e1a4bd1c493d663949afaf885af91e844993b7aabab50a4b1e19 +size 27594584 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000252.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000252.vtu new file mode 100644 index 000000000..48f08cbd6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000252.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4580b496a665291aa7ac1970b9066ccc311bd4cf07bcdca7da321506b035c153 +size 27594398 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000253.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000253.vtu new file mode 100644 index 000000000..1d58632ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000253.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91968ff61fb0f353f914d3c1fb71897a479b9301971376d8683e41b18c2369a6 +size 27594979 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000254.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000254.vtu new file mode 100644 index 000000000..95f2e28cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000254.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:602d4f38cb291f31458d5711b02a2a129207d9d2a9b31e3e78644bc5a01f7760 +size 27594431 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000255.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000255.vtu new file mode 100644 index 000000000..da630bf27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000255.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:678f6fe9d952d345d5e9a0258fbeffe5b7d03480c98d6943740925e2f4c829b8 +size 27593888 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000256.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000256.vtu new file mode 100644 index 000000000..825c7e47e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000256.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741da03f084dd8da971c691f8d09bcd2952127718dbe88eab49d400f83321dae +size 27594981 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000257.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000257.vtu new file mode 100644 index 000000000..365a12e5f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000257.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebc83a5d4388b1098929a714d32ac6edaf146ede19d0f7e63ccce12325aca031 +size 27595066 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000258.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000258.vtu new file mode 100644 index 000000000..c3bb0ad17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000258.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d468438c1ccc2b36de7a33676a86c1f71147f69fa31601d182be0871d2ab1f99 +size 27594882 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000259.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000259.vtu new file mode 100644 index 000000000..cda3a26ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000259.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cd541925e86e814e379fb1dfeb4ede4204d9550d07f37517755bd6bbf85d169 +size 27595162 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000260.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000260.vtu new file mode 100644 index 000000000..70a398025 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000260.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b289abf985aef084c4defa93f258cf468735181c25fd5b797460ae739ead2aec +size 27594868 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000261.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000261.vtu new file mode 100644 index 000000000..955589f5f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000261.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a30399a301cb2770ad5c0c464855cfa79fdc8671ac84cd2d7f549ebd9b33e89a +size 27594774 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000262.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000262.vtu new file mode 100644 index 000000000..2a328e7fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000262.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9371fb25cd564eb78e9ac2a42b766eaa0005e55f838363a8985d886835a35c15 +size 27594467 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000263.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000263.vtu new file mode 100644 index 000000000..d93489022 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000263.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09b7b65fa366c15df5fabdb2fc5a760f6b0294fb087c983780540a9aad37a5ed +size 27594024 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000264.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000264.vtu new file mode 100644 index 000000000..fc160095b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000264.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6e19e0810614b483acb53b3188d5188c33b6bc9ed50211ca5a65e20fee27d26 +size 27594855 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000265.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000265.vtu new file mode 100644 index 000000000..89cf7c56a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000265.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e29b5be9e9c66b4785e99ef133f5e69720f5c41f515e7558b99d6e8a40b48758 +size 27594595 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000266.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000266.vtu new file mode 100644 index 000000000..d8d3d8d1b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000266.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a363fedfcd0cbfd1b8fd014b4f85043ac48f396a8fcfa9509fc993386e3bbfdb +size 27594949 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000267.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000267.vtu new file mode 100644 index 000000000..3b1d1fc24 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000267.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd2a6f5f9079121c12fd8e7540f87c758ddb83e2e12749270f1e313d29f4b40f +size 27593991 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000268.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000268.vtu new file mode 100644 index 000000000..80810e909 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000268.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f85c076387562d30e21263634a6f3495d95960846aac823a6a4c2e669965cd2 +size 27594277 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000269.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000269.vtu new file mode 100644 index 000000000..325be1ce4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000269.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57157107e306e0bc179003b7ecb55bd840f5941e4c98224c060cc280477cc348 +size 27594354 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000270.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000270.vtu new file mode 100644 index 000000000..3e5dc15a4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000270.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22bed115cd30a51dd5f80d9867e5b6878bc0a254b9c2dd5236bd2909038ecd5a +size 27593660 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000271.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000271.vtu new file mode 100644 index 000000000..83394c7d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000271.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29d6c7d470b32a5253be83345e451bd16506434a7195b9a6508a3e870e7c2152 +size 27594204 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000272.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000272.vtu new file mode 100644 index 000000000..98f0d9d27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000272.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5f3244cd98be6efb548f67fbc7811cd1e0cb6d37f7af789e6074a0698760762 +size 27594194 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000273.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000273.vtu new file mode 100644 index 000000000..87c485bf5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000273.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9aeb42ba142d90807da9332f06b74c1cc60774e75ff623eee6fbc027da27b2 +size 27594525 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000274.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000274.vtu new file mode 100644 index 000000000..b3e65f80e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000274.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7e5890a86a1f8d0a47123db8e316fec7fa48b29ba0722ebd26832fab9aa870d +size 27595611 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000275.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000275.vtu new file mode 100644 index 000000000..34baaefad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000275.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de8c43f1be516fd0a731952868c3ea865661bd13f89c6c3a9cf7520a5d125a58 +size 27594399 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000276.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000276.vtu new file mode 100644 index 000000000..9431bcc46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000276.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0984753bbf52866bdb3edbe77f7e42d468dc3042d0f484f57dcc1b95ed7a171 +size 27594536 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000277.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000277.vtu new file mode 100644 index 000000000..24053ba1b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000277.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a8dde1882ccefe66529f26f2082cbbd4034007a2d55db24f26d61b0934f1d6 +size 27594123 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000278.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000278.vtu new file mode 100644 index 000000000..3ed8a73b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000278.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b394d8e1aa518115b07f2f22c400e4bdeb6f4598054c2498cca549dcfaed0a12 +size 27594628 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000279.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000279.vtu new file mode 100644 index 000000000..1a91b8cac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000279.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218cf7cd2e533d1e17cddf0e9d12f15d5b48b2fb0b0c147d3365bc6847656755 +size 27594902 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000280.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000280.vtu new file mode 100644 index 000000000..5b4355203 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000280.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf471d442516b78cfbb7f71e1dd3445e4cd823a1f35554fd7b7934224ea0e167 +size 27594014 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000281.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000281.vtu new file mode 100644 index 000000000..27f0ee2c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000281.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e21cf4562ca9cb8599ca11764d7ddc915ce9bc0c0c36c5d5dc7a8d3487258189 +size 27594922 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000282.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000282.vtu new file mode 100644 index 000000000..5008d3573 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000282.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:774f9200427d94298ab99b1403d62aa2d88b89fb3907a1a4fa576c0326264f70 +size 27594257 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000283.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000283.vtu new file mode 100644 index 000000000..50cfa14c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000283.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77d60b0bd92bdbac9a08ef8b719c2dd4f8fd0df6cfb572cffd4f4368eef3ffbe +size 27594157 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000284.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000284.vtu new file mode 100644 index 000000000..c297c2c8d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000284.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9097ca53ddc3cc332d5e2f87e125c6502e17723235571594b9893e824803d069 +size 27594662 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000285.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000285.vtu new file mode 100644 index 000000000..18f281d62 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000285.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f2d02ecb6794e73279bfd496b127ed0da876b7a02d1a1be903971f74ade2ba5 +size 27594390 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000286.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000286.vtu new file mode 100644 index 000000000..34ac707c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg_000286.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6ec39053f8cfbbd1e829a81536c87918fd542c51d9c005063ea72a9d72e6774 +size 27594332 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.series new file mode 100644 index 000000000..5669d63df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218120dc050fd7202fef70f3de28617fca795e83584f9b6715f88baf40eae86f +size 44988 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-checkpoint.npz new file mode 100644 index 000000000..372b06df2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2411c3008a6afb6c8b27a3079e486c514acb8c14d40b859e38574e8e0cc95ede +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000000.vtu new file mode 100644 index 000000000..0527ce2c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:835853127a1f614fb343cca4d722339d1f6aa6acc57cc2251db87d9305fc950b +size 16098746 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000001.vtu new file mode 100644 index 000000000..683772876 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:657e860ef3ee6d1ac88b9a3ba9a1cc246869ea776e44ea654dec171855c6bb94 +size 27598266 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000002.vtu new file mode 100644 index 000000000..7305ad805 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80620d8e9216c01fd28f60afb15031f76b3575784c9b7c655f822284e810fe53 +size 27594193 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000003.vtu new file mode 100644 index 000000000..bc5d4dfbd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3020f89e3a80521475b59a0b31436875bc0df46f244a82f568a47906efe849a6 +size 27588500 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000004.vtu new file mode 100644 index 000000000..ac5519baa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:123e30868715f974fb7987547593ce0e91aa51ba26f9a35cfb8e446f738206fb +size 27586832 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000005.vtu new file mode 100644 index 000000000..f43f47892 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a29b48f5084e2a953b0496d9c90d462258a5f4c67a71e8192860f3e2e1651c73 +size 27586248 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000006.vtu new file mode 100644 index 000000000..c975c55cb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c270d61a60530bda1150c0908c174304450164e1749d535c7a2b70f277e2bc4c +size 27586889 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000007.vtu new file mode 100644 index 000000000..9c1578cc6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e356e17670de2816088d8fe68af7be275ae8571382f5dd9f718e0a71c380f15 +size 27590204 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000008.vtu new file mode 100644 index 000000000..48d7a5cad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:807d3ac4a0b454e020e2409f9f92deb110403bc3cbd9d00d0fd1ee78958c3873 +size 27593139 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000009.vtu new file mode 100644 index 000000000..eb4b232eb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dfeb2e524c1ad9f62f586cee615b0306907a246b1c5491c0cf0d62cad79c263 +size 27594132 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000010.vtu new file mode 100644 index 000000000..8b093aa82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:064dfa47ff16629f1c089f0cca201ac0ae57686e5d36153a585f312ad4ec0240 +size 27594803 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000011.vtu new file mode 100644 index 000000000..9424bf48a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad631611d47ea52ee2f43b0a83b7cd9ff6c3fda627e96b13c0467d1d07c2b9e +size 27595184 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000012.vtu new file mode 100644 index 000000000..b68d4cfa1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b96e327e2e8a005415e63f1ff6f2fcfd0d599b40dd9bd8434953d4f2ffd1eb8 +size 27595492 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000013.vtu new file mode 100644 index 000000000..d4c6931be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:649a1d4817d2233d8f0f8cc42d231e1c8ed537d74111c29bfbd179e889a7a686 +size 27596948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000014.vtu new file mode 100644 index 000000000..529f14e46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2efa78daf520af9b102240a4e929bea69a379ed4bbc28774e3f21180085501ab +size 27596377 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000015.vtu new file mode 100644 index 000000000..2fd6acbd4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:064025e5450c41b26c2e672cbd98f26040252da8bcbc263a9d474d77dc27909a +size 27597136 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000016.vtu new file mode 100644 index 000000000..f66d24af1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d991d60b7058d4ab6dd74ff1196c98b45fd49dff1f9a6b3eb728f22d255d47ad +size 27595600 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000017.vtu new file mode 100644 index 000000000..15077ccf2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c1878e965763ab383bc0bcf9bb6131a5a86d062d173d3691840a3c7d0f56034 +size 27596783 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000018.vtu new file mode 100644 index 000000000..968978aa9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a006320f6e3e3f48f41b1db3efae30c7c4cc54497c25098bf649dfcbd3da1e62 +size 27596941 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000019.vtu new file mode 100644 index 000000000..2c7a43d34 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef5f4cf4c921e936e0cb9132448c0878c9077e85b8b26d11e6ce5de636f185c5 +size 27595483 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000020.vtu new file mode 100644 index 000000000..9142ec1d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09d8b6864de8160c44a4ba0f7033acb35ce59e276f66bfcf12a86bef313d9fc1 +size 27596046 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000021.vtu new file mode 100644 index 000000000..c20f80d9f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62ac42cdc1894ad278985e3272e31d305b34c68ad21c88ba0cd3ec5d96d33ed7 +size 27594680 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000022.vtu new file mode 100644 index 000000000..ad04487de --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bcb35e0f51f5ae11f893e83e83ed8497844b335e9e37bfdece859eb16f7fe69 +size 27594986 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000023.vtu new file mode 100644 index 000000000..dc6cca7ac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc8a3671ae282185c0df78778ba7a58803b5a2ec79d1376f38176965f86ba73e +size 27594427 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000024.vtu new file mode 100644 index 000000000..3b1b71f08 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49bd4ecac3334b9356a6fb40e13655030fcbfb95a0c251460dfbb64cfb4d76f8 +size 27593860 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000025.vtu new file mode 100644 index 000000000..2b1ac8a81 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba9d6623ba164cddd1ec8413c573c472717de2434df79dde434c3d745947cf22 +size 27593566 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000026.vtu new file mode 100644 index 000000000..76822e59f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8988c3d5a5a9c7e030394ed3bb49996067869c5947e7323185f926815f6517ee +size 27594326 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000027.vtu new file mode 100644 index 000000000..255c739b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0a639753b60f6de4c9146bcf9f6ecd23edb9703eadc2843a76f0dd97ae2ed67 +size 27594263 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000028.vtu new file mode 100644 index 000000000..e19812d1b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a3bda54bcdf13e215e5324c05c5266829e7cb470596d947a9240136811d2326 +size 27594264 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000029.vtu new file mode 100644 index 000000000..c9fe44be7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c777dfc78ef75f6a6824f945b010e441e8c7a0fcff6f3eb293a4829de5a9879 +size 27594692 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000030.vtu new file mode 100644 index 000000000..fa0029f8e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc5a9944e652e55b9838af0605538b5f5321d006dd1910ed8d656950a3d4c5aa +size 27594355 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000031.vtu new file mode 100644 index 000000000..3ea5d594a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8b624308bb6aef2800d159a21b332be7de743ec7fe6e701a4cd5dac51cc91f1 +size 27594828 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000032.vtu new file mode 100644 index 000000000..29a37e130 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:378cb3267010e04dbcef4ee03b76695cca7a6c445a4cab473f46fb4a82236880 +size 27594946 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000033.vtu new file mode 100644 index 000000000..b618893dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c41f17bd93057a4b541dc157737ec1e813d17aaf706e266a61d326e013ea03e +size 27595618 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000034.vtu new file mode 100644 index 000000000..c64c4f261 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2a60d5d932367756ef380da171c5fddc6f65be908b90d5208aa0c35c6fd83fb +size 27595572 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000035.vtu new file mode 100644 index 000000000..c222f15a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe4cc73ea9c9329d23c8c4b53ab45575270adca9126e97dbfb84ce4b32ee22be +size 27595018 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000036.vtu new file mode 100644 index 000000000..26d8f0373 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa121cf2c50eb788496cbd09fe4123123fc72e4f32596acd949285c8fb1bf277 +size 27595527 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000037.vtu new file mode 100644 index 000000000..d4cf2bfbe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe13711d96aac15f8a1bc8fa98637f0ff76796394962cf380ac602d9991114b0 +size 27595508 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000038.vtu new file mode 100644 index 000000000..a5d1cdcda --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfb0d49f21f1254fe7e1dec2f3694162180671e3e0dea2cea32dbbaff5917050 +size 27595349 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000039.vtu new file mode 100644 index 000000000..2ccb90800 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a4e7e180dbb8106bfd107e5bf8575bdad4a705df8056011aa9b1ad90b66de9 +size 27595692 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000040.vtu new file mode 100644 index 000000000..8b11b94e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67417bc7d3004e4abbcea092a5bdecd4163b6c728595ff16b9d89531a90673d2 +size 27595788 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000041.vtu new file mode 100644 index 000000000..496043c40 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2560eb36ad4ded395ec2f16ed4756a602c19fe8163be79ac9b9ee55d91f0c49 +size 27595269 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000042.vtu new file mode 100644 index 000000000..7df33e391 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:098e99c4bb67e80705d4bcb3788a363ef138b5b5df3afadf69d0940c797fada4 +size 27596553 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000043.vtu new file mode 100644 index 000000000..f9b5ddeef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13c355c3158b3986bf7fba9bf79ca1d6d343f12402afac40be44af37e098434 +size 27594731 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000044.vtu new file mode 100644 index 000000000..b1e046768 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4058d0e0ccd7566c318790b5edb445fc6f04ef3a5bbc5be757d065fc231cac7 +size 27595725 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000045.vtu new file mode 100644 index 000000000..b664789e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:258e8fe767a301bfec0d7dd9879e8928760a34865b78a5a601b2b617ceee428d +size 27596553 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000046.vtu new file mode 100644 index 000000000..bbc817f2d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff98c1fb62aa8eeba4395e127aeb5f10f9d80b8db7e6716874eaad3ba2e5395d +size 27596255 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000047.vtu new file mode 100644 index 000000000..44a4ed419 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13b0a85a0662e79409590e1228475104484384e9b6f3ea8c136595409e168f8f +size 27595796 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000048.vtu new file mode 100644 index 000000000..d8dee1cb8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5873731916ebbee2e1fcaca2475f2efadc2268e25069d0cc2fb68f17c851e60f +size 27595281 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000049.vtu new file mode 100644 index 000000000..e40384af5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3230930a8f3b6383666255a92797d94fe9a76725379a886b8c9d19b9f7baf48f +size 27595371 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000050.vtu new file mode 100644 index 000000000..ac4e89876 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc17164eb1054aa18a4d15bfa6d91ac1d1db4080aec5260faf5d3a7070b6de3 +size 27596069 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000051.vtu new file mode 100644 index 000000000..547593d5f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d700d48a36648dde0cdb8688c2e5e4e170335c48d68b27f9a67b503033543bb6 +size 27595942 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000052.vtu new file mode 100644 index 000000000..bd1161dd7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bceed87a6d2aa6067a4a6cd15a54e4ff3e7bdae8891080e26ae74a5ec3bc441 +size 27595037 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000053.vtu new file mode 100644 index 000000000..4f6e9cee6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14a62fbe9be7f6ffbee2a993f23a53b79b18b5c434d9e06c51d7b34279598da3 +size 27595874 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000054.vtu new file mode 100644 index 000000000..ea7e16f56 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce27e3bc6b8f6371056edfffd1cef3558e63ba88c8dc078f7090261b127b4b94 +size 27594801 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000055.vtu new file mode 100644 index 000000000..c52f7f656 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbebab548f45d14749c8a913730149744bd565b53f84e41da20b543367e94f4c +size 27595040 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000056.vtu new file mode 100644 index 000000000..38724bab0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb9228cad9570818aa4e1a29022a0f0e58f18f944574b45740a22e0830f66903 +size 27595808 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000057.vtu new file mode 100644 index 000000000..a4df11e73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e862d312a720f043028cee02a61601933ee3baff7f54fa0f4da68f7dd774bb3 +size 27595826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000058.vtu new file mode 100644 index 000000000..52bb24707 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd18eb1f161b28e0306667f9f2903c22f1e4219a488f3395f63db3256fb2ca28 +size 27594585 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000059.vtu new file mode 100644 index 000000000..76e2aa079 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:857674d0a91122a1e20af16a54fd0e4a9c5d64102e26428855824b2cd1369d64 +size 27595562 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000060.vtu new file mode 100644 index 000000000..c959d6ecf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:329c042bfc59199bafe128438036fca5c59a8f7ca06a36cd2e2cc8c7fd00b182 +size 27595235 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000061.vtu new file mode 100644 index 000000000..f73d25fdd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17523c52b391fc6e6f1d51de813e48c5068f9380348199a591ecf024150a9e97 +size 27595343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000062.vtu new file mode 100644 index 000000000..d0aaa0ee6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1b86f47ad945fa602e8ddfc6aa7efd35755100f485b869014974b16eaf10e16 +size 27595691 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000063.vtu new file mode 100644 index 000000000..384cde3fe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d22e5526043d9471c1a3b8e46478062a0678c419acf12eb714d79bed349c7560 +size 27595094 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000064.vtu new file mode 100644 index 000000000..b18fb2832 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a216ab77d7305a89942cf9539a6e9b0079e8827225220a6dd2b62e90577eaad +size 27595136 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000065.vtu new file mode 100644 index 000000000..6363634bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82751623cfa1956b3a3ebde329157770289388261b47ade91b5695377d30eaa5 +size 27595708 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000066.vtu new file mode 100644 index 000000000..6bb453049 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f25e9fb7a97220f9571bf667b9b86ed5bece0e70d4a15a05b3888d855054ca6e +size 27595460 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000067.vtu new file mode 100644 index 000000000..1cb8389c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a104b9301e4abe3aef17b9bdfcda6f059bbe04dec354085bc41653cf8dd81d73 +size 27595636 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000068.vtu new file mode 100644 index 000000000..49d5272cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf136d1df340f225d17a6d470a4ae80115a3800ce769dd9cabd9d46ff8518e7a +size 27595055 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000069.vtu new file mode 100644 index 000000000..1d8ae675c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc38eb93d56105c27cca06239081df73201e912ac3a1d39d3e2a38fac449b1d +size 27595273 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000070.vtu new file mode 100644 index 000000000..92a20c02f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37be15eab14195c92049f635a40f8a7ac10779a26b4dac0a4323aad554dca774 +size 27595676 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000071.vtu new file mode 100644 index 000000000..ec83fec62 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b7f9df1072f55f99bf22bc28cb1ce7eaf5397efa11dedd0eef0d4f034789d79 +size 27595354 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000072.vtu new file mode 100644 index 000000000..2fd81ce15 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b260611d91808abb6717e1b45e8d70f306963ff42e81d76a9cd70ddb351cb061 +size 27595745 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000073.vtu new file mode 100644 index 000000000..ba2ee26f4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2668ffd6db151de1e728d6f943d496482b7a154844ac6b9ff8e5d4efdf6ec69 +size 27596025 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000074.vtu new file mode 100644 index 000000000..65cbb0dd0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:666f86d318a37dae69f4ca6fc4f837dd12a6c38f950918b34c97e4f0c9374e8e +size 27596145 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000075.vtu new file mode 100644 index 000000000..31a58899b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aec7f6f38d7e3d347c20db68f05530b78eef4fffa07c3d21f97ad83923910f28 +size 27596236 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000076.vtu new file mode 100644 index 000000000..53b7be095 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0b65f3e8a5445e9c2eae5dc32f1746168aea81814f87b5ac670420fc3ddc4a8 +size 27595002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000077.vtu new file mode 100644 index 000000000..dcafe20b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d08602b1510ec6814a8424b3e5bda8008a9407d0eae630db86f82f4d0104920d +size 27595961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000078.vtu new file mode 100644 index 000000000..943833484 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fb15c067cd8147aaf60fc21c87261eed5e7e4b5c9ce4191ea803b678db1de7e +size 27595649 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000079.vtu new file mode 100644 index 000000000..8930a4f2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e14c9cd683e80a34d3f0d56fd0e3780d20a2ded11c0dc9c8236c2adeb859b8 +size 27597161 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000080.vtu new file mode 100644 index 000000000..77125bcf9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1d61775edaba58227aba4282737f44c1935971f35ba19680c1130a9d94f6708 +size 27596031 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000081.vtu new file mode 100644 index 000000000..76cce14f8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2169409460f241e3c454ccc4920bc62915d48bc61ad94d18bf543698329e59c5 +size 27595791 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000082.vtu new file mode 100644 index 000000000..6bccb8304 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18936bf19338a724824fcd5f1e2d56c9834deb9b313f14d6c785e7f4c4a47d39 +size 27596609 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000083.vtu new file mode 100644 index 000000000..ca40d9cc3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2008d0c5f4498031ae142413379f08e5ff2e656705489a44619095773616185 +size 27596253 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000084.vtu new file mode 100644 index 000000000..1e7efb177 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61134171e2561d41b512ec88243d659fb56d79d405c91a1b78e96feddff3744c +size 27596565 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000085.vtu new file mode 100644 index 000000000..4fc454e32 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebb84e6bd468ed026eda40a0f201a6f9bceb458205c99dad059bceb67dc08840 +size 27596281 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000086.vtu new file mode 100644 index 000000000..c21352404 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6db4936357ce2c1cafcb9e23cbeabda21b71dedf8c5e479cd4c5b32876cb75 +size 27595911 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000087.vtu new file mode 100644 index 000000000..c2b7b9d60 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb1f84c76d6f37601487d10f34304f2c42c5009af5a11726fdb7ff799ba15b89 +size 27595751 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000088.vtu new file mode 100644 index 000000000..a9baba814 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2808513c4914ff02cc1b7cd07b890e48252e3e257e9fa4882d611d32a4c4e9e +size 27595794 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000089.vtu new file mode 100644 index 000000000..8e6ee8cca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926a83f17371dbe8ee4728d02e93ff72ef5786881bfecb865ef197714ec24d19 +size 27596558 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000090.vtu new file mode 100644 index 000000000..b942f06d7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b7aa2afe2ebe9d1c59a25a67ed26ea3223624b550c812036b0b140dbadac0e +size 27596097 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000091.vtu new file mode 100644 index 000000000..490c766a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:390df38b80ddf7136b101a5faea8cc22bd2aa708e306dc66814463519ab8bcd0 +size 27596465 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000092.vtu new file mode 100644 index 000000000..37bb202e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:593065fe1c90d8810921970a33d765526c6c2ee431570e95b23c07c52c13a3a0 +size 27596368 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000093.vtu new file mode 100644 index 000000000..94cae639d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8810f63a89c8d3a734bc9a44d8a49a369996a1d30978692b3a659a38d1df65ed +size 27596137 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000094.vtu new file mode 100644 index 000000000..0f688ab91 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef0876d05ee4098f4e36e17849940d77abc064815604f9e4fad0a977cc0529b5 +size 27596743 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000095.vtu new file mode 100644 index 000000000..a7d38642b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e46972324897b5bd3c8aee4f3e5e7f14956b552c5f6bf76ab199fcc579daa98b +size 27596730 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000096.vtu new file mode 100644 index 000000000..1150152e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29bb0f6371f5049f13e021c06ceada0a199fac04ca89276e2adf14f53a92c1e9 +size 27596595 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000097.vtu new file mode 100644 index 000000000..ca8575949 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:347268281f48ec1a7922a1790b023b11e2c849cdf01a04a079905f1704fcdab8 +size 27597036 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000098.vtu new file mode 100644 index 000000000..437728e0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fcacbad156ac2eeb80ba05a1fb6d411b9f48349db72a8e6a373ec289621cf1b +size 27596732 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000099.vtu new file mode 100644 index 000000000..bab2d8a9e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79a63195f4264c7aaabf521f7d50d903b26adb6d503e787eba7bc522a9660d1c +size 27596542 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000100.vtu new file mode 100644 index 000000000..07083f0f5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7084ca70af075c2cdc528d1009da2d9c15fa829fb49913d093994b712004c7e8 +size 27596181 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000101.vtu new file mode 100644 index 000000000..07d2f7aa9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ff7dcffd9eee343f0a1037b03b1409cde9fb244144db0904a18ff0d230ec230 +size 27596056 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000102.vtu new file mode 100644 index 000000000..ba620351e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fbc1ff228485515db8f7e05acde020408ff4153094c1e6559109302683d44c2 +size 27596281 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000103.vtu new file mode 100644 index 000000000..c234cdff1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1c3df6f9a5f9f6c2168bfe61859b01428eaf94b442272948a917be19733e0cc +size 27596098 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000104.vtu new file mode 100644 index 000000000..abc513e6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d343bba8fe6b9d5574cc42290a02a7b8b895dc93b8da4bd45e2dbbf59a8c118b +size 27596509 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000105.vtu new file mode 100644 index 000000000..987f41f8c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08edd762ab367b9b192af6161ad879b9d6ecc568ef16914d5b39ab332b819f95 +size 27596692 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000106.vtu new file mode 100644 index 000000000..c8a22351b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:318e86f6e89c4f87d5ce1f23575ad013041b8726f1cea91d916409b4668f6d33 +size 27596726 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000107.vtu new file mode 100644 index 000000000..e12568c47 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a45abec66295a4cbe01ba51f4a7dba6b2acb9d1de478d5ee54e4cf073085337d +size 27596881 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000108.vtu new file mode 100644 index 000000000..e4a677c90 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1695e6f7a6699ccbfebcbe1cea891827911abe3eed02216f0f545891c9603e60 +size 27596875 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000109.vtu new file mode 100644 index 000000000..c5782178b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bb796f14a87058255bfba647d6b8a37b90cf22a717e1b39ea143d2b64adccdd +size 27597003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000110.vtu new file mode 100644 index 000000000..315145c17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaf1377af556e50bf7aa1405227a534b2aa5e80f8e70cba5fc9f2d1ec6427aa9 +size 27596382 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000111.vtu new file mode 100644 index 000000000..dffc79ffd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:421e294e30274b9cd8cf5c34925d44ec53dbdbecd77cae7dec2e82f387c77b3f +size 27597009 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000112.vtu new file mode 100644 index 000000000..e9f47bf96 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5273739440d30b4177c3b9af0ba7e5a0e8bec42247f2ca96b288f71fceb50986 +size 27596155 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000113.vtu new file mode 100644 index 000000000..bcf688ca6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce2065aa837c0e335fbad7caa44962a433cfc00ed0999fd86e55c1807f8c0bf1 +size 27596051 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000114.vtu new file mode 100644 index 000000000..4efe9f576 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a95c1b507d675932a3b311750aa90a92302ede2e032e6816520ac0325ef51c76 +size 27596030 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000115.vtu new file mode 100644 index 000000000..4bbd9858f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a860982c314fe07748559921a90875a4b62b9d168f199912649993bd6fe654a6 +size 27596006 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000116.vtu new file mode 100644 index 000000000..a72a7959d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3733644c45a4e23527a88cd4fc5ec83fba6d16cdba5a5c3f03ac03372e17faf +size 27597252 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000117.vtu new file mode 100644 index 000000000..0fd787f52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f85694b8299606ec2664f11aa9b7dc806426d8d8400577d2b7d84aea983287b3 +size 27596148 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000118.vtu new file mode 100644 index 000000000..7acb3ee94 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08cce2761565cea65f9a52121f5380a6143db3def5e87d8afc2b2a575dda966b +size 27596574 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000119.vtu new file mode 100644 index 000000000..3a54f0c20 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3de04abe65af295f7b813f32cd9603e8a70550578fe8f03aaf89f48950f78ce9 +size 27596504 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000120.vtu new file mode 100644 index 000000000..85e6d04ad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6ab4dffbb3ec2e39f64e62347d2ea142e7db766aed908bb664ef70b6902aaa5 +size 27596855 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000121.vtu new file mode 100644 index 000000000..8afeefa22 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:136397118de214aae91ae19f4d5ede5fe01fddadfa0ee802b9b9e9048587a3ca +size 27597187 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000122.vtu new file mode 100644 index 000000000..e739a0015 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8c7cad0f38891f4ad147b2036d5a192a1325a71a4b90f6db8dc6b11d99b79dd +size 27596784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000123.vtu new file mode 100644 index 000000000..88189cb3a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de14ad417aae060c10beaa1a576caf1fbfd5ef1cf5bbd1b509af9fe3bf32b70f +size 27596292 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000124.vtu new file mode 100644 index 000000000..10b6ff953 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64a2285643d3efab71704ee120ab1a11fc14778b7cb8c93d18848437d03f152a +size 27596667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000125.vtu new file mode 100644 index 000000000..6f1ca133d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28dec948f5fe584b7abd8a4f7a2172454a52dc7b4ab6fe7e2d7b13d9bff086fd +size 27596376 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000126.vtu new file mode 100644 index 000000000..f4674666e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cecc5c3d53b496d408f4cb840007b79b6e9122f285925632590a26ecd0cb3eb +size 27596205 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000127.vtu new file mode 100644 index 000000000..e5055ba13 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ae3b5a8bf321a6704a361318c47b4c595d41b8560fe0c0a53aa7baa63abe17c +size 27596198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000128.vtu new file mode 100644 index 000000000..452fe93c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:071a4eee2eba54bc9fd767d23f61e927419efe804ea893c40439955794a19e36 +size 27596434 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000129.vtu new file mode 100644 index 000000000..d2e82d6e7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:376619350f7ce60388b5f73ee531fd5566fac37d7eb63b5064264b9d6a89bf38 +size 27596713 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000130.vtu new file mode 100644 index 000000000..90fc6d850 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4c2a23056934918fc9264bc8f28441cf64a3dd7cee872833a27acd37cbc1bda +size 27596169 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000131.vtu new file mode 100644 index 000000000..ec02b25d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d905bcf9e97be9ff2864c555c7bdf44fab44c07005695bbe519d6067197d2a +size 27596290 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000132.vtu new file mode 100644 index 000000000..13d38f01d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9ad2ccdd0302324debc0adeaacf76067026bc69ed38f5d947649b0180ef6504 +size 27596774 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000133.vtu new file mode 100644 index 000000000..2a94f3d9c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6a2124691e45d10f82a999371ad24f39b44b2c413d6535aaffcb53a2dcbd6f8 +size 27596217 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000134.vtu new file mode 100644 index 000000000..2bba3d4a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffeb538a8649a11529e61246da163948bf4c5f7d0669fddca0d6499a651178c8 +size 27596507 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000135.vtu new file mode 100644 index 000000000..720ba7823 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d703153f430326cfb4e1a2a4db49cec4e8356ef2ed62a6d981c56f4316efdea +size 27597068 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000136.vtu new file mode 100644 index 000000000..5c05f292a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d9e3ab60dce077f777642aa11f4feb5117c9c535a8bd42b3dfd83c05b5ac6a1 +size 27596078 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000137.vtu new file mode 100644 index 000000000..61b2bb880 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42332240af67b1af8c59fe3032e29de6c9d23fc63054f5cc90a3ea7b9867ee38 +size 27597094 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000138.vtu new file mode 100644 index 000000000..3605b1054 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:637e82f06028e87eb71d483b3f542b64e9c427a8f88fd98839798c556433595c +size 27596609 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000139.vtu new file mode 100644 index 000000000..aefd66962 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:540e2a4872c435e1009e6781000956c669f5c59ecbfe3c9e8f4c394fc05c7fcd +size 27596580 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000140.vtu new file mode 100644 index 000000000..62245ba17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1966f87b186efc4a5847b8181763963b4b700075bbb15b6e45d46a362daf59d2 +size 27595857 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000141.vtu new file mode 100644 index 000000000..53133e7f5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7720ff2f16fa75e28670a723849106cd775df036599a9a052b02247171b8ad8d +size 27597391 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000142.vtu new file mode 100644 index 000000000..8c873feff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a668567246123bd0ceee0d71a3c8502cd9b7e5c9a5e4888fbafa423d7644f612 +size 27597197 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000143.vtu new file mode 100644 index 000000000..c57ff8db5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffbce1ed34bffa584eba5d874fb91236186be2d585150ef55dde2de5f37c4a3a +size 27596743 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000144.vtu new file mode 100644 index 000000000..51d885af4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df24a5dcb40a911d98ee8a9335ef57cf43f162197e90c8d43d5c64083b020dc2 +size 27596711 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000145.vtu new file mode 100644 index 000000000..0d59ae01b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:563ccb071e1242ebfcdfdec1ae38f2087367208c91321c7377b0204856f6213c +size 27596798 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000146.vtu new file mode 100644 index 000000000..284a15059 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b2bc55b00b591b4b4377832f273a7799b52a0fb5e1156265fbb3730d35bdc8 +size 27596799 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000147.vtu new file mode 100644 index 000000000..b85759fdc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0c4779f83edc097554d4361332b96e2a18bd8a08c1707d1091813a78703f139 +size 27596800 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000148.vtu new file mode 100644 index 000000000..7bb5f000c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d01f35e8ed2d2c6e50f85743c6509590a7064fc2e6c1cf29f6d5a2a31c837ae9 +size 27596971 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000149.vtu new file mode 100644 index 000000000..f86821831 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e4e3adbbdd5d70abce28718f8386776b8bb5b5e2fca9d2b5053b25a4dbfefc3 +size 27596859 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000150.vtu new file mode 100644 index 000000000..a40fa0a4c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d944cb4a1788e89deb11a2ba4692f4ad0cb7fc556729c8abcaef40120296fb1e +size 27596591 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000151.vtu new file mode 100644 index 000000000..25fb2e849 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dee50a6ae4d8a46150ecbdc199bfcc7e968a7a01bed51fa80c0b089f48a61a3 +size 27596961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000152.vtu new file mode 100644 index 000000000..c95c3bcc0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7a4a2b3df3c7c72423c6b7b3970adddc48c92ffb0846e65c1cc95985ccccf66 +size 27597270 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000153.vtu new file mode 100644 index 000000000..01728df5f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0759e91ed1c1e64aa589511609cdadeea74f52461f4c01a90dd480aef4de6430 +size 27597017 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000154.vtu new file mode 100644 index 000000000..a7cb4f946 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7c94c5f92294e40d6cda47ec0ef900e30e8364a3b628310d8796f2457885252 +size 27596673 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000155.vtu new file mode 100644 index 000000000..4f46c8db1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c70470f569db3d3dc60c14839e177b0e4bd0ddc719fbc96f692e7c58452fc96 +size 27596949 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000156.vtu new file mode 100644 index 000000000..eb4d82bd0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26e8d584418526f3ea3c6d0f781821ff0280e297e09427e22903ff6220a7da99 +size 27596492 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000157.vtu new file mode 100644 index 000000000..5d2923143 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc10d4f7f88afaa54c47ec1560f2b3c7df210365cb99f7b5fe86a13c379963d3 +size 27597027 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000158.vtu new file mode 100644 index 000000000..5887a2e23 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38250012af6d91824884b71ab432b94fc6920f578dea36c483a558c16f00d0a3 +size 27596763 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000159.vtu new file mode 100644 index 000000000..a3ff23cbb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acb9a74b6cf6b78810d42d00bcdafb993cdc4c3d9d220c70943c7f75fe38dcfe +size 27596996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000160.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000160.vtu new file mode 100644 index 000000000..24b9dd3f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d4e04b3f2a0597136bfad6b1a962487a29c66e5ce52afbf3311f517cf852587 +size 27596713 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000161.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000161.vtu new file mode 100644 index 000000000..452881a72 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8446da5dafe271542d3fc319f00109d65bf5d999a2df354c989ef89c87344a79 +size 27596711 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000162.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000162.vtu new file mode 100644 index 000000000..01b8fb056 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:576a46a73586126039d9e4391f0501c9f529c8c2ab744052b8f4bbe697db461c +size 27596802 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000163.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000163.vtu new file mode 100644 index 000000000..7a81b4251 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a19deb773d54a754903552ee21b853ef062be0362b8f26c3c3e4ec6b1219d8f3 +size 27597248 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000164.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000164.vtu new file mode 100644 index 000000000..4f73d4b5e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e949cf58225263d9c516532b628c9bcdd8a47aaaf7d7975a01da7951570a42de +size 27596909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000165.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000165.vtu new file mode 100644 index 000000000..e36dddf8d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:706f9ce705a274e02d5a1208548f7b734b11d14548832e63db684b7a17d36759 +size 27597256 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000166.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000166.vtu new file mode 100644 index 000000000..b7d0bed1d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b725d098642352bbc0122a791973b33f606329544bb1d178ef98cac90a88c6d4 +size 27597461 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000167.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000167.vtu new file mode 100644 index 000000000..079010881 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e291071d15d28aa3d62fd4f266998e7e9919706969a938b1e5dec9f45e06368c +size 27597061 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000168.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000168.vtu new file mode 100644 index 000000000..7d6a5b6f0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:394bc77514381136cd953f695bbb1a05925049c0fad451951b3d81c54626c097 +size 27596653 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000169.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000169.vtu new file mode 100644 index 000000000..d4f7e5d4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7972a769be03662d6e1a3f00a2dc05f338278cb9a673741e04a51ab77cc46d2 +size 27597234 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000170.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000170.vtu new file mode 100644 index 000000000..322e74227 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcde65a1e9b78bbece857437f06a9f9b73530da508be249c609adb7904e7eaf8 +size 27597102 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000171.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000171.vtu new file mode 100644 index 000000000..46134950c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2de6d97a094f48eb98c4dbd57ad1a5ecd471afaabed5c4862d55a72d24e6672 +size 27597020 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000172.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000172.vtu new file mode 100644 index 000000000..5766d47e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acebf074bf7afdcd8e467dd4cc457248051faf5f59546f85d457220a6018f22f +size 27597152 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000173.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000173.vtu new file mode 100644 index 000000000..d308fb5c4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:259529a2b98bd05385743020a4080213b3e63575ef94fa0ab8001df607a95bd8 +size 27596983 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000174.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000174.vtu new file mode 100644 index 000000000..e99dde339 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4720e5c00dadcbca8cb78828042d7527f784ce06262291470f7a89092f04c90f +size 27596484 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000175.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000175.vtu new file mode 100644 index 000000000..44b67c024 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed11cd4fe15acd39880bf494f31ecb5bb81b48c508118291805624088613c658 +size 27597515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000176.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000176.vtu new file mode 100644 index 000000000..35f713732 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67e2f6f9e2d671ff4ddd150009d7fb266ee7d4009fbfb41a38ba6bc2b9365586 +size 27596937 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000177.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000177.vtu new file mode 100644 index 000000000..5986413e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83f1adbfffdf4ef36fc6bfec962d6ddd9326b95aee1043498398a4339da66dab +size 27597335 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000178.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000178.vtu new file mode 100644 index 000000000..4d2cc7167 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77863731b574ac7bd10c613d2858df8f87925a8a74ae9b7b19a4b88a04e0491d +size 27596601 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000179.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000179.vtu new file mode 100644 index 000000000..ca56f7840 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e66740c73feed75e193a85a83e59e979f29c5c6cfb5dc66e5c7df94c37f9f23 +size 27596671 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000180.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000180.vtu new file mode 100644 index 000000000..e26df64c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d135ac4c6e4557941555c60e75c0c86ea830743b86dc5817f61597ffd51ed6b +size 27596675 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000181.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000181.vtu new file mode 100644 index 000000000..2faac3971 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c30acaa574aa1af12a3f45f2bd66cf3a6f56848c5954241d862b0de01f6736ea +size 27596770 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000182.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000182.vtu new file mode 100644 index 000000000..5f4f071a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a4a01dc29c341e3028bfd6a81e565d6cdf50e6feae9baf8aaa78408b0325d62 +size 27597039 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000183.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000183.vtu new file mode 100644 index 000000000..63a3eee8d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efcffd0f032c4aa8778b15b31984e8e835ba482bc9aee451b53ff19c5efedff5 +size 27596721 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000184.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000184.vtu new file mode 100644 index 000000000..e9d2faf57 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b312d9eeee177cfe77ffad9e17c8614ac59ffdf6451879bf40e3147387abf70 +size 27596802 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000185.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000185.vtu new file mode 100644 index 000000000..e29e22e60 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77139ce32eb7b0e3e25ce56e5cb910d6d5be4cc9ab95b7205a93f30fd5efd603 +size 27597284 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000186.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000186.vtu new file mode 100644 index 000000000..f792ac424 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59d61d8b869d539cd031fe5f7622ff2f8adbe1b31ead81e15ebcafa30f1f2645 +size 27596879 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000187.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000187.vtu new file mode 100644 index 000000000..5a7a22161 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e6193fa90b815bc9298ab688f707cd646b4bc3ed1e4325f1859779434a0d60 +size 27596593 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000188.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000188.vtu new file mode 100644 index 000000000..020edcf4a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30d7d3d8920d36a55fe27073c96ab4b8b9e7c911daedada1c69044ef65cb9fd8 +size 27595817 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000189.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000189.vtu new file mode 100644 index 000000000..743e1b2fd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e201a629e8386c2e9bf64db18b639731a9bd7403450161ed7e28dd888df1a683 +size 27596667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000190.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000190.vtu new file mode 100644 index 000000000..80565b00c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c99b0d4634e151fc69e666f9294d07f7881ed56b51be9afc86654575d2a1c9d +size 27596709 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000191.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000191.vtu new file mode 100644 index 000000000..c3a9a0faf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1977b422f0e777a2f286c6987026a93df4ffb75e6a6179424f8e1027291caff +size 27596524 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000192.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000192.vtu new file mode 100644 index 000000000..01b7002f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc42fecea0b8b6de823b7c0280a458ec4868d1d81c4293d573af8ded7c212dc6 +size 27596429 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000193.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000193.vtu new file mode 100644 index 000000000..c0298dbfb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26232600b4e2e56f5c995434afe8f3239a219579c027da798668cd1795df4380 +size 27596633 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000194.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000194.vtu new file mode 100644 index 000000000..43d553232 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6c0f6bccd1b662da3fc6de783faf010ce4bddf8e7ce2fb7a4bdf9f8c3a2fc92 +size 27596645 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000195.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000195.vtu new file mode 100644 index 000000000..c233720c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9889182fd4a98e569c7f62b060fd8785ddb1f939851423f57c6ae3c34d17bbb1 +size 27595674 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000196.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000196.vtu new file mode 100644 index 000000000..db1607bb1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d6dd271024f2eb20f15c1b04bd3fcf7c902b83c832cd5b84176e44db42199dc +size 27595877 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000197.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000197.vtu new file mode 100644 index 000000000..f4839311a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8121e640c101d812d6ef67c1848332d9ad5d62593d76fe8ba1b3de42b26e84d5 +size 27595932 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000198.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000198.vtu new file mode 100644 index 000000000..f6a27d183 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000198.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f98da8c08afb5e43db1c189f01b54efea5e208cd5f6c052d3c3ff1e2e1a2c8a3 +size 27596948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000199.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000199.vtu new file mode 100644 index 000000000..67d8ebbcf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000199.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c00586462a207caeb3cff75aa5b2c76cb93a4e6066c71214cdbb0ab2321c6a +size 27596364 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000200.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000200.vtu new file mode 100644 index 000000000..d57dc002e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000200.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb1488864403b8f12dc936b0778759699803d451d0b2249e034c5ca5abbf979 +size 27596676 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000201.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000201.vtu new file mode 100644 index 000000000..a5860dd4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000201.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05707f1b5ead432eebd7a4db472d1dabc847d4a298bf3eba3a8876dcb778289b +size 27596495 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000202.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000202.vtu new file mode 100644 index 000000000..b9b8c559b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000202.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04006d4e670b4d51dc27ee24570ecd04a0d11f124626d043d31402660f8971a6 +size 27596765 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000203.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000203.vtu new file mode 100644 index 000000000..2bab52a1c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000203.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad7b931c051325fb6100ab1780756ebc8a2ac989ff24960be102c7538765782e +size 27596386 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000204.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000204.vtu new file mode 100644 index 000000000..77840f14f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000204.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a40a90d4ca6d5901a4f9aeae3e77fc23094ee90e3635047dbaa82e1076af8084 +size 27596946 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000205.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000205.vtu new file mode 100644 index 000000000..ef300d9dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000205.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f734500c294141e82cab3a8f518951af0d570df73cc45bbbf13e8fd75e80871 +size 27596380 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000206.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000206.vtu new file mode 100644 index 000000000..71576b89f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000206.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2fce665982d4260da3ea44e446e5d0b3bbb92ec9e22a4c0a0246d60d805b90d +size 27596829 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000207.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000207.vtu new file mode 100644 index 000000000..8a5bd0a65 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000207.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f080272a9ac9bb6e3524aecbdb9b23391a220cbc24d8cec9241f7d75a6f363d +size 27596121 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000208.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000208.vtu new file mode 100644 index 000000000..8df008ec8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000208.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e244251577ee427d4b38cc5a8e01e9e8a7ba4bc3a693eb58967625f2c3ed6f2b +size 27596995 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000209.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000209.vtu new file mode 100644 index 000000000..5bb1f2c27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000209.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53c5077adae78cf22e29a8dad9acb74444d7fc1044f93bbb7078c234b3f09750 +size 27595993 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000210.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000210.vtu new file mode 100644 index 000000000..4ff829b56 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000210.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bac6e2480e42ab5b27e95e85360b8957f2c72dbbd9bf1715186b8dfb8624c61 +size 27596248 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000211.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000211.vtu new file mode 100644 index 000000000..fef53902c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000211.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fe860fe09239525bb9081952f0617c10886ec911ec4b21f5150028027c93972 +size 27596195 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000212.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000212.vtu new file mode 100644 index 000000000..3c8085553 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000212.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d5faf156a8438376e1eae5640783839213415f5e0d21dd41520649e66b54f7c +size 27596169 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000213.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000213.vtu new file mode 100644 index 000000000..e980d0f21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000213.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23af412a7bdc5a366c14d55a8eb448b1232f28c574e8240d8f052b11fc65617c +size 27596248 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000214.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000214.vtu new file mode 100644 index 000000000..608977eac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000214.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86d215e91135af67eff933c66500ffd055095b629fc40690798f7f0667e47178 +size 27595863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000215.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000215.vtu new file mode 100644 index 000000000..4268942f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000215.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:122205453d5009c83de9d510917297cc8465031528a645ae2d3e18f537762ea4 +size 27596054 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000216.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000216.vtu new file mode 100644 index 000000000..e97d579e2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000216.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a4279c9005b810aca5f8ca2d0e7a05bab4fce2b6529708beed15f3ea7dff6f1 +size 27595838 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000217.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000217.vtu new file mode 100644 index 000000000..7813d70bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000217.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b50a000f2c6bea96d3a7636238ef86720a0da4dc94d1e7822fe578d2f2f7c2d5 +size 27596579 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000218.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000218.vtu new file mode 100644 index 000000000..7e6a1e4b0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000218.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f32da4f774a6a60f33b0d3f99f8dde6a6d27fc0abd9483579e227e2379f301a +size 27596700 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000219.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000219.vtu new file mode 100644 index 000000000..c3627c59b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000219.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dca01c7b32f93d45fed382090c1b3de16d486bb2d86ff03a800613751e920450 +size 27596739 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000220.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000220.vtu new file mode 100644 index 000000000..acdc207ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000220.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf0b052e1d84c6b067ec99a3f5b4f23078cd473599c1f6fece493e0d2237825b +size 27596232 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000221.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000221.vtu new file mode 100644 index 000000000..0a7a580df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000221.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a645032a9facf11f9fd2778e05609dca30e284971637364eb08699a32f23c72 +size 27596611 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000222.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000222.vtu new file mode 100644 index 000000000..8d94dae20 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000222.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74226ad794d5ae9aab891b5037a9dd6cc0acfbda6cbd25bb98deb9d42778e026 +size 27597250 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000223.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000223.vtu new file mode 100644 index 000000000..02e279417 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000223.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:021f81006aa589b76c33ff1c82e7c1fa3850d45e5c7d0bbf4ac9cc41acb28def +size 27597027 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000224.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000224.vtu new file mode 100644 index 000000000..201436288 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000224.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cdd84e7cde8d01b572dad476ce8223dc742c6ee1364c5560ad9395896a1a229 +size 27596853 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000225.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000225.vtu new file mode 100644 index 000000000..2f3de6224 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000225.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c506263b424003817e9b7af63600490ea7a6cb8bb23e28306f1806ba9e4c1ab8 +size 27597106 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000226.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000226.vtu new file mode 100644 index 000000000..40c3a472a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000226.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39104c81da5862d02dde2fe011af1864a8f38ae679bc50e3352193a7cce56834 +size 27597231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000227.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000227.vtu new file mode 100644 index 000000000..92443553f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000227.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cde2f40ecf292abb775aa4be068c940635eb7628c513e432ce5ee8268af200a +size 27597993 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000228.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000228.vtu new file mode 100644 index 000000000..cccee638f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000228.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0717bc9d229ec804bf3874c11a62333ed6f6b76539f1c430e2da6e543159967 +size 27598091 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000229.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000229.vtu new file mode 100644 index 000000000..5b62bb908 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000229.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eb4255df00f3dc38b28b01f7987594502660bb0a168f39ea64f0c5868dd21fe +size 27597635 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000230.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000230.vtu new file mode 100644 index 000000000..d94b04980 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000230.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67acad8dffd6fe0a5c979904e21fa2b66b059f8f79ac5c999686da048d555e9e +size 27597708 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000231.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000231.vtu new file mode 100644 index 000000000..278ef44d9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000231.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c426a0c94f016c29dd9ae29899dad73cb2db8a2466a716c811ebd227aa8803d0 +size 27597894 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000232.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000232.vtu new file mode 100644 index 000000000..38cfe4e8d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000232.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc713a5c80d0f64252db97cd0a8f06d0502d74922f47a1ee0a15450e1c95515f +size 27597037 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000233.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000233.vtu new file mode 100644 index 000000000..f7918352e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000233.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12d60a247a666b72f1368ae0602baccfe91005919cae8439476d3179d3c00819 +size 27597502 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000234.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000234.vtu new file mode 100644 index 000000000..b20dc5849 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000234.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7eafd557701df057020f0ce460aaf6511f90d6ef6e690e4145535ebf6711853 +size 27597013 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000235.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000235.vtu new file mode 100644 index 000000000..8388548c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000235.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc81aec2a940af1018b5d14001c080dffd9bcea5357af4067e932244996dacff +size 27597222 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000236.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000236.vtu new file mode 100644 index 000000000..95d7d1946 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000236.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cc513af5b057c45a30fabdd6e541690aef41374bc59bc75defaf91b242b08e4 +size 27597529 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000237.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000237.vtu new file mode 100644 index 000000000..b43dd291a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000237.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf9c88087c7c7a092c826fe5536b22bb00e45e2dfce5e8393daf6f20994867ff +size 27596678 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000238.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000238.vtu new file mode 100644 index 000000000..10d3bdc60 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000238.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b28dcc3519a83d585336a9317fa2a65664cd635d50aff0bdc26ab5bed183c14e +size 27597148 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000239.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000239.vtu new file mode 100644 index 000000000..02fc6fd7c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000239.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2e4488f858af016b0b5980f859b4ac568ff7c737477c95d1ba30f68b7a54f67 +size 27596652 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000240.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000240.vtu new file mode 100644 index 000000000..f30370626 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000240.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f44509538192c78722c477198455462e964672d1f584f0f19b21ce0a6545439 +size 27596640 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000241.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000241.vtu new file mode 100644 index 000000000..1cefbf92e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000241.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8790f0fbab41eea026649b9ac4052a6de590725974bcf1f4f6cc22a10c0bb82f +size 27597406 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000242.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000242.vtu new file mode 100644 index 000000000..7520472d2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000242.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:876cc874d34bf7a40f0a45d4808b798b23693157a41cf5de36824daa614730ba +size 27596848 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000243.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000243.vtu new file mode 100644 index 000000000..52d22bae9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000243.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ff9de8faf5d83b05c8dcf371dfa5f4e6afa9a7b48f29488958aec1825c260a3 +size 27597745 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000244.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000244.vtu new file mode 100644 index 000000000..1cac73ddf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000244.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48ac5e4d145d5e9a2c0b16bcff3fed3fea9b441c3c8893af44484df9617dcc9a +size 27597525 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000245.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000245.vtu new file mode 100644 index 000000000..6e4194ad7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000245.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc4d83bd8092a63cbea4857bc526e6a4e72117e2a3ea1e681f81e3a3ec2f07ad +size 27597969 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000246.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000246.vtu new file mode 100644 index 000000000..8eeeaffbf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000246.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca3f05b5a63b1358f19fd6d8d91a3db98b38ecc8afa92aa12b67934ee1d0bf7e +size 27596559 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000247.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000247.vtu new file mode 100644 index 000000000..6b6ab18d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000247.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:550ff9a3d0a5384f0e02c744e832ea640d42f50f7696f33563a2c77fd50d2eb3 +size 27597288 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000248.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000248.vtu new file mode 100644 index 000000000..00f62c497 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000248.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:878d5f10bba52cbaa24646f7eb66f25717533ef6b42b2336ad498bedd0c35941 +size 27597178 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000249.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000249.vtu new file mode 100644 index 000000000..ccc998a2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000249.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9755e323915b1ff354b9d129fec7b7c3da780f84d54463fd0c56f9a2a2275b48 +size 27596972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000250.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000250.vtu new file mode 100644 index 000000000..5b220e67e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000250.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:969eac56ebb6c326b7ab634661dcb324edc27ec057858cff2606d06110c5d9f5 +size 27597287 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000251.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000251.vtu new file mode 100644 index 000000000..e53e5dcb1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000251.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e7f1dbd0691412b427c4fef0172f6a636ad625c3cab2cd94efaaca6f0ebcb55 +size 27596736 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000252.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000252.vtu new file mode 100644 index 000000000..41377eb71 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000252.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5ffd3ca75b44b1f382072a0e3531c92dd845d0c83711f636a943ceece4e927c +size 27597211 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000253.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000253.vtu new file mode 100644 index 000000000..07ffd9a8a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000253.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5327fe40c5fe1bb4eebeef8d1ecd5585b9b2110ca9da9bd1907ddcfc6d82ead5 +size 27596847 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000254.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000254.vtu new file mode 100644 index 000000000..0f328fc9b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000254.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcc97fd5d02dfdb1aded9b75a97fb3bf585badff8bcfcfd95d87e245fe4f6dcd +size 27597447 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000255.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000255.vtu new file mode 100644 index 000000000..0bc556f04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000255.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69f0be57e5b7ec8463deafea90c7239eeca0ad59107419534104d10ffece2980 +size 27597502 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000256.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000256.vtu new file mode 100644 index 000000000..ca42fa190 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000256.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f0660e0f57010fa4f32d5bccce75bf6e4942d9056b42d4365845405a5416ce6 +size 27597089 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000257.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000257.vtu new file mode 100644 index 000000000..68f963acf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000257.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2408395a0befb5775cd10b9ff9aee64e3379df8df06a525cd1c798cedc1e4352 +size 27596716 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000258.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000258.vtu new file mode 100644 index 000000000..6dc3e4730 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000258.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:699957190729275acb7843b168898bc385b50fe11cd7b90dfd88429f54340ed6 +size 27596599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000259.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000259.vtu new file mode 100644 index 000000000..420efa9d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000259.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7399ca9081b298862f5e856c357aa6d4b12b8abcc538266d71b7107bbfbd4f9 +size 27597220 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000260.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000260.vtu new file mode 100644 index 000000000..b76210c13 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000260.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18b9ded0ce17ad699cec3dbcceaffd86ffd29ccfd025a7db5fe7c17997f69902 +size 27596884 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000261.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000261.vtu new file mode 100644 index 000000000..a958ea01d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000261.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9c928174c3452af40307f75fa3158250fbf383e63e474fdd6f52dae8ba5cfb +size 27597565 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000262.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000262.vtu new file mode 100644 index 000000000..4265a7faf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000262.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1490b284907f480ed3552421f98a1620f93c8e1b4301332b79d856dcbe48636 +size 27596700 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000263.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000263.vtu new file mode 100644 index 000000000..7e514342a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000263.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02f4ec1c7f94622c9108c59ab8feaeb954ac01cf2d15d45269f01a2ed2a50387 +size 27597337 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000264.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000264.vtu new file mode 100644 index 000000000..8d124dad5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000264.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4657843362036f04215a98ac813aff2995d0cf22248d5339b01b438aa5999743 +size 27596746 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000265.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000265.vtu new file mode 100644 index 000000000..35f3d95c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000265.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76fbddf691c49641c2bf351e68e31d832a4ac2bd7aba22e13f184b449de5e413 +size 27597098 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000266.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000266.vtu new file mode 100644 index 000000000..ecbd358ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000266.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31d6fc52b6f02efdf13a4d93a220208076b79462d32ff1d2726ef436ebb5d01a +size 27596839 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000267.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000267.vtu new file mode 100644 index 000000000..272986c3a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000267.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49e13f52d9ec024cb418acf1743681bc24aaad9c92479f109568ebe5d58fefe8 +size 27597173 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000268.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000268.vtu new file mode 100644 index 000000000..c1d7b6530 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000268.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8be1093c7ca8459a3e68434a9c83df4da595ed1a54cfcf62fdef7a690090067e +size 27596876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000269.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000269.vtu new file mode 100644 index 000000000..cd18d2004 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000269.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d13b3fbbf9cb0346d478fcf657b23fcd47c18edb9fb80af0d9bcda3730b692c +size 27597289 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000270.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000270.vtu new file mode 100644 index 000000000..17335c22e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000270.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffe30284265d4562de71cea7f356c6a29c4ba57872a7938e00f8401651871b44 +size 27597222 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000271.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000271.vtu new file mode 100644 index 000000000..342d3e442 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000271.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f9e829d54722c303f34be74ee67575c1eacd05e50ca16b44f172a61ee29090 +size 27597365 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000272.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000272.vtu new file mode 100644 index 000000000..131fdfa25 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000272.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adfad63a245965284996701f1734807ceccbb3c28594660d73765bfc3f20efec +size 27596912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000273.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000273.vtu new file mode 100644 index 000000000..759ad35aa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000273.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a41bc39200264335f6245d82579ddd728dfcb9d54d63070354c0d268ee6c72da +size 27597093 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000274.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000274.vtu new file mode 100644 index 000000000..4c29b22d7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000274.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd0529dc62775181065bed83477835e2f927f0d54008553e1edffab37c3eccae +size 27597222 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000275.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000275.vtu new file mode 100644 index 000000000..75f4d2065 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000275.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90e87c003ce0bbe5fce85739df2f8cb27ddf9810124e12e9bdd469cd06bb871a +size 27597252 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000276.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000276.vtu new file mode 100644 index 000000000..f9976bc81 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000276.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a1a565ca1b7c699ef678352ecb6679177fbaebefe69fd321047eda22a92c6fb +size 27597164 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000277.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000277.vtu new file mode 100644 index 000000000..0ce5d0730 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000277.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66463cbfecfb1f5e3c1b98f7076c83cd2c095822e473a8cbdbc1f4a6f8ca4d78 +size 27596617 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000278.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000278.vtu new file mode 100644 index 000000000..baca1ed04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000278.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a0f8115a10ed5dc3d134143611f25060e6f80632d14947f2436810a475dee9c +size 27597697 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000279.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000279.vtu new file mode 100644 index 000000000..43f872348 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000279.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8732cdc26363ea1c55fe054bbfd22c6a4df0cecc4581eded08d44cdd626b67c +size 27597008 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000280.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000280.vtu new file mode 100644 index 000000000..9269eee3f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000280.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f43d11f5bf946a2fe6c00315ab2cce449454bf0a29bfbe132c1de4be7e77f05d +size 27597160 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000281.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000281.vtu new file mode 100644 index 000000000..29a349699 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000281.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8fbf20a03561864129c328a9dda496cb28ae049b0bc3a97eeeb5875e2e03e14 +size 27597168 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000282.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000282.vtu new file mode 100644 index 000000000..15a3654f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000282.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaf35c2baa28c7a229e0b046c290a6710a9324bdb84c723f7fd6bf0e42816fb6 +size 27597710 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000283.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000283.vtu new file mode 100644 index 000000000..c9e2a514f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000283.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d3c5746f8fa09573de54bdbd9da9ed1c1b8fac219d9ec1add2e014c36632ab6 +size 27597464 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000284.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000284.vtu new file mode 100644 index 000000000..e1ec486d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000284.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01582fa51f0652db497ad19c18e98bc55403c9108ca6099bebe2998a387ea7b0 +size 27598047 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000285.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000285.vtu new file mode 100644 index 000000000..94b81e205 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000285.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82ffa3e21ca27d68089267a661ddd98af5d2044f9e3b2ba191c86f2a496d6007 +size 27597950 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000286.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000286.vtu new file mode 100644 index 000000000..4ef2950d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000286.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7967d0dc53d2db15261be25f374a3a76c5fb56b081629cb6a8ae8544c8b0813b +size 27597719 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000287.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000287.vtu new file mode 100644 index 000000000..c41686adf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000287.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8861c3933500ff37ca71170c51c7e5904c2fd409ef4298a8cb765d6761a00de6 +size 27597115 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000288.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000288.vtu new file mode 100644 index 000000000..2e1e6917d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000288.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e19b192dde2b30015514137ead4b798a8b692a1379c5861147b6c29c24dc103 +size 27597376 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000289.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000289.vtu new file mode 100644 index 000000000..09c5d14e0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000289.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74926969a3bfc2c36902224e88cd84f0779896a18afd4cb5aee2952257ea97ae +size 27596980 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000290.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000290.vtu new file mode 100644 index 000000000..a9a777ba8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000290.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8668f22d73cb33aa38b098e61f0fb21a4a530b0d2a8235a89e454cf06a880b7 +size 27597692 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000291.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000291.vtu new file mode 100644 index 000000000..55bab3c57 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000291.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90e1fbf8594e7fc12711224d04db8770694362f727058852692fc72d8507763e +size 27597193 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000292.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000292.vtu new file mode 100644 index 000000000..4a566d325 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000292.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e65cf4d3a5468acf5df8c3b5bace0439cb6e0e373e40a4097a9c474aec6e6283 +size 27597193 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000293.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000293.vtu new file mode 100644 index 000000000..2f777c384 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000293.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a23f9935851cc945c088957b9f9b482484fc665ce1e6c9562a9149f26775a1d +size 27597995 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000294.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000294.vtu new file mode 100644 index 000000000..5f43cb7a1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000294.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad404690b774851066474c2b33fcc7a2931d79a3db2c3930a8267d7d7d270373 +size 27597946 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000295.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000295.vtu new file mode 100644 index 000000000..8d9d8da52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000295.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a572b7e8d80e1c1eeeec777fb9a94460be2de1750f49576d04cea704292c814b +size 27597955 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000296.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000296.vtu new file mode 100644 index 000000000..0b3d0cb17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000296.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e456aae722497ce17ed8bbca5fd4f3dc1c4c8d48e7fde06816984834c3659522 +size 27597981 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000297.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000297.vtu new file mode 100644 index 000000000..025fed352 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000297.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f99ea2c4485c865dc2052671dbef7b99d27495bd6818b480a4a62e0071e973a9 +size 27597698 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000298.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000298.vtu new file mode 100644 index 000000000..632d887b0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000298.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d2257f1d966ab5921968f00cf1b600e1997ebc03ab4c202a7e7f54311ddfbf5 +size 27598270 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000299.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000299.vtu new file mode 100644 index 000000000..c6237284a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000299.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d83343b273a469ea52c93b935e27089e3e72e39fc38138473e96d3d976018c08 +size 27598158 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000300.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000300.vtu new file mode 100644 index 000000000..e5ce3d607 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000300.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:365d9f71c4a5602e8d20a46155b471ee45dad164ee944d5390b9fe7b63c364b7 +size 27597818 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000301.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000301.vtu new file mode 100644 index 000000000..32417947c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000301.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cac247bfb59d83663ad36fd692e53397b3d5ed020758cab29eebf3425c6d963 +size 27597708 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000302.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000302.vtu new file mode 100644 index 000000000..8d0e14a6a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000302.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e26da595525bb5a2faebffb5ca057dac3749634d3af4dd5a60a96e9e47594679 +size 27597783 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000303.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000303.vtu new file mode 100644 index 000000000..53c0850a1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000303.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c69b649f89ac1ad8e81f077a87cd0b13a8d5fb07405ce0556742d7e31ebd7e9 +size 27597646 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000304.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000304.vtu new file mode 100644 index 000000000..dfd7ebf04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000304.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a98c89db9be8e3d5f4ded64409a9cf16ace6897b35465a44bac7c0173483b77 +size 27597514 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000305.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000305.vtu new file mode 100644 index 000000000..394bd6946 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000305.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf64035e8baf6f6926afe06eca586344409899835b0ec8ea662053c3594dfa91 +size 27597230 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000306.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000306.vtu new file mode 100644 index 000000000..49091a315 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000306.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a4f18e17e28cf2a73812fc0e80fac125596741a1ec65c3b7c48f58fbf1e0934 +size 27597878 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000307.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000307.vtu new file mode 100644 index 000000000..d1401a74b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000307.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:742d25442bb92dc6f54ac55d9a3597622ec4443be552e73d0005227b67397cc7 +size 27597719 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000308.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000308.vtu new file mode 100644 index 000000000..699856cac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000308.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc8ac4cad3ba8680ec66f4ac102efc3464d101b29522307f000bf6696479c4fb +size 27597602 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000309.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000309.vtu new file mode 100644 index 000000000..0510fdf95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000309.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc2b02eaf185fb9e7c9662c3fcaea88812a6daeb4672cd026de5fc096303dbde +size 27597789 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000310.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000310.vtu new file mode 100644 index 000000000..e40414696 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000310.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdac7b30cfbc6135144e508a99849ea773fea1bfb7533d770ab8a8fbce0ef4a3 +size 27597390 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000311.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000311.vtu new file mode 100644 index 000000000..97baa3ff6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000311.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8aeddc8843ebd41296b3769f34245b6f59e79016e08e57782e00b88822abfb9 +size 27598549 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000312.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000312.vtu new file mode 100644 index 000000000..b348a3373 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000312.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da37a57be2c4fa3c751ffef4c99c56344f41f2039c7390c308246e41fa2e7178 +size 27597541 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000313.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000313.vtu new file mode 100644 index 000000000..bd0c81dae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000313.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdb7ec0c2346f81705604b4ff17b78852c2995feac19d8f1e66af01931ae3f25 +size 27597500 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000314.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000314.vtu new file mode 100644 index 000000000..069d72bd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000314.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb7391e13c172c87fceb8c22a6044f817982f9d23defa754c00526aa51f08296 +size 27597926 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000315.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000315.vtu new file mode 100644 index 000000000..58d7c1f6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000315.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c39bf8e3cc112557b5b676888e064b7b46cd7be355116a6224b9afdb73d52995 +size 27597863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000316.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000316.vtu new file mode 100644 index 000000000..d2257ed5b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000316.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee0aa19870d26ba737761501ef65dbc2601778bc8510bf13a9ee93e48b7042d6 +size 27597723 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000317.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000317.vtu new file mode 100644 index 000000000..a6a988e3d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000317.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4423a30a2dd2907b8b8b881462e8f82d8a82beea347b806c97f02f843c23c67 +size 27597536 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000318.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000318.vtu new file mode 100644 index 000000000..246be1864 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000318.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e2384055e190b0dcc2bb55260b34b1816dbe3dafd5b5b51156e8d632828b9c9 +size 27598402 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000319.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000319.vtu new file mode 100644 index 000000000..34a11ec76 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000319.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e54a758b17a0b8c49aab45941c69df2cf173d9e191cc7ff8349f5a69a716ad +size 27598228 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000320.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000320.vtu new file mode 100644 index 000000000..a9adc3439 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000320.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40471078080da64c8bef6f6609829005a4141d06df9072ec162f6c3a446d186a +size 27597599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000321.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000321.vtu new file mode 100644 index 000000000..20a4f04ad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000321.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10980335930f320fde488c6427259988deb2d151a42afe853d58d0395aa0f537 +size 27597994 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000322.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000322.vtu new file mode 100644 index 000000000..2c02813d5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000322.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b6d2b901542e0a169e9f7cf99dd095d8696ed4015e769b99f0e96391e1fe14a +size 27597496 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000323.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000323.vtu new file mode 100644 index 000000000..e6163a261 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000323.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da3967b08da43cb039f38cda1bbe75fcac7d320147f7f92274b89b0dfb4bc57f +size 27597703 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000324.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000324.vtu new file mode 100644 index 000000000..0b20f30cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000324.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d5214a09bf083dbde8089d46dbefc5c6b674e84a521460289620b241048e4f7 +size 27597411 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000325.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000325.vtu new file mode 100644 index 000000000..076574c72 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000325.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e5dee7a9f1c5541d2e7cc5dc834b89e14eabe397ac3fe3c102c0d98e78a9401 +size 27598377 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000326.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000326.vtu new file mode 100644 index 000000000..c93af3c52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000326.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44a172997a52d5575f130c676e1b476dbd9ee63e9b046f9d498fde32143600c9 +size 27598490 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000327.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000327.vtu new file mode 100644 index 000000000..0fa7138dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000327.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bd3d2604fdd60e058f659176e04c3a5eccacd7eff774b231972a139b299f15f +size 27598348 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000328.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000328.vtu new file mode 100644 index 000000000..75a74ef0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000328.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bcaf60d0b396be8f861c9b54188791ad9873e2e04167f88489ad19d0c71362b +size 27598215 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000329.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000329.vtu new file mode 100644 index 000000000..0d2cb4114 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000329.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8489d24ddfe1735bb1d7f1e6c4800f5e61d40ca77aa731e6a81ec2cc670267a1 +size 27598389 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000330.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000330.vtu new file mode 100644 index 000000000..ba6d8ace1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000330.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ade46868ea23558c60dddbeea82a25660bf080897913f7e142d099cf547ab563 +size 27597998 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000331.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000331.vtu new file mode 100644 index 000000000..dbaeb4955 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000331.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd212a9066ccd88874bb17cc4abb18d81cca368c64912e6ec0b11f6edc82960a +size 27597784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000332.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000332.vtu new file mode 100644 index 000000000..aa0037467 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000332.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e9e9e637f3e82679d8f83c8dba3f828cefe0d417556b218b5c322201c7bdb21 +size 27597322 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000333.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000333.vtu new file mode 100644 index 000000000..dd90e1a6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000333.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:034cbba3a579fdc37c28967038a89ccf59ad8c4365c4a62aca397eb0d9baa6cd +size 27597974 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000334.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000334.vtu new file mode 100644 index 000000000..e7f28194f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000334.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:337d1b9afc7e2798dd0dfa6bdc431606ebddeef43f47ff27b1e6e5d4e21b6f86 +size 27598287 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000335.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000335.vtu new file mode 100644 index 000000000..ca594594c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000335.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a06d0c857f867addab781c614b39c7aa0ab043cc17f4eecbcc6ecab19fa68631 +size 27598085 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000336.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000336.vtu new file mode 100644 index 000000000..10b531675 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000336.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37f416f811332feea8ae3220eea78e94c1c2c70553f8358ab06a0cbd53f737b5 +size 27598245 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000337.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000337.vtu new file mode 100644 index 000000000..c43009f85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000337.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f74dcf06df8847a60fbe3800c10a3705b0b768566037406d69eb82827b02ca9 +size 27598434 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000338.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000338.vtu new file mode 100644 index 000000000..5687c2fca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000338.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04ec21c74cc9d9d2f826aebaa0b5a756bdf3e7dbb22230cd9973b0bab2a4137e +size 27598246 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000339.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000339.vtu new file mode 100644 index 000000000..97eaf64db --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000339.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8999c4c0a0319694a0644a2749b2696e54188ac01548750868ef79f698bdd1b +size 27599003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000340.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000340.vtu new file mode 100644 index 000000000..bf0fb9cc9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000340.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f981e15a6ad139a830e3eb86ffc308eb847f686600e286a7d254ae19bd8fe068 +size 27598676 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000341.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000341.vtu new file mode 100644 index 000000000..f7e447e59 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000341.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b98e4c593536f83bef785a21a9071a60d10cf38692ffeceaf8a72308c31ebbcf +size 27598740 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000342.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000342.vtu new file mode 100644 index 000000000..709e62270 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000342.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7be362dd6cc48b94b096f0a00088d8ea00a667c6bab1bc401b8b1c5fc768a1f6 +size 27597760 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000343.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000343.vtu new file mode 100644 index 000000000..028f597af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000343.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3dd70129091b5706b738da5dc13a600a7038de90cc0e3ff9b2294557c155d1f +size 27598727 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000344.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000344.vtu new file mode 100644 index 000000000..961f2053c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000344.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14735169aa1076cc821b1f6bd12847915a072fa774a58021703251f9eceb622e +size 27598444 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000345.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000345.vtu new file mode 100644 index 000000000..0c736a5d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000345.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77bc972da88b966ffa145559e779ad5ab5e1d037ff253d1f1467edc1e349d372 +size 27598228 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000346.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000346.vtu new file mode 100644 index 000000000..fed800149 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000346.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df49f5008210310ae4f0713119942c3c09cad3569b063a9d397a61f9bc35ea76 +size 27598365 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000347.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000347.vtu new file mode 100644 index 000000000..823d93159 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000347.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30d51f584959d92f7177093a063cfb6f9d92c38bb53186850288cc83373eca1f +size 27598002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000348.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000348.vtu new file mode 100644 index 000000000..37e30abbf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000348.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:721f671bd9fdac3bb4b764a28dbedcf0ddce7b5da77187358a76145fb1f94d17 +size 27598054 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000349.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000349.vtu new file mode 100644 index 000000000..a58cb63c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000349.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fce744e48045e81905d96c5cc180ea3c36a87434c74d5498f583d4e8073f5d06 +size 27597878 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000350.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000350.vtu new file mode 100644 index 000000000..5daa60d2e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000350.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93a424515d72c939d0a58178c0af12186c9a8d1acbdaf3e9280c792050a18c42 +size 27598527 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000351.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000351.vtu new file mode 100644 index 000000000..eff36fef5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000351.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a7d21035db65be92b16180e769069d87068ddbb5300f5263dbc729abfaba173 +size 27597921 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000352.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000352.vtu new file mode 100644 index 000000000..73b160a6a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000352.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:128b67788fd736bfed45d639581e59f168f4dfb477cb740370f8ab596ec1acf7 +size 27598182 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000353.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000353.vtu new file mode 100644 index 000000000..ae15e0cc3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000353.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b67f3c24248af854929d905a32bc4b09720aa30bfe073733fc8097be3fa9d87b +size 27597979 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000354.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000354.vtu new file mode 100644 index 000000000..2762e6e07 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000354.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e26662efab101cd989b07e9e5240050d42818b1e63cf424d486d405589a8a18 +size 27597951 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000355.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000355.vtu new file mode 100644 index 000000000..3437aaecf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000355.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c9972282d606331e1d3099eb029af548f72d16f13183c02f7348a7c113a0dae +size 27598145 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000356.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000356.vtu new file mode 100644 index 000000000..40cb6ef75 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000356.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cfce284433e811a3d5d69036e7200959b0c16d138b0dda2e20b79bb6fa5716c +size 27598544 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000357.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000357.vtu new file mode 100644 index 000000000..91600c7a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000357.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aad3cdedcc8d748704ed9b3732c7b352d4f314f64ad4d674fec9ccc7179cd8f +size 27598255 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000358.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000358.vtu new file mode 100644 index 000000000..51825cc0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000358.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cec1996461a77204e8c0cede059158fb611de0ed50aeee712f93377c5ecb95ff +size 27598158 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000359.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000359.vtu new file mode 100644 index 000000000..e75a9ccf3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000359.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3606c9d8712cfe682e215223581056de8f1f93221a1a1324a93fb3095a2773e +size 27598808 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000360.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000360.vtu new file mode 100644 index 000000000..615d9b1df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000360.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1f2c8ddbdf029b928eac74bf82b233bca7d8a31d303cc95a03289179caee767 +size 27598679 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000361.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000361.vtu new file mode 100644 index 000000000..6ef1bbd82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000361.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:802e7ef0f6582cbf723679702d366b5e897e7682bc89473cfd57ad9190b7a7ee +size 27598129 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000362.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000362.vtu new file mode 100644 index 000000000..ffd2eb87f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000362.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bdd88a61c49cd7643418b4d00bc7675da03e003cfd50cf7ed8bdcf0aedcd0a6 +size 27597764 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000363.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000363.vtu new file mode 100644 index 000000000..bf427b1bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000363.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1606210a1ef9d6df005571b6d3cf3c0a53ec70efe7b6b689bd91f862acecbb50 +size 27598250 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000364.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000364.vtu new file mode 100644 index 000000000..84d179a34 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000364.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a5426adf365d1844757236a980faa30d2988fd79cdf6b3fdd27ea839690b4ec +size 27599020 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000365.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000365.vtu new file mode 100644 index 000000000..4643a3774 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000365.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:041c98f17d1a3efdc9cc10a99f71713bbb1094e4d65fd90d431e1554c18b1d0b +size 27598456 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000366.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000366.vtu new file mode 100644 index 000000000..1cbe9c9ad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000366.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0490185c717faec9d0713b1e2b9d96a0b53ca70927c1408330757370ca9c7c9b +size 27598088 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000367.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000367.vtu new file mode 100644 index 000000000..2a3fa604d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000367.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e76fac5dfc57d6bbcea8bef83c322c394602cb7e34596db7fd0fbd644c0244cd +size 27597825 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000368.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000368.vtu new file mode 100644 index 000000000..b47ace727 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000368.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94cc9f10f802619be4609846286195dcdd116ba4fcfd3b8fb87770cbd26005e3 +size 27598266 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000369.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000369.vtu new file mode 100644 index 000000000..f7ef8937a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000369.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca668c30bc4dede677ad1aad8bb19f6924ec5046652090281cd677ffc871762b +size 27598816 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000370.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000370.vtu new file mode 100644 index 000000000..8ac647de0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000370.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c47ffda76680c52c5000bab471e78ce998b0dd5a7353fc3da84985e0d3ad7aec +size 27598932 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000371.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000371.vtu new file mode 100644 index 000000000..5a0a4d6b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000371.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeb8652e80c062599d4117d9dba7177ae3995d2cc13d223ab8cfa84e6a78892e +size 27598433 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000372.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000372.vtu new file mode 100644 index 000000000..be2637981 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000372.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80910fa4ab51a22c264b0f37a39ed328cd4c89e64faa3cd6c11d32b5a5154bc3 +size 27598851 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000373.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000373.vtu new file mode 100644 index 000000000..056917ce7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000373.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:585b0e78df499fa0fa826ef87c92d6a7538362057614d3a09748e085f0862ef1 +size 27598207 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000374.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000374.vtu new file mode 100644 index 000000000..ec3f80d47 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000374.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b571df07f1127061373f9f7b2b0c078f45cdd83c81f2a883227f3f3070e1c4a +size 27598829 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000375.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000375.vtu new file mode 100644 index 000000000..62916c966 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000375.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36623e639c1a12a294b3aeb546dea62723cc41d191d3b583a3d8c04865228fc5 +size 27598686 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000376.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000376.vtu new file mode 100644 index 000000000..1cedcdd73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000376.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a85238b0aa44fbccc9d0beaf2d819360304e2c4bb9e71af654cafba3f555868b +size 27598773 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000377.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000377.vtu new file mode 100644 index 000000000..fd4a22604 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000377.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e3494a620b74a65fc9c877d83e2915e0b5edcdb50eee6b4bffa3374eef3b8d7 +size 27598980 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000378.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000378.vtu new file mode 100644 index 000000000..691d57214 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000378.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0781054b85102de97f2cf148ea37f01119715435cf1f56c8561b1ff0cfa0d5a1 +size 27598714 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000379.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000379.vtu new file mode 100644 index 000000000..7bc08e29a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000379.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7a5c497d04d13ff0d0b20af6bed8f70ef2d340bf6ae6010b00e59559989be45 +size 27599028 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000380.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000380.vtu new file mode 100644 index 000000000..c87586646 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000380.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbd9b7ed9757ddd63e1330d7dfc29005447efee8009d6e2e4e116250e9a64a67 +size 27599428 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000381.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000381.vtu new file mode 100644 index 000000000..66ef3bd3b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000381.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:276e50f658cd94e27dbfaeaf09196fee6af9db4c77fa0f11365b1f5d4c53106e +size 27599092 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000382.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000382.vtu new file mode 100644 index 000000000..e95fdbc9a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000382.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c9a513f3bd90b8cb2d73c044d925b16414f5591297648f7ad30cfb5ecfd9c4a +size 27598650 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000383.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000383.vtu new file mode 100644 index 000000000..3c3a92d92 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000383.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7850d0bf24fffb129e007bdbc8e5bbe6457b1d2804e3f80442d80933f20b90d +size 27598787 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000384.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000384.vtu new file mode 100644 index 000000000..4dc84fb30 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000384.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3bf8380b9c2e8e3fa15bf136d0878503c15c4126a624b7d71d721f025c2b5e8 +size 27599086 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000385.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000385.vtu new file mode 100644 index 000000000..c9b6c7c33 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000385.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ce5f905f772d45d27c52cc886e2d204068aa80096cb850ff84f75728a24a52 +size 27598257 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000386.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000386.vtu new file mode 100644 index 000000000..c60a46680 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000386.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a84ab5df2fca8b13cbad3ff05c3108725db26932c13b28f97188c699e7fbe0e +size 27599506 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000387.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000387.vtu new file mode 100644 index 000000000..7c14a82e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000387.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b02f36b15735a5fccf52c5905d14724e5ed49a549974732debb7e61aca836e5 +size 27599192 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000388.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000388.vtu new file mode 100644 index 000000000..879e0e297 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000388.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89cba541c36037969d8e6212745446c9b17eca827e6246a727c52c3227feb38c +size 27598904 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000389.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000389.vtu new file mode 100644 index 000000000..2e456fa1c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000389.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e2ecbc0819f8e9c607a08f70594d411a545e9d6ae9b646a1d36dba499912166 +size 27599251 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000390.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000390.vtu new file mode 100644 index 000000000..b9d7a34b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000390.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:051db67fe52aef220152351e774c63ba4ac3de2b8cd42413375dc42890eb1178 +size 27599023 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000391.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000391.vtu new file mode 100644 index 000000000..73855d427 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000391.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88d9e488981580acbc83ddf13c5e081c3a5a331d9e121b8d9bfdb60e4c4fcd6c +size 27598497 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000392.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000392.vtu new file mode 100644 index 000000000..2921ccc54 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000392.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2831f28ba8f044b7e53ed53654510edf83a4f595872dd11088593e88f8309773 +size 27598614 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000393.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000393.vtu new file mode 100644 index 000000000..0f792984e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000393.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06f11d8a8cf9804571a958f18d1ef4b19d3e3b54debb1731bb2d773527abf7ad +size 27598554 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000394.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000394.vtu new file mode 100644 index 000000000..776d42fbe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000394.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c60025dcd9a1f4eaa0a07429d3aeabfc9f255ec6289a618810019bf756903066 +size 27599172 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000395.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000395.vtu new file mode 100644 index 000000000..419946953 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000395.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:661350ab526a9f642d5205c2caa7aeb0a75be5f8a5117ff4a2e8d8e4ced7a4ec +size 27599231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000396.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000396.vtu new file mode 100644 index 000000000..462d107c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000396.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6312983f97730ffd098172e1c0fd51da7146676e752946fbd60dc2273c8dbc47 +size 27599121 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000397.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000397.vtu new file mode 100644 index 000000000..59be9f4c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.d/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg_000397.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dec15ce797243139a0344bf18d72a27bb0f5c05f22cc3e32cb296ef65ae5788f +size 27599189 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.series new file mode 100644 index 000000000..c7aee65c5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d725fc1a4daf124dea05452c91ffa17bec99628937d92f10e980161ee76c48bf +size 64007 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105-checkpoint.npz new file mode 100644 index 000000000..e1c3af6c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0904b3c374728ecd5220e648afaabbc81624a0fb1e0c837e0996e48e24b3e204 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105_000000.vtu new file mode 100644 index 000000000..f05fd42d0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19ce10e08f8ea450686aae2a5e9a88fe668419785f1e890213cf63ce3b58b28c +size 16100000 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105_000001.vtu new file mode 100644 index 000000000..68e0fc0e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa8bcd0a072f491153a7f12a74fc680c27b14fe57c21f1e2a14fc18e042fa642 +size 27599131 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.series new file mode 100644 index 000000000..bd0a52f5b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70520699a8cc5f59bd5a26e10dccbdc021e6902b6a65b6cd4cb14950b72520f8 +size 365 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont-checkpoint.npz new file mode 100644 index 000000000..32daff7b8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcb83034bd1b50819db5f478a5c2dd7338a1921bf0734ce29feb2c08282f3650 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000000.vtu new file mode 100644 index 000000000..cb369ca23 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f837ba5565fc9295a80502c37fb2954a6d474f434d230b22cb7684b601e726d +size 27608071 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000001.vtu new file mode 100644 index 000000000..deebf5f07 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0814385e17bb8656f1d68826ba0e972bcb885998ea8d74027402901fac9d040d +size 27611337 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000002.vtu new file mode 100644 index 000000000..fdca317b1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9f3a1e01dddf1ae357060975cefa0daa833c4fee95f0fbfbea88868a4bf168f +size 27612605 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000003.vtu new file mode 100644 index 000000000..b8d1afc8e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6663b52178636995d9d3113f7cd8331422a133740db5ccfc41a3112a4872fc6 +size 27614980 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000004.vtu new file mode 100644 index 000000000..b11035d2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5521f22d27b31fd53ed59c4bf95fe1d3b044bffb060176fa29370d25163eb8e3 +size 27615927 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000005.vtu new file mode 100644 index 000000000..1b9d753a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0134b942c1eec267a7ebc5f6d80349b98e9a109b17c94e057a126118eb6b089 +size 27616232 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000006.vtu new file mode 100644 index 000000000..e039e7198 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:808d7a2f2956e4f69600d89434af1e981030cea1e5c7e6ab5579fd7420c437ee +size 27616655 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000007.vtu new file mode 100644 index 000000000..fd424b25b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2948ce18b6ae37916e839b2a9632668f60804585ad7b75859e7125042b5eca5c +size 27616515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.series new file mode 100644 index 000000000..5028d27db --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr0003-beta10-cont.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d3fe678d60dc0a9760fb2127926667827bcac8c8858b6eec2c82543371892d4 +size 1407 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont-checkpoint.npz new file mode 100644 index 000000000..676e9007f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55c09ba29a44a0111f7484c0cf17eb4be754221a6955a13a14dcbe0cf514381c +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000000.vtu new file mode 100644 index 000000000..2f7d6cc36 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:651a5493caf1038c8b4348edd9184d1b4c0d98ec241c7970b1996dfa52e14054 +size 27608111 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000001.vtu new file mode 100644 index 000000000..0dfd97697 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:059242a3593e7795ee9db2627111a8517b04d8e52807e5831d0c258f96de0cd8 +size 27608822 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000002.vtu new file mode 100644 index 000000000..88eec4598 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cfd3991cfa74c347e57effe3f6d5064b8cce822c004ec5b58702625728ced5b +size 27611359 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000003.vtu new file mode 100644 index 000000000..13db10194 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb801297f65b2ea16b55a9ac338e1ca85190d356a70bb2886667dba3f8906149 +size 27611255 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000004.vtu new file mode 100644 index 000000000..2a06c9a2d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db08e594a6620963267ba3f25277892c46d3a462f89d1eb1870d9d2c01bbeb69 +size 27611828 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000005.vtu new file mode 100644 index 000000000..27bfa0b85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c305751aa4f7053b3331df16c8913b364de02acf4094e574edb0ae7d7b37a7c +size 27614456 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000006.vtu new file mode 100644 index 000000000..f00680774 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a794f3c08d8b4e1f9535af5d78d63f3236a929f010cdbb253119bd3a70631f55 +size 27612913 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000007.vtu new file mode 100644 index 000000000..854dc545b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26d86bea23750a8f1c48ca476a2300a801d8781567bbda363e752da3b23ab1c5 +size 27613800 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000008.vtu new file mode 100644 index 000000000..bb0401a25 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6871bf679a7d7b4115f6b1a5b7e8ee1c2e9fec60a52682904d19297b188ba74a +size 27612667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000009.vtu new file mode 100644 index 000000000..9d9f66399 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c69b239dc24ab54aa24a7c2e18619fb32798742ea55631cc7e96fdd1232af207 +size 27611585 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000010.vtu new file mode 100644 index 000000000..9b2a5bcbe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ae4ff157fd1c253de6fc726090f339c281f2a8d84a4317ba339c022c62ea50d +size 27611109 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000011.vtu new file mode 100644 index 000000000..37a645f7c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:583d1240c47a473b4e8b56dc1e92d71024bb349cddc3a32036ac3b04cda4bbae +size 27611499 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000012.vtu new file mode 100644 index 000000000..fa4baf0b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0761888ec263eb8baaa28d0b2535c347971915d199ff73b4ecff0de03606b99 +size 27612166 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000013.vtu new file mode 100644 index 000000000..b88996ed4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12f4539d311f9ea7fba062f033e000c87226f34f1b12df6ea60b739d655699dc +size 27612006 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.series new file mode 100644 index 000000000..f000856ed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a395553cef38f6325a330981b84ad85260c52309d9d73bcb5a8b99cca7637dfa +size 2437 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz new file mode 100644 index 000000000..8599eb750 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fef79ef807f566bbb43618c2fc9bab62c3eee7506a3beaa51f41f7119ba34bf6 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000000.vtu new file mode 100644 index 000000000..bfd3adc21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5709dd5914700d13ccc4a1f569c9cd0e6a953b495c117ad0dc6be7ba1e211998 +size 16098734 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000001.vtu new file mode 100644 index 000000000..86526b87f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aae5f72e7edeabb365c08caa7b5e22f82ff65aaea0f2c48e4fb2290814a6e26 +size 27598327 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000002.vtu new file mode 100644 index 000000000..97f7428ac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:109bbdcab9a42fb6ad550ea9fb941f1d6f26322838f38cfeee8aafeca10c7e8d +size 27606982 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000003.vtu new file mode 100644 index 000000000..7fc9005f1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25b4e5dc460144c89bcfdd30e6b3b57c8a62e12793ea03a8d2546710bbcd4bea +size 27609230 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000004.vtu new file mode 100644 index 000000000..5f2f0e5ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29278222febb6fa457649a0fe450e1b3605fc23701ce37eefbb7e7ee3b337083 +size 27611633 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000005.vtu new file mode 100644 index 000000000..dc7ac514c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a221c9c3c907fbf7080afed83aa10acf089cdaee54371eef97a78fe0c2c6b86 +size 27611729 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000006.vtu new file mode 100644 index 000000000..f2d74e91a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b2a6915dfd565cb01827fa9beb258fc20cadfde11fdaa5841729c95e548969a +size 27614426 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000007.vtu new file mode 100644 index 000000000..4d0336208 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66f4afe5a46cef834837d32230147aee117eab2b5ce1e4292a9a2016bab65d5f +size 27615813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000008.vtu new file mode 100644 index 000000000..91abcc368 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9528bb3d89fa705ee2966d8c56d55dc8e58d09eb4bead358ad56cb73949ab121 +size 27616627 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000009.vtu new file mode 100644 index 000000000..f5aa7d84c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741fc113bf2587ded5f0b688a19bae250289ea28a5610904b0eab42113de6560 +size 27616779 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000010.vtu new file mode 100644 index 000000000..a04366ffb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:946b0afa24ab68e7476802f811c1b68013afd22bd9d7b0b03903a62bef423ece +size 27617131 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000011.vtu new file mode 100644 index 000000000..35c1f2b53 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b74876cb7c56d8f2d06ffdeec8a1e5c7c4539091aa36bbb11259a934c407183 +size 27618341 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000012.vtu new file mode 100644 index 000000000..957cd89ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0afbe338e8abbac3b6b933b392e1350e7f1ee89594f1b644dfe363d4854b01ed +size 27618582 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000013.vtu new file mode 100644 index 000000000..52f6ee48b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fede0ccb9dccb5bd328afbf5c7021d66460a3bfd684650df701f49c0e5231d77 +size 27618093 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000014.vtu new file mode 100644 index 000000000..468e056a6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f0a7b2f592581fb63b4dc5f9a24f13d19618466c969062269584dbaf6f2ed6d +size 27617729 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000015.vtu new file mode 100644 index 000000000..91c542278 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04874a87051b9606065e5f8bc0cce800886ffd7e1d7747cf111afbc688c2b2b2 +size 27618420 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000016.vtu new file mode 100644 index 000000000..53299f6e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58fd431d5700af999868b535942d85d02f928186b76dca9eb861464e6e986119 +size 27617497 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000017.vtu new file mode 100644 index 000000000..ebad552b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aa20fa6b762eee9fba5b064ae118003bf64e518dc5e53d70c30e58e3933ca4d +size 27616988 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000018.vtu new file mode 100644 index 000000000..7aefc60e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f4a6765480f9aecfaa63702cae4ba031dfd1bb4a21324e47f1d41c993f4ea5c +size 27616312 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000019.vtu new file mode 100644 index 000000000..e0950b212 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cebe1b3fe6a3d94a5b42664d2674bf4a5198ce3fef687b8606a32a279a7d7fd3 +size 27616041 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000020.vtu new file mode 100644 index 000000000..47abd4851 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d87a6f6356b8fd3c3f0e69ee1c35aa6d4a49cf85f25e67533f79b63e3aa69744 +size 27614678 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000021.vtu new file mode 100644 index 000000000..16ae5a1cd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73a1eb89e2476b2d6f1544ec9b3381e218999ca1b4e21670e767cafe55741b91 +size 27614008 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000022.vtu new file mode 100644 index 000000000..f8062a5f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e31a451599a95403984d388c7f45862f89bd2f903435490e2e0de41725b3bc05 +size 27612993 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000023.vtu new file mode 100644 index 000000000..0302c5b5c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c29973d496a14dcac6f4db9b1f22a1503a7fc5a3fd1c6b30e389d2b0dc2a84b1 +size 27613036 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000024.vtu new file mode 100644 index 000000000..117283bc8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08db3bc9470a8bb84ad1d9709692ac30565b55a7a09aaaaa57e8afe9c815e113 +size 27612377 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000025.vtu new file mode 100644 index 000000000..ec548f38e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bfb02e4aa27988a5af087e9a66c825399b9f9f134f3296f7671da3f465d5ec6 +size 27611621 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000026.vtu new file mode 100644 index 000000000..e29c34cca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27110d97399cd0baab6c2aa821765ac1953b16eebaa320e067a3080396607357 +size 27611487 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000027.vtu new file mode 100644 index 000000000..499ca5d39 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2985f8d2e2c8702da21de13c59552ab1cf3970272ccf01613e5eb5d221bca1db +size 27611385 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000028.vtu new file mode 100644 index 000000000..ec126d854 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f18d7500e2f200ffc5c3cc849cc587045645d61e3f4ca5fae6a856f917b7c1 +size 27611028 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000029.vtu new file mode 100644 index 000000000..7095b60c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aaf7a2352388433d769c38e403bc554058b93f7dc315f38ea2054c6cf5793ee +size 27610587 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000030.vtu new file mode 100644 index 000000000..3bababaf9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e093b9376296dfc278893023569169c580b1b4990bf3ecce651bfd30a613ffd6 +size 27610231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000031.vtu new file mode 100644 index 000000000..4525afe95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8b75bca789659ff50778bb2ed6e80704b413ccdff1eb645c5843144505556ad +size 27610190 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000032.vtu new file mode 100644 index 000000000..257047250 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e952c57585bc9fe7d26ff61b6568b81883ad2ed2e7dc1cac0451907cff4d8e64 +size 27610499 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000033.vtu new file mode 100644 index 000000000..30cb5aa28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:242cb542e7cf439e1bcb8d2735c8a7c17d8e5d351b433e20f9c64248e2a30ac2 +size 27609951 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000034.vtu new file mode 100644 index 000000000..aa3d1cd10 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cb61333f743e7213a698341929147b061ccc888908e4aabe604635140cdde67 +size 27611050 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000035.vtu new file mode 100644 index 000000000..bb5d911dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd065cb123c97c2daac35462f0d4cb3c73cc30516bd2b5c2f95c60c7dc71c714 +size 27610884 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000036.vtu new file mode 100644 index 000000000..6d1b36e4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cff76bf2b804d5b5760c640f4409beb1504dc0675b0d728e02fe44fa3704e5b5 +size 27611051 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000037.vtu new file mode 100644 index 000000000..634192948 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61f39645adb02df9d8cf003224001f2a2f383cb9e329cba53ba138bca9d62786 +size 27610301 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000038.vtu new file mode 100644 index 000000000..369aaebeb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7a48ea825dc5ddd0703a1811ccedb5e8dacef849548f21f853aff62705f637 +size 27610622 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000039.vtu new file mode 100644 index 000000000..9d644c95d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4f3de4f6bfa6965922feba49dafa10c1ac535f29a438c3ac9c49cc1e61f1e8f +size 27610002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000040.vtu new file mode 100644 index 000000000..c64c261ef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b640a82511eecbe64b69be84c9af80690f7e834eb18b8f1ec5a17b7bac94e191 +size 27610149 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000041.vtu new file mode 100644 index 000000000..f5ffcea1d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:150bcdf88d4bbba70220423115fe394f34e541164cc2612e8a498b518e393877 +size 27609076 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000042.vtu new file mode 100644 index 000000000..dde4862ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c38cee2d727b0e3032be3805535af9b3ddcb620e773d5daa8cb3dce1d943fea +size 27610390 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000043.vtu new file mode 100644 index 000000000..7fd1dcdd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cb1a1ea51ead5c6d56f664dc8da3b5786a644bc749f4cc554c1c38a3429a76c +size 27610101 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000044.vtu new file mode 100644 index 000000000..4187f6a45 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa61c7d4c44294cc81e8d66ead8e2d42e5ab3d843427b503fa8be62b3394db9d +size 27610056 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000045.vtu new file mode 100644 index 000000000..dfe8c3083 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2625f64f02702dca1294c8595d93cf10ed0fbe8097a7a8faef91aa6c715fc8f0 +size 27610616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000046.vtu new file mode 100644 index 000000000..d211a98c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce231e53740c3895bab226cad8a17d99cff4decef6506016cd578e9b49737e9b +size 27609791 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000047.vtu new file mode 100644 index 000000000..d5fb5ebb5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b90fcd231e8a662f85c2fb78d62c1ee138e4743914fc123dbca09a45ce6084d +size 27609308 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000048.vtu new file mode 100644 index 000000000..071b538ed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33780aece3e9ae3bb3fa374077d11e5e0218cfc631d0666dd23e718b4852c559 +size 27609749 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000049.vtu new file mode 100644 index 000000000..b849f7d74 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:885ebb08ff04f4369d61a01e6324df1afde55ac54ee63f29cfaca25735f19d27 +size 27610069 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000050.vtu new file mode 100644 index 000000000..7aca35c68 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5fb675eebd60adbb63e6bf4637e6548fb698b81d0fe6d22f0d97973e08e5c15 +size 27610108 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000051.vtu new file mode 100644 index 000000000..22b6ccaef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12d336e8e972284e9656baab81371f069bf92b38fc39c36666f064dfde6d3169 +size 27610078 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000052.vtu new file mode 100644 index 000000000..682f64329 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4dd3af68bc315a394cd7bdb0d1c8e0051b3ea226a52a6b1464e6b64b0ec9435 +size 27609885 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000053.vtu new file mode 100644 index 000000000..7fe2d5183 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc27253306f580b215558e76345d35bb1f79afcd292a100d90467b816e73f97f +size 27609481 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000054.vtu new file mode 100644 index 000000000..dc02f494c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9fb266b345b09eaa9d23b6d4edc55b8f44294be6d06768df6639caedc17562f +size 27609912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000055.vtu new file mode 100644 index 000000000..6f360ce9a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a79b90a3c58f1794cae7aaaf5cb45b3567ffac54e76a217f32bbabddf302ecd +size 27609004 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000056.vtu new file mode 100644 index 000000000..c971730e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54e3ff70c48fb028143b5f7445e7bec7f00cfc9bd36efb6f372c5cfea9349c8a +size 27609615 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000057.vtu new file mode 100644 index 000000000..fec84e609 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fba2405bc7d2cf11a2e3442e10b2f6772e10d9b108ef6e98cf0a233e9e09185 +size 27609326 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000058.vtu new file mode 100644 index 000000000..16e50bdc0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:901d53945e9e33595730d80497142d407906da085227b5bac86434eb20dca29c +size 27608851 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000059.vtu new file mode 100644 index 000000000..243c84419 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:488b2cc55afc3ffeadefd4d1daeb2c92cc14d3f82e0396f2dae0b806a924fd57 +size 27608907 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000060.vtu new file mode 100644 index 000000000..4b4f23c6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46803c2635c3816f0ba6aff668c27a914c24ccc004b691d8c2b56150c75106fb +size 27608559 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000061.vtu new file mode 100644 index 000000000..dd6d32e7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:725f719da4410408b1e374fae0c7d7c2e9907950302379c1a085d740728739d7 +size 27609921 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000062.vtu new file mode 100644 index 000000000..9e84bc8e2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3345f0cf5a844f7dbf07ced07b72ba6221cea2c5e9759d18b9c80cdfe7671d4 +size 27609535 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000063.vtu new file mode 100644 index 000000000..5668950b6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ea345b7acc533745600a48b7b65e9af182144f3a6fadc71aa69b139035cc23b +size 27608807 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000064.vtu new file mode 100644 index 000000000..03b216b78 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f29c800f3a2e4131a6be8b3ecb95aeb537882c00b741499148c6767c944f9ff +size 27609195 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000065.vtu new file mode 100644 index 000000000..e7281e225 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a63f55f4bac6ed4dd4b628a26e28da842dd1ba9713046916f024792b33360f8 +size 27609762 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000066.vtu new file mode 100644 index 000000000..009f55006 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b10a5c8802ef2c84f50a372ce378b6bf89e160c0199f62357a86edd7eaafa48e +size 27609265 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000067.vtu new file mode 100644 index 000000000..6e1753fbe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfd251d79ed86805a83596c34be29a3e2819020ecc0dde858ca9af57f33d7b11 +size 27608420 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000068.vtu new file mode 100644 index 000000000..809ae7a81 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffa7ede1b5978210bbe2cfe2b44c0fac82f551ccea704be9e6621dc49c5f40d6 +size 27609439 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000069.vtu new file mode 100644 index 000000000..c9fcb930c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c516d901703934a024429667cb360e424cf4898979bea9b8bf5ff09e7bfe74dd +size 27609636 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000070.vtu new file mode 100644 index 000000000..e642e8381 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70f61657d2a47d1d5845410e59d89de239fd69db0fdfe29c381fb87bce676989 +size 27608499 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000071.vtu new file mode 100644 index 000000000..a11ce27b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00f387dd4f55ebc6a590148043d650f143e9d155ab56593fd6731c3f26d4a6f +size 27609141 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000072.vtu new file mode 100644 index 000000000..d46d978e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16aa470e787fb13037ca6fd5466caf7aca4acee74c9866daee79d5e3c7efb6c8 +size 27609404 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000073.vtu new file mode 100644 index 000000000..922bb2f0f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74d1ccfe2236e097b8437e346c72ac4f7f109cf88b78a32340234cad95a54e43 +size 27608937 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000074.vtu new file mode 100644 index 000000000..b0097286b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19773b8fdfb79daf72161cb1706f5111789d22b2bfb9e3b1c91fe6287d932cab +size 27608711 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000075.vtu new file mode 100644 index 000000000..aa6197726 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b5569c28c5eaaefbd358d2b06a765ab01e512ccaf5f5baddf28159f8d306b22 +size 27608099 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000076.vtu new file mode 100644 index 000000000..23cf44851 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6e1e62e7b3145ddf693d3c143c4ee4933fcd5161a8707e8d86df060d9d15758 +size 27609813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000077.vtu new file mode 100644 index 000000000..1b3f3a313 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca52d4944b27858ba3f53db93603cdab446f4739df493258846340f47c6f92f6 +size 27609712 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000078.vtu new file mode 100644 index 000000000..2f71bd18f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75bae4f1d34f68091791e204d895748e0b09ee1b27c515935876f579d0e94a36 +size 27609212 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000079.vtu new file mode 100644 index 000000000..97bde6dbb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e361b47d41792a0456f1d75adbffed844921ecdc55dec119af6803d0706f810e +size 27609571 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000080.vtu new file mode 100644 index 000000000..26eedff32 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6422467b160d7b48baa83a98e0a11f237a2e55a611a96f2739155f7397917b1c +size 27610063 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000081.vtu new file mode 100644 index 000000000..779dfe08f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7494e3f5b157a4d4d78b607744269f400574aaf6795a5bc5c77a72a0418fe187 +size 27607937 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000082.vtu new file mode 100644 index 000000000..be44c136b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc87ee9841d3123b85c8a8e2d9bf56738962918f81ac1f5cd158bc04e9c46c92 +size 27607817 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000083.vtu new file mode 100644 index 000000000..2e90a142b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b2a1bafc2d796bffe2623f841ab856a52832adda6ae8baa39fed17f5f7a2719 +size 27608311 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000084.vtu new file mode 100644 index 000000000..d8a284072 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edce181f8d888b38ceb5ef1695416f6eea8677352f5f95c1b2f5912a5d4327ee +size 27607976 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000085.vtu new file mode 100644 index 000000000..aacbc43d9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e1c758ea1ab1f9c93857481b0bff879391c0e1f81aa5896ca312883079c1752 +size 27608262 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000086.vtu new file mode 100644 index 000000000..0dedab3f2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22a86b1299394e2723977ac666c0e781a31df35a980b5c27a70d5a229223ac48 +size 27608198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000087.vtu new file mode 100644 index 000000000..4a4e3a2d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e72ea4ff1ee5e56512de90bb2bb27767e7f688f2a9c7a09999f7e74e643b41e4 +size 27608022 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000088.vtu new file mode 100644 index 000000000..b2ff22c50 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9779c2b6dff5ed126c0122547488067614219ddc7da740f2f5c49fc739c6b8be +size 27608604 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000089.vtu new file mode 100644 index 000000000..aaa9d63fd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1124a0d76fb746c0ec1645986dc89e0e298f526a317113d71838983af709e32 +size 27608532 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000090.vtu new file mode 100644 index 000000000..79b29db28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc754d31a7709ab8508db7124e89f3603c07fb210f68d3d5e3b08049929c507a +size 27609040 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000091.vtu new file mode 100644 index 000000000..8f8c6d306 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9171a190d84a22f8294084c4d6d075f2f9b8358265c1acb02cb417736258b964 +size 27609622 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000092.vtu new file mode 100644 index 000000000..ab5e382e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d0f89d0eb753903720bb30f380fa1fbbf7482d71882848f9b633b90fd29bb74 +size 27609110 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000093.vtu new file mode 100644 index 000000000..9005ecea6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd1b8bd9b0b1510f345281ee45bd2a7964a3522152fde12134059810f559a116 +size 27608060 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000094.vtu new file mode 100644 index 000000000..bd8d2680c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8731b17165c0c296461e4beb8329a53cc593129b755cb55ee70d8b067e296ff1 +size 27608072 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000095.vtu new file mode 100644 index 000000000..b321cce71 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1667e92a168c6aac19e2bc88b8215304666ce4897a0e551d244223704cf4e7c +size 27608047 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000096.vtu new file mode 100644 index 000000000..c95a33256 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58c2846c567a0d73815447aeff8a04fc24734046dac4483eef9e08a517fab842 +size 27607251 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000097.vtu new file mode 100644 index 000000000..c45b68280 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:008d92be385062171d292c270762f1342be775aebe0fe22f00f69898efd04d20 +size 27608061 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000098.vtu new file mode 100644 index 000000000..359dcda6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:563eb57d095212edef1f440df71862a91ee802fccd5070bd98e99b79b1d1dd03 +size 27607940 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000099.vtu new file mode 100644 index 000000000..b704efad9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb3f64d05893ec6a3d72962c081bbbfb7c52e2e26d7012da200b14b4142d5261 +size 27607751 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000100.vtu new file mode 100644 index 000000000..4980f6123 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3df978cd40e70f4eafb84603a734f8d8285e2171eafc72e4b6d438a649ae52be +size 27607688 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000101.vtu new file mode 100644 index 000000000..72f88c776 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9904f3c514a53365d18dee2194e61094110e48299d245d874ac130ec326f7e11 +size 27607884 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000102.vtu new file mode 100644 index 000000000..d67802652 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:729a717f1317a326ba66bb6339041067d3a7baf680c0a4b0ff91ba87a06e9ed8 +size 27609034 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000103.vtu new file mode 100644 index 000000000..5bd9534ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d9c3eb3618ae2a66a9bcf3d9a2309368ba35ce9c44c81f51549e0f0f195d89b +size 27608678 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000104.vtu new file mode 100644 index 000000000..f01adc265 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08897628a329c54126a324e8b079cbb9be71c1cb0127cd14c42c767ae4fbe29f +size 27608265 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000105.vtu new file mode 100644 index 000000000..c898e78cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8c25732db535cf27e05a79bb18608adece3b2c3cb4ff9899a95beb9d6df1ba6 +size 27608248 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000106.vtu new file mode 100644 index 000000000..41dfdc810 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:331379a112fffda654713f969c69ba00ac3af1d3e75b76922b5309c379ec6f85 +size 27608900 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000107.vtu new file mode 100644 index 000000000..812315c99 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87791d334af785ecdadf01d0597c40b47eafc93bc7e19dd74ead78d74a7551a6 +size 27607979 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000108.vtu new file mode 100644 index 000000000..0298b6bbc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76aab6d9400e5258b677757025b1cbbe263ad213b0c41691384aaedb23ac3cc6 +size 27606805 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000109.vtu new file mode 100644 index 000000000..da973ae6e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a3323a7c2f56adee5f371416cbea7d56939441c040652fc5ca2b7a1228fcee +size 27608599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000110.vtu new file mode 100644 index 000000000..d3dc5511d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c57c88d01485c97612132f3c135a128a9760e06a7edcb82d3283f029d7943199 +size 27609363 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000111.vtu new file mode 100644 index 000000000..4c8d51b6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e278c5567d800364b57949e52614678e998ead378fc0682df400e03ccfff617 +size 27608534 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000112.vtu new file mode 100644 index 000000000..9274f0d11 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80e47c144550ac749fb60858ce91c6983c7eb0b4c0126926b19125b9dadce566 +size 27608877 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000113.vtu new file mode 100644 index 000000000..740fe60ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1085aeed5ac9064eead56d66bf037c8d3330fb530c9ada31a7495e34b1139a64 +size 27608985 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000114.vtu new file mode 100644 index 000000000..50b664d39 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02e215e368bbb68b0ca9c9efde5ffd8accdc359cc941c2db487424e435b6d511 +size 27608052 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000115.vtu new file mode 100644 index 000000000..18898a5bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7072618a6187d8e6ab3b04c819cdab4354fe4dcb528711cd28d073eb94c0892 +size 27609287 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000116.vtu new file mode 100644 index 000000000..041e5755c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4544bf433ba4dc526b35518135b822456af89ba4d3b57e26dc9ef8479bf0c61 +size 27608337 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000117.vtu new file mode 100644 index 000000000..08fda532e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73940a7d793e5af19ca232c83a5e5b7cfea0b852bdb24cd8289170cc7234995e +size 27608798 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000118.vtu new file mode 100644 index 000000000..47ad69690 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1493513d3ee35ee71ef9f02e80f065a97db0b4a2fb6e8db133c602ecf39f6df1 +size 27608468 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000119.vtu new file mode 100644 index 000000000..a3a10f19d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:349deb2e9b8ebc71631bb08c2db4b31773fc1cbd70bb485b0cdc800cae2fe28d +size 27608496 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000120.vtu new file mode 100644 index 000000000..c36a3b7ef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93b3dafea7a248547ad093b79f93038be9873d4553b1100ef3281fff0557ee96 +size 27608634 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000121.vtu new file mode 100644 index 000000000..05cfab2b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca5fdaf30327261d42b6e6fc7276af728e57f0702e9ac4e9e36cf5d54e43010 +size 27609561 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000122.vtu new file mode 100644 index 000000000..efec2b59f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8006e5cb2efcd086e21b437726ac005ead03fa9599d90764d72663f33be2a321 +size 27609330 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000123.vtu new file mode 100644 index 000000000..68cb8370a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e7f05cee0fb6a2e383433769f4130464fa5e9f220c4a9b2313255e30bddb8cc +size 27609107 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000124.vtu new file mode 100644 index 000000000..ed9048743 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6755bde3cb78a65a5b3aace00bc72df247a6c9b9f019903b6b2da72cd7312a7 +size 27609517 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000125.vtu new file mode 100644 index 000000000..1a83d8015 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cb6a7a569ee2519f75684eeb0aed827e3000c45d618cab8e54e444d541dded3 +size 27609121 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000126.vtu new file mode 100644 index 000000000..402c3f06f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a2a5d0fba3f558f647482c07012f0700fe62b19e2e41e2169897100944cb67 +size 27609308 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000127.vtu new file mode 100644 index 000000000..1a3ba8a73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5994581fee469ca61ead5350e3c48f18a495367c6654b7605af2e3022801d37 +size 27607369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000128.vtu new file mode 100644 index 000000000..296cb407e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b2c7d83c6a7f98514f753df4656e7a896c4e23f8f1cade2abf36f9302f8449f +size 27608522 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000129.vtu new file mode 100644 index 000000000..cd8f922d7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:918ce5b5892844be8d3f296e0e4b202437e84165eefbce90aaf03c7306393c52 +size 27608003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000130.vtu new file mode 100644 index 000000000..16dcc8177 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:795051ccb71f4ee7d290298eb64677f1a1688a426fb93afb02abc827eb07801a +size 27608070 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000131.vtu new file mode 100644 index 000000000..5cf151f30 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daf987f6e114962c3b4ba7be977f21c9273556b9cdd93037b1bd56039279f9ac +size 27608347 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000132.vtu new file mode 100644 index 000000000..0c9b95e92 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9425c4b2e9ddee4e00a48828a7416efeeff9105e9e807f952541b0590ce51d30 +size 27608618 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000133.vtu new file mode 100644 index 000000000..55b02fc1f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b95f0383e84695b7bb0f278189ae6f93acc6b897dbe9c93c655eb74b36770c9 +size 27607510 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000134.vtu new file mode 100644 index 000000000..6bd13c400 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07b48102d5d11c195d78885718a7ac20bc02d9f182a7be1e48413a350de029e9 +size 27607881 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000135.vtu new file mode 100644 index 000000000..44664ccbc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13175d8471a538ab29645cfd58540cf8bc6694643cc97daccfcad92c483ea4a5 +size 27606955 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000136.vtu new file mode 100644 index 000000000..d2fdb1275 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efb6b1f3b04b022b976e78b57c4e9d10dbb1c3cefb251ff2e6c7996add81d3dd +size 27607390 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000137.vtu new file mode 100644 index 000000000..5af13b0a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d1c0ffcad4f69e592f6742bba9c6164acb448624337ab0dbd607f642c48382c +size 27608467 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000138.vtu new file mode 100644 index 000000000..d9bc5f732 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12eebfdf4345a24564b522f4b5da02cf3aaf32b68087af901e4fe10630aa99d4 +size 27608748 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000139.vtu new file mode 100644 index 000000000..1e3d0544f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11463b96cbc4a97d8750aa8cbfbba1aea502f615550904f8ab99e6edc41d751c +size 27608382 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000140.vtu new file mode 100644 index 000000000..d51d6adfd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:527feafad6b5b7d5413e2112c5ce685bda2c28f3b42dd92c37b5020c95c6a79b +size 27608298 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000141.vtu new file mode 100644 index 000000000..f8d4cecec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2d9c36d2c92907b79e6fc3672703149386b5bc14af3c890d71ab86d43f9a564 +size 27608063 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000142.vtu new file mode 100644 index 000000000..0edc66aea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c49ddfe8e427e92a58e41541b89814d44b15b9f4bd7cee7e1c453541aa3cdec +size 27608108 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000143.vtu new file mode 100644 index 000000000..24687b7b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b34945f0964e9653941dae80d6ef68fd01d6fd3e0894c9c8bf860cb19e437eb7 +size 27607888 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000144.vtu new file mode 100644 index 000000000..d476ec46c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:981c116832263b6f30c2c2f069dca617515d403585c919546c52edace5998590 +size 27608236 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000145.vtu new file mode 100644 index 000000000..062bf0514 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35b8dbfb76ceeda9bf7cd03606a182c0f5a74d9c70df22000bb78cb1348c1a08 +size 27608093 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000146.vtu new file mode 100644 index 000000000..3ccd8a7ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:812eeeab05b062a99c828c413493924a90cef01b07343fe264e1832f3412d8bd +size 27608834 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000147.vtu new file mode 100644 index 000000000..f38e2489f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b973c2d3b2e31a6fc9a58b425496af8f81b3bb1e64a3614da71ae7cbd32c21c9 +size 27608804 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000148.vtu new file mode 100644 index 000000000..e2f00157d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03acbe68c0c2c6195c03a9cfb57d543c5cc239d377db40ed44986429aaa77b09 +size 27607426 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000149.vtu new file mode 100644 index 000000000..97eba76d5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d08c48a8313cf4ed035fc197d2522c796c933ea6cf40ef9e57af237b78bf93fd +size 27607605 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000150.vtu new file mode 100644 index 000000000..09c924ab0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c4e7c1320628f3d8033e1cea7c5cf88df80c07c68bcbb9c684837d56a54c674 +size 27607863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000151.vtu new file mode 100644 index 000000000..032c9abaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2870736af8a68368b1502130d129eaa207983232113633b56ee20259385b127e +size 27607722 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000152.vtu new file mode 100644 index 000000000..b468d3ecb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6eff0babb50e442c33071b87280f1790c50e2fed841771687939c9c72bc529a1 +size 27607862 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000153.vtu new file mode 100644 index 000000000..03afd3685 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b0000ef231cf0277a256fbf9ebfd8532542f7155cffd79a50402b0012fd0e0f +size 27608559 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000154.vtu new file mode 100644 index 000000000..c875513a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2548d23971ae9df0dace1928534b9655b3b6421466def281b8acf9880098400a +size 27608096 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000155.vtu new file mode 100644 index 000000000..685c5a65b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2b0db6d5988f94bee7971497ab87f5d5e64f6b09c7da3dae561370e1501231e +size 27608523 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000156.vtu new file mode 100644 index 000000000..64cfb626c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db1045147ff3e106da3e4feab50532d1b6d731677c610a63e0ae8cffceddda59 +size 27608471 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000157.vtu new file mode 100644 index 000000000..0f9dc17f1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:473d960500a4ac019825a08e8c41a25d849074b11e96240dbc0965cd4cfa6825 +size 27608020 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000158.vtu new file mode 100644 index 000000000..347a06dd0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f43c444fc563bd096af332d3f9b01d59693fffcd351fc39246fa805ae2c24bd +size 27607902 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000159.vtu new file mode 100644 index 000000000..4e980b40b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.d/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c95208ad65eea7cc4a38145a5c96a01ff7d6dc07a39e78a7408f965b0bdfeca0 +size 27608144 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series new file mode 100644 index 000000000..6799be68b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a849151d310b734cd22e226721d04b5386b09bde1b1d3dd8faeb9b676edd4360 +size 26009 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu new file mode 100644 index 000000000..efea0ef7f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af07cf81ce10c1c4ad19a524638a1faf5097a5d07b60ea73282b490f09649191 +size 11546432 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont-checkpoint.npz new file mode 100644 index 000000000..0bd1b5224 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26fe0060c53a770efffc0c0f98d799f19936ae2ed47184096ebd549338cf5df4 +size 2808762 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont.vtu.d/20-inverse-face-smooth-cont_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont.vtu.d/20-inverse-face-smooth-cont_000000.vtu new file mode 100644 index 000000000..f29c1488e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont.vtu.d/20-inverse-face-smooth-cont_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46f4f098a85183d5395602d24ad974839f8656e18be4a7871ca53f09aad19df4 +size 27582929 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont.vtu.series new file mode 100644 index 000000000..36f132578 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-cont.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0d766a2eb3ae71a679a1590cf3782e1db615d96c6fcc4e24480e7dffa2caeb1 +size 134 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-state-cont.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-state-cont.vtu.series new file mode 100644 index 000000000..f81831d9c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-state-cont.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fdfeabf9e8831b5953f46d78a283b7ed9b3ff0edeebb79b9cad4f818a5983da +size 40 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10-checkpoint.npz new file mode 100644 index 000000000..95dc849b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db1878af599016b713f1759c239925074360aecb06504b0696253d572f027273 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000000.vtu new file mode 100644 index 000000000..dadbc8d50 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dadef85f13d7aac4fb44aa0910d43219a1c91fb74e6245feef8dd99cc178630 +size 27590468 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000001.vtu new file mode 100644 index 000000000..41c65b28a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d734ab1d578f0c65c33e243709d1a28efd2f56429801c3bfc660d340dfb202ca +size 27590210 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000002.vtu new file mode 100644 index 000000000..007826594 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ca1072ec5dc79fad35aefd16f965f59add0692aa380d7396392da52c48820e3 +size 27590166 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000003.vtu new file mode 100644 index 000000000..aec44b33e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1126d6d11a5747445a986e4bc3a68a49104188a13d8d12f21a7baede7ca039a0 +size 27591058 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000004.vtu new file mode 100644 index 000000000..9a41fd58a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.d/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fa4366cc0e6d4afb2009117a3dc92c6ff76acfb3d640e51b5bc9055142c40e0 +size 27590704 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.series new file mode 100644 index 000000000..5cbee0595 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cdce8a25504d5d7e394cc65f0e8b6cea4c2ad05ccabda4db391eabd5cdb28d8 +size 794 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-checkpoint.npz new file mode 100644 index 000000000..f5cdc7c6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4ccfc5e8907a2bd3f48b1ecfc4dd32233819dcb375d1a89b86445fe250a2afe +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003-checkpoint.npz new file mode 100644 index 000000000..808d14fb1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa48706986a648cf812fe8fa18043d3fe05aa156302197a0966ba0a6de80051 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000000.vtu new file mode 100644 index 000000000..f4d034c43 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14ed26f8900933ebdcf70865a2327c39047675816957896b601c74eac0d3911e +size 27593248 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000001.vtu new file mode 100644 index 000000000..a34fb538b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:989cb7be1361fc3863730e4f230f8b1129c2747ef393eeeee4318b9a50c78522 +size 27592800 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000002.vtu new file mode 100644 index 000000000..4960d60cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eaf7cebac59c1600ab990cddef42ee1596fb1342488b85d3f2dfca590026e9e +size 27592887 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000003.vtu new file mode 100644 index 000000000..79742bc98 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a40abe8cd95df9f7ddc55dd21eba5671d13a2092f2022160129aff1063d8bb8c +size 27592278 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000004.vtu new file mode 100644 index 000000000..574be3bb4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecede72142bc8cf92a909cf390eb4f735e84ee99045bca2bc17c9f23a04fdb4b +size 27593289 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000005.vtu new file mode 100644 index 000000000..4cf90e4db --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91cf108327d589110726f5ab3b6593b606f20b84cb42b82fde06415044b41275 +size 27593009 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000006.vtu new file mode 100644 index 000000000..acb9e1650 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18c339191b3c9abf4b620c3126c466bad8183607ceae1bcd3dc8123dd80aaff8 +size 27593421 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000007.vtu new file mode 100644 index 000000000..a5a158a29 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:462ef45abfb892470857f39549abe7d82725ea9885562e0a9c2f2c72d12473c4 +size 27592749 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000008.vtu new file mode 100644 index 000000000..49135fd23 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fa46eaa549538423865a3f2ebebfe5e39a8aa00a3caf8e0033b380063ca68e0 +size 27592886 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000009.vtu new file mode 100644 index 000000000..9a2373811 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b76b75cd91f28acc7eef9fcf99ef1477f4e20469eddb9417efc7dd5c3fec4e1f +size 27593102 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000010.vtu new file mode 100644 index 000000000..d538f152f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd73b024f6cf185e6c4461647ba21fa2c08208ca2b6dd8f9106fe55892b9b5aa +size 27593478 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000011.vtu new file mode 100644 index 000000000..bf97ddab3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9387a4c5c62a4a007c4ad90d0d91ceee519f027efa3916ed0700b000d9bd30c9 +size 27592343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000012.vtu new file mode 100644 index 000000000..5a6977037 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf3e7beef49074a9b08ef44952e6a2f00ee8ea870f63f742970e27a4f700379 +size 27593767 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000013.vtu new file mode 100644 index 000000000..0c36c45bb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72af26f9e04546e2dd5b11ec11bdcde1f12938c7264d985b25b57afbda00945f +size 27592910 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000014.vtu new file mode 100644 index 000000000..a70f5b306 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceddd962f5740b71f04d59adfdf72c26a3215294ec257e5e57c3f0d4fdc4b5c8 +size 27592752 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000015.vtu new file mode 100644 index 000000000..18f92a5f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aed465635e17b15b2dac9999bef71d86d0d6459f9e068928120ad5856dcc15c +size 27591604 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000016.vtu new file mode 100644 index 000000000..f6a3dae41 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0bd9ab37557d2896b7c6d88d829f47d1480e1911d213278ceeb06c8b1ab5094 +size 27592729 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000017.vtu new file mode 100644 index 000000000..a8528d15f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr001-beta10-from-lr003_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52b8b1ac493e5b9813ffa2415d566585946b56939455bff702c900653d7bb4ac +size 27592151 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.series new file mode 100644 index 000000000..8e2e5aff3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr001-beta10-from-lr003.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb1f006f2c8ca0cf1aa324f8930aab12048342a43b3e6b14046ccc3f65065653 +size 2409 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003-checkpoint.npz new file mode 100644 index 000000000..a0791872d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83429b15dafb29ceca178ab9b1b5d7cf10478c085be122c68c815052678ff2ba +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000000.vtu new file mode 100644 index 000000000..1e4237005 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:065abafc26353af05a0cef063992dd0137e8c72c0cdf0361244a94e9b7531709 +size 27593398 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000001.vtu new file mode 100644 index 000000000..2c26105e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc6fd872604cbbcaf8586d58668b48e1bfe22ffa4a49e389d2771abc9dcd4ac2 +size 27593616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000002.vtu new file mode 100644 index 000000000..2a3d1ca8e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ac5958d69a9e50ef0582e68d3012dbc548c278125462e5ac1f5968fbdf20c5c +size 27593799 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000003.vtu new file mode 100644 index 000000000..61c079b7a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7bc60a272a623a61617eb6eb03a00891abb9c7fed24afa06381fd94c816af65 +size 27593095 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000004.vtu new file mode 100644 index 000000000..57fd55e6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb7743531773fa1db70f87131d3592caefab91c4acfea9a36cba29ebfffd3ed +size 27592300 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000005.vtu new file mode 100644 index 000000000..d730ef1ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:282e10c95c50da9a5fddb7ef76b97b16d41539cfbc67195d8807e5d59ed7a081 +size 27591944 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000006.vtu new file mode 100644 index 000000000..17848529a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51dff2f2d33893f442b0321050568192463e7a8c35ebadea66d0f140c290e8bf +size 27593058 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000007.vtu new file mode 100644 index 000000000..e531aa07e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f104d51fac718200ef59cde9962cfcce5b2a6e76e2981075a354bd73ea70b5e +size 27592705 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000008.vtu new file mode 100644 index 000000000..e0695d90f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:542cc4422701b7b30a7aa8e3dee6a3c5d16f174f017bfaffdc5291ef7c2c45d3 +size 27593015 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000009.vtu new file mode 100644 index 000000000..5670a405b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda55fa544ed53bbc053b3c141c5ff29c58e0c7de5a8346d088ec66558660d14 +size 27592800 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000010.vtu new file mode 100644 index 000000000..86724df27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf8dcc5528df63d7437c38b9efbf70a71be23b517a586807af963e2e9b146e7f +size 27593254 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000011.vtu new file mode 100644 index 000000000..623499b7e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0824fa5a458b5aedaeef26efcc5dcacf6d328537ddfb28122cfcbec03009b38 +size 27592679 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000012.vtu new file mode 100644 index 000000000..01fc36ac8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:facb8e73cc5611978b55823531bd382a5bb835c21c0b3272076bc42e6e0fea1f +size 27592962 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000013.vtu new file mode 100644 index 000000000..02da06fdd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ae4f414d2ab7dcc2a1bdc168cdb7eaedff54b29cb7a1e7b5b73b6b0115da3c1 +size 27592762 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000014.vtu new file mode 100644 index 000000000..ce9c7d895 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d447c044fc80ac374086c782eed4c1604bf6c472be27c10ca13b0c8721ca5d5 +size 27592411 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000015.vtu new file mode 100644 index 000000000..2cfc7014d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcabf9225f79fd61b49f9e913a8d38b16c59c11d092195ebaf4f9f1e8aa832bb +size 27592585 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000016.vtu new file mode 100644 index 000000000..41d3b5a0e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ff6082259309f334c1432cb5197527c1c514ef9fc1d192d605254ee026806c1 +size 27592757 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000017.vtu new file mode 100644 index 000000000..58f2a2498 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cf1f2b08f163a0ce771aebed89a4ecbe54ff571929cf11353798096af12963c +size 27592896 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000018.vtu new file mode 100644 index 000000000..d722f47d0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:864baaf87fa2b5c278e1edcc4f4e90afba3f8952f9989a293a4b04a55eb9c7b5 +size 27593347 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000019.vtu new file mode 100644 index 000000000..0b4d4d9c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecaa38d417d1370e4924cc585812f060eaa0fb8f9a7dc0e324e7ddb7d1d16578 +size 27593052 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000020.vtu new file mode 100644 index 000000000..872d1ea1a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.d/20-inverse-face-smooth-w1-lr0015-from-lr003_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d3fb9c5a57be71988c97c72dfe060ba76e37b21c830881dc6f82d2bcecb9054 +size 27592632 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.series new file mode 100644 index 000000000..4050f670d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f5e7f87b856286d0b19fc6b55de4721eb8741f8258395f368e748ad50e4cb69 +size 2717 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003-checkpoint.npz new file mode 100644 index 000000000..251115e55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a5c00d3b3d57956bb56f6e3aeb4201d0d9c7a59bd30428e99b7332497fd250a +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000000.vtu new file mode 100644 index 000000000..2a5ef490c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc7cd0473145dd95df66aa0760e3d1407def2e2ff447bf012dff824dbc91478 +size 16097909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000001.vtu new file mode 100644 index 000000000..5407237a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d0424d27475b08b49bce0216a0f54307cf0fe73ce96a58c333b23261e8436b3 +size 27597779 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000002.vtu new file mode 100644 index 000000000..a62b7d651 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d143dbaa13f4b583f2f4b5922d595b2d40621c36121e3396d122564bf6ce8d8c +size 27604331 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000003.vtu new file mode 100644 index 000000000..59f0f83d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ec74d130e73bb16f302285dd174561c7100234b1eea83938ad866aedac0182c +size 27608392 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000004.vtu new file mode 100644 index 000000000..75f157eae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:542117bfc93d4e3dbbb12c091df21b69406f0b69e8b54361b4c506928ff6b281 +size 27611089 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000005.vtu new file mode 100644 index 000000000..fa4f84a97 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b79633ece783f5ac0224fb281e59094fb5974155e2c1624a11bc3f5dab784316 +size 27609942 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000006.vtu new file mode 100644 index 000000000..b848c922c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:557db0f5407dd6fa280361f6b1afa024d045735c3e00bdea55907f8331f1c348 +size 27610767 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000007.vtu new file mode 100644 index 000000000..d5d3d3289 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b10fa64c31eeada721d0b77c3f3c3ef36dde79a0685ba47674e72cdc8f4f4e9 +size 27611263 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000008.vtu new file mode 100644 index 000000000..a5ef253f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:020c1559cc5aa925eb547c6635bf39e4f2c9733c84ec13899031326dcf10ffc5 +size 27610143 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000009.vtu new file mode 100644 index 000000000..d56270f37 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8060848b89e0ca43435939b739afddf646d6ae905bcb43bc5a32872e2a7ea121 +size 27609711 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000010.vtu new file mode 100644 index 000000000..6a632094a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36650f441c98a4bcb38222293f6ccc97b7575974bbf89e0bf46033db4df1413d +size 27609129 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000011.vtu new file mode 100644 index 000000000..e320596c8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4e67039d185066dabc17f3acac854ac5fc80bdaf0be7ed4e9ee1ee59dfab41d +size 27608604 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000012.vtu new file mode 100644 index 000000000..cafdc631b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0739f1acaae3bd407bd48b56a4d938ce8a3d057a3c2cecb891dd629a7fbaff1 +size 27608515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000013.vtu new file mode 100644 index 000000000..86c686bec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:addb680736d22a9bf1eee30d9fe3435fba40a15c7d05973fe1b5eb301bccb067 +size 27608769 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000014.vtu new file mode 100644 index 000000000..1062db614 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce782d973728240e8d0808f126b6f14fefbf195075a4594054fcd8c84cb9468c +size 27608201 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000015.vtu new file mode 100644 index 000000000..65681ea2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9995cf4a14808373944a12c14080979d9174598f0bcb4086c441d1080366c9f7 +size 27607826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000016.vtu new file mode 100644 index 000000000..efe7ebcda --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cacd4ae4336d91dfed3dd219326f50db708b942112edd2c1081f861df8e13957 +size 27606817 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000017.vtu new file mode 100644 index 000000000..6e6bfa056 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:840220f8ac24a051ac60259abe40293bf55f2750545eef6791a0ab09380871e3 +size 27607155 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000018.vtu new file mode 100644 index 000000000..067cb4452 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73a3c3258ee376fac9045852932d6626210d7e51ab83b348137ef9c7ad16b047 +size 27607275 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000019.vtu new file mode 100644 index 000000000..7ffff58fe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:055bf5b09b9b7db5b4a438d32946df8c8e06d6f8c73d438a3065e6160b2028d7 +size 27607474 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000020.vtu new file mode 100644 index 000000000..4768fcc01 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4951f7300699fe220cfc7210e9ba7a9d7f31a384fa7fb3a359fb4fa2b0ab770 +size 27605595 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000021.vtu new file mode 100644 index 000000000..954e7af67 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3635a71998eb1adda35abc1c32b4bd59653516bfe8fb6e8b9910f09ad73e47b5 +size 27606171 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000022.vtu new file mode 100644 index 000000000..522244bfa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74b0520778487d0f31a8c2b630bc20fb3d56b94a2c34272de09365452f3c1ec4 +size 27605444 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000023.vtu new file mode 100644 index 000000000..b7c8dee45 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e990bf2467e1bebf494621a70d8cb8eeb5c70209d3d3268a073ebf069e988d +size 27606513 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000024.vtu new file mode 100644 index 000000000..eb4a85f17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8536ce5b4e415cffe317256f4d0c17ba3102fcd94f62fc5559c5ae6ad078929d +size 27605208 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000025.vtu new file mode 100644 index 000000000..433df554d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b98f83bf2d864d97513e9e7394ce3b392eb49bd855fd89c2008fdf713d74969c +size 27605312 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000026.vtu new file mode 100644 index 000000000..0efa17fd6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bb83934b9513b939e46b5534ce17d92e299359fa76723e1314714f872ab2915 +size 27605977 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000027.vtu new file mode 100644 index 000000000..37f49bd42 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56659d6ab3b513aec89a599fe11eddc6406f4d28d9b482e493bb70139fe0af1c +size 27605702 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000028.vtu new file mode 100644 index 000000000..6896ad4a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32bc1cb47d5853627b1a5e94b5f38d26a7563c58e97977321996f56c3da44f9c +size 27604338 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000029.vtu new file mode 100644 index 000000000..4b8e25f9d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d7efc4a33b31ae6fef70bbb6d9ed6e4248e1b4faf0e3105a6f66a43ee6c787 +size 27604209 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000030.vtu new file mode 100644 index 000000000..e3f3ceddb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43359ca42ad31e8f1e6fd4f2513624166d5cfab4081afe82d1fd517314bb4217 +size 27602725 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000031.vtu new file mode 100644 index 000000000..f2bab2cb3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:253a563cd50ca3d524d0d65ae7f8d4a5a351d9faf2b324d1f56dc0cf922cad1f +size 27602529 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000032.vtu new file mode 100644 index 000000000..26da5db27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5d0febb2bdefaa38e26453e20d4af99be9bda5f0e1a11553c6af8f4aeaecc5b +size 27602457 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000033.vtu new file mode 100644 index 000000000..48b5f8bcb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4979f56979070e304d471a03242bef7f608e51a545404603bb811f92a2f06a65 +size 27601473 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000034.vtu new file mode 100644 index 000000000..ed4123983 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89cb0225962d108f2b8f06462aedafa6389be117e89491cbb1425da3946bd42a +size 27601114 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000035.vtu new file mode 100644 index 000000000..67899c81b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99a7f26b0ec07707591935ba3064a4ba226a5d0b7734e9ec172c31070d1138ed +size 27600298 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000036.vtu new file mode 100644 index 000000000..ea41df835 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd2aa037d03ecf35dfc1736112a6031338e84283e47cf914e2fab19650808348 +size 27599541 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000037.vtu new file mode 100644 index 000000000..ac4950900 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bf5089b73fe2c9c45a6b4578a9dd9aaadee0f777da65769b286a1cbc2684c95 +size 27599183 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000038.vtu new file mode 100644 index 000000000..94562e33f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c85087cebe473c17bbf24b7240aaeda92d187c101c3bbec72eb6b828ddf9885 +size 27599024 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000039.vtu new file mode 100644 index 000000000..28bdd8fba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a72ed236a10f7fb2c0ee328bcfdf01fdd08afbc1c43b7aed1b421d2341a17e9 +size 27598792 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000040.vtu new file mode 100644 index 000000000..32242ddfa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2095c841e7abb354b73f6e607ec1d858e077aa3792a7d13f906efdf0ce427a8b +size 27598627 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000041.vtu new file mode 100644 index 000000000..f33b83215 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30dae6a41cce4e38cb020356f1cf81e823792f38aea5bcb81262e33bb3acf4d8 +size 27598561 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000042.vtu new file mode 100644 index 000000000..a1a5c13d8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bb75a9139c7282b2591080029481f406db5136331c1fe374aff928649998a3b +size 27597435 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000043.vtu new file mode 100644 index 000000000..d26d5cb14 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b05077817eeb27e0e8a8db6de6a47375db4b8822eca8538f225fd2db1dea98d +size 27598032 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000044.vtu new file mode 100644 index 000000000..3f940a374 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:190e9e8dc3f16700804b234f52b1265c0ad5c838cb61eae9b8246ae3773cebfd +size 27597098 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000045.vtu new file mode 100644 index 000000000..ac8ccf4bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07978d12a9219a6b666f56e7df6b26a436287a6a2da6ba2c2210de3925be8c43 +size 27598307 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000046.vtu new file mode 100644 index 000000000..3f52c8c0f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a918fd5b872028ea4b39ddac33198ba75e45ea3cb4d49ed99fcaaf83c557a1e1 +size 27596811 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000047.vtu new file mode 100644 index 000000000..1f5b53a4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4122b4154fe5b90742ffabf782db58e5a1f83c7d75746044b95107406e055eb9 +size 27597420 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000048.vtu new file mode 100644 index 000000000..58d3a42a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2bcd71309161e574e47f065c99ce4c1932e33d35c764dfda33ebbbd910806b0 +size 27596676 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000049.vtu new file mode 100644 index 000000000..a6c2a4933 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b583bcdb74f248700bbb3f0e4ea04ad3b55c34271c96ac801998813a4e85947c +size 27596302 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000050.vtu new file mode 100644 index 000000000..94ab82c3d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ef236e015535ef606e87c28350646c671832fbbf6cf5c0b87e977bb9ba31f10 +size 27596045 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000051.vtu new file mode 100644 index 000000000..b46f8c676 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df5b35c8ece15dad032ea6add94d5c37e9a3989d4ef7386d27895982aac7de9d +size 27596407 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000052.vtu new file mode 100644 index 000000000..f0c80b725 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63e3d104782274f442c4f02c838219c8a79853a71f9505668d429676938f8b74 +size 27596098 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000053.vtu new file mode 100644 index 000000000..7a4519777 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab5e2b82425202306d85fe10749ecacd1c9bbc8f34ea1d3456d045fedcee209e +size 27596156 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000054.vtu new file mode 100644 index 000000000..42c4fc4d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee77423c0dbdcf3f358b7af62420808154a3e86ecb022ede7288365369cafadd +size 27595789 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000055.vtu new file mode 100644 index 000000000..30db79ea3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a59c8947c32dda5743345c012db107f3fc6ad501a8c3e4c0399266a1b5b426b6 +size 27596575 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000056.vtu new file mode 100644 index 000000000..c8cab11e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd375830004be9b80f8951e97831927d381215d2417887f4f0782102043fc6ef +size 27595957 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000057.vtu new file mode 100644 index 000000000..2a83516f5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca42316cf31801fad91b09799363efc10cfec784a9b9c428cecd5621f357d0f6 +size 27595182 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000058.vtu new file mode 100644 index 000000000..bb6b486a4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a594a091632c2beee941a35a0905f42fdfaacbaa7ed6604fdccf8851a6bab89d +size 27595369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000059.vtu new file mode 100644 index 000000000..22e0bdf11 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97ed718e39eb3f37778edbdd9bbdb563d1af39ebda54b15a19cffe8e979e38f1 +size 27595979 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000060.vtu new file mode 100644 index 000000000..683ce2b81 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78921ebac8fb38f71fdc9325ccf65c4d2ac48086c18f98dd52f9414bed484ff5 +size 27595986 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000061.vtu new file mode 100644 index 000000000..f2d83e97f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39751c8232099875ae85db0dff71eb718194e184db428b1f2c993c4636167d02 +size 27595557 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000062.vtu new file mode 100644 index 000000000..828f6146e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc1e2f59cfd3e09500f54b387ccdcec02b3ecbdc524aa6b44bbca88cb6f5131e +size 27595903 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000063.vtu new file mode 100644 index 000000000..eb660b32c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72176e4b62e9ffcaaa5be9f86ef707967cdf2aee8a19b1c69851cd5183d65014 +size 27595030 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000064.vtu new file mode 100644 index 000000000..935da8bec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c98b236dda626285296c27dc34e0836b3cddc28e13a5c82710582677b147aeae +size 27594963 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000065.vtu new file mode 100644 index 000000000..87388725c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:617386fa7ecbfc36a2d2447b19e2c3944bc6d50714a96256ae5799911858f64e +size 27595084 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000066.vtu new file mode 100644 index 000000000..549f0b5e2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33086ae68f30c0847a7de3d50914ab72a859f0076e1ffaa433342427f942a2d9 +size 27594757 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000067.vtu new file mode 100644 index 000000000..55dacf1c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d9acee9d103ba4e6ef2dc5b493cd666fa1e0642b2ed99ba4fba6ebdb6522f58 +size 27594754 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000068.vtu new file mode 100644 index 000000000..97da10288 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4463d25930331b830fb94275a0d11f1d2a284f4637c3eccc2b28bca65b33cc78 +size 27595517 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000069.vtu new file mode 100644 index 000000000..b6037040c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05c14d0364f0dd614ba92890d64b33b8f0ab5d527a5f357107c08b6e30210e14 +size 27594976 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000070.vtu new file mode 100644 index 000000000..1a16d3fae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c48e5410b2884ff945ab4a85b9d736298a1c78cabd0912a9d8a9557090ad79c2 +size 27595324 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000071.vtu new file mode 100644 index 000000000..a036a9108 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a72376559c7f96515511e21062d52b1178b94c6376e14cb77a8d0a479c180154 +size 27595066 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000072.vtu new file mode 100644 index 000000000..a88961128 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3be3e52dfa67aa1ac3dcef1fc78fc528e77f63e1c1b470d5ad3b1fc5a69698dd +size 27594551 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000073.vtu new file mode 100644 index 000000000..4cefe5fcd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e29825aea2a7846648ea424b7d51f43694692afd3f0d499fec8fa40db928b26 +size 27595278 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000074.vtu new file mode 100644 index 000000000..fc7af808c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6af3ac5e2de60085a99d77384728477e5e3a481316237df2ab456e37bb6e5b9 +size 27594879 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000075.vtu new file mode 100644 index 000000000..cbb3dd866 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:081224ac8263af584f0bfb135e63c1c177b13f22ff89444a03c04c86923f90bf +size 27593707 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000076.vtu new file mode 100644 index 000000000..53dc04242 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11e400c1eee46049e7799ec2571b00ef9b818e89a2b2929c8a615458e73c31ff +size 27595125 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000077.vtu new file mode 100644 index 000000000..cab2dbd2d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cf4553d134f85f28d7a694ee62eda1de5b02ebbae762bf190f1a8e83cc7fa1b +size 27594677 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000078.vtu new file mode 100644 index 000000000..84741b0f8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:281dea219cd709bc1dd47ac571ec129f32d2fd572f5b2ab1fe720443144f0c2b +size 27594915 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000079.vtu new file mode 100644 index 000000000..02bc851b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a863b2794b9ad0cc6d81cec8056412b544da134b2fe933882ccd5451c4c273d +size 27594463 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000080.vtu new file mode 100644 index 000000000..69fe1cf63 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3146ad828a3fc58e0968ed3525c4cc11088b17280b3f45d9fef8156339ec3634 +size 27594183 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000081.vtu new file mode 100644 index 000000000..a98d2233b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66fbae1e10b05d5296b1b09fad7baca66550cea0dc4c202fa11a87ce91cec989 +size 27594826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000082.vtu new file mode 100644 index 000000000..7f105d835 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3109f405b746d83a3e96287ba7d5da5514e0edc48101534c8652f60d37e3fc40 +size 27594770 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000083.vtu new file mode 100644 index 000000000..7ad5dccd8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eea2a9fb28fc6624620e06f6e2f2abc043643250e005a271cbfa8e995a82d2f5 +size 27594590 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000084.vtu new file mode 100644 index 000000000..e49c96bd8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8f5c30bc4f162a53f28184fefa7386a1a65e3a63779ebeb248733ff04034812 +size 27594423 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000085.vtu new file mode 100644 index 000000000..ceae6e5a4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71e48fdea91651115f927ec5a3466ac89b58c1378c5fbcb7d16708c5d6320377 +size 27594475 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000086.vtu new file mode 100644 index 000000000..4491c25b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1148ff3ecaa01c643da1f47ac3dddd3feeac03d9adf780f44cc8b7906ce75d58 +size 27593934 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000087.vtu new file mode 100644 index 000000000..d3005536a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39750216f46d4f7244dbab90a041dfed0682b9698d4bc0be5d40ac48908a5390 +size 27593876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000088.vtu new file mode 100644 index 000000000..838d69462 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f259559915d37db9714efd71b49c32908c524317aa2faead7dbfb3c666d12af +size 27593493 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000089.vtu new file mode 100644 index 000000000..5bad727b4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dff01fda989fb510db4b218e8c21e2110815b5103e665c3617b133a109a1e3e +size 27593948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000090.vtu new file mode 100644 index 000000000..1498320e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7babd8e1219e8d0ceb70c11738db17de8e5179d76b2733e675b254293aff4fd8 +size 27593771 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000091.vtu new file mode 100644 index 000000000..ff69fc753 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26f3a79379ebd3e47aab05bd3b4b79a35483d5f6615b7d00a4003f34b249dc14 +size 27594074 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000092.vtu new file mode 100644 index 000000000..382f5f9c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2907c3605e255a881c8a21b7ef82b7da748c7dad0c6ec71c001769d2cc18b1a3 +size 27594561 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000093.vtu new file mode 100644 index 000000000..599cd3570 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fdeecf643f38425e21610668817ac1521c19a25cc523ed0bc53cee45c453775 +size 27593791 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000094.vtu new file mode 100644 index 000000000..c5c538df6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc425b8369b3ea633f296ffc11af62ffd94fc8eecdb17a3e45968049e9c20038 +size 27593887 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000095.vtu new file mode 100644 index 000000000..c5cbfe0ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01398a8040b5a8992c0088bd87ec1a9829cf3c91c5713fd9fdddd9f6cd2c1f04 +size 27593862 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000096.vtu new file mode 100644 index 000000000..44f1a9756 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f7e85d203bec6d87393ba92c8a5938446d629f76b9532bc911e2328a9af95de +size 27594412 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000097.vtu new file mode 100644 index 000000000..6c05574c5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:904b9b2e430297d6bb19388720e76ca1f338b405c26014d1b0633c637d6945d9 +size 27594603 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000098.vtu new file mode 100644 index 000000000..14cfe81b8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a01a5238f50329b620a4f700b3be9295ec79df1e807666267c559f5cf0c8a624 +size 27594216 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000099.vtu new file mode 100644 index 000000000..d7aaac541 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07cfef5c275e1263ee0277ead0fae3cff13b5b0e15657a3bfccec06188d0d1d0 +size 27593961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000100.vtu new file mode 100644 index 000000000..c41f27a6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:701a0ec494914cee7ab31b650c1923abafad8b2be26e7525adb88cbdc995d613 +size 27593852 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000101.vtu new file mode 100644 index 000000000..31f4c7bc0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de2d0495f8cf82eeb258a824b24ad41a74d1a6d65687d1c7bfd40c833138351e +size 27593657 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000102.vtu new file mode 100644 index 000000000..aef7cde5e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cce9b03f98f6a7e058493a69e83904eeb5507d9f9cc231b4da648bc89262dda +size 27593532 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000103.vtu new file mode 100644 index 000000000..e6d13ca4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f146ae5abb750c2796a58e459384db59184854e59579a9ec46a11f38d8d6824 +size 27593596 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000104.vtu new file mode 100644 index 000000000..f9cb632c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4aac6268783f11a1f151527a988e8a3dd149f1b7cee459db7b1ea3513b60a9d0 +size 27593582 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000105.vtu new file mode 100644 index 000000000..f88ece697 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07903b4a5ed73d614d347d00aedabe10bda36077c6e8ecb52c3a2cf08507aad2 +size 27593634 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000106.vtu new file mode 100644 index 000000000..9084d02ce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ffc3b984b679b8484afa1c7aab99e210b54b623d4032b9c883c9efb16d415c2 +size 27594373 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000107.vtu new file mode 100644 index 000000000..dc07ca6e7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3085695d395194b3a00f59d399e1655aaf82f0b3d022b78e19812008a2655be +size 27593363 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000108.vtu new file mode 100644 index 000000000..ba5c16535 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:869d33898d58e7054354521bba0eee776cfc6098b08645931833ecf0047be434 +size 27593157 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000109.vtu new file mode 100644 index 000000000..4ec298da0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d749c4e987ac268c8087cd0a6c03ade5fdc9a76f20f1ce86ecdf963b3714748f +size 27593521 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000110.vtu new file mode 100644 index 000000000..eee588732 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e62300f498767725bc5295ec1af6e05ba57e94b48080ddfc21bd370e6916e4f3 +size 27592978 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000111.vtu new file mode 100644 index 000000000..e834c089b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dfdc0d94219c53e9c1ee5fac0e236ddd5182a1a6a857944afed2484e0a4a6dd +size 27593235 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000112.vtu new file mode 100644 index 000000000..116f62994 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fb2ab987bf83137a7199861f26098603f6cce9ecb03164ace86b60570a7928f +size 27593881 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000113.vtu new file mode 100644 index 000000000..892244af0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c54cf0ab49d6e06660c946bbd8ec05a4388257da9ce99fb99dca8fd266781cf4 +size 27593220 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000114.vtu new file mode 100644 index 000000000..0dcda6ecc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac86e7ed74b376a6a08a83659bc07fb98eef265f3d3d70a95a1bd6a2e4d82c21 +size 27593006 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000115.vtu new file mode 100644 index 000000000..ceddc7fb4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2dad9707edbf4a93e9cd4a7e83c619b15677e5f322649c091b0c05d1de444c3 +size 27592508 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000116.vtu new file mode 100644 index 000000000..bf920ce1f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf4a17c3fc9427ec74c468f6366d4aa60da58543a789779566c50fac6f543cd6 +size 27593131 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000117.vtu new file mode 100644 index 000000000..20fbb18cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b74b2b86da0ad0e0cfbdaf362c293567c187e44423db3c42f5e67f8bcbf253b4 +size 27592632 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000118.vtu new file mode 100644 index 000000000..08d8ca8cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b5cec08e775b1b6da0671f9db7370832d4ae2f8e6c1ba404f7b47297d1c6405 +size 27592329 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000119.vtu new file mode 100644 index 000000000..46cbf1256 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a056e2cd6cfd1ac9af98bab88a84fa4ecf2bfdf1456e510958128d0575e16aa9 +size 27592526 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000120.vtu new file mode 100644 index 000000000..3b9fc8911 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a901355830e1553fa61038bfeae3c896d5808a9023dd26d3222997f4aab7c9ad +size 27592168 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000121.vtu new file mode 100644 index 000000000..bc1c70927 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fcd4dc836b7901cf012081bbb181937bee168f03872ee7b5cd16eb1396e7801 +size 27591967 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000122.vtu new file mode 100644 index 000000000..06850d23d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83982e47be606090ec5fc815a687929b9cee7381708424fd01a6704acebdfd07 +size 27592971 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000123.vtu new file mode 100644 index 000000000..1ddce99e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:128e4e5b501f4e313ec703707947a1252265ab5074cd6a68d72c0318744c7b14 +size 27592638 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000124.vtu new file mode 100644 index 000000000..a8ee2dd68 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe1b8ddbb96ad3b30d2f953d2766a29bad03a2ce3903df309f57667c4debf0d2 +size 27592737 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000125.vtu new file mode 100644 index 000000000..735bb3117 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fe198684bd4b19b5fa2c7dd9f285f7f84565de01129cc3de1601194b8b503aa +size 27592607 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000126.vtu new file mode 100644 index 000000000..8e50602c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57c89915c3c79ca7c81a2b205cdc3560d3064bec0cbeb007bf012dbfcb8bcea6 +size 27592667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000127.vtu new file mode 100644 index 000000000..e050fdaa6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fbe750a8a34ecc179f19520498c67afb090656403a0aae2487aff426850336b +size 27591881 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000128.vtu new file mode 100644 index 000000000..3514a7f24 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2468045a854d2bc7840f560c01702c5d71ec514daf2a4c54faba5fcf1f00cb30 +size 27592571 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000129.vtu new file mode 100644 index 000000000..cd9024760 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:102ecd7a3e80cd96fc9c2bb152c59fc022d93f25301fe829cd94ac31bf390dd7 +size 27591410 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000130.vtu new file mode 100644 index 000000000..65a5d64f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f436012daf46756af693b2c7ca57e80e304ed46b9bdee687dbdd5137c3d9fca5 +size 27592564 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000131.vtu new file mode 100644 index 000000000..349c63120 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f5687a4ad34ea2fa96c4f9a9772786197b4ed50d0d0414a05b11252b7c0232f +size 27591861 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000132.vtu new file mode 100644 index 000000000..484d01ef3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45017f98c66863790d488f3a8abf653d22bb6c72a0dbd3d23938dc2489982b2d +size 27593200 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000133.vtu new file mode 100644 index 000000000..c3f059dd4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82ae528af2dc6758b197177b8935eb37ea0aff0ab695ee5d9819ccec2c367ae9 +size 27592026 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000134.vtu new file mode 100644 index 000000000..9dd907177 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66fcb80e9a3e6f5edaabd02035b1c2bbf5c82041648ec9619a877208d653a33e +size 27592538 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000135.vtu new file mode 100644 index 000000000..1e75717b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f6142b0cb8723ce91ebc4f47f788d2739f02e5dfcb3ae677156246193054671 +size 27591827 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000136.vtu new file mode 100644 index 000000000..a8782e8ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a651f60b5ca6edbfd043d4294f6f5b846babd60ef192181e8f250e71bb5f7b5 +size 27592300 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000137.vtu new file mode 100644 index 000000000..cb2b91881 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89012cdc926393bd814f56c34f45cea0289b0f63d6357911422ee809056b8c15 +size 27591976 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000138.vtu new file mode 100644 index 000000000..c47d3b683 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b29b8fc3910088f02eb9c8f82ec10463e24794a8f20510e475daeb695b5581a +size 27592628 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000139.vtu new file mode 100644 index 000000000..457c1be5b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58aeaca4c9c3f19e3c3e3ba86987f14331a744db45a701506941d10ae17b8803 +size 27593700 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000140.vtu new file mode 100644 index 000000000..d016fb51b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f62b5991b136b281f7b788d2c3a1be052e758333e911be9bc0d6a5121cdf73da +size 27592665 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000141.vtu new file mode 100644 index 000000000..e25942bbc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf6e1fef97f6931144e793a73e3eb7c711d6144a2e8619754453c19d5efd3929 +size 27592431 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000142.vtu new file mode 100644 index 000000000..65d993c55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e111ac670f09a7364238f4532072997235582105d08f1d9ec52b18f499324e9e +size 27591988 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000143.vtu new file mode 100644 index 000000000..6258e5329 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35a727417e32da1c4b2cf1554f0224c41b6d640879ee1b447ead8b5a8ea7c27c +size 27593423 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000144.vtu new file mode 100644 index 000000000..edd1e0ef4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9d110b55b07cc9e5cc2e30dccef35ae2568ee415db44a4777c41c53da3d97de +size 27591374 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000145.vtu new file mode 100644 index 000000000..2f8114f40 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49ac6961092ecd69086f623a3608e08cf22f68eb9ee2b1cf5ab11e00a99f2d48 +size 27592323 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000146.vtu new file mode 100644 index 000000000..368f811f0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ca02e3620493a1606beb4251d74ccd6acd1eaafc6b7f4d33d5af4bf471a66e +size 27591947 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000147.vtu new file mode 100644 index 000000000..ff9b891b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fa3404a970a6682d1868a166fb1bc5663902e14f1b45db7c50e37d38bace1a1 +size 27591766 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000148.vtu new file mode 100644 index 000000000..0ba5d5373 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b97cf89c400207f44ab4706c3a1cbc9975aba03c613a0b426d3a4f407e0861f +size 27593026 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000149.vtu new file mode 100644 index 000000000..446126d79 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cca8aa0875a30a898d9365444cd7879fa09fa9ef561fad97e8c2f9bcf40da70 +size 27591868 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000150.vtu new file mode 100644 index 000000000..5e2a2f299 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f97c310dbb9bfd2fb5ecaab177da03361fc2da742a31bc9b33d3ad3ea7a77a5 +size 27592996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000151.vtu new file mode 100644 index 000000000..0f5f4b3ce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfe504034f351e0be3301e983e082b7aa6a4b106a50672e038f62fd26ac3732b +size 27592289 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000152.vtu new file mode 100644 index 000000000..f0295c88e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9db46d7e7856874e0cb87997b5313569e37543fc9050ea4298de0f33b5183eb2 +size 27592550 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000153.vtu new file mode 100644 index 000000000..0467ccefa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d74670976935627e60d04de835bb270625efb60024a5e4c33b45bb7f8b704c4 +size 27592049 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000154.vtu new file mode 100644 index 000000000..ba445b30e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aca34fc15b191cfd056554df84eba2100ca9e5975b62a7069128351b86f0fc14 +size 27592341 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000155.vtu new file mode 100644 index 000000000..53b21a2f8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1feb441d681c74493cc12e590dedcb5b4ff5d9a38a4b73b4b5c69ef05ad44879 +size 27592195 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000156.vtu new file mode 100644 index 000000000..e9dd1b98b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06a7771cbb9eaca34627c5fadee0efaa9bc17260542c58b8dbd82a7fabb15665 +size 27591795 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000157.vtu new file mode 100644 index 000000000..1aa874752 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd7a0e26f2059046dccb52c72ef876fd5536d0c000d4c06fed0574d85b46d19a +size 27592082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000158.vtu new file mode 100644 index 000000000..02da554b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc66b62693b3c6feb0eaa63649427951cb23feb0091bafc993310ab5c315e25c +size 27591806 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000159.vtu new file mode 100644 index 000000000..5c5d6b2eb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61e8267f0c0d9e5ee55bdeff24defde6aec96afe6223e3835c78401e4c192236 +size 27592267 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000160.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000160.vtu new file mode 100644 index 000000000..da4feba95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68bc0231558a7df2fb23d5d47a26e96e413bf590bce818f038714b4accc0f66b +size 27591362 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000161.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000161.vtu new file mode 100644 index 000000000..001011502 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942089762ef434b5cce7077cedd320f223651a121026a303a281ced4d9355fb7 +size 27591779 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000162.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000162.vtu new file mode 100644 index 000000000..bb1ba6773 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d544276cb20502e893dde759494b27e6a6930d92500a772397a2cf301d558c +size 27591961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000163.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000163.vtu new file mode 100644 index 000000000..416522251 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65bd7e26c4cd987a894b7fe2b3c33396b96d756b64c850f35fa9b9fbfbd76dbe +size 27592888 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000164.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000164.vtu new file mode 100644 index 000000000..e2d37ead2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac47ecac37075fa094bd2ac8a18388d63f378c803e73e42378a672f3b721c2d4 +size 27591978 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000165.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000165.vtu new file mode 100644 index 000000000..9592e0468 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b2d254238247d9ec1f2166b6cf3c291bad4393980ec5eff7478b8021504f2de +size 27592012 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000166.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000166.vtu new file mode 100644 index 000000000..4e2b971dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae7c90d3ed3af8b50a914a2dc59004f16648cb14a79fc52a1103327a0b438389 +size 27591853 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000167.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000167.vtu new file mode 100644 index 000000000..dbd03926c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b4e1d793dee60650206747d56ecf118f4e04798f4e97ad9be35db055c60f775 +size 27592278 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000168.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000168.vtu new file mode 100644 index 000000000..c8ae0a90b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe7d30da371fc99aee1c257c01ff3bb2a41f80ab9a4daeb95a5958abe94388a0 +size 27591344 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000169.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000169.vtu new file mode 100644 index 000000000..0a2e9d237 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:141d3a30b5452f2191426d100e6fc7b34d02965075ba307c654060b1aef6cb13 +size 27591577 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000170.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000170.vtu new file mode 100644 index 000000000..1ccc93d4a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0257f4eaf1678eeaa8be4e7a44431d108115488525117f3f99b9ed2ced46c57 +size 27592207 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000171.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000171.vtu new file mode 100644 index 000000000..7f3fb2775 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86b0c2f12453d8d2e56533c64b6d9c8467b82724b7df6dcf8c47340a8ed629e8 +size 27591706 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000172.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000172.vtu new file mode 100644 index 000000000..fd680ccf8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2c0550a673f499b1c7bb9c160c727f75f72ec7541843a2c794f8fb142ed57eb +size 27591532 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000173.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000173.vtu new file mode 100644 index 000000000..7c9944d03 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:566b8d64bb1a61d53030047e02ff39148bb411670bc24fd8613d475ddb314031 +size 27592780 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000174.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000174.vtu new file mode 100644 index 000000000..2cbaa09a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9373ffbf3977a6220daffbb41df391ef9061422440c43ea7773b7afd1cb152d5 +size 27591126 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000175.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000175.vtu new file mode 100644 index 000000000..41deeb398 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e84b88baade31993056ed827b7b2b6d7c2e1e90163b01667da8d1c3d1de57d9 +size 27591888 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000176.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000176.vtu new file mode 100644 index 000000000..e367f72e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fdb492910904c9e9ef0ffd720a6d4a46ab61fb8ce02bb0c9a21da68c0035172 +size 27592028 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000177.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000177.vtu new file mode 100644 index 000000000..a29754915 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65a9ae17f3c68763af987434564759acb017272e7355f372be10e2bae61a6866 +size 27592101 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000178.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000178.vtu new file mode 100644 index 000000000..3434582f2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dff63ec79afd614d9c443404865a337d5390309cc1b604e5b8445de8be7d270c +size 27592166 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000179.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000179.vtu new file mode 100644 index 000000000..c72ac59e2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c4024201700c9cb87cfdf27289d586b7085adc81f40bd493ddf4874f715e1cc +size 27591738 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000180.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000180.vtu new file mode 100644 index 000000000..15e6af0f2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee3a6c7426e4767b29404024465784c5e59f880e7cf3a454e5342fba01921650 +size 27592052 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000181.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000181.vtu new file mode 100644 index 000000000..3b61ba093 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f16578606f257cabfb633d7a45a49501de8b368accb30ceb7829e0c29b6bd3c +size 27591302 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000182.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000182.vtu new file mode 100644 index 000000000..5c5c6b008 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9cc4ea65bbf4ab0c4a89dd099dcb25e07f35f39198ea33700970ec60bca4f90 +size 27591433 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000183.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000183.vtu new file mode 100644 index 000000000..e6b2e172b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d8ead22c80b6229a74b994e923d97b3482f6b715f39ab5d134fa3daee4bf689 +size 27591902 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000184.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000184.vtu new file mode 100644 index 000000000..e5a15d5c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b60d3fafffa65306298eebfab849b3202aeee22e8f13ed8213ddff17c5516bb +size 27591883 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000185.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000185.vtu new file mode 100644 index 000000000..49a3f8455 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6489869f303fdfa24f721e7c522869de0f41f64e63a8bdd95b4537fd5ab7563 +size 27592243 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000186.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000186.vtu new file mode 100644 index 000000000..a8682ee2e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae6a2e47e6008d4575b71460bc9e10b76b20385c8e7f1bd5b3f55f3cf622ebe8 +size 27591345 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000187.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000187.vtu new file mode 100644 index 000000000..a1850d50b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3f816fc960c188b83ae9313c06521a0f1f26328ca95651f931930e7bb94d10d +size 27592245 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000188.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000188.vtu new file mode 100644 index 000000000..4a5f0e490 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c4a7fdeb734b89c4f69998c3b7882ebfa5c04bd7f0a153f4ce5a1b887ee7ef4 +size 27592491 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000189.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000189.vtu new file mode 100644 index 000000000..24e9521b8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:015aef3cb81cd7ffb707bf7559e401f580ffb1fc7517d3246fbb96a8bde53d0d +size 27592088 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000190.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000190.vtu new file mode 100644 index 000000000..2fedc695b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0853d88c62d2b9337c06f505e1fced191cb164b1c9a12249e967a6777b31c463 +size 27591610 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000191.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000191.vtu new file mode 100644 index 000000000..f8dbe52f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aae30bcd085dfcd5d2b9dc7e5add62005e9bce725e2138e477f53d7b48d04efa +size 27591568 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000192.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000192.vtu new file mode 100644 index 000000000..a6541b045 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fbc04f077228e31ace87fb740ffc001d64a361d1eca9d44944dd463c33d75f7 +size 27592007 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000193.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000193.vtu new file mode 100644 index 000000000..50e35c9e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6f29b2b2994a7566390e3cd6eee41aadb7f7329c820c056f09e80e9e478a6f3 +size 27591578 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000194.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000194.vtu new file mode 100644 index 000000000..62c88a9f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7a9e6572e7d91f6f84facc183f7578002a01993697aab0dc5b218c94cab73f7 +size 27591487 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000195.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000195.vtu new file mode 100644 index 000000000..782ae507f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecb5dc4918ba65399c70391a0b492e91c6f612f8e9d59094e526d9e99364527d +size 27591964 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000196.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000196.vtu new file mode 100644 index 000000000..96a26839b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b0c18657ea7438718a534428a3f50617ee9340a233374738ed7ac6a1e26e9d1 +size 27591430 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000197.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000197.vtu new file mode 100644 index 000000000..69c6f4740 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ce656cdbb4d058463e92963f6101e3c944f23cf478d9f09c09da82c825fb51c +size 27591903 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000198.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000198.vtu new file mode 100644 index 000000000..1fca43086 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000198.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c90aab7066f1b3597768ce8d44762554f465b65a9e6c9dcb2a0ac9642c49ab58 +size 27593553 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000199.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000199.vtu new file mode 100644 index 000000000..21174a735 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000199.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97b8fa8f787c1dbbf32b15619c5965bfc79f204248a6045ed9df6c9a4bdc30c1 +size 27593866 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000200.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000200.vtu new file mode 100644 index 000000000..02df1c636 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000200.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2ff04234ceb62f1b0ef19f2f9dabc7130e42304b4cf9c84f31eaae18b25800f +size 27593231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000201.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000201.vtu new file mode 100644 index 000000000..3fea89134 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000201.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fce8cc43b2bcc974b667d330549c3676591e84096c51d0e09bc22a77c8c23a1 +size 27594164 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000202.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000202.vtu new file mode 100644 index 000000000..485ec9b06 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000202.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f033ff343b13f4804c8b9b989efbdf52391838ec5b8efd4ee182c4c30ae8a63d +size 27593394 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000203.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000203.vtu new file mode 100644 index 000000000..fcbad0764 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000203.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d731b817c3f4d54de0c360c3cae29678ab7df9c562eb1f7b8eb9a56994c40c2a +size 27593898 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000204.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000204.vtu new file mode 100644 index 000000000..3a7098242 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000204.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b0188998a38bc287527339e516f6ebabf7c953b38f259a915e985ea28847ecd +size 27593624 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000205.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000205.vtu new file mode 100644 index 000000000..d3fdbfb5d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000205.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4152e790662239dfa989209f5820e3e6701fe5c39a60df2ae9242051aedfc8ab +size 27593796 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000206.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000206.vtu new file mode 100644 index 000000000..b4175883f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000206.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9c0a83e0651efc53dcf274172fa10ab345c416c9466684b93b4a190f695455 +size 27593390 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000207.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000207.vtu new file mode 100644 index 000000000..4783b3a65 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000207.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e14e9fe05e1bc39982830ae8b8b268ccc091c23885364107a37e3f7796cd866 +size 27593715 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000208.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000208.vtu new file mode 100644 index 000000000..f4d5fe57c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000208.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b97947157a446f2ff07a1cfa62f3aa48e0a509c99a5ef88c992a3ea1ea32780 +size 27593322 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000209.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000209.vtu new file mode 100644 index 000000000..e73930623 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000209.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03b137d816882860e08ed912777c477332b92890d2a963133fa2b587243aa2b3 +size 27593469 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000210.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000210.vtu new file mode 100644 index 000000000..f4fc43c31 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000210.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4146c467bee90c2d12133b84f02e13e2c4f8c0e3a75de7814d3e5d2f3024a1ab +size 27593504 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000211.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000211.vtu new file mode 100644 index 000000000..68fc348a6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000211.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec4421ec636b1a935eac803473e420595a8abbbff3b01e8cc0f2c31726260817 +size 27592796 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000212.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000212.vtu new file mode 100644 index 000000000..535d9af8d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000212.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e047ad29bf1c6922ef004eb5bab2b395488f17cee17ccfe24b1724863580b1f3 +size 27593398 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000213.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000213.vtu new file mode 100644 index 000000000..e1d6bf1e0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000213.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16e6b11d2a1106d8dce34d11175f2c33c6e3163dbe2231ecae59c8a75e74bc73 +size 27592891 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000214.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000214.vtu new file mode 100644 index 000000000..9a52d805b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000214.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de3b65cc53abea8269ec4b01596d656b1548564319ddf53e95c1e489940bd64e +size 27593647 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000215.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000215.vtu new file mode 100644 index 000000000..946e85500 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000215.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe0c85a656341e3c37990df9669522500783f8f76e7c75add50bfa4582e3c98b +size 27593137 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000216.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000216.vtu new file mode 100644 index 000000000..8c72d2540 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000216.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8123e602d758a48e7078b565ec9aaf56f72f5726ae2dda8d7a5917320cd96919 +size 27594136 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000217.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000217.vtu new file mode 100644 index 000000000..4328b38bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000217.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46fc20334a46c00df86ee41b9398b4e585df21726d24a837f8547578476cae02 +size 27593189 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000218.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000218.vtu new file mode 100644 index 000000000..df98ff01d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000218.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2485ad9f3e18f1e618b49f8d0aa7633623c457069a59a70f1619bc6f9f75075 +size 27593084 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000219.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000219.vtu new file mode 100644 index 000000000..32c1ff21a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000219.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:483b58df68a0a62257a4fb5e4ef59efbce306e49d87b70006cf3732b7e1fb94b +size 27593750 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000220.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000220.vtu new file mode 100644 index 000000000..32947d12a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000220.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bdd769c5708b67b7eff9b912403336a52855e4aef1bdd1dbe736512061bc457 +size 27592916 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000221.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000221.vtu new file mode 100644 index 000000000..c0292876c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000221.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4183d220bc5579ef2a81f12b51f628f03a804caa5cf5b8d68174afcb1539d674 +size 27593029 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000222.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000222.vtu new file mode 100644 index 000000000..4cd4a6c51 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000222.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba830db6df6deedbb2c04d9d8d6041235b9dc2c12b1b58bfb7fdf8ed132199df +size 27592359 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000223.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000223.vtu new file mode 100644 index 000000000..a3647de35 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000223.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5a0e87a9cab32bf240e510741bc3ee799ca2ec9fa8cab0ef15019798c1dca66 +size 27592784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000224.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000224.vtu new file mode 100644 index 000000000..61cd54764 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000224.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a421a19b64ff61fc84100d53f0e498da345f171c8f9e3989e20ad81531a3f37 +size 27593578 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000225.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000225.vtu new file mode 100644 index 000000000..89b296c07 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000225.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f05e418b1e40b16696a56c2cbc96706e0f3916d23a9ef6aa18fe16e42071b34 +size 27592826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000226.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000226.vtu new file mode 100644 index 000000000..cf354491c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000226.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d573a3b0a7d983ce69df855f9cbd6d9375ffea721c042b81a6b3ab54234baf9d +size 27592821 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000227.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000227.vtu new file mode 100644 index 000000000..894c158d2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000227.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b74a4b6342c00f2770ccc6fbded49200f557d0d84ab646442b619cb68724e932 +size 27593198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000228.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000228.vtu new file mode 100644 index 000000000..af667d4be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000228.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71f9135666f0fba14ffb8aa9ba7b386b6d32b4419a92191acdd597676255014e +size 27592350 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000229.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000229.vtu new file mode 100644 index 000000000..0107dd118 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000229.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d85a6f9ba3562bdc1e483636c56619f393439e01100b9a64f9e58a8d596a7ea +size 27592638 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000230.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000230.vtu new file mode 100644 index 000000000..6072d46ee --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000230.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92f5ac51bc7d73ac29ce220027ad39b9d4432193915f22675170a8e55a69db18 +size 27592333 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000231.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000231.vtu new file mode 100644 index 000000000..a90591d18 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000231.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a3f6dc03bef0d75f0732aedb3a8738dc73f9af4efaf8a0ae33cf81c07ac2d8 +size 27593002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000232.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000232.vtu new file mode 100644 index 000000000..6cb3eb3b4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000232.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fc9b824062ac5e944235023cb6880bacc34257b482f3143659535ca39d6227b +size 27592480 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000233.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000233.vtu new file mode 100644 index 000000000..08067bffc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000233.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f25ff202a3145ca3ef1c86f9cf21f43759f90e5a548113ba2aea9ec81e856a33 +size 27593163 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000234.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000234.vtu new file mode 100644 index 000000000..08794462d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000234.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bf802295a468ffbbfdcf96d89974a830bc45d220974fdf77d82f4958f41b72c +size 27592732 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000235.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000235.vtu new file mode 100644 index 000000000..42bfd2cd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000235.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef99ebb41b8cc7ef7c3a128d05811e2cf9b9b29da5969b48afb89ec732d279ad +size 27593524 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000236.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000236.vtu new file mode 100644 index 000000000..e41e51ecd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000236.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e16d6168769aff77a06706b22b6de01dbc7aaeaec2327d52ff5fdbc00361e75 +size 27592688 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000237.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000237.vtu new file mode 100644 index 000000000..0452b8c9d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000237.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:855b1ef243e6690d50a62f2a28fea7aa8be3691c6bc0aa887f01bc1844147ca4 +size 27593588 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000238.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000238.vtu new file mode 100644 index 000000000..93d0700f8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000238.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0d8a7bdb496f317655d830c17fb723e687a60b1571fe18129cea71954140844 +size 27593073 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000239.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000239.vtu new file mode 100644 index 000000000..be2c1c30f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000239.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adba513b44ebf4e463bde99818a75d05fe75330be426b13ab5d7cd8c3c25c083 +size 27593198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000240.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000240.vtu new file mode 100644 index 000000000..536df529b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000240.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fae47b523a9484c44fd5da6edd6a2bfecdd2f30cf41b2109be4a222ef14cf6bf +size 27593207 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000241.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000241.vtu new file mode 100644 index 000000000..843739b7c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000241.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d0c0b78df7f37cd84ef0b869d237b2969606639b52e77eb9334987eff5f020a +size 27591842 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000242.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000242.vtu new file mode 100644 index 000000000..564569034 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000242.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2ff94144285ba7f709aaedb5280d212275bde1e07d858cad3461574b08edac1 +size 27592382 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000243.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000243.vtu new file mode 100644 index 000000000..6a8f28f9d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000243.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ad9d3a77312a464d492749cdf8d7a2acce43876071ded69b72549acd584da1a +size 27593066 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000244.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000244.vtu new file mode 100644 index 000000000..fbfe90b82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000244.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e4710ca6585ef1c3ea8b316231cad0d2a10ea08c12b547df1eecd7841f45ecb +size 27592570 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000245.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000245.vtu new file mode 100644 index 000000000..472493d87 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000245.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f3fe696e803a5d1fa92fe502a1db0611c6e7eb9599964c4d8b4f87ffa2fe3cb +size 27592904 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000246.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000246.vtu new file mode 100644 index 000000000..443949be6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000246.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e3a2ade0a365647f020c6dcb5c1dbc6188d6cf87b23e5b761279752bfb7293b +size 27592855 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000247.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000247.vtu new file mode 100644 index 000000000..7d657f79e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000247.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a828670580d2c98eeee6abab181231537848e5a7adaa523b9c553a286f2f52b +size 27593121 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000248.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000248.vtu new file mode 100644 index 000000000..4e0dc93c4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000248.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50cebfcf8564c27c20d0e4279f20fd29c6a0e86634782c67bdf4499de6a25dbb +size 27592760 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000249.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000249.vtu new file mode 100644 index 000000000..8036208c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000249.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec8018dfaca45f5aba3165ea3094acc2870687a204a4217dac47d89aa99b8e9a +size 27593360 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000250.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000250.vtu new file mode 100644 index 000000000..83ca6c15b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000250.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7f423bb41c45f19376c593969a3bf7e5df06b46715f80d15e95030974512d08 +size 27593221 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000251.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000251.vtu new file mode 100644 index 000000000..0fc9968ad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000251.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:156958056c7c6f7657d8a3176b55d821126184c2427bc63df81422ad1c6839f7 +size 27593569 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000252.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000252.vtu new file mode 100644 index 000000000..bfc639743 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000252.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:641f6cfb3c3f612903aabf7e6caf4d77625c07fd339188d2003377625951fd06 +size 27592689 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000253.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000253.vtu new file mode 100644 index 000000000..2671c40dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000253.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:115cfb53c3fd3c99269ce51e0137209b0104f93352e883ec6fff605f2546114d +size 27593334 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000254.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000254.vtu new file mode 100644 index 000000000..924f59ac5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000254.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ffa060db40ca9b9c65e5aadc280d80ffb1a36b5272362166be5d32e76fa1e4d +size 27593358 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000255.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000255.vtu new file mode 100644 index 000000000..e15a3fc93 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000255.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b03213031165f108f7379de71f7234434dc9e8a219063f79744b7d9da46ee433 +size 27593856 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000256.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000256.vtu new file mode 100644 index 000000000..5cf112eca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.d/20-inverse-face-smooth-w1-lr003_000256.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5969dd54b2ff3bc13bd1272fb99c8d742c2601fa986f69452eccd4c71a83e0f3 +size 27592493 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series new file mode 100644 index 000000000..ba2f06ce9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a9c9da3462f53b61e59f20197b658ff2d6910610c86aa302a655d9cc4272ba6 +size 26914 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10-checkpoint.npz new file mode 100644 index 000000000..a99103acc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1bb0c45e1dbd777070ada693b27e7783fa29089aae4b2c20d2bfe7a49bd4961 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000000.vtu new file mode 100644 index 000000000..e99ae901c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a3ff5dfa072bbc25b9d5797cd31687fc0dcc1d2970f1d468a9b17b24079dfc1 +size 27594278 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000001.vtu new file mode 100644 index 000000000..bb742885d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73e358158bb158e9fe3e8f1167452868d4c784638ab0edccaca988c0ef281489 +size 27594644 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000002.vtu new file mode 100644 index 000000000..2ab439b14 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91554c2b68e27f568aa53e173ff654f0859dc2acda51e585215a583ca809e863 +size 27595058 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000003.vtu new file mode 100644 index 000000000..8d170532d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c86ac30336e0a629b25575baa52aeb5c887d37e2aa5202edbd07ebccab2ecc53 +size 27594197 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000004.vtu new file mode 100644 index 000000000..c1aa83b49 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1d81e74845cce0cb1de3f8b0027b47d56b1c72569bf9b301e97b9ea214cbfff +size 27594107 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000005.vtu new file mode 100644 index 000000000..8d5cdd098 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fcffed129a88ccd76337a7f15974a32d13e1aa529bf663f10435917844ca966 +size 27593380 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000006.vtu new file mode 100644 index 000000000..0ec71f3ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55e86c7ef3be2f645cb3f53bb4c0a29234bb5e286a2aa9400c844b7098c32983 +size 27594737 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000007.vtu new file mode 100644 index 000000000..e8afecc7f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71fafef1177c5a365253b5e5f7fd85759cbe1bec13d843cddf7eaf8ff187363f +size 27593494 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000008.vtu new file mode 100644 index 000000000..2e5925e21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a22554dbff6424c2db64d8f0bd4b219d3bb1b89d9fec5550d2acc66554b3b009 +size 27593786 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000009.vtu new file mode 100644 index 000000000..22a3ca982 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fd3f69db21f4134aac7cb2f82603784c28a7689b482b11067b26d50d66fa74b +size 27594068 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000010.vtu new file mode 100644 index 000000000..ced9b9fe9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:950af1da0a72dbb25769e07479f5e43060b523f207fa3b5cb50984ead8c0be37 +size 27593322 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000011.vtu new file mode 100644 index 000000000..d9d982a66 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c4a6dda316de2fa6802d78de6dea126108a9541a868ecda12566f9671c24e1 +size 27594413 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000012.vtu new file mode 100644 index 000000000..11067c7d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60615eee8cc01dfb84a23d241dc5d394423caa26dc83591452ace91f8c973870 +size 27593492 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000013.vtu new file mode 100644 index 000000000..717622f3c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4ad70f5a0ef6347061e27704137505b66cf96cf159ac91abad0cfa525baadf6 +size 27594605 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000014.vtu new file mode 100644 index 000000000..c67ca35dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4087e171eecbda20f33d505d36c70b9ecc706afa00dcf55ff5306dc4f6557af1 +size 27593597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000015.vtu new file mode 100644 index 000000000..076fa5420 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acaa6fb5d44e428f6f21dec3b68e301043cdc6f8d2edea139c908e739e58ca71 +size 27593690 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000016.vtu new file mode 100644 index 000000000..e1b3988df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80a9f9c6428dccb6d479c11bfa720e7659ffc36bdb5f9a4a0a1ac2768f149769 +size 27593461 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000017.vtu new file mode 100644 index 000000000..9effe86e7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fabd4563fc0afdee226b5cfe4378db474265ea1f78776170aac798086137e81b +size 27594826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000018.vtu new file mode 100644 index 000000000..e0062d808 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:688cb3d451135c73431b03fbbfd358208d6dca344f2bacc1b787547251e01428 +size 27593540 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000019.vtu new file mode 100644 index 000000000..be42c00ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ae1419846dee400460a0084177fc845c55335f17c4ea8ca9c997f9c1ebb5e51 +size 27593509 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000020.vtu new file mode 100644 index 000000000..82f5c527f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e41f69350ce46433994b07dc799efbc2b4ff83ef3a8028d9f3926bd5850ef4f +size 27593714 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000021.vtu new file mode 100644 index 000000000..ddbd7d266 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1fba00d17fdf55c667e0780617ea9f4894aa173cf0cf19a670cdf2022701401 +size 27593275 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000022.vtu new file mode 100644 index 000000000..cb3f14013 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67e50cb122e74bbc52f34f4ad6a514ca01b626f4d9d712cfbf53d0bc841621d3 +size 27593519 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000023.vtu new file mode 100644 index 000000000..fed49ac39 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3622bf05af82a42244320492a9fe4f28418ec5c8b356e49c6ab7320e3188ae6f +size 27593518 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000024.vtu new file mode 100644 index 000000000..fd78d6e5d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ad13573963cdfcae322dc1231abec1542ba38681b8b92bc0cacd9303302f32d +size 27593693 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000025.vtu new file mode 100644 index 000000000..2333ac333 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48a82d48951c2801276d2bebdd5550d7f67f8ab29e796a2dc2b48f4595bbf21c +size 27593325 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000026.vtu new file mode 100644 index 000000000..ada670472 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec6290bf469e5c4d108c8f578bb5bf2fff2d0b0db3e3063d537ffa408fcf95f2 +size 27593357 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000027.vtu new file mode 100644 index 000000000..3f9f1684e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30906834960e74a9da0cbf07ba1a80995f3a350ce88bcf9b446c953b265dd06b +size 27594029 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000028.vtu new file mode 100644 index 000000000..f096a3b93 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df0afecdcdc9ebe08300d554de3594206c6435408d4eb2d6d92cc78239c982a4 +size 27594177 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000029.vtu new file mode 100644 index 000000000..be719c28d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcffd57539681a5ebb4129bc2367752092304ba977a02456480183f2b4b315b7 +size 27593224 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000030.vtu new file mode 100644 index 000000000..86b39cf20 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22bc57a78ad7f182c7127777850b54facb97d4dc8f90fe4e2f639d01247cc594 +size 27593154 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000031.vtu new file mode 100644 index 000000000..98a77d1d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e0b4a9db465b20643f84e69b99e9037dbcf6c1be357baebe50fb17e3fa41aa6 +size 27593683 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000032.vtu new file mode 100644 index 000000000..8d8038118 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a5bb4a28607e4afdd4442a429df542478a35f97a8f4b07b9532889722142918 +size 27593266 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000033.vtu new file mode 100644 index 000000000..84edf557e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:996efb58b17969558a22c2a525d591842aff85f085ed23c94978fe6869d6cf2c +size 27593252 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000034.vtu new file mode 100644 index 000000000..dc892ea3f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d4dead531366b5f65df3370161f6b80d03be7b350480eb1b3d0631b3bf2f90e +size 27593669 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000035.vtu new file mode 100644 index 000000000..d8f30f528 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a100d2d08e922a8feb108199072e1e42cbe1bd30520ecec771454863366a859c +size 27592803 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000036.vtu new file mode 100644 index 000000000..9cc7cd37d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca78762861452ab732303739002ba3da9a0e1d441b8c1693e846c43879f68799 +size 27593567 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000037.vtu new file mode 100644 index 000000000..1901d7d89 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b774a9f50b793d6b4a3db2d7d09d0d00930826fa219cfd293748d7479050bd22 +size 27593698 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000038.vtu new file mode 100644 index 000000000..34a76b7b6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5415085844096e92a0df3884b0b6bc9a3a2e09b3349995c54789ad91769c94fa +size 27593493 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000039.vtu new file mode 100644 index 000000000..292854c7f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47fe629dff453413942a3e9aa65a5f38ce4f4b778fb068d32fae9651aa4cc2ff +size 27593337 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000040.vtu new file mode 100644 index 000000000..c308804be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8394db11b64dfada70ccd8b7023b3caaad728c774e2690061564510c4132692 +size 27593362 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000041.vtu new file mode 100644 index 000000000..867d180a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a18020a827b78f44703c8f99a0fc7ba493998a796544d39a497d7a89ee171349 +size 27593086 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000042.vtu new file mode 100644 index 000000000..acc802649 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0864afc21803a31a9c555796289e3147d312cc3ec3267f395603f3013a9f6197 +size 27593003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000043.vtu new file mode 100644 index 000000000..c3e819530 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c3119e1f35c472fbfe90c0425c72c9b1e8c0e02e2617937c1a4f361b55154a3 +size 27593622 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000044.vtu new file mode 100644 index 000000000..50f6766ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c4ed41e62e4e53b0ee922bd488ad037f049fb8d14d61678db711f05ea06a22c +size 27592769 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000045.vtu new file mode 100644 index 000000000..a07ccea79 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4f9ba11b14d317426ca8d8c56f3a19449225243099cc948acb053cf980c129d +size 27593183 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000046.vtu new file mode 100644 index 000000000..e9d49bf95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37483db620b6a1e40595ee48c2f237a8b2aceb537fef58d73c9ea741dc939d8e +size 27593847 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000047.vtu new file mode 100644 index 000000000..ca85adb2a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d625637c3b83e88e2e142d7fd9cdf915eb8039e8409abcad7cd49172adac8ffd +size 27593117 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000048.vtu new file mode 100644 index 000000000..64843531b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eae3e53494f4413c3621bba85d72b9a63bede06bacf12a903ccf19c3e419a967 +size 27592682 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000049.vtu new file mode 100644 index 000000000..b650922df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1f684ab3a5818f51a395c4c9bea734241d56c32eb3e027736e4921a338c7512 +size 27593493 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000050.vtu new file mode 100644 index 000000000..4ae8d3a4e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9728861ed5cb83c330321e25b186b18b9f866bb2a2e6fc5d9d708de04bc592de +size 27593082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000051.vtu new file mode 100644 index 000000000..e357b5c54 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:735ff1152b80d0d290d869094d6d7c69ebe7ee938167d64db3c019ad3a7f5345 +size 27593608 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000052.vtu new file mode 100644 index 000000000..930a16bbe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f48b61ac32b4a2e4fe749ed51aaa8f3d0ca875c46ccecdf750fc404cdc60dd48 +size 27593740 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000053.vtu new file mode 100644 index 000000000..75834c2b6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:828d5b78dc97a20d98beecda0586a45836381adb75fbc009f4d73ee960004bf9 +size 27593160 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000054.vtu new file mode 100644 index 000000000..035c41e0b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76ace300dd1db962fba337cad79854dc2c1f863446508bafef56532ef1d30357 +size 27592438 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000055.vtu new file mode 100644 index 000000000..94db81607 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2e0254086bb0b32526d42e3a2447899284c764d6d098ed7bd1679b0b37365ba +size 27593943 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000056.vtu new file mode 100644 index 000000000..3d4490428 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d07c8b1ba9ad134415e6af5437c1a32b77da83016c83e5cd168bd88fd449e8cd +size 27593605 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000057.vtu new file mode 100644 index 000000000..bbe1269d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6664bab34f3de8161ea69a56513bec9e7496a63e7af1231e3c549c91d1b40931 +size 27593377 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000058.vtu new file mode 100644 index 000000000..a0d363ffe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e445b8dcb37ca0570993842780aa780e72e6f5bdeb8bdcf84c68369fe2af7c6e +size 27593305 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000059.vtu new file mode 100644 index 000000000..ef82fa185 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4a9286131487bc560167d32af81cd767fe457ee765f4709a6aa4fda28f107c4 +size 27594003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000060.vtu new file mode 100644 index 000000000..175264f42 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8be75eda7f6d0f2ff280f4d861930eaf3d9d0ea5cb9a61052de5b8f2101577e2 +size 27593253 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000061.vtu new file mode 100644 index 000000000..94d874dc7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1af8fb3eb15ee3e72ce739b86b1d36bd536dc95ad199beda47a3313e183723a +size 27593370 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000062.vtu new file mode 100644 index 000000000..f15d74391 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c795a1f993378e5750b41b42ceef11838d479df84891682b0876f3a78a1a77cc +size 27592914 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000063.vtu new file mode 100644 index 000000000..993e1171e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:226e1fbacd68cafd53eedd160054b7d44869a9f73a6bb8062aa3c40f77d54341 +size 27593018 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000064.vtu new file mode 100644 index 000000000..765e67f7d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41be714bff8d8efe7d801cc5157773cbfc1dbe47894f26b1c09293c9874cee7f +size 27592869 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000065.vtu new file mode 100644 index 000000000..cd86ef5c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5902a9d5c80627b93083588db2fdb2e343461699277ac4ac5a76cb70124011f7 +size 27593342 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000066.vtu new file mode 100644 index 000000000..17362f119 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb6e62d76c82e42fa524caa127b90de3085529e632176b0d670dc2fed6e598c4 +size 27593141 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000067.vtu new file mode 100644 index 000000000..e29665574 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3951671a01df54b79ac42a5e228031fae7d6932d609303c974d3f751fc86ab60 +size 27593158 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000068.vtu new file mode 100644 index 000000000..58590b499 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:312760bc2e01e3cb5cf40b833cd17161778f923bbcaae3d50f2c98ba767ade0f +size 27592980 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000069.vtu new file mode 100644 index 000000000..953d22f10 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fd81add3ec736bf411867a606febebc96a6c811004b4bde709d6153126c6416 +size 27592310 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000070.vtu new file mode 100644 index 000000000..df15afe82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3e67e1fdf831e4350fae036824eb16689cbd6c44688df53c86f98cecc62add8 +size 27592955 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000071.vtu new file mode 100644 index 000000000..788d6c904 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa7747fa389cbb1a3a3cf201f02de0154c31c8f657c50c649fd34ec977c7673e +size 27592209 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000072.vtu new file mode 100644 index 000000000..baf505002 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f39db7a0427b1f74d65f4e03d60ba02c2138b6b876762f38ae1ae9fec77f32dc +size 27592055 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000073.vtu new file mode 100644 index 000000000..764857af3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:149bea6da0ea990e8d1bf1277fb15de51bc57ea3a1a2c2f0ffc0d003fa86305b +size 27592307 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000074.vtu new file mode 100644 index 000000000..964010103 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8f1a398af089196d9ddb54aae6ad20baa8398d0a720216244f3149e251815e6 +size 27592546 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000075.vtu new file mode 100644 index 000000000..42b7c0718 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f75e7c4f5f3726a636ffb9af6ae3fc7955bfaf25985a9f129d3f9e7943426419 +size 27592968 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000076.vtu new file mode 100644 index 000000000..799bc2437 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:502bbccb0e67ad64a7dee6b1a4f6edba29a4bdb61daf7683e212302776b82e3e +size 27591651 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000077.vtu new file mode 100644 index 000000000..eeb8b3f71 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f98199fcaf794c28326603c09892f8d1ed96954d37f2cecc35a3c5c4b365db08 +size 27592711 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000078.vtu new file mode 100644 index 000000000..99cc77405 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b90f7bdd654e7af1168d3f2c8a3f5ef257499a93f96760d32687a82b7c077a7e +size 27591943 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000079.vtu new file mode 100644 index 000000000..ed2013861 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dad06fed68a88dd269ff5949ed5c354262f7ae980dba56476c87996637d96a1 +size 27593475 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000080.vtu new file mode 100644 index 000000000..8b0545886 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b22f7a2d75013a9de6f3131a83d54af609ea77b647a3af3c16a7642c5267518f +size 27593178 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000081.vtu new file mode 100644 index 000000000..738b50e89 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9652bea1778dec07c62bb78f50bf592b913bca9772b973ffdfdd800267041bf2 +size 27593088 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000082.vtu new file mode 100644 index 000000000..7c267fa7f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:951781c6696d704765c0d1df601593236f61cc61b5aa7887edd0ca97750b2dab +size 27592761 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000083.vtu new file mode 100644 index 000000000..c0f3c13c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a9ede291865b0cad83fd0c3500987faf2ab7e0b26483ac1cb264ba871f4db56 +size 27592875 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000084.vtu new file mode 100644 index 000000000..06ec06133 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c3e21d0645841617361b4aa374a55167d0f66519a379a3d30a0e216b262b58e +size 27592527 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000085.vtu new file mode 100644 index 000000000..7944643bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5df77f9ea3876b84ff1c74f3539a8f29e6e01b69e115bcd9b24a52cf67c3f44e +size 27592256 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000086.vtu new file mode 100644 index 000000000..4de081d3a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af010599c493c808a19f7c74a7dd49cff78f14eb465b60aa19431a57ea2c88e7 +size 27592632 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000087.vtu new file mode 100644 index 000000000..ca6eb9a35 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844f67bb6c16c35123a083721702c60a2991355238b7dc8d87fdf1fe4f4a36f2 +size 27592767 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000088.vtu new file mode 100644 index 000000000..f0006a1b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:177d9dfacd693259190fd31858d00e0decfc7fc112e7be69109320e186e42caa +size 27592674 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000089.vtu new file mode 100644 index 000000000..135765e2a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abd7d499828dec4dfa6803eabe85a1ba082b4ca1fe2248600fd8809b127f9955 +size 27592392 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000090.vtu new file mode 100644 index 000000000..8d0f66bce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dc7c2a75c4a3a77c726077bd2d3dbf852598711ab7e8bcb461fbcd8a8b0f300 +size 27592866 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000091.vtu new file mode 100644 index 000000000..4359e84d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4a768b80002a1fb137d2ffeaeae17eb245571bef3741c990dea9535204d59f5 +size 27592926 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000092.vtu new file mode 100644 index 000000000..0603c85f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13bd4b150c3e975a28b123241b49000be5a8e17fb06de5c163403b1c317e4c7c +size 27593198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000093.vtu new file mode 100644 index 000000000..c7455817e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c28a4dc889f392543610fae3b479614ebb90c6b9ac7a072bed536a28c458a75 +size 27592397 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000094.vtu new file mode 100644 index 000000000..4b16e3bfe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab85f6dd349d7f7171d44eeb41ef488c20fdddab11522e8b53be16fbd753bd3a +size 27592066 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000095.vtu new file mode 100644 index 000000000..c1d663299 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f865b2205c67926d4c73613c0d59ea6aff845bc1d91be7636a6f17fa360efa79 +size 27591764 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000096.vtu new file mode 100644 index 000000000..5d79fc3c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bad0e8f9de360f0c5c80fffbf3f04038c3efaf38788a7c938bf80018c141c621 +size 27593231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000097.vtu new file mode 100644 index 000000000..c05fb85d8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74879fe4cb1eaf0a4f16f1841084cd2b9dd36034334f305b2e8b225b48c353a9 +size 27592546 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000098.vtu new file mode 100644 index 000000000..7b1f469d7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95186ff3ad7102574dbcbfeee2ae5913a46e495a1dde1027ae0c765b082de97a +size 27592149 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000099.vtu new file mode 100644 index 000000000..5ab9b90d9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daf587e828b735087214a2e6f07c4196a1ac1519c011d6d76c80511daa1a2993 +size 27592419 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000100.vtu new file mode 100644 index 000000000..555bbe070 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73f4ff5dd9e521004b745bf28cf957b1f6a9a31029e98ea70633e0d9f803accb +size 27591589 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000101.vtu new file mode 100644 index 000000000..4ec11c8b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e24610736a2095cea0ced9d69d181c84dc5dbeae4597fef0c3c4418a48f7e5ce +size 27592226 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000102.vtu new file mode 100644 index 000000000..e8d1efa0d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a8acb20f9f499de94f9dc5308e388ac934fb228a983bd0ec28bd0bc25761f49 +size 27592213 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000103.vtu new file mode 100644 index 000000000..92a9a8562 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961ad439a68a6f11e474242fb09f9f365b48c04919ffd2555cb42c9013aaf94d +size 27591449 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000104.vtu new file mode 100644 index 000000000..a873a47c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39b82d6798164c5bfdcbbc53f868a6669c5e70f3f6ee821974a208fb824494ac +size 27591643 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000105.vtu new file mode 100644 index 000000000..9476476ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb67ed041b034b77c0a3eed2772fde4431155727314ff58f306f306c5d0249a0 +size 27592095 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000106.vtu new file mode 100644 index 000000000..430f33ef2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fd17e22509d44f272b9da85a4994f17e86804a8f7d81518c9168745318081d8 +size 27591833 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000107.vtu new file mode 100644 index 000000000..016f982a6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7efbde8c9e84bb681ed9634635c9a72a4562a16e12db2ec2cb71a2d6e61146b2 +size 27592706 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000108.vtu new file mode 100644 index 000000000..29131f396 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04c664c9127b9f2764c1345315aca20c7da3d97a6a51b23e375f0b1b9e95b7c0 +size 27591853 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000109.vtu new file mode 100644 index 000000000..438d624f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:163555a88860a6c83a32929b6b3bf8f2af290dfbc33d19fc7658927d97362556 +size 27592592 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000110.vtu new file mode 100644 index 000000000..81eb1abc5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:282f09acd6523be2ea98cbe20815b2f13d0958f25d66177bb0ba14b719bf8b76 +size 27592369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000111.vtu new file mode 100644 index 000000000..8fba88847 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05f3caa0a9db9d99e3c9a4e308ae1b9ac556f8d89916d0dc949157ebcb4287cf +size 27593099 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000112.vtu new file mode 100644 index 000000000..feab82f83 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98b96cf34371d7b79fbdae59d926c4796ea3b37ba1ec6244f8044ba25aadb3ed +size 27592878 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000113.vtu new file mode 100644 index 000000000..03eaf40b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a204861b0b3e3e83f280c2a985eb6d2094bff6ac5f62f7845b6d1451acddd2c3 +size 27592518 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000114.vtu new file mode 100644 index 000000000..27d5696cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5d83172942524cd5ff209465b9914d52f13b4abcbc0dbb906bab705006ef736 +size 27592539 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000115.vtu new file mode 100644 index 000000000..969e4aa31 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e81989b883979fd1602412f68042f2c5e1e934e3f0d29e0d44119d3425cf331 +size 27592022 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000116.vtu new file mode 100644 index 000000000..2a8580932 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a954404194b6ddf6e25495dae481dff6b6d1b7e00dbfb132fea56fa7d0401139 +size 27591425 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000117.vtu new file mode 100644 index 000000000..5fd2c08a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14fc2222c1725102c10ea93e39c5e7f9b2bd2510bdf51a8ebefdaa75627d1d30 +size 27592257 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000118.vtu new file mode 100644 index 000000000..3b069d476 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6776c4a30b6d14d8f2cf6d4224047ecf170026c70ad1af9dfa3ead750003f87 +size 27591703 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000119.vtu new file mode 100644 index 000000000..411692509 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b39eaed593a7c2e13d6aad0155bc5e580f3c11532fa3329d3a49a2f8316b96fc +size 27591689 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000120.vtu new file mode 100644 index 000000000..e0bff5b73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4dc1b4c5389d8adbab44c31e1f607a9e4cc7abeaf57d2783eb3b2e6f44aba96 +size 27592315 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000121.vtu new file mode 100644 index 000000000..c74445971 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57961a65596e3758aad4bae8f0746bcdabf896b591b744b1918342eb03fcc990 +size 27591693 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000122.vtu new file mode 100644 index 000000000..7fe5a83ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25995b336ef4c3e1e1604479ce34dccdf091d271b1b586361bce3a733ae6b712 +size 27591579 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000123.vtu new file mode 100644 index 000000000..2c3a6732c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4d320ffa0868697cb3f2bfcfe26d97918e79c7a8c42dd8c8906738c988d8dda +size 27591381 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000124.vtu new file mode 100644 index 000000000..3516135cd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e635fbcfa7a85c4f5d9ab7592b67650a1dbd1c54aac13d4928aa35dbf22d5224 +size 27591849 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000125.vtu new file mode 100644 index 000000000..9c04c3d72 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97280d713cf24712a9d31cecaeb680ae0cfe88944768878ec8f586f443a284e3 +size 27591751 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000126.vtu new file mode 100644 index 000000000..9f09c9595 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd97681e6fa8ae0c9a01d9ebba4b9d1ecaed9f9be221a789613a7758d84123e4 +size 27591868 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000127.vtu new file mode 100644 index 000000000..5260a9eaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca1a770ab7e53f40e2e71d515d8eef7ea47c7998eeab87de8b0324944d102c6b +size 27591738 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000128.vtu new file mode 100644 index 000000000..1cf9d2782 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17618c9a160b86b1c63acc92b6ecffb88a0f80af9a9b47f974e65cf963c8555c +size 27591822 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000129.vtu new file mode 100644 index 000000000..adca87995 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d5e7ad0d99b20e4402c3416959043c234a67ea61056ed704bbc6eff07572f60 +size 27592074 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000130.vtu new file mode 100644 index 000000000..a9359181f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9f54e310ec5371365c189ae3e1c301804ddfe95a031a3fe9c8fa635a4932db1 +size 27591708 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000131.vtu new file mode 100644 index 000000000..b841cac7e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f429f586f69987065942755de3f7958f9056106cd8a361b50e106af697a01bb0 +size 27591938 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000132.vtu new file mode 100644 index 000000000..514e40c73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0a9f1d7dc55be444e558c894bd468bca1e63696f877684fc3c3f5218e06710d +size 27591798 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000133.vtu new file mode 100644 index 000000000..1334858a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8b2eb5547540c97c2a4ce147c19436a045b61af3549d8d2b84d8dd80702c341 +size 27592077 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000134.vtu new file mode 100644 index 000000000..1097bc2b4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f34e0e54f6cfc760c01acfa5d7a0b9cce62cc5d288d0a03cfa1445477f7e7a7 +size 27592060 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000135.vtu new file mode 100644 index 000000000..2d638771f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a6b717fbf7c772639b2d49544800e362dd2cb9602a1c6da3d640cdf64d4d8b0 +size 27592202 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000136.vtu new file mode 100644 index 000000000..49545847c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08f9dffe746ada3859dcd9b6e2f6c9b32cda6089fc2e2771560d5afc9efb4414 +size 27592046 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000137.vtu new file mode 100644 index 000000000..b18db2943 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f56dd1292842b346c30c5a9bd4362cf028ec8f7b58c54ac58032345e653f64f1 +size 27591742 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000138.vtu new file mode 100644 index 000000000..15b2906fd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f553cb2c0db82f1b8adcc958af2bc55b8614971ee4fb1ab7ede34ea6c76f4ac +size 27592146 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000139.vtu new file mode 100644 index 000000000..67551905b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cd60a7e2b0462fb2e9601dcdc752d585a852fdcfae33477f46dddcf190299f8 +size 27592162 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000140.vtu new file mode 100644 index 000000000..ffb9399ef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98f388202fc38e557d3e00518307d8082dbdb9e926d11ce0cbb54e7bef4eba65 +size 27592020 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000141.vtu new file mode 100644 index 000000000..7578469f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:933a96006f4c6bddb0a97fd756d2390fa4190388d5136ae4484342bbd26bb130 +size 27592243 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000142.vtu new file mode 100644 index 000000000..1de3351d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82dcf22fc3ca2470b8e7c19a36879d06bd1ac88b66394c72947be3d891e62d3d +size 27591736 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000143.vtu new file mode 100644 index 000000000..14b18cf71 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1fb2e7fd0b1d24ac9cb1ffe7529f5e81539c95c5ba5e9af69336cd65b79d964 +size 27591604 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000144.vtu new file mode 100644 index 000000000..0f732191f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d56678953329184e97ec65ae24de46116798fe9e3e1d20013a85165eb336ba69 +size 27591735 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000145.vtu new file mode 100644 index 000000000..f31eaa789 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cb9e6bd52372b5d619b02e740153c6c5116efe932b942b4d3431368be1ffe9b +size 27591894 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000146.vtu new file mode 100644 index 000000000..6bf7d33a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdd6f59857a35c54b180b8a6f3c1bd29ebea048d3bdbfbe1c6b8b08727f20c46 +size 27591334 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000147.vtu new file mode 100644 index 000000000..9e228e986 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4380db1fbe3e90853eebe0a6f02726276e9132a5295a7d45333192aaab593dd +size 27591887 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000148.vtu new file mode 100644 index 000000000..5386888f4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25027ee53e4e9ded30fab6b54228642acedf52c3714bb06b5644934226e2b92c +size 27591633 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000149.vtu new file mode 100644 index 000000000..423b1b681 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a00132c875da71e86ec47746875123806e02323836e215981e233b3232e1705 +size 27591004 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000150.vtu new file mode 100644 index 000000000..bf78cd102 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f487639c07aaba757006bc1040cfd26ef56c369d29cf0dbc0066bf997a6c1109 +size 27592250 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000151.vtu new file mode 100644 index 000000000..811fdf91c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afedd46fdea0c9decd80513dad48561407934cc055afdd55557d842257855fa5 +size 27591937 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000152.vtu new file mode 100644 index 000000000..61e6dd13b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd1bd39902dc42987232e210e2863875139a4cce847714160aad775cc2006353 +size 27592282 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000153.vtu new file mode 100644 index 000000000..812b612b1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:901aadd746237994b571afe4cf48932666401ce81bf08f306b2272b64daa143a +size 27591627 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000154.vtu new file mode 100644 index 000000000..f39062667 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e6945319b89d8cfcb2fcba729f03a1b69628ee1a0d719155805bdb1537b9213 +size 27591137 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000155.vtu new file mode 100644 index 000000000..1ccec531b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7afdf489766bc65ed1682056b00a02ba116235469d3912b964da0e8ff39ab1d +size 27591897 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000156.vtu new file mode 100644 index 000000000..86e48cf19 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e3c73e975fd921f9dbd7ab7eb7e08449b7815193ad943f21b9369b11ced75c1 +size 27591617 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000157.vtu new file mode 100644 index 000000000..ff0c19b21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e89df27df468cf381002281ab7def495a86b9e36ef62c923b357ece16f8854e +size 27591166 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000158.vtu new file mode 100644 index 000000000..ba3900c54 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f625a3bf75fefdae29d144eeb57a58c9b610d0436a2af5b9e5ed24f234c1961b +size 27591184 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000159.vtu new file mode 100644 index 000000000..0b1a172e0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8c625b39e95f14c8a670b5249800ee41af67ee3073c1f437f9a8271e180f3b3 +size 27590975 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000160.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000160.vtu new file mode 100644 index 000000000..eb1f847a4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2bababac08d09c802632eafa8da77dac4075f2e073fb9b418571af157744538 +size 27592085 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000161.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000161.vtu new file mode 100644 index 000000000..b14fad8f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1be4181f76a74a16a5ed7ae490bc9a798c0db3732b0bccb119409753c167d862 +size 27590972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000162.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000162.vtu new file mode 100644 index 000000000..0693000ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f848b3d04341e8d38c94a4a98dabb91c4c7ed8bf2c666681296607cdb6925925 +size 27591455 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000163.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000163.vtu new file mode 100644 index 000000000..4780800ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:131e5f1479efeab1fd6ad781aea501656763ae6d59432cab091e7fca86634528 +size 27591639 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000164.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000164.vtu new file mode 100644 index 000000000..ec6771635 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e109f661ac9c871a8436241de4ca5ef4ecee4feebb753af87efee7bc215a1ce +size 27592182 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000165.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000165.vtu new file mode 100644 index 000000000..6af672ef5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:055717fb8c5b64107ae948dc0705551816bdd7fafc509df0eb5c2e639bdc7360 +size 27591722 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000166.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000166.vtu new file mode 100644 index 000000000..074a2faf9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d518ce36473aa59594f99b4a63a21befdbb33dc68ce43f85167997c84247ca45 +size 27591902 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000167.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000167.vtu new file mode 100644 index 000000000..526b44a35 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6977e76fb91bb645dee0d5993434f95f946eb75d1bc1fcb8637c77527a68d5 +size 27590999 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000168.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000168.vtu new file mode 100644 index 000000000..fa780f270 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bc5360783e1d7e649cf27895b58de6b0489fc79608d4ddc3196a09ababc6778 +size 27591419 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000169.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000169.vtu new file mode 100644 index 000000000..13f98a270 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c7e2619d7e2754159ab4d3f911bfe4845382897610243eef374c7dca443fc7c +size 27591163 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000170.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000170.vtu new file mode 100644 index 000000000..129b95561 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f704bb68b516373181ffc7cb1d45fe4e7181e92d50ecb713dd0afda80b2e534 +size 27591800 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000171.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000171.vtu new file mode 100644 index 000000000..f8d577be9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c6b32e2c586e4eb1aad1ec210a02fb85ff982e3f49d647f6aa18f7039ae1bd1 +size 27591288 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000172.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000172.vtu new file mode 100644 index 000000000..56463f2c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94b3d09c32ed3be9f5c37aef9518c150ab0f2406597ba3481b097a01a1b912c0 +size 27591148 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000173.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000173.vtu new file mode 100644 index 000000000..3f6ab6e9f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e463b8c2d7356e5ce1e573a1adf08e241f0240874f903f1c16699faf62334507 +size 27591059 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000174.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000174.vtu new file mode 100644 index 000000000..4fa3b9ecb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3146965f2b508f107516891c1cec82d1f3d84694c2d32afc4605610b0716a2c2 +size 27591259 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000175.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000175.vtu new file mode 100644 index 000000000..c3b697ffd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd5cb9ae98ed3071b0a73612628d8f12e84641bd0856cdae2bdda7aad539ff91 +size 27591343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000176.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000176.vtu new file mode 100644 index 000000000..46d0cf13f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1e74915598637c5cb99fa7f44431693e3d8134d196dc03d10429df50ea2b24c +size 27591178 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000177.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000177.vtu new file mode 100644 index 000000000..6fa5e2dd1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4baf9e9fd6c0607bf6fd909bdbf7f14c9cb53b1c9fca29baf338c0881c9e6367 +size 27591366 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000178.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000178.vtu new file mode 100644 index 000000000..878d1c192 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ad43095d8dfb3ee59788245e6b39868b874ea2069470da01aad872e6874a5eb +size 27591476 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000179.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000179.vtu new file mode 100644 index 000000000..66bc02ac5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:348e9a12ed306359a96921241e01505deac93eeead980f127db21a7979b0f980 +size 27592072 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000180.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000180.vtu new file mode 100644 index 000000000..eef2b8f82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5484e65018d5d621524ed2b5181d2a41259d5ad5b4ba0f8f07b663120438cd78 +size 27591566 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000181.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000181.vtu new file mode 100644 index 000000000..332b66d1e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdc66b3a99d9257cc589591c347193d25106db7f40c7f488b41d112a0400533c +size 27591008 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000182.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000182.vtu new file mode 100644 index 000000000..73eb2c388 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e18de419eaa91586b0c38cf666dad5f1af9c9fd41d71686e4ac50469e5b0b579 +size 27591650 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000183.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000183.vtu new file mode 100644 index 000000000..d3e170519 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f574111cf208f57a6f31d0acaea103e7dfb6c894d06a0f1d133f3e86867f6a45 +size 27591659 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000184.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000184.vtu new file mode 100644 index 000000000..305616b5c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2d632672fc443dd978e816739186076997c9e54725e9acc3bd2f8fff00cc9c9 +size 27591728 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000185.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000185.vtu new file mode 100644 index 000000000..9a571be3b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69835b1e26f08a46d445cf3b56cc3331b22414b6173871f1ed0ea9e96a40415e +size 27590847 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000186.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000186.vtu new file mode 100644 index 000000000..632be4046 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eb43c4bf19a9ab65881ff2bfa87d951b76d8baf2fa1b194f699d1c827ab3710 +size 27591886 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000187.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000187.vtu new file mode 100644 index 000000000..9e0d47a7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93789eb8dd0920e2934998611b118511667e2d9cfab6502f4f353036148790d1 +size 27591488 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000188.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000188.vtu new file mode 100644 index 000000000..969db1029 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a416c353b05d13da61f7ef0a652568060624310133c06ea591188196f099e60 +size 27591159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000189.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000189.vtu new file mode 100644 index 000000000..10813b5cb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41576bbf531092e1927c8e9545a625f56c4e7950785e257f5538fb107ce7f8c8 +size 27591117 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000190.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000190.vtu new file mode 100644 index 000000000..87912e30c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb6beb7e7e4175be6a7bab6fd70f7032534c8f068806380984f4d570a39459e7 +size 27591855 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000191.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000191.vtu new file mode 100644 index 000000000..05d99a015 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b425dbe1da89fda9ffa01dfb415a22349e0de3d13f8129c7d0fa48b1ebc7684 +size 27591397 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000192.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000192.vtu new file mode 100644 index 000000000..b946a3278 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:455b3f6944562bb246f8fd25ee9f73c1a22e0eeaaf09674148ad038152255c3f +size 27592046 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000193.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000193.vtu new file mode 100644 index 000000000..13e239a61 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac17b508780721fb2190624495a026dfb1646993803bf4ed087fb185900a775c +size 27591419 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000194.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000194.vtu new file mode 100644 index 000000000..66b19910c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa1c3a7055742e492825b651d445dd55fdac91cc7e5f8fc748fd5f012aa2e417 +size 27591000 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000195.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000195.vtu new file mode 100644 index 000000000..4f68da6f2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c34f37e777d05830098b302d50b18347e5d19909920e48fead29c3c5cb42e314 +size 27591330 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000196.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000196.vtu new file mode 100644 index 000000000..32b1ccb84 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e81d43623a648737c23fef702feb4260e33e8b6176599bc123e147e443be9e +size 27591895 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000197.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000197.vtu new file mode 100644 index 000000000..0926c20e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:237ee6e5aa783777f9019179e6c1e577ce73fd7f023c8364c3bc9b0ffef32a3b +size 27590683 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000198.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000198.vtu new file mode 100644 index 000000000..e3d10b195 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000198.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c3270d749cff7dc2c19519ee984092d9609e4e998982e9760fdb1025ec5ec51 +size 27590869 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000199.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000199.vtu new file mode 100644 index 000000000..11e86dcee --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000199.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d724dab83326e3668344d611907739e734e4cc310c1d5091b07427f3e8f4299 +size 27591346 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000200.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000200.vtu new file mode 100644 index 000000000..fac51db78 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000200.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44591fea34a98c5873f52618625458bd1fac3e0d6a0105742d60e5e62704021b +size 27591562 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000201.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000201.vtu new file mode 100644 index 000000000..1fc639f5f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000201.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d443b31ebbf9ffa49e4aaa23366f837ade5d0d06c954c260ca10b8352f4f99c +size 27591068 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000202.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000202.vtu new file mode 100644 index 000000000..36084ec2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000202.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cff9c1a46575739cb5fa6fea3569acb6cca8e9c383f070c19702888fe917e992 +size 27591156 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000203.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000203.vtu new file mode 100644 index 000000000..e63138b3e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000203.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f05ff94e3eef44533bb555eb9320da195a1f54b8c037ba0b7c269fb8d5a514f +size 27591390 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000204.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000204.vtu new file mode 100644 index 000000000..b528e5cd1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.d/20-inverse-face-smooth-w1-max005-lr001-beta10_000204.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc5837ada192d758a504a1979d0eb877960937c66c03f6a772ccd958fafb3f10 +size 27591295 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.series new file mode 100644 index 000000000..d56eab8cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa68846d717cdf0317df25d7fc3d3d65c6b5cc03aeba6e39ffed7e266fad176f +size 27194 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10-checkpoint.npz new file mode 100644 index 000000000..ab19abb96 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e63d9a6e45416fd235feeedda3ec12ded1d2bf82e14b15eb328894084fa0233c +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000000.vtu new file mode 100644 index 000000000..790e51089 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bdbb6d603a1453927ec7db5a237b8933d8cf1f5dc1b7e17b2fbe675bf7d65b0 +size 27590936 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000001.vtu new file mode 100644 index 000000000..7ec9cb67e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:368fd00c27805de545d67eef1ead56f99fbe65f3e45a0e191da73bee3875a577 +size 27591044 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000002.vtu new file mode 100644 index 000000000..12c941bcf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be96d6ea374cbc091104210a5a3f18e2d498135d30aa9ffa77bbfa3f644b323e +size 27590985 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000003.vtu new file mode 100644 index 000000000..4b99426a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52f24447b711346ed1b96fb6b74749b17db22a2fc7fc9256101ac877693f1bca +size 27590972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000004.vtu new file mode 100644 index 000000000..fff6f0da8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d8b28a82594f1cc40f8b52c007e05d29dadd0f77ae97cefafa53e48afe578ac +size 27591571 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000005.vtu new file mode 100644 index 000000000..5310fb841 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2139e63cae46e32b3fd2280c42335c4bcb0c79197d12c25365eda30999bb4745 +size 27590974 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000006.vtu new file mode 100644 index 000000000..3f98fa87d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75a8eda27bcb2955f1c7cc88097b21fb4b7cee32723d4f6af1c31aa2be6e929d +size 27590526 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000007.vtu new file mode 100644 index 000000000..6d2cf5a28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:982f0cd5214de690fd9c9850fd926e930079bc56b616a463e6b1905b29356c01 +size 27590842 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000008.vtu new file mode 100644 index 000000000..d0965db76 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43af5e8a44aee5dae8e1c59588a65e74038fbd42c7ec999f9e01472323ad6a0e +size 27591722 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000009.vtu new file mode 100644 index 000000000..2f66f90e5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4cf7cf6b1f849830536e19da2eaa46c39c078966acc11ed1f41700a2156ce75 +size 27590239 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000010.vtu new file mode 100644 index 000000000..44305558e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:530564b3189c4e410600b7e63c812c31225bec9d8b7103e016099a50ca7cca75 +size 27591201 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000011.vtu new file mode 100644 index 000000000..8e926611c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34dcb8c1cb70a7d41f8ebe77050eb47b35bff93e826391fcbe5fc89554c4a54a +size 27590972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000012.vtu new file mode 100644 index 000000000..603b13ca5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d26581cb310066d583a46be463e576cdb580523e129be5b68237f6ba24185438 +size 27590743 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000013.vtu new file mode 100644 index 000000000..7f69efd63 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f280546f1f35cb11275183c618abd3b75f19d117c4ca01ea49c91a8301174106 +size 27590998 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000014.vtu new file mode 100644 index 000000000..4a71f77e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f3baa13f10c34a00aa3462b73a092f1e4fbe56359858a7225b2ef036ec216f +size 27590518 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000015.vtu new file mode 100644 index 000000000..485cb8097 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b109bad46e04142c698a12c521a8463d1c3392209d29854ab44cc751a59480e8 +size 27591756 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000016.vtu new file mode 100644 index 000000000..8182d87fe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69a8c44931a50d1e64d57c24c30e8446adfab2c52754eca7460881e37f46a13b +size 27590329 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000017.vtu new file mode 100644 index 000000000..e02ea152b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f93a9a18bb70e8f1911dff0a8ad1829454a542b012d1f8be593f3ba9bbb726e4 +size 27590616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000018.vtu new file mode 100644 index 000000000..a84d7eb6e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a7793facf09b847bfe67078974cf94d17f18fcd38cd3a26ac31024a7c1f455a +size 27590847 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000019.vtu new file mode 100644 index 000000000..c36565fe2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e414c57c83ac63f52344d328e34feac9371ae4b17facf139ee82e52dbb88f0e +size 27590609 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000020.vtu new file mode 100644 index 000000000..a8dab481a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8735d8753ad040b1137f696d78fa87fa6562920b89720590f6dc5dd91be9dd7 +size 27591130 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000021.vtu new file mode 100644 index 000000000..4d00d94fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a9673670c65b55291853ef94827d86ea687e30ccab65dda3a2765fe253c01d5 +size 27590391 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000022.vtu new file mode 100644 index 000000000..6cb8f2155 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25b7d43b2dd956a3b64077adb13ea13797e5a639e8433e0681d3d6e809d220fe +size 27591020 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000023.vtu new file mode 100644 index 000000000..f7d77f42e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59f34acf0b217a86021cad00dfe6fe261751529d3aaaa30bc19c38f80d508d5f +size 27590515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000024.vtu new file mode 100644 index 000000000..ab050b67f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3ff842121a90f5e3615fa92a71701851c18d70ac3b32eaa40ffe07b3145fc7c +size 27590581 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000025.vtu new file mode 100644 index 000000000..9af1964e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b7d8d7500206d7280506f2902f0142bb41c69bd35bdfd3fee1e23433348904d +size 27591870 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000026.vtu new file mode 100644 index 000000000..21447fd7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd93a3d23e37ca95660a8fc8a82b56eddaf1f5f2574a294d39580e8a1749b7da +size 27591157 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000027.vtu new file mode 100644 index 000000000..c2fb74d9e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9743b7221e77fa06b0dbe48dd11b4b88f7bd2f1319958aff2cf0c8fe4d1f0207 +size 27591070 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000028.vtu new file mode 100644 index 000000000..5aee28470 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d721a585ec74584c3512073286524417aa53a09cc07f413b31f43a8767ad4287 +size 27591536 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000029.vtu new file mode 100644 index 000000000..4f2a499f9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fed3f65eb480928de5a6503e0808df517e43e6ac5485065d828f1fc30b60cde5 +size 27591440 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000030.vtu new file mode 100644 index 000000000..f1a5cf168 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d49ffcc777d20278cefbc18e6b0f58ac1f1ca072bed3ccd9a703d3a8b90528a9 +size 27591286 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000031.vtu new file mode 100644 index 000000000..013cd5033 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40a990bffcf055c5507e310aec8090c8604e9d87ad642ff6fddf5c472be2ba5b +size 27591503 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000032.vtu new file mode 100644 index 000000000..1c82ca7a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4672fde2c7e544dd4bfa8ccc20dc05e871c6d67de65755f8465c264209040ce +size 27590575 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000033.vtu new file mode 100644 index 000000000..a82b92f08 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:557fe93e5c6d5cd360ba54d27c68b539b53ada0ae3b3d641e27d958db1790fd5 +size 27590280 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000034.vtu new file mode 100644 index 000000000..8f18c3c8a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdf966ffc75582f1c5b0532d8ac51c403eeb0d48b3c2453fa91e905a8b149a78 +size 27590592 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000035.vtu new file mode 100644 index 000000000..d3d7b2164 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f51686a58061b9504c331c2e8f1412d949f057a8f175f10b5abf51422c038d6 +size 27590467 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000036.vtu new file mode 100644 index 000000000..1311f817f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:426e1ef5b322f6bb242d245f7d1736135f90d040896fc7fb964dbfa6860cc214 +size 27590696 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000037.vtu new file mode 100644 index 000000000..724220a61 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eccaf1050662fae032a4aaa46396b9e4b1f0d6b976d9c2437d86fc73a363b146 +size 27590361 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000038.vtu new file mode 100644 index 000000000..125d08c20 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45aed1d9fff0ec5a09aa6fcdcf120693065f19ea665967813e248bb8302814aa +size 27590488 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000039.vtu new file mode 100644 index 000000000..b97142fa6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8be102a27fe18382c33f159c731cb3ac412297e182957139d2fe694ecc75417 +size 27590984 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000040.vtu new file mode 100644 index 000000000..d93c19117 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:476a51d664496a33cb3279110ec6ee08643597943d36528c2273b3723ebab0fa +size 27590994 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000041.vtu new file mode 100644 index 000000000..8a6bf568c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9515155e7190fa3fa2bf04e0ebd619b7b41c4c7a08cb2fc6e5f6c06b64e5116 +size 27590780 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000042.vtu new file mode 100644 index 000000000..7692db3cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e82d14ec8d09649acdbaa323c22a13b56ed6e512613289c32f7b5c588ceff2 +size 27590775 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000043.vtu new file mode 100644 index 000000000..04bad5d6f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57788c6b44fa82fd79e36d8af356edbee9a12386850941405ba9e8907db81ff3 +size 27590863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000044.vtu new file mode 100644 index 000000000..39cdda730 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fb0b32ec9c29b30a187fb7e9cd06b2219cf05d34d2be5a70f5267889a3a639c +size 27590346 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000045.vtu new file mode 100644 index 000000000..e34d8ae88 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e44b20cec7420380c6bf256441e3b7bfe8aa6df2e1ae211e76c747fb3302d4c +size 27590728 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000046.vtu new file mode 100644 index 000000000..8afb60bb0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2f6f16e703752a1330f5b617f5810bc8a89caeb3a280db529ca7329e1af45d3 +size 27590201 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000047.vtu new file mode 100644 index 000000000..7db8be461 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f3731f5a2b92cf114408f44a4e698a95d59ca3f32226d93f6cfdb3ca94b0af3 +size 27589619 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000048.vtu new file mode 100644 index 000000000..8631ddd67 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e474947d0f40e1c55cb64f84362a6aa5aa7eee54337a4279353d8171e4b9fd54 +size 27589766 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000049.vtu new file mode 100644 index 000000000..e94dad2cb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6022f4cae37f2679b73d299da2ea9fe0024e9f6adceaa166129911533a7f5ae +size 27589883 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000050.vtu new file mode 100644 index 000000000..7cb922fac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06bfeba8a7cc8df66da1ba30f5ff8eeb16fa4445cb6f080830ec399f1c5dcc88 +size 27590651 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000051.vtu new file mode 100644 index 000000000..3d155d007 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c15d22b6d3c3311a83bd8da5fcda3b569e367e2fba09e5a87ca3eeaf41558eb8 +size 27591308 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000052.vtu new file mode 100644 index 000000000..f96869829 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aaf2e0b456ffd26626efd862fa3d173012821c34633ddba41dc8660a2f898b6 +size 27590712 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000053.vtu new file mode 100644 index 000000000..5eb1df624 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fac3498bd448e5d51d3c1cadd0ebcd559a62601fc6a1a6dd37cc46a912c40ad +size 27590326 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000054.vtu new file mode 100644 index 000000000..cc944c201 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc6644bca46929168c60542864fa97219ac8e202f8958fc334a6ec6666796768 +size 27590724 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000055.vtu new file mode 100644 index 000000000..a0f40df0e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd583420eaff01628316ca90fbfca085bc2533c2d99d4333f28b5b7577f9bc97 +size 27590755 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000056.vtu new file mode 100644 index 000000000..77c4fc62b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67560557a49ce1103c18a600cb13ec6987cff45983f65e1474f2d987791d98f4 +size 27591287 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000057.vtu new file mode 100644 index 000000000..de553984e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82b654c8e8698aa61a5c1138c60f8f4a70a9971f78bdda4f7ca42cbddce53825 +size 27590482 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000058.vtu new file mode 100644 index 000000000..65b232407 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd26049087e9ac4959bc00abe006f890b0ac38e0dceedc49dff125d8bfb73fdf +size 27590322 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000059.vtu new file mode 100644 index 000000000..6195e1027 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92bd58d13c0335ddeb28564ab2c86a8968827dd76f15d7bc31aa0e268fff3514 +size 27591328 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000060.vtu new file mode 100644 index 000000000..4cc9475d7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a665188356939c6774c7393c982da4071563f86482693f4aee63047a654c987f +size 27590216 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000061.vtu new file mode 100644 index 000000000..a24777514 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bde8f9e06578172ae3dd18ef62f94085bb8271a1788de5c9e2a108f5a9fec940 +size 27590478 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000062.vtu new file mode 100644 index 000000000..27225ba79 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd3fab8a9178ba4ead3da1f2711db1a9a9c909338cb7f533b1857ff5fe26ad6 +size 27590910 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000063.vtu new file mode 100644 index 000000000..3aff17b2b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ae069a75aef58413334147bfda1d7da57388f227cfeec110980b8964bd4213e +size 27589656 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000064.vtu new file mode 100644 index 000000000..359acd569 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a601277626970c12184e4e1070237bcf1abca035ac744b2b652ae5cbea00c2e4 +size 27590122 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000065.vtu new file mode 100644 index 000000000..05be1e474 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:524be1ea58b8a00cc29028329c8ad8d0caaaab650c5aecfba4ba3d7e72178865 +size 27590062 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000066.vtu new file mode 100644 index 000000000..abdcdccff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b42fefbbd4c6c42475f1117401093836840ef579915fd679b35b1872d5358ad1 +size 27590470 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000067.vtu new file mode 100644 index 000000000..39d84b44d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e2c023bcfe5f582f2765e5e68f6eed966ea9c6916af590be66d9dee2b4129c5 +size 27590322 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000068.vtu new file mode 100644 index 000000000..fa0ec0587 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa224df6873549312202e3c2d7a894968869a4933bcd336146c33474f3720681 +size 27590374 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000069.vtu new file mode 100644 index 000000000..9ddbc77e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2331255ab1b1256bd5de504b599487602e6eab7f5f4456a5dd76fda5f92a8d94 +size 27590698 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000070.vtu new file mode 100644 index 000000000..ee38875f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf3ec291708b66a3525c680fc0458911cd6ea8388ff114b75370009be378485b +size 27590022 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000071.vtu new file mode 100644 index 000000000..37c8ba71b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65326f00210264407a19e6a0efd2e6c5782556823d92c97292e42cc52c68af38 +size 27590609 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000072.vtu new file mode 100644 index 000000000..8f6b1a180 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4895b98652c6aaf8b4d9c0b7288c2c24c7ca6f08a3548c6a98b6011bdf93c58 +size 27590435 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000073.vtu new file mode 100644 index 000000000..5b2ffdb64 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d37823ec72c9dada039067e091d4f627d13563dccd1e68c7fce031397876a912 +size 27590019 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000074.vtu new file mode 100644 index 000000000..bb1f0cb23 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e25eb310eb9b05178a48cf9a5197b9e7cfe892dd2ff05b49f09501388bcbb62e +size 27590309 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000075.vtu new file mode 100644 index 000000000..0d93f6bc2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc9485e43791e42f585ee40d1ba8168c9b0505937801c5e67eb252e832e7d44f +size 27590599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000076.vtu new file mode 100644 index 000000000..fa375c831 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09bdc91a45cb4367faf2ed857b5d53c3100d83ef618a85c46f1a787498f61643 +size 27590295 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000077.vtu new file mode 100644 index 000000000..3a75ef90d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d513c6e06c0aaa5beaedb72d9c43b14c42c623dc2eb78d776f7e4e91826a7db6 +size 27590440 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000078.vtu new file mode 100644 index 000000000..cf752714f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c822e8a2a6679f4d5190b551885fbfc4de1b75a018725006802059c32cef34d5 +size 27590320 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000079.vtu new file mode 100644 index 000000000..b6265768a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caba6842efa75181775ab8575ccd0e5d4d300085c84eb135d9eaf7cd73d538bf +size 27590351 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000080.vtu new file mode 100644 index 000000000..805c775d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:406f623165d49608808493de9f214166460241a49ff09485593925670e7eeed7 +size 27591159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000081.vtu new file mode 100644 index 000000000..86285b5e5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c97f3d0292a997ae811d4b68259094c2d46b9345e643e4b95c1e2d3cf2c5dbaf +size 27590561 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000082.vtu new file mode 100644 index 000000000..16f9df21f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df64983004a3f0917883d591dfe2e0f4efb41f39d5007be2dd516ebf33b23089 +size 27590047 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000083.vtu new file mode 100644 index 000000000..bd6e52c10 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7069b6699f3edba67c84d200f731f69465bb7b941f1dc3b5bbf3f9dfafbc483b +size 27590736 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000084.vtu new file mode 100644 index 000000000..471e1a9e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba73bd5de4d45eaf378cdfb90e3f72cba4dc6a96446a33b503c53bffe506c269 +size 27590913 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000085.vtu new file mode 100644 index 000000000..d372b57df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cdbb7bcf29cdd61bca0f29d895753b3581b86261917ff6dec743c443fd72b0a +size 27591027 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000086.vtu new file mode 100644 index 000000000..f226feb2e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67538816a3933e455e0a498a7532847e30f7e002fc03c27c1ea6d0032ada568b +size 27591430 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000087.vtu new file mode 100644 index 000000000..70ae66a45 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e71acf14dff8c41ea73f78876662800d789fb5ce2251ab72f72331a5d6dde25 +size 27590668 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000088.vtu new file mode 100644 index 000000000..eb1a07fbb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe7ddfa4ef8aca6fad0df55eecf0ae88d79a9734ae3a2c755dc454c42cf5fe8f +size 27590343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000089.vtu new file mode 100644 index 000000000..7ba7e58d0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d5324472ce33866dc3277c7563076e2632376b2e1a71c645ed6d86e6e10053b +size 27589729 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000090.vtu new file mode 100644 index 000000000..02ba2c1b1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15efd7e288a95399dded2835c75a2b3c679578d3d35575fc2efb9f0cf1c71686 +size 27591128 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000091.vtu new file mode 100644 index 000000000..e5fa351a9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:231f077531f1740bc5938b5b55f39a7fe955d80b9f94e86de7a78a9d608ac9ab +size 27590498 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000092.vtu new file mode 100644 index 000000000..54bd777f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23724f282aee9c07906c0195fe9d4b1d6b2cbb09487f5d42cb0c3fbab8172075 +size 27591342 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000093.vtu new file mode 100644 index 000000000..28fe7d3f8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32ba553f0c5efc626d20f31274d85e89c9cc2687e63bdd654ea7f9510f078486 +size 27590528 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000094.vtu new file mode 100644 index 000000000..c0d79cb2a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f21f59c19ed326374980821700633a40842aff0d5277507d1cc9df540707c7b8 +size 27590569 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000095.vtu new file mode 100644 index 000000000..9fc3c37e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c09abf83bbb58c6faace486382ee5cc554decd35e515b362bc117126b214a7c4 +size 27590281 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000096.vtu new file mode 100644 index 000000000..bf6d0ea64 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e29cf3383936a77f1585d73ef61617db445a4439849432ceb561d44e04a956c +size 27589885 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000097.vtu new file mode 100644 index 000000000..4246cd0f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f464a5c4cd9d7d94f625323a09bc3de84bd6aac2a50dca09d36412d4b04a5038 +size 27590660 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000098.vtu new file mode 100644 index 000000000..d0b38e74a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:021fae17bff60e5ae31c92fe045e34cc8ba810dff2fc29049025abf1fb61a6d3 +size 27590393 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000099.vtu new file mode 100644 index 000000000..b963cf802 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0264295255109a9a50ad058b90e473a65791919af43e9724ccb936c867c4ab16 +size 27589494 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000100.vtu new file mode 100644 index 000000000..6b991c93e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:602b430f4e4f5edaeaa3d49283dbc0f4cb9ed5539dae11e66a141f589821d45c +size 27590467 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000101.vtu new file mode 100644 index 000000000..4e103ece8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e431beca6fcf6dfbd278ddab7d4098158ee783cad69d81b92791d7bce3708a8 +size 27590008 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000102.vtu new file mode 100644 index 000000000..88a7b7e52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926b6c59b16002bbb822743f36a5b942f3f7d7816dd70c51b620d6607908b4ab +size 27590850 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000103.vtu new file mode 100644 index 000000000..604b3b885 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30ee3dbff6e974e997bb220cb51753b813cbd93ef1aeb1edbecffd75c43be723 +size 27590690 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000104.vtu new file mode 100644 index 000000000..fd85d4ee5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eadea8ac20d8dfec50c4c1a711448dc03010cff28f5b247c3f1fdb4df798befa +size 27590596 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000105.vtu new file mode 100644 index 000000000..db76e56d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:380dd8ee31b47b932a060e315695bd9941677a7cb718d8469d716e295ce21e26 +size 27590615 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000106.vtu new file mode 100644 index 000000000..b0a8af277 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe90f6b4a2532b3f20003ee60b829e682540e8c96870145d0da9fadb176bd7a1 +size 27590797 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000107.vtu new file mode 100644 index 000000000..7b23ab152 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f66e37290771f8c773f3d669993e314993b2c4b291d32f1b656ce8cf6d4a78b1 +size 27589967 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000108.vtu new file mode 100644 index 000000000..430c6977a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05dd5ab17d3fdcc66ec3c0c33e87a96e3e0bd00573a54450b279b26c590da21a +size 27590247 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000109.vtu new file mode 100644 index 000000000..2b4d2bf94 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78ebaa9799f18b9eca3db832fe8d7c33154264901c07403d295d11d68d3db693 +size 27589713 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000110.vtu new file mode 100644 index 000000000..3daaa7714 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0ae396025a99f0b40b4a9c0fde18ea744b6b79bba5669ad861148c2737be1dd +size 27590627 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000111.vtu new file mode 100644 index 000000000..5572f2142 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adc57f61b277438535f794a4a2d8b10da6152d98c18f4ba5d72a6718b0f818ae +size 27590716 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000112.vtu new file mode 100644 index 000000000..b50483bc2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e59b5ed809d72d6362b7c185632c5cbc6e26d0b228e41131b2af140296ffb69 +size 27590660 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000113.vtu new file mode 100644 index 000000000..32b2839b1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b94c09c7c3da2ad09edc4e23a736a191bf58a9c67778516de12ebc735557b069 +size 27590458 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000114.vtu new file mode 100644 index 000000000..07bc952f4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78bab225e44d7380c3bc39962cb23cad886ad059f95090ceb33b61f4b54f3b93 +size 27590620 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000115.vtu new file mode 100644 index 000000000..0b88bbed6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54321de61e6e6b8030018dc22b0c315a40d68f6bd5cb5172aeb7227d4b5c92a1 +size 27590837 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000116.vtu new file mode 100644 index 000000000..dc8dbc8ac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1525329c855316688c5c88bce0fef3e799c46ac726a93801f54cc7c7ffd8728 +size 27590561 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000117.vtu new file mode 100644 index 000000000..edb3f7eb5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94638d43e0ee2b2b619694e3c2a9d0301da49bf2b76bd8e22ae641c230e10895 +size 27590538 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000118.vtu new file mode 100644 index 000000000..7d41bb1d5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be8b4b2d8275554fa65556aa814bc554e88f7e5e2e86744f0bc2940ef8584249 +size 27590629 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000119.vtu new file mode 100644 index 000000000..ddacbb065 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38eba648704965b24b4475de122caad3b07c2278a5827ea02e6f55e7cdbd7c52 +size 27591114 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000120.vtu new file mode 100644 index 000000000..4f24d938a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6613847486d6ff590c5dda4e146faa09189af3093d2d6ba7ff4f7d7610e9851c +size 27590482 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000121.vtu new file mode 100644 index 000000000..93b5cb82f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff3aa4b0759e98d7d61754c5a168fb4b1fca57de23fccbc35959143115683b93 +size 27591168 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000122.vtu new file mode 100644 index 000000000..d18309513 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06b3e77fdff04ff391716c4124564d7a8733158cf0094cdab527389647261ddf +size 27590724 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000123.vtu new file mode 100644 index 000000000..4640d8eb3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:934d65a31766171bc760530b42fe380af3877289a886e53daf81717cf44349c6 +size 27590281 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000124.vtu new file mode 100644 index 000000000..6bb4bf0b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55d44b571f0b94c10d1dde3708e53cd468c4ca5f1877dcf6f964e7fe91df3fb7 +size 27590899 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000125.vtu new file mode 100644 index 000000000..d59f9cab0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c965201bf7843d6e86bbb389cee178b0da3491a6b36647d5d49441d8af68d256 +size 27590873 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000126.vtu new file mode 100644 index 000000000..325152589 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bcd679f720e151693aeccb1ee45d9aef079ca0349231bf293852d2548f3cf9d +size 27590648 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000127.vtu new file mode 100644 index 000000000..597f36cd9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66332b401aa978a5b9afb7e5cb280ae33ed5790403ad33ba0cb554ced05bc2d8 +size 27590627 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000128.vtu new file mode 100644 index 000000000..2b28bd4f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92fe771e0d10902e1094f3639586c717955cb5d2323d0bab8a529b3ba37d9587 +size 27590105 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000129.vtu new file mode 100644 index 000000000..9314d560a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6a9b4a16fc39a2872a4dd593ddcb6a52cf8700a8dba0aa799fe4be124373f58 +size 27590539 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000130.vtu new file mode 100644 index 000000000..c04e3537b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ae78116a7d6873958861b2c50937ea728dbbea34a9e5be0199d667b37b8251c +size 27590163 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000131.vtu new file mode 100644 index 000000000..e52f04944 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr0006-beta10_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3de826a6f9590dc8cc1a6b4dd62bde3bbd1f5effe90f846b791fe8c6ce3416ba +size 27590019 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.series new file mode 100644 index 000000000..e89a69fa3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33a703d444ed209791349ee2463df21f26267bb9d05403b844e6301227fd526d +size 17485 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10-checkpoint.npz new file mode 100644 index 000000000..5a5493b3b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe37d29c8dc01dbf869cfe26e9a572234e6695a7c612e77ed43ee0da35074a93 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000000.vtu new file mode 100644 index 000000000..f9b025a74 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94bcc5ff6ef132e9fa315c87fa1763c6f18948f61b6716ea0979d0df1919c055 +size 27590281 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000001.vtu new file mode 100644 index 000000000..e5c0de83e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:654be07fd227b15c6898435faf463322d8c7980159b0f042b8eff5e8f02cc471 +size 27591150 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000002.vtu new file mode 100644 index 000000000..ae717785f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc5cfaa1adba30d269ba325ad3e43a91fe94eac61f4285f3c968bbcfcd932261 +size 27592243 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000003.vtu new file mode 100644 index 000000000..370f69544 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0440356c619be997230e847b8049b06ade2105dc80b16ef0e10b15321d77925e +size 27592019 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000004.vtu new file mode 100644 index 000000000..32abf6dc3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9811816d7b8e976c3c2071913c13a45b92b34632f35c2fa8b3216a2ac808e9cc +size 27591852 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000005.vtu new file mode 100644 index 000000000..4af4a8913 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.d/20-inverse-face-smooth-w1-max02-lr003-beta10_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee15bb5885b9a91b2c526fa0cb89a4ef64f9587cc2ba8f645dae493ed315eb6c +size 27591599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.series new file mode 100644 index 000000000..b75b94e1d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e2c782b063cea244915943b1e16f53dbd2b7790e8715c0d9dcf8b3e75ce1f09 +size 813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9-checkpoint.npz new file mode 100644 index 000000000..de0cb2510 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ffbf1c350b58c8fd8f4f6e4defdf92fce3c47ea139909490630ae7013725461 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000000.vtu new file mode 100644 index 000000000..726fcce55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9918057d026fb8c5558464323fb5f886e8baf6139389293a179dcb1d790d84c8 +size 27590574 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000001.vtu new file mode 100644 index 000000000..c923aad3b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2649602231f7a5acb82faca49bca7a2d8c3cfea5c7f50d76910aac1e06a4073 +size 27590656 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000002.vtu new file mode 100644 index 000000000..9358d4d82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4de7c6898cbe81794b9059e916f4860fde737be2d2bb82a529e1c7f0e040bac1 +size 27590920 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000003.vtu new file mode 100644 index 000000000..dda00a6e2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f75e01ea891e3bfb980adc1d1fa3193a0f62e70556e30d9bbbcbfd2949e3c507 +size 27590840 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000004.vtu new file mode 100644 index 000000000..aa10b3edb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e781ec71162ab930357dbaa72e04a32141ad670ff4f1c0df0ef2b5df14472dbc +size 27589905 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000005.vtu new file mode 100644 index 000000000..1e6830522 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39f0ee39983835e4850078d9374ef52684fd17a063cca501ce651a730b41c755 +size 27590339 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000006.vtu new file mode 100644 index 000000000..9810012be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcbe38b66a4db6b4a0583a56bf407be29a84bf644eeed8922345111d191875ac +size 27590641 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000007.vtu new file mode 100644 index 000000000..3bba9230c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e87663e238314473f00b71a6913ca2ace4694ba4c9f9cf04497d99dbd169b17f +size 27589967 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000008.vtu new file mode 100644 index 000000000..f7daa5463 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed301e4bcf5c44ad3132206cd0bc773b0f392a35eaf0248b8d5d0724169ecf54 +size 27590107 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000009.vtu new file mode 100644 index 000000000..14df42da5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41ae62217e22c2957368c2f08756982bfdf3a3a094cb0fec56d7bc8e75979b2f +size 27590159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000010.vtu new file mode 100644 index 000000000..1296f212d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcd5df37a48e9205daf0f710bd97ab5a1d922a98d527cca6bf898a364d124e39 +size 27590107 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000011.vtu new file mode 100644 index 000000000..15d912736 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7fb71d5cb392a52be96563874528d8109dcf01ffe93aa589f2fdfa2a99c528f +size 27590280 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000012.vtu new file mode 100644 index 000000000..c0f956593 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec72744e82e7f0052e94026a33fefe626c43d50b0bbd7dd4a24376e27bb46655 +size 27590392 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000013.vtu new file mode 100644 index 000000000..10777f325 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03f75e33065f9656c22e2cc28b69c27d49108f93fdf22d5ae28b233723a6ce56 +size 27590704 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000014.vtu new file mode 100644 index 000000000..af0dbe9e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:203605298bf1bc328b6365edf8ebb74ba887eeac966d08bb8c538b35fde71785 +size 27590468 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000015.vtu new file mode 100644 index 000000000..3ccfd08f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:815fe15f4dd29a675e2c815b60def19b86b5e4cd8b5a0fe15233f98902bfd720 +size 27589467 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000016.vtu new file mode 100644 index 000000000..e26d60a45 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32932c96299a112a7f9f58f0c2e1707dce9c9cce6885c8337525bb6d79e78099 +size 27590444 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000017.vtu new file mode 100644 index 000000000..4220437cb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:995f211fd5946711f203d13c891af8b68f5560f919806abb90d19c62978ba145 +size 27590264 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000018.vtu new file mode 100644 index 000000000..a6cbe215f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22597d91c8699f6a553f4cd9db24d3c4d0fa4d54379ebc92107f10b0c424b765 +size 27589970 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000019.vtu new file mode 100644 index 000000000..01e111646 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d08d6cdb7bfc0918dc35a312a2ca90f414421c0417bf6654a63dcdc34be158 +size 27590081 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000020.vtu new file mode 100644 index 000000000..4e4db2699 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00da4068679f0858e70346c4f733f28c72ce0f7f358040c793e399466e7e0d61 +size 27589825 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000021.vtu new file mode 100644 index 000000000..8dab1b015 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.d/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e8371be29dbd4b23ff7af3540da32a731fc80c8be75017ab0a709a30dec9e10 +size 27590048 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.series new file mode 100644 index 000000000..003fb8172 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge100-lr000015-beta10-cont9.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9651136023d9731d27e544a217156d97a0f20b8a26a5f1e9d4d0d75d6f1e2366 +size 3637 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-checkpoint.npz new file mode 100644 index 000000000..38f7cf9b8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7127155d085d291fb1b594b76d0836e88601e60e9d77d360ffd34d1e03a4f734 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000000.vtu new file mode 100644 index 000000000..ef0313872 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3018421900c2ed2212c95445cca20eb9b9eb34c3297f0899941a21e9cf80b2a1 +size 27590464 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000001.vtu new file mode 100644 index 000000000..71525e80e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9c250035959c7d85508cad258e34db1129d0cec67c92ca6df75e8b32967c84a +size 27590245 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000002.vtu new file mode 100644 index 000000000..272dd3f3f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fad549de623b3965ca8cbc75e6a1997a5e2ec59a7baf8e37fd3727be977da89 +size 27590948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000003.vtu new file mode 100644 index 000000000..050af72c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e9f9b6a916ca9575d070ee4091b18dc78ba853a12a7c96ca390bfe0374aa2c4 +size 27590033 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000004.vtu new file mode 100644 index 000000000..ff1a55908 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da3902c0d273bac892fb78d648a4639e32495ee8554e29a7fc42bcad3f00d13c +size 27590375 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000005.vtu new file mode 100644 index 000000000..1b683d1a4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4577badc996e8ebb2d55c3301a402c7138f9bc3957c287d8656a1bd023c77afe +size 27590318 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000006.vtu new file mode 100644 index 000000000..8fa97744f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0c41443721dfdb32875d3d71037c050a08e322afddd662787d76438ff5b9e86 +size 27589645 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000007.vtu new file mode 100644 index 000000000..e677eae97 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5801f3ca0705ac3a551fdde999e8e0b0dd4f705a1869bc981fa2924889157097 +size 27590144 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000008.vtu new file mode 100644 index 000000000..2ac037c6e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:053f55c1b5ce755e252d56eab1deb4d475d59163647502efffcf9f4359da9cf7 +size 27590456 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000009.vtu new file mode 100644 index 000000000..fbb213c77 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:706e73809b7e32dc28d8b1a27cae978a0d21a5ff00601e40a68b3ce4ab2a9d9d +size 27590724 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000010.vtu new file mode 100644 index 000000000..a76ab943a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c7dbcec90d14faa0ab76e3f2a9838b50cee9c050bbfea2b53c0a29b522f5170 +size 27590091 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000011.vtu new file mode 100644 index 000000000..4ebade58c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d482368db0c8c2bd978cba918341a6cbc4ad9fdfe7ef9c4a4ac43aa549213ff5 +size 27590415 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000012.vtu new file mode 100644 index 000000000..36c975d25 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c5fad208cbfe8a28b110cc5dd60cfb9e4f6b4a42e54f57955e3bd48337e3821 +size 27590503 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000013.vtu new file mode 100644 index 000000000..c5fe25260 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52bc23a597087618364d5fe945c2e4dd6df8ef26e3506d2175392a977af18d6f +size 27590552 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000014.vtu new file mode 100644 index 000000000..ee46bf39b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a11f4a2a0575f113ee59d889aa1ad65c4a5061fd72d6cfaf772790a8e6e2abad +size 27590084 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000015.vtu new file mode 100644 index 000000000..04cb8fa9a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4a21df886983f4b34ac7f3cd7ce9e8a627484b179a33e233cd406ff87486b3e +size 27590188 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000016.vtu new file mode 100644 index 000000000..b0db462c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ad5726bce0996a23bbafe23eb7eed7b9dfac14783b58019c665caec7116c9fc +size 27590519 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000017.vtu new file mode 100644 index 000000000..1dac7e4bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:508696f3ee40d35e48be04940653e64523ae8c4f92d7e7b69ed66d4a3c5311fe +size 27590144 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000018.vtu new file mode 100644 index 000000000..cac02c2bd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1daf1ff9f94c45ad4aba854c924077d4c46872c4df0004f3fd836950f8101333 +size 27590199 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000019.vtu new file mode 100644 index 000000000..c0cdfd2cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af0154e91e1238857a25c78c140736547831cd8e54de12a0d73a18c557997276 +size 27590339 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000020.vtu new file mode 100644 index 000000000..c73f4057c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad61da73acf8605da965db72f69300d0839c3ef7b881aed85b6255420a8ba0cb +size 27590320 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000021.vtu new file mode 100644 index 000000000..fb1cc8db9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23ddf9d3a8c36784b4c3d0ee63728d6f6eadae5d0da6c381455c44aea6fc2755 +size 27589965 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000022.vtu new file mode 100644 index 000000000..cb5dc05f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be3609a7322d376c6a70ba4c100a4c1859584bbd19359888af6bc60c431ed9f5 +size 27590159 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000023.vtu new file mode 100644 index 000000000..e8aebbce7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec3d4d12a8e78a6881e03ceacb4a3a0f85ad0f1b05802a807db0808eaaf095f +size 27589977 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000024.vtu new file mode 100644 index 000000000..2ae30fc18 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21cc2260092c29be08c97104c0ccb743c9165305a8a156b4eaf67b85b1026d63 +size 27590123 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000025.vtu new file mode 100644 index 000000000..276655dd7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4078b1eb4981c705b9de2b3763e375cc0759a128b1f1b79d14a5571ebc4aae78 +size 27590502 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000026.vtu new file mode 100644 index 000000000..4243b3b84 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f1a4938b06eb68427c18d7f8f49391ef26830ee222929498d3731695cf7eb84 +size 27589931 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000027.vtu new file mode 100644 index 000000000..99ede58d5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7deee3227b400df5b014609e56825f81f3e64295c6c8883856b3caa60fe0f946 +size 27590370 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000028.vtu new file mode 100644 index 000000000..415bbdee6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f47c1f3ead7cbc7d498f7295d4bebc363415c1c79730531df5be95dedb3dff98 +size 27590444 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000029.vtu new file mode 100644 index 000000000..8f5300cfc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8a8555ffa56418a16d697e950313370ce0a1898fd61cc181d10004f34598113 +size 27590094 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000030.vtu new file mode 100644 index 000000000..fe55c5f29 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a75701df4870b87f14703dbf191040907dd000ebf7f7b8866e1e042f86767814 +size 27590381 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000031.vtu new file mode 100644 index 000000000..e3a015eb6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b21f28393ad85588540d23bd7a221f017817008b11d77dcd0ceec13ed36c58c +size 27590466 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000032.vtu new file mode 100644 index 000000000..31a56e9a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:909f1a016d7147af754dc0920ec8f80c7600b3c5a5003dac41790360b2cce5f6 +size 27590288 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000033.vtu new file mode 100644 index 000000000..de3ad594e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ef031c788cb990f8dd238013deb9bbe67e7d953858e8b433c2d296672c6a0b8 +size 27590363 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000034.vtu new file mode 100644 index 000000000..6851a2c83 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3274638343ff21eab24f18d9d2aa84e42dafcb721d2ce9a6967a315ffe15c70d +size 27590596 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000035.vtu new file mode 100644 index 000000000..a5f47e6ee --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a25654d91ad87f87884bd3e262706f3c1aa527a17414ef4bc05f5fab1694c92a +size 27590323 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000036.vtu new file mode 100644 index 000000000..5c5d7d330 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c511e037cb6001be3c5b0ac8e3c715e59aec0f099a36151097e67fe44256441 +size 27590268 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000037.vtu new file mode 100644 index 000000000..a5c8a14ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d829f6a80e5cd3aff546547cfc63c0c02653de4b091293d5d1165e6141e2bb1d +size 27589591 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000038.vtu new file mode 100644 index 000000000..cde03d732 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62d63fcbef46eb83bc978da42f9f1ad3db56516e53d61c370cee4290ae9259b9 +size 27590123 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000039.vtu new file mode 100644 index 000000000..96b073169 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bcdf1ef4ef1127ef244a668fe4b8e6904849800e781877b917ad2194f5ee4b7 +size 27590293 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000040.vtu new file mode 100644 index 000000000..35cff75a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf7e9560a88855ffbf6cbf8c6db8d52b7c43e0a122a5bbf5955fc999043d89b2 +size 27589869 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000041.vtu new file mode 100644 index 000000000..a7193cc62 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:105065cca9e9fd1005f080d97d8fcd4557907c82d59623f652b058b973f8229d +size 27589797 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000042.vtu new file mode 100644 index 000000000..aa42c590f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f16b05963e7d0ed2fe833b097c1626e7320885f2d9bcc00c264aa311b156ddb +size 27589955 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000043.vtu new file mode 100644 index 000000000..f52f8638c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4abeed95e7f97e63714ceac656a36ca1dd31fba1f4649bed30b70276c214651 +size 27590198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000044.vtu new file mode 100644 index 000000000..07644bf4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73389e13345e818ed87443f6eb7a1314e8716f25fca7b0b6bd14e48f1f1cec47 +size 27590371 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.series new file mode 100644 index 000000000..b5ffbd8a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:571315c9806d7e76310bbe2185473dcb2e98399ef8d3184e841494c361caf0d6 +size 7229 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-checkpoint.npz new file mode 100644 index 000000000..b67039a1a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2bcf4b345a945f616f3c0e69fba6c8fe809dcf5ecf6802788c1aaa2488e0a58 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000000.vtu new file mode 100644 index 000000000..7be20bbfe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bdd5172d65d75ff54d3f82e4ae51e06f200123644a5a8bac2f77f5e8a54f3ba +size 27590191 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000001.vtu new file mode 100644 index 000000000..97527ee0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a871233d09130c5dde067b4229f20574b4e798f354b10893d45fcc9eb67e750c +size 27590108 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000002.vtu new file mode 100644 index 000000000..319972105 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fb951dcea79e11caa6843b6e00e0b47e39c82da03e8b6fd1c3a3d18e9652dc3 +size 27590526 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000003.vtu new file mode 100644 index 000000000..bdccca9ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c361875cb1f69813a30d0af50b7929b5d7548adcb7789ace975ce93df8846120 +size 27590334 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000004.vtu new file mode 100644 index 000000000..b7be6efba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33c274dcf3b225f388ebd54d1dd44bbc68b1fabb348b1944e8d669d86a73559c +size 27590562 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000005.vtu new file mode 100644 index 000000000..cd9e60355 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68ed11667df7044481849d4e974940e0a4fcfda78db7fcbd69398f66623ff727 +size 27590280 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000006.vtu new file mode 100644 index 000000000..6208fc9f0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1625d2a76418d7640c82b16ee71e4a87f656c82a4182582cbc5b32b7fd16802d +size 27589968 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000007.vtu new file mode 100644 index 000000000..38352e4ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e678ad6245a5b44971c3e28e8b8cc402a9a32fc06c107d59046c00c8394ff5a9 +size 27590348 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000008.vtu new file mode 100644 index 000000000..8e4dfc05f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25801cf64c6abf7cd74dd2a186a9a4f848bcd12ec3700ec08fe6a62cf92bfbbf +size 27590370 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000009.vtu new file mode 100644 index 000000000..dcd5edf2a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:649e44d7700b77c97d0216fb79a5262f6efa97298530277d6033097c4ac53288 +size 27590171 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000010.vtu new file mode 100644 index 000000000..ee6e805ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dc598cfb3f51cbc6e6ccf748ec29e6e2847ea2fd8576aaf25f976d7f6872d0d +size 27590114 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000011.vtu new file mode 100644 index 000000000..562c9ede9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:066616579b0f6f2f890d6b16b4370d797c9ab5ade218c1fc9405f9e37022404a +size 27590309 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000012.vtu new file mode 100644 index 000000000..fb845fdaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a32c38fa0be8e82d608781eac01be0474ec5bb0dd97c8f9792e9f77a9f724d2 +size 27590555 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000013.vtu new file mode 100644 index 000000000..913673d4d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9a5e9e1a926ea0bc6c927faece5943d06cf8c1fbbd7a516dbac3c2742db35ef +size 27590341 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000014.vtu new file mode 100644 index 000000000..6e32e31e0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73a636370f64ad21d917df64686ef48d838a995bc92371aa9a9b9fa40c008603 +size 27590597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000015.vtu new file mode 100644 index 000000000..83911208d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2451bafcadb300ee7cf8b8eaee25285e112f31d2c6cc73ab9792ba85dd83b4b2 +size 27590069 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000016.vtu new file mode 100644 index 000000000..432ce45fc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d10b4ffb603a192577fbe25af3bf950aa9349075fcd8dedad8e9aa68e0a980a6 +size 27590780 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000017.vtu new file mode 100644 index 000000000..3e9bfa20c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e644d0eee255a3064cfe26d7672bb4a77fd8db92b2f6c625d2318eb78e103d39 +size 27590567 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000018.vtu new file mode 100644 index 000000000..1284bf772 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a1c4204189dc669ba47a4b2ed26929e5f091a2ef168a92a5f7357a9d849265d +size 27590162 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000019.vtu new file mode 100644 index 000000000..95f620327 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2df024390014682d69db5a9bcfd68d4f00ad6ec8618eb3cf69d2cdd1240598ee +size 27590254 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000020.vtu new file mode 100644 index 000000000..e2f541660 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45668b081894b95a264be8faedaaca9a30c0ee42720be62f3fca317d90bcca88 +size 27590813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000021.vtu new file mode 100644 index 000000000..1614ed72a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:245667aa8f3c2aba841325c0e641f0acb76974f856fa042c74819b24c8d2611e +size 27590840 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.series new file mode 100644 index 000000000..c565ef755 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1579db6efd60157df3ff1c5587ca88cdd07a322be035c3a9f958d27a18a31927 +size 3549 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-checkpoint.npz new file mode 100644 index 000000000..78fcb8c8c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1b049b228bbbfae41002fe38d501acbb7e287f4cc6714ddc34052d78d086942 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000000.vtu new file mode 100644 index 000000000..00ddd6ba5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe7d712e1bcea50f606050527251cde73f643bbbbe89111ab697046d0ca0cd48 +size 27590622 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000001.vtu new file mode 100644 index 000000000..46e900d76 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba49118ad09f301f44511c42d1f0b58df53a872892d3876f3058b485ed2b0b18 +size 27590501 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000002.vtu new file mode 100644 index 000000000..a22e204cb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8530ea9d285fbb45bbdaa215ed5bb44fa83c57c877dd712ffbefe0fe093d8a59 +size 27590444 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000003.vtu new file mode 100644 index 000000000..331f6fc66 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f71e8b51a9f026a7a38a120499f5cb41c020e0ee6a98eaa1364dfe88578893b1 +size 27590813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000004.vtu new file mode 100644 index 000000000..f66783027 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e459958267d1c0e1860b8dafb4a8dc6962e2607bc3e9863cb26fa375ca81a9 +size 27590606 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000005.vtu new file mode 100644 index 000000000..a3c4752e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4376122b3729144264658f442849710c2032b5443c680f16142e23ce69afdb2d +size 27590699 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000006.vtu new file mode 100644 index 000000000..9fd87badb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a0d089eba97fa27148ed03692a1e870a4444b05f347f801f71fe129c3378612 +size 27591062 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000007.vtu new file mode 100644 index 000000000..1cf346445 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47abe66c3e29a3c56ca6b5301b1895127f0fbb7882ffefbf7c66158f29223d9a +size 27590847 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000008.vtu new file mode 100644 index 000000000..1ce7526b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b96aa41974772adc583940192d2236c176b95ada6bc6140e61041aca05f2078 +size 27590423 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000009.vtu new file mode 100644 index 000000000..6e84067ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ab11ae681f9cef5e5ff44566d7002bdd9ccdede103668d4e5858bb35c3ad653 +size 27590492 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000010.vtu new file mode 100644 index 000000000..81b7cbaca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa13b3aa7d7686a29785238ca198529bc93a42ddace355767822c081f5cd1a3e +size 27590357 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000011.vtu new file mode 100644 index 000000000..4e00dcdac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5529144e6c708facfaede0d2faeeb3c03968ec0dee203064bd40a26e7fedb43 +size 27590666 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000012.vtu new file mode 100644 index 000000000..5e5a144b1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9faacadf1912f8bbd66241d05f30f969a88c3501fd28b24b98369534829c34c +size 27590658 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000013.vtu new file mode 100644 index 000000000..290fa7e4a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5bda4d407d87c69e67158cf066aa78e690c16e411cdbf343dc2da69f69d433c +size 27590176 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000014.vtu new file mode 100644 index 000000000..d1cbfcf20 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ac96a326405c671c277beb90f570031f2f29c5e424a8a9c3e87514d66c0eccb +size 27590797 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000015.vtu new file mode 100644 index 000000000..510008e10 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f0cd6d63086d9ae3af2cdee7d0717e776b04f5707d486aa3680007d98df36fd +size 27590923 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000016.vtu new file mode 100644 index 000000000..4a6ba8276 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e05f474a823d81b331d03135cb745009dfe28c737c4c2b7c0af3090a4cbc7b5 +size 27590902 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000017.vtu new file mode 100644 index 000000000..b96d6373a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d86569770ea453b89c165b60171ecab4a06f5c8107733bc242216d87c331762e +size 27590110 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000018.vtu new file mode 100644 index 000000000..2bd96422e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a6a281d756822b932f857d176816f748c48e15d889695c791e43fd7182f6e4b +size 27590830 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000019.vtu new file mode 100644 index 000000000..1de21483a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01ea0400bbc96cef2a29abac94280db42479c696924826d35551dc378eb1ce7f +size 27590766 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000020.vtu new file mode 100644 index 000000000..211d492cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0532278d17ac0ea6fd9ea7cd4dc1287e76154bb421b131e52e6e26e2a8920f3 +size 27590771 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000021.vtu new file mode 100644 index 000000000..cd9940053 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6d31cc35abbb338ac541597ed972f1a4e3437a0998d6d176c6a68593c02fc7b +size 27590065 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000022.vtu new file mode 100644 index 000000000..59c9352fd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cb5e4194e78e3b15a2ffea41d408d531bc50d32e84dee433ca72fc07a7b212b +size 27590699 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000023.vtu new file mode 100644 index 000000000..97fcc487d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff65ef73b8fc888eb98227e2982278a704a78bafaad136a2fb2e17b8db01ae3c +size 27590517 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000024.vtu new file mode 100644 index 000000000..a41ff33c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d646576d7440292bd52f1d32cd8b22b7b664459ff333843297547d968f108c26 +size 27589952 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000025.vtu new file mode 100644 index 000000000..133547902 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05db85652a60f723c391105842efc53f8c582b94dc853241b765798dff2447e9 +size 27590617 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000026.vtu new file mode 100644 index 000000000..caadf69dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dffbd15a1e6ccfdecfd8734fabb60494c36cff05b441f45ba988ac108f814f6 +size 27590692 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000027.vtu new file mode 100644 index 000000000..f028a2375 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:502e5eea92c0fadd744d70425b2f87c27c6a968b4d8feb3bcfd3df7a7951acd6 +size 27590109 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000028.vtu new file mode 100644 index 000000000..6f0cf4477 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0118d94df9421cf3ccecf15313c48ca9c5df5495026238b4c9908ea161c823c4 +size 27591090 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000029.vtu new file mode 100644 index 000000000..479b5dccf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95e60fd5708f6e976c80274d9a7ee337bb8ef7da6db50540db3b0b84b416cb4e +size 27590086 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000030.vtu new file mode 100644 index 000000000..3648f3c4a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85997252aaea177c6a65ddafbe381c034d0b78d0abbff5fb263367a14481b58a +size 27590356 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000031.vtu new file mode 100644 index 000000000..8645777f2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd700e2ea93642f13b5171bb105dfa0e892c95629518d0b5b4d75f024170e557 +size 27590296 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000032.vtu new file mode 100644 index 000000000..f034697ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5283390bb0604960a9fec3c4dd965456abb354797347cb9b07a5f6bb3d90c4e3 +size 27590073 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000033.vtu new file mode 100644 index 000000000..0c0710b21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893939e1c911c4da54e76689a9bdcb9ba4c4f8248ec2b32f7128853d54a09794 +size 27590826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000034.vtu new file mode 100644 index 000000000..694a00c08 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:117dceef36aa407c55e299308a339047805bf17303c75c927a08379c5c6ea7b0 +size 27590326 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000035.vtu new file mode 100644 index 000000000..758969ee7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a76dbea7dd827ec569a195fa600c906f5b3223918f5b7bc721c0c248b9c571 +size 27590213 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000036.vtu new file mode 100644 index 000000000..20e4f4f0e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd3e0c9c49e65f23593a1ae13b684d4375edf345efc595e332ae849ae7e579ee +size 27590459 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000037.vtu new file mode 100644 index 000000000..27c6b8f06 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e9a93162d82d4fe74bb77bd69d0e5642dd55152e431a6566e5d4a028f96b701 +size 27590221 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000038.vtu new file mode 100644 index 000000000..be697e4d0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e42b55769a359c8b2cee0dfc579f29597c10940a8a8c30eec5ca9a41e773ba41 +size 27589964 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000039.vtu new file mode 100644 index 000000000..8b6837a7e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0ad03291122875a2e2a0e575ee5681cf355a5d20532dcb51d9dd4bf25efa369 +size 27590458 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000040.vtu new file mode 100644 index 000000000..03dc89532 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13ad14af2321b0eced0d205695fef555dc5b3055b5cd0f43d88b0225f1150c5b +size 27590220 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000041.vtu new file mode 100644 index 000000000..28a45e8a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:124cd2d2fe916899e32ef579a3e279bd13812d19b47003452b8f4ecc41ed6432 +size 27590956 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000042.vtu new file mode 100644 index 000000000..dbe0da464 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96c0f85ef5a768cd20a9159fdcde1fb8cc3491078468808ea5a2bec181975d0c +size 27590188 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000043.vtu new file mode 100644 index 000000000..0a3233528 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6560746e0a127fd54c90df727b320115d183ea80366fc59549e2573dd00b63a8 +size 27590558 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000044.vtu new file mode 100644 index 000000000..64dea0a6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0f12cb2942fbfc9181275d8236a8f8eda7d094343a56e3468e3e1d4aac200c1 +size 27590790 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000045.vtu new file mode 100644 index 000000000..78ec6bce8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69c7bbc3561a170c41d09d9b79b011b3121c2134078b9b5f1854b7a51b42a4ee +size 27590920 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000046.vtu new file mode 100644 index 000000000..74929f45d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1e79c379332b00296b83faabc7970692ba83b8ddca85b41323da8331997f00a +size 27590697 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000047.vtu new file mode 100644 index 000000000..7bd5f87cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d48679cd135b14d1a38aad9e0038c768d466a4a29398cd1e14b5e31701e8e0 +size 27590211 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000048.vtu new file mode 100644 index 000000000..502f819ac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad89b3a458aa5c01a80a4cb4a6d9cdbf7e646a1e2962149ced677c8f4c389cb +size 27590437 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000049.vtu new file mode 100644 index 000000000..e3ac6a0f0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de156f5061db487474e1762d64a6655adc64c03009f537062d09203483eb2478 +size 27590685 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000050.vtu new file mode 100644 index 000000000..3f65f9398 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa9db893b30cd5fd0b65ba0d8de2956cbc437cdba97a0301711e8ee3ed90f526 +size 27590610 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000051.vtu new file mode 100644 index 000000000..3d76dafa3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20c5b6aaedacd177e13d05ad624091685c2a072f334dbfe407dbb633fd517328 +size 27590229 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000052.vtu new file mode 100644 index 000000000..5b2ad1102 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81df336497f151045bcaeb1fbbc69627cced97d3abdc94f9b3a62f57b7daffa5 +size 27589909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000053.vtu new file mode 100644 index 000000000..54db014fe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3ceb83614a39d1ec20f4c279e713b0e43a1eae5ecba5fb38ea16779a9ee3f8a +size 27590687 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000054.vtu new file mode 100644 index 000000000..4a6759497 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c12ae2c83486385fe580fdc69b493b201c92ad30a3c569a73abe8c317c1e572 +size 27590455 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000055.vtu new file mode 100644 index 000000000..7841662fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b2ae136b974ffd74b58b4f8f196342cc7cbe696b8940977085ee5e802a49308 +size 27590026 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000056.vtu new file mode 100644 index 000000000..b69f71a42 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3e99d3b70c8675a60490e7250ec654e58835631c485f5cd04d46f7b1b2da268 +size 27590858 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000057.vtu new file mode 100644 index 000000000..0209a2b51 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:955301e14efc48af72aff5f63ccb292dd7f1f77a10663be7f5a1c1c96163c69d +size 27589890 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000058.vtu new file mode 100644 index 000000000..95513c7f0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b681c2ef49c5c3ac811973e39a572f0242e42627848126a892b7e03f1a560f7 +size 27590152 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000059.vtu new file mode 100644 index 000000000..4c2321737 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31b27610ec8257bce26fdb78e54d8ec4722f374a95863bbd146cb39b5d9e8a8c +size 27590694 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000060.vtu new file mode 100644 index 000000000..17b918419 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54648ff9d5f28a9216566a9b1b8d53de59c6eb02efd89bf23c9adedc71ca33cb +size 27590604 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000061.vtu new file mode 100644 index 000000000..0b6339f48 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d6fe144d3eea54ea06daa9d9b2a0fc5a4fa52861bae48e68b1a216fa09ebf85 +size 27590270 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000062.vtu new file mode 100644 index 000000000..1e66d81cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45469d61c29bbb6bf7a89e24960f9e49c1d4939fd0dc9df9e280d5b05d5d4a7b +size 27590323 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000063.vtu new file mode 100644 index 000000000..649d6e96e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:822adcb8fcbf2685a379991888305baf0d7137c2c5e9e8ff2d4abbcdaeb52e9e +size 27590071 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000064.vtu new file mode 100644 index 000000000..388f68c25 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b8b904f719d0cb74d5c550149e0b0d88de895dc11ad0f000a7ef0981a7ed6e3 +size 27590602 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000065.vtu new file mode 100644 index 000000000..6c7a32963 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fee2335ced94b1e439c5c0b077d53adb40efa34e7e992abd68cfea25dd66a6a2 +size 27590621 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000066.vtu new file mode 100644 index 000000000..030e49098 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:224b8fba9765b087939af62195f9210e9075258d41b1b6666b1b45c4eaa5c1e1 +size 27590240 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000067.vtu new file mode 100644 index 000000000..3b508f433 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90553855fb783c663de5032615a1447230db526dc66f1f24a93337ebb90535ed +size 27589822 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000068.vtu new file mode 100644 index 000000000..17ce28092 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:692d0f16eb0addcdb2e24dc8700a023b4982712b0a24f89a8275cbc98c937662 +size 27590050 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000069.vtu new file mode 100644 index 000000000..fee6e10e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f422f3ca36bf8637fc561270b6b80a791788f8d83ffc9f70ab3d940b5dad1715 +size 27590236 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000070.vtu new file mode 100644 index 000000000..4600b8adb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:422ca0250038fb9fbccf3de9a912375c64d45e550d55d5e74ee41b938bc5302f +size 27590259 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000071.vtu new file mode 100644 index 000000000..fe6b4c4e5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18ff47e0234785dcf82ebfbcc04313df8c2c9e76f452133cf13ccd32c77b9479 +size 27590411 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000072.vtu new file mode 100644 index 000000000..762cd0d61 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dda2294626ba6ab51eb85df952b1112890b4b379bd6f6533f6c6f4589b1d212 +size 27590233 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000073.vtu new file mode 100644 index 000000000..341f9d6be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c8e528046d61f5aa791cd1114ff91ecdfa10419cf2f28244d791d35d8bcc058 +size 27590226 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000074.vtu new file mode 100644 index 000000000..c51b98d86 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:033f62905b9e763c34efb06ca4b99ebabef6c536cd3b8e2d0bfb67597360ed05 +size 27590408 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000075.vtu new file mode 100644 index 000000000..35fe27565 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c3b057669b2819331810c5269f500fdcec7450d83f0fa9b1dc7503736980d10 +size 27590895 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000076.vtu new file mode 100644 index 000000000..fa40493d5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f8e7656e2f3b59648d2039fb39593792118e41e06cd71357f1a8f5378e173e1 +size 27590154 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000077.vtu new file mode 100644 index 000000000..90854ca16 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:482b1730015c014312df61f4d65432891df7c3349d74317d50fa3ce70f67a820 +size 27590251 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000078.vtu new file mode 100644 index 000000000..e71f83618 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d896eb246341e82ebdae48818ac770b594cef7c3a695845a237aaa5701ce6b9 +size 27590008 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000079.vtu new file mode 100644 index 000000000..ccc08ab37 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bc41a620e3f7f7490dde517dc23b80e65ede1092c248c3ea4952e3fb2fe5432 +size 27590191 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000080.vtu new file mode 100644 index 000000000..8a56d4b3d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2ab7013bf403001bb58199f9d711f592dcbeb26868741166722506d82e949f8 +size 27590352 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000081.vtu new file mode 100644 index 000000000..f0b050608 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e2c4f19f90396cfde991d759bb72a4652de6a73d239b8e1cdc69aab39368912 +size 27589993 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000082.vtu new file mode 100644 index 000000000..52ad5a88d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a935cc2979ad5445c3969639feb9ab6cfff61c8613c9652d5e3d06cabb97fd09 +size 27590427 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000083.vtu new file mode 100644 index 000000000..5d331110d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eb1e7ed49ea1f3d7f4a9db176419fbe2fbbcf8c771ca52ddeea4a21d5766e66 +size 27590308 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000084.vtu new file mode 100644 index 000000000..238fd5bcf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27723db72fe7b18e235a1503fb07a61fe832ad79215a0f57a78773c496357f14 +size 27590218 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000085.vtu new file mode 100644 index 000000000..8cdef53ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f57bb2206d488e7a2cc48e0edf2aca5e8c5dd715cb264cab383d0bb26f126f40 +size 27590479 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000086.vtu new file mode 100644 index 000000000..7d0f0649d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87eb5dea5554ab3f62bf964d637d27a3414b8ca1df5a5d3b79ae95f3a63f2454 +size 27590299 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000087.vtu new file mode 100644 index 000000000..5f84e9bb9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c1f0cef74a447261259fed24d44bde093c3e7e3de101802b09590056a5e1e4f +size 27590136 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000088.vtu new file mode 100644 index 000000000..e9bb9bfa4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cb3c4fe4d6589f80ef61a8ba5bdd81e3c2e9852670515b78c1310c1a9ef7c5b +size 27590653 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000089.vtu new file mode 100644 index 000000000..3118abdec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0461de3dc5e016a1964c05527fc127c1b5165c04ee930374fda45426bc29a2a +size 27590646 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000090.vtu new file mode 100644 index 000000000..921116b42 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a592cd8d1aedf904649b4f1a4daecc866f7a536cc3a949f1ac13e59f5f5208e7 +size 27590328 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000091.vtu new file mode 100644 index 000000000..6fe543f88 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc14407faf20f0a3db665609650a349a417eb19984d0a20404136563b4e5f0b +size 27590649 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000092.vtu new file mode 100644 index 000000000..676d739cf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:399a61133779819f3f3f395a40ed4b52b26dbf6ca4bcf657b022ca9925f0ba78 +size 27590351 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000093.vtu new file mode 100644 index 000000000..c90ea51b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94b6ef2137ec945da7fb0d9623dd00a9cc713ce7ab1bea1fd80f4e15d537f575 +size 27590813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000094.vtu new file mode 100644 index 000000000..3eedf62ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c828b1437b6d84457bf0dcb61a8b722673d6d45ebe05a9026519e996425f555a +size 27590775 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000095.vtu new file mode 100644 index 000000000..5ca00755f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04a272665507fc7df70ee6a6b521160b8e31ce671b07bfc843c9af8ac82ca54a +size 27591069 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000096.vtu new file mode 100644 index 000000000..00bdd4ec9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75a4c5afd828452c5bf621ac06d2532a19fa5f590f310342ab8c00a50cc85989 +size 27590185 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000097.vtu new file mode 100644 index 000000000..47317c3d5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c4ada1f8558f1d73f2c4aa3e3508dcbd96b5e31f4673382f14bbce895fe4915 +size 27590074 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000098.vtu new file mode 100644 index 000000000..6e1fd373a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f18446eae45965f34fdbda5e9fa9492bad874b9b66ed7b743dd77657d952f25 +size 27590589 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000099.vtu new file mode 100644 index 000000000..b246148e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c4c78e5ad554f56eca17a12003412e8df6b0ac316e13b2457c60f84518b1a9d +size 27590565 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000100.vtu new file mode 100644 index 000000000..123d64068 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6cf49952cf12632b9258270cfdf827d52f76ac876a0741e448039919651ffeb +size 27590751 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.series new file mode 100644 index 000000000..df5cc981e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbf46c486cd7847daeadbc0ab2d5b91e3e5409aeda2ae0a67a2cb07326596db6 +size 15988 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-checkpoint.npz new file mode 100644 index 000000000..fe3fa2303 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fdfece718fe857b6f7a619320ec6b140e49d7bea1d5f1edf13d35b45528ddf3 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000000.vtu new file mode 100644 index 000000000..dbdff2c73 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c212316f76493a2e2fd87e614c46a0c6c24a4519d6d81c4e9e3fb86d6b8aa59 +size 27589928 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000001.vtu new file mode 100644 index 000000000..e0c7a6836 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33d1ff4a195c5dff5bbe1ac542eeda684272c7d36992980a5d3a1c7465a8ce4b +size 27590357 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000002.vtu new file mode 100644 index 000000000..0476ea22b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77d6bdb6997b4e29dfc54158df2285098803f87266ef0bd64afebe3958df0c28 +size 27590975 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000003.vtu new file mode 100644 index 000000000..12478bc28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:603a214fc062a0b71af148e0c80cb8891d660dd4aa37ef032f3d4634c0a4f6c2 +size 27590805 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000004.vtu new file mode 100644 index 000000000..340d15269 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8945de88f391ba468a1f071d2ce24f729f6f83e4b4d37586920e7dd4c64d162 +size 27590460 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000005.vtu new file mode 100644 index 000000000..da574f3b3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f91622f8f4c4442a25c76ea8426caeee868916dce2d19fce1a83585a6b6b4d0 +size 27590287 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000006.vtu new file mode 100644 index 000000000..5eceb535d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cc9b63c0edb1b9dda10ce1afee13b8b18e1ca9e13e12e9c3409cad8c4f4650a +size 27591172 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000007.vtu new file mode 100644 index 000000000..b47bdf49c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f508b5138141d80009dbd0e0ea6be17eac4ff8d99c65d6b01ca30b9580baf2ae +size 27590867 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000008.vtu new file mode 100644 index 000000000..b91325807 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dde2b82574c57073219acb4b106d86eda714e14c87a53a40569a8d20b668ed1 +size 27590417 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000009.vtu new file mode 100644 index 000000000..af130072d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e31b085c1a9b7077a48f418d1678eba08569e1830966320d2e94d1711293ee +size 27591079 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000010.vtu new file mode 100644 index 000000000..0686331cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:446208a0e8c4777dce12e929296686f22b661a953c984d92eb0d945e2b02e825 +size 27591021 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000011.vtu new file mode 100644 index 000000000..7ea635541 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e88ab9b01d9b367c9dd3bb61087894336d97bb5d4f6a1ee87e212a9daa6ebc50 +size 27590934 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000012.vtu new file mode 100644 index 000000000..4cac6e08d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8fafc33f79b135d7b1d6c3da227f6e35b6c832b6cc16e094258d763931503f7 +size 27590974 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000013.vtu new file mode 100644 index 000000000..a0d118d6c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54b57f80156927f7ce15f89690a96a1c38035f4813dc2768d1379dc44564d13a +size 27590528 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000014.vtu new file mode 100644 index 000000000..d27240a44 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8b66d2319570bef687b01c7de5facd57f995ddb806d54a2b885e2fdad8fdb65 +size 27590558 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000015.vtu new file mode 100644 index 000000000..92eaa613f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49bb14f2aa7a277e041fcbff8a28487d999784de573309ce2696ff89090f7ec1 +size 27591140 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000016.vtu new file mode 100644 index 000000000..669ff8c9b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:914787f730325dcc9b7e25a24746fd4e8cff180e55485fd492762eb32d21875b +size 27590739 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000017.vtu new file mode 100644 index 000000000..e5e60c12f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fbfb2c6fe35ba205ca8a22f71759ef74af12a7950245216d9b80892779bba52 +size 27590371 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000018.vtu new file mode 100644 index 000000000..6d3ec780d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60d5716440e11a0554a6344c0c1b59238f773ca68440750073694ceeba93d776 +size 27590587 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000019.vtu new file mode 100644 index 000000000..4a224b647 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c30a19bf4aa7ec5837bbc54903cf38688015ef1d8da824b1fe887f394e7fba9 +size 27590625 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000020.vtu new file mode 100644 index 000000000..9cdbf6385 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29beedd0fe1afa89fd8330bf6567307a2c1c2d382d8186dcdee2e5659af03e83 +size 27590429 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000021.vtu new file mode 100644 index 000000000..ff97adc30 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc7fd9fe3f21ca4c90675b990888072391dc9c07054a3ca3015effd5a43ca23d +size 27590135 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000022.vtu new file mode 100644 index 000000000..7841d44e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a8a3d8195d75ff24aa4ba309505f8303af1b2245007abb3585b76887d8986fe +size 27590560 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000023.vtu new file mode 100644 index 000000000..f937c44a1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0517ac997b7df4c7f2a76049760aabd1b7864319420f3d505625e12bd025db0a +size 27590459 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000024.vtu new file mode 100644 index 000000000..8cf51ab55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14588bb63690e641c66da2c8439fa86d06e7edc1a8cfb49a54c112ebaa544a4a +size 27591308 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000025.vtu new file mode 100644 index 000000000..ee89179d9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ca29d31c5c0199411b429b0177d9266aa3ae7137e668669e86a602b7b9eff1 +size 27591126 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000026.vtu new file mode 100644 index 000000000..3cc152d8e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8ad6569bc68000de94b641535f8b21a24890560a5f45517e8fffbc12962cc67 +size 27590915 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000027.vtu new file mode 100644 index 000000000..9e7b38184 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2da12850ff9db90a5e7cf15cb66f0e66ae27ab94e1909546849cd211d3931b22 +size 27590732 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000028.vtu new file mode 100644 index 000000000..e40c07a54 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:527ada8a50b9a278d790b9deddf0546808d81473b370e865b183778afbb8fb4e +size 27590508 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000029.vtu new file mode 100644 index 000000000..2954d5140 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5393a02a8752af1e820b233d7f1e71f702e01fa664860c01ba5c39c94ead687 +size 27590599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000030.vtu new file mode 100644 index 000000000..fc07a19b6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5aa9010ffb35a9f280ed092a444c466b74c778991c4d20356ae07eb8ac5eafe +size 27590309 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000031.vtu new file mode 100644 index 000000000..6b6adb60f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b9a34bc8eea9c6915b273c6ccf1956b1dea2764557af56b22a097dcf9c7642a +size 27590930 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000032.vtu new file mode 100644 index 000000000..75b7a3c7a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57cc9e2b2093af5f6b65294cb04291852082b9c769fe0bc58234428ff139bf47 +size 27590883 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000033.vtu new file mode 100644 index 000000000..616ec6561 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d848fd5aa31168e2d1413397e23d6dc4bd7d6828802c361d6db1ee019ca890e +size 27590879 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000034.vtu new file mode 100644 index 000000000..f4dbe87bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19f4f3c412861ca478a4e6eebc444a95ad0e0c873cab0b6327072b577be3129f +size 27590486 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000035.vtu new file mode 100644 index 000000000..d8a7980de --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d15ce4e9e1078ccd4f829f8a6f593942b245e9dbd4c6672c0b0ae34037461ff +size 27590337 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000036.vtu new file mode 100644 index 000000000..088fb48bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2607961631c5987009434ec619de79a1ebf0aa8e740513176a67f8a3cd73bb53 +size 27590339 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000037.vtu new file mode 100644 index 000000000..d691da4ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff56adbd35ff975363af40ba3a15ef6154b933c56673a74bd05eb6a6e2db2aa +size 27590168 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000038.vtu new file mode 100644 index 000000000..5ce92515e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8c6094e1794d16a1b1cbee3988dbb53f9af51ee34b7b6e324302ff116dfb75f +size 27590901 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000039.vtu new file mode 100644 index 000000000..885765b48 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f116fd3c8f9f859ef374689299cb128e4c2b56990793ce597b3ffc8a6a512ae +size 27590733 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000040.vtu new file mode 100644 index 000000000..099b2d8d8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50e7875fc70d5bff4a50630447399cf0171cec4c7a7070e40b10e526062d65a2 +size 27589849 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000041.vtu new file mode 100644 index 000000000..606705e7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae633b04e1c76061b061bda339712d782d0b340659a45bb20a2e090152386f6 +size 27590231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000042.vtu new file mode 100644 index 000000000..5030ba07c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d9b1a9ff483c5f5e095f6f6d1e4fcfdbaab74b84d7cf466bcdae14e7b6434c3 +size 27590381 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000043.vtu new file mode 100644 index 000000000..68402570a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59ef7bd51c7e5ded91ac2c946c21d1a7ec84292663305627abc5fb319b113404 +size 27591102 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000044.vtu new file mode 100644 index 000000000..1a48b7053 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9890b910c4f52529cd1153bc8b321981fae518759b80ce6e9e4ef135a9bd4f57 +size 27590487 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000045.vtu new file mode 100644 index 000000000..625e5f081 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:656325018ec806335a5d57a1a682a7e2fe6e399f6d815b340238daf64c196f65 +size 27591328 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000046.vtu new file mode 100644 index 000000000..92eab77f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6bb2c46f85e977bfd8ba74f61d6824ec9539fc29db7aea599a8ba36ecdcef89 +size 27590386 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000047.vtu new file mode 100644 index 000000000..c5a4acbff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d6331386a0ef0606b57dbf1c74f6872a5da0432ddd425c3d9b56c754ee819e9 +size 27590538 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000048.vtu new file mode 100644 index 000000000..d96a6477e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c42af1639ff9e7a3ded48b98faf579177a6fa371913a9056666acc68f9833c51 +size 27590772 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000049.vtu new file mode 100644 index 000000000..373498d00 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3cbc481896b8ad295b8b1fdb90be5d8f8c58febc07918752a1f53ee09d2b4cc +size 27590628 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000050.vtu new file mode 100644 index 000000000..a8ba45716 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b6b4ceedce1cee0b2184ee36c2762be01af05d5188a1d9ffbe93c64e533a2d3 +size 27590738 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000051.vtu new file mode 100644 index 000000000..1159a5a1e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d31ed84dc224e3e13a96ad9586de54692665bbe38a7b3dc8128bea03b4c4cba2 +size 27591452 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000052.vtu new file mode 100644 index 000000000..a15f626a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbcd206c50b863fee119ae129fa61dbd98437adada9ed616c433ebc9f3e8202c +size 27590264 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000053.vtu new file mode 100644 index 000000000..1888dd768 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8df8297076f712bc6fdaccf1d11283c0c0486b5e6c41268f666d48076b6d8a72 +size 27591078 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000054.vtu new file mode 100644 index 000000000..48fc2c9a0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6354a1fe78ecdbc53eae77fd5f40823ffa2f6695e1afe253ff5edd0ceb107fcb +size 27590373 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000055.vtu new file mode 100644 index 000000000..b4bcb2396 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a1b257333ec26f78ec814220750342109c7e0585d3f1c286c24a50be014836f +size 27590863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000056.vtu new file mode 100644 index 000000000..bcddb35ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dde5fd09ed79bee1e8cb0ef1448391577ef56788ba38f5a9b96a595a0aa15549 +size 27590748 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000057.vtu new file mode 100644 index 000000000..b75d9ebd7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a905176e768940412f3cb246673628e77da277bacecf82eeb0c37f0cd4fd483d +size 27590667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000058.vtu new file mode 100644 index 000000000..f143a1c8f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7917b0a45d0bcb23e88801245c957dbf939a77921d01708522810f570490e63 +size 27590448 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000059.vtu new file mode 100644 index 000000000..f19bb2af4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66ac8e2431f0f3e20a0c1872df6b7b00f87a02c1205b6bc1ca8dbbb83528c6d6 +size 27590474 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000060.vtu new file mode 100644 index 000000000..7a85c7f4e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:589c8e01413735769196fb97c19ff242cbf165b6cab0ee4689a103d0995e5c8f +size 27590087 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000061.vtu new file mode 100644 index 000000000..dccecfa11 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b980d9a1cbd52575149a1755b74222403fbd8a1e5dd5b8baeacf7d6d584a6c +size 27590652 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000062.vtu new file mode 100644 index 000000000..1c067a007 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e027080b05573bf7578bf9c8870b9a317fffeb808574fcab76bc365cba06ba +size 27589806 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000063.vtu new file mode 100644 index 000000000..2601b77b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd71a7fc248dafca3c27b933743c9e47e4c153d293dd76fe663dee3e8f01f9ef +size 27590438 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000064.vtu new file mode 100644 index 000000000..bae67417b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c73f672b49ea3e6ff95479010cf7e0572474b362e3c535c6b72d854665d069b9 +size 27590975 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000065.vtu new file mode 100644 index 000000000..ba5050491 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f6199d9424518bd24e1ede146fb3828411b313e5d45d43f2c176060e0552c77 +size 27590498 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000066.vtu new file mode 100644 index 000000000..bbd6de6b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:298213b737a594f44e1d4894cf64cb9632fc8756846b80eebfb1151fa26da1c9 +size 27590500 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000067.vtu new file mode 100644 index 000000000..e388acfcc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15d20f654333ddde1e4ab7514d2de989726b0471050e028d5794ffafca4fa082 +size 27590616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000068.vtu new file mode 100644 index 000000000..223cb328b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f217274145fa9cab7c7042cf65e215b8c828af4afb15a37f2ce3699927306d5 +size 27590297 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000069.vtu new file mode 100644 index 000000000..298936e38 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82b3a3c091f5a465ddb88d10425f6e5a6b242812f4ce2c697ac2bd71afbee4b1 +size 27590307 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000070.vtu new file mode 100644 index 000000000..a64109dcd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a20a186e40be7ba60808441685724f0fdcaab30a544c67b2bcef19da7e4b12ba +size 27590982 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000071.vtu new file mode 100644 index 000000000..418b91367 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e3d353d58c9866f9a1711e793569afe6c58cee783da4c715a2ffa77854d8561 +size 27590618 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000072.vtu new file mode 100644 index 000000000..23b2075dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.d/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a808d1e3748740753bc01062cb64e25837c1e3af8bb5fe52afb599c3b8d0643b +size 27591201 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.series new file mode 100644 index 000000000..50e0307a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e718688fa857eab3f33ed9b96fb28b4d571fcb2abfe760b2ec508bf574919ca +size 11709 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-checkpoint.npz new file mode 100644 index 000000000..2665d3356 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02425892809966c7fb71fdf794121974fb599fe917b337ba74602f4408eec6ef +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-checkpoint.npz new file mode 100644 index 000000000..24a57c6b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0089914c771bb6dd492a995ebe858836a0af636056c923d858192d9c0c38742c +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000000.vtu new file mode 100644 index 000000000..e02ea0d2e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cd2ccaddea19cf1e747ba0583e74481a90ce653a4aa787f41db9b37e4d37930 +size 27589572 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000001.vtu new file mode 100644 index 000000000..7f5679f2e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5041f79e2eeb6f91338fa30b1ca86c4cbb992f1f4158588f0019a5e48c018577 +size 27589290 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000002.vtu new file mode 100644 index 000000000..3475b0faa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8183ecb11df35c9c2b20941ad36306c005b57497dc4838dc34cf046997f73dc7 +size 27589845 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000003.vtu new file mode 100644 index 000000000..aaa733749 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b969a8cadf00e900c022f67818a5940f5a46c7d1de515095a2915be904f6f97 +size 27590082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000004.vtu new file mode 100644 index 000000000..c7d2cf45a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7beee54b8ffaddac020314e0926c170da6d9d42edc28c0efb05bd905a72dea21 +size 27589587 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000005.vtu new file mode 100644 index 000000000..76c57e86e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d802630887bee62180d65eb2c2c0725a40031f9e9985ec2c72bfb59cd40b25fd +size 27589793 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000006.vtu new file mode 100644 index 000000000..26205c56a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05cae0245a6aa64261fb7d0d4ae5d97e72e5d45fda13a43f222fbd7d8c14ce3a +size 27589690 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000007.vtu new file mode 100644 index 000000000..765503def --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:facaca39beae7214a18da235c1c60eba4cb96cfab4923b8bd88a7dd23ff1fa62 +size 27589849 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000008.vtu new file mode 100644 index 000000000..515525acb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e58a32ef4a8afc27ed3393f722e19ea578bc2d3472848b1801697571e7eb88a5 +size 27589928 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000009.vtu new file mode 100644 index 000000000..3705ec775 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06076a30214760dea7c0215246a01b607d3fcfad1638ba6632d95aaddad4027e +size 27589290 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000010.vtu new file mode 100644 index 000000000..609c24837 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed6d1137ccb18ae54e0db44b59bf5b31011eb0a9e1cd0c7a9720387f13fa8427 +size 27589779 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000011.vtu new file mode 100644 index 000000000..b33faf6a7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:543b3b3d609ab2c058cfb9dbba35a01e185601c97f533b232d133d80e9587176 +size 27589518 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000012.vtu new file mode 100644 index 000000000..21d44593a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eca56c762e5f95a72d0925e1fbb8495bb44da63689ceb2b6fc1b7612fb364f0c +size 27589806 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000013.vtu new file mode 100644 index 000000000..8f6182c35 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19a7af7b6a97212bdb5d8d906d0900735a258d6ea5dd7c2a3bef9ff4929f1b86 +size 27589861 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000014.vtu new file mode 100644 index 000000000..dbdb1b3ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f88c31e457e19f908ece9fffb081e904a16701afda912cf9e053a375b2765960 +size 27589356 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000015.vtu new file mode 100644 index 000000000..a1fb7d7b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:431e3d5e9fb454790a1e0d4ebfce62103ccf40ff0230fb28aa0457abec42a4be +size 27589349 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000016.vtu new file mode 100644 index 000000000..5aa452397 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2399cfa0db52fb84bfdff3113ebf7ec30d5b651699cf347c2ef0df701fe7892f +size 27589796 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000017.vtu new file mode 100644 index 000000000..2b2423f19 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:762f2af4c4c55be3c6dfbd5b423a194dcb4739f18cf9a40afd03bec0afd5c0ef +size 27589912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000018.vtu new file mode 100644 index 000000000..88244fb61 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:728f94a913f5f2ffdfd53965da6f6f3fb1c6dce4deceb93e0949a79b8cd15f4d +size 27589966 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000019.vtu new file mode 100644 index 000000000..760a45e21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d38a8dcaf874088fab4605dd12cf6064355cb0363956710af403735b0c7bf4f7 +size 27589452 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000020.vtu new file mode 100644 index 000000000..30130df4e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:382f7ccef272c857eae809e6ab9b6f92343d4b6211402d737c70742f2a7d4630 +size 27590259 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000021.vtu new file mode 100644 index 000000000..977cb46dd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cefdaf295d78797724abf1462812d609fb5a6158d52d486456b06e2827808987 +size 27589354 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000022.vtu new file mode 100644 index 000000000..ea3b9d339 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2ffeb4ad8d3c1d3a540bdc71332fba863d51cd56bf9b338f4319056f4d8a54b +size 27589661 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000023.vtu new file mode 100644 index 000000000..c8f136a54 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a090e804d2ab5e641dfde87147470a5fdc86bfe1678847c2774f8ad7706b1fee +size 27589738 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000024.vtu new file mode 100644 index 000000000..f201541c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a71dd54d80d1c2b5061b02e9f8d8217a062c01e0499e56e93b74dba729c1ebd5 +size 27589733 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000025.vtu new file mode 100644 index 000000000..57bb5683a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d8a9da952ba7d5000b4cf16deb6fd386dc6222fb933628f29b56ca4f888223b +size 27590050 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000026.vtu new file mode 100644 index 000000000..a7a9862e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d55681086968ac8932b49ab5616ca8c12b74c39f14d8da2db050480e685b685 +size 27590082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000027.vtu new file mode 100644 index 000000000..e8ca9caaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:944c93db6cf9aba1ae8568dd1c1682cca7373589802349591a72631af9b680ca +size 27590151 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000028.vtu new file mode 100644 index 000000000..0a709dc58 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00a5ddc72ad6065c926dae9719988a4f05809d310ba631646e9ccf7a83fb619f +size 27590121 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000029.vtu new file mode 100644 index 000000000..29ed4e39b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6ebbf586ad8dc15f0e31d6e4b0fd844b64d0c89935e141b9e96ee6d07fb3c79 +size 27589538 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000030.vtu new file mode 100644 index 000000000..72eca9664 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f768089cdf673763a12f3f1530379a0f61d2fd5dad345c7549a57e6d2ad319bf +size 27589647 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000031.vtu new file mode 100644 index 000000000..d39c1aafd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893cc6979c2d41ee7f3d3dc9d6304be0d59978cc506e3983acc3b67ad1673f93 +size 27589669 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000032.vtu new file mode 100644 index 000000000..4e45af24d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e4d383d56ca3e56a4ac89e5abb32580ef7245e806897758240e3347bc6feeaf +size 27589786 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000033.vtu new file mode 100644 index 000000000..f5a919d45 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:745509c3ec9f50e8dec4fc4421b8781fba077434399f9fcb2dad994ea456872f +size 27589995 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000034.vtu new file mode 100644 index 000000000..8af06e4eb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0c8bb1f01d59763e6b7267e12bb256f3bb9d6e41d176127b71bdabb05d7061e +size 27589835 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000035.vtu new file mode 100644 index 000000000..c260b1a85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cccffa518fdb0e5491669b9bce0884f82ee6cdf821d31220f352e71a0007b219 +size 27589602 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000036.vtu new file mode 100644 index 000000000..0c8f6dc8b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed6533de9fd08efe8a2aed19f36ebb5c0db3efa53949223322301bd7515f9117 +size 27589839 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000037.vtu new file mode 100644 index 000000000..5e892caa8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:789da10d5f5485711c4d8c4c365c08ca50ae2011169a631a734893787e745531 +size 27589509 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000038.vtu new file mode 100644 index 000000000..b77554040 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1df2bf71ce76722c859a418dec72033276154a751e4a326665de14dbb98a7a8f +size 27589861 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000039.vtu new file mode 100644 index 000000000..cd16e538e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:108bddbba368ae5523b37dfef955d4915450372484bf2a7dcc64d5079c38c3c3 +size 27590484 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000040.vtu new file mode 100644 index 000000000..c217db730 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1064b8ad2573c9149cbaef6a000428968c51ecc7369f22745215a0979f26f70 +size 27590039 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000041.vtu new file mode 100644 index 000000000..655fdd162 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48451ab890dde9cea02d5f591bb9e602c33538dc00fa3c4b92fd50206599b48e +size 27589936 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000042.vtu new file mode 100644 index 000000000..4cd39a454 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c9513f11269be7b4472ca3f36e9c8a245b00ae63c98bde5cd4c98d2e2a89ce9 +size 27589106 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000043.vtu new file mode 100644 index 000000000..baa0b5de4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e708adf93686d3977fb1dc611eb7c2f6c1182187bd19f5bf7759d262f43b20f0 +size 27590375 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000044.vtu new file mode 100644 index 000000000..cdee0f907 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68e9a3d2acf842f3694313f0f677f172dcb099dcad1b88f2ae45c2e1d0919eef +size 27589465 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000045.vtu new file mode 100644 index 000000000..8f181d337 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:489951f6b430268d09ad3c1a8d09146b6b7840e1c43092477db050b885a44d40 +size 27589974 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000046.vtu new file mode 100644 index 000000000..6e9366b28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73b41394d24132ee74d43c085fcda66d6badf30d2a07ad7c1d074d04d0d1fd1 +size 27590022 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000047.vtu new file mode 100644 index 000000000..c515bfb0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd719e02b18c0246df53b75e33656169ab7b27359bf9a09c557ae1e501758a2 +size 27590110 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000048.vtu new file mode 100644 index 000000000..828a00f00 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad2c0bd24a12bc0eb92605c141437d347ba9d3394181ba0af6a9790d58218c68 +size 27590189 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000049.vtu new file mode 100644 index 000000000..b771903c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08b15c502533bedf6cde092bb25fa70aaf35a9e1310188f25f277adbfcbeae9c +size 27589405 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000050.vtu new file mode 100644 index 000000000..1b21f423d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df59f5ac3880b482c1bd16f0f7bf18369a9aae07b81d4f0a3c03641e62e7eb29 +size 27589326 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000051.vtu new file mode 100644 index 000000000..3fb543efd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cfea91c5d52ff12cc06401e8cabff5009ca517554c3bf397d1e2ecf87797092 +size 27589764 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000052.vtu new file mode 100644 index 000000000..f3f2c4703 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c47d6c1b257cdc592e68d6b21b2003d856e39b721b43949c8f4dc6bfe3cfe3b +size 27589792 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000053.vtu new file mode 100644 index 000000000..eb3ebe87f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0745f6035222ab5fae1a5493cbc1505d9e534e6a05be84ef341e270cbec6f67f +size 27589542 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000054.vtu new file mode 100644 index 000000000..8035e7cd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51bb59a7cb20c37c9f63c20edfe8c3a29a4033692c24812301c9d978fc2e0902 +size 27590103 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000055.vtu new file mode 100644 index 000000000..647b7d0fc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f0d334d730fca411e713158340020fe4029d1962a1bc6b471372d458b26cae2 +size 27589892 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000056.vtu new file mode 100644 index 000000000..f65f4174e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cdc50a25663e584565c9e53674c65257ecf20e3fa95e9de6b583a20be8ef387 +size 27589983 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000057.vtu new file mode 100644 index 000000000..ab46b6261 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9edb67551cd5270e116f90541f9db491a2b9693afe008b88038a72a04e8d325d +size 27590015 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000058.vtu new file mode 100644 index 000000000..bb0cf8508 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66c822d1c8d71352324f07d3af520220e2fd104a3924f836ecdf2ee0900caaa +size 27589367 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000059.vtu new file mode 100644 index 000000000..209dd7f4a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43249bd5a544d94ae9d5c91c22f706d3900fbb787bb2446629e3d77516bf58df +size 27589640 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000060.vtu new file mode 100644 index 000000000..6a8369d8b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:061d41a1e5793a55f0e4679b3f71f2b0431e6e05bdea2d848c73938758b0b149 +size 27589190 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000061.vtu new file mode 100644 index 000000000..c7bf07269 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:774959e837cc716b0bca4fc92a11427c0e94a623bcd57b711f0795a090ac4d65 +size 27589426 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000062.vtu new file mode 100644 index 000000000..5bd114fce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74c31d7416e191a1b1a825bf3bd2cfb1d29d2e3f769f7d605b13a636ff27888 +size 27589443 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000063.vtu new file mode 100644 index 000000000..f0faf2a00 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:784e3a1eea23da2caaba5b067c7111a3fb702f1a9d66569526dafa3c2a7be792 +size 27590318 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000064.vtu new file mode 100644 index 000000000..aad47de7a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1aa23deca5ebd914eb095c57d69c37aec446d9adc8a62c8650dd561d1cdb7b7 +size 27589783 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000065.vtu new file mode 100644 index 000000000..8d6bff55a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72aa973b0659a8fbfe2036ad147dc5b9efadb744bd1b3a4f682cc8938a3df3f0 +size 27590321 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000066.vtu new file mode 100644 index 000000000..d97ce553f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48dc0fdddc56b916e4d88b1e00576683f78be9f9de281d2b32c3ee50caf06cf1 +size 27590171 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000067.vtu new file mode 100644 index 000000000..4ca988f88 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb42f579a979fbc71bbc58020bbe1c22be1d9a1c17d6ea59254b56a156cdfcff +size 27590298 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000068.vtu new file mode 100644 index 000000000..00f193c3d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e5c31481a9e5ec909218043ea8925c16e1d2a83126ed338ece5a3e506bf03aa +size 27590251 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000069.vtu new file mode 100644 index 000000000..3940c0d2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2983f1b421e96d206c3d584a92a5a9445f13f936c626d6ce4f6b59eaa60084c +size 27590674 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000070.vtu new file mode 100644 index 000000000..8b68f4509 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcb2260791a7cdccfbc4864aeca7c7be55d2f849629b5a611267ac07d2d955c1 +size 27590595 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000071.vtu new file mode 100644 index 000000000..6239e8580 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cef080d4425a6d398bff21554e03c9a6b9ec47ee6e13b3fabc5bc1149337932f +size 27590457 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000072.vtu new file mode 100644 index 000000000..b76012ed5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc47aadb4831276d623a5ed08bbf42c2775eb60b80f1c9a6c2ff25bab86b0bff +size 27590793 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000073.vtu new file mode 100644 index 000000000..6457764c4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a3dcca624e1dc0031d939192e806b56481c5b9e4060056a15e7093f8d9836c4 +size 27590408 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000074.vtu new file mode 100644 index 000000000..9ae0cb6e7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c76570244373acfec83ef60ce6c646b546792e24fb83f2759d0f5df5d4b0d1e1 +size 27590805 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000075.vtu new file mode 100644 index 000000000..c54c74fd1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7064c8b6b714c20c19b677bc34aec9f6a9a3a01abab621e11774710ffce50b7e +size 27590757 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000076.vtu new file mode 100644 index 000000000..93ccc49ad --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27c47258b3c9c0c4e53efd291930c97b0d7823d1e51c2ea27fce40172443b61a +size 27590630 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000077.vtu new file mode 100644 index 000000000..9d526225d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da9400274fc83b69cbac9f35732c2775a400c33c912f824dd4aa1f4c6c2a28de +size 27590783 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000078.vtu new file mode 100644 index 000000000..cb54dd6a1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5eb648bff90e7fa52ec40e2df648163edb9ef6ab19541524826ed972ee4f3fb +size 27590212 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000079.vtu new file mode 100644 index 000000000..e11ba8070 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0998626a374dd3da474d1823da7c615a8e579607bb31ccca972f92bd974abe56 +size 27590187 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000080.vtu new file mode 100644 index 000000000..0227c4e5a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b77f577ca0abaf6527c7a480d3c638f82c4a6b27964c23d64b4a7ad374df7c14 +size 27590594 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000081.vtu new file mode 100644 index 000000000..8c93f51d2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed470f2bdde9f455ddbeed631c6b57f4d9c58d49fbf4684583277aa7a9b1bb33 +size 27589892 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000082.vtu new file mode 100644 index 000000000..c929a2053 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb41b1d708911c21ce7afde4a62bb4881ec541382b03d97db3166bd8d744de54 +size 27590327 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000083.vtu new file mode 100644 index 000000000..ef78d5d1b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77380875d1f5d69f3518c3c778b91e4b38820b09ed27625448d5c88e11c4c5f2 +size 27590187 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000084.vtu new file mode 100644 index 000000000..d610dab2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3227218cddd69e5321b8253acb41ddd73e3fca85da898a6a7be5ed292455b618 +size 27590724 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000085.vtu new file mode 100644 index 000000000..5658bf826 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8de130ef295ba1dd5a0b18d52c1fd9cccd69f64972668dac9c1366fba5c4b78 +size 27590002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000086.vtu new file mode 100644 index 000000000..414f5c874 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c51ca50a5e674c88e78826839e309624fbf35bce720d7ba9d4315ea690e443cc +size 27590002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000087.vtu new file mode 100644 index 000000000..cfa0d0d7c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f8e24acad86d62e53bee84dfaa49ae2a79ef4a982d42d81669c39f02f3d7ddc +size 27590465 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000088.vtu new file mode 100644 index 000000000..89d1bbe96 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:affd9eac0434b0674024db4190a6be8dcff1a17515fa5fd4a44272c60cacbdd9 +size 27590176 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000089.vtu new file mode 100644 index 000000000..f9ebb9eb6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:155f5e1486e2145ae0587c2364f35a3b784edc1b2580f9f55342c98852411956 +size 27590346 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000090.vtu new file mode 100644 index 000000000..1322706b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f335563e221ae3b596dad8267f61cf70649b60c3f282dff6c3f67b02f7e259b1 +size 27590528 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000091.vtu new file mode 100644 index 000000000..2082f94df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d9bc3ec0ba2711a50bb7ce2f57909d77c2632ed5339637ef9d798d1da70674c +size 27590092 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000092.vtu new file mode 100644 index 000000000..595d85824 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76e5590a520b2b3c93ef63670df69f80069068fb497cee2321873b3ed1391f1a +size 27590266 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000093.vtu new file mode 100644 index 000000000..e09e98a25 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:903db6604bbc1dfb08b083f41b3b8c6d4db660c72a3b36e0398d7a4c90efd427 +size 27590721 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000094.vtu new file mode 100644 index 000000000..12647b280 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:937d6d87c11420b218c6295b95486c7fc8bff9f234020362cf1a38047ac84a3f +size 27590483 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000095.vtu new file mode 100644 index 000000000..fcd6aacb3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad9d4b03e6d57cff241f786331985aa0089b72036dcefc0943660e44c1bfa048 +size 27590623 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000096.vtu new file mode 100644 index 000000000..7011c4986 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc7792427f243e96ccd29cb3c34c343a587b2067d395ed0f8a2e8305c437a2f5 +size 27590587 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000097.vtu new file mode 100644 index 000000000..628d3dc85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:759fa4c0184ea94ca552712f130197ed865a72c6f14fadb7dfe1b95087d87d78 +size 27590545 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000098.vtu new file mode 100644 index 000000000..4abedc576 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9619be88ba9add0f623f088f441aca378e8db34402c645b1d5e0ed9a7b58624 +size 27590555 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000099.vtu new file mode 100644 index 000000000..9d6b99446 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d88ab6fe897a5ec08e45654df26829fd10518666924138a7aa99af317d07555 +size 27590113 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000100.vtu new file mode 100644 index 000000000..1110cc19c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a68049695414033862fdd31723d7545bb38ae1f7c057ce5f76c66d14153df8ef +size 27590606 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000101.vtu new file mode 100644 index 000000000..532b4b1ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:468ce2f6d5b56590efbeabdd1eb3271dd32eb3aa8d8f677e2f9db5c860018222 +size 27590689 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000102.vtu new file mode 100644 index 000000000..4af807f65 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f86d19630117656aa96cd6ba9c8088ece6259633af24ebafd6d712d25ecdb11c +size 27590461 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000103.vtu new file mode 100644 index 000000000..ac7e99938 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:764c6ebc3137a6b59c44d7b6b88b55ac9a5a8e9ab98a1d22b265e0e25750c541 +size 27590495 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000104.vtu new file mode 100644 index 000000000..6d4ef8e82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39a9a494621401a2db79ca4e8b17b157e65f2fea369d373996b24ad3fff42553 +size 27590050 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000105.vtu new file mode 100644 index 000000000..2f1cde800 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f7f348bdc078d746d82fcd15a59a5729299e1cb40f0800fdb7675843a3ac8cf +size 27589882 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000106.vtu new file mode 100644 index 000000000..62eb7d277 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60601965592dab7b633d2516b4a3974bd60167eeaca46773d440c02a732923fe +size 27589935 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000107.vtu new file mode 100644 index 000000000..b6924089e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d18ba1462fbc6bbd9d15f892834ecce981e9abc1f00305b4360e427bc11a459b +size 27590156 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000108.vtu new file mode 100644 index 000000000..425fe39d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b118a404c8470e4956cd77e6735eb0b924750d33010ae5e570facf3b7c493052 +size 27590822 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000109.vtu new file mode 100644 index 000000000..f8f7c76ed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05991e30cc03be9c4cff79d227038226ff6b108ab8989ee1794ec698e8b8c253 +size 27590274 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000110.vtu new file mode 100644 index 000000000..6f87cd919 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f640bdba71df50068615d67d1c4a3389bec8f43713fccd552dc4a4e7507d366 +size 27589597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000111.vtu new file mode 100644 index 000000000..85861f290 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81643808d7de3216126c6324e5ffe25960f99531e3dfd9012d5237706dfb9ee +size 27589709 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000112.vtu new file mode 100644 index 000000000..8a81f470c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7f28950b9b5e139f418a7e86cfb1928407e686b07936c6a10b734830db7b63c +size 27590276 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000113.vtu new file mode 100644 index 000000000..7ed0627af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb193905940bebbe0f46ac652c4eaee205e32c65e4caa2699bd1b576a1948efa +size 27590258 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000114.vtu new file mode 100644 index 000000000..39a499322 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2865aa65e7792593f3d3742bf897fbb01ffb301ba94fc00c4bfec588e000bad +size 27589877 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000115.vtu new file mode 100644 index 000000000..e8da67703 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d215140717e44b9e7e82b9f24ee041774ecddc4e39691b7d340730ff8f725bdd +size 27590408 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000116.vtu new file mode 100644 index 000000000..d93068338 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43411543fc5c68d9531b8e866322905e524c02bb758d6d1ed73bc4311aab11c3 +size 27590052 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000117.vtu new file mode 100644 index 000000000..66be05c9f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d4fe330cbe19f0b297a78e5dbef17613161106d7fc00036195764d8925fc500 +size 27589949 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000118.vtu new file mode 100644 index 000000000..6e06319ac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:084260a0a4b05ac0396f76364d28295746dabb19a0bb93dcc07e9ef83acadbf2 +size 27590037 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000119.vtu new file mode 100644 index 000000000..d17c14148 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff1c19244fe2acc1cf8853fcb21484f4a85eac4a484d7ca76c285d15be6f4345 +size 27590201 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000120.vtu new file mode 100644 index 000000000..8c21a9417 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ca7a44af87ba56dcf0dbea07a2fb19ea602358a76d92bd9a5b87d6e35aae394 +size 27589927 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000121.vtu new file mode 100644 index 000000000..07015da72 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73380c2139851f4b88aa5ea804a86611e99305fef3c1215772ed8546082fdeb6 +size 27590241 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000122.vtu new file mode 100644 index 000000000..4db2d132e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af2d678c381f10dfe301e042423982b083f7c266ad01f7e0f883ef028058b5c1 +size 27589880 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000123.vtu new file mode 100644 index 000000000..b11ab6831 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ca5098b92117c1b79162476e8703786dff262218fa1b474ea0625397d9d48d9 +size 27589857 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000124.vtu new file mode 100644 index 000000000..5ec3fcf6a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbe1dd42dd083195b0bc5a8f9945e48c999850d7a95aed4e1cf17e7fe49ab272 +size 27590058 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000125.vtu new file mode 100644 index 000000000..aa04753cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:085b83719b73920cec6047ddfb122e365397c6476868c85e00c59d96ae9eb7cf +size 27590120 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000126.vtu new file mode 100644 index 000000000..0f306bed3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4436a79a480f9885013a8c857ec4286796db8858ef84f9d55853e66792e129f4 +size 27590683 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000127.vtu new file mode 100644 index 000000000..250cd6cc1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97fd061ee203ecf3f4039f7d6e94990eb47db438f13d99ef8f9e0c7d37e17674 +size 27590293 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000128.vtu new file mode 100644 index 000000000..216f9bc77 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97f0e8897af56d0f9224a4b67d44b3a5fda477c6f011ac2f1cb5183e4451084d +size 27590012 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000129.vtu new file mode 100644 index 000000000..26a214c50 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0ab9036e2cb3d5912fb34f67d5a4fe38eb2a801dac1271f0ae233af99e4f086 +size 27589510 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000130.vtu new file mode 100644 index 000000000..e325ed8ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:737d07648513b917bc9035a52743807b3320d503e745b74745e6714eb5c80dc0 +size 27590075 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000131.vtu new file mode 100644 index 000000000..4d93e03ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:021c26da6dd9f781124623f6f97171698e163f0f99c642fd62d6223b7d811e0e +size 27590615 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000132.vtu new file mode 100644 index 000000000..8086000b9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1207c46d7c28cdd30f30e76c6e26d2b9d105dad0d1e4feee0b91f3873e8dc3b +size 27590082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000133.vtu new file mode 100644 index 000000000..a561ae48b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf8a21e46df44d331b083fcbfec78e40c93d1f2fb33a508beff6bf14b8a1b147 +size 27590330 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000134.vtu new file mode 100644 index 000000000..b6c54f80a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc4131da2ef149b2d4f021e76689611f87e7908c0fe4fd3d00bdd2906c113bf1 +size 27590118 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000135.vtu new file mode 100644 index 000000000..b5ed2c603 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:054426e5519da596b22e0b953fb162c527f1a6afadf53030505beda8f0927d21 +size 27590315 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000136.vtu new file mode 100644 index 000000000..3a72ad87c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:161f17080c3f59d89b83477c78f86fa99ba8d4f95b99e80fc95da4324723dfc8 +size 27590267 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000137.vtu new file mode 100644 index 000000000..58b249305 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35c5876877a4cbd4c0e47b5a73a2bf11ba186c315682e11255104a95f2b0c791 +size 27590423 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000138.vtu new file mode 100644 index 000000000..810ce9fd1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ad4ee3501861e4edc55632b0de0b1ebac5891dc11e95133168922a22d8455d +size 27589795 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000139.vtu new file mode 100644 index 000000000..87f898e28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59b759d6f8b6485ae3a84356b4e137bbc641b62df8aa19f17e7ddc7d65917532 +size 27589339 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000140.vtu new file mode 100644 index 000000000..60473c0be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34ee4abee30ffbb2820b71cf51b1199eb37592f70a8ca8cbd4b711328f21fd6f +size 27590169 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000141.vtu new file mode 100644 index 000000000..31f45f840 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08d78b02d71883d5ce1b2d87e816a5599e6d27e0cee55add6c0f18b9a78f5b9b +size 27590079 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000142.vtu new file mode 100644 index 000000000..34a9739ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c062405420c75879e97cfebda183ccad3c573c8316038b98a8f4711b14f50f1 +size 27590037 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000143.vtu new file mode 100644 index 000000000..3cfe4e0d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46448c44434160ad36e8590eeb5bc2c7a1226a54c7ddec9d88539924ad931428 +size 27589797 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000144.vtu new file mode 100644 index 000000000..5b7648685 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ae20dc06b9793f525845541746cbaeaae44c29f9a02adba6ccd4746017053f6 +size 27589827 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000145.vtu new file mode 100644 index 000000000..61edf6fac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec3682f589d72ca431fa1abf66ae300003da1f8089302b7242967a53e09ea46 +size 27589944 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000146.vtu new file mode 100644 index 000000000..74c420382 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:debbef2a752ee308318a8746fa6c5ddb599368a1a5cd0d272286db562beac345 +size 27590543 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000147.vtu new file mode 100644 index 000000000..0cfe2fa3c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd6b753f8e1d8393adad712486f7aa8a86e3c20a0d13e820591ba09abdf910f0 +size 27589987 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000148.vtu new file mode 100644 index 000000000..6849332a3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dd27898726c607de3be3dfa365bf4bd5f0bb1c16d32c1d60e7523382a142781 +size 27589525 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000149.vtu new file mode 100644 index 000000000..e9a7c0705 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b51ff636bed45a348559fa1524650cf53daba3cf564b3f5004375894abddf5ac +size 27590234 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000150.vtu new file mode 100644 index 000000000..96c5a405c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f900461ae115f67df82e91ca408d68e66f05df9219d27cd4a9d5f7a88764ac05 +size 27590104 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000151.vtu new file mode 100644 index 000000000..a9ec51758 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f44dbb9f13bda49d8445b439cf3e767b3180352ed58f2ed9e99e90fd0521e108 +size 27589927 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000152.vtu new file mode 100644 index 000000000..71f561c6e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4241f2d13faf018926ab3abd0224253d4f2febb72d7ee5fc405a4ea745e3965 +size 27590283 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000153.vtu new file mode 100644 index 000000000..cf18c6b82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18178a64481754939161b8ef5daa7d27294abfae97bd74c1df20c5c2639ae8cf +size 27590857 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000154.vtu new file mode 100644 index 000000000..69a7971ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00a0e8472f4ee6e25a9e6e7836d402be5a98e871a884a1e3fc694eaa219b19af +size 27590494 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000155.vtu new file mode 100644 index 000000000..ed5cfbfa6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee8edffd2c85e0e173744f24717cbb9b597059655fccd7186cf488867f6c0545 +size 27590006 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000156.vtu new file mode 100644 index 000000000..7af2045c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed74c6a8fb52b3b2055f15ba8a45b22832d05d58da7d44c8d87a3b826fed1d5c +size 27590147 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000157.vtu new file mode 100644 index 000000000..351b483c8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aac01e91b1548a27bda6513395709f75280d9f4f26169c4844af900289258f74 +size 27589888 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000158.vtu new file mode 100644 index 000000000..dda0153b7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5deaf48a9f2fd52db2d960ddbaa287c7c8afc8a478c8b826cd3e4b0ea87fa3cb +size 27589784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000159.vtu new file mode 100644 index 000000000..c0e10d299 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b567d95dfcce423289395c17cf90f1a5a01ed81cfb8b8534a32f4eb9d8b66b +size 27590041 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000160.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000160.vtu new file mode 100644 index 000000000..7d80d0f7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be7dbea4e87f3923d272a83879efd06f6dd8172c8e6cc38582a25d96c78639b8 +size 27590071 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000161.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000161.vtu new file mode 100644 index 000000000..290817e49 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62ad3a29dcde34153d560f465507b8a86da140a5547db51f24bf036f46fb9cf4 +size 27590499 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000162.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000162.vtu new file mode 100644 index 000000000..800dbb843 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:367c9782a1679fa5c34aa3ebee1b8473ad2d16f51a4a39032fdfb13599cbedbe +size 27589776 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000163.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000163.vtu new file mode 100644 index 000000000..d179c7663 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ef42c5e5b5581e9c522987e98bfc7512408895b154ea95db272f795e3e7c425 +size 27590142 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000164.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000164.vtu new file mode 100644 index 000000000..010b16758 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbe6ab6802f2c3fe9c09e6ee376908f1f93189de11d3d228e08cbdd8e08c871d +size 27590316 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000165.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000165.vtu new file mode 100644 index 000000000..44c415ca2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c09f46a07f143b5a91b3b2224484b1b995009943a23cf6b4b4461d36bd2bd95 +size 27589761 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000166.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000166.vtu new file mode 100644 index 000000000..e5260befb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79a9cfd807b2d0e9999fed15a96e15191e93e6e8b8a1f2b23ff40237209ba27a +size 27590397 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000167.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000167.vtu new file mode 100644 index 000000000..1bfb500ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6556af9e0c3dbf066a1d0a8fccd6ec4b225cfc85d74541baa8533f654a628334 +size 27590332 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000168.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000168.vtu new file mode 100644 index 000000000..962c7fd82 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25349e24e7869a20e7960a67d8d6129ad0b7d67a0cf15605b3ab022f78a935ee +size 27589653 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000169.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000169.vtu new file mode 100644 index 000000000..aa9238a58 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70ef551add1bfa43c40320c300a4bce849dc81b864bdfa1c2bf92844ca7b2b87 +size 27590806 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000170.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000170.vtu new file mode 100644 index 000000000..65dd84c7c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06d651dafb3d1b5dcecc240ac4e4569b6fedf5feca63c5a12363c9a56c48e12f +size 27589696 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000171.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000171.vtu new file mode 100644 index 000000000..c24fceac3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6b301a7c31861974551038827a0e39de410a2489432e4e501c0fd9602e3c81c +size 27589978 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000172.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000172.vtu new file mode 100644 index 000000000..cb3c6e0c9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:973d6148c43d0bc9a4a7924b880dcdced9e5d6b2754a50d719a0129c57e85c2c +size 27590611 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000173.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000173.vtu new file mode 100644 index 000000000..19e278be5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6237654299c4fee995d8f3325dc548611a5d8065460f4f2e868dfdbc04fc2fa +size 27589941 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000174.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000174.vtu new file mode 100644 index 000000000..88f8fb216 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5a3cbe54d7be9f4753640537eebc9afc76c273850cd767c410205b19800760b +size 27590041 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000175.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000175.vtu new file mode 100644 index 000000000..02ebdc800 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11f916ef8347b165821e1eea95fccfa23ec90db2f28edc4c823c370f42907410 +size 27590171 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000176.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000176.vtu new file mode 100644 index 000000000..4579c47c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:738150d29faa1b22dc6d42483d955182acc29652adbfcc05f88f007043c171d9 +size 27589803 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000177.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000177.vtu new file mode 100644 index 000000000..1b201a540 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfe84fd454572ba05fc4069b84d4ee7b81f0ad5ee27ac8a9983820057cee139f +size 27589873 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000178.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000178.vtu new file mode 100644 index 000000000..342551c99 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20b7f01e9bd1acb956e94f206e458b5a714cfc651c2ddbe565521ffba9e1a13c +size 27589231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000179.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000179.vtu new file mode 100644 index 000000000..6ff4710f5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146ac910c63044d87ace13935c14332f3ce3badba09a4380e649b57a6b42ae82 +size 27590052 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000180.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000180.vtu new file mode 100644 index 000000000..52f23a34d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a40914ec3fd23b73a3f0df30708632b30266afae9fb795d1e7f5ada1b2a64160 +size 27589849 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000181.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000181.vtu new file mode 100644 index 000000000..27074bfd4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38c74877897d2eb555f60538a78cb26e851b2bbe193649c3998abf2b688e4dd8 +size 27589898 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000182.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000182.vtu new file mode 100644 index 000000000..3b2407d67 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac9550df990dde13ae04bc023d8a0ca568866f28a91342b030c3d11b624ebffc +size 27589625 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000183.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000183.vtu new file mode 100644 index 000000000..32469158e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d74b6eb4e4fd821ba042e0fda6ea6d863cefcc21a5cc04cfac6ce2522467354a +size 27590476 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000184.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000184.vtu new file mode 100644 index 000000000..f22bb012e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c5042a87f64ea7aa6640d4c30dd34321373dfc70738ac5b699375a7abdcbff5 +size 27589632 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000185.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000185.vtu new file mode 100644 index 000000000..781c0b22d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:738dfa406b2a02eb0a2facc1c7356cff0a9ea35a593ce9f538f889a6529c40a1 +size 27589831 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000186.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000186.vtu new file mode 100644 index 000000000..eb3c8cea7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d85cc7954590451a6bb2d3994696d416f3e2d218e5f03d554478e0871cc4a850 +size 27589263 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000187.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000187.vtu new file mode 100644 index 000000000..567369ace --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e64c201d32c179e25288cf6101906421537a9e5adb49289ee1a32e0017462d32 +size 27590041 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000188.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000188.vtu new file mode 100644 index 000000000..81b52e220 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6bc6f0bef7f6393a2cbaee467233b52ceb6892eaca762a0b98c63f6ce90de02 +size 27589467 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000189.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000189.vtu new file mode 100644 index 000000000..ad9a09314 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10e824812e0a423d98ee7d48f4a2835c63e584a7fb7e9bd4efcd3befb3e8a369 +size 27590356 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000190.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000190.vtu new file mode 100644 index 000000000..acf17a77c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c33c6eb9a39e471948da07ec207de5fa0a2bb6fa3754b913b71d9dbe9d301c5e +size 27590242 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000191.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000191.vtu new file mode 100644 index 000000000..175a87356 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96e2ff3b7f03d47e8b60a774566457c87d8827f287227a98685f8c7c2745cd59 +size 27589891 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000192.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000192.vtu new file mode 100644 index 000000000..40cd6a184 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1782da5858bc16563ff6feb6ce549e2ee28b521fd1215fc200ee8c3698f4c75 +size 27589967 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000193.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000193.vtu new file mode 100644 index 000000000..e12500d7e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3f074d18a4ef8c8f9676628f1f0bda1d7040412ae98c435953248de84106d85 +size 27590426 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000194.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000194.vtu new file mode 100644 index 000000000..d71b19ac4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6c2b3ca0d0e26adda8a4c59206bb2708d14659ef5138333dafa15c6fb4be4c7 +size 27590057 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000195.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000195.vtu new file mode 100644 index 000000000..ffaafba38 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:587a8933a2be070991391bc6f9616831a5d8fcc593712270e1048e01b728a47b +size 27590071 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000196.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000196.vtu new file mode 100644 index 000000000..f20ef6720 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e6b7d39eab0cbf0f446270bbf2faef5dc88f4f75063cae292a1faf1b8f6cef5 +size 27590360 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000197.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000197.vtu new file mode 100644 index 000000000..c7348f9b0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f15aab0abec585716ff1582925431bec64260d856b07b6a3a81e4d46d0ebee90 +size 27589879 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000198.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000198.vtu new file mode 100644 index 000000000..6cc661bb6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000198.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e71798de94b0585d8768d63d5c087680752f88f31cb214409efc9302bb2c892f +size 27590283 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000199.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000199.vtu new file mode 100644 index 000000000..4feef0f98 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000199.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b38f4e8d174c61a2d7f3c820e41c9bcecb95347441f929d61af36247411e8adb +size 27589800 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000200.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000200.vtu new file mode 100644 index 000000000..3a0b2432c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000200.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f400d5449567ccde9016cb2d64198165d8c13f7832728ba5bd194b82ee6441d6 +size 27590147 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000201.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000201.vtu new file mode 100644 index 000000000..7d7e2a94c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000201.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e242908a145d72ec9b1d5cc971e5f62d30e81e027575ed66bcd3e1fda5994144 +size 27589947 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000202.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000202.vtu new file mode 100644 index 000000000..0cb648a40 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000202.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65701348745dd8bf590605ea122ca620efa5eae13d2819c64e092b9ac83b1431 +size 27590049 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000203.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000203.vtu new file mode 100644 index 000000000..3e728f6a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000203.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af73130d412ad64e2274faa57fa9c85c08780069c29203b7d305562d08e7c80f +size 27590198 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000204.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000204.vtu new file mode 100644 index 000000000..3018321c5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000204.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3af81cf0c6c95b2b529b64137657a243eded9349b36dc695e6a2dcda3ec6535e +size 27589992 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000205.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000205.vtu new file mode 100644 index 000000000..01c64f345 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000205.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ae753689d95bbb24aa5e33a4feed86ddb5a591f1f2152532c2dceb48bcedd6 +size 27590070 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000206.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000206.vtu new file mode 100644 index 000000000..05c57c16c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000206.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9260df48b8c732634394a8cdf17676ba7505bc1e2abb9d376dd8c780eb0d2159 +size 27590228 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000207.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000207.vtu new file mode 100644 index 000000000..8f3dd039e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000207.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf52be2e68f6dd179d92161b2c45714dfe777250a4003c1e6dbe83762f59aa72 +size 27589943 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000208.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000208.vtu new file mode 100644 index 000000000..7d8d927a2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000208.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67d2bd818660d14e51c79e8a7eb0c39dffb33c05a2ca42ffee4107de3cd2440f +size 27590238 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000209.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000209.vtu new file mode 100644 index 000000000..8242f74f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000209.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a626a013743a45bdea6dbb3ed40b04be4b6332126ed8be1c6507f29515febcd +size 27590120 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000210.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000210.vtu new file mode 100644 index 000000000..bf938e15c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000210.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a595cffe222878428f70460527ed335ca60417428b161aa0877df4df38324f3 +size 27590625 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000211.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000211.vtu new file mode 100644 index 000000000..87d222c1b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000211.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de5f10b6a21c1b317f0b6714194cc5935a934b957d748624ad286c8b2ad996dc +size 27590167 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000212.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000212.vtu new file mode 100644 index 000000000..bbc7ce01c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000212.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93e8773904bd5fa6e6b5dfc29c35e43afdb7ec612870ed0011424bf280c0da98 +size 27589887 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000213.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000213.vtu new file mode 100644 index 000000000..61c2a8d49 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000213.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:828422c0ba7639f0a5ae6aed96a206fdf8f88fbd1144a849d7e5d3abbdd3d2f7 +size 27590396 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000214.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000214.vtu new file mode 100644 index 000000000..1f94d5f63 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2_000214.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:572adc9f228b356ac1cd7f636ecba3220cd9c1c7c8312138a012decb6dda8cfd +size 27590096 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.series new file mode 100644 index 000000000..698308970 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09068e6ce928a009d5e9b7e6f506e56c1549284b361d4e29bd8c800f0f0bcd02 +size 31104 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000000.vtu new file mode 100644 index 000000000..eb4443059 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b45f43fa74ea3cf02bcc7bbcf46afbb5b0766ce2d28dabee17b44955d70530c4 +size 27590172 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000001.vtu new file mode 100644 index 000000000..d9b4ac5e9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:824ab2ffebee57757efb144198bfa1b009a60bd218aa8615783615a86cfd0c71 +size 27589863 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000002.vtu new file mode 100644 index 000000000..d41f22d07 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c447b008aea52ad107fa74da578806bc92c5d0516063994ef1c870d3aa67a5c +size 27590174 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000003.vtu new file mode 100644 index 000000000..a7ccfb6bf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ca64559f80a2dd2f17723929b6604722884302839593ecbc25c755934471157 +size 27589775 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000004.vtu new file mode 100644 index 000000000..10dbcfe3f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a59d3a1850f543f37b207ad4d244e0e79329c34c873679f0d47505bc1288728 +size 27589912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000005.vtu new file mode 100644 index 000000000..205a221f1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed25120761e2616212026f1787ab1094da33355a5dca80dc94b69e931a3c29a3 +size 27589500 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000006.vtu new file mode 100644 index 000000000..594209771 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73237120e2b952168b9e90c5df0529f4bc669870a6960457fb8cf8d07a465bf9 +size 27589827 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000007.vtu new file mode 100644 index 000000000..dd038da0d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a255c1f7689b121d3b4e94003b3a595321d4b35a98bbc857aed0bfcfbcd7d62 +size 27589742 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000008.vtu new file mode 100644 index 000000000..f75432aa1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62b830fac6df0655830ef86dfe71119d57d1a540b655a2302bfb3ec2b54f0db5 +size 27589085 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000009.vtu new file mode 100644 index 000000000..4f7169937 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d52b3a1ab16517dfa6a835f69e82792c125ba8b9ce5d763d32f87f94f3b2cdd +size 27589626 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000010.vtu new file mode 100644 index 000000000..a2dbe3ff0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10e23d36d4ec1502a126bdfbff757f5d00603ec98cd489bc08ae2f2cb7cd2f98 +size 27589769 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000011.vtu new file mode 100644 index 000000000..7eb1913c4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0035e71a3feba4a33ae7e4131adc83f5d25bb6e361efaa824b4eee79f9da8650 +size 27590804 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000012.vtu new file mode 100644 index 000000000..c858f9a35 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bd72c688540123fa8a12ba756b9ac3fd8d74bd1ec28d8031187276d7a32fa89 +size 27590657 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000013.vtu new file mode 100644 index 000000000..e2b8d6cfc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f150696cfe7106c77e17c30285203861d014ce5071cc0048a7dbc8afab9a05a1 +size 27589625 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000014.vtu new file mode 100644 index 000000000..f8df4e648 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab8389ad2ed782658c1295e2961c66a0bf251bb9cace20cbe85706357fb19ae6 +size 27590012 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000015.vtu new file mode 100644 index 000000000..5436861fc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:780fdcb15efcfdc85363fa737c85f909b37cc71bddb3f917ddabd3bb52ac827a +size 27589610 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000016.vtu new file mode 100644 index 000000000..8e4827617 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bb64ae0b7dfcefead1420815ef561ec139f41331c609055dc8cac51ed42a83d +size 27589450 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000017.vtu new file mode 100644 index 000000000..c88fd2e9a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa040d0e12aa563aed32b54931c68e8ebdd54fcd78598986a9ae808669baf7a9 +size 27590123 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000018.vtu new file mode 100644 index 000000000..9ca3fc846 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b3e848174d9dbab8b5436f0d3b425177cdebe263a9b4532f297bccbb60d836b +size 27590128 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000019.vtu new file mode 100644 index 000000000..e61fdd306 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be0ce7fdf898d78acae5e92814483d44ecaddd8c2b375fd39e9d9afdcfdaa624 +size 27589623 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000020.vtu new file mode 100644 index 000000000..0750312b0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee8cf33901e12d2c51e1d58780c16d64c37b1a7d78c348a5b1bc9e1fd379c4d1 +size 27590082 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000021.vtu new file mode 100644 index 000000000..af09886a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b04a70eadf7ce48dcaca8fea5f96df124fa2653de99c4a9a6da717c6e926f75e +size 27589996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000022.vtu new file mode 100644 index 000000000..bff1a625d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3b6a383d23c3b6a20197c50feec7b911c1d886c95c157d1f9fbd8661964e8b0 +size 27590369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000023.vtu new file mode 100644 index 000000000..adedfaaf6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93a510d7f378afec6ab4d8ef48ae2a10445e6961fd216a9c98d86e264f783649 +size 27590145 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000024.vtu new file mode 100644 index 000000000..0b5938a14 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dde117dedfc58e7a26642b785017f21dc30ca313959a4784f2c4bce2497eb4e4 +size 27589905 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000025.vtu new file mode 100644 index 000000000..6a72f3adc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ee00dc85e06cd91893eab7842cb6242748124f327d0339413085ae97fe937b4 +size 27590613 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000026.vtu new file mode 100644 index 000000000..079fdb6ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d380cb1850f9a6053b81a8faf15b7264e63ec8929dc4b50951779727aa58347 +size 27589845 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000027.vtu new file mode 100644 index 000000000..1f3d716f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0491c3441ce2d46196b031c61ae3b898cbe6967da6c1fdd2d3fc4e5c0f1cdb0b +size 27589612 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000028.vtu new file mode 100644 index 000000000..8090b5b04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb0639f2361144387bea7978efcb0387da787d8d1b00c488bee89594cd77e3c +size 27589962 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000029.vtu new file mode 100644 index 000000000..5c758bb97 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ff9ddb992f9752de87e9ac8381e1d6b3ca5efd5c950d085004692254ee7b647 +size 27589686 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000030.vtu new file mode 100644 index 000000000..9bb6acbdf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d89cca48b9367c889dd2ba9caf2464d3c5f7087162c98c8d3beb4641c95358 +size 27589347 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000031.vtu new file mode 100644 index 000000000..934d42c18 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:455f0e6b1f203eaffc7df6925da4f9b54004e75c4114ef9f15dec33ba7dd333d +size 27589600 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000032.vtu new file mode 100644 index 000000000..386d121ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79881376f17bf9589edb9986578bfc6cd893b7f020abe0780d092e9b50c343c9 +size 27589412 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000033.vtu new file mode 100644 index 000000000..45647dcde --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:780bbb9cff28ce61eec326c53413e8d0ed5bf4368bbbc257f10077b087f09e1a +size 27590004 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000034.vtu new file mode 100644 index 000000000..8d0c70550 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64d353915e371a20ed8f4653940ee2c9489671b7367e1f92ce2555663bf36013 +size 27589604 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000035.vtu new file mode 100644 index 000000000..4916c5c06 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70e79ab1860d159a99e8a7447d577afd336b7f71955da395fd5bd0850d57189 +size 27589676 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000036.vtu new file mode 100644 index 000000000..3c0cddcb5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e5f282f34dc623a5e69e6255374e34e45c42adb1771174f2f0707c31ac2d097 +size 27589239 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000037.vtu new file mode 100644 index 000000000..63f57be00 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5242735ee1546dffcc1342f9590ef1a083d3448d3c7dbf156c3a5c71d49af834 +size 27588833 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000038.vtu new file mode 100644 index 000000000..6228e2293 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be25c91e22144ba673e9949c878b72a89379f08217306fad7dedea467fc11ad0 +size 27589938 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000039.vtu new file mode 100644 index 000000000..d7657723d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:384b77714fb94ca6ead5ab2cbeb7e5f65f16ec89cacedbf35cee7de0be80c921 +size 27589529 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000040.vtu new file mode 100644 index 000000000..bd1c7242c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a468ee148789a26b1b92ac6f926dd1774cf930b1db0fcbef42ad4c4579b2d4c +size 27589328 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000041.vtu new file mode 100644 index 000000000..8f64fe836 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac1ff12d5f29109203598db1ebfd82e697291af6a19b21768d99511e7da71d83 +size 27589989 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000042.vtu new file mode 100644 index 000000000..0dc5a913e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06346aacb15700c8a04b18e829d58811e31ac873ca669280f7359c2e53a3ad91 +size 27589752 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000043.vtu new file mode 100644 index 000000000..d28a66879 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3ede04431aa572ae6f37e7179b3bdb87a5358675aec764e9a6d4de1d930e2af +size 27589855 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000044.vtu new file mode 100644 index 000000000..020df7736 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7535b115f07d14084893d070540cb2e267290848540835895cee993dcef8286 +size 27590244 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000045.vtu new file mode 100644 index 000000000..27a25764b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95c789e0eae0d6eaf670933babfd34fc024654866fd96c079ac676f40510e22f +size 27590607 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000046.vtu new file mode 100644 index 000000000..4a2903498 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:239407a29bc84fbea270eab6b67ed16ebec506573b48cb21a2c50e9ea9bcc2c0 +size 27589623 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000047.vtu new file mode 100644 index 000000000..f836c73ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cbad60add7e34fc026539f5482ca25aa45d2d23305efc3c1a0a27a761bf781c +size 27590001 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000048.vtu new file mode 100644 index 000000000..c03a46378 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33e0736ad538fa557c436034924504865730cc90803ae60343668def82a72af1 +size 27590212 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000049.vtu new file mode 100644 index 000000000..3ffd3844e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba001f8fc58df6e33d3c3e27ea05f2f4897dd318ed942a14b88f54af33a3d1cd +size 27590320 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000050.vtu new file mode 100644 index 000000000..7d83d3c09 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd4f7be5d6bf829f0a2f352bae40230e1a10d047eec08a0366a4632ecb1e6cfe +size 27589891 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000051.vtu new file mode 100644 index 000000000..aff6882fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6eb2afdff6d5fc2ac42724234cfe805686c105759baf326264d68b96205170f +size 27589784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000052.vtu new file mode 100644 index 000000000..8c75cf1ce --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8215f3231aa0fd1a43c1f8526195fd3840287b8f4c082cbf4d46f4d0229d4908 +size 27589701 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000053.vtu new file mode 100644 index 000000000..094f57b8d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4c8dbda2507bd68a2cb66f0a6c6616bf8e9a2e5d45ac7b062835fe3a8526925 +size 27590062 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000054.vtu new file mode 100644 index 000000000..4fae8da10 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c3539585327e5d97168a7be5926c4b99657931469497b4ad1cb241fb378bdca +size 27589646 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000055.vtu new file mode 100644 index 000000000..2f9d3f858 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e029a1de09b4f04a77c7311012f28e4854d547101e769d42f869a16d044c6f1 +size 27589752 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000056.vtu new file mode 100644 index 000000000..00e3aaa90 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44dc6e07ddb7cb1a236fa9a9b5281ce855d31f4857f3e824b3c13d2c7830daa +size 27589600 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000057.vtu new file mode 100644 index 000000000..db39f8e34 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef3271b819664098201a116437d520bea14046855eeb3c0fa8b8195218f3df5c +size 27589619 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000058.vtu new file mode 100644 index 000000000..c95ff2210 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8c1a62d62560434fad016406fdd4dd5f6df54041c0e82b8bfd8b7c7c5c2b64f +size 27589986 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000059.vtu new file mode 100644 index 000000000..dfe1404bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e0cd457f053b8541ba88fef58f6d9abbad657a4a5989e2a22c1e6de37cf6a9b +size 27589918 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000060.vtu new file mode 100644 index 000000000..3b674968d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ceaee92d78ef8d5e130148baeeed576c5e04b18848567d70b5519dd2a229e1f +size 27589329 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000061.vtu new file mode 100644 index 000000000..2a66304b0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc838fb15369568e7c076e2ce7efa0efd5e6c01bd6fee87f64a31e1f2d7661c +size 27590166 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000062.vtu new file mode 100644 index 000000000..511b1979e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e47f0fb0e6ee5b87b3b1216385f1c0fbb2abbeb76d5162608fc5ab282d31513 +size 27589811 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000063.vtu new file mode 100644 index 000000000..c374d0c6c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58e9956c45601e326ad5ae0ca43122a55c30a728202798bb3640f264f486d3b7 +size 27589316 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000064.vtu new file mode 100644 index 000000000..f47af324c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a812ba8faa7281b435ef9fe17afb9205edcbd1e3bdd62a526304d65af22feaf +size 27589567 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000065.vtu new file mode 100644 index 000000000..6551e4ba4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:265304155dd6a3a720cb1d3fd26562c717b4fae42c0b63c4ef42b3e525bd4f67 +size 27590043 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000066.vtu new file mode 100644 index 000000000..72f873b2a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ebf17e9b716fa7cc4ba63ba215431c0b29fb3088cc118022e1cc3e757553088 +size 27589413 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000067.vtu new file mode 100644 index 000000000..cf6a1f742 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d69785947fb49350a1383d5aeeaee9460e28855dd255173a9820e6cfa6bd9e5f +size 27589706 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000068.vtu new file mode 100644 index 000000000..086469cbd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aa152cd14c1dea80311a21300ef7712cc8ea28aea86006f79f43a26ce287cc1 +size 27589698 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000069.vtu new file mode 100644 index 000000000..2d92c139b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7f5e849b39bee5dfc30409b77ebc34ec014afcad1441e8586e2376d4968224e +size 27590157 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000070.vtu new file mode 100644 index 000000000..a3c761a80 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccbace8ce17077e4adbc29bfe2a3e786892744f83722933f968dd3f27558fcdd +size 27589688 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000071.vtu new file mode 100644 index 000000000..7cd851397 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af9aef4c1e6bf2d0bc65037d058413bf6a4ca27dc0501843e6445bb767c76ed2 +size 27589946 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000072.vtu new file mode 100644 index 000000000..5a3c1e374 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c158ec1a28c0073ee3c6009dadf3c200415cc913ea8932ee6ca5e7a5ae37cfba +size 27590651 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000073.vtu new file mode 100644 index 000000000..2197c3bc2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bd1e28c81fa047d178d210a8c5ba53ddf1214d8a4a36973e9cc98ff57ea0d7a +size 27589738 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000074.vtu new file mode 100644 index 000000000..19568cfe1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af863cef4c7873b4151086e74fe23e85e24a0eb3155c4e4728e39dc6580713be +size 27590233 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000075.vtu new file mode 100644 index 000000000..cea5d0100 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00e3ee7b5d5e8b0fed80151dd12bdea33e432539fe6b4537b83624b2c5ef4f57 +size 27589589 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000076.vtu new file mode 100644 index 000000000..bcdeb128e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da107f013c2a5be3fee6e7ce1855634fb0b538f5249007486da82ed2e29444d1 +size 27589577 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000077.vtu new file mode 100644 index 000000000..6b6b51af4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0881f6426e8075c88e0d7e93b310eb7a5d3add2683986750ee02913efe39c558 +size 27590146 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000078.vtu new file mode 100644 index 000000000..915ddd24c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b0d448316d0f5f01612df771a1c28b547b19b9d89c0fb95e4d2b61e27489689 +size 27589978 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000079.vtu new file mode 100644 index 000000000..3cab26960 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13745b032ca1487ee741c4351833d0e5cad943d992868b9effe13a353607a701 +size 27589756 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000080.vtu new file mode 100644 index 000000000..8e9fad978 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e304994c0da245b487e2688ecb3af416da0dde8df2c9d9aac25afdff19dbc82 +size 27589597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000081.vtu new file mode 100644 index 000000000..67a882061 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f312975bb988d6a542494e0c39214341668d8cc45cc65bac0b037738fb48d43 +size 27589412 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000082.vtu new file mode 100644 index 000000000..9ff6b1b44 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10fdf64f6518a2a8abbe51677bcddc37bac88b5cde8b23b3d6c29bddd07c0810 +size 27589932 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000083.vtu new file mode 100644 index 000000000..210889b11 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fce904a045476462e301cc8f950d6497c7a9ac766ee500acc3a500485f83f86 +size 27590429 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000084.vtu new file mode 100644 index 000000000..8da63eb6f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8217fd1717551ee167957259463dc8bd15868f4cbdfbd5941e8925244ba98a +size 27589560 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000085.vtu new file mode 100644 index 000000000..ac5369e85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdde8d76379649e52cdd404adad1cfbd6d29772c976de0a8c3e47b0108761693 +size 27589565 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000086.vtu new file mode 100644 index 000000000..f8dfdd9fe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f39c437c5d3ef58f824b0ff9eedd00a36d9c722a00fe83b0bfde87a8296987d +size 27589402 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000087.vtu new file mode 100644 index 000000000..cb72071c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2eacdb9baa5922e1d7bbb8fa60ed8803d3c87f023d9d8adb2d1f9bbfbf5b0404 +size 27589667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000088.vtu new file mode 100644 index 000000000..82fc6f795 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d25feed8f2e707ee39ec4c83001f663614acde8299b9967b6f113235dd9d754 +size 27589764 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000089.vtu new file mode 100644 index 000000000..8f54dc84e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84dc10d4596c52a1f1c90a1ba03b3c0cd525a8d1158d89d2f8dd4c5e6d20e2e1 +size 27589826 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000090.vtu new file mode 100644 index 000000000..04949f5ca --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f85be88584f2ac87e44efbe85fb951438badbb5a57c73b9ecee73bfa75e06e76 +size 27590238 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000091.vtu new file mode 100644 index 000000000..c2efeda0c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1d9a83d848bb639cfbc28fc7c3a10c8c4f347981df54977e230b1323aa9994a +size 27590227 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000092.vtu new file mode 100644 index 000000000..d8e169fd1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc69c28cd13f39baf16acc14ffcda687f1ba58ded14459a02431680edecb9895 +size 27589927 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000093.vtu new file mode 100644 index 000000000..4e00c3da3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7da1358c7e7d343a81b367a68ba4f69b5a282f6d3d5152db86c469ece77a3ab5 +size 27589787 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000094.vtu new file mode 100644 index 000000000..77f34e574 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d6b96c3f61a90249538943b30ba1ae5aefa5deda6e1c5cac9272ad334482a70 +size 27589720 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000095.vtu new file mode 100644 index 000000000..c17afbde2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4398b1496e00a4d0942e7717276d1a3aaff55c98fbf4fabe949fdc0945234dff +size 27589703 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000096.vtu new file mode 100644 index 000000000..4ccde0b88 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59c55bf1573e5d980ebe973435c9a6850f8dc10d3df783db4b38eb79e2aad156 +size 27589756 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000097.vtu new file mode 100644 index 000000000..cf7115e52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dffdac1513d5f9996ae9a7aeb749d74c5404ba83e2b31c2f869720317efa4fcd +size 27589377 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000098.vtu new file mode 100644 index 000000000..92d0f6b37 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7aba119d5fa97d6917ca8a4b90079b21c5c83f4f663f2a54bf142dffe7f2e12 +size 27589470 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000099.vtu new file mode 100644 index 000000000..a3bb5e2cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ee47c57ab6ab1f915b91f71b4168cecc517808366006b1b71a0367cd6204a84 +size 27589675 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000100.vtu new file mode 100644 index 000000000..8350386f5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr00015-beta10_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9499237e4a6883247a39522fa1a655c60aa80280fea524f00c197a3e61637c7a +size 27589549 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.series new file mode 100644 index 000000000..4f945e04e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1b5b902d698429f920fd1ec4865d73ece5323fcc32e3e21722f6c0cd613e1c1 +size 13362 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4-checkpoint.npz new file mode 100644 index 000000000..b0492261a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb0036fd3dc3ef3aa1bf81ce17b8eb87d2a6797fde50ea394b2388c80cac223 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000000.vtu new file mode 100644 index 000000000..26e6cc795 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e8e731bc197c405e2f8809f7f46b86869780a7a3f6d5ac07fbd394b2b8263e1 +size 27589106 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000001.vtu new file mode 100644 index 000000000..a70b4a972 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da23e077bf999cc0b71467f866451742029ed6abd319cb310a22c8dabeacca5f +size 27590544 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000002.vtu new file mode 100644 index 000000000..215a09d80 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42e297e39b96dc23c58f4d407152ca5b7df4a2e471e95bbdc7698b1fa4c39f6c +size 27589779 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000003.vtu new file mode 100644 index 000000000..538888ab4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e25f9aa720cd1c3ab9701dbf512e473f59cf83b23610372d1077e71b2683f9a +size 27590311 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000004.vtu new file mode 100644 index 000000000..69b9d5392 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5c9f6ca85f31cd143d30af98a1cae5df1e9aa7646f2bc9bfd5cb985919db5ff +size 27589823 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000005.vtu new file mode 100644 index 000000000..89dcf8d6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a56fa956bdc8b68918bddbab84d0ac86499b4090fb2d932792274c27ef7242 +size 27590674 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000006.vtu new file mode 100644 index 000000000..d4edaa950 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ab9bb8f0c02c981bc3a8fd7e90dc934b3d5e417bdece101c8fde346aa6f70b7 +size 27589947 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000007.vtu new file mode 100644 index 000000000..6b7519300 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81759262cf823a90a53be02791b53e167fe92b3e3ba504ff4b272919ff608e02 +size 27590083 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000008.vtu new file mode 100644 index 000000000..7c3fa2fe1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c33f9ca2a483f062912030e0495838584a245d19c292fb9f10182b1d6a658b17 +size 27590341 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000009.vtu new file mode 100644 index 000000000..2fd6b0133 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0a81cfc71e0ead6c4770664b6dfc134ad10121c28b1bd70b31de09ef41649ab +size 27590480 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000010.vtu new file mode 100644 index 000000000..3dd8c27bb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.d/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e1836abc168ebc83580fb06ae3792e9eaf8b821dcc657f32824c77d08f221b8 +size 27590227 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.series new file mode 100644 index 000000000..d28e27683 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:740a838ff6bc453b287d945b0566035706ff263560b5acc10bd2c57689561816 +size 1591 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz new file mode 100644 index 000000000..c0dd37298 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:977b6a9c8dc2fdf8469f4fd0d56409ccdc9a9ca2ea975b48800feeabcb2edace +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-checkpoint.npz new file mode 100644 index 000000000..c94f0b95a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c0dbd171bd201659d7eec8f90d99d352378bbc811b1456ebd700f79f4578cd +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000000.vtu new file mode 100644 index 000000000..d9d1b9fa5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4670515a88e4b705a5d8f04995a522465467f4e831e99ce3d384b18e3ab49772 +size 27589335 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000001.vtu new file mode 100644 index 000000000..94989df0c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ccc7963e715a7e558c6d147ea2031052760439213f6edd8949b54a9b2b91a37 +size 27589823 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000002.vtu new file mode 100644 index 000000000..3d12f0b9c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd764050d2c12d33aab7e146c8506f5cefeb1dc3c4a84b6948e583456e4158cc +size 27590083 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000003.vtu new file mode 100644 index 000000000..782f14fcc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d06b0b07897c5ec367b48cb6583e82aa64b793f214960b5c1b71be9d896b2e1c +size 27590348 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000004.vtu new file mode 100644 index 000000000..aba7ffa55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dbc9ec9c6c34678068f3bcfd8831a9b08ecc3acbf599ec076e379f2767367be +size 27590323 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000005.vtu new file mode 100644 index 000000000..6810d0763 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ea5359eb6c9d26250d2fb7566791f6837da1a3d8b0c6528983e88b2574779b7 +size 27590301 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000006.vtu new file mode 100644 index 000000000..f9ec4d690 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3715981439bc236af55b138b77c199f24dc05e3dfdcdd4cb501d11a7152b635 +size 27590948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000007.vtu new file mode 100644 index 000000000..4fcc49924 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59efc45e4e27910f5b78d98e8a770b25bbbd7004241c8127369d08625662b75e +size 27590489 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000008.vtu new file mode 100644 index 000000000..51394372b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb537d3e1df659f7be6d4bb600be40c605d94d9a94254dd3c5defd5180e2db3d +size 27590357 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000009.vtu new file mode 100644 index 000000000..0a8880a2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:739a750966dedcee54778dcf066005b597f0b007b2b401d5d72b10594f9eb411 +size 27590047 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000010.vtu new file mode 100644 index 000000000..c911dcdc3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2df90ff7e7314101bf631311e0194d503c4e05465d724648d6c3b8f07a27952 +size 27590005 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000011.vtu new file mode 100644 index 000000000..8226e097d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e074bd994f88eeafaf87e269c5ae98fef5dbbceb702d4128ff6ec42081b5e69 +size 27590721 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000012.vtu new file mode 100644 index 000000000..1311716ef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:388a52a5d919f6b5796b25dc6492fcbf3156a9d4175089f4878eac6ad557c9d2 +size 27590275 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000013.vtu new file mode 100644 index 000000000..7c287a54c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fadad03aac0f924f2f0bec74801bd910d7488fb0a19e022373fe43be4903fbba +size 27590174 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.series new file mode 100644 index 000000000..cfb9d1265 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb61a8827005ed7411a1c74aeaae2d288f5ed7e8726a04404a3cd7de83fab5a9 +size 2017 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000000.vtu new file mode 100644 index 000000000..bdff924d0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:742c0ddcd1cf21663503cb4e905d3c511d7fbb40a6ac77d0649c1d8f915eb406 +size 27590475 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000001.vtu new file mode 100644 index 000000000..0cbbbe6d9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e16e54c5ff2be3048dce5ba1e8ee6044ba93d9e0b068b8f1342534dbcd1e3b07 +size 27589891 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000002.vtu new file mode 100644 index 000000000..f4369b25b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:366b00577681246b2a246401e96e32987db20afb1714726e73fb530443b38af7 +size 27589630 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000003.vtu new file mode 100644 index 000000000..512b5e9f1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:649809b7a585a8220076456f9774c1c63ff5a009829a9d2893e185a1c4d908c1 +size 27589843 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000004.vtu new file mode 100644 index 000000000..52526d324 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef006da6c8a8c6951837479a260d77342c102b573e6abc9a907411d8ce7e4197 +size 27589758 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000005.vtu new file mode 100644 index 000000000..2a3c816c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f30fb1e22a824981692c4d954d380ae87f49aa7bd6418d516dbf606605ba69ac +size 27589272 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000006.vtu new file mode 100644 index 000000000..57df5aab4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39f3e9efbfe642852787e3155d3998977a9547e723a5a6e7ef4f9cb9fd4f10ce +size 27589532 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000007.vtu new file mode 100644 index 000000000..add167884 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9423f430732131cc114e32e27c5b240ff3ce3f20e350dbb8632d4cb818cdebb +size 27590002 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000008.vtu new file mode 100644 index 000000000..29bf1066c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d858c3fc41168e14b354a3420c78613e82d28ba5435f9fac71a84cd18904a126 +size 27589679 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000009.vtu new file mode 100644 index 000000000..de06a4ab2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:408a0b540c87d7da07700cb349e315f1adfb008768d58b4843ebb2771262310b +size 27590109 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000010.vtu new file mode 100644 index 000000000..bbe2fdc03 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6f1aaef6e80b74baf399c78898de11fb98c2e2d146f52831bef0c5bf6c4b16a +size 27591090 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000011.vtu new file mode 100644 index 000000000..a381ffb38 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01261013d1777c0911e9ab54d2110219921aa8011a6a9710ec44081733e7b39a +size 27590231 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000012.vtu new file mode 100644 index 000000000..c77490255 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:325dc6ad3483c34f7cc5969954b34626b4bd7c77d4b252f73b8129dbf1f743ec +size 27590150 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000013.vtu new file mode 100644 index 000000000..393651c46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da6eba09e731458c5c50113575b9855fd0d5f238cf0024de96deef5833ed5d6f +size 27589687 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000014.vtu new file mode 100644 index 000000000..93102f927 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18cf7df148870e271688c4aa58e595e92773559f41b6b035a5c673be59f262bc +size 27590196 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000015.vtu new file mode 100644 index 000000000..bb59be8fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9cc0d2d4f0c988138904b8215454276b3ef52c2bcbe97b365aa439f482f61ab +size 27590089 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000016.vtu new file mode 100644 index 000000000..7dbedb004 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43abcabceefaefd472a4312d972598e38b1f8b7cb7b092be100699aa98147410 +size 27589995 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000017.vtu new file mode 100644 index 000000000..be47354c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ca526f458e0bc0c795fd14842027d1bfd216ec6c5df68bf6dd73a6e7aa6f8fe +size 27590402 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000018.vtu new file mode 100644 index 000000000..5152dc193 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a98573c6449d0907f1bea45ba8c9318ed2a13647c9331337f6f7b1b878913e74 +size 27590772 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000019.vtu new file mode 100644 index 000000000..1eed97ff6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26936bf871665e994113b0a975773688e0af6693fd515115583fa39075c317c1 +size 27589750 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000020.vtu new file mode 100644 index 000000000..0e3d76e05 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8180797d09392910cda0f1643312e6440cf02fdfe4bb59dfcbb2957abb0af6f7 +size 27589647 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000021.vtu new file mode 100644 index 000000000..42ef3ef21 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bba84ccad90d58db26b13cb9ed524a657886952e85a1636c26a58d513fd0e3c +size 27590169 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000022.vtu new file mode 100644 index 000000000..d83731162 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13e773c615b314d7951bfb3c7f2e00bb1fbc8e9266d3f4ea224adffca05e7f6f +size 27590824 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000023.vtu new file mode 100644 index 000000000..092381601 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f70cf98c183ede3cec539fe3ab782ac4a2e26a8282149c00e9e32bdd7c37cec9 +size 27590023 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000024.vtu new file mode 100644 index 000000000..9c0ea01a6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:966f62c2323546502df193c1928c32c2fea0f26f3eb666b6bf3050db876fc9f4 +size 27589457 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000025.vtu new file mode 100644 index 000000000..4b80beeae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e27fc335decc990e3e56f7c5012888ef00ad63dcb588d6fa2abf4e90a913a34b +size 27590427 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000026.vtu new file mode 100644 index 000000000..f71514dbd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:883d8aa22c77d8c59d785fc579939a73bee6c580439e34a4c38b5cd024fd30ca +size 27590618 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000027.vtu new file mode 100644 index 000000000..aa4e97b95 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c44e95765646186d8fd091a687825c81963c6daa036eb06c7f2b764db9496595 +size 27589901 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000028.vtu new file mode 100644 index 000000000..39cb0ae12 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a783c3ec88e81deadff8f94620c2afec6ab2744d7ccec945baa1fdc786b1f30 +size 27590422 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000029.vtu new file mode 100644 index 000000000..5804668f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8090a90599842c0c18c19ccd1e35e74788bbd05d903f2a9cacfde2161df3061f +size 27590415 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000030.vtu new file mode 100644 index 000000000..656949c7d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6528027072c2e4d5829c811d565fd9fb33b1ac7a030abf6f3bf09dd3cd689f0e +size 27590121 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000031.vtu new file mode 100644 index 000000000..fda2cd82e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcbe6929a22c3c77c50e071c31fb0cd81aeae745db025c0ac612a64afddb3eae +size 27590581 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000032.vtu new file mode 100644 index 000000000..02c8d791a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3be078592d7d1ebba6f8da7a89464aab15095e6813580900871b45c8cbe9c620 +size 27590115 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000033.vtu new file mode 100644 index 000000000..5b9938a93 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae842322a917c9e6c1a36ced86393f1cfe92c4ca410862b58e4446b05d836fde +size 27590674 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000034.vtu new file mode 100644 index 000000000..a139cf3c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e6ba8a935c5296037fb1f6a69d3508dd57db75b77eba039e332b4c20c7ccca +size 27590738 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000035.vtu new file mode 100644 index 000000000..ac13b7684 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f3683e7954b07089d07d05d90f2b24733b027966302c4985b2fbe4de0e552fe +size 27589730 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000036.vtu new file mode 100644 index 000000000..bd19d4ffa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b0ee8fa2c70aa229300e4159869c4d1f9555311644929601989d15b77eeb531 +size 27589958 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000037.vtu new file mode 100644 index 000000000..95150777c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d5515ab3caf3aee3073bf664bd1316b65c275a1b38c85423ae52ae114395b09 +size 27590190 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000038.vtu new file mode 100644 index 000000000..182f4a523 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e00e01da868a05d0e493e9fe89a4edf8769455d33ad60152eef2379b1306dedc +size 27590194 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000039.vtu new file mode 100644 index 000000000..30b412455 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37b077417103c42bef32baac897c9f1525eeb2f48c41b3c2aaf24660a9a1b20a +size 27589570 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000040.vtu new file mode 100644 index 000000000..80648b42a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a1ea65a3ff1b768b7c2ccb12ad0e80931df3be4881d5923039f09854272b976 +size 27589804 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000041.vtu new file mode 100644 index 000000000..4a2fe4a50 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b140cc9d448eaf101b7ee2ddfd985b2a8ce5d7cd631d61e75e5f752f705d1e58 +size 27590072 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000042.vtu new file mode 100644 index 000000000..12c49d000 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6755cf62c3148a5465afdd558f105331b2459bba89a691a82d93d659da5fc0c7 +size 27590597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000043.vtu new file mode 100644 index 000000000..003aefb99 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc27edf0a1bd53b90e209b7bd90c79e85a6442d503c8d378065a0fc55530e640 +size 27590352 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000044.vtu new file mode 100644 index 000000000..06e05150d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:344eae452c66e85afa7fdf2d12fe00439c17cec3fdd029a99664b96e6cf9b951 +size 27590098 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000045.vtu new file mode 100644 index 000000000..3c0284c50 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57c5a02560aeb4f0b4df53c1963dc53f0374a205225f6c58a82243cb215c22e1 +size 27590177 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000046.vtu new file mode 100644 index 000000000..82ea2d939 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d1cbeebc4d1773fb52c6671e59b74d6abb422ee82d30cf561e3b843670d4eee +size 27590254 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000047.vtu new file mode 100644 index 000000000..b9585e25a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f76cea24152f7a84d6685187e3819bcc2ccf176725adcf71a7adc00ab0041f5 +size 27589793 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000048.vtu new file mode 100644 index 000000000..fb3b917c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b66a76078939b9cb06780d8a55972f1cda56e3b28f79ef90acb5103ebd5ad671 +size 27590070 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000049.vtu new file mode 100644 index 000000000..dd9c654e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ae796b571cc45d4a67eaf1827e6fd98dfc3cbefbaa5bbda62c6ba6086595fcc +size 27590001 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000050.vtu new file mode 100644 index 000000000..57db6f876 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d893a4ec89a10372ae34647db979bac66c746cd940466a631e60886bc66944d +size 27589901 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000051.vtu new file mode 100644 index 000000000..7678fb031 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7eac49eb5538e7d661ccffb1b949ca44e56d65b3bcefd7b8ab3f4ebdba30a1a +size 27590254 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000052.vtu new file mode 100644 index 000000000..ab70e4d6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ff6c89b0ddd60378f853a85dddb457d8d54e75975cf0518b5c1a32f992263e +size 27590358 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000053.vtu new file mode 100644 index 000000000..cf05bf8f7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aa4629c0fac1361595894a38a434e8edf8fb133e7bc2350ce8fc5f177a76c00 +size 27589220 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000054.vtu new file mode 100644 index 000000000..f30278466 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74b8da3d7e5968f62e78f6a3c01b0b98130ee584a1680355e15ac8b10aacb811 +size 27589899 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000055.vtu new file mode 100644 index 000000000..68d3c151e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22c1b3fe4f7d178cb3480c695c8a2e36c180f9ddd419b0793df6d591acdd1ced +size 27590256 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000056.vtu new file mode 100644 index 000000000..263962d8a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4287ae4d128546baa9592289d38757537a515244674635c7ac77b6fe930d0180 +size 27590026 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000057.vtu new file mode 100644 index 000000000..e86141ef6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c592366c8a56aad8dff214140baaab82f52d9f4dd413b408da81126156fd187 +size 27590113 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000058.vtu new file mode 100644 index 000000000..69d7eb8fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f940f807c1c9f81477ad3ae1c5dd37577fb27d9de1d0abce4de13d62fce8a43 +size 27590132 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000059.vtu new file mode 100644 index 000000000..fa79344f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a6539c4a068c62e898f6e21cc0bc8c74d60016b9f038db0e460ce1359032b17 +size 27590254 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000060.vtu new file mode 100644 index 000000000..0c4218f88 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1f218ace54ba8f8c51469a8779ea004b4ac24228c942f15cf9e139649594b37 +size 27590045 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000061.vtu new file mode 100644 index 000000000..12a77f606 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70d7996856daee9830b9497d443916856232a61d1cffb58d9945fd35b426eb84 +size 27589928 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000062.vtu new file mode 100644 index 000000000..7695830cd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb26b88ba6a702d462309689ae009958d68e86b8dbfac2b4c4851f2b2ec8acd6 +size 27590904 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000063.vtu new file mode 100644 index 000000000..d12d1c7c3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ba2cbf87ee4603a6777198044c5d9cb24b40597e852f893ce74a1453fb55eb1 +size 27589645 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000064.vtu new file mode 100644 index 000000000..480518842 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d49fa8ddd210216a6cecac3e0ced92996ba5c21e049b3be13596da45937cac2 +size 27590367 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000065.vtu new file mode 100644 index 000000000..0d51f2944 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b33b233ca10e9337864dff3d3119962d346ae3f5c2b204439b377d80f73e4aad +size 27590048 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000066.vtu new file mode 100644 index 000000000..fe8b1b84a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0557f8337dea2f093ea225d724ce7fde1948c6b4d249182b74bb673140fdf5d +size 27589777 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000067.vtu new file mode 100644 index 000000000..09b8def96 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b21a69d685fee8f4a7221bc1437d22abe285944deaacd01979147309943d08 +size 27590239 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000068.vtu new file mode 100644 index 000000000..5b22894c6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c66a01f2fdc0933be6f6cc4844b4d9cbc3ebd214d438d9ae92aecf53d7ae343 +size 27590101 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000069.vtu new file mode 100644 index 000000000..e11d905e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad8cf6e1979ffcd6835d86055314ea4067319708d6768363a90d50b687f1aea9 +size 27590494 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000070.vtu new file mode 100644 index 000000000..1dafcd24f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05655bde7f0f48a64447ccf4156a25611768fc29e26b61bed64abdfd220b480f +size 27589729 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000071.vtu new file mode 100644 index 000000000..acb4c4802 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39353631ad0517c616aa1a71c66640814da3d1c71bd62b8d6c57b7a1128f3fcc +size 27589996 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000072.vtu new file mode 100644 index 000000000..8ae765752 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f8a9320bb8b162815c1081208ec64da7d717636359378a143876db917188da +size 27590003 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000073.vtu new file mode 100644 index 000000000..0c31e4ec8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b17580be7651750e8ceb19bc8db570007195490ccd2c71567df7210d0c701fa +size 27590396 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000074.vtu new file mode 100644 index 000000000..6d63635ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f6ac7832ef841d0b3f8e3421659466628da8a39323c62d2594546f2086de19e +size 27590478 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000075.vtu new file mode 100644 index 000000000..101a4af74 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cc101230a3712c0e2e31ada77af4e9dc48577dc416df5f511518c31b9315faa +size 27589597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000076.vtu new file mode 100644 index 000000000..42ea7b8eb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8927e4bcc1459f33f1414eda6a2be8c3c07576ff0a9ae6f88771ce9364e0299 +size 27589728 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000077.vtu new file mode 100644 index 000000000..f7a6f7d17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a16a1aeda4618383f1312c891be9364fba1db17628a1abc777bfed48a7e2b4f5 +size 27590236 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000078.vtu new file mode 100644 index 000000000..1bf46de17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47a4bf3423b60db8de46af9118ce265cfd648ab9bedf3ff1c75c9b75b0966b2f +size 27589890 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000079.vtu new file mode 100644 index 000000000..6a339faa9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:050263122345c5bc8d011731dba0b6db0bc18e9f4ed94a4f89100dc9301df3b1 +size 27589567 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000080.vtu new file mode 100644 index 000000000..52e46720a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a306591801bf2644641e508487b5faaa05c433ada6a51992d09c3e23b7a64811 +size 27590283 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000081.vtu new file mode 100644 index 000000000..27964e187 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca8978fef2abdd872868f0b2f39efb13af3f0a6d1411a16b936790cfb4c8899 +size 27590439 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000082.vtu new file mode 100644 index 000000000..0f05a2db7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146f056f397182a8c4e470044fa85f93359ec8b849b7806ba7980161acb1f4af +size 27590030 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000083.vtu new file mode 100644 index 000000000..08c87f425 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f890a715d6916fec78e860858a515973f642787c5b470f8c662e5d44db73920 +size 27590079 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000084.vtu new file mode 100644 index 000000000..1cfd18ac4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec48f584336ad845d37d390d767b57ec3e5da90ffade7fed37aeb8a3c5745a98 +size 27590178 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000085.vtu new file mode 100644 index 000000000..0438f2054 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:535622ef3037a1789cbc5fbd132c3c9fbc7f8c1933729c777e815dea02831945 +size 27589613 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000086.vtu new file mode 100644 index 000000000..6f56146fc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79b4de3c7e5001f6fccda38b50d136a5354b7e5344745b20ef15470c9f43f682 +size 27589835 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000087.vtu new file mode 100644 index 000000000..ab7cdd824 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2a7514f4a19c2900380ad15db3c7bda60a344fb24085dad97ee3d5d52d0bd36 +size 27590068 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000088.vtu new file mode 100644 index 000000000..bd2acc58b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c237f14b1fb235b5c2c536a7f55626502abfa4447fd5f292c9eff99730452a50 +size 27590105 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000089.vtu new file mode 100644 index 000000000..a7b8a56a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a69459384293d44def32b7334b34f20b8d05c5889b13d3c0f34ff5ad7650ae99 +size 27590086 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000090.vtu new file mode 100644 index 000000000..23f0b8c35 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:201fae0ed01c53cc1a080bc8b4cd4cb0ae13cda725acd782c2fbf574152a8b36 +size 27590263 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000091.vtu new file mode 100644 index 000000000..378a7281a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b9d0b5da65f361ab373f73477184eb28151e952e8c88a2dc8a4996f29503a40 +size 27590075 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000092.vtu new file mode 100644 index 000000000..de9fbe6f6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70e8214072c048c391b789545305c5268ee1e3fa83c395ee4ec786ad33bfded +size 27590252 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000093.vtu new file mode 100644 index 000000000..cd6dab562 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f61539ee685a761120599f0043d9bafb9ebd7d21bc175f8d6adae20d22357b74 +size 27589849 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000094.vtu new file mode 100644 index 000000000..68f131ea6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7590fc3e1fdb1e5dc171d0aeb6748fa1d39361307eb096ce3672c3af505a6abc +size 27589853 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000095.vtu new file mode 100644 index 000000000..efcacaaaf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17d3d66f9124179b6ecb3e19782165be56c7a260d4120bca801ea6632081868b +size 27589766 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000096.vtu new file mode 100644 index 000000000..914903856 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4e067c2710a7c2d9db1a4fa385091144ebe96d4b7e8617a5a3562cc3bc55a04 +size 27589822 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000097.vtu new file mode 100644 index 000000000..8c2d0c4ff --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e084688193b3eb54f76f893bab60e82ec263fe38ef8fc9c66df132f6e7a3e80 +size 27589639 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000098.vtu new file mode 100644 index 000000000..c91065401 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62c17703290a3eaa647365aef33e38035e9369b4ff896006a2d7ea7de747aab7 +size 27589309 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000099.vtu new file mode 100644 index 000000000..f6f41c852 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00df45dcdfee73cc67ab9c399ec9c072e13f21a3e1c7afdacf4e07a9ef12487e +size 27590228 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000100.vtu new file mode 100644 index 000000000..0687b898b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17bdef5fc7c7b96012831d8106616d6e6371c17164a835516fb5c3fdbb7d7efb +size 27589895 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000101.vtu new file mode 100644 index 000000000..67afab62b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37743d9b55b7765c5d9e47434a1c82ef207d6a954f879a3215ab43c2047bd3c5 +size 27589600 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000102.vtu new file mode 100644 index 000000000..7afe0fdc6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbd844fd812890e298ef2aae48100e91f85af47ad481ec248be0dfd21f8e0213 +size 27590025 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000103.vtu new file mode 100644 index 000000000..61f5fc0d7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f6db2388287fc6be6a330d1806f4c636cca629509dbd06a7bfb858c06a8196b +size 27590601 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000104.vtu new file mode 100644 index 000000000..3414ef1b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:816f5081d447372d9a2fbbe114640c99270d5e0a6011ce6fa3b41d1b2a19235b +size 27590253 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000105.vtu new file mode 100644 index 000000000..97e1e3ca8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c580d3fd0b45a91f258594179634e7576ba3b10ed7f69be749e96427c43e45ab +size 27590127 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000106.vtu new file mode 100644 index 000000000..9be42627b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5695fcc7da44d13b5c25987bc32f2a7ef40adfec751f756bcf01cb8b9ce73e13 +size 27590096 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000107.vtu new file mode 100644 index 000000000..ea4cfec26 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b6b70c97b262fa694b6fd286594a16a2158b229033b40c3cf4b6145e9a344b0 +size 27590697 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000108.vtu new file mode 100644 index 000000000..4cf47a9dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb91fda6b8556353ede8b20f1523ec55f28cf539de739da081df90644935034b +size 27590486 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000109.vtu new file mode 100644 index 000000000..089d5f524 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:054a4e306c714eaa7e02e43c5294bd05d7007673a8b22d5f84e2bb992a74affb +size 27590224 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000110.vtu new file mode 100644 index 000000000..11fe55ea2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:869ee1acdbdaa94c36d51b6c5fd39c0cee18a542757388289cb990218ae6958e +size 27589728 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000111.vtu new file mode 100644 index 000000000..168471e46 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:addc44578b98ce3323524ef4af5ed547ef778b0068b280da17a050951e7aa81c +size 27590689 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000112.vtu new file mode 100644 index 000000000..2bc198c9c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2154a3ad9e20c1f4572e63e4173efd9b158d2026e234e8a88f4535ae3497cc6 +size 27590299 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000113.vtu new file mode 100644 index 000000000..67d208a76 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfdaab8e2acc25641de84a14ed06f12f608e0295266e40c2ad7ffc0b5820db31 +size 27590009 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000114.vtu new file mode 100644 index 000000000..36e0b4fef --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee297ea3af7fb89c1aaf4ea83f83b9362daf48ca1a0034ffe8132c78cf55aa00 +size 27590332 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000115.vtu new file mode 100644 index 000000000..57fa14920 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09f661acaca5e4f45516c0f13bc571cc6cceda4fa5ce3f7a31c2887ef103d552 +size 27590343 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000116.vtu new file mode 100644 index 000000000..b5c28f9ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d706325c76d6551fd6375ef9ce2c255a50a4a835f3dae0a806caee25bce70d1b +size 27589948 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000117.vtu new file mode 100644 index 000000000..f7deffa27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de6badbcb1292210d3bbb43f1e05ef2faa976fb704980871c7da7b50f801ad1e +size 27589867 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000118.vtu new file mode 100644 index 000000000..1f38b21bd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3a5634360d4e0776595d58ed544eaf4f06d58d093279e84685c8d4ac53e028a +size 27590246 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000119.vtu new file mode 100644 index 000000000..4ac624fa0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f697bbac5a29fd058b5f8a37a8815d3c9e79143af240692aec297c40e0cd76b +size 27590285 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000120.vtu new file mode 100644 index 000000000..c1f6025a0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d254faa979f3837a1a30e5c710fd492e3c49db09eda103c8e4b151930b30e7a9 +size 27589989 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000121.vtu new file mode 100644 index 000000000..5ec8f2cd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1449b36e968c132a1bf3ad85613611f75baedef671bc3792bb466613256c25f5 +size 27589151 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000122.vtu new file mode 100644 index 000000000..369df4e1f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff9d7102413b51bd0ca6a3d84714189a01d26efa81ae50501bff645a35deb2da +size 27589871 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000123.vtu new file mode 100644 index 000000000..00031f3c8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a54f6c52990ded997057024b6f9f398dfdd32ef28cdccb114d0d1f39d22dca7 +size 27590074 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000124.vtu new file mode 100644 index 000000000..3933e9b13 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45d48474f2c284780a12dbdb73481a1a30a609045648afc10cc9f5ebdfd81303 +size 27589694 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000125.vtu new file mode 100644 index 000000000..1b2921dc0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef34437ea55cdbc8c2dde69bd2ef062a34110a3748e21c3dfd6fa3e8897c02db +size 27589788 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000126.vtu new file mode 100644 index 000000000..751ee4a1c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:014a4870d4e074aef869514d879a38637244360ad750517bad4cb70c2ed46d00 +size 27590441 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000127.vtu new file mode 100644 index 000000000..85140516c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c234ec59e064eac6e5dbdf928e7d686160aa6fc162bef4e27aeb873674976009 +size 27589748 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000128.vtu new file mode 100644 index 000000000..ba01132f1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd62d374a5c0c2ea2868c1efcab6cb3c7f67cb7026525f2408c2807128204ae6 +size 27589775 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000129.vtu new file mode 100644 index 000000000..d4bac4bac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:402af6169440a18638aff693546ed12d3c3ed7ddaa6bf57529746a2759f45d5b +size 27589735 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000130.vtu new file mode 100644 index 000000000..a26c9dd64 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:078b1f4b4163f993d5d6197539be463243d604f16906f3214088432095777df2 +size 27589867 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000131.vtu new file mode 100644 index 000000000..f06902add --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18187d0620f5d60a80a15427ff6639404c92c885797d88418767887fefa67202 +size 27589698 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000132.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000132.vtu new file mode 100644 index 000000000..ba98e75af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000132.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c10a28f4ee00e98abe5a0964ff17288cefee2e112319b8443dbf9b6149c5e3a7 +size 27590203 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000133.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000133.vtu new file mode 100644 index 000000000..1e7de2008 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000133.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d190a3b1f214c56b9a397439aa65c34084edf99d563f125d102cf3392ad4871 +size 27589985 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000134.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000134.vtu new file mode 100644 index 000000000..d3edff58b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000134.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59305b1f69ecf179b2e50e568dd174b99d3e8de5cf8b8d825be0bfbfd416a728 +size 27589884 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000135.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000135.vtu new file mode 100644 index 000000000..7ee98211d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000135.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f65ac2038946d83b6962f1c9680399f7b09906bbeadbcad4eab7e51e87ea4de4 +size 27589540 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000136.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000136.vtu new file mode 100644 index 000000000..99017957a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000136.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ba24d199b9c3d22b22fcc18d7b1a7f2918001af1ab6d1a47e9b0397e00b821 +size 27590142 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000137.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000137.vtu new file mode 100644 index 000000000..49c797c93 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000137.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0e9941698acb5e6b33d759801e715142fb901d136ab74fcae769c444af0b5f4 +size 27590062 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000138.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000138.vtu new file mode 100644 index 000000000..5126ea0fe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000138.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:242a3bc5793bfa4fd6833cc5d0606afe51d6b89f445d89eced6d8a202bb4c75b +size 27589616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000139.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000139.vtu new file mode 100644 index 000000000..00ed787ae --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000139.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef6f16d586e585e5cf5e6a80bf0722390f6796495b6754c998b3f59ddcddb07c +size 27590201 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000140.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000140.vtu new file mode 100644 index 000000000..d3ab852c5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000140.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe4f9162486cdb93c63a0378778febc138a93031ee3f373fe0177665ad31d032 +size 27590294 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000141.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000141.vtu new file mode 100644 index 000000000..cecab4cd5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000141.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d2a7379dfb4ec8c03da01195f044971ed1733a9ce0f95fb76339a28ec75258b +size 27589890 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000142.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000142.vtu new file mode 100644 index 000000000..280b68691 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000142.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0efcb7ba40abb6eeb61effa3b4c73038eacc705ba7650e50d490a31719eac679 +size 27590393 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000143.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000143.vtu new file mode 100644 index 000000000..651fb9bfd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000143.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adb6982f7fc3f53b244f4a7493a5e13f04fade08851de88023c6dd15e1420b5a +size 27590142 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000144.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000144.vtu new file mode 100644 index 000000000..32bc1ecb3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000144.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:459f2ff5149901b24978eea10fe33d39b89a9546eb4bd77954bae92ed04b3b37 +size 27589971 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000145.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000145.vtu new file mode 100644 index 000000000..da43816fd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000145.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a227c7a8f203dd4e81da72ce43b8cd3ff116e2880800cf6e1f0cbcbe51d24d8 +size 27589053 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000146.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000146.vtu new file mode 100644 index 000000000..50ccc4cc1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000146.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c948a63159eaca284fae34d09d63dd526f2c097264c5030186ded28bc539341 +size 27589463 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000147.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000147.vtu new file mode 100644 index 000000000..9aa782bfa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000147.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a6f230a243d43d3633f35f953d954970c0089e4c877ab4805cdb1d0cb469f17 +size 27590355 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000148.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000148.vtu new file mode 100644 index 000000000..63c1198e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000148.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9ef45b3c8bc9903fc0d8117b9527962968361425357d984d9166b5012e4580b +size 27590043 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000149.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000149.vtu new file mode 100644 index 000000000..fd658916d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000149.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fadb139aeec739a514572d5653487218d0b8b097c9d9515df700c93a50c6b5c8 +size 27589694 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000150.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000150.vtu new file mode 100644 index 000000000..4c0fe8232 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000150.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90bca3a221527b4f4c66df47f2dfc83cf39bdaed7968d6ccee71a9895a149541 +size 27590479 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000151.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000151.vtu new file mode 100644 index 000000000..8b04eedd5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000151.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f842f6bc2959d243a57432c149f202991edb8377930d0e940dbcea09a63fa44e +size 27589876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000152.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000152.vtu new file mode 100644 index 000000000..5ed2a6765 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000152.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d129640d65c6ffd448af02732c0acf36da26029b40085c8c1b980a2effac4b93 +size 27589637 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000153.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000153.vtu new file mode 100644 index 000000000..bf86ada03 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000153.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:393ee17b5bad44267b91ef0b4e7d558d6f39582d206834f3faf62ddfa6181054 +size 27589312 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000154.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000154.vtu new file mode 100644 index 000000000..442a6a1f0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000154.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3de11227c923e4a509504a5742d4d811fd3539e10f242e6c45b5109aa81f70d3 +size 27589574 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000155.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000155.vtu new file mode 100644 index 000000000..74241cf31 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000155.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87e80e2d91936c63e255b667d8117ce276b927be9629d21abc9ebf54152a9e4a +size 27589718 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000156.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000156.vtu new file mode 100644 index 000000000..68e416b69 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000156.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b73f31aecc1a77449e8eb3b615a2bf41801447faee19ea35eabdea8fe6fb390 +size 27589516 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000157.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000157.vtu new file mode 100644 index 000000000..c92e1e22e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000157.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c2071a280495db99266b6668c4a7d9f3735fd4e3181efccd958de47d5530bd0 +size 27589664 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000158.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000158.vtu new file mode 100644 index 000000000..02a877b1c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000158.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3703a8701f4f908bd7dbc42ea89b572671617fadb5ae4a2240990644f6355f9 +size 27589402 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000159.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000159.vtu new file mode 100644 index 000000000..b4da28f56 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000159.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ece7872e5033ec76551fc6815efdda2177b285e0fd03b2c76584256d351be93 +size 27589958 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000160.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000160.vtu new file mode 100644 index 000000000..8bc0c2bd6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000160.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ce22b21135ee8bd32159f8e2823ad86d273d86d7f40c793c8f952f7f18e987b +size 27589301 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000161.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000161.vtu new file mode 100644 index 000000000..381c57c0b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000161.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31c1235554898eeb3dd5e9db71927e3197d072cacaaf43e7ce6944156d080416 +size 27590027 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000162.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000162.vtu new file mode 100644 index 000000000..52587ae7e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000162.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:030ff42c53f124951b23d5b723933e0632dda9ac735de99ad2d06a2f92a8f29f +size 27590056 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000163.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000163.vtu new file mode 100644 index 000000000..4c242e4ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000163.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc53444bb5d8796ad92caf001accd42494b0b88dd05c4ca684ae0b290dac36e3 +size 27590089 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000164.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000164.vtu new file mode 100644 index 000000000..7841d8183 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000164.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a3eaba2a24dd9fddf746ab7228910741e69f9ec07ad6f4a51b88df82f685d4 +size 27589857 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000165.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000165.vtu new file mode 100644 index 000000000..a8a4fb6fc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000165.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8090b94c017579ff2601f8ca1f3b4a7d726403ff0d81acb929fe68db08983748 +size 27589710 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000166.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000166.vtu new file mode 100644 index 000000000..adef2f79f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000166.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:567f99c0802ebf1727e72d1b9d464abbd5efbbd21d2a2c2cda447109655be7f2 +size 27589687 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000167.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000167.vtu new file mode 100644 index 000000000..ff0bca056 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000167.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d7c41baf16690e45967b16468d6dea5eadf26931a2d07b1d83b630a6106015a +size 27589879 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000168.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000168.vtu new file mode 100644 index 000000000..a05baa2d1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000168.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee15e8b3a77c976a6dbd7c7991c091ac01d745a57404ba811417747bd0a0254 +size 27590106 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000169.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000169.vtu new file mode 100644 index 000000000..b97d5f11e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000169.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42569fd95e991b301e96e726b75f1790f00aa80979540200c7b797d05abd42f5 +size 27590095 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000170.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000170.vtu new file mode 100644 index 000000000..1aa2e96d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000170.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16d8a16775ac981d0b30b20279e32dceaa23991e84206b9ac7c84c1604283243 +size 27589344 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000171.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000171.vtu new file mode 100644 index 000000000..b31378949 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000171.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f34d16a57708d119f7ae526c5cf25a8ad39091814063935e8de3af0b793e08ad +size 27590061 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000172.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000172.vtu new file mode 100644 index 000000000..e551f5e9e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000172.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd6ff1b3ff45ca1ee18739b9685b535e5cc1eea181f58b4cfdd76077930fa7de +size 27589522 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000173.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000173.vtu new file mode 100644 index 000000000..99348b932 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000173.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:154a0d8fa5c62181d7d10f0fd9903e8b07ff107f4f7f9ee3d2f13421469cd899 +size 27589739 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000174.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000174.vtu new file mode 100644 index 000000000..7fb1280d2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000174.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2752fc9a81bbcae59c2a60e3e3ec0b13252cd638f7f989ba5260e957a3b1e1ea +size 27590236 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000175.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000175.vtu new file mode 100644 index 000000000..18c63f301 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000175.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1469eb16f8eddcce77ac5f9bf120686ef9cb899d500ba56cb01cafdf9172e120 +size 27590140 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000176.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000176.vtu new file mode 100644 index 000000000..cf8276c08 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000176.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5c70a6457ea6988ce5e80bcef67d5832d644796b9ecac73482435bf53286d4b +size 27590200 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000177.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000177.vtu new file mode 100644 index 000000000..dfbe5cb90 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000177.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab61e2521592d180ded1643ad1fa0815c3927ae464c3d1bde914aa349bc1e883 +size 27590192 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000178.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000178.vtu new file mode 100644 index 000000000..51a065221 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000178.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f00b41445f9719c62174584dc074a8e5e49bd63911ef7a85fb7eb2ffac6582c +size 27590032 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000179.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000179.vtu new file mode 100644 index 000000000..1e6b28a28 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000179.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3551d02df646def3970141055f60b1b05909d8bc1ac0dbbb9487aa0ed9b1611b +size 27589962 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000180.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000180.vtu new file mode 100644 index 000000000..9cfcbf2ec --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000180.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acbfcaf5e39a21e500c1e8b1b0e0cb8827dc4abb0b9345449399df3f1bebbc83 +size 27590564 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000181.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000181.vtu new file mode 100644 index 000000000..fd1785b04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000181.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1fae4d7fe54f1debc136f378c703741cf9d1e1812d07fdb5447640bdf87943d +size 27590622 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000182.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000182.vtu new file mode 100644 index 000000000..662763f6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000182.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acf727c7aae04a010d98dad1f7a5859902590efe054ffc6b03b0aded7e7e37d6 +size 27589461 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000183.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000183.vtu new file mode 100644 index 000000000..7ac833b5a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000183.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d62b02b77aefe7cf4da959f6ccab2b19ffac87c2bad40d0b8d6c0e0bb8984fc +size 27589979 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000184.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000184.vtu new file mode 100644 index 000000000..7166f08e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000184.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91e0999152121af5f95d23c9bf7c85a275d696ecdb18c8c69e61adec3478e30d +size 27590298 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000185.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000185.vtu new file mode 100644 index 000000000..cab41ec11 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000185.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:562beca2a405e6779f6591e17eb052e428952f1d2c2be432c63e3b466858cd1b +size 27590514 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000186.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000186.vtu new file mode 100644 index 000000000..9c7e1d78d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000186.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c42cbcfce1791571d76fbf8a80e906c25ac002c89519e0d9188f0075271275d +size 27590080 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000187.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000187.vtu new file mode 100644 index 000000000..ca227d700 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000187.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92b62aacd65bc96b2b4298dac5acb7f925f532eca32e6d1ba14f954dbab016b7 +size 27589972 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000188.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000188.vtu new file mode 100644 index 000000000..8c41dd6b2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000188.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f91b1cb1ab907c1a40a758f142e10637a0c1e97acbc0d7c4cc33490986e96ab +size 27590600 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000189.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000189.vtu new file mode 100644 index 000000000..898ee5cd3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000189.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e826eef2ba398f41bb6f7c930e862d94f4c9cb407dcb92b2cd26c2b756ffe92 +size 27589951 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000190.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000190.vtu new file mode 100644 index 000000000..2304bb90f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000190.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb6a8570b7701bac178c90ef77e645987998dfae0a0aebee6336392b260d4c3e +size 27590249 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000191.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000191.vtu new file mode 100644 index 000000000..220be0881 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000191.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61d01a13c3faefceef7f04e7322d8aef8c0945c6491d529c5eaacbc46e074662 +size 27589252 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000192.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000192.vtu new file mode 100644 index 000000000..13b7c5df9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000192.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4518c461e103e62c8f960661574f2da3022131514ef279346521aee27fda733 +size 27590001 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000193.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000193.vtu new file mode 100644 index 000000000..225b5b936 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000193.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7284b894ac882d514097eea6fcd20b8f875dab3aff6d552113cf5e0dbbed10b8 +size 27590428 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000194.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000194.vtu new file mode 100644 index 000000000..0266ccb85 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000194.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e60e20bbf2fb2b4147f7f479a4d8802feb08d0a34129859a57d7b78f5d6dcc3 +size 27590340 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000195.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000195.vtu new file mode 100644 index 000000000..3d4de5795 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000195.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8971b2d48624e9e06bc9c986f7daac637ca237b411f6ce13350513031dc09bdc +size 27590463 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000196.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000196.vtu new file mode 100644 index 000000000..70c829253 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000196.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da07e11459929d6f7327a9824e890506959c9808e4caf08857f654251a9d8f43 +size 27590033 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000197.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000197.vtu new file mode 100644 index 000000000..43f25a5dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000197.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc28860f5db1dd610de26b41dcf614fca56033adcb5cb272f8242b7e24c82180 +size 27590401 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000198.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000198.vtu new file mode 100644 index 000000000..9fe87c63b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000198.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c7df33138e2d626ef6a777af57c930b29d2a0d6e6fd1580129c13648ead3790 +size 27590148 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000199.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000199.vtu new file mode 100644 index 000000000..07876c4b0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000199.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b9880ba4c7f7c2bad89aff89337186f62ea2ac9c65a69320e23ab43c323c8d0 +size 27589530 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000200.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000200.vtu new file mode 100644 index 000000000..e2f735591 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000200.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:837fcd37d91c1f3c1ed2b09ade42a3ddb6531a061ba8b7bb44b9c2c31a573ccf +size 27589663 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000201.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000201.vtu new file mode 100644 index 000000000..0d9e1b92e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000201.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a967d7ca332d0fda24897ef14ccf7b29324c4438d368828c36f31ba766103d7e +size 27589876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000202.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000202.vtu new file mode 100644 index 000000000..1c01c1cf7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000202.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:834fa205c12f111c975930d594115aa4925514c65b2b4afb2824b7338c6d1f86 +size 27589876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000203.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000203.vtu new file mode 100644 index 000000000..42ac6623a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000203.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25b7245ff1ecbcb028effe1f9f6a558081030f77dfe6621ade67ab67bd7b4d46 +size 27589919 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000204.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000204.vtu new file mode 100644 index 000000000..802672f99 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000204.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be0c688050c9bc9e5f1a5f90d410df7d15a0a3632fe1275d8a8de4c180cfec78 +size 27589828 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000205.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000205.vtu new file mode 100644 index 000000000..270f0eb52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000205.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bf5023166dbd396dbe98d4a5c486430fdf44496df795cdea0c1cf91db9d811b +size 27590224 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000206.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000206.vtu new file mode 100644 index 000000000..1f244a583 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000206.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1da2bc26a12f0bc418fdc582f853105df1cbba72e63dd67320f1ae7529f137fe +size 27590262 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000207.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000207.vtu new file mode 100644 index 000000000..d108846ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000207.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac57e4905df7059ca85c15a3b01f6dad9be2311b2970b1e7a444bcafce3ff3dd +size 27589627 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000208.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000208.vtu new file mode 100644 index 000000000..e53b95d78 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000208.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bafef0520f7117b4a14d5dadb211b5bc15dfc8197933c128f720f7859e962415 +size 27589333 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000209.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000209.vtu new file mode 100644 index 000000000..b45fc69a7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000209.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8dfe8c496c68928b28f55e1fe58d3af7560fdab58a2e9ae68ad26f15926a0b6 +size 27589758 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000210.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000210.vtu new file mode 100644 index 000000000..93795f2e2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000210.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a9301139f644a0bf5b8b279d31935c93a1ecda87e8d11525acac736a7f7f196 +size 27589776 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000211.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000211.vtu new file mode 100644 index 000000000..059bfa5e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000211.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32ae7764e3bf6148fff6f5ffd3e9c68572a80bd08ed461333f97b123c92d9788 +size 27589799 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000212.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000212.vtu new file mode 100644 index 000000000..61c58765e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000212.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba660f1d7f26e77038f4739116fcf287f5fdf8bc3ee12cfee19e7eb8396795ac +size 27589792 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000213.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000213.vtu new file mode 100644 index 000000000..2d646f390 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000213.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76da4a7bcfefd8481383c8b8a881c156de7f9468610ed0d4830b03cf7d0af174 +size 27588961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000214.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000214.vtu new file mode 100644 index 000000000..555940e58 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000214.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20756e4df9ae1125efd74761a8a4b4ecb240fd0930838e55388066d31e5eddc3 +size 27590124 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000215.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000215.vtu new file mode 100644 index 000000000..0bcc79725 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000215.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ca33ef0f9e7e1bda27f7cbc4b5b149ca7a2623a69259a13315381ed5a1ea496 +size 27589776 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000216.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000216.vtu new file mode 100644 index 000000000..0122c25c8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000216.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c737705164311759ceaad87af94f820b0e8bfa34f3786a8aca7835b1efd9c3a +size 27590423 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000217.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000217.vtu new file mode 100644 index 000000000..5f5f079de --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000217.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:688ebecb4bd2441235b4867a91c6566867efe6f20a4d524f9fd34d1276bf3bb2 +size 27590134 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000218.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000218.vtu new file mode 100644 index 000000000..f2f601d87 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000218.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44a0404a5c02a772de50817ca5174dc75c89a183185fe2d54d6a19021504ba52 +size 27589547 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000219.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000219.vtu new file mode 100644 index 000000000..a78134b5c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000219.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f3cef0773d46d4dc0f45bf0252acd5c3d275ec70d3844dbeef82a8505c656d +size 27589515 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000220.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000220.vtu new file mode 100644 index 000000000..8514700df --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000220.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a27f5b4f1841130f50b545338b20347652ee34c4d6dc44f9fffd97b81078f098 +size 27590258 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000221.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000221.vtu new file mode 100644 index 000000000..ed2b94300 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000221.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d3e6fb3472084f293525449ed846c2336e8702d2c05a118491a505ff3c4ddf1 +size 27590036 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000222.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000222.vtu new file mode 100644 index 000000000..f651eace9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000222.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33ccb2667d8ac1ade6d8b8ea3f694984b0d8f35bbd26e0f193f64302323e78a0 +size 27590480 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000223.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000223.vtu new file mode 100644 index 000000000..2926f0269 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000223.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d6b1907201e0604074c2a66cedac4b11ce003f9d0fadcf826f35a4fcea1c6c7 +size 27589812 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000224.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000224.vtu new file mode 100644 index 000000000..16a31cd9f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000224.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ad9b3106e4f197ced824a375a4b7e59026144b52da2c11bc988f47f9acdebff +size 27589981 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000225.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000225.vtu new file mode 100644 index 000000000..3c143ea91 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000225.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99845956cbb5c3c8aaf69d33cd30fc11532b38e1354a131ac7ed0a725f229eaa +size 27590360 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000226.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000226.vtu new file mode 100644 index 000000000..a7b9b8f75 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000226.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2e59581fc3c557080c6dc504a17a4d6bf06d2fc38735812c1773b93d9582b0f +size 27589616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000227.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000227.vtu new file mode 100644 index 000000000..47644d7e1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000227.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8b7789926b0983b249c934090a030362fc40e50dd7b5f09c6188d10ec110901 +size 27589478 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000228.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000228.vtu new file mode 100644 index 000000000..e0e518102 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000228.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd7a8a596c7c33babd45784ccbebe8aaf8f318afafcb6ae7d0805f0f88da20f8 +size 27590206 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000229.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000229.vtu new file mode 100644 index 000000000..a89624663 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000229.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fb217f19d82cafac2478694b22d0cc88107f1c8c3d792cb6f7d516392b56ffe +size 27590914 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000230.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000230.vtu new file mode 100644 index 000000000..4d809eee2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000230.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54c176e8c4d83758ec2d057316585359bdac6e9dac23b3300d94ca42a7e726fe +size 27590044 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000231.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000231.vtu new file mode 100644 index 000000000..531b2b508 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000231.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ea38a0b6ffccece0d31855b3ae731ef459052ad63a3d44f9beb68c5c5c0560 +size 27590383 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000232.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000232.vtu new file mode 100644 index 000000000..e1d988f61 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000232.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a20ac0d59d66703298981c3388ab81b11e167cb9650c39ff890852e9d0a0727 +size 27589758 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000233.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000233.vtu new file mode 100644 index 000000000..25235221b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000233.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68a85df6a22688de9acf4efb8d666f10de75988fce281b188e3b337966406e93 +size 27589746 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000234.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000234.vtu new file mode 100644 index 000000000..dcae5e6c0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000234.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2320946dc311090e7fde833837676892145c9a03b95e1fb0438c20718dbdb7be +size 27589813 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000235.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000235.vtu new file mode 100644 index 000000000..646b8f2fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000235.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3de82954792b21ad97423067bdd781cbefd44790d5f27a6bb21b99adf5e07156 +size 27589989 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000236.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000236.vtu new file mode 100644 index 000000000..fc86e777e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000236.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:577459d3726c1d313f124de08dbf0db4d4578322ff18ea5fe74f278718253448 +size 27590379 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000237.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000237.vtu new file mode 100644 index 000000000..f3299b8af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000237.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a38af0c274c6de24cf2adac5ae24d996e9ea8b85b2fb2acdfac4e6337a1023aa +size 27589985 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000238.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000238.vtu new file mode 100644 index 000000000..589d8018f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000238.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26e749db2c87218b07d067171c3fc46a7128b70b18c1d209025a3cb358e528f8 +size 27589698 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000239.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000239.vtu new file mode 100644 index 000000000..b34993db1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000239.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a62b24b78114d95e7b1046ca4d4a7f54f69a563168b198651c6b6ba4ccce0a65 +size 27589721 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000240.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000240.vtu new file mode 100644 index 000000000..edaec9a41 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.d/20-inverse-face-smooth-w1-max1-lr0003-beta10_000240.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3295c57bcef16ac6a7de9f9caff046e09d994a19a9ef88292dcbf400ba775ef4 +size 27590114 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.series new file mode 100644 index 000000000..11b99ff16 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fbcf4036b16526aafefd63d6ff971d9cffbf8f020d7ad8eab890b0006ba8adf +size 31369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10-checkpoint.npz b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10-checkpoint.npz new file mode 100644 index 000000000..931ab8c79 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10-checkpoint.npz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac9f76186c6eeb966658d7e1ebe9fe7a330615c8a487272e8627e14de260e305 +size 4216642 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000000.vtu new file mode 100644 index 000000000..8e37cfd03 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d06ab8d15bd2680c20524728bbe138c9b627b9ff9e125bdf2dfa83a815c831ef +size 27590004 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000001.vtu new file mode 100644 index 000000000..e7e1f6792 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:157ca3df97197a93283b8714bce0acc3ed121342fb507133f9df778c1d6ea757 +size 27590369 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000002.vtu new file mode 100644 index 000000000..cc6bcce1a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d76328b799474c4f257e15d8271a4046a6564ab5f27bfb08928818665759cdb +size 27589545 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000003.vtu new file mode 100644 index 000000000..20337ea52 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:624fef5914ae4b75236c2d28cc585c8dc313222e333f6d2007a6b8e215e37f59 +size 27590284 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000004.vtu new file mode 100644 index 000000000..a315d3d2c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae95926e0d4b8e2ec164fae8fea5ae92ea327e543c6573464bd4931181c276b +size 27589701 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000005.vtu new file mode 100644 index 000000000..dffb153d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd2f2eb9d9125567bc58b881bced7502fb1cbbf1de8b5184996890249d8e20b8 +size 27590046 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000006.vtu new file mode 100644 index 000000000..3c061f506 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7980f909cb720fb72c266941614ce8af75c886c6726ec7137a552d0764a6ce6 +size 27590191 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000007.vtu new file mode 100644 index 000000000..429e09377 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4fe2fd9c0a8e76884a103327197500cc70f40ba80abb7fcbe26dd3bfbc29b35 +size 27589658 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000008.vtu new file mode 100644 index 000000000..e5269147e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:445975fe27502c8e0c3ca0535b8de89c6a419b17d164641e95b559ddde1a09db +size 27589745 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000009.vtu new file mode 100644 index 000000000..162283d1d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.d/20-inverse-face-smooth-w1-max2-lr0002-beta10_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62c0d945e09a7e3141eae85e6ad84e27442b09b661bb7519063292207f530c6b +size 27589912 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.series new file mode 100644 index 000000000..5cb0456e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ff67caff4c6457195b9b356acf3e1f73af00872e532a07228efaa98ec094cfc +size 1329 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000000.vtu new file mode 100644 index 000000000..5436c1e04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6304c4b470d7f5d18b9c71eca6acfd5ac3898f9cd8e38f65eae1cbc1944dcf8b +size 16097909 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000001.vtu new file mode 100644 index 000000000..f9f4e1f1a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e2f8edfafe7e98ee63af5a730bde8f786bf11f952948bf6c617769cf67a14ba +size 27605497 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000002.vtu new file mode 100644 index 000000000..f2f233015 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67008d4dc8f3059d03d3b4595086ff110a982199b6522861eb3f6ec55b1c063e +size 27608345 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000003.vtu new file mode 100644 index 000000000..dd6d4b733 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c7b57c0fca5eabdb453fb7d5355b9100b7a4c985f29a72c485fb75bbfc829a1 +size 27611118 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000004.vtu new file mode 100644 index 000000000..d2d4f4197 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aff491378b4125a8ea3cf9687889d2a2202cb66d04bd4a1bd5100387d85d0084 +size 27611628 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000005.vtu new file mode 100644 index 000000000..2c06e8d5e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f399c9dd9559231a101b5f457311bd90d6af8f297216a9a9842a48af6a0d640 +size 27613469 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000006.vtu new file mode 100644 index 000000000..6f4f0cca2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6fb7ec9c958454dd02e34f695f226b94a91bfae882b26577e92a7063a79061d +size 27613610 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000007.vtu new file mode 100644 index 000000000..52dc76e8f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ca36a405e727721728a0439c15f2e238b52b2dd0df7c5b2b63c0dc30c63703d +size 27612541 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000008.vtu new file mode 100644 index 000000000..48f445521 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f053a4b540a1d78f7d43ad9f354c81101157ad6b05fb005ca059428697e7afcd +size 27610966 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000009.vtu new file mode 100644 index 000000000..c755f7463 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:477d33b5e70ee0045c12d543a8a8f9d6a7e2e7ac5462368932500a8fd7442d3e +size 27611068 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000010.vtu new file mode 100644 index 000000000..1ce613b8b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0dcaa8616bcc3da1a006172684e2ea7d54c8d0cf8fbf201a279e07f5099a2b8 +size 27611247 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000011.vtu new file mode 100644 index 000000000..4c60a192c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81939f4f1915a3bdac8b223c7ac2802177ae73cd5904d2df2c62ae3cf48e23ad +size 27611163 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000012.vtu new file mode 100644 index 000000000..f0aa28185 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a83a1fceade3b239bd601714636af1e7363dc080eab1a17d9cb043ea45ad4397 +size 27610228 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000013.vtu new file mode 100644 index 000000000..ee424b441 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c28936f43bd63600a34764a4600f09ee27ec82002c261ed46d9e0465a259c02 +size 27606208 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000014.vtu new file mode 100644 index 000000000..f849123af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:229d1cd3d3265c0103aae58018895210abea3face559fbb08fe4ff1bbc448679 +size 27604347 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000015.vtu new file mode 100644 index 000000000..3fc4879b4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c8c60030e9b0c416c61306e76f5cb6f7bd4483f9a199bfefd00f10f9b6c07d1 +size 27603904 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000016.vtu new file mode 100644 index 000000000..1a00ab22f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11bb67a7cab3890c7242ff4cf713694e4126da785225ae68fa1bd3ba90d5e3e0 +size 27602580 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000017.vtu new file mode 100644 index 000000000..ad16e05e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3a58c471e516bfdbaa54defb3b6afdfbe4df903778bcaac2e6589799c6290e0 +size 27603348 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000018.vtu new file mode 100644 index 000000000..0ce876489 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16cefd7d0bcf62758d1208331667b7afb85a80dc26912786daf5db1f297fc860 +size 27603401 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000019.vtu new file mode 100644 index 000000000..f3f294a47 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee85cf5b66146eb1ae985b560be934cf0e8131cda103dae2344250c8054a183c +size 27603017 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000020.vtu new file mode 100644 index 000000000..39a3d5fa8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89818c35a2625508cfea68bf1c75bdb9a0368037302dbc82ba81939c6316f887 +size 27603199 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000021.vtu new file mode 100644 index 000000000..665e13c12 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da30a17e94b2c4ce73b9df3f479be834ec7f4440cefbd0b626d3190fade3c4a4 +size 27603334 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000022.vtu new file mode 100644 index 000000000..a72100da7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ea0a96620c7e259895e93f176410c8e1d8dd721b640bfd2371b3bb1ba55da93 +size 27603602 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000023.vtu new file mode 100644 index 000000000..360baaf9a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65855d38ef9cb5f9773e0ccbc05d9fd0ee3c9ea78b21c05066c964ae490fcd6e +size 27603421 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000024.vtu new file mode 100644 index 000000000..7937fd847 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d479a55c01f5002bf16c8cf2f902f210c80b10ae594cf2b56f82ee746c9b020b +size 27604366 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000025.vtu new file mode 100644 index 000000000..0178bb7ed --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e57762aeee2aca1192c49d63b129d9ea1cee94ce1e54e9783d722b3814698cf +size 27603204 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000026.vtu new file mode 100644 index 000000000..162f4168e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3239c563aa82c1a2540b1a4f9ca80bc07c0d89039cfed178d46aa74c85dcec6 +size 27602929 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000027.vtu new file mode 100644 index 000000000..52ae4ed6c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c45a407bda2f1bdf3e447966837ac552ea664750ae6a10a745be3b18839b91a3 +size 27603122 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000028.vtu new file mode 100644 index 000000000..3cd92693b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0988ba380fe67b417b1f26401dc5ebcb2d161bcd01454c9c6c2d359ab4df9218 +size 27603277 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000029.vtu new file mode 100644 index 000000000..8c642ed7b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a41b3ec467399d6ff4fcbd2a6c8a8948d2dc54c17937211903a21e9e1db71da3 +size 27601576 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000030.vtu new file mode 100644 index 000000000..3733a4a05 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7350fa3a372442c1333885b98f622f2a5ffcc497dc06121e3eb7a1676e76525b +size 27602114 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000031.vtu new file mode 100644 index 000000000..f5cafd922 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b10b8360869c24b2311b2f32b43b82e07a8add439b7ff998f4620f5a68c1ce36 +size 27601784 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000032.vtu new file mode 100644 index 000000000..e32eb3ac6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f42ea18da4ac70885d61ccd965ed7b7507d577d37610d81530a8fe15950624f2 +size 27601319 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000033.vtu new file mode 100644 index 000000000..910ede664 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.d/20-inverse-face-smooth-w1_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68b00072ba2f7147d3e42b3049b23a1ad3769312f9ff18662c296bebdd97dc5e +size 27601662 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.series new file mode 100644 index 000000000..0214638ba --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a50740147c60a4c90b60dc4fc906c665c2813eba9e86d43eb4cf03f84f25421 +size 3157 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-step191.png b/exp/2026/05/20/inverse-face/data/20-inverse-face-step191.png new file mode 100644 index 000000000..025d15516 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-step191.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00b1f06fdf998df85ed9fd9b133e604d5efdd1a8268d57dc5d1d0f7d3a4381dd +size 134850 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json b/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json new file mode 100644 index 000000000..ebdafb629 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json @@ -0,0 +1,128 @@ +{ + "mesh/n_points": 58651, + "mesh/n_cells": 253876, + "target/n_points": 6787, + "activation/n_active_tets": 58494, + "activation/n_params": 350964, + "optimized_parameterization": "per active muscle tetrahedron ActivationInv, 6 DoF", + "optimizer/steps": 0, + "best/step": 0, + "series/frames": 1, + "stop_reason": "max_point_error_tol", + "time/total_s": 10.395348858000943, + "time/inverse_s": 5.497315172993694, + "time/forward_s": 0.12167940501240082, + "time/backward_s": 4.467217666999204, + "time/optimizer_s": 0.0, + "time/series_s": 0.8184639490064001, + "target/displacement_mean": 0.2500759838629745, + "target/displacement_rms": 0.35147863579652416, + "target/displacement_max": 0.9656781194874481, + "loss/final": 0.041179077140461894, + "loss/data": 0.041179077140461894, + "loss/smooth": 0.0, + "loss/regularization": 0.0, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_smooth_pairs": 100783, + "best/loss": 0.041179077140461894, + "lowest/loss": 0.041179077140461894, + "lowest/target_error_max": 0.9656781194874481, + "forward/all_success": true, + "forward/failures": 0, + "forward/max_steps_used": 1.0, + "forward/max_grad_norm": 0.0, + "forward/max_relative_grad_norm": 0.0, + "adjoint/all_success": true, + "adjoint/failures": 0, + "adjoint/max_absolute_residual": 1.3088265180781262e-06, + "adjoint/max_relative_residual": 0.0004601647392445039, + "target/error_mean": 0.2500759838629745, + "target/error_rms": 0.35147863579652416, + "target/error_max": 0.9656781194874481, + "all/error_rms": 0.17590803540004343, + "all/error_max": 1.016519397545366, + "active_activation_inv/mean": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "active_activation_inv/min": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "active_activation_inv/max": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "active_activation_inv/rms": 0.0, + "trace": [ + { + "step": 0.0, + "loss/total": 0.041179077140461894, + "loss/data": 0.041179077140461894, + "loss/smooth": 0.0, + "loss/regularization": 0.0, + "regularization/activation_smooth_weight": 0.001, + "regularization/activation_smooth_pairs": 100783.0, + "target/error_mean": 0.2500759838629745, + "target/error_rms": 0.35147863579652416, + "target/error_max": 0.9656781194874481, + "activation_inv/rms": 0.0, + "activation_inv/min": 0.0, + "activation_inv/max": 0.0, + "grad/norm": 0.00010066539904416499, + "grad/abs_max": 9.323512353198527e-06, + "optimizer/steps": 0.0, + "optimizer/lr": 0.03, + "best/step": 0.0, + "best/loss": 0.041179077140461894, + "best/target_error_max": 0.9656781194874481, + "lowest/loss": 0.041179077140461894, + "lowest/loss_step": 0.0, + "lowest/target_error_max": 0.9656781194874481, + "lowest/target_error_max_step": 0.0, + "stagnation/no_improve_steps": 0.0, + "stopped": 1.0, + "time/forward_s": 0.12167940501240082, + "time/backward_s": 4.467217666999204, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 1, + "forward/grad_norm": 0.0, + "forward/relative_grad_norm": 0.0, + "forward/grad_norm_first": 0.0, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "adjoint/result": "success", + "adjoint/success": true, + "adjoint/solver_count": 1, + "adjoint/best_solver": 0, + "adjoint/absolute_residual": 1.3088265180781262e-06, + "adjoint/relative_residual": 0.0004601647392445039, + "adjoint/solver_0/result": "success", + "adjoint/solver_0/success": true, + "adjoint/solver_0/steps": -1, + "adjoint/solver_0/info": 0, + "adjoint/solver_0/absolute_residual": 1.3088265180781262e-06, + "adjoint/solver_0/relative_residual": 0.0004601647392445039, + "adjoint/residual_converged": true, + "time/series_s": 0.8184639490064001, + "time/step_s": 5.431274043992744 + } + ], + "repeated/forward_failure": false, + "repeated/adjoint_failure": false, + "passed": true +} diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu new file mode 100644 index 000000000..a0976d598 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5560033d78e86ba038f999e879feb171b76e77f76ba82068f125d862985b600e +size 13728000 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu new file mode 100644 index 000000000..cca4e13c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:752b8163ef2fcbeb3056bb60e25b19d92a8d127455229b082a72c1946c6e1983 +size 16097446 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000000.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000000.vtu new file mode 100644 index 000000000..1be3acaeb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87aeab3c776f591b107f08e596db008361412add83e78065378d9c2ab032b54a +size 16097915 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000001.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000001.vtu new file mode 100644 index 000000000..f574ddef6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2444592aa0af9705dcf995aa5debdab63ca56a988b5dbc143d4c9912de0c7ed8 +size 27606476 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000002.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000002.vtu new file mode 100644 index 000000000..4b3ea85e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000002.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ead8cab0c8225f74e0303288ca753d347a7634476bdff29efc344dfde512d55b +size 27597703 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000003.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000003.vtu new file mode 100644 index 000000000..ae126d4a4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000003.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8434b18b4dae64ce7d21a15fe027c6f79390d15db544fa817f5363735ac92ff +size 27598095 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000004.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000004.vtu new file mode 100644 index 000000000..3eebf28b8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000004.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f426ee8486ec8a0d17533d5c75f7f7fd3e7613a7f5b056b7b8cbc2283ed83a9 +size 27592277 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000005.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000005.vtu new file mode 100644 index 000000000..e230115dc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000005.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00fc9b15cc6798581a393d0967167433a38a3d71337a8ef392a62525b3a55e94 +size 27591861 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000006.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000006.vtu new file mode 100644 index 000000000..4d7f55ad5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000006.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:488b456493c3fa6197b3a33bc165a3689233c31a28f8d00e26da0571910f39ac +size 27596313 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000007.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000007.vtu new file mode 100644 index 000000000..a3e340a07 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000007.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dfeb347cc546ae0926c87f9ee537fa243ed9531dbf8c0ba4a68cee636d13606 +size 27595757 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000008.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000008.vtu new file mode 100644 index 000000000..fb4517008 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000008.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68acf5f8a478fdd5f561871eb156dd17cad98a77199d0e10f6a3384d0b1c9559 +size 27592619 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000009.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000009.vtu new file mode 100644 index 000000000..77da02499 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000009.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cdac31559fee3a39f4f2f50bfda9d306884210c9c6867b135df428e8af377d5 +size 27592616 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000010.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000010.vtu new file mode 100644 index 000000000..1db69e976 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000010.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6886a4e2a8b22789d0a54f2ac23eefbdcd838ec11adfdb0dea6fbc9836e5493e +size 27594736 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000011.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000011.vtu new file mode 100644 index 000000000..621e7e98b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000011.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b9844e57bc639cdb93e3913d2ad23ae4ffdef455bdf8242969fa3b6e6e2d27 +size 27595568 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000012.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000012.vtu new file mode 100644 index 000000000..18841d4fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000012.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:780e8db1818bfd3fd5a2f7af482306649061805ce812782da06286353f85d4da +size 27591440 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000013.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000013.vtu new file mode 100644 index 000000000..c797f2c84 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000013.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68f9521d73e35473933ba9504aa42f6d4a833548a3f9674aeb8e16fb6ad6fa20 +size 27590667 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000014.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000014.vtu new file mode 100644 index 000000000..f0fc338ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000014.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d1536a1b8dc58c4623537c1f5d5ac7a2910fe3317d64586b08436fee09a916e +size 27589511 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000015.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000015.vtu new file mode 100644 index 000000000..0bce30fb7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000015.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4f73d3b18317295a2561698e35065fbd6c194cbe6eae9d95ee1d1766ab512a8 +size 27589437 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000016.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000016.vtu new file mode 100644 index 000000000..4541285c4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000016.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b96fa012893255e5006f158da994eb8ae5b48c289904170199f0917fd6caeff +size 27589949 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000017.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000017.vtu new file mode 100644 index 000000000..f447ffd55 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000017.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a780405dfbc23199bbdc6bb35e9becd891a09e274caa853418b81a8f8c2040d +size 27590028 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000018.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000018.vtu new file mode 100644 index 000000000..2183bd3f4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000018.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76676599f698e7fa967c992caef642f16fd45e896dabbe21d74003cdcf2ae512 +size 27591319 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000019.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000019.vtu new file mode 100644 index 000000000..db54193d4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000019.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:955b2a37e07e2a78b4dd03cf1d2eb6a3c34e1957223a55bd322a8392c40e2f4c +size 27591892 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000020.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000020.vtu new file mode 100644 index 000000000..7d70e4176 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000020.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aff3e9546344dc7cbf182d9d467d88846a105d695d7902949a536ed38fe3551b +size 27592437 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000021.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000021.vtu new file mode 100644 index 000000000..5d50dbf1e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000021.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0173d16eb7070b92a68acc98f91957e4d67567d4ea9022ec84e0f5951b976f68 +size 27593116 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000022.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000022.vtu new file mode 100644 index 000000000..96a40d25a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000022.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63597d4b02e9cab4137efe1dfcd2225cb83cb09a594071d50cef74fad8b915d5 +size 27593646 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000023.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000023.vtu new file mode 100644 index 000000000..a93fd1053 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000023.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:588c8e1a92c5d13f6fd1163246a6cb3b0a6bb138aa56d405e270402b1440077d +size 27593295 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000024.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000024.vtu new file mode 100644 index 000000000..02a0f67be --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000024.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5d2a2b54a4a28c930e88b5b88c8df84601593255d769b7d987d3f9c7f076f93 +size 27593088 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000025.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000025.vtu new file mode 100644 index 000000000..db3aa3ebe --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000025.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bcd7fb3d881dee6fd338aa8b62629eee0400546576873714d776d8ea3c34007 +size 27593801 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000026.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000026.vtu new file mode 100644 index 000000000..fcaec81ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000026.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:056c9d9a3e14eb75852148c9b90b880ca18339caaf3fd41bb6e1fa63119bea3c +size 27593785 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000027.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000027.vtu new file mode 100644 index 000000000..270ae557a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000027.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:846bb88a8ab4bb61484685636312c2cac682fb68d5ab3845fe118e221499066d +size 27593599 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000028.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000028.vtu new file mode 100644 index 000000000..008ff4185 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000028.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9028202ac6f3bd70b14e827f1fc6887439935522262aa94f5e08cf6ae7d6e60b +size 27593285 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000029.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000029.vtu new file mode 100644 index 000000000..34937a9a0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000029.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe3fa59b5098d4a8b033fd19933421e85b83eb022b1c914e2b1facb8337b09db +size 27593459 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000030.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000030.vtu new file mode 100644 index 000000000..8ba0b060f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000030.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:315fe5f97bedd32a840f5d0e31935cbf687bc2ed151fc31a9b78e01937e3c2a2 +size 27593212 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000031.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000031.vtu new file mode 100644 index 000000000..f9311d346 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000031.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46dd4833b8774f7d10d7c89b7d15656ee85aced63c0b875508ede55bcf34d87b +size 27593108 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000032.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000032.vtu new file mode 100644 index 000000000..86d8ec9a6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000032.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b028b39ab3948ad757c9fbf0cc425667d8930b171a5acd9527584e6d92cccb4 +size 27593322 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000033.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000033.vtu new file mode 100644 index 000000000..0b2f4d7bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000033.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:391a0b64b5ac1fd13981e9712e222d0feeee8a8f0202705eff4d9a14d33404bd +size 27592976 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000034.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000034.vtu new file mode 100644 index 000000000..e06317b14 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000034.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbd1fcd1425abeb490d7ad267fa5c79b42aeb79e075d78f0eb975194f6b0a466 +size 27592847 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000035.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000035.vtu new file mode 100644 index 000000000..9049d66f5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000035.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99c0ba18a91161d1bece4e6342c6c8f486cc0a36ac76928320bd0b7840e7c4b1 +size 27592989 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000036.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000036.vtu new file mode 100644 index 000000000..a3d8cdbbd --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000036.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c209e781fd3937b8b428e8bfa3c46f9a7d1e3339316a7afb7302125f76e3ff1f +size 27593470 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000037.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000037.vtu new file mode 100644 index 000000000..a5c6f8654 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000037.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:194f2dba0b40facd500f0faba8b3734f1c3875222c438df43bd0fe3fc017704c +size 27593265 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000038.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000038.vtu new file mode 100644 index 000000000..e1a93ed5c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000038.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c11c5a7fc72a07719cc9a6b44fb3d7fe53159f54c155ea2f69a991be107f2ea5 +size 27592887 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000039.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000039.vtu new file mode 100644 index 000000000..ba5841a76 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000039.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f95686870d4cf14e0fbc1af815eccb83926cc095920fcb14ecde9558c147b26d +size 27592680 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000040.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000040.vtu new file mode 100644 index 000000000..2432f81b6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000040.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e5086fcd613ab8f31cce6f9649aa1d505dbfc07e1a99b3f3a1c3e87f4815eac +size 27591872 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000041.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000041.vtu new file mode 100644 index 000000000..9396968d2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000041.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac87d977d9c22ea07ff47a8866be412535029a2c9475b2e02789b24e139f79fb +size 27592511 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000042.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000042.vtu new file mode 100644 index 000000000..8946ab0af --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000042.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41f92d7d9c66becde8b114571fa5d65a58a97724372f31b957324d9669e8a56c +size 27592086 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000043.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000043.vtu new file mode 100644 index 000000000..917969140 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000043.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c2731f02b86eb9f3fdff8209d9b72e8a329f77d9ff6e692eecbaa73f6216534 +size 27591541 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000044.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000044.vtu new file mode 100644 index 000000000..45599565d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000044.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a95a103771232f86991b0ef492dd7195d9a3b151f01dda5322fdfca426788e +size 27591427 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000045.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000045.vtu new file mode 100644 index 000000000..3e0d9691c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000045.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89da608b9e08542210c8d881dc40fa4388edd5509c475ae2333f26d86fa40fcc +size 27591876 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000046.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000046.vtu new file mode 100644 index 000000000..81b254473 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000046.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a006bddf42648763a2f469cbad39cb31761b79f21c3487b232dde0d718ff143e +size 27590665 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000047.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000047.vtu new file mode 100644 index 000000000..66c68e1fb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000047.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a350725027ac3a7f2d89ca227d2b49362401d4c24e238d5fb1461e590c09fffa +size 27590846 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000048.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000048.vtu new file mode 100644 index 000000000..a256f3a9e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000048.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01f3bcd983f44799e3a7ee8593d1f68fda448c01e9433e04d0d68fcf024cd50 +size 27590946 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000049.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000049.vtu new file mode 100644 index 000000000..d1e2ca175 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000049.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:048d03cba55786bbd618c524d03f2490b1a8161e336911903c11bfd216349949 +size 27589883 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000050.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000050.vtu new file mode 100644 index 000000000..7bb253bf0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000050.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cfac6d05dfceccdf03e766667a05ec80ad6649b08d006105559ba5f807fe917 +size 27590470 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000051.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000051.vtu new file mode 100644 index 000000000..43802f699 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000051.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dbecc14465ff478bf3fe0e66a6abd664fd71cfe7fdb51ca57ba73992915b898 +size 27589486 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000052.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000052.vtu new file mode 100644 index 000000000..ac52b6ccf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000052.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1ac3a3b9f311c176ba71e188d236f922526def9d050230b5df92e439f272b9c +size 27589834 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000053.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000053.vtu new file mode 100644 index 000000000..339d25fac --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000053.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:047f8e04023da5965dc6c08dca63db4baaf8b7f1b6c5503e087445a29f291efb +size 27588432 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000054.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000054.vtu new file mode 100644 index 000000000..c87786575 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000054.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de743d8aaf9009a86b27007919a063bac1cf221efca6d2bd41fc7e9b855d0203 +size 27588462 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000055.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000055.vtu new file mode 100644 index 000000000..e86400dbb --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000055.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e16b596505ee1e148526d31ec351180f7e17f2a0da47088fe53c2b3b88d1ca6f +size 27587810 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000056.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000056.vtu new file mode 100644 index 000000000..c92e8d5f3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000056.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f4320374b058140ef9e8d15411878797c4ca4fa22a4d1d44396a5e3c721ce6e +size 27587556 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000057.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000057.vtu new file mode 100644 index 000000000..a3c71c802 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000057.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69a212ed253d1774b02741c59c1b57bc67b03df277abb14f34d8155cc1897033 +size 27587559 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000058.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000058.vtu new file mode 100644 index 000000000..84e829990 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000058.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c894b93e5359d5cc416729abe45fca22010a083b69061c3117fcf8f02822628 +size 27587125 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000059.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000059.vtu new file mode 100644 index 000000000..63c5849e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000059.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97db40ec3c4a629364e1b7e398a0d41b1c324f9bd7464339c5a0097c43aac351 +size 27587004 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000060.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000060.vtu new file mode 100644 index 000000000..0f645be2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000060.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:320a317f75f8edf8c509ebbe9ddab1d4564d703539732a525e18d7e3b943c453 +size 27587186 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000061.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000061.vtu new file mode 100644 index 000000000..56c9315cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000061.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b21a51e7c9e77b6b775fa54dd609952f87f9971067e27baa526ca7b99dd54e3f +size 27586591 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000062.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000062.vtu new file mode 100644 index 000000000..8629989c1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000062.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f765adac44f1322725258ee5efd2d74edbb5757b708fd1e4f15d1daa8621cc5 +size 27586049 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000063.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000063.vtu new file mode 100644 index 000000000..cb5def9fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000063.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8113c073d7c95d64b525de236a2e6f3e2bbd8f0fd4cf1f5697ff482431ec91d5 +size 27585883 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000064.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000064.vtu new file mode 100644 index 000000000..589c7146d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000064.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db4a75326c8598fff3697eb13c8b91499fb2beb9ecedff7ab100974404e1a08a +size 27586026 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000065.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000065.vtu new file mode 100644 index 000000000..c8cec4dc2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000065.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fca3e4ddab86a882ee92339610b614c9e0d4ee965d01744d00800bb3576018cb +size 27586056 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000066.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000066.vtu new file mode 100644 index 000000000..496043598 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000066.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caad16e584b6926041ddcf72788f9bd5a9f58660a46675f77f9ea153e3540dfc +size 27584907 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000067.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000067.vtu new file mode 100644 index 000000000..a7dcff725 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000067.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f0d5faf3f2b99113e6a451a9627fac06f41655a4b4d3234d5e17c5bdbe15fa1 +size 27585355 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000068.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000068.vtu new file mode 100644 index 000000000..d06ebc717 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000068.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39ab41612493a5a28940b6960424a78ff4c5cafa7da8b6362aecf62af6564147 +size 27585006 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000069.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000069.vtu new file mode 100644 index 000000000..47cf0b290 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000069.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0470b2b812288aae84a285bff06fa02e00e739a46625286bf1097b8c52ac3776 +size 27584355 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000070.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000070.vtu new file mode 100644 index 000000000..42d573fd2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000070.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6876dcd8c7a196d2a14d1f8a022a14a3a2b8d5298553c47f12b043465ad930d +size 27584557 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000071.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000071.vtu new file mode 100644 index 000000000..074ddadcf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000071.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:783dd742a14255788ac5b97cc83321c6e9dad51b466bbc4f6e74e999dd5a06aa +size 27584443 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000072.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000072.vtu new file mode 100644 index 000000000..102290f2b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000072.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4784ea7afcd6032dfaa6570ed2857e6284b9230dae8cb08f613eee755711989b +size 27584864 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000073.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000073.vtu new file mode 100644 index 000000000..c2726d241 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000073.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0dccb01468cb4bc71b81b66753b9bdf4da47e18e8c3cd2526753cdd5679f48a +size 27584271 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000074.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000074.vtu new file mode 100644 index 000000000..3bdbeb8ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000074.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d0e63b1bb0283704d7eb36c865e26e44674dfe3cceee2865bd0fac2cc790ea +size 27583717 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000075.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000075.vtu new file mode 100644 index 000000000..954ffd0e6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000075.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bde877873582da1def52898693faab51c1a8f5f174be423fad8d915df789a47c +size 27584100 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000076.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000076.vtu new file mode 100644 index 000000000..39bc4b792 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000076.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83d4afd5602d01fa6510e20ef428f99fc55078ef891b935f6ce1f1d63ef1b89a +size 27583571 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000077.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000077.vtu new file mode 100644 index 000000000..e8be197c4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000077.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72e0bf81a91ba56b6749e0848efa4f1319d989105b0922b2a85bade57dc92d14 +size 27584098 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000078.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000078.vtu new file mode 100644 index 000000000..96b848c0c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000078.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f3024a5ab7dd10bbc0089d881417a2692a88e8b2b55b69de3f62e618deec8e1 +size 27583416 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000079.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000079.vtu new file mode 100644 index 000000000..727617d07 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000079.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59d913db1f73f9ff68df3edea88c14de14827570014149d6163d1cca9e2041d9 +size 27583597 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000080.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000080.vtu new file mode 100644 index 000000000..3636e8f4c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000080.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b916f7f48d7e762a562825afb015e89ee504029d87ff633ffa62952d51718a3 +size 27582865 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000081.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000081.vtu new file mode 100644 index 000000000..c49ac3df6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000081.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05c446c8a1ce3a683c2325ca905c32e722f8aaef6ed85592da2e6db48ced7af0 +size 27582920 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000082.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000082.vtu new file mode 100644 index 000000000..9ed5b5d2f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000082.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6a6347509300cd1c4e1e6dc038efaf1384e862bcbdba5db3ffe48ccc544258f +size 27583222 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000083.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000083.vtu new file mode 100644 index 000000000..f1b642761 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000083.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3fd55b76876923915378e7b8cea700a752d2a1cba699d7c467f0e5c15569ea8 +size 27583120 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000084.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000084.vtu new file mode 100644 index 000000000..e6fc82fd8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000084.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:374bd48d58c32a0c5a0d76bf378966f0ef35d7de1e0f1df14022481c5392e013 +size 27583521 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000085.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000085.vtu new file mode 100644 index 000000000..07721b693 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000085.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85576035418295d71cbb35a8cdcf04c7ecc95aacb5735f3a859349abd2541354 +size 27582926 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000086.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000086.vtu new file mode 100644 index 000000000..e39a740e3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000086.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ffdc857d265d96f81ba73263b4783b3ee25630bfa8aca928900bc9457c5697 +size 27583093 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000087.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000087.vtu new file mode 100644 index 000000000..c0e64078f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000087.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e02a31eed7a1373867df3a73fb2a0f2617f8617c3b43bcf17d5de51b386b934 +size 27582913 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000088.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000088.vtu new file mode 100644 index 000000000..3029fc210 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000088.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b03a353f1f738848ab712296d1f483e21495a99924351cdaeca85c8b67175f5 +size 27582831 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000089.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000089.vtu new file mode 100644 index 000000000..f38bfe165 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000089.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23e4132d37bb47075ab71fd54fd389685232fdf9a9eda4bb24f173669c37d980 +size 27582893 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000090.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000090.vtu new file mode 100644 index 000000000..1d50ec224 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000090.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02513c984c82d9a766e5c9f645e6d504a23945f7c71991e20ca2e12fd415ca5a +size 27582598 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000091.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000091.vtu new file mode 100644 index 000000000..3606059a7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000091.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cee7ecec1f4346595a5cc53e30f04b661a1699733358e4ba47bd3b1e1b8e85e +size 27582997 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000092.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000092.vtu new file mode 100644 index 000000000..4d1140916 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000092.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bed147cc5f2a3628db89cacc47d584215da4424c730cdfdff3f38ab89b853f67 +size 27582841 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000093.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000093.vtu new file mode 100644 index 000000000..d3f62fe6b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000093.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9d6f57fb2849865163b3390a6b9ce7b895d59b9a57c78f8e1bfa3bcdc1d5b77 +size 27582008 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000094.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000094.vtu new file mode 100644 index 000000000..001d0ff04 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000094.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36acf5c5a8e6bf576efa3eae34ce882ae2479901bbc55f5f35f5d8386a7cf127 +size 27582394 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000095.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000095.vtu new file mode 100644 index 000000000..15dec5324 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000095.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b4cf728e148db95e2af4e6d52000ce31d750a4b23ec611080b02dca9c7e5a66 +size 27582846 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000096.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000096.vtu new file mode 100644 index 000000000..7ae653de1 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000096.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f310e1d54386217fd78eb3c6618e7d6f98b586f6db8792e0d86ca84d8457a307 +size 27582185 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000097.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000097.vtu new file mode 100644 index 000000000..c84e9d59d --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000097.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:249b756032158190df58e1e5f3ac8e4aa7007df0ec3cc1ffeb94cb04ba69fe78 +size 27582259 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000098.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000098.vtu new file mode 100644 index 000000000..685c3bca0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000098.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b97b1d1a5576fdff5cd575c1cf2f0bcc78f6995e4c7c297f33100dde39913ebd +size 27581498 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000099.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000099.vtu new file mode 100644 index 000000000..52928c3c2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000099.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba467fc9cbc0c22acfe471ecc88ae35bdbd27a2c70418bc38f80741adca0ee9d +size 27581967 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000100.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000100.vtu new file mode 100644 index 000000000..645e35db4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2542024bc535e43756f358b17f8714c725d243a04b0c618bb0c81a3784314bb +size 27582218 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000101.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000101.vtu new file mode 100644 index 000000000..fa34cc5a8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000101.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d40c282e0f9a3f82da0a23dde3217763ed10cd04fe5c822ccf78671060b1c9c +size 27582530 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000102.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000102.vtu new file mode 100644 index 000000000..537c7f3e4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000102.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5811360c845d234f349623a809668aeb9f3cc6f245d6bcb588fa6f984885fd16 +size 27582464 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000103.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000103.vtu new file mode 100644 index 000000000..5c741923e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000103.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50eb2bb23172afe0469f45a48440033a35475d800d5a9cc654dc66ca08aef0b5 +size 27582043 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000104.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000104.vtu new file mode 100644 index 000000000..fe4b33c34 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000104.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dab383bc1d6d40c17d30fb704d0a48b127f683ea3b78eba33e92e97e6fac5d9 +size 27582580 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000105.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000105.vtu new file mode 100644 index 000000000..753efef83 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000105.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c84b6e0bdb6d568167437177151aeb8284ee7af131fba6738808b6934dd9af2 +size 27583338 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000106.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000106.vtu new file mode 100644 index 000000000..8ec21f961 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000106.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ef756f93d8b5ca571bdb1bfcf2bfb3b733dbc4a9eeb276c572a02775302241b +size 27583037 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000107.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000107.vtu new file mode 100644 index 000000000..ac53097d6 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000107.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e2785ec4b65c77ccc2ce1cab21c5d2eced21244ae84f0fada0ad0aa9a22879b +size 27582470 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000108.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000108.vtu new file mode 100644 index 000000000..4d42c7540 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000108.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e645970859436c2234dd50711bdb1809fe202185c751aa39c0bfcb5e900749d +size 27582659 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000109.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000109.vtu new file mode 100644 index 000000000..d3fc34310 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000109.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e72e6b63f9b82eae291a753814c9f84fdc2bc51abc8f764dbd7f1ca46e3cc0a5 +size 27583707 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000110.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000110.vtu new file mode 100644 index 000000000..f2dbbc544 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000110.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5652254f492ddb642f6d09b9c6d37a95962ac50d4097854eef04e1eb78be16a6 +size 27583184 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000111.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000111.vtu new file mode 100644 index 000000000..ff9a64d4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000111.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:552a3d4d7f86396e236cf4af04d9221e8dff05171f68b15b1f4e0b36a3595ee9 +size 27582717 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000112.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000112.vtu new file mode 100644 index 000000000..436065c10 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000112.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e6fa38b25ffed5d1ca9f709919eebd640c75c8773fa150a8d35fcc551ca5a42 +size 27582632 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000113.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000113.vtu new file mode 100644 index 000000000..fcf96ddd8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000113.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8747572cb6eb984f77e68f4ce4372935a377ab7412c12ece3e56662e4b3d263 +size 27582500 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000114.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000114.vtu new file mode 100644 index 000000000..d5bcb6f34 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000114.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94719cd5801dab394bce64db033a06812b8fcf3d7050cece6f6e1c8e1a125e2d +size 27582743 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000115.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000115.vtu new file mode 100644 index 000000000..13bca9b0f --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000115.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa689ab28de9dac432abacee5d43c1ad7e2641bf464d1336616910f6e51530dc +size 27582971 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000116.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000116.vtu new file mode 100644 index 000000000..afba51b26 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000116.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05f1efb1acc46ea48ab4f0f053a74263e659ced4b9307c30cdef40d48cec2c74 +size 27582645 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000117.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000117.vtu new file mode 100644 index 000000000..e53910336 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000117.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d33ee1947a7620d8fef987dd7c00b921d67c7edc3fd4f449757c554db414be41 +size 27583155 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000118.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000118.vtu new file mode 100644 index 000000000..521126e3c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000118.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16e4d1fc405a632d80db13e5ef48cf42a57e0f9e9ebc8f806e8f1293bf776786 +size 27583113 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000119.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000119.vtu new file mode 100644 index 000000000..a4e2c3ea0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000119.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c38864f91c3fe1575b3192f76f006b5d61a7c900760a7a3faab6c48880f626cc +size 27582963 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000120.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000120.vtu new file mode 100644 index 000000000..de9a9fd0a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000120.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2c174011bae9e3ea9f9a90f15f18916649ce65d06d2f04aead0b50070a62233 +size 27583519 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000121.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000121.vtu new file mode 100644 index 000000000..b05449675 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000121.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aea7fd35049ad7c9f9abe6ae9492193b522ec7143e52ea97d59dbf47be8b78a2 +size 27583162 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000122.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000122.vtu new file mode 100644 index 000000000..bb997a5a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000122.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:121733081bbd3e304e783128c86be77ca323fb4bba7b318956526fc862e27d5f +size 27583126 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000123.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000123.vtu new file mode 100644 index 000000000..86007c879 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000123.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb4fd90d01f28a13ddd21f7826a6bc37b970cbc5793e25ee044fc69998dc00a3 +size 27583464 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000124.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000124.vtu new file mode 100644 index 000000000..244e4770e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000124.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87553c34f887cd493632c36fa11fd4c07932c3586bdf824f9c1568f59e84318a +size 27583915 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000125.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000125.vtu new file mode 100644 index 000000000..af38c7b4b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000125.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27abd6db51048ab409817d973637d052123aa185d6e670736a12a99db2adab03 +size 27583757 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000126.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000126.vtu new file mode 100644 index 000000000..4639e4c40 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000126.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7409653d24b41fd5917b8715dca858aa042b35e2e8fa12e4567b02a687bc5c44 +size 27582961 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000127.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000127.vtu new file mode 100644 index 000000000..2c5198795 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000127.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cc9dffd99664ca4387bc7bf6a738bbaf34f5c02a383c91bcd2f9d7e7a367c76 +size 27583069 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000128.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000128.vtu new file mode 100644 index 000000000..3e857834c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000128.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59cca85aae2e19feafec84f320ed83caba3233ef88a9c9fe2963e1770b7959de +size 27583350 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000129.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000129.vtu new file mode 100644 index 000000000..72943bd32 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000129.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c5b7559cb116f2f751d4e2eca34680be637884d2a575ddb23b568b7d30942c0 +size 27583213 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000130.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000130.vtu new file mode 100644 index 000000000..c675fb9bc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000130.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09b8fdff63c7e136e07c2c704ffe2e8dca8b7c1dd3763fb101ba098daa26b8e7 +size 27583266 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000131.vtu b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000131.vtu new file mode 100644 index 000000000..c359018e0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.d/20-inverse-face_000131.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3471b9be7bf2e5601eeeb1452382cb246dab5a55d01f0a5ce537aebe3bb2fd3 +size 27583169 diff --git a/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series new file mode 100644 index 000000000..b403a127b --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:423ea1e461e9d09d6e1b2b59dc2e07dc2be272d3ecdd6110f7316fc58701d4d6 +size 9565 diff --git a/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu new file mode 100644 index 000000000..79efec8fa --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f30fbf4ff60590b08c305674c3f404c906c52c7c0575c2fb0034c7bb323fd51f +size 88029993 diff --git a/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json new file mode 100644 index 000000000..d07d13a71 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json @@ -0,0 +1,60 @@ +{ + "mesh/n_points": 225052, + "mesh/n_cells": 1127541, + "target/n_points": 17582, + "activation/n_active_tets": 283391, + "activation/n_params": 1700346, + "time/total_s": 26.93065482401289, + "target/displacement_mean": 0.20880546239461303, + "target/displacement_rms": 0.30657501871028414, + "target/displacement_max": 0.9800935666165747, + "target/error_mean": 0.19756966452709088, + "target/error_rms": 0.2834989958453261, + "target/error_max": 0.925671095808897, + "all/error_rms": 0.13328656562825245, + "all/error_max": 1.8902445814323658, + "active_activation_inv/mean": [ + 0.298065662284265, + 0.2561624093994582, + 0.3540785330937175, + -0.01197201668694965, + 0.0018929571941822124, + -0.08412486891919188 + ], + "active_activation_inv/min": [ + -0.3960280027635274, + -0.6044349712065807, + -0.41720914530202446, + -2.0082256357141, + -1.362518781595464, + -1.7135221484929632 + ], + "active_activation_inv/max": [ + 3.002376848075733, + 3.040087786070343, + 3.003825758806796, + 1.9269781055598811, + 1.3858881622458952, + 2.5572670045469135 + ], + "active_activation_inv/rms": 0.5188147365068417, + "transfer/source_active_cells": 58494, + "transfer/target_active_cells": 283391, + "transfer/k": 4, + "transfer/power": 2.0, + "transfer/time_s": 1.2277044109941926, + "transfer/nearest_distance_max": 1.167946444926288, + "transfer/activation_rms": 0.5188147365068417, + "transfer/activation_min": -2.0082256357141, + "transfer/activation_max": 3.040087786070343, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 462, + "forward/grad_norm": 1.676473725069008, + "forward/relative_grad_norm": 0.0003410798327373236, + "forward/grad_norm_first": 4915.194520926465, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "time/forward_s": 16.038381466001738 +} diff --git a/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu new file mode 100644 index 000000000..2083b401a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a56f1467261d65f14cee2190950db483fef2d5acce2a46f2d957bd97b2bf069b +size 118878609 diff --git a/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.d/30-transfer-activation-3152k_000000.vtu b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.d/30-transfer-activation-3152k_000000.vtu new file mode 100644 index 000000000..2083b401a --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.d/30-transfer-activation-3152k_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a56f1467261d65f14cee2190950db483fef2d5acce2a46f2d957bd97b2bf069b +size 118878609 diff --git a/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series new file mode 100644 index 000000000..d9d13cee3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9432a586d27ad9d5aea3f1bb36b712ad15caa18a6381eb355effa533692ccd3c +size 136 diff --git a/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1-input.vtu b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1-input.vtu new file mode 100644 index 000000000..3991a8fb2 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6daf5e39d7b2a9f145ecac85fc8db92be7e9c78ee58d5d50a3eddfc1d45db723 +size 88029989 diff --git a/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1-summary.json b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1-summary.json new file mode 100644 index 000000000..26b87edcf --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1-summary.json @@ -0,0 +1,60 @@ +{ + "mesh/n_points": 225052, + "mesh/n_cells": 1127541, + "target/n_points": 17582, + "activation/n_active_tets": 283391, + "activation/n_params": 1700346, + "time/total_s": 14.016527194995433, + "target/displacement_mean": 0.20880546239461303, + "target/displacement_rms": 0.30657501871028414, + "target/displacement_max": 0.9800935666165747, + "target/error_mean": 0.21057998403163483, + "target/error_rms": 0.26809221274006007, + "target/error_max": 0.9064648852118059, + "all/error_rms": 0.18009951096673188, + "all/error_max": 1.0347772454701907, + "active_activation_inv/mean": [ + 0.298065662284265, + 0.2561624093994582, + 0.3540785330937175, + -0.01197201668694965, + 0.0018929571941822124, + -0.08412486891919188 + ], + "active_activation_inv/min": [ + -0.3960280027635274, + -0.6044349712065807, + -0.41720914530202446, + -2.0082256357141, + -1.362518781595464, + -1.7135221484929632 + ], + "active_activation_inv/max": [ + 3.002376848075733, + 3.040087786070343, + 3.003825758806796, + 1.9269781055598811, + 1.3858881622458952, + 2.5572670045469135 + ], + "active_activation_inv/rms": 0.5188147365068417, + "transfer/source_active_cells": 58494, + "transfer/target_active_cells": 283391, + "transfer/k": 4, + "transfer/power": 2.0, + "transfer/time_s": 0.3427716159785632, + "transfer/nearest_distance_max": 1.167946444926288, + "transfer/activation_rms": 0.5188147365068417, + "transfer/activation_min": -2.0082256357141, + "transfer/activation_max": 3.040087786070343, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 188, + "forward/grad_norm": 2.079985371840391, + "forward/relative_grad_norm": 0.00042317457894796293, + "forward/grad_norm_first": 4915.194520926465, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "time/forward_s": 6.737611743999878 +} diff --git a/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu new file mode 100644 index 000000000..7f2bc3b03 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8554fc0f41379b412674974f4a83e0a876225825d4ade3384a31638bd789dbf +size 118869873 diff --git a/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu.d/31-transfer-activation-3152k-smas1_000000.vtu b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu.d/31-transfer-activation-3152k-smas1_000000.vtu new file mode 100644 index 000000000..7f2bc3b03 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu.d/31-transfer-activation-3152k-smas1_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8554fc0f41379b412674974f4a83e0a876225825d4ade3384a31638bd789dbf +size 118869873 diff --git a/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu.series b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu.series new file mode 100644 index 000000000..3a369ae01 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/31-transfer-activation-3152k-smas1.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:826446ff6492c164b7082f7882646f4735e557e75aa0b79d0d944c2f2581bdc1 +size 148 diff --git a/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100-input.vtu b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100-input.vtu new file mode 100644 index 000000000..dc757ba83 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8837732f7157086169e719d1bc6970b7db58ea024329cd0088799347c3ed1af2 +size 19793925 diff --git a/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100-summary.json b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100-summary.json new file mode 100644 index 000000000..ce007c5f4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100-summary.json @@ -0,0 +1,60 @@ +{ + "mesh/n_points": 58651, + "mesh/n_cells": 253876, + "target/n_points": 6787, + "activation/n_active_tets": 58494, + "activation/n_params": 350964, + "time/total_s": 6.452940725983353, + "target/displacement_mean": 0.2500759838629745, + "target/displacement_rms": 0.3514786357965242, + "target/displacement_max": 0.9656781194874481, + "target/error_mean": 0.42215066878687124, + "target/error_rms": 0.47505533174723197, + "target/error_max": 1.297572872354231, + "all/error_rms": 0.3689544738370725, + "all/error_max": 9.127732986064679, + "active_activation_inv/mean": [ + 0.34816067629903946, + 0.3249929000968758, + 0.4347317313725949, + -0.016647316834846212, + -0.007555258772276072, + -0.1142838548650941 + ], + "active_activation_inv/min": [ + -0.40441091668573176, + -0.6177541187164183, + -0.427296111214398, + -2.1715550789118696, + -1.4625187079610114, + -1.7438073826190417 + ], + "active_activation_inv/max": [ + 3.1080979673381943, + 3.177261591627401, + 3.1094899447213056, + 2.1841122716108656, + 1.5271732194046044, + 2.679526540213925 + ], + "active_activation_inv/rms": 0.5745720108063076, + "transfer/source_active_cells": 58494, + "transfer/target_active_cells": 58494, + "transfer/k": 4, + "transfer/power": 2.0, + "transfer/time_s": 0.015747290017316118, + "transfer/nearest_distance_max": 0.0, + "transfer/activation_rms": 0.5745720108063076, + "transfer/activation_min": -2.1715550789118696, + "transfer/activation_max": 3.177261591627401, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 421, + "forward/grad_norm": 151.33010891397194, + "forward/relative_grad_norm": 0.00027845848350610097, + "forward/grad_norm_first": 543456.6295433277, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "time/forward_s": 3.82475233200239 +} diff --git a/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu new file mode 100644 index 000000000..279b749e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91eb5529b8725575600ca037779e3ffc77f08ba1f1264b66af753ff2b1609c55 +size 27630096 diff --git a/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu.d/40-transfer-activation-515k-smas100_000000.vtu b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu.d/40-transfer-activation-515k-smas100_000000.vtu new file mode 100644 index 000000000..279b749e8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu.d/40-transfer-activation-515k-smas100_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91eb5529b8725575600ca037779e3ffc77f08ba1f1264b66af753ff2b1609c55 +size 27630096 diff --git a/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu.series b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu.series new file mode 100644 index 000000000..33ce8adf8 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/40-transfer-activation-515k-smas100.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:822696ffdaa9891c05e7a5bf2d9c5ae6171ebc4210024db4d62208e88d3e64dd +size 150 diff --git a/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1-input.vtu b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1-input.vtu new file mode 100644 index 000000000..79cde88ea --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71fc6ba06b79f7af17240e8e9281c6c3748e6211f6c7a6a685b6348df7610238 +size 19793921 diff --git a/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1-summary.json b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1-summary.json new file mode 100644 index 000000000..b24ce90cc --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1-summary.json @@ -0,0 +1,60 @@ +{ + "mesh/n_points": 58651, + "mesh/n_cells": 253876, + "target/n_points": 6787, + "activation/n_active_tets": 58494, + "activation/n_params": 350964, + "time/total_s": 5.980394256999716, + "target/displacement_mean": 0.2500759838629745, + "target/displacement_rms": 0.3514786357965242, + "target/displacement_max": 0.9656781194874481, + "target/error_mean": 0.2745015176382366, + "target/error_rms": 0.31891290798538413, + "target/error_max": 0.9428661689076078, + "all/error_rms": 0.24383530921614374, + "all/error_max": 1.195187067904088, + "active_activation_inv/mean": [ + 0.34816067629903946, + 0.3249929000968758, + 0.4347317313725949, + -0.016647316834846212, + -0.007555258772276072, + -0.1142838548650941 + ], + "active_activation_inv/min": [ + -0.40441091668573176, + -0.6177541187164183, + -0.427296111214398, + -2.1715550789118696, + -1.4625187079610114, + -1.7438073826190417 + ], + "active_activation_inv/max": [ + 3.1080979673381943, + 3.177261591627401, + 3.1094899447213056, + 2.1841122716108656, + 1.5271732194046044, + 2.679526540213925 + ], + "active_activation_inv/rms": 0.5745720108063076, + "transfer/source_active_cells": 58494, + "transfer/target_active_cells": 58494, + "transfer/k": 4, + "transfer/power": 2.0, + "transfer/time_s": 0.01842793298419565, + "transfer/nearest_distance_max": 0.0, + "transfer/activation_rms": 0.5745720108063076, + "transfer/activation_min": -2.1715550789118696, + "transfer/activation_max": 3.177261591627401, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 244, + "forward/grad_norm": 2.6502432604320405, + "forward/relative_grad_norm": 0.000487664169753356, + "forward/grad_norm_first": 5434.5662954332765, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "time/forward_s": 3.6330396700068377 +} diff --git a/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu new file mode 100644 index 000000000..5b8fffb3c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1407b0b6c4bc5ae9e5762dd79069f912ee7b2146d983c459746e8e3966976fa1 +size 27632720 diff --git a/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu.d/41-transfer-activation-515k-smas1_000000.vtu b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu.d/41-transfer-activation-515k-smas1_000000.vtu new file mode 100644 index 000000000..5b8fffb3c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu.d/41-transfer-activation-515k-smas1_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1407b0b6c4bc5ae9e5762dd79069f912ee7b2146d983c459746e8e3966976fa1 +size 27632720 diff --git a/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu.series b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu.series new file mode 100644 index 000000000..33379fd78 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/41-transfer-activation-515k-smas1.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83d8dc5d8c9d34878818fee8aa5d9f24ed1d1476920e3334d7945ff030ab1152 +size 146 diff --git a/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100-input.vtu b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100-input.vtu new file mode 100644 index 000000000..c5fc59883 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44d9b838734895fe71a389720e2d23c9448e5585fb58e744fd8d7de87f1346df +size 88204945 diff --git a/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100-summary.json b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100-summary.json new file mode 100644 index 000000000..a83e3f59c --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100-summary.json @@ -0,0 +1,60 @@ +{ + "mesh/n_points": 225052, + "mesh/n_cells": 1127541, + "target/n_points": 17582, + "activation/n_active_tets": 283391, + "activation/n_params": 1700346, + "time/total_s": 12.971671431005234, + "target/displacement_mean": 0.20880546239461303, + "target/displacement_rms": 0.30657501871028414, + "target/displacement_max": 0.9800935666165747, + "target/error_mean": 0.24294131522091478, + "target/error_rms": 0.30936081917690816, + "target/error_max": 1.0336242559191813, + "all/error_rms": 0.20044440424236187, + "all/error_max": 3.558037818528059, + "active_activation_inv/mean": [ + 0.298065662284265, + 0.2561624093994582, + 0.3540785330937175, + -0.01197201668694965, + 0.0018929571941822124, + -0.08412486891919188 + ], + "active_activation_inv/min": [ + -0.3960280027635274, + -0.6044349712065807, + -0.41720914530202446, + -2.0082256357141, + -1.362518781595464, + -1.7135221484929632 + ], + "active_activation_inv/max": [ + 3.002376848075733, + 3.040087786070343, + 3.003825758806796, + 1.9269781055598811, + 1.3858881622458952, + 2.5572670045469135 + ], + "active_activation_inv/rms": 0.5188147365068417, + "transfer/source_active_cells": 58494, + "transfer/target_active_cells": 283391, + "transfer/k": 4, + "transfer/power": 2.0, + "transfer/time_s": 1.029912655998487, + "transfer/nearest_distance_max": 1.167946444926288, + "transfer/activation_rms": 0.5188147365068417, + "transfer/activation_min": -2.0082256357141, + "transfer/activation_max": 3.040087786070343, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 82, + "forward/grad_norm": 221.86602315236425, + "forward/relative_grad_norm": 0.00045138808282717713, + "forward/grad_norm_first": 491519.4520926465, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "time/forward_s": 4.520490328024607 +} diff --git a/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu new file mode 100644 index 000000000..2036f8893 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:836769b3a09cc0860c6fe8e7f4de67930effafb27dd8899c8d77186bb5660c9e +size 119080865 diff --git a/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu.d/42-transfer-activation-3152k-smas100_000000.vtu b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu.d/42-transfer-activation-3152k-smas100_000000.vtu new file mode 100644 index 000000000..2036f8893 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu.d/42-transfer-activation-3152k-smas100_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:836769b3a09cc0860c6fe8e7f4de67930effafb27dd8899c8d77186bb5660c9e +size 119080865 diff --git a/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu.series b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu.series new file mode 100644 index 000000000..e68afd932 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/42-transfer-activation-3152k-smas100.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13a5da96acd925027a054cac47f461a404f0426baf6668eca91fef8259027182 +size 152 diff --git a/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1-input.vtu b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1-input.vtu new file mode 100644 index 000000000..8b0191f27 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1-input.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a883bff0fb7945464d113f5ce9ae7c7ce133f2a74e8504c7894e2c8a1523f34c +size 88204941 diff --git a/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1-summary.json b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1-summary.json new file mode 100644 index 000000000..0da3a73a5 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1-summary.json @@ -0,0 +1,60 @@ +{ + "mesh/n_points": 225052, + "mesh/n_cells": 1127541, + "target/n_points": 17582, + "activation/n_active_tets": 283391, + "activation/n_params": 1700346, + "time/total_s": 13.42681431400706, + "target/displacement_mean": 0.20880546239461303, + "target/displacement_rms": 0.30657501871028414, + "target/displacement_max": 0.9800935666165747, + "target/error_mean": 0.23279353744855077, + "target/error_rms": 0.2838702160666174, + "target/error_max": 0.8953402206102017, + "all/error_rms": 0.19831664424400974, + "all/error_max": 1.0297265290760385, + "active_activation_inv/mean": [ + 0.298065662284265, + 0.2561624093994582, + 0.3540785330937175, + -0.01197201668694965, + 0.0018929571941822124, + -0.08412486891919188 + ], + "active_activation_inv/min": [ + -0.3960280027635274, + -0.6044349712065807, + -0.41720914530202446, + -2.0082256357141, + -1.362518781595464, + -1.7135221484929632 + ], + "active_activation_inv/max": [ + 3.002376848075733, + 3.040087786070343, + 3.003825758806796, + 1.9269781055598811, + 1.3858881622458952, + 2.5572670045469135 + ], + "active_activation_inv/rms": 0.5188147365068417, + "transfer/source_active_cells": 58494, + "transfer/target_active_cells": 283391, + "transfer/k": 4, + "transfer/power": 2.0, + "transfer/time_s": 0.25872915898798965, + "transfer/nearest_distance_max": 1.167946444926288, + "transfer/activation_rms": 0.5188147365068417, + "transfer/activation_min": -2.0082256357141, + "transfer/activation_max": 3.040087786070343, + "forward/result": "primary_success", + "forward/success": true, + "forward/steps": 183, + "forward/grad_norm": 1.924330703409349, + "forward/relative_grad_norm": 0.00039150652028449774, + "forward/grad_norm_first": 4915.194520926465, + "forward/line_search_ok": true, + "forward/line_search_steps": 0, + "forward/stagnation_count": 0, + "time/forward_s": 6.646797652996611 +} diff --git a/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu new file mode 100644 index 000000000..a95b42d30 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7116a7e4c31a5ed4b5d4d65c6bba2b165204af833655b88cf5b87996440141e +size 119085303 diff --git a/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu.d/43-transfer-activation-3152k-smas1_000000.vtu b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu.d/43-transfer-activation-3152k-smas1_000000.vtu new file mode 100644 index 000000000..a95b42d30 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu.d/43-transfer-activation-3152k-smas1_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7116a7e4c31a5ed4b5d4d65c6bba2b165204af833655b88cf5b87996440141e +size 119085303 diff --git a/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu.series b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu.series new file mode 100644 index 000000000..8cf55647e --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/43-transfer-activation-3152k-smas1.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3faa1a867293cefb80933853fd51c5468ebb3356bc53d6cc63e611ccd08050ee +size 148 diff --git a/exp/2026/05/20/inverse-face/data/probe-lr03.vtu.d/probe-lr03_000000.vtu b/exp/2026/05/20/inverse-face/data/probe-lr03.vtu.d/probe-lr03_000000.vtu new file mode 100644 index 000000000..f30fe4ea9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/probe-lr03.vtu.d/probe-lr03_000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e0068b84aa92c1158131db9fe8816bbab9e5fc00c53e41739eef65a09908f85 +size 118926575 diff --git a/exp/2026/05/20/inverse-face/data/probe-lr03.vtu.series b/exp/2026/05/20/inverse-face/data/probe-lr03.vtu.series new file mode 100644 index 000000000..e39d60268 --- /dev/null +++ b/exp/2026/05/20/inverse-face/data/probe-lr03.vtu.series @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3457e1d75a2faf24828ed4487ed8cc2ac47802830d1065372f1dd32b0a6f3e8e +size 100 diff --git a/exp/2026/05/20/inverse-face/docs/20-inverse-face.md b/exp/2026/05/20/inverse-face/docs/20-inverse-face.md new file mode 100644 index 000000000..d4bb8b1d3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/docs/20-inverse-face.md @@ -0,0 +1,69 @@ +# 20 Inverse Face + +## Result + +- stop reason: `step_safety_limit` +- passed: `False` +- best step: `20` +- target mean error: `0.194159 cm` +- target RMS error: `0.279061 cm` +- target max error: `0.908447 cm` +- required max error: `< 0.2 cm` +- final loss: `0.0259584` +- best objective loss: `0.0259584` +- lowest objective loss: `0.0259584` +- optimizer steps: `20` +- series frames: `3` +- forward converged: `True` (0 failures, max absolute grad `0.00487892`, max relative grad `0.000498756`) +- adjoint converged: `True` (0 failures, max absolute residual `7.66268e-07`, max relative residual `0.000499901`) + +## Problem + +- input: `/home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu` +- target: `/home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu` +- output: `/home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu` +- optimization series: `/home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series` +- points: `225052` +- tetrahedra: `1127541` +- target `IsFace` points: `17582` +- active muscle tetrahedra: `283391` +- activation parameters: `1700346` +- target displacement max: `0.980094 cm` + +## Model + +- material: stable neo-Hookean, `nu = 0.49` +- SMAS stiffness ratio: `100.0` +- collisions: `off` +- optimized field: `per active muscle tetrahedron ActivationInv, 6 DoF` +- loss: point-to-point mean squared displacement error on `IsFace` points +- initialization: zero `ActivationInv` +- Adam: `lr=0.02`, `betas=(0.5, 0.9)` +- forward tolerance: `rtol=0.0005`, `atol=0` +- adjoint tolerance: `rtol=0.0005`, `atol=0` + +## Trace + +| step | loss | mean error (cm) | max error (cm) | best max (cm) | grad | fwd abs | fwd rel | adj abs | adj rel | +| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| 0 | 0.0313294 | 0.208805 | 0.980094 | 0.980094 | 3.27307e-05 | 0 | 0 | 7.52756e-07 | 0.000488363 | +| 1 | 0.031108 | 0.208178 | 0.977044 | 0.977044 | 3.21163e-05 | 0.000634813 | 0.000495494 | 7.66268e-07 | 0.000498896 | +| 2 | 0.0308989 | 0.207716 | 0.974071 | 0.974071 | 3.20487e-05 | 0.000641168 | 0.00048643 | 7.58603e-07 | 0.000495573 | +| 3 | 0.0306904 | 0.207309 | 0.970989 | 0.970989 | 3.24909e-05 | 0.00068593 | 0.000487534 | 7.42444e-07 | 0.000486662 | +| 4 | 0.0304816 | 0.206927 | 0.967803 | 0.967803 | 3.34357e-05 | 0.000750691 | 0.000484333 | 7.50923e-07 | 0.000493902 | +| 5 | 0.030282 | 0.206519 | 0.964668 | 0.964668 | 3.49558e-05 | 0.000821134 | 0.000470807 | 7.49706e-07 | 0.000494724 | +| 6 | 0.0300618 | 0.206118 | 0.961091 | 0.961091 | 3.68747e-05 | 0.000963104 | 0.000484489 | 7.46821e-07 | 0.000494622 | +| 7 | 0.0298428 | 0.205677 | 0.957459 | 0.957459 | 3.94932e-05 | 0.00111848 | 0.000491587 | 7.3318e-07 | 0.000487367 | +| 8 | 0.0296206 | 0.205178 | 0.953693 | 0.953693 | 4.25704e-05 | 0.00126315 | 0.000484154 | 7.37996e-07 | 0.000492405 | +| 9 | 0.0293747 | 0.204677 | 0.9514 | 0.9514 | 4.59224e-05 | 0.00146176 | 0.000489106 | 7.38368e-07 | 0.00049471 | +| 10 | 0.0291267 | 0.204087 | 0.949034 | 0.949034 | 5.00958e-05 | 0.0016074 | 0.000470587 | 7.39423e-07 | 0.000497522 | +| 11 | 0.0288567 | 0.203489 | 0.946365 | 0.946365 | 5.46616e-05 | 0.00193844 | 0.000498756 | 7.31824e-07 | 0.000494707 | +| 12 | 0.0285737 | 0.202771 | 0.943484 | 0.943484 | 5.85457e-05 | 0.00216121 | 0.000490733 | 7.31985e-07 | 0.00049726 | +| 13 | 0.0282813 | 0.201902 | 0.940355 | 0.940355 | 6.23054e-05 | 0.0024494 | 0.00049346 | 7.20957e-07 | 0.000492293 | +| 14 | 0.027973 | 0.20108 | 0.93693 | 0.93693 | 6.61768e-05 | 0.00276644 | 0.000496402 | 7.27524e-07 | 0.000499508 | +| 15 | 0.0276521 | 0.200049 | 0.933241 | 0.933241 | 6.98731e-05 | 0.00307314 | 0.000494402 | 7.14232e-07 | 0.00049322 | +| 16 | 0.0273247 | 0.198945 | 0.929254 | 0.929254 | 7.31674e-05 | 0.00343189 | 0.00049812 | 7.19609e-07 | 0.000499901 | +| 17 | 0.0269813 | 0.197803 | 0.924701 | 0.924701 | 7.57836e-05 | 0.0037382 | 0.000492173 | 7.07156e-07 | 0.000494366 | +| 18 | 0.0266477 | 0.196616 | 0.919921 | 0.919921 | 7.97831e-05 | 0.00405612 | 0.000487938 | 6.982e-07 | 0.000491151 | +| 19 | 0.026317 | 0.195438 | 0.914486 | 0.914486 | 8.31487e-05 | 0.00450062 | 0.000497028 | 7.05787e-07 | 0.000499597 | +| 20 | 0.0259584 | 0.194159 | 0.908447 | 0.908447 | 8.57396e-05 | 0.00487892 | 0.000497416 | 6.84737e-07 | 0.000488033 | diff --git a/exp/2026/05/20/inverse-face/docs/20-worklog.md b/exp/2026/05/20/inverse-face/docs/20-worklog.md new file mode 100644 index 000000000..85a1285ab --- /dev/null +++ b/exp/2026/05/20/inverse-face/docs/20-worklog.md @@ -0,0 +1,901 @@ +# 20 Inverse Face Worklog + +This file records the live experiment decisions and findings while the inverse +solve is still in progress. The final report remains `20-inverse-face.md`. + +## 2026-05-26 + +- Prepared the lower-resolution face problem from + `/home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-515k.vtu`. +- The prepare script selected tetrahedra with `InFaceConvex` and wrote: + - `data/10-inverse-face-input.vtu` + - `data/10-inverse-face-target.vtu` +- Prepared problem size: + - points: `58651` + - cells: `253876` + - active tets: `58494` + - target `IsFace` points: `6787` + - target max displacement: `0.965678 cm` + +## Attempts + +### No Smooth Regularization + +Command: + +```bash +DEBUG=false CHERRIES_NAME='inverse face 515k fresh conservative' CHERRIES_TAGS='inverse-face,inverse,515k,fresh,conservative,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --inverse-lr 0.01 --adam-beta1 0.3 --adam-beta2 0.9 --inverse-max-steps 1000 --inverse-min-steps 80 --stagnation-patience 250 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 +``` + +Finding: + +- Stopped when retuning was requested. +- Best observed max face error was about `0.550 cm` by step `137`. +- Forward and adjoint solves were healthy in the observed trace. +- Activation field was visually/qualitatively too bumpy. + +### Smooth Weight 0.01 + +Command: + +```bash +DEBUG=false CHERRIES_NAME='inverse face 515k smooth conservative' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,fresh,conservative,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --inverse-lr 0.01 --adam-beta1 0.3 --adam-beta2 0.9 --activation-smooth-weight 0.01 --inverse-max-steps 1000 --inverse-min-steps 80 --stagnation-patience 250 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 +``` + +Findings: + +- Added face-adjacency smoothness on neighboring active `activation_inv` rows. +- Smooth neighbor pairs: `100783`. +- The run improved the objective and reduced max face error below the + unregularized attempt. +- Latest useful checkpoint before stopping: + - best step: `222` + - best total loss: `0.0033034645853156036` + - best max face error: `0.4190477217600812 cm` + - target RMS error: `0.09120532583099183 cm` +- Step `224` jumped to max face error `0.522686083251468 cm`, while the best + checkpoint remained at step `222`. +- Forward and adjoint solves remained converged in the observed trace. +- User visual assessment: smooth weight `0.01` is still not strong enough; + resulting activation remains a bit bumpy. + +Decision: + +- Stop the weak smoothness run. +- Increase smooth regularization for the next run. +- Add PyVista snapshot output for quick visual inspection of the result mesh. + +## 2026-05-27 00:10 CST + +- Confirmed weak smoothness process was terminated. +- Changed the default smooth regularization weight from `0.01` to `0.05`. +- Added a simple PyVista result snapshot output: + - left: deformed surface colored by displacement error norm + - right: clipped volume colored by `RecoveredActivationInvNorm` +- Script checks passed: + - `uv run ruff format exp/2026/05/20/inverse-face/src/20-inverse-face.py` + - `uv run ruff check exp/2026/05/20/inverse-face/src/20-inverse-face.py` + - `uv run python -m py_compile exp/2026/05/20/inverse-face/src/20-inverse-face.py` + +### Smooth Weight 0.05 + +Command: + +```bash +DEBUG=false CHERRIES_NAME='inverse face 515k smooth strong fresh' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,strong,fresh,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --inverse-lr 0.01 --adam-beta1 0.3 --adam-beta2 0.9 --activation-smooth-weight 0.05 --inverse-max-steps 1000 --inverse-min-steps 80 --stagnation-patience 250 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/a2345924bf684c87bd447148d48200ac` + +Early trace: + +- Step `0` saved the zero-activation state. +- Step `0` max face error: `0.9656781194874481 cm`. +- Step `1` max face error: `0.9648507326333788 cm`. +- Smooth weight is logged as `0.05`; smooth neighbor pairs remain `100783`. +- Forward and adjoint solves are healthy in the first two steps. + +Progress update: + +- Step `25` max face error: `0.9374677073835271 cm`. +- Step `25` target RMS error: `0.3303530451886248 cm`. +- Step `25` smooth loss: `0.007683306652718549`. +- Step `25` regularization contribution: `0.0003841653326359275`. +- The stronger smoothness run is more conservative than `0.01`, but the trace + is monotone so far and solver residuals remain within tolerance. +- Step `50` max face error: `0.85816844725637 cm`. +- Step `50` target RMS error: `0.2995125404642581 cm`. +- Step `50` smooth loss: `0.015066550113881829`. +- Step `50` regularization contribution: `0.0007533275056940915`. +- The max-error decrease accelerated after the first 30 steps, so continue the + `0.05` run rather than retuning immediately. +- Step `70` max face error: `0.7999782052867275 cm`. +- Step `70` target RMS error: `0.2667058640029993 cm`. +- Step `70` smooth loss: `0.020845487153975734`. +- The run is still solver-clean and monotone on the recorded best max error. +- Step `100` max face error: `0.679832543987208 cm`. +- Step `100` target RMS error: `0.2013307279602368 cm`. +- Step `100` smooth loss: `0.02769403672004294`. +- Step `103` max face error: `0.6736478494826544 cm`. +- Step `103` target RMS error: `0.1948346175781037 cm`. +- Step `103` smooth loss: `0.028100462597656677`. +- Step `110` max face error: `0.6559143934820989 cm`. +- Step `110` target RMS error: `0.1804349988552772 cm`. +- Step `110` smooth loss: `0.028597397728848867`. +- The run remains healthy: no observed repeated forward or adjoint failures, and + best max error is still improving. +- Step `122` max face error: `0.6125822252331934 cm`. +- Step `122` target RMS error: `0.16007591882158767 cm`. +- Step `122` smooth loss: `0.0286936851370196`. +- Step `136` max face error: `0.543335157799551 cm`. +- Step `136` target RMS error: `0.14055731320048273 cm`. +- Step `136` smooth loss: `0.028396493491599638`. +- Step `148` max face error: `0.5113292812654995 cm`. +- Step `148` target RMS error: `0.12947377728490744 cm`. +- Step `148` smooth loss: `0.027803695459368064`. +- Step `160` max face error: `0.507341568458475 cm`. +- Step `160` target RMS error: `0.12084560847655962 cm`. +- Step `160` smooth loss: `0.027085250999680077`. +- Step `181` current best remains step `178`, with max face error + `0.4859717565439491 cm`. +- Step `181` target RMS error: `0.10974966239557434 cm`. +- The worst-point error is improving much more slowly than the RMS error. This + suggests the `0.05` smoothness weight may be over-regularized for the final + `<0.2 cm` pointwise target, although the solve is still numerically healthy. +- Generated a quick PyVista snapshot from step `191`: + `data/20-inverse-face-step191.png`. +- The first activation-volume panel camera was not useful, but the face-error + panel showed the remaining high error is localized rather than a global + mismatch. +- A transient Comet status-report timeout occurred during the run; the local + optimizer continued and later metrics kept logging. +- Step `191` max face error: `0.4704078103377334 cm`. +- Step `191` target RMS error: `0.1086394308040651 cm`. +- Step `218` max face error: `0.45385750722114276 cm`. +- Step `218` target RMS error: `0.1004675211802974 cm`. +- Step `229` max face error: `0.4488005382442577 cm`. +- Step `229` target RMS error: `0.09623715144393247 cm`. +- Step `243` max face error: `0.4360592438204695 cm`. +- Step `243` target RMS error: `0.09266411893705286 cm`. +- Keep the `0.05` run alive because the saved-best max error is still dropping, + albeit slowly. + +## 2026-05-27 00:55 CST + +- Added warm-state resume support to the inverse script: + - checkpoints written after this code change include the best full + displacement state in addition to active `activation_inv` + - `--initial-activation-inv` can now warm-start the forward state from a `.npz` + checkpoint containing `displacement`, or from a `.vtu` with point data + `Displacement` +- Reason: a checkpoint-only activation continuation was tested and immediately + gave a worse cold-start max error (`0.8494990393743189 cm`) than the saved + warm trajectory (`0.4190477217600812 cm` at step `222`). The forward solve + state matters, so future resume attempts should carry displacement too. +- The default `w=0.05` run is still active on the default output paths. +- Step `209` checkpoint: + - max face error: `0.4650297822269738 cm` + - loss: `0.004670744638742033` + - checkpoint arrays were written by the already-running process, so this + particular checkpoint does not yet include the new `displacement` field. +- Interpretation: `w=0.05` is smoother and still stable, but remains slower on + worst-point error than the earlier `w=0.01` run. Continue monitoring while it + keeps improving; if it plateaus well above `0.2 cm`, the likely next run is a + moderate smoothness weight between `0.01` and `0.05`. + +## 2026-05-27 01:19 CST + +- Step `249` checkpoint: + - max face error: `0.43192858819766905 cm` + - loss: `0.004149626089253162` +- Latest inspected frame `262`: + - current max face error: `0.43697081162197693 cm` + - current RMS face error: `0.09330003435142509 cm` + - current total loss: `0.004080611529088379` + - smooth loss: `0.023579587848586884` + - regularization contribution: `0.0011789793924293444` +- Finding: total loss can continue improving while the worst face point gets + worse. Since the success criterion is pointwise max error `<0.2 cm`, future + runs now use significant decrease in max face error for stagnation accounting, + while still retaining the explicit `loss_tol` stop. +- Script checks passed again after the stagnation change: + - `uv run ruff format exp/2026/05/20/inverse-face/src/20-inverse-face.py` + - `uv run ruff check exp/2026/05/20/inverse-face/src/20-inverse-face.py` + - `uv run python -m py_compile exp/2026/05/20/inverse-face/src/20-inverse-face.py` + +## 2026-05-27 01:40 CST + +- A new `w=0.02` run is active: + +```bash +uv run python src/20-inverse-face.py --inverse-lr 0.01 --adam-beta1 0.3 --adam-beta2 0.9 --activation-smooth-weight 0.02 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 400 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 +``` + +- Current process: + - parent `uv` PID: `1233306` + - Python PID: `1233319` +- Latest checkpoint: + - step: `129` + - max face error: `0.5777285020257367 cm` + - loss: `0.008169087230695284` + - checkpoint includes both active `activation_inv` and full displacement + state. +- The run is still improving and solver residuals remain within tolerance, so + keep it alive. + +## 2026-05-27 01:42 CST + +- User visual assessment: `w=0.02` is still not smooth enough. +- Stopped the active `w=0.02` process. +- Last inspected `w=0.02` frame: + - step: `130` + - max face error: `0.5669971134381349 cm` + - RMS face error: `0.14639183857847926 cm` + - loss: `0.008029522873452861` +- Next run: try activation smooth regularization weight `1.0` with otherwise + similar Adam settings and separate output paths. +- First launch failed before experiment startup because the inherited + environment had `DEBUG=false`, which Cherries/environs does not accept as a + boolean. Relaunch with `DEBUG` unset. + +### Smooth Weight 1.0, Learning Rate 0.01 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --activation-smooth-weight 1.0 --inverse-lr 0.01 --adam-beta1 0.3 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 400 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1.vtu --output-series data/20-inverse-face-smooth-w1.vtu.series --output-summary data/20-inverse-face-smooth-w1-summary.json --output-snapshot data/20-inverse-face-smooth-w1.png --checkpoint data/20-inverse-face-smooth-w1-checkpoint.npz +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/e699bdbd914748698ae18dfbe857a3d7` + +Finding: + +- Stopped for learning-rate retune. +- Latest observed step: + - step: `33` + - max face error: `0.9326037823106482 cm` + - RMS face error: `0.3314180725222323 cm` + - loss: `0.03727923786337006` +- Forward and adjoint solves were clean, but progress was too slow for the + requested long solve. + +Decision: + +- Keep `activation_smooth_weight = 1.0`. +- Try more aggressive Adam learning rate `0.03`. + +### Smooth Weight 1.0, Learning Rate 0.03 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 lr 0.03' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,lr003,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --activation-smooth-weight 1.0 --inverse-lr 0.03 --adam-beta1 0.3 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 400 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-lr003.vtu --output-series data/20-inverse-face-smooth-w1-lr003.vtu.series --output-summary data/20-inverse-face-smooth-w1-lr003-summary.json --output-snapshot data/20-inverse-face-smooth-w1-lr003.png --checkpoint data/20-inverse-face-smooth-w1-lr003-checkpoint.npz +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/6ee0f0933264480f8bd690dc6b156b59` + +Early finding: + +- Step `22`: + - max face error: `0.8377363593962157 cm` + - RMS face error: `0.30202653983428435 cm` + - loss: `0.03236507681057172` +- This is much faster than `lr=0.01` at the same smoothness weight. +- Forward and adjoint solves are still converged, so keep the run alive. + +Progress: + +- Step `64`: best max face error `0.627340912143386 cm`. +- Step `81`: best max face error `0.5882497758981433 cm`. +- Step `104`: best max face error `0.5598718559511515 cm`; + RMS face error `0.17675473151651566 cm`. +- The run has intermittent max-error jumps, but saved-best max error is still + improving. Forward and adjoint solves remain converged. +- Step `136`: best max face error `0.519633694285782 cm`; loss + `0.014286165654857451`. +- Step `155`: current max face error `0.5487865471365609 cm`, RMS face error + `0.16834712740226268 cm`, loss `0.013456985214079679`; saved best remains + step `136`. +- Step `166`: new saved best max face error `0.5097637068502818 cm`; RMS face + error `0.1652534573871176 cm`; loss `0.013147623074015097`. This confirms + the `0.03` learning rate is still improving the saved-best solution after + temporary max-error oscillations. +- Step `206`: new saved best max face error `0.5011808774202496 cm`; RMS face + error `0.15135058283475686 cm`; loss `0.011406617528322168`. +- Between steps `166` and `206`, total/data loss kept trending lower while max + face error oscillated around the saved best. The near-best frames around steps + `201` and `204` were a useful sign that the lower-loss basin was not merely + reducing average error at the expense of the worst face point. +- Step `208`: new saved best max face error `0.4724317814645711 cm`; RMS face + error `0.15338749054475984 cm`; loss `0.011656140118146287`. +- Stopped the `lr=0.03` run manually after step `256`. Best checkpoint is + step `208`; later steps lowered some average-loss states but repeatedly + bounced back above the saved max-error best, with steps `254` and `255` + increasing total loss and forward work. +- Interpretation: `lr=0.03` is solver-clean and much faster than `lr=0.01`, + but the max-error objective is noisy under the stronger smoothness term. + Continue while the stagnation counter is low and saved-best max error may + still improve in bursts. + +### Smooth Weight 1.0, Learning Rate 0.015 Restart + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 lr 0.015 from lr 0.03 best' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,lr0015,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-lr003-checkpoint.npz --activation-smooth-weight 1.0 --inverse-lr 0.015 --adam-beta1 0.2 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 400 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu --output-series data/20-inverse-face-smooth-w1-lr0015-from-lr003.vtu.series --output-summary data/20-inverse-face-smooth-w1-lr0015-from-lr003-summary.json --output-snapshot data/20-inverse-face-smooth-w1-lr0015-from-lr003.png --checkpoint data/20-inverse-face-smooth-w1-lr0015-from-lr003-checkpoint.npz +``` + +Reason: + +- Restart from the saved `lr=0.03` best checkpoint instead of the latest + oscillating state. +- Use a calmer but still aggressive learning rate `0.015` and lower Adam + momentum `beta1 = 0.2`. + +Comet: + +- `https://www.comet.com/liblaf/apple/11840aed3d8b4145a05006455a34d53a` + +Early finding: + +- Restart step `0` reproduces the saved checkpoint with max face error + `0.4724015530048676 cm` and RMS face error `0.153476432662903 cm`. +- Initial forward solve from the restored displacement required more work + (`4372` PNCG steps with line search), but subsequent steps returned to the + usual converged primary path. +- Stopped after step `20`; this branch did not improve the checkpoint and had + large max-error spikes (`0.6720061407972395 cm` at step `18`, + `0.6445331927036622 cm` at step `20`). + +### Smooth Weight 1.0, Learning Rate 0.01 Restart, No Momentum + +Decision: + +- Try the same checkpoint with `inverse_lr = 0.01` and `adam_beta1 = 0.0`. +- Goal is to keep Adam but remove first-moment overshoot near the saved best. + +Comet: + +- `https://www.comet.com/liblaf/apple/1fbe00ab49d043ae943d2d6de128f6cf` + +Early finding: + +- Restart step `0` max face error: `0.47240108241019935 cm`. +- First few steps lower total/data loss but do not beat max error yet; the + branch is less violent than the `lr=0.015` restart, so keep it running for + more steps before judging it. +- Stopped after step `16`. This restart also failed to improve the saved max + error; average loss decreased, but max error stayed around `0.50 cm` and + sometimes jumped higher. + +### Add Explicit Max-Error Data Term + +Change: + +- Added `target_max_loss_weight` to the inverse script. +- Data objective is now optionally: + `mean(residual^2) + target_max_loss_weight * max(point_error)^2`. +- Default remains `0.0`; previous commands reproduce the old behavior unless + the new option is provided. + +Reason: + +- The restart experiments show that plain MSE can reduce average/RMS error + while not improving the worst face point. The success condition is max face + point error below `0.2 cm`, so the objective needs a direct but simple term + for that quantity. + +### Smooth Weight 1.0, Max Loss 0.05, Learning Rate 0.01 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 0.05 lr 0.01 beta1 0' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss005,lr001,beta10,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-lr003-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 0.05 --inverse-lr 0.01 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 400 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu --output-series data/20-inverse-face-smooth-w1-max005-lr001-beta10.vtu.series --output-summary data/20-inverse-face-smooth-w1-max005-lr001-beta10-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max005-lr001-beta10.png --checkpoint data/20-inverse-face-smooth-w1-max005-lr001-beta10-checkpoint.npz +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/86d40717cdfd4b4899048ecd36696884` + +Early finding: + +- Step `0` max face error: `0.4724015877554274 cm`. +- Step `4` max face error: `0.4600404071455367 cm`. +- Step `12` max face error: `0.4410419911134384 cm`. +- Step `20` max face error: `0.42825452852444074 cm`. +- The explicit max-error data term is improving the saved max-error state, + unlike the MSE-only restarts. Continue this branch. + +Progress: + +- Step `42` became the current best with max face error + `0.3959917249501161 cm`, RMS face error `0.14565615706329824 cm`, and + total loss `0.01918453185155822`. +- Steps `43` through `64` oscillated around the best instead of running away. + The closest later point so far is step `63` with max face error + `0.39874261246893034 cm`. +- Forward solves remain primary-success and adjoint solves remain successful. + This is still the most promising branch, so continue it before branching to a + smaller learning rate from the best checkpoint. +- Step `76` improved the best max face error to `0.3922708443300964 cm`. + The run then oscillated higher, but recovered instead of diverging. +- Step `102` improved the best max face error to `0.3817678045178647 cm`, + with RMS face error `0.14843170227457803 cm` and total loss + `0.01939259880094148`. The branch still has slow sawtooth behavior, but the + envelope continues downward. +- Step `133` improved the best max face error to `0.3702991079420246 cm`. +- Step `148` improved the best max face error to `0.36471768794557097 cm`. +- Step `159` improved the best max face error to `0.3641446954139306 cm`. + The best-error envelope is still decreasing, although the rate is now slow. + +Stopped manually after step `204` because the branch had gone `30` steps +without beating the step `174` best. The final logged current step had max face +error `0.3641532085957258 cm`, but the saved checkpoint remained step `174` +with max face error `0.36270540796442446 cm`. + +### Smooth Weight 1.0, Max Loss 0.2, Learning Rate 0.006 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 0.2 lr 0.006 beta1 0' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss02,lr0006,beta10,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max005-lr001-beta10-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 0.2 --inverse-lr 0.006 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu --output-series data/20-inverse-face-smooth-w1-max02-lr0006-beta10.vtu.series --output-summary data/20-inverse-face-smooth-w1-max02-lr0006-beta10-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max02-lr0006-beta10.png --checkpoint data/20-inverse-face-smooth-w1-max02-lr0006-beta10-checkpoint.npz +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/b11adf9d874e49a38e1a380730a2dc35` + +Early finding: + +- Restart step `0` reproduced the checkpoint within solver tolerance with max + face error `0.3627486224137097 cm`. +- Step `8` improved the best max face error to `0.36143052650335405 cm`. +- Step `13` improved the best max face error to `0.35787610164701644 cm`. +- Step `24` improved the best max face error to `0.3467935415332599 cm`. +- Step `36` improved the best max face error to `0.3438742465588682 cm`. +- The first restored forward solve hit `max_steps_reached`, but subsequent + forward solves are primary-success. The stronger max-loss term is currently + more effective than the `0.05` branch. +- Step `48` improved the best max face error to `0.33759747257847417 cm`. +- Step `55` improved the best max face error to `0.33373620330453907 cm`. +- Step `85` improved the best max face error to `0.33039988329312636 cm`, + with RMS face error `0.13498169481649822 cm` and total loss + `0.0333365033179537`. The run is oscillatory but still lowering the best + max-error envelope. +- Step `100` improved the best max face error to `0.3280007547645758 cm`. +- Step `125` improved the best max face error to `0.32789616700122437 cm`. + The branch was stopped manually after step `131`; it was still stable, but + the improvement rate after step `100` was very small. + +### Smooth Weight 1.0, Max Loss 0.2, Learning Rate 0.03 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 0.2 lr 0.03 beta1 0' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss02,lr003,beta10,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max02-lr0006-beta10-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 0.2 --inverse-lr 0.03 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu --output-series data/20-inverse-face-smooth-w1-max02-lr003-beta10.vtu.series --output-summary data/20-inverse-face-smooth-w1-max02-lr003-beta10-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max02-lr003-beta10.png --checkpoint data/20-inverse-face-smooth-w1-max02-lr003-beta10-checkpoint.npz +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/e5ed95fd2f354d97973fbd1123c9b6b5` + +Finding: + +- Restart step `0` reproduced the checkpoint with max face error + `0.32785139551639375 cm`. +- Steps `1` through `5` worsened the max face error to the `0.42-0.58 cm` + range. The run was stopped manually because learning rate `0.03` is too hot + from this checkpoint. + +### Smooth Weight 1.0, Max Loss 1.0, Learning Rate 0.003 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 lr 0.003 beta1 0' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,lr0003,beta10,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max02-lr0006-beta10-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --inverse-lr 0.003 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu --output-series data/20-inverse-face-smooth-w1-max1-lr0003-beta10.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-lr0003-beta10-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-lr0003-beta10.png --checkpoint data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz +``` + +Comet: + +- `https://www.comet.com/liblaf/apple/0a33e6be839c4dc685f5e7e6e32d0748` + +Early finding: + +- Restart step `0` reproduced the checkpoint with max face error + `0.3278513769658943 cm`. +- Step `4` improved the best max face error to `0.3272717616020751 cm`. +- Step `6` improved the best max face error to `0.32615294919671955 cm`. +- Step `10` improved the best max face error to `0.32259811010795375 cm`. + This is a better continuation than learning rate `0.03`: it still oscillates, + but the best max-error envelope is moving down. +- Step `25` improved the best max face error to `0.3197379013413725 cm`. +- Step `41` improved the best max face error to `0.3175350952260043 cm`. +- Step `49` improved the best max face error to `0.3162605665062138 cm`. +- Step `76` improved the best max face error to `0.31327605533504155 cm`. +- Step `89` improved the best max face error to `0.3101532646446417 cm`. +- Step `111` improved the best max face error to `0.3072304717534322 cm`. +- Step `121` improved the best max face error to `0.30702612327045803 cm`. +- Step `130` improved the best max face error to `0.30667410669626644 cm`. +- Step `136` improved the best max face error to `0.30530527942782004 cm`. +- Step `149` improved the best max face error to `0.3048593815806022 cm`. +- Step `156` improved the best max face error to `0.30383821828998797 cm`. + The branch remains slow but healthy; the `0.03` learning-rate branch was + faster only in the bad direction, while this run continues lowering the + max-error envelope. +- Step `172` improved the best max face error to `0.30360598737916444 cm` + after a 15-step sawtooth. +- Step `175` improved the best max face error to `0.30282201374092765 cm`. +- Step `189` improved the best max face error to `0.30234279804772407 cm`. +- Step `192` improved the best max face error to `0.3008226958170033 cm`. +- Step `203` improved the best max face error to `0.3004037458775499 cm`. +- Step `207` improved the best max face error to `0.2982452948339013 cm`, + breaking below `0.3 cm`. +- Step `214` improved the best max face error to `0.29779184496091793 cm`. +- The branch was stopped manually after step `239` with `25` no-improve steps. + The best checkpoint is + `data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz`. + +### Smooth Weight 1.0, Max Loss 2.0, Learning Rate 0.002 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 2 lr 0.002 beta1 0' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss2,lr0002,beta10,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 2.0 --inverse-lr 0.002 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu --output-series data/20-inverse-face-smooth-w1-max2-lr0002-beta10.vtu.series --output-summary data/20-inverse-face-smooth-w1-max2-lr0002-beta10-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max2-lr0002-beta10.png --checkpoint data/20-inverse-face-smooth-w1-max2-lr0002-beta10-checkpoint.npz +``` + +Early finding: + +- Started from the max-loss `1.0`, learning-rate `0.003` best checkpoint at + step `214`, max face error `0.29779184496091793 cm`. + +### Fresh MSE-Only, Smooth 0.1, Activation L2 0.1, Learning Rate 0.03 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k fresh smooth 0.1 l2 0.1 mse only lr 0.03 beta1 0.5' CHERRIES_TAGS='inverse-face,inverse,515k,fresh,smooth,w01,l2,reg01,mseonly,nomax,nohinge,lr003,beta105,beta209,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --activation-smooth-weight 0.1 --activation-l2-weight 0.1 --inverse-lr 0.03 --adam-beta1 0.5 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu --output-series data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series --output-summary data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-summary.json --output-snapshot data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.png --checkpoint data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz +``` + +Live finding: + +- This branch uses only MSE face displacement data loss plus smooth activation + regularization and activation L2 regularization. Target max loss and hinge + loss have been removed from the code. +- Comet: `https://www.comet.com/liblaf/apple/392524890bc846eaa955f8ead18f46f0`. +- Fresh start step `0` max face error was `0.965678 cm`. +- Step `40` reached max face error `0.611726 cm`. +- Step `60` reached max face error `0.512016 cm`. +- Step `77` reached max face error `0.491712 cm`. +- Step `100` reached max face error `0.481329 cm`. +- Step `111` reached max face error `0.472677 cm`. +- Step `120` reached max face error `0.468968 cm`. +- Step `130` reached max face error `0.463290 cm`. +- After step `130`, learning rate `0.03` was too hot: max error bounced as high + as `0.722327 cm` by step `156`, and the branch was stopped manually at step + `159`. +- Checkpoint saved: + `data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz`. +- Next attempt: continue from the best checkpoint with the same regularization + but lower learning rate. + +### Fresh MSE-Only, Smooth 0.1, Activation L2 0.1, Learning Rate 0.01 Continuation + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k fresh smooth 0.1 l2 0.1 mse only lr 0.01 beta1 0.5 cont' CHERRIES_TAGS='inverse-face,inverse,515k,continue,smooth,w01,l2,reg01,mseonly,nomax,nohinge,lr001,beta105,beta209,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz --activation-smooth-weight 0.1 --activation-l2-weight 0.1 --inverse-lr 0.01 --adam-beta1 0.5 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu --output-series data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.vtu.series --output-summary data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont-summary.json --output-snapshot data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont.png --checkpoint data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr001-beta105-cont-checkpoint.npz +``` + +Finding: + +- Restart step `0` reproduced the checkpoint as max face error + `0.463373 cm`. +- Learning rate `0.01` was still too hot after resetting Adam moments: step `7` + jumped to max face error `0.805593 cm`. +- Stopped manually at step `13`; no improvement over the restart checkpoint. +- Next attempt: use a smaller learning rate and no first-moment momentum. + +### Fresh MSE-Only Run With Activation Size Regularization + +User correction: + +- Start from fresh instead of a warm-start checkpoint. +- Use learning rate `0.03`, Adam `beta1 = 0.5`, `beta2 = 0.9`. +- Do not use max-error as a loss term. +- Add a regularization term to keep activation from becoming too large. + +Implementation: + +- Added `activation_l2_weight` to `20-inverse-face.py`. +- The objective is now configurable as: + `mse + activation_smooth_weight * smooth + activation_l2_weight * mean(activation_inv^2)`. +- Max error and hinge loss remain logged as metrics, but the fresh run sets + both corresponding weights to `0`. + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k fresh smooth 0.1 l2 0.001 mse only lr 0.03 beta1 0.5' CHERRIES_TAGS='inverse-face,inverse,515k,fresh,smooth,w01,l2,reg001,mseonly,nomax,nohinge,lr003,beta105,beta209,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --activation-smooth-weight 0.1 --activation-l2-weight 0.001 --target-max-loss-weight 0.0 --target-hinge-loss-weight 0.0 --inverse-lr 0.03 --adam-beta1 0.5 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu --output-series data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.vtu.series --output-summary data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105-summary.json --output-snapshot data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105.png --checkpoint data/20-inverse-face-fresh-smooth-w01-l2-001-mseonly-lr003-beta105-checkpoint.npz +``` + +### Remove Max and Hinge Loss Code + +User correction: + +- Remove target max loss and hinge loss from the script, not just from the run + configuration. +- Try activation L2 weight `0.1`. + +Implementation: + +- Removed `target_max_loss_weight` and `target_hinge_loss_weight` config fields. +- Removed max-error and hinge-loss objective terms and their loss logs. +- Kept `target/error_max` as an evaluation metric and stopping criterion only. +- `py_compile` passed after the edit. + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k fresh smooth 0.1 l2 0.1 mse only lr 0.03 beta1 0.5' CHERRIES_TAGS='inverse-face,inverse,515k,fresh,smooth,w01,l2,reg01,mseonly,nomax,nohinge,lr003,beta105,beta209,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --activation-smooth-weight 0.1 --activation-l2-weight 0.1 --inverse-lr 0.03 --adam-beta1 0.5 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu --output-series data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series --output-summary data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-summary.json --output-snapshot data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.png --checkpoint data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz +``` + +### Smooth Weight 1.0, Max Loss 1.0, Hinge 20, Learning Rate 0.001, Continuation 6 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 hinge 20 lr 0.001 beta1 0 cont6' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,hinge20,lr0001,beta10,restart,cont6,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --target-hinge-loss-weight 20.0 --inverse-lr 0.001 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu --output-series data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6.png --checkpoint data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-checkpoint.npz +``` + +Finding: + +- Comet: `https://www.comet.com/liblaf/apple/4836120b83864b5097d061f382ea7863`. +- Started from the hinge-20, learning-rate `0.0015` best checkpoint, max face + error `0.2844479074602095 cm`. +- Restart step `0` reproduced max face error `0.2844453579604742 cm`. +- Improvements were slow but useful: step `7` reached `0.2843005256166111 cm`, + step `13` reached `0.28399609612516774 cm`, step `24` reached + `0.2834037005979077 cm`, step `47` reached `0.28189051500554324 cm`, and + step `71` reached `0.2811030148268988 cm`. +- The run was stopped manually at step `100` after 29 non-improving steps and + several hotter spikes, including a max face error above `0.31 cm`. +- Best checkpoint saved: + `data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-checkpoint.npz`. +- Next attempt: continue from this checkpoint with learning rate `0.0007`. + +### Smooth Weight 1.0, Max Loss 1.0, Hinge 20, Learning Rate 0.0007, Continuation 7 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 hinge 20 lr 0.0007 beta1 0 cont7' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,hinge20,lr00007,beta10,restart,cont7,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-hinge20-lr0001-beta10-cont6-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --target-hinge-loss-weight 20.0 --inverse-lr 0.0007 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu --output-series data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7.png --checkpoint data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-checkpoint.npz +``` + +Finding: + +- Comet: `https://www.comet.com/liblaf/apple/feee80ee24714b80bfa3edf7ec6e45aa`. +- Restart step `0` reproduced max face error `0.2811233589935371 cm`. +- Step `2` improved slightly to `0.28109085577149007 cm`; step `3` improved + to `0.2810175545292794 cm`. +- Steps `7` through `21` jumped into a bad tail-error branch, peaking at + `0.3168059611947451 cm` and only recovering to `0.29306716562472407 cm`. +- The branch was stopped manually at step `21`. +- Best checkpoint saved: + `data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-checkpoint.npz`. +- Next attempt: continue from this checkpoint with learning rate `0.0003`. + +### Smooth Weight 1.0, Max Loss 1.0, Hinge 20, Learning Rate 0.0003, Continuation 8 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 hinge 20 lr 0.0003 beta1 0 cont8' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,hinge20,lr00003,beta10,restart,cont8,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-hinge20-lr00007-beta10-cont7-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --target-hinge-loss-weight 20.0 --inverse-lr 0.0003 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu --output-series data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8.png --checkpoint data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-checkpoint.npz +``` + +Finding: + +- Comet: `https://www.comet.com/liblaf/apple/16f2a6c7ef2249d1b1c80a9e108fdf33`. +- Restart step `0` reproduced max face error `0.28101676055687713 cm`. +- The smaller learning rate was productive: step `2` reached + `0.28083431778547613 cm`, step `10` reached `0.2805841455920753 cm`, + step `21` crossed below `0.28 cm` at `0.279931202423381 cm`, and step `33` + reached `0.27978326750909654 cm`. +- After step `37`, the run jumped again into a bad tail branch above `0.31 cm`; + it was stopped manually at step `44`. +- Best checkpoint saved: + `data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-checkpoint.npz`. +- Tail inspection at the best checkpoint: + max `0.27978326750909654 cm`, mean `0.1048391165112908 cm`, RMS + `0.12699578191612115 cm`; `882` face points remain above `0.2 cm`, and no + face points remain above `0.28 cm`. +- Next attempt: increase hinge weight to `100` with learning rate `0.00015` so + the objective pushes the full above-tolerance tail more strongly. + +### Objective Correction: Remove Max-Error Loss + +User correction: + +- The explicit max-error data term is cheating and should not be used as a + loss. +- Smooth weight `1.0` may be too strong; try smooth weight `0.1`. + +Decision: + +- Stop the max-loss and hinge-heavy branch. +- Resume from the best available warm-start checkpoint, but set + `target_max_loss_weight = 0` and `target_hinge_loss_weight = 0`. +- Keep max face error as a reported metric only. +- Use objective `mse + 0.1 * activation_smooth`. + +### Smooth Weight 0.1, MSE Only, Learning Rate 0.003, Continuation 10 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 0.1 mse only lr 0.003 beta1 0 cont10' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w01,mseonly,nomax,nohinge,lr0003,beta10,restart,cont10,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-hinge20-lr00003-beta10-cont8-checkpoint.npz --activation-smooth-weight 0.1 --target-max-loss-weight 0.0 --target-hinge-loss-weight 0.0 --inverse-lr 0.003 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu --output-series data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.vtu.series --output-summary data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10-summary.json --output-snapshot data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10.png --checkpoint data/20-inverse-face-smooth-w01-mseonly-lr0003-beta10-cont10-checkpoint.npz +``` + +### Smooth Weight 1.0, Max Loss 1.0, Learning Rate 0.0015, Continuation 2 Closeout + +Finding: + +- The continuation eventually improved beyond the live notes: best step `188`, + loss `0.09475242891622601`, max face error + `0.2859763190750222 cm`. +- The run was stopped manually at step `214` after 26 non-improving steps and + visible drift away from the best state. +- The summary JSON was not written because the manual interrupt happened during + shutdown, but the checkpoint was saved at + `data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-checkpoint.npz`. + +### Smooth Weight 1.0, Max Loss 1.0, Learning Rate 0.003, Continuation 3 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 lr 0.003 beta1 0 cont3' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,lr0003,beta10,restart,cont3,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --inverse-lr 0.003 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu --output-series data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3.png --checkpoint data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-checkpoint.npz +``` + +Finding: + +- Comet: `https://www.comet.com/liblaf/apple/35f619e6fef546de9c24c7a96bbb7b66`. +- Restart step `0` slightly improved the restored state to max face error + `0.28588963207942014 cm`, but the restored forward solve reached + `max_steps_reached`. +- Steps `1` through `12` did not beat the restart state; max face error moved + mostly in the `0.288 cm` to `0.310 cm` range. +- The branch was stopped because learning rate `0.003` was still too jumpy from + this checkpoint. The best checkpoint remained step `0` at + `data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-checkpoint.npz`. +- Next attempt: try learning rate `0.002` from this best state. + +### Smooth Weight 1.0, Max Loss 1.0, Learning Rate 0.002, Continuation 4 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 lr 0.002 beta1 0 cont4' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,lr0002,beta10,restart,cont4,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-lr0003-beta10-cont3-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --inverse-lr 0.002 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu --output-series data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4.png --checkpoint data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4-checkpoint.npz +``` + +Finding: + +- Comet: `https://www.comet.com/liblaf/apple/ef9f781632d64725858efcaacdc5a1ae`. +- Restart step `0` reproduced the best state at max face error + `0.2858873425461347 cm`; the restored forward solve again reached + `max_steps_reached`. +- Steps `1` through `10` did not beat step `0`; the best post-update value was + step `4` at max face error `0.286840696700205 cm`. +- The run was stopped because learning rate `0.002` still overshot and did not + improve the checkpoint. + +### Tail Hinge Objective + +Finding: + +- At the current best checkpoint, `931` of `6787` face points still exceed the + required `0.2 cm` point-error tolerance. +- The max-error term is useful but noisy because only the worst point receives + the extra max-loss gradient. +- Added an optional `target_hinge_loss_weight` term: + `mean(max(point_error - max_point_error_cm, 0)^2)`. +- The term is disabled by default and will be used only for the next tail + reduction probe. + +### Smooth Weight 1.0, Max Loss 1.0, Hinge 20, Learning Rate 0.0015, Continuation 5 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 hinge 20 lr 0.0015 beta1 0 cont5' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,hinge20,lr00015,beta10,restart,cont5,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-lr0002-beta10-cont4-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --target-hinge-loss-weight 20.0 --inverse-lr 0.0015 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu --output-series data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5.png --checkpoint data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-checkpoint.npz +``` + +Finding: + +- Comet: `https://www.comet.com/liblaf/apple/b615e11fc5b9450e9ab6e3c081fcfc88`. +- Restart step `0` had max face error `0.2858862032838504 cm`; + hinge penalty was `0.007042944831528593`. +- The branch improved late: step `24` reached `0.28576362536746375 cm`, + step `29` reached `0.2854799925450994 cm`, and step `34` reached + `0.2844479074602095 cm`. +- After step `34`, the run wandered for 38 non-improving steps and was stopped + manually at step `72`. +- Checkpoint saved: + `data/20-inverse-face-smooth-w1-max1-hinge20-lr00015-beta10-cont5-checkpoint.npz`. +- Next attempt: continue from this best checkpoint with learning rate `0.001`. +- Comet: `https://www.comet.com/liblaf/apple/4a9d5287cca0411cb993586b89cb54cd`. +- Restart step `0` reproduced the checkpoint as max face error + `0.29785374454499103 cm`; the first restored forward solve reached + `max_steps_reached`. +- Step `10` improved the best max face error to `0.29749668917954253 cm`. +- Step `13` improved the best max face error to `0.2972460977923983 cm`. +- Step `19` improved the best max face error to `0.297003376706202 cm`. +- Step `22` improved the best max face error to `0.29667913007873686 cm`. +- Step `26` improved the best max face error to `0.29621725845888425 cm`. +- Step `32` improved the best max face error to `0.29546154311654216 cm`. +- Step `41` improved the best max face error to `0.2948846265062962 cm`. +- Step `47` improved the best max face error to `0.29482957251336617 cm`. +- Step `48` improved the best max face error to `0.2944264277544116 cm`. +- Step `49` improved the best max face error to `0.29396597580728384 cm`. +- Step `50` improved the best max face error to `0.2937005436723448 cm`. +- Step `56` improved the best max face error to `0.29328888937191855 cm`. +- Step `59` improved the best max face error to `0.2931713026203408 cm`. +- Step `66` improved the best max face error to `0.2926574698232431 cm`. +- Step `70` improved the best max face error to `0.2924755055157813 cm`. +- Step `73` improved the best max face error to `0.2920230195402716 cm`. +- Step `100` improved the best max face error to `0.29191637235751283 cm`. + This arrived after a long 26-step stall, so the branch was stopped manually + too early but still produced a useful best checkpoint. + +### Smooth Weight 1.0, Max Loss 1.0, Learning Rate 0.0015, Continuation 2 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 lr 0.0015 beta1 0 cont2' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,lr00015,beta10,restart,cont2,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-lr00015-beta10-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --inverse-lr 0.0015 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu --output-series data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2.png --checkpoint data/20-inverse-face-smooth-w1-max1-lr00015-beta10-cont2-checkpoint.npz +``` + +Early finding: + +- Started from the previous low-LR checkpoint at step `100`, max face error + `0.29191637235751283 cm`. +- Comet: `https://www.comet.com/liblaf/apple/761e422828b24c15be31afef83444e3b`. +- Restart step `0` reproduced the checkpoint as max face error + `0.2919127096991687 cm`; the first restored forward solve reached + `max_steps_reached`. +- Step `7` improved the max face error to `0.291895878091469 cm`. +- Step `12` improved the max face error to `0.29184114794964144 cm`. +- Step `31` improved the max face error to `0.2917224559121959 cm` after an + 18-step dry patch. +- Step `40` improved the max face error to `0.2914485524017837 cm`. +- Step `55` improved the max face error to `0.2912445453921606 cm`. +- Step `63` broke below `0.29 cm` with max face error + `0.28997020361436404 cm`. +- Step `91` improved the max face error to `0.2892645939802489 cm` after a + 23-step dry patch. +- Step `105` improved the max face error to `0.2889045197411773 cm`. +- Step `132` improved the max face error to `0.2883430953128106 cm`. +- Step `141` made a larger drop to `0.2874829621023278 cm`. +- Current live finding: the branch is slow and noisy, but repeated late + improvements show that learning rate `0.0015` remains productive. A much + larger learning rate `0.03` was too hot from the nearby checkpoint; a + moderate restart such as `0.003` is the next candidate only after this + branch stalls. + +### Smooth Weight 1.0, Max Loss 1.0, Learning Rate 0.0015 + +Command: + +```bash +env -u DEBUG CHERRIES_NAME='inverse face 515k smooth weight 1 max loss 1 lr 0.0015 beta1 0' CHERRIES_TAGS='inverse-face,inverse,515k,smooth,w1,maxloss1,lr00015,beta10,restart,stable-neo-hookean,adam' uv run python src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-smooth-w1-max1-lr0003-beta10-checkpoint.npz --activation-smooth-weight 1.0 --target-max-loss-weight 1.0 --inverse-lr 0.0015 --adam-beta1 0.0 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu --output-series data/20-inverse-face-smooth-w1-max1-lr00015-beta10.vtu.series --output-summary data/20-inverse-face-smooth-w1-max1-lr00015-beta10-summary.json --output-snapshot data/20-inverse-face-smooth-w1-max1-lr00015-beta10.png --checkpoint data/20-inverse-face-smooth-w1-max1-lr00015-beta10-checkpoint.npz +``` + +Early finding: + +- Started from the max-loss `1.0`, learning-rate `0.003` best checkpoint at + step `214`, max face error `0.29779184496091793 cm`. diff --git a/exp/2026/05/20/inverse-face/docs/30-transfer-activation-3152k.md b/exp/2026/05/20/inverse-face/docs/30-transfer-activation-3152k.md new file mode 100644 index 000000000..d04080d2b --- /dev/null +++ b/exp/2026/05/20/inverse-face/docs/30-transfer-activation-3152k.md @@ -0,0 +1,101 @@ +# 3152k Activation Transfer Forward Run + +## Purpose + +Transfer the solved 515k per-active-tet `activation_inv` field from +`20-inverse-face-smooth-w1-lr003.vtu.series` to the 3152k anatomy mesh and run +one high-resolution forward solve with the transferred active material field. + +## Command + +```bash +cd exp/2026/05/20/inverse-face +DEBUG=false CHERRIES_NAME="transfer activation 3152k forward" CHERRIES_TAGS="inverse-face,transfer-activation,3152k,forward" uv run python src/30-transfer-activation-3152k.py +``` + +The default `solved_frame_index=-1` selected the last frame of the 515k solved +series: `20-inverse-face-smooth-w1-lr003_000256.vtu`. + +## Method + +The script extracts `InFaceConvex` tetrahedra from +`41-expression-3152k.vtu`, rebuilds the same material and fixed-cranium fields +used by the 515k inverse-face experiment, then transfers cell-centered +`RecoveredActivationInv` by inverse-distance weighting over active-cell centers +with `k=4` and `power=2`. Inactive target cells keep zero activation. + +The transferred full `(n_cells, 6)` tensor is installed as +`materials["muscle"]["activation_inv"]`, and the regular `Forward.step()` path +runs to equilibrium with `forward_rtol=5e-4`. + +## Results + +- Extracted high-resolution face mesh: 225,052 points and 1,127,541 tetrahedra. +- Active target tetrahedra: 283,391. +- Source active tetrahedra: 58,494. +- Transfer nearest active-center distance max: 1.167946444926288. +- Transferred active activation RMS: 0.5188147365068417. +- Forward result: `primary_success`. +- Forward steps: 462. +- Forward relative gradient norm: 0.0003410798327373236. +- Target error: mean 0.19756966452709088 cm, RMS 0.2834989958453261 cm, max 0.925671095808897 cm. +- Forward solve time: 16.038381466001738 s. +- Total script time: 26.93065482401289 s. + +## Assets + +- Prepared transferred input: `data/30-transfer-activation-3152k-input.vtu` +- Forward output: `data/30-transfer-activation-3152k.vtu` +- Single-frame output series: `data/30-transfer-activation-3152k.vtu.series` +- Summary JSON: `data/30-transfer-activation-3152k-summary.json` +- Run log: `logs/30-transfer-activation-3152k.log` +- Comet run: + +## Notes + +The final Comet git-patch logging phase stalled on large VTU diffs and was +interrupted after outputs and the Cherries summary were written. Comet still +recorded the main metrics and source metadata, but the log ends with +`Failed to log run in comet.com`. + +Cherries Experiment Summary: + +```yaml +--- +name: transfer activation 3152k forward +url: https://www.comet.com/liblaf/apple/1708acd3c5f34abf8276c32b4d73351a +exp_dir: exp/2026/05/20/inverse-face +cwd: exp/2026/05/20/inverse-face +cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/30-transfer-activation-3152k.py +params: + E: 1.0 + active_fraction_tol: 0.001 + expression: Expression000 + fixed_point_mask: IsCranium + forward_atol: 0.0 + forward_max_steps: 10000 + forward_rtol: 0.0005 + nu: 0.49 + output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu + output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu + output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series + output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json + smas_stiffness_ratio: 100.0 + solved: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series + solved_frame_index: -1 + source: /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu + target_point_mask: IsFace + target_scale: 1.0 + transfer_chunk_size: 200000 + transfer_k: 4 + transfer_power: 2.0 +inputs: + - /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu + - exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series +outputs: + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json +--- +``` diff --git a/exp/2026/05/20/inverse-face/docs/31-transfer-activation-3152k-smas1.md b/exp/2026/05/20/inverse-face/docs/31-transfer-activation-3152k-smas1.md new file mode 100644 index 000000000..2cecdb12c --- /dev/null +++ b/exp/2026/05/20/inverse-face/docs/31-transfer-activation-3152k-smas1.md @@ -0,0 +1,98 @@ +# 3152k Activation Transfer Forward Run, SMAS Ratio 1 + +## Purpose + +Repeat the 3152k transferred-activation forward test with no extra SMAS +stiffening, using `smas_stiffness_ratio=1.0`. + +## Command + +```bash +cd exp/2026/05/20/inverse-face +DEBUG=1 CHERRIES_NAME="transfer activation 3152k smas1 forward" CHERRIES_TAGS="inverse-face,transfer-activation,3152k,forward,smas1" uv run python src/30-transfer-activation-3152k.py --smas-stiffness-ratio 1.0 --output-input data/31-transfer-activation-3152k-smas1-input.vtu --output data/31-transfer-activation-3152k-smas1.vtu --output-series data/31-transfer-activation-3152k-smas1.vtu.series --output-summary data/31-transfer-activation-3152k-smas1-summary.json +``` + +The run used the last frame of +`data/20-inverse-face-smooth-w1-lr003.vtu.series` and the same transfer +settings as the SMAS ratio 100 run: inverse-distance weighting over active +cell centers with `k=4` and `power=2`. + +## Results + +- Extracted high-resolution face mesh: 225,052 points and 1,127,541 tetrahedra. +- Active target tetrahedra: 283,391. +- Source active tetrahedra: 58,494. +- Forward result: `primary_success`. +- Forward steps: 188. +- Forward relative gradient norm: 0.00042317457894796293. +- Target error: mean 0.21057998403163483 cm, RMS 0.26809221274006007 cm, max 0.9064648852118059 cm. +- All-point error: RMS 0.18009951096673188 cm, max 1.0347772454701907 cm. +- Forward solve time: 6.737611743999878 s. +- Total script time: 14.016527194995433 s. + +Compared with the SMAS ratio 100 run, `smas_stiffness_ratio=1.0` reduced the +forward step count from 462 to 188, reduced target RMS error from +0.2834989958453261 cm to 0.26809221274006007 cm, and reduced target max error +from 0.925671095808897 cm to 0.9064648852118059 cm. Target mean error increased +from 0.19756966452709088 cm to 0.21057998403163483 cm, and all-point RMS error +increased from 0.13328656562825245 cm to 0.18009951096673188 cm. + +## Assets + +- Prepared transferred input: `data/31-transfer-activation-3152k-smas1-input.vtu` +- Forward output: `data/31-transfer-activation-3152k-smas1.vtu` +- Single-frame output series: `data/31-transfer-activation-3152k-smas1.vtu.series` +- Summary JSON: `data/31-transfer-activation-3152k-smas1-summary.json` +- Run log: `logs/30-transfer-activation-3152k.log` + +## Notes + +This was run with `DEBUG=1`, so there is no Comet run URL and no automatic +experiment commit. Because `cherries.output(...)` records the script defaults +before CLI overrides are applied, the Cherries summary block lists the default +`30-...` outputs even though the actual saved files are the `31-...-smas1` +paths above. + +Cherries Experiment Summary: + +```yaml +--- +name: transfer activation 3152k smas1 forward +exp_dir: exp/2026/05/20/inverse-face +cwd: exp/2026/05/20/inverse-face +cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/30-transfer-activation-3152k.py + --smas-stiffness-ratio 1.0 --output-input data/31-transfer-activation-3152k-smas1-input.vtu + --output data/31-transfer-activation-3152k-smas1.vtu --output-series data/31-transfer-activation-3152k-smas1.vtu.series + --output-summary data/31-transfer-activation-3152k-smas1-summary.json +params: + E: 1.0 + active_fraction_tol: 0.001 + expression: Expression000 + fixed_point_mask: IsCranium + forward_atol: 0.0 + forward_max_steps: 10000 + forward_rtol: 0.0005 + nu: 0.49 + output: data/31-transfer-activation-3152k-smas1.vtu + output_input: data/31-transfer-activation-3152k-smas1-input.vtu + output_series: data/31-transfer-activation-3152k-smas1.vtu.series + output_summary: data/31-transfer-activation-3152k-smas1-summary.json + smas_stiffness_ratio: 1.0 + solved: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series + solved_frame_index: -1 + source: /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu + target_point_mask: IsFace + target_scale: 1.0 + transfer_chunk_size: 200000 + transfer_k: 4 + transfer_power: 2.0 +inputs: + - /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu + - exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series +outputs: + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series + - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json +--- +``` diff --git a/exp/2026/05/20/inverse-face/docs/40-transfer-activation-matrix.md b/exp/2026/05/20/inverse-face/docs/40-transfer-activation-matrix.md new file mode 100644 index 000000000..2a24f0793 --- /dev/null +++ b/exp/2026/05/20/inverse-face/docs/40-transfer-activation-matrix.md @@ -0,0 +1,66 @@ +# Corrected 515k/3152k Transfer Forward Matrix + +## Purpose + +Run the transferred `activation_inv` forward test across both source mesh +resolutions and both SMAS stiffness settings after correcting the material +fractions to be disjoint: + +- muscle fraction: `MuscleFraction`, active material, `E = smas_stiffness_ratio * E` +- SMAS-only fraction: `max(SmasFraction - MuscleFraction, 0)`, passive material, + `E = smas_stiffness_ratio * E` +- background fraction: `1 - max(SmasFraction, MuscleFraction)`, passive material, + `E = 1` + +## Command + +```bash +cd exp/2026/05/20/inverse-face +DEBUG=1 CHERRIES_NAME="$stem" CHERRIES_TAGS="inverse-face,transfer-activation,forward,matrix" uv run python src/30-transfer-activation-3152k.py --source "$source" --smas-stiffness-ratio "$ratio" --output-input "data/${stem}-input.vtu" --output "data/${stem}.vtu" --output-series "data/${stem}.vtu.series" --output-summary "data/${stem}-summary.json" +``` + +The four concrete cases were: + +- `40-transfer-activation-515k-smas100` +- `41-transfer-activation-515k-smas1` +- `42-transfer-activation-3152k-smas100` +- `43-transfer-activation-3152k-smas1` + +## Results + +| case | cells | active tets | steps | target mean cm | target RMS cm | target max cm | all RMS cm | all max cm | forward s | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| 515k, SMAS 100 | 253876 | 58494 | 421 | 0.422151 | 0.475055 | 1.297573 | 0.368954 | 9.127733 | 3.825 | +| 515k, SMAS 1 | 253876 | 58494 | 244 | 0.274502 | 0.318913 | 0.942866 | 0.243835 | 1.195187 | 3.633 | +| 3152k, SMAS 100 | 1127541 | 283391 | 82 | 0.242941 | 0.309361 | 1.033624 | 0.200444 | 3.558038 | 4.520 | +| 3152k, SMAS 1 | 1127541 | 283391 | 183 | 0.232794 | 0.283870 | 0.895340 | 0.198317 | 1.029727 | 6.647 | + +All four forward solves returned `primary_success`. + +## Assets + +- `data/40-transfer-activation-515k-smas100.vtu` +- `data/40-transfer-activation-515k-smas100-summary.json` +- `data/40-transfer-activation-515k-smas100.vtu.series` +- `data/41-transfer-activation-515k-smas1.vtu` +- `data/41-transfer-activation-515k-smas1-summary.json` +- `data/41-transfer-activation-515k-smas1.vtu.series` +- `data/42-transfer-activation-3152k-smas100.vtu` +- `data/42-transfer-activation-3152k-smas100-summary.json` +- `data/42-transfer-activation-3152k-smas100.vtu.series` +- `data/43-transfer-activation-3152k-smas1.vtu` +- `data/43-transfer-activation-3152k-smas1-summary.json` +- `data/43-transfer-activation-3152k-smas1.vtu.series` + +## Notes + +The 3152k extracted face mesh has 214,828 cells where muscle and SMAS both have +positive fraction and 94,206 cells where muscle exceeds SMAS. With the corrected +formula, `background + muscle + smas_only` stays in `[0.9999999999999999, 1.0]` +on the 3152k extracted mesh. + +These runs used `DEBUG=1`, so there are no Comet URLs and no automatic +experiment commits. Because the Cherries path helpers queue default paths before +CLI overrides are applied, the Cherries summary block may list the script's +default `30-...` outputs even though the actual files were saved under the +explicit `40`-`43` stems above. diff --git a/exp/2026/05/20/inverse-face/docs/README.md b/exp/2026/05/20/inverse-face/docs/README.md new file mode 100644 index 000000000..7b97e483b --- /dev/null +++ b/exp/2026/05/20/inverse-face/docs/README.md @@ -0,0 +1,3 @@ +# Inverse Face + +- [20-inverse-face.md](20-inverse-face.md) diff --git a/exp/2026/05/20/inverse-face/figs/10-face-Expression000.png b/exp/2026/05/20/inverse-face/figs/10-face-Expression000.png new file mode 100644 index 000000000..f3b689e23 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/10-face-Expression000.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66186077bf5b392344f0c828edbeaeede847d2cfa3a5c7bd2812324656f65e4d +size 443303 diff --git a/exp/2026/05/20/inverse-face/figs/10-face-input.png b/exp/2026/05/20/inverse-face/figs/10-face-input.png new file mode 100644 index 000000000..d03793e12 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/10-face-input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c439caa70e820e91aea8c628f32dcd9f901b844ee75baf60dd80af848141316 +size 433981 diff --git a/exp/2026/05/20/inverse-face/figs/10-smas-fraction.png b/exp/2026/05/20/inverse-face/figs/10-smas-fraction.png new file mode 100644 index 000000000..bea5389be --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/10-smas-fraction.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0550044198fa7b2a37ffc962c40c688f943ddd7c4f69e166c5b194e69950e31 +size 419190 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-error.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-error.png new file mode 100644 index 000000000..b29309f17 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b038a2ab8b55389408c4f185d85c288dd2a167eab396aa86b37226ea5d2eb60 +size 686342 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-smas1-error.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-smas1-error.png new file mode 100644 index 000000000..15900fab4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-smas1-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7380e710aa375e5023b7caceac74ef0037fc04f1098c0b2e6d555c7bd56a7b12 +size 540016 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-smas1-white.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-smas1-white.png new file mode 100644 index 000000000..cc8af4865 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-smas1-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3063984e1a3ae4a73163ca4efa10ddcb7c57d9a0fd9f2b95b923d5160aa2dae +size 460564 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-white.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-white.png new file mode 100644 index 000000000..8790dffe4 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-default-nu0375-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c6654eb3f8da9fa75b1b9c4d4229f7422f6b1790fcec6fdd9c5cc7113dc6782 +size 479321 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-error.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-error.png new file mode 100644 index 000000000..99e99767a --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba16132177a56156aa8d1e4c36ed06561d40a4f7fea2da47a844acb5d1cf4112 +size 613266 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-white.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-white.png new file mode 100644 index 000000000..0dfe0fd38 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4661cf29707b965e6fcc7518d3cff8404c329762a9b06f5d2dd62c12cd177504 +size 508944 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-act.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-act.png new file mode 100644 index 000000000..4d8522cd9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-act.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:091bc3ef2e497e1f4cf04122ff51d548a1c013429df2532947712ee8efa97fd8 +size 1077305 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-error.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-error.png new file mode 100644 index 000000000..117976ea9 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4e37b096e52fb80e09e7c747767fccf1030c90b83f97607a8b9507c19f64e5e +size 771993 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-white.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-white.png new file mode 100644 index 000000000..1ffc71cc3 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-nu049-smas100-noclamp-super-loose-reg-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12db20f76c50c42ecdc245bd6d3cf57b8caa080c40284354a4c06d30438bbdb2 +size 561422 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-error.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-error.png new file mode 100644 index 000000000..2641df1aa --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-error.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2d5ba85c9b5f21d012fa8b503edb3dcf1fa259350fb60611847e14a21cf1f42 +size 850348 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-white.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-white.png new file mode 100644 index 000000000..4d579d393 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d95183ed6c7caa3a396ee204d08bde0231ea684a67ad641caadef24524aa7864 +size 549501 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003-act.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003-act.png new file mode 100644 index 000000000..34d3c3249 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003-act.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ee568cf8ed5108bd1c0403208363a09f7ced8b05e4005f7c47094c25dfa77a8 +size 711666 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003-white.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003-white.png new file mode 100644 index 000000000..0b5792502 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad6df7cb17ce99c3674519e37f36319797eaf1032e7045289bbfe6663c153151 +size 529846 diff --git a/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003.png b/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003.png new file mode 100644 index 000000000..0b5792502 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/20-inverse-face-smooth-w1-lr003.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad6df7cb17ce99c3674519e37f36319797eaf1032e7045289bbfe6663c153151 +size 529846 diff --git a/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-act.png b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-act.png new file mode 100644 index 000000000..cf1bb95c7 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-act.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21d7367a5e7605b2d372187b6f5c1fee667170195f37e0d4df6bd73a378a714c +size 1166664 diff --git a/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-white.png b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-white.png new file mode 100644 index 000000000..17c24c94f --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0aad49579d58c56f3a24bad929efb1fc7f54593e83d25216742492f4e806dee7 +size 748971 diff --git a/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-wo-smas-act.png b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-wo-smas-act.png new file mode 100644 index 000000000..83180238e --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-wo-smas-act.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a17391539d42e9b1d2ed109902bb9663ceae693b021825563bea2057d703a4c8 +size 1087462 diff --git a/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-wo-smas-white.png b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-wo-smas-white.png new file mode 100644 index 000000000..aa1b6cfae --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-3152k-wo-smas-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69117979fff08679b7887a05aab9bc96bbafceb06236547977a4b546fb42cbbf +size 851979 diff --git a/exp/2026/05/20/inverse-face/figs/30-transfer-activation-515k-act.png b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-515k-act.png new file mode 100644 index 000000000..90bbc3c96 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-515k-act.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbe5014528917c687a5fb70e2690dbbb3bb4e434e7db1e301777d38e50499598 +size 927489 diff --git a/exp/2026/05/20/inverse-face/figs/30-transfer-activation-515k-white.png b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-515k-white.png new file mode 100644 index 000000000..7e9f06872 --- /dev/null +++ b/exp/2026/05/20/inverse-face/figs/30-transfer-activation-515k-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b4ee5485a838da3a02ccbd90bce83ce68b7ff1a2ad58a08577800a1d74fb3f3 +size 649611 diff --git a/exp/2026/05/20/inverse-face/src/10-prepare-inverse-face.py b/exp/2026/05/20/inverse-face/src/10-prepare-inverse-face.py new file mode 100644 index 000000000..7275d960f --- /dev/null +++ b/exp/2026/05/20/inverse-face/src/10-prepare-inverse-face.py @@ -0,0 +1,236 @@ +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv + +from liblaf import cherries, melon + +SOURCE = Path( + "/home/liblaf/github/liblaf/melon/exp/2025/04/30/" + "human-head-anatomy/data/41-expression-515k.vtu" +) +OUTPUT_STEM = "10-inverse-face" +IN_FACE_CONVEX = "InFaceConvex" +IN_FACE_CONTEXT_TYPO = "InFaceContex" +TARGET_SURFACE_MASK = "TargetSurfaceMask" +BACKGROUND_FRACTION = "BackgroundFraction" +ACTIVE_FRACTION = "ActiveFraction" +SMAS_STIFFNESS_FRACTION = "SmasStiffnessFraction" + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + source: Path = SOURCE + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output_target: Path = cherries.output(f"{OUTPUT_STEM}-target.vtu") + + expression: str = "Expression000" + target_scale: float = 1.0 + target_point_mask: str = "IsFace" + fixed_point_mask: str = "IsCranium" + active_fraction_tol: float = 1.0e-3 + + E: float = 1.0 + nu: float = 0.49 + smas_stiffness_ratio: float = 1.0e2 + + +def require_array(obj: pv.DataSet, association: str, name: str) -> np.ndarray: + data = obj.cell_data if association == "cell" else obj.point_data + if name not in data: + msg = f"{association}_data[{name!r}] is missing" + raise KeyError(msg) + return np.asarray(data[name]) + + +def face_cell_mask(mesh: pv.UnstructuredGrid) -> tuple[np.ndarray, str]: + if IN_FACE_CONVEX in mesh.cell_data: + return np.asarray(mesh.cell_data[IN_FACE_CONVEX], dtype=bool), IN_FACE_CONVEX + if IN_FACE_CONTEXT_TYPO in mesh.cell_data: + return ( + np.asarray(mesh.cell_data[IN_FACE_CONTEXT_TYPO], dtype=bool), + IN_FACE_CONTEXT_TYPO, + ) + msg = f"source mesh has neither {IN_FACE_CONVEX!r} nor {IN_FACE_CONTEXT_TYPO!r}" + raise KeyError(msg) + + +def extract_face_mesh(source: pv.UnstructuredGrid) -> tuple[pv.UnstructuredGrid, str]: + mask, selected_name = face_cell_mask(source) + if not np.any(mask): + msg = f"no tetrahedra selected by {selected_name}" + raise ValueError(msg) + mesh = source.extract_cells(mask) + if not isinstance(mesh, pv.UnstructuredGrid): + mesh = mesh.cast_to_unstructured_grid() + cell_types = set(np.asarray(mesh.celltypes).tolist()) + if cell_types != {int(pv.CellType.TETRA)}: + msg = f"expected tetra-only face mesh, got cell types {sorted(cell_types)}" + raise ValueError(msg) + return mesh, selected_name + + +def lame_parameters(E: float, nu: float) -> tuple[float, float]: + lambda_ = E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu)) + mu = E / (2.0 * (1.0 + nu)) + return float(lambda_), float(mu) + + +def active_mask(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + muscle = require_array(mesh, "cell", "MuscleFraction").astype(np.float64) + return muscle > cfg.active_fraction_tol + + +def zero_activation_fields(mesh: pv.UnstructuredGrid) -> None: + from liblaf.apple.common import ACTIVATION, ACTIVATION_INV + + zero = np.zeros((mesh.n_cells, 6), dtype=np.float64) + mesh.cell_data[ACTIVATION.vtk] = zero.copy() + mesh.cell_data[ACTIVATION_INV.vtk] = zero.copy() + + +def disjoint_fractions( + muscle: np.ndarray, smas: np.ndarray +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + muscle_fraction = np.clip(muscle, 0.0, 1.0) + smas_fraction = np.clip(smas - muscle_fraction, 0.0, 1.0) + background_fraction = np.clip(1.0 - np.maximum(smas, muscle_fraction), 0.0, 1.0) + return background_fraction, muscle_fraction, smas_fraction + + +def add_material_fields(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU + from liblaf.apple.common import E as YOUNG_MODULUS + + muscle = require_array(mesh, "cell", "MuscleFraction").astype(np.float64) + smas = require_array(mesh, "cell", "SmasFraction").astype(np.float64) + background, muscle, smas_stiffness = disjoint_fractions(muscle, smas) + lambda_, mu = lame_parameters(cfg.E, cfg.nu) + + mesh.cell_data[BACKGROUND_FRACTION] = background + mesh.cell_data[ACTIVE_FRACTION] = muscle + mesh.cell_data[SMAS_STIFFNESS_FRACTION] = smas_stiffness + mesh.cell_data["ActivationMask"] = active_mask(mesh, cfg).astype(np.int8) + mesh.cell_data["InverseActiveMask"] = mesh.cell_data["ActivationMask"] + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, cfg.E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, cfg.nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, lambda_, dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, mu, dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = np.ones(mesh.n_cells, dtype=np.float64) + zero_activation_fields(mesh) + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + fixed = require_array(mesh, "point", cfg.fixed_point_mask).astype(bool) + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[fixed, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedCranium"] = fixed.astype(np.int8) + return fixed + + +def target_point_mask(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + mask = require_array(mesh, "point", cfg.target_point_mask).astype(bool) + if not np.any(mask): + msg = f"point_data[{cfg.target_point_mask!r}] selected no target points" + raise ValueError(msg) + return mask + + +def make_target_mesh( + mesh: pv.UnstructuredGrid, cfg: Config, fixed: np.ndarray +) -> pv.UnstructuredGrid: + target = mesh.copy(deep=True) + displacement = require_array(target, "point", cfg.expression).astype(np.float64) + displacement = cfg.target_scale * displacement + displacement[fixed] = 0.0 + mask = target_point_mask(target, cfg) + + target.point_data["Displacement"] = displacement + target.point_data["TargetDisplacement"] = displacement + target.point_data["TargetPoint"] = target.points + displacement + target.point_data[TARGET_SURFACE_MASK] = mask.astype(np.int8) + target.point_data["TargetSurfacePoint"] = mask.astype(np.int8) + target.field_data["TargetExpression"] = np.asarray([cfg.expression]) + target.field_data["TargetScale"] = np.asarray([cfg.target_scale]) + target.field_data["TargetPointMask"] = np.asarray([cfg.target_point_mask]) + target.field_data["TargetPointCount"] = np.asarray([int(mask.sum())]) + zero_activation_fields(target) + return target + + +def add_metadata( + mesh: pv.UnstructuredGrid, cfg: Config, selected_cell_data: str +) -> None: + from liblaf.apple.common import FIXED_MASK + + active = np.asarray(mesh.cell_data["ActivationMask"], dtype=bool) + fixed = np.asarray(mesh.point_data[FIXED_MASK.vtk], dtype=bool)[:, 0] + mesh.field_data["Source"] = np.asarray([str(cfg.source)]) + mesh.field_data["SelectedCellData"] = np.asarray([selected_cell_data]) + mesh.field_data["E"] = np.asarray([cfg.E]) + mesh.field_data["Nu"] = np.asarray([cfg.nu]) + mesh.field_data["SmasStiffnessRatio"] = np.asarray([cfg.smas_stiffness_ratio]) + mesh.field_data["ActiveFractionTol"] = np.asarray([cfg.active_fraction_tol]) + mesh.field_data["ActiveTetCount"] = np.asarray([int(active.sum())]) + mesh.field_data["FixedPointCount"] = np.asarray([int(fixed.sum())]) + mesh.field_data["NoCollision"] = np.asarray([1]) + + +def metric_summary( + mesh: pv.UnstructuredGrid, target: pv.UnstructuredGrid +) -> dict[str, Any]: + muscle = np.asarray(mesh.cell_data["MuscleFraction"], dtype=np.float64) + smas = np.asarray(mesh.cell_data["SmasFraction"], dtype=np.float64) + volume = np.asarray(mesh.cell_data["Volume"], dtype=np.float64) + target_mask = np.asarray(target.point_data[TARGET_SURFACE_MASK], dtype=bool) + target_disp = np.asarray(target.point_data["Displacement"], dtype=np.float64) + target_norm = np.linalg.norm(target_disp[target_mask], axis=1) + return { + "n_points": int(mesh.n_points), + "n_cells": int(mesh.n_cells), + "n_active_tets": int(np.asarray(mesh.cell_data["ActivationMask"]).sum()), + "n_target_points": int(target_mask.sum()), + "n_fixed_points": int(np.asarray(mesh.point_data["FixedCranium"]).sum()), + "muscle_fraction_volume": float(np.sum(muscle * volume)), + "smas_fraction_volume": float(np.sum(smas * volume)), + "target_displacement_mean": float(target_norm.mean()), + "target_displacement_rms": float( + np.linalg.norm(target_disp[target_mask]) / np.sqrt(target_mask.sum()) + ), + "target_displacement_max": float(target_norm.max()), + } + + +def main(cfg: Config) -> None: + source = pv.read(cfg.source) + if not isinstance(source, pv.UnstructuredGrid): + source = source.cast_to_unstructured_grid() + + mesh, selected_cell_data = extract_face_mesh(source) + add_material_fields(mesh, cfg) + fixed = add_boundary_conditions(mesh, cfg) + add_metadata(mesh, cfg, selected_cell_data) + target = make_target_mesh(mesh, cfg, fixed) + add_metadata(target, cfg, selected_cell_data) + zero_activation_fields(mesh) + + melon.save(cfg.output_input, mesh) + melon.save(cfg.output_target, target) + summary = metric_summary(mesh, target) + cherries.log_metrics(summary) + print(summary) + print(f"saved: {cfg.output_input}") + print(f"saved: {cfg.output_target}") + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/05/20/inverse-face/src/20-inverse-face.py b/exp/2026/05/20/inverse-face/src/20-inverse-face.py new file mode 100644 index 000000000..210d7ffc0 --- /dev/null +++ b/exp/2026/05/20/inverse-face/src/20-inverse-face.py @@ -0,0 +1,1197 @@ +import contextlib +import io +import json +import logging +import math +import time +import warnings +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp + +from liblaf import cherries, melon + +logger = logging.getLogger(__name__) + +PREP_STEM = "10-inverse-face" +OUTPUT_STEM = "20-inverse-face" +TARGET_SURFACE_MASK = "TargetSurfaceMask" +BACKGROUND_FRACTION = "BackgroundFraction" +ACTIVE_FRACTION = "ActiveFraction" +SMAS_STIFFNESS_FRACTION = "SmasStiffnessFraction" + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + input: Path = cherries.input(f"{PREP_STEM}-input.vtu") + target: Path = cherries.input(f"{PREP_STEM}-target.vtu") + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output_target: Path = cherries.output(f"{OUTPUT_STEM}-target.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + output_series: Path = cherries.output(f"{OUTPUT_STEM}.vtu.series") + output_snapshot: Path = cherries.output(f"{OUTPUT_STEM}.png") + output_summary: Path = cherries.output(f"{OUTPUT_STEM}-summary.json") + checkpoint: Path = cherries.output(f"{OUTPUT_STEM}-checkpoint.npz") + initial_activation_inv: Path | None = None + + E: float = 1.0 + nu: float = 0.49 + smas_stiffness_ratio: float = 1.0e2 + active_fraction_tol: float = 1.0e-3 + target_point_mask: str = "IsFace" + + forward_rtol: float = 5.0e-4 + forward_atol: float = 0.0 + forward_max_steps: int = 10000 + + inverse_lr: float = 0.03 + adam_beta1: float = 0.3 + adam_beta2: float = 0.9 + adam_eps: float = 1.0e-8 + inverse_max_steps: int = 1000 + inverse_min_steps: int = 80 + stagnation_patience: int = 250 + stagnation_rel_tol: float = 1.0e-5 + stagnation_abs_tol: float = 1.0e-8 + loss_tol: float = 1.0e-7 + max_point_error_cm: float = 0.2 + failure_patience: int = 3 + adjoint_maxiter: int = 10000 + adjoint_rtol: float = 5.0e-4 + adjoint_atol: float = 0.0 + activation_smooth_weight: float = 1e-3 + activation_l2_weight: float = 1e-5 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + logging.getLogger("liblaf.apple.forward._forward").setLevel(logging.WARNING) + logging.getLogger("liblaf.apple.inverse._diff_forward").setLevel(logging.WARNING) + warnings.filterwarnings( + "ignore", + message=r"The \.grad attribute of a Tensor that is not a leaf Tensor.*", + category=UserWarning, + ) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def forward_quiet(differentiable_forward: Any, materials: Any) -> torch.Tensor: + with contextlib.redirect_stdout(io.StringIO()): + return differentiable_forward.forward(materials) + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def to_float(value: Any, default: float = math.nan) -> float: + if value is None: + return default + if torch.is_tensor(value): + return float(value.detach().cpu()) + return float(value) + + +def relative_value(numerator: float, denominator: float) -> float: + if not math.isfinite(numerator) or not math.isfinite(denominator): + return math.nan + if denominator == 0.0: + return 0.0 if numerator == 0.0 else math.inf + return numerator / denominator + + +def require_path(path: Path) -> None: + if path.exists(): + return + msg = f"missing input: {path}. Run {PREP_STEM}.py first." + raise FileNotFoundError(msg) + + +def load_problem(cfg: Config) -> tuple[pv.UnstructuredGrid, pv.UnstructuredGrid]: + require_path(cfg.input) + require_path(cfg.target) + mesh = pv.read(cfg.input) + target = pv.read(cfg.target) + if not isinstance(mesh, pv.UnstructuredGrid): + mesh = mesh.cast_to_unstructured_grid() + if not isinstance(target, pv.UnstructuredGrid): + target = target.cast_to_unstructured_grid() + if mesh.n_points != target.n_points or mesh.n_cells != target.n_cells: + msg = ( + "input and target topology sizes differ: " + f"points {mesh.n_points} != {target.n_points}, " + f"cells {mesh.n_cells} != {target.n_cells}" + ) + raise ValueError(msg) + if not np.allclose(mesh.points, target.points): + msg = "input and target rest points differ" + raise ValueError(msg) + if "Displacement" not in target.point_data: + msg = f"{cfg.target} has no point_data['Displacement']" + raise KeyError(msg) + return mesh, target + + +def lame_parameters(E: float, nu: float) -> tuple[float, float]: + lambda_ = E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu)) + mu = E / (2.0 * (1.0 + nu)) + return float(lambda_), float(mu) + + +def set_material( + mesh: pv.UnstructuredGrid, + *, + E: float, + nu: float, + fraction: np.ndarray, +) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_parameters(E, nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, lambda_, dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, mu, dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = np.asarray(fraction, dtype=np.float64) + + +def active_cell_ids(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + if "ActivationMask" in mesh.cell_data: + active = np.asarray(mesh.cell_data["ActivationMask"], dtype=bool) + else: + active = ( + np.asarray(mesh.cell_data["MuscleFraction"], dtype=np.float64) + > cfg.active_fraction_tol + ) + ids = np.flatnonzero(active).astype(np.int64) + if ids.size == 0: + msg = "no active muscle tetrahedra selected" + raise ValueError(msg) + return ids + + +def active_face_adjacency( + mesh: pv.UnstructuredGrid, active_ids: np.ndarray +) -> np.ndarray: + faces: dict[tuple[int, int, int], int] = {} + pairs: list[tuple[int, int]] = [] + cells = np.asarray(mesh.cells, dtype=np.int64).reshape(mesh.n_cells, -1) + if cells.shape[1] != 5 or np.any(cells[:, 0] != 4): + msg = "smooth activation regularization expects tetrahedral cells" + raise ValueError(msg) + for local_id, cell_id in enumerate(active_ids): + tet = cells[cell_id, 1:] + tet_faces = ( + tuple(sorted((int(tet[0]), int(tet[1]), int(tet[2])))), + tuple(sorted((int(tet[0]), int(tet[1]), int(tet[3])))), + tuple(sorted((int(tet[0]), int(tet[2]), int(tet[3])))), + tuple(sorted((int(tet[1]), int(tet[2]), int(tet[3])))), + ) + for face in tet_faces: + neighbor = faces.get(face) + if neighbor is None: + faces[face] = local_id + else: + pairs.append((neighbor, local_id)) + if not pairs: + return np.empty((0, 2), dtype=np.int64) + return np.asarray(pairs, dtype=np.int64) + + +def target_point_ids(target: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + if cfg.target_point_mask in target.point_data: + mask = np.asarray(target.point_data[cfg.target_point_mask], dtype=bool) + elif TARGET_SURFACE_MASK in target.point_data: + mask = np.asarray(target.point_data[TARGET_SURFACE_MASK], dtype=bool) + else: + msg = ( + f"target has neither point_data[{cfg.target_point_mask!r}] nor " + f"point_data[{TARGET_SURFACE_MASK!r}]" + ) + raise KeyError(msg) + ids = np.flatnonzero(mask) + if ids.size == 0: + msg = "target point mask selected no points" + raise ValueError(msg) + return ids.astype(np.int64) + + +def full_activation_inv_from_active( + active_activation_inv: torch.Tensor, + active_ids_t: torch.Tensor, + n_cells: int, +) -> torch.Tensor: + full_activation_inv = torch.zeros( + (n_cells, 6), + dtype=active_activation_inv.dtype, + device=active_activation_inv.device, + ) + return full_activation_inv.index_copy(0, active_ids_t, active_activation_inv) + + +def load_initial_active_activation_inv( + path: Path | None, active_ids: np.ndarray +) -> np.ndarray | None: + if path is None: + return None + require_path(path) + if path.suffix == ".npz": + with np.load(path) as data: + if "active_activation_inv" in data: + activation_inv = np.asarray( + data["active_activation_inv"], dtype=np.float64 + ) + else: + activation_inv = np.asarray(data["activation_inv"], dtype=np.float64)[ + active_ids + ] + else: + from liblaf.apple.common import ACTIVATION_INV + + mesh = pv.read(path) + if "RecoveredActivationInv" in mesh.cell_data: + activation_inv = np.asarray( + mesh.cell_data["RecoveredActivationInv"], dtype=np.float64 + )[active_ids] + else: + activation_inv = np.asarray( + mesh.cell_data[ACTIVATION_INV.vtk], dtype=np.float64 + )[active_ids] + expected_shape = (active_ids.size, 6) + if activation_inv.shape != expected_shape: + msg = ( + f"initial activation has shape {activation_inv.shape}; " + f"expected {expected_shape}" + ) + raise ValueError(msg) + return activation_inv + + +def load_initial_displacement( + path: Path | None, mesh: pv.UnstructuredGrid +) -> np.ndarray | None: + if path is None: + return None + require_path(path) + displacement: np.ndarray | None = None + if path.suffix == ".npz": + with np.load(path) as data: + if "displacement" in data: + displacement = np.asarray(data["displacement"], dtype=np.float64) + else: + state_mesh = pv.read(path) + if "Displacement" in state_mesh.point_data: + displacement = np.asarray( + state_mesh.point_data["Displacement"], dtype=np.float64 + ) + if displacement is None: + return None + expected_shape = (mesh.n_points, 3) + if displacement.shape != expected_shape: + msg = ( + f"initial displacement has shape {displacement.shape}; " + f"expected {expected_shape}" + ) + raise ValueError(msg) + return displacement + + +def save_checkpoint( + path: Path, + active_activation_inv: torch.Tensor, + *, + displacement: np.ndarray, + step: int, + loss: float, + max_error: float, +) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_name(f"{path.name}.tmp") + with tmp.open("wb") as file: + np.savez( + file, + active_activation_inv=to_numpy(active_activation_inv), + displacement=np.asarray(displacement, dtype=np.float64), + step=np.asarray(step, dtype=np.int64), + loss=np.asarray(loss, dtype=np.float64), + max_error=np.asarray(max_error, dtype=np.float64), + ) + tmp.replace(path) + + +def build_forward(mesh: pv.UnstructuredGrid, cfg: Config): + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanActive + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + + set_material(mesh, E=cfg.E, nu=cfg.nu, fraction=mesh.cell_data[BACKGROUND_FRACTION]) + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="background")) + + set_material( + mesh, + E=cfg.smas_stiffness_ratio * cfg.E, + nu=cfg.nu, + fraction=mesh.cell_data[ACTIVE_FRACTION], + ) + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="muscle")) + + set_material( + mesh, + E=cfg.smas_stiffness_ratio * cfg.E, + nu=cfg.nu, + fraction=mesh.cell_data[SMAS_STIFFNESS_FRACTION], + ) + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="smas")) + + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer( + max_steps=cfg.forward_max_steps, + atol=cfg.forward_atol, + rtol=cfg.forward_rtol, + ) + return forward + + +def material_tree( + base_materials: dict[str, dict[str, torch.Tensor]], + active_activation_inv: torch.Tensor, + active_ids_t: torch.Tensor, + n_cells: int, +) -> dict[str, dict[str, torch.Tensor]]: + materials = {name: dict(values) for name, values in base_materials.items()} + materials["muscle"]["activation_inv"] = full_activation_inv_from_active( + active_activation_inv, active_ids_t, n_cells + ) + return materials + + +def forward_solution_metrics(solution: Any) -> dict[str, Any]: + if solution is None: + return { + "forward/result": "missing", + "forward/success": False, + "forward/steps": math.nan, + "forward/grad_norm": math.nan, + "forward/relative_grad_norm": math.nan, + "forward/grad_norm_first": math.nan, + "forward/line_search_ok": False, + "forward/line_search_steps": math.nan, + "forward/stagnation_count": math.nan, + } + convergence_state = solution.state.convergence_state + line_search_state = solution.state.line_search_state + grad_norm = to_float(convergence_state.grad_norm) + grad_norm_first = to_float(convergence_state.grad_norm_first) + return { + "forward/result": str(solution.result), + "forward/success": bool(solution.success), + "forward/steps": int(convergence_state.step), + "forward/grad_norm": grad_norm, + "forward/relative_grad_norm": relative_value(grad_norm, grad_norm_first), + "forward/grad_norm_first": grad_norm_first, + "forward/line_search_ok": bool(line_search_state.ok), + "forward/line_search_steps": int(line_search_state.step), + "forward/stagnation_count": int(convergence_state.stagnation_count), + } + + +def adjoint_solution_metrics(solution: Any) -> dict[str, Any]: + if solution is None: + return { + "adjoint/result": "missing", + "adjoint/success": False, + "adjoint/solver_count": 0, + "adjoint/best_solver": -1, + "adjoint/absolute_residual": math.nan, + "adjoint/relative_residual": math.nan, + } + state = solution.state + best_index = int(state.best_index.detach().cpu()) + absolute_residuals = to_numpy(state.absolute_residuals) + relative_residuals = to_numpy(state.relative_residuals) + metrics: dict[str, Any] = { + "adjoint/result": str(solution.result), + "adjoint/success": bool(solution.success), + "adjoint/solver_count": len(state.solutions), + "adjoint/best_solver": best_index, + "adjoint/absolute_residual": float(absolute_residuals[best_index]), + "adjoint/relative_residual": float(relative_residuals[best_index]), + } + for i, solver_solution in enumerate(state.solutions): + prefix = f"adjoint/solver_{i}" + metrics[f"{prefix}/result"] = str(solver_solution.result) + metrics[f"{prefix}/success"] = bool(solver_solution.success) + metrics[f"{prefix}/steps"] = ( + -1 + if solver_solution.state.step is None + else int(solver_solution.state.step) + ) + metrics[f"{prefix}/info"] = int(solver_solution.state.info) + metrics[f"{prefix}/absolute_residual"] = float(absolute_residuals[i]) + metrics[f"{prefix}/relative_residual"] = float(relative_residuals[i]) + return metrics + + +def point_error_stats(residual: torch.Tensor) -> dict[str, torch.Tensor]: + point_error = torch.linalg.vector_norm(residual, dim=1) + return { + "mean": point_error.mean(), + "rms": torch.linalg.vector_norm(residual) / math.sqrt(residual.shape[0]), + "max": point_error.max(), + } + + +def activation_smoothness_loss( + active_activation_inv: torch.Tensor, smooth_pairs_t: torch.Tensor +) -> torch.Tensor: + if smooth_pairs_t.numel() == 0: + return active_activation_inv.sum() * 0.0 + diff = ( + active_activation_inv[smooth_pairs_t[:, 0]] + - active_activation_inv[smooth_pairs_t[:, 1]] + ) + return diff.square().mean() + + +def is_significant_decrease( + value: float, best: float, *, rel_tol: float, abs_tol: float +) -> bool: + if math.isinf(best): + return True + threshold = min(best * (1.0 - rel_tol), best - abs_tol) + return value < threshold + + +def inverse_tensors( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + point_ids: np.ndarray, +) -> tuple[np.ndarray, torch.Tensor, torch.Tensor, torch.Tensor]: + from liblaf.apple.common import GLOBAL_POINT_ID + + global_ids = np.asarray(mesh.point_data[GLOBAL_POINT_ID.vtk], dtype=np.int64) + point_global_ids = global_ids[point_ids] + target = torch.as_tensor( + target_displacement, + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + point_ids_t = torch.as_tensor( + point_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + point_global_ids_t = torch.as_tensor( + point_global_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + return global_ids, target, point_ids_t, point_global_ids_t + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, metrics: dict[str, float | int | bool | str] +) -> None: + for name, value in metrics.items(): + if isinstance(value, str): + continue + mesh.field_data[name] = np.asarray([value]) + + +def add_masks( + mesh: pv.UnstructuredGrid, target_ids: np.ndarray, active_ids: np.ndarray +) -> None: + target_mask = np.zeros(mesh.n_points, dtype=np.int8) + target_mask[target_ids] = 1 + active_mask = np.zeros(mesh.n_cells, dtype=np.int8) + active_mask[active_ids] = 1 + mesh.point_data[TARGET_SURFACE_MASK] = target_mask + mesh.cell_data["InverseActiveMask"] = active_mask + + +def make_target_mesh( + target: pv.UnstructuredGrid, target_ids: np.ndarray, active_ids: np.ndarray +) -> pv.UnstructuredGrid: + result = target.copy(deep=True) + add_masks(result, target_ids, active_ids) + displacement = np.asarray(result.point_data["Displacement"], dtype=np.float64) + result.point_data["TargetDisplacement"] = displacement + result.point_data["TargetPoint"] = result.points + displacement + return result + + +def make_result_mesh( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + displacement: np.ndarray, + recovered_activation_inv: np.ndarray, + target_ids: np.ndarray, + active_ids: np.ndarray, + metrics: dict[str, float | int | bool | str], +) -> pv.UnstructuredGrid: + from liblaf.apple.common import ACTIVATION_INV + + result = mesh.copy(deep=True) + add_masks(result, target_ids, active_ids) + error = displacement - target_displacement + result.point_data["Displacement"] = displacement + result.point_data["TargetDisplacement"] = target_displacement + result.point_data["DisplacementError"] = error + result.point_data["DisplacementErrorNorm"] = np.linalg.norm(error, axis=1) + result.point_data["DeformedPoint"] = result.points + displacement + result.point_data["TargetPoint"] = result.points + target_displacement + result.cell_data[ACTIVATION_INV.vtk] = recovered_activation_inv + result.cell_data["RecoveredActivationInv"] = recovered_activation_inv + result.cell_data["RecoveredActivationInvNorm"] = np.linalg.norm( + recovered_activation_inv, axis=1 + ) + add_metric_fields(result, metrics) + return result + + +def save_snapshot(path: Path, mesh: pv.UnstructuredGrid) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + view = mesh.copy(deep=True) + if "DeformedPoint" in view.point_data: + view.points = np.asarray(view.point_data["DeformedPoint"], dtype=np.float64) + + plotter = pv.Plotter(off_screen=True, shape=(1, 2), window_size=(1800, 900)) + plotter.subplot(0, 0) + surface = view.extract_surface() + plotter.add_mesh( + surface, + scalars="DisplacementErrorNorm", + cmap="viridis", + show_edges=False, + ) + plotter.add_text("surface error (cm)", font_size=12) + plotter.view_xy() + plotter.camera.zoom(1.25) + + plotter.subplot(0, 1) + clipped = view.clip(normal="z", origin=view.center) + plotter.add_mesh( + clipped, + scalars="RecoveredActivationInvNorm", + cmap="magma", + show_edges=False, + ) + plotter.add_text("activation_inv norm", font_size=12) + plotter.view_xy() + plotter.camera.zoom(1.25) + + plotter.screenshot(path) + plotter.close() + + +def solve_inverse( # noqa: C901, PLR0912, PLR0915 + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + target_ids: np.ndarray, + active_ids: np.ndarray, + cfg: Config, + series_writer: Any, +) -> tuple[ + np.ndarray, + np.ndarray, + list[dict[str, Any]], + str, + int, + int, + dict[str, float], +]: + from liblaf.peach.linalg import FallbackSolver + from liblaf.peach.linalg.cupy import CupyCG, CupyMinRes + + from liblaf.apple.inverse import DifferentiableForward + + class RecordingDifferentiableForward(DifferentiableForward): + __slots__ = ("last_adjoint_solution", "last_forward_solution") + + def step(self) -> Any: + solution = super().step() + self.last_forward_solution = solution + return solution + + def adjoint_solve(self, u_grad: torch.Tensor) -> Any: + solution = super().adjoint_solve(u_grad) + self.last_adjoint_solution = solution + return solution + + forward = build_forward(mesh, cfg) + differentiable_forward = RecordingDifferentiableForward(forward) + differentiable_forward.adjoint_solver = FallbackSolver( + solvers=[ + CupyCG( + maxiter=cfg.adjoint_maxiter, + rtol=cfg.adjoint_rtol, + atol=cfg.adjoint_atol, + ), + CupyMinRes(maxiter=cfg.adjoint_maxiter, tol=cfg.adjoint_rtol), + ] + ) + base_materials = forward.model.get_materials() + global_ids, target, point_ids_t, point_global_ids_t = inverse_tensors( + mesh, target_displacement, target_ids + ) + active_ids_t = torch.as_tensor( + active_ids, + dtype=torch.long, + device=torch.get_default_device(), + ) + smooth_pairs = active_face_adjacency(mesh, active_ids) + smooth_pairs_t = torch.as_tensor( + smooth_pairs, + dtype=torch.long, + device=torch.get_default_device(), + ) + active_activation_inv = torch.nn.Parameter( + torch.zeros( + (active_ids.size, 6), + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + ) + initial_activation_inv = load_initial_active_activation_inv( + cfg.initial_activation_inv, active_ids + ) + if initial_activation_inv is not None: + with torch.no_grad(): + active_activation_inv.copy_( + torch.as_tensor( + initial_activation_inv, + dtype=active_activation_inv.dtype, + device=active_activation_inv.device, + ) + ) + initial_displacement = load_initial_displacement(cfg.initial_activation_inv, mesh) + if initial_displacement is not None: + with torch.no_grad(): + forward.state.u.copy_( + torch.as_tensor( + initial_displacement, + dtype=forward.state.u.dtype, + device=forward.state.u.device, + ) + ) + optimizer = torch.optim.Adam( + [active_activation_inv], + lr=cfg.inverse_lr, + betas=(cfg.adam_beta1, cfg.adam_beta2), + eps=cfg.adam_eps, + ) + + trace: list[dict[str, Any]] = [] + stop_reason = "step_safety_limit" + optimizer_steps = 0 + best_step = 0 + best_displacement: np.ndarray | None = None + best_activation_inv: np.ndarray | None = None + best_active_activation_inv: torch.Tensor | None = None + best_loss = math.inf + best_max_error = math.inf + lowest_loss = math.inf + lowest_max_error = math.inf + lowest_loss_step = 0 + lowest_max_error_step = 0 + no_improve_steps = 0 + timing = { + "time/inverse_s": 0.0, + "time/forward_s": 0.0, + "time/backward_s": 0.0, + "time/optimizer_s": 0.0, + "time/series_s": 0.0, + } + inverse_start = time.perf_counter() + for step in range(cfg.inverse_max_steps + 1): + step_start = time.perf_counter() + optimizer.zero_grad() + materials = material_tree( + base_materials, active_activation_inv, active_ids_t, mesh.n_cells + ) + + forward_start = time.perf_counter() + output = forward_quiet(differentiable_forward, materials) + forward_elapsed = time.perf_counter() - forward_start + timing["time/forward_s"] += forward_elapsed + forward_metrics = forward_solution_metrics( + getattr(differentiable_forward, "last_forward_solution", None) + ) + + backward_start = time.perf_counter() + residual = output[point_global_ids_t] - target[point_ids_t] + mse_loss = residual.square().mean() + data_loss = mse_loss + smooth_loss = activation_smoothness_loss(active_activation_inv, smooth_pairs_t) + activation_l2_loss = active_activation_inv.square().mean() + activation_l2_penalty = cfg.activation_l2_weight * activation_l2_loss + regularization_loss = ( + cfg.activation_smooth_weight * smooth_loss + activation_l2_penalty + ) + loss = data_loss + regularization_loss + loss.backward() + backward_elapsed = time.perf_counter() - backward_start + timing["time/backward_s"] += backward_elapsed + adjoint_metrics = adjoint_solution_metrics( + getattr(differentiable_forward, "last_adjoint_solution", None) + ) + adjoint_residual_converged = ( + adjoint_metrics["adjoint/relative_residual"] <= cfg.adjoint_rtol + ) + adjoint_metrics["adjoint/residual_converged"] = bool(adjoint_residual_converged) + + grad = active_activation_inv.grad + if grad is None: + msg = "differentiable forward did not produce activation gradients" + raise RuntimeError(msg) + if not torch.isfinite(grad).all(): + nonfinite = int((~torch.isfinite(grad)).sum().detach().cpu()) + msg = f"non-finite inverse gradient at step {step}: {nonfinite} entries" + raise FloatingPointError(msg) + + error_stats = point_error_stats(residual.detach()) + loss_value = float(loss.detach().cpu()) + data_loss_value = float(data_loss.detach().cpu()) + mse_loss_value = float(mse_loss.detach().cpu()) + smooth_loss_value = float(smooth_loss.detach().cpu()) + activation_l2_loss_value = float(activation_l2_loss.detach().cpu()) + activation_l2_penalty_value = float(activation_l2_penalty.detach().cpu()) + regularization_loss_value = float(regularization_loss.detach().cpu()) + mean_error = float(error_stats["mean"].cpu()) + rms_error = float(error_stats["rms"].cpu()) + max_error = float(error_stats["max"].cpu()) + grad_norm = float(torch.linalg.vector_norm(grad).cpu()) + grad_abs_max = float(grad.abs().max().cpu()) + active_values = active_activation_inv.detach() + activation_inv_rms = float( + torch.linalg.vector_norm(active_values).cpu() + / math.sqrt(active_values.numel()) + ) + activation_inv_min = float(active_values.min().cpu()) + activation_inv_max = float(active_values.max().cpu()) + displacement = to_numpy(output)[global_ids] + + improved = is_significant_decrease( + max_error, + best_max_error, + rel_tol=cfg.stagnation_rel_tol, + abs_tol=cfg.stagnation_abs_tol, + ) + if loss_value < lowest_loss: + lowest_loss = loss_value + lowest_loss_step = step + if max_error < lowest_max_error: + lowest_max_error = max_error + lowest_max_error_step = step + if max_error < best_max_error or ( + math.isclose(max_error, best_max_error) and loss_value < best_loss + ): + best_step = step + best_loss = loss_value + best_max_error = max_error + best_active_activation_inv = active_values.clone() + save_checkpoint( + cfg.checkpoint, + best_active_activation_inv, + displacement=displacement, + step=step, + loss=loss_value, + max_error=max_error, + ) + best_activation_inv = to_numpy( + full_activation_inv_from_active( + active_values, active_ids_t, mesh.n_cells + ) + ) + best_displacement = displacement + if improved or step == 0: + no_improve_steps = 0 + else: + no_improve_steps += 1 + + stopped = False + if step >= cfg.inverse_min_steps and max_error <= cfg.max_point_error_cm: + stop_reason = "max_point_error_tol" + stopped = True + elif loss_value <= cfg.loss_tol: + stop_reason = "loss_tol" + stopped = True + elif ( + step >= cfg.inverse_min_steps + and no_improve_steps >= cfg.stagnation_patience + ): + stop_reason = "stagnation" + stopped = True + + trace_record = { + "step": float(step), + "loss/total": loss_value, + "loss/data": data_loss_value, + "loss/mse": mse_loss_value, + "loss/smooth": smooth_loss_value, + "loss/activation_l2": activation_l2_loss_value, + "loss/activation_l2_penalty": activation_l2_penalty_value, + "loss/regularization": regularization_loss_value, + "regularization/activation_smooth_weight": cfg.activation_smooth_weight, + "regularization/activation_l2_weight": cfg.activation_l2_weight, + "regularization/activation_smooth_pairs": float(smooth_pairs.shape[0]), + "target/error_mean": mean_error, + "target/error_rms": rms_error, + "target/error_max": max_error, + "activation_inv/rms": activation_inv_rms, + "activation_inv/min": activation_inv_min, + "activation_inv/max": activation_inv_max, + "grad/norm": grad_norm, + "grad/abs_max": grad_abs_max, + "optimizer/steps": float(optimizer_steps), + "optimizer/lr": float(optimizer.param_groups[0]["lr"]), + "best/step": float(best_step), + "best/loss": best_loss, + "best/target_error_max": best_max_error, + "lowest/loss": lowest_loss, + "lowest/loss_step": float(lowest_loss_step), + "lowest/target_error_max": lowest_max_error, + "lowest/target_error_max_step": float(lowest_max_error_step), + "stagnation/no_improve_steps": float(no_improve_steps), + "stopped": float(stopped), + "time/forward_s": forward_elapsed, + "time/backward_s": backward_elapsed, + **forward_metrics, + **adjoint_metrics, + } + trace.append(trace_record) + + series_start = time.perf_counter() + evaluated_activation_inv = to_numpy( + full_activation_inv_from_active(active_values, active_ids_t, mesh.n_cells) + ) + step_mesh = make_result_mesh( + mesh, + target_displacement, + displacement, + evaluated_activation_inv, + target_ids, + active_ids, + { + "inverse/step": step, + **numeric_metrics(trace_record, exclude={"step"}), + }, + ) + series_writer.append(step_mesh, time=float(step)) + series_elapsed = time.perf_counter() - series_start + timing["time/series_s"] += series_elapsed + trace_record["time/series_s"] = series_elapsed + + step_elapsed = time.perf_counter() - step_start + trace_record["time/step_s"] = step_elapsed + cherries.set_step(step) + cherries.log_metrics(numeric_metrics(trace_record, exclude={"step"})) + print( + "inverse step:", + f"{step:03d}", + f"loss={loss_value:.3e}", + f"data={data_loss_value:.3e}", + f"mse={mse_loss_value:.3e}", + f"l2={activation_l2_penalty_value:.3e}", + f"smooth={smooth_loss_value:.3e}", + f"mean={mean_error:.3e}cm", + f"rms={rms_error:.3e}cm", + f"max={max_error:.3e}cm", + f"tol={cfg.max_point_error_cm:.3e}cm", + f"best_max={best_max_error:.3e}cm", + f"grad={grad_norm:.3e}", + f"fwd={forward_metrics['forward/result']}/" + f"{forward_metrics['forward/steps']}", + f"fwd_grad={forward_metrics['forward/grad_norm']:.1e}", + f"fwd_rel={forward_metrics['forward/relative_grad_norm']:.1e}", + f"adj={adjoint_metrics['adjoint/result']}/" + f"{adjoint_metrics['adjoint/best_solver']}", + f"adj_abs={adjoint_metrics['adjoint/absolute_residual']:.1e}", + f"adj_rel={adjoint_metrics['adjoint/relative_residual']:.1e}", + f"lr={float(optimizer.param_groups[0]['lr']):.3e}", + f"no_improve={no_improve_steps}", + f"elapsed={step_elapsed:.2f}s", + flush=True, + ) + if stopped or optimizer_steps >= cfg.inverse_max_steps: + break + optimizer_start = time.perf_counter() + optimizer.step() + optimizer_steps += 1 + timing["time/optimizer_s"] += time.perf_counter() - optimizer_start + + if best_displacement is None or best_activation_inv is None: + msg = "inverse solve did not evaluate any forward states" + raise RuntimeError(msg) + timing["time/inverse_s"] = time.perf_counter() - inverse_start + return ( + best_displacement, + best_activation_inv, + trace, + stop_reason, + optimizer_steps, + best_step, + timing, + ) + + +def summarize( + mesh: pv.UnstructuredGrid, + target_displacement: np.ndarray, + displacement: np.ndarray, + recovered_activation_inv: np.ndarray, + target_ids: np.ndarray, + active_ids: np.ndarray, + trace: list[dict[str, Any]], + stop_reason: str, + optimizer_steps: int, + best_step: int, + timing: dict[str, float], + total_elapsed_s: float, + cfg: Config, +) -> dict[str, Any]: + error = displacement - target_displacement + error_norm = np.linalg.norm(error, axis=1) + target_error = error[target_ids] + target_error_norm = np.linalg.norm(target_error, axis=1) + target_norm = np.linalg.norm(target_displacement[target_ids], axis=1) + active_activation_inv = recovered_activation_inv[active_ids] + final_loss = float(np.mean(np.square(target_error))) + best_record = trace[best_step] + target_rms = float(np.linalg.norm(target_error) / math.sqrt(target_ids.size)) + all_rms = float(np.linalg.norm(error) / math.sqrt(error.shape[0])) + forward_failures = sum( + 1 for record in trace if not bool(record.get("forward/success", False)) + ) + adjoint_failures = sum( + 1 for record in trace if not bool(record.get("adjoint/success", False)) + ) + adjoint_relative_residuals = [ + float(record["adjoint/relative_residual"]) + for record in trace + if np.isfinite(float(record.get("adjoint/relative_residual", math.nan))) + ] + adjoint_absolute_residuals = [ + float(record["adjoint/absolute_residual"]) + for record in trace + if np.isfinite(float(record.get("adjoint/absolute_residual", math.nan))) + ] + forward_steps = [ + float(record["forward/steps"]) + for record in trace + if np.isfinite(float(record.get("forward/steps", math.nan))) + ] + forward_grad_norms = [ + float(record["forward/grad_norm"]) + for record in trace + if np.isfinite(float(record.get("forward/grad_norm", math.nan))) + ] + forward_relative_grad_norms = [ + float(record["forward/relative_grad_norm"]) + for record in trace + if np.isfinite(float(record.get("forward/relative_grad_norm", math.nan))) + ] + metrics: dict[str, Any] = { + "mesh/n_points": int(mesh.n_points), + "mesh/n_cells": int(mesh.n_cells), + "target/n_points": int(target_ids.size), + "activation/n_active_tets": int(active_ids.size), + "activation/n_params": int(active_ids.size * 6), + "optimized_parameterization": "per active muscle tetrahedron ActivationInv, 6 DoF", + "optimizer/steps": int(optimizer_steps), + "best/step": int(best_step), + "series/frames": int(sum(1 for record in trace if "time/series_s" in record)), + "stop_reason": stop_reason, + "time/total_s": float(total_elapsed_s), + **{name: float(value) for name, value in timing.items()}, + "target/displacement_mean": float(target_norm.mean()), + "target/displacement_rms": float( + np.linalg.norm(target_displacement[target_ids]) / math.sqrt(target_ids.size) + ), + "target/displacement_max": float(target_norm.max()), + "loss/final": float(best_record["loss/total"]), + "loss/data": final_loss, + "loss/data_objective": float(best_record.get("loss/data", final_loss)), + "loss/smooth": float(best_record.get("loss/smooth", 0.0)), + "loss/activation_l2": float(best_record.get("loss/activation_l2", 0.0)), + "loss/activation_l2_penalty": float( + best_record.get("loss/activation_l2_penalty", 0.0) + ), + "loss/regularization": float(best_record.get("loss/regularization", 0.0)), + "regularization/activation_smooth_weight": cfg.activation_smooth_weight, + "regularization/activation_l2_weight": cfg.activation_l2_weight, + "regularization/activation_smooth_pairs": int( + best_record.get("regularization/activation_smooth_pairs", 0) + ), + "best/loss": float(best_record["loss/total"]), + "lowest/loss": float(min(record["loss/total"] for record in trace)), + "lowest/target_error_max": float( + min(record["target/error_max"] for record in trace) + ), + "forward/all_success": forward_failures == 0, + "forward/failures": int(forward_failures), + "forward/max_steps_used": float(max(forward_steps, default=math.nan)), + "forward/max_grad_norm": float(max(forward_grad_norms, default=math.nan)), + "forward/max_relative_grad_norm": float( + max(forward_relative_grad_norms, default=math.nan) + ), + "adjoint/all_success": adjoint_failures == 0, + "adjoint/failures": int(adjoint_failures), + "adjoint/max_absolute_residual": float( + max(adjoint_absolute_residuals, default=math.nan) + ), + "adjoint/max_relative_residual": float( + max(adjoint_relative_residuals, default=math.nan) + ), + "target/error_mean": float(target_error_norm.mean()), + "target/error_rms": target_rms, + "target/error_max": float(target_error_norm.max()), + "all/error_rms": all_rms, + "all/error_max": float(error_norm.max()), + "active_activation_inv/mean": active_activation_inv.mean(axis=0).tolist(), + "active_activation_inv/min": active_activation_inv.min(axis=0).tolist(), + "active_activation_inv/max": active_activation_inv.max(axis=0).tolist(), + "active_activation_inv/rms": float( + np.linalg.norm(active_activation_inv) + / math.sqrt(active_activation_inv.size) + ), + "trace": trace, + } + metrics["repeated/forward_failure"] = bool(forward_failures > cfg.failure_patience) + metrics["repeated/adjoint_failure"] = bool(adjoint_failures > cfg.failure_patience) + metrics["passed"] = bool( + metrics["target/error_max"] <= cfg.max_point_error_cm + and not metrics["repeated/forward_failure"] + and not metrics["repeated/adjoint_failure"] + and np.isfinite(metrics["target/error_max"]) + ) + return metrics + + +def save_json(path: Path, data: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(data, indent=2), encoding="utf-8") + + +def numeric_metrics( + summary: dict[str, Any], *, exclude: frozenset[str] = frozenset() +) -> dict[str, int | float]: + return { + name: value + for name, value in summary.items() + if name not in exclude + and isinstance(value, int | float) + and not isinstance(value, bool) + } + + +def main(cfg: Config) -> None: + total_start = time.perf_counter() + configure_runtime() + + mesh, target = load_problem(cfg) + target_ids = target_point_ids(target, cfg) + active_ids = active_cell_ids(mesh, cfg) + target_displacement = np.asarray( + target.point_data["Displacement"], dtype=np.float64 + ) + + add_masks(mesh, target_ids, active_ids) + melon.save(cfg.output_input, mesh) + melon.save(cfg.output_target, make_target_mesh(target, target_ids, active_ids)) + + inverse_mesh = mesh.copy(deep=True) + with melon.SeriesWriter(cfg.output_series, clear=True) as series_writer: + ( + displacement, + recovered_activation_inv, + trace, + stop_reason, + optimizer_steps, + best_step, + timing, + ) = solve_inverse( + inverse_mesh, + target_displacement, + target_ids, + active_ids, + cfg, + series_writer, + ) + total_elapsed_s = time.perf_counter() - total_start + summary = summarize( + inverse_mesh, + target_displacement, + displacement, + recovered_activation_inv, + target_ids, + active_ids, + trace, + stop_reason, + optimizer_steps, + best_step, + timing, + total_elapsed_s, + cfg, + ) + result = make_result_mesh( + inverse_mesh, + target_displacement, + displacement, + recovered_activation_inv, + target_ids, + active_ids, + numeric_metrics(summary), + ) + melon.save(cfg.output, result) + try: + save_snapshot(cfg.output_snapshot, result) + print(f"saved: {cfg.output_snapshot}") + except (OSError, RuntimeError, ValueError): + logger.warning( + "failed to save snapshot: %s", cfg.output_snapshot, exc_info=True + ) + save_json(cfg.output_summary, summary) + cherries.log_metrics(numeric_metrics(summary, exclude={"trace"})) + + print( + "inverse result:", + f"stop={summary['stop_reason']}", + f"best_step={summary['best/step']}", + f"target_mean_error={summary['target/error_mean']:.3e}cm", + f"target_rms_error={summary['target/error_rms']:.3e}cm", + f"target_max_error={summary['target/error_max']:.3e}cm", + f"loss={summary['loss/final']:.3e}", + f"steps={summary['optimizer/steps']}", + ) + print(f"saved: {cfg.output}") + print(f"saved: {cfg.output_series}") + print(f"saved: {cfg.output_summary}") + if not summary["passed"]: + msg = ( + "inverse solve did not meet the required max point error: " + f"{summary['target/error_max']:.6g} cm > " + f"{cfg.max_point_error_cm:.6g} cm" + ) + raise RuntimeError(msg) + + +if __name__ == "__main__": + cherries.main(main) diff --git a/exp/2026/05/20/inverse-face/src/30-transfer-activation-3152k.py b/exp/2026/05/20/inverse-face/src/30-transfer-activation-3152k.py new file mode 100644 index 000000000..83cc94e6d --- /dev/null +++ b/exp/2026/05/20/inverse-face/src/30-transfer-activation-3152k.py @@ -0,0 +1,655 @@ +import json +import logging +import math +import time +import warnings +from pathlib import Path +from typing import Any + +import numpy as np +import pydantic_settings as ps +import pyvista as pv +import torch +import warp as wp +from scipy.spatial import cKDTree + +from liblaf import cherries, melon + +logger = logging.getLogger(__name__) + +HIGH_RES_SOURCE = Path( + "/home/liblaf/github/liblaf/melon/exp/2025/04/30/" + "human-head-anatomy/data/41-expression-3152k.vtu" +) +SOLVED_SERIES = "20-inverse-face-smooth-w1-lr003.vtu.series" +OUTPUT_STEM = "30-transfer-activation-3152k" +IN_FACE_CONVEX = "InFaceConvex" +IN_FACE_CONTEXT_TYPO = "InFaceContex" +TARGET_SURFACE_MASK = "TargetSurfaceMask" +BACKGROUND_FRACTION = "BackgroundFraction" +ACTIVE_FRACTION = "ActiveFraction" +SMAS_STIFFNESS_FRACTION = "SmasStiffnessFraction" + + +class Config(cherries.BaseConfig): + model_config = ps.SettingsConfigDict(cli_parse_args=True) + + source: Path = cherries.input(HIGH_RES_SOURCE) + solved: Path = cherries.input(SOLVED_SERIES) + output_input: Path = cherries.output(f"{OUTPUT_STEM}-input.vtu") + output: Path = cherries.output(f"{OUTPUT_STEM}.vtu") + output_series: Path = cherries.output(f"{OUTPUT_STEM}.vtu.series") + output_summary: Path = cherries.output(f"{OUTPUT_STEM}-summary.json") + + solved_frame_index: int = -1 + transfer_k: int = 4 + transfer_power: float = 2.0 + transfer_chunk_size: int = 200_000 + + expression: str = "Expression000" + target_scale: float = 1.0 + target_point_mask: str = "IsFace" + fixed_point_mask: str = "IsCranium" + active_fraction_tol: float = 1.0e-3 + + E: float = 1.0 + nu: float = 0.49 + smas_stiffness_ratio: float = 1.0e2 + forward_rtol: float = 5.0e-4 + forward_atol: float = 0.0 + forward_max_steps: int = 10000 + + +def configure_runtime() -> None: + if not torch.cuda.is_available(): + msg = "This experiment uses Warp kernels through Torch and needs CUDA." + raise RuntimeError(msg) + logging.getLogger("liblaf.apple.forward._forward").setLevel(logging.WARNING) + warnings.filterwarnings( + "ignore", + message=r"The \.grad attribute of a Tensor that is not a leaf Tensor.*", + category=UserWarning, + ) + torch.set_default_dtype(torch.float64) + torch.set_default_device("cuda") + wp.config.mode = "release" + wp.init() + + +def to_numpy(value: Any) -> np.ndarray: + if torch.is_tensor(value): + return value.detach().cpu().numpy() + return np.asarray(value) + + +def to_float(value: Any, default: float = math.nan) -> float: + if value is None: + return default + if torch.is_tensor(value): + return float(value.detach().cpu()) + return float(value) + + +def require_path(path: Path) -> None: + if path.exists(): + return + msg = f"missing input: {path}" + raise FileNotFoundError(msg) + + +def require_array(obj: pv.DataSet, association: str, name: str) -> np.ndarray: + data = obj.cell_data if association == "cell" else obj.point_data + if name not in data: + msg = f"{association}_data[{name!r}] is missing" + raise KeyError(msg) + return np.asarray(data[name]) + + +def face_cell_mask(mesh: pv.UnstructuredGrid) -> tuple[np.ndarray, str]: + if IN_FACE_CONVEX in mesh.cell_data: + return np.asarray(mesh.cell_data[IN_FACE_CONVEX], dtype=bool), IN_FACE_CONVEX + if IN_FACE_CONTEXT_TYPO in mesh.cell_data: + return ( + np.asarray(mesh.cell_data[IN_FACE_CONTEXT_TYPO], dtype=bool), + IN_FACE_CONTEXT_TYPO, + ) + msg = f"source mesh has neither {IN_FACE_CONVEX!r} nor {IN_FACE_CONTEXT_TYPO!r}" + raise KeyError(msg) + + +def extract_face_mesh(source: pv.UnstructuredGrid) -> tuple[pv.UnstructuredGrid, str]: + mask, selected_name = face_cell_mask(source) + if not np.any(mask): + msg = f"no tetrahedra selected by {selected_name}" + raise ValueError(msg) + mesh = source.extract_cells(mask) + if not isinstance(mesh, pv.UnstructuredGrid): + mesh = mesh.cast_to_unstructured_grid() + cell_types = set(np.asarray(mesh.celltypes).tolist()) + if cell_types != {int(pv.CellType.TETRA)}: + msg = f"expected tetra-only face mesh, got cell types {sorted(cell_types)}" + raise ValueError(msg) + return mesh, selected_name + + +def lame_parameters(E: float, nu: float) -> tuple[float, float]: + lambda_ = E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu)) + mu = E / (2.0 * (1.0 + nu)) + return float(lambda_), float(mu) + + +def active_mask(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + muscle = require_array(mesh, "cell", "MuscleFraction").astype(np.float64) + return muscle > cfg.active_fraction_tol + + +def zero_activation_fields(mesh: pv.UnstructuredGrid) -> None: + from liblaf.apple.common import ACTIVATION, ACTIVATION_INV + + zero = np.zeros((mesh.n_cells, 6), dtype=np.float64) + mesh.cell_data[ACTIVATION.vtk] = zero.copy() + mesh.cell_data[ACTIVATION_INV.vtk] = zero.copy() + + +def disjoint_fractions( + muscle: np.ndarray, smas: np.ndarray +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + muscle_fraction = np.clip(muscle, 0.0, 1.0) + smas_fraction = np.clip(smas - muscle_fraction, 0.0, 1.0) + background_fraction = np.clip(1.0 - np.maximum(smas, muscle_fraction), 0.0, 1.0) + return background_fraction, muscle_fraction, smas_fraction + + +def add_material_fields(mesh: pv.UnstructuredGrid, cfg: Config) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU + from liblaf.apple.common import E as YOUNG_MODULUS + + muscle = require_array(mesh, "cell", "MuscleFraction").astype(np.float64) + smas = require_array(mesh, "cell", "SmasFraction").astype(np.float64) + background, muscle, smas_stiffness = disjoint_fractions(muscle, smas) + lambda_, mu = lame_parameters(cfg.E, cfg.nu) + + mesh.cell_data[BACKGROUND_FRACTION] = background + mesh.cell_data[ACTIVE_FRACTION] = muscle + mesh.cell_data[SMAS_STIFFNESS_FRACTION] = smas_stiffness + mesh.cell_data["ActivationMask"] = active_mask(mesh, cfg).astype(np.int8) + mesh.cell_data["InverseActiveMask"] = mesh.cell_data["ActivationMask"] + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, cfg.E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, cfg.nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, lambda_, dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, mu, dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = np.ones(mesh.n_cells, dtype=np.float64) + zero_activation_fields(mesh) + + +def add_boundary_conditions(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE + + fixed = require_array(mesh, "point", cfg.fixed_point_mask).astype(bool) + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[fixed, :] = True + + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + mesh.point_data["FixedCranium"] = fixed.astype(np.int8) + return fixed + + +def target_displacement( + mesh: pv.UnstructuredGrid, cfg: Config, fixed: np.ndarray +) -> np.ndarray: + displacement = require_array(mesh, "point", cfg.expression).astype(np.float64) + displacement = cfg.target_scale * displacement + displacement[fixed] = 0.0 + return displacement + + +def target_point_ids(mesh: pv.UnstructuredGrid, cfg: Config) -> np.ndarray: + if cfg.target_point_mask in mesh.point_data: + mask = np.asarray(mesh.point_data[cfg.target_point_mask], dtype=bool) + elif TARGET_SURFACE_MASK in mesh.point_data: + mask = np.asarray(mesh.point_data[TARGET_SURFACE_MASK], dtype=bool) + else: + msg = ( + f"mesh has neither point_data[{cfg.target_point_mask!r}] nor " + f"point_data[{TARGET_SURFACE_MASK!r}]" + ) + raise KeyError(msg) + ids = np.flatnonzero(mask) + if ids.size == 0: + msg = "target point mask selected no points" + raise ValueError(msg) + return ids.astype(np.int64) + + +def add_metadata( + mesh: pv.UnstructuredGrid, cfg: Config, selected_cell_data: str, solved_frame: Path +) -> None: + active = np.asarray(mesh.cell_data["ActivationMask"], dtype=bool) + fixed = np.asarray(mesh.point_data["FixedCranium"], dtype=bool) + mesh.field_data["Source"] = np.asarray([str(cfg.source)]) + mesh.field_data["SolvedActivationSource"] = np.asarray([str(cfg.solved)]) + mesh.field_data["SolvedActivationFrame"] = np.asarray([str(solved_frame)]) + mesh.field_data["SelectedCellData"] = np.asarray([selected_cell_data]) + mesh.field_data["E"] = np.asarray([cfg.E]) + mesh.field_data["Nu"] = np.asarray([cfg.nu]) + mesh.field_data["SmasStiffnessRatio"] = np.asarray([cfg.smas_stiffness_ratio]) + mesh.field_data["ActiveFractionTol"] = np.asarray([cfg.active_fraction_tol]) + mesh.field_data["ActiveTetCount"] = np.asarray([int(active.sum())]) + mesh.field_data["FixedPointCount"] = np.asarray([int(fixed.sum())]) + mesh.field_data["NoCollision"] = np.asarray([1]) + + +def resolve_series_frame(path: Path, frame_index: int) -> Path: + require_path(path) + if not path.name.endswith(".vtu.series"): + return path + series = json.loads(path.read_text(encoding="utf-8")) + files = series.get("files", []) + if not files: + msg = f"series has no frames: {path}" + raise ValueError(msg) + frame = files[frame_index] + return path.parent / frame["name"] + + +def activation_field(mesh: pv.UnstructuredGrid) -> np.ndarray: + from liblaf.apple.common import ACTIVATION_INV + + if "RecoveredActivationInv" in mesh.cell_data: + return np.asarray(mesh.cell_data["RecoveredActivationInv"], dtype=np.float64) + return np.asarray(mesh.cell_data[ACTIVATION_INV.vtk], dtype=np.float64) + + +def tet_cell_centers(mesh: pv.UnstructuredGrid) -> np.ndarray: + cells = np.asarray(mesh.cells, dtype=np.int64).reshape(mesh.n_cells, -1) + if cells.shape[1] != 5 or np.any(cells[:, 0] != 4): + msg = "cell-center transfer expects tetrahedral cells" + raise ValueError(msg) + return np.asarray(mesh.points, dtype=np.float64)[cells[:, 1:]].mean(axis=1) + + +def query_tree( + tree: cKDTree, points: np.ndarray, k: int +) -> tuple[np.ndarray, np.ndarray]: + try: + distances, indices = tree.query(points, k=k, workers=-1) + except TypeError: + distances, indices = tree.query(points, k=k) + distances = np.asarray(distances, dtype=np.float64) + indices = np.asarray(indices, dtype=np.int64) + if distances.ndim == 1: + distances = distances[:, None] + indices = indices[:, None] + return distances, indices + + +def interpolate_values( + values: np.ndarray, distances: np.ndarray, indices: np.ndarray, power: float +) -> np.ndarray: + gathered = values[indices] + exact = distances <= np.finfo(np.float64).eps + output = np.empty((distances.shape[0], values.shape[1]), dtype=np.float64) + exact_rows = np.any(exact, axis=1) + if np.any(exact_rows): + first_exact = np.argmax(exact[exact_rows], axis=1) + output[exact_rows] = gathered[exact_rows, first_exact] + if np.any(~exact_rows): + far_distances = distances[~exact_rows] + far_values = gathered[~exact_rows] + weights = np.power(far_distances, -power) + weights /= weights.sum(axis=1, keepdims=True) + output[~exact_rows] = np.einsum("nk,nkd->nd", weights, far_values) + return output + + +def transfer_activation_inv( + source_mesh: pv.UnstructuredGrid, target_mesh: pv.UnstructuredGrid, cfg: Config +) -> tuple[np.ndarray, dict[str, Any]]: + source_active = active_mask(source_mesh, cfg) + target_active = active_mask(target_mesh, cfg) + source_values = activation_field(source_mesh) + if source_values.shape != (source_mesh.n_cells, 6): + msg = ( + f"source activation has shape {source_values.shape}; " + f"expected {(source_mesh.n_cells, 6)}" + ) + raise ValueError(msg) + if not np.any(source_active): + msg = "source solved mesh has no active cells" + raise ValueError(msg) + if not np.any(target_active): + msg = "target high-res mesh has no active cells" + raise ValueError(msg) + + source_centers = tet_cell_centers(source_mesh)[source_active] + target_centers = tet_cell_centers(target_mesh) + source_active_values = source_values[source_active] + target_active_ids = np.flatnonzero(target_active) + k = min(max(1, cfg.transfer_k), source_centers.shape[0]) + tree = cKDTree(source_centers) + + transferred = np.zeros((target_mesh.n_cells, 6), dtype=np.float64) + nearest_distances: list[float] = [] + start_time = time.perf_counter() + for start in range(0, target_active_ids.size, cfg.transfer_chunk_size): + stop = min(start + cfg.transfer_chunk_size, target_active_ids.size) + chunk_ids = target_active_ids[start:stop] + distances, indices = query_tree(tree, target_centers[chunk_ids], k) + transferred[chunk_ids] = interpolate_values( + source_active_values, distances, indices, cfg.transfer_power + ) + nearest_distances.append(float(distances[:, 0].max())) + logger.info( + "Transferred active cells %d:%d / %d", + stop, + target_active_ids.size, + target_active_ids.size, + ) + + stats = { + "transfer/source_active_cells": int(source_active.sum()), + "transfer/target_active_cells": int(target_active.sum()), + "transfer/k": int(k), + "transfer/power": float(cfg.transfer_power), + "transfer/time_s": float(time.perf_counter() - start_time), + "transfer/nearest_distance_max": float(max(nearest_distances)), + "transfer/activation_rms": float( + np.linalg.norm(transferred[target_active]) + / math.sqrt(transferred[target_active].size) + ), + "transfer/activation_min": float(transferred[target_active].min()), + "transfer/activation_max": float(transferred[target_active].max()), + } + return transferred, stats + + +def set_material( + mesh: pv.UnstructuredGrid, + *, + E: float, + nu: float, + fraction: np.ndarray, +) -> None: + from liblaf.apple.common import FRACTION, LAMBDA, MU, NU + from liblaf.apple.common import E as YOUNG_MODULUS + + lambda_, mu = lame_parameters(E, nu) + mesh.cell_data[YOUNG_MODULUS.vtk] = np.full(mesh.n_cells, E, dtype=np.float64) + mesh.cell_data[NU.vtk] = np.full(mesh.n_cells, nu, dtype=np.float64) + mesh.cell_data[LAMBDA.vtk] = np.full(mesh.n_cells, lambda_, dtype=np.float64) + mesh.cell_data[MU.vtk] = np.full(mesh.n_cells, mu, dtype=np.float64) + mesh.cell_data[FRACTION.vtk] = np.asarray(fraction, dtype=np.float64) + + +def build_forward(mesh: pv.UnstructuredGrid, cfg: Config): + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import StableNeoHookean, StableNeoHookeanActive + + builder = ModelBuilder() + builder.add_vertices(mesh) + builder.add_fixed(mesh) + + set_material(mesh, E=cfg.E, nu=cfg.nu, fraction=mesh.cell_data[BACKGROUND_FRACTION]) + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="background")) + + set_material( + mesh, + E=cfg.smas_stiffness_ratio * cfg.E, + nu=cfg.nu, + fraction=mesh.cell_data[ACTIVE_FRACTION], + ) + builder.add_potential(StableNeoHookeanActive.from_pyvista(mesh, name="muscle")) + + set_material( + mesh, + E=cfg.smas_stiffness_ratio * cfg.E, + nu=cfg.nu, + fraction=mesh.cell_data[SMAS_STIFFNESS_FRACTION], + ) + builder.add_potential(StableNeoHookean.from_pyvista(mesh, name="smas")) + + forward = Forward(builder.finalize()) + forward.optimizer = forward.default_optimizer( + max_steps=cfg.forward_max_steps, + atol=cfg.forward_atol, + rtol=cfg.forward_rtol, + ) + return forward + + +def material_tree( + base_materials: dict[str, dict[str, torch.Tensor]], activation_inv: np.ndarray +) -> dict[str, dict[str, torch.Tensor]]: + materials = {name: dict(values) for name, values in base_materials.items()} + materials["muscle"]["activation_inv"] = torch.as_tensor( + activation_inv, + dtype=torch.get_default_dtype(), + device=torch.get_default_device(), + ) + return materials + + +def forward_solution_metrics(solution: Any) -> dict[str, Any]: + if solution is None: + return { + "forward/result": "missing", + "forward/success": False, + "forward/steps": math.nan, + "forward/grad_norm": math.nan, + "forward/relative_grad_norm": math.nan, + "forward/grad_norm_first": math.nan, + "forward/line_search_ok": False, + "forward/line_search_steps": math.nan, + "forward/stagnation_count": math.nan, + } + convergence_state = solution.state.convergence_state + line_search_state = solution.state.line_search_state + grad_norm = to_float(convergence_state.grad_norm) + grad_norm_first = to_float(convergence_state.grad_norm_first) + relative_grad_norm = ( + 0.0 + if grad_norm_first == 0.0 and grad_norm == 0.0 + else grad_norm / grad_norm_first + ) + return { + "forward/result": str(solution.result), + "forward/success": bool(solution.success), + "forward/steps": int(convergence_state.step), + "forward/grad_norm": grad_norm, + "forward/relative_grad_norm": float(relative_grad_norm), + "forward/grad_norm_first": grad_norm_first, + "forward/line_search_ok": bool(line_search_state.ok), + "forward/line_search_steps": int(line_search_state.step), + "forward/stagnation_count": int(convergence_state.stagnation_count), + } + + +def add_metric_fields( + mesh: pv.UnstructuredGrid, metrics: dict[str, float | int | bool | str] +) -> None: + for name, value in metrics.items(): + if isinstance(value, str): + continue + mesh.field_data[name] = np.asarray([value]) + + +def make_result_mesh( + mesh: pv.UnstructuredGrid, + displacement: np.ndarray, + transferred_activation_inv: np.ndarray, + target: np.ndarray, + target_ids: np.ndarray, + metrics: dict[str, float | int | bool | str], +) -> pv.UnstructuredGrid: + from liblaf.apple.common import ACTIVATION_INV + + result = mesh.copy(deep=True) + error = displacement - target + result.point_data["Displacement"] = displacement + result.point_data["DeformedPoint"] = result.points + displacement + result.point_data["TargetDisplacement"] = target + result.point_data["TargetPoint"] = result.points + target + result.point_data["DisplacementError"] = error + result.point_data["DisplacementErrorNorm"] = np.linalg.norm(error, axis=1) + target_mask = np.zeros(result.n_points, dtype=np.int8) + target_mask[target_ids] = 1 + result.point_data[TARGET_SURFACE_MASK] = target_mask + result.cell_data[ACTIVATION_INV.vtk] = transferred_activation_inv + result.cell_data["TransferredActivationInv"] = transferred_activation_inv + result.cell_data["TransferredActivationInvNorm"] = np.linalg.norm( + transferred_activation_inv, axis=1 + ) + add_metric_fields(result, metrics) + return result + + +def summarize( + mesh: pv.UnstructuredGrid, + displacement: np.ndarray, + transferred_activation_inv: np.ndarray, + target: np.ndarray, + target_ids: np.ndarray, + transfer_metrics: dict[str, Any], + forward_metrics: dict[str, Any], + elapsed_s: float, +) -> dict[str, Any]: + error = displacement - target + target_error = error[target_ids] + target_error_norm = np.linalg.norm(target_error, axis=1) + all_error_norm = np.linalg.norm(error, axis=1) + target_norm = np.linalg.norm(target[target_ids], axis=1) + active = np.asarray(mesh.cell_data["ActivationMask"], dtype=bool) + active_activation = transferred_activation_inv[active] + return { + "mesh/n_points": int(mesh.n_points), + "mesh/n_cells": int(mesh.n_cells), + "target/n_points": int(target_ids.size), + "activation/n_active_tets": int(active.sum()), + "activation/n_params": int(active.sum() * 6), + "time/total_s": float(elapsed_s), + "target/displacement_mean": float(target_norm.mean()), + "target/displacement_rms": float( + np.linalg.norm(target[target_ids]) / math.sqrt(target_ids.size) + ), + "target/displacement_max": float(target_norm.max()), + "target/error_mean": float(target_error_norm.mean()), + "target/error_rms": float( + np.linalg.norm(target_error) / math.sqrt(target_ids.size) + ), + "target/error_max": float(target_error_norm.max()), + "all/error_rms": float(np.linalg.norm(error) / math.sqrt(error.shape[0])), + "all/error_max": float(all_error_norm.max()), + "active_activation_inv/mean": active_activation.mean(axis=0).tolist(), + "active_activation_inv/min": active_activation.min(axis=0).tolist(), + "active_activation_inv/max": active_activation.max(axis=0).tolist(), + "active_activation_inv/rms": float( + np.linalg.norm(active_activation) / math.sqrt(active_activation.size) + ), + **transfer_metrics, + **forward_metrics, + } + + +def save_json(path: Path, data: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(data, indent=2), encoding="utf-8") + + +def numeric_metrics( + summary: dict[str, Any], *, exclude: frozenset[str] = frozenset() +) -> dict[str, int | float]: + return { + name: value + for name, value in summary.items() + if name not in exclude + and isinstance(value, int | float) + and not isinstance(value, bool) + } + + +def main(cfg: Config) -> None: + total_start = time.perf_counter() + configure_runtime() + require_path(cfg.source) + solved_frame = resolve_series_frame(cfg.solved, cfg.solved_frame_index) + require_path(solved_frame) + + high_source = pv.read(cfg.source) + if not isinstance(high_source, pv.UnstructuredGrid): + high_source = high_source.cast_to_unstructured_grid() + solved_mesh = pv.read(solved_frame) + if not isinstance(solved_mesh, pv.UnstructuredGrid): + solved_mesh = solved_mesh.cast_to_unstructured_grid() + + mesh, selected_cell_data = extract_face_mesh(high_source) + add_material_fields(mesh, cfg) + fixed = add_boundary_conditions(mesh, cfg) + target = target_displacement(mesh, cfg, fixed) + target_ids = target_point_ids(mesh, cfg) + transferred_activation_inv, transfer_metrics = transfer_activation_inv( + solved_mesh, mesh, cfg + ) + from liblaf.apple.common import ACTIVATION_INV + + mesh.cell_data[ACTIVATION_INV.vtk] = transferred_activation_inv + mesh.cell_data["TransferredActivationInv"] = transferred_activation_inv + mesh.cell_data["TransferredActivationInvNorm"] = np.linalg.norm( + transferred_activation_inv, axis=1 + ) + add_metadata(mesh, cfg, selected_cell_data, solved_frame) + melon.save(cfg.output_input, mesh) + logger.info("Wrote prepared high-res transfer mesh: %s", cfg.output_input) + + forward_start = time.perf_counter() + forward = build_forward(mesh, cfg) + materials = material_tree(forward.model.get_materials(), transferred_activation_inv) + forward.model.set_materials(materials) + solution = forward.step() + displacement = to_numpy(forward.state.u) + forward_metrics = forward_solution_metrics(solution) + forward_metrics["time/forward_s"] = float(time.perf_counter() - forward_start) + + elapsed_s = time.perf_counter() - total_start + summary = summarize( + mesh, + displacement, + transferred_activation_inv, + target, + target_ids, + transfer_metrics, + forward_metrics, + elapsed_s, + ) + result = make_result_mesh( + mesh, + displacement, + transferred_activation_inv, + target, + target_ids, + numeric_metrics(summary), + ) + melon.save(cfg.output, result) + with melon.SeriesWriter(cfg.output_series, clear=True) as series_writer: + series_writer.append(result, time=0.0) + save_json(cfg.output_summary, summary) + cherries.log_metrics(numeric_metrics(summary)) + + print( + "transfer forward result:", + f"forward={summary['forward/result']}", + f"success={summary['forward/success']}", + f"steps={summary['forward/steps']}", + f"target_mean_error={summary['target/error_mean']:.3e}cm", + f"target_rms_error={summary['target/error_rms']:.3e}cm", + f"target_max_error={summary['target/error_max']:.3e}cm", + ) + print(f"saved: {cfg.output_input}") + print(f"saved: {cfg.output}") + print(f"saved: {cfg.output_series}") + print(f"saved: {cfg.output_summary}") + + +if __name__ == "__main__": + cherries.main(main) diff --git a/marimo/deformation-gradient.py b/marimo/deformation-gradient.py deleted file mode 100644 index 879f2f996..000000000 --- a/marimo/deformation-gradient.py +++ /dev/null @@ -1,117 +0,0 @@ -import marimo - -__generated_with = "0.13.11" -app = marimo.App(width="medium") - - -@app.cell -def _(): - import sympy - - return (sympy,) - - -@app.cell -def _(sympy): - dh_dX = sympy.Matrix(sympy.symbols("h:4:3", real=True)).reshape(4, 3) - dh_dX - return (dh_dX,) - - -@app.cell -def _(sympy): - def vec33(F: sympy.Matrix) -> list[sympy.Expr]: - return F.T.flat() - - return (vec33,) - - -@app.cell -def _(sympy): - def unvec33(F: sympy.Matrix | list[sympy.Expr]) -> sympy.Matrix: - F = sympy.Matrix(F) - return F.reshape(3, 3).T - - return (unvec33,) - - -@app.cell -def _(sympy): - def vec43(x: sympy.Matrix) -> list[sympy.Expr]: - return x.flat() - - return (vec43,) - - -@app.cell -def _(sympy): - def unvec43(x: sympy.Matrix | list[sympy.Expr]) -> sympy.Matrix: - x = sympy.Matrix(x) - return x.reshape(4, 3) - - return (unvec43,) - - -@app.cell -def _(sympy): - x = sympy.Matrix(sympy.symbols("u:4:3"), real=True).reshape(4, 3) - x - return (x,) - - -@app.cell -def _(dh_dX, x): - F = x.T @ dh_dX - F - return (F,) - - -@app.cell -def _(F, unvec33, vec33): - unvec33(vec33(F)) - - -@app.cell -def _(F, sympy, vec33, vec43, x): - dFdx_T = sympy.derive_by_array(vec33(F), vec43(x)) - dFdx_T = sympy.Matrix(dFdx_T) - dFdx = dFdx_T.T - dFdx - return (dFdx,) - - -@app.cell -def _(dFdx, sympy, unvec33, vec43): - p = sympy.Matrix(sympy.symbols("p:4:3")).reshape(4, 3) - dFdx_p = dFdx @ sympy.Matrix(vec43(p)) - dFdx_p = unvec33(dFdx_p) - dFdx_p - return dFdx_p, p - - -@app.cell -def _(dFdx_p, dh_dX, p): - p.T @ dh_dX - dFdx_p - - -@app.cell -def _(dFdx, sympy, unvec43, vec33): - q = sympy.Matrix(sympy.symbols("q:3:3")).reshape(3, 3) - dFdxT_p = dFdx.T @ sympy.Matrix(vec33(q)) - dFdxT_p = unvec43(dFdxT_p) - dFdxT_p - return dFdxT_p, q - - -@app.cell -def _(dFdxT_p, dh_dX, q): - dh_dX @ q.T - dFdxT_p - - -@app.cell -def _(dFdx): - dFdx.T @ dFdx - - -if __name__ == "__main__": - app.run() diff --git a/marimo/gradients.py b/marimo/gradients.py deleted file mode 100644 index b4d7dcbb6..000000000 --- a/marimo/gradients.py +++ /dev/null @@ -1,46 +0,0 @@ -import marimo - -__generated_with = "0.13.11" -app = marimo.App(width="medium") - - -@app.cell -def _(): - import sympy - - return (sympy,) - - -@app.cell -def _(sympy): - F = sympy.Matrix(sympy.symbols("F:3:3")).reshape(3, 3) - return (F,) - - -@app.cell -def _(F, sympy): - f0, f1, f2 = F.col(0), F.col(1), F.col(2) - g3 = sympy.Matrix([f1.cross(f2).T, f2.cross(f0).T, f0.cross(f1).T]) - g3 - - -@app.cell -def _(F): - J = F.det() - J - return (J,) - - -@app.cell -def _(F, J, sympy): - dJdF = sympy.derive_by_array(J, F) - dJdF - - -@app.cell -def _(): - return - - -if __name__ == "__main__": - app.run() diff --git a/marimo/hess-quad.py b/marimo/hess-quad.py deleted file mode 100644 index 8d0675426..000000000 --- a/marimo/hess-quad.py +++ /dev/null @@ -1,94 +0,0 @@ -import marimo - -__generated_with = "0.13.11" -app = marimo.App(width="medium") - - -@app.cell -def _(): - import sympy - - return (sympy,) - - -@app.cell -def _(sympy): - F = sympy.Matrix(sympy.symbols("F:3:3")).reshape(3, 3) - F - return (F,) - - -@app.cell -def _(sympy): - def hat(z: sympy.Matrix) -> sympy.Matrix: - return sympy.Matrix( - [ - [0, -z[2], z[1]], - [z[2], 0, -z[0]], - [-z[1], z[0], 0], - ] - ) - - return (hat,) - - -@app.cell -def _(F, hat, sympy): - f0, f1, f2 = (hat(F.col(i)) for i in range(3)) - z33 = sympy.zeros(3, 3) - H3 = sympy.Matrix([[z33, -f2, f1], [f2, z33, -f0], [-f1, f0, z33]]) - H3 - return (H3,) - - -@app.cell -def _(sympy): - p = sympy.Matrix(sympy.symbols("p:3:3")).reshape(3, 3) - p - return (p,) - - -@app.cell -def _(sympy): - def vec(p: sympy.Matrix) -> list[sympy.Expr]: - return p.T.flat() - - return (vec,) - - -@app.cell -def _(H3, p, sympy, vec): - p_vec = sympy.Matrix(vec(p)) - expected = p_vec.T @ H3 @ p_vec - expected - return (expected,) - - -@app.cell -def _(sympy): - def h6_quad(F: sympy.Matrix, p: sympy.Matrix) -> sympy.Expr: - f0, f1, f2 = F.col(0), F.col(1), F.col(2) - p0, p1, p2 = p.col(0), p.col(1), p.col(2) - return ( - p0.T @ (f1.cross(p2) - f2.cross(p1)) - + p1.T @ (f2.cross(p0) - f0.cross(p2)) - + p2.T @ (f0.cross(p1) - f1.cross(p0)) - ) - - return (h6_quad,) - - -@app.cell -def _(F, h6_quad, p): - actual = h6_quad(F, p) - actual - return (actual,) - - -@app.cell -def _(actual, expected): - actual - expected - - -if __name__ == "__main__": - app.run() diff --git a/mkdocs.yaml b/mkdocs.yaml deleted file mode 100644 index dbef5df3e..000000000 --- a/mkdocs.yaml +++ /dev/null @@ -1,11 +0,0 @@ -INHERIT: .config/copier/mkdocs.yaml -site_name: Apple -site_description: ๐ŸŽ A JAX and Warp library for differentiable physics simulation, featuring elastic energy models and finite element methods. - -plugins: - mkdocstrings: - handlers: - python: - options: - preload_modules: - - environs # I don't know why, but this is needed to make mkdocstrings work diff --git a/notebooks/diff.ipynb b/notebooks/diff.ipynb deleted file mode 100644 index 1ce36f866..000000000 --- a/notebooks/diff.ipynb +++ /dev/null @@ -1,162 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "eded03fb", - "metadata": {}, - "outputs": [], - "source": [ - "import einops\n", - "import numpy as np\n", - "import sympy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "82bcb230", - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}R_{00} & R_{01} & R_{02}\\\\R_{10} & R_{11} & R_{12}\\\\R_{20} & R_{21} & R_{22}\\end{matrix}\\right]$" - ], - "text/plain": [ - "[[R00, R01, R02], [R10, R11, R12], [R20, R21, R22]]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "R: np.ndarray = np.asarray(sympy.symbols(\"R:3:3\", real=True)).reshape(3, 3)\n", - "sympy.NDimArray(R) # 3, 3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ff806ce4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}A_{00} & A_{01} & A_{02}\\\\A_{10} & A_{11} & A_{12}\\\\A_{20} & A_{21} & A_{22}\\end{matrix}\\right]$" - ], - "text/plain": [ - "[[A00, A01, A02], [A10, A11, A12], [A20, A21, A22]]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "A: np.ndarray = np.asarray(sympy.symbols(\"A:3:3\", real=True)).reshape(3, 3)\n", - "sympy.NDimArray(A) # 3, 3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8d463eb9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\left[\\begin{matrix}- R_{00} & 0 & 0\\\\- R_{10} & 0 & 0\\\\- R_{20} & 0 & 0\\end{matrix}\\right] & \\left[\\begin{matrix}0 & - R_{00} & 0\\\\0 & - R_{10} & 0\\\\0 & - R_{20} & 0\\end{matrix}\\right] & \\left[\\begin{matrix}0 & 0 & - R_{00}\\\\0 & 0 & - R_{10}\\\\0 & 0 & - R_{20}\\end{matrix}\\right]\\\\\\left[\\begin{matrix}- R_{01} & 0 & 0\\\\- R_{11} & 0 & 0\\\\- R_{21} & 0 & 0\\end{matrix}\\right] & \\left[\\begin{matrix}0 & - R_{01} & 0\\\\0 & - R_{11} & 0\\\\0 & - R_{21} & 0\\end{matrix}\\right] & \\left[\\begin{matrix}0 & 0 & - R_{01}\\\\0 & 0 & - R_{11}\\\\0 & 0 & - R_{21}\\end{matrix}\\right]\\\\\\left[\\begin{matrix}- R_{02} & 0 & 0\\\\- R_{12} & 0 & 0\\\\- R_{22} & 0 & 0\\end{matrix}\\right] & \\left[\\begin{matrix}0 & - R_{02} & 0\\\\0 & - R_{12} & 0\\\\0 & - R_{22} & 0\\end{matrix}\\right] & \\left[\\begin{matrix}0 & 0 & - R_{02}\\\\0 & 0 & - R_{12}\\\\0 & 0 & - R_{22}\\end{matrix}\\right]\\end{matrix}\\right]$" - ], - "text/plain": [ - "[[[[-R00, 0, 0], [-R10, 0, 0], [-R20, 0, 0]], [[0, -R00, 0], [0, -R10, 0], [0, -R20, 0]], [[0, 0, -R00], [0, 0, -R10], [0, 0, -R20]]], [[[-R01, 0, 0], [-R11, 0, 0], [-R21, 0, 0]], [[0, -R01, 0], [0, -R11, 0], [0, -R21, 0]], [[0, 0, -R01], [0, 0, -R11], [0, 0, -R21]]], [[[-R02, 0, 0], [-R12, 0, 0], [-R22, 0, 0]], [[0, -R02, 0], [0, -R12, 0], [0, -R22, 0]], [[0, 0, -R02], [0, 0, -R12], [0, 0, -R22]]]]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "D: np.ndarray = np.asarray(sympy.derive_by_array(-R @ A, A))\n", - "sympy.NDimArray(D) # 3, 3, 3, 3" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "fdffe226", - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}p_{00} & p_{01} & p_{02}\\\\p_{10} & p_{11} & p_{12}\\\\p_{20} & p_{21} & p_{22}\\end{matrix}\\right]$" - ], - "text/plain": [ - "[[p00, p01, p02], [p10, p11, p12], [p20, p21, p22]]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p: np.ndarray = np.asarray(sympy.symbols(\"p:3:3\", real=True)).reshape(3, 3)\n", - "sympy.NDimArray(p) # 3, 3" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "54b8b5ca", - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}- R_{00} p_{00} - R_{10} p_{10} - R_{20} p_{20} & - R_{00} p_{01} - R_{10} p_{11} - R_{20} p_{21} & - R_{00} p_{02} - R_{10} p_{12} - R_{20} p_{22}\\\\- R_{01} p_{00} - R_{11} p_{10} - R_{21} p_{20} & - R_{01} p_{01} - R_{11} p_{11} - R_{21} p_{21} & - R_{01} p_{02} - R_{11} p_{12} - R_{21} p_{22}\\\\- R_{02} p_{00} - R_{12} p_{10} - R_{22} p_{20} & - R_{02} p_{01} - R_{12} p_{11} - R_{22} p_{21} & - R_{02} p_{02} - R_{12} p_{12} - R_{22} p_{22}\\end{matrix}\\right]$" - ], - "text/plain": [ - "[[-R00*p00 - R10*p10 - R20*p20, -R00*p01 - R10*p11 - R20*p21, -R00*p02 - R10*p12 - R20*p22], [-R01*p00 - R11*p10 - R21*p20, -R01*p01 - R11*p11 - R21*p21, -R01*p02 - R11*p12 - R21*p22], [-R02*p00 - R12*p10 - R22*p20, -R02*p01 - R12*p11 - R22*p21, -R02*p02 - R12*p12 - R22*p22]]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hess_mixed_prod: np.ndarray = einops.einsum(D, p, \"i j k l, k l -> i j\")\n", - "sympy.NDimArray(hess_mixed_prod)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "liblaf-apple", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.7" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 000000000..335ead091 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,31 @@ +from typing import Any + +import liblaf.nox_recipes as recipes +import nox +from liblaf.nox_recipes import Resolution + +nox.options.default_venv_backend = "uv" +nox.options.reuse_existing_virtualenvs = True +nox.options.tags = ["test"] +PYPROJECT: dict[str, Any] = nox.project.load_toml("pyproject.toml") +PYTHON_VERSIONS: list[str] = nox.project.python_versions(PYPROJECT) + + +@nox.session(python=PYTHON_VERSIONS, reuse_venv=True, tags=["test"]) +@nox.parametrize( + "resolution", + [ + nox.param(Resolution.HIGHEST, id="highest", tags=["highest"]), + # nox.param(Resolution.LOWEST, id="lowest", tags=["lowest"]), + nox.param(Resolution.LOWEST_DIRECT, id="lowest-direct", tags=["lowest-direct"]), + ], +) +def test(s: nox.Session, resolution: Resolution | None) -> None: + extras: list[str] = [] + if (cuda_version := recipes.cuda_driver_version()) is not None: + if cuda_version >= 13000: + extras.append("cuda13") + elif cuda_version >= 12000: + extras.append("cuda12") + recipes.setup_uv(s, groups=["test"], resolution=resolution) + recipes.pytest(s, suppress_no_test_exit_code=True) diff --git a/pyproject.toml b/pyproject.toml index 6c167171f..b1e87a713 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,30 +21,22 @@ classifiers = [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Typing :: Typed" ] dependencies = [ - "beartype>=0.22,<0.23", - "chex>=0.1,<0.2", - "cytoolz>=1,<2", - "einops>=0.8,<0.9", - "equinox>=0.13,<0.14", - "felupe>=9,<10", - "jax>=0.8,<0.9", - "jaxtyping>=0.3,<0.4", - "lazy-loader>=0.4,<0.5", - "liblaf-grapes>=8,<9", - "liblaf-melon>=1,<2", - "liblaf-peach>=0.7,<0.8", - "lineax>=0.0.8,<0.0.9", - "loguru>=0.7,<0.8", - "matplotlib>=3,<4", - "numpy>=2,<3", - "optax>=0.2,<0.3", - "pyvista>=0.46,<0.47", - "rich>=14,<15", - "scipy>=1,<2", - "warp-lang>=1,<2" + "einops>=0.8", + "felupe>=10", + "ipctk>=1.5.0", + "jaxtyping>=0.3", + "lazy-loader>=0.1", + "liblaf-melon>=1", + "liblaf-peach>=0.10", + "numpy>=2.3.2", + "optree>=0.19.1", + "pyvista>=0.47", + "torch>=2.11.0", + "warp-lang>=1.13" ] dynamic = ["version"] @@ -56,25 +48,42 @@ dynamic = ["version"] "Release Notes" = "https://github.com/liblaf/apple/releases" "Source Code" = "https://github.com/liblaf/apple" -[project.optional-dependencies] -cuda12 = ["jax[cuda12]>=0.8,<0.9", "liblaf-peach[cuda12]>=0.7,<0.8"] -cuda13 = ["jax[cuda13]>=0.8,<0.9", "liblaf-peach[cuda13]>=0.7,<0.8"] - [dependency-groups] dev = [ - "icecream>=2,<3", - "ipykernel>=7,<8", - "keyboard>=0.13.5,<0.14.0", - "liblaf-cherries>=1,<2", - "marimo[recommended]>=0.18,<0.19", - "scipy-stubs>=1,<2", - "sympy>=1,<2", - "toolz-stubs>=0.2.1,<0.3.0", - "viztracer>=1,<2", + "icecream>=2.1.10", + "ipykernel>=7", + "jax[cuda13]>=0.10.0", + "liblaf-cherries>=1", + "liblaf-grapes>=9", + "pygame>=2.6.1", + "sympy>=1", + "viztracer>=1" +] +build = ["check-wheel-contents>=0.6", "hatch>=1", "twine>=6"] +docs = [ + "griffe-fieldz>=0.5", + "griffe-inherited-docstrings>=1", + "griffe-pydantic>=1", + "griffe-warnings-deprecated>=1", + "mkdocstrings[python]>=1", + "zensical>=0.0.43" +] +lint = ["import-linter[ui]>=2", "ruff>=0.15"] +nox = ["liblaf-nox-recipes>=0.1", "nox>=2026", "nox-uv>=0.7"] +test = [ + "hypothesis>=6", + "pytest>=9", + "pytest-codspeed>=4.5.0", + "pytest-cov>=7", + "pytest-randomly>=4", + { include-group = "dev" } +] +typing = [ + "ipctk-stubs>=1", + "mypy>=2.1.0", + "pybind11-stubgen>=2.5.5", + "scipy-stubs>=1" ] -build = ["check-wheel-contents>=0.6,<0.7", "hatch>=1,<2", "twine>=6,<7"] -docs = ["liblaf-mkdocs-preset>=0.2,<0.3", "mkdocs>=1,<2"] -test = ["liblaf-pytest-preset>=0.1,<0.2", "pytest>=9,<10"] [build-system] requires = ["hatch-vcs", "hatchling"] @@ -102,32 +111,23 @@ packages = ["src/liblaf"] [tool.hatch.version] source = "vcs" -[tool.pyright] -exclude = [ - "**/.*", - "**/__pycache__", - "**/exp/2024", - "**/exp/2025/04", - "**/exp/2025/05", - "**/exp/2025/06", - "**/exp/2025/07", - "**/exp/2025/08", - "**/exp/2025/09", - "**/exp/2025/10/29", - "**/marimo", - "**/node_modules" -] -extends = ".config/linters/pyrightconfig.json" -reportInvalidTypeForm = "none" +[tool.importlinter] +root_package = "liblaf.apple" + +[[tool.importlinter.contracts]] +ancestors = ["liblaf.apple"] +name = "Acyclic siblings" +type = "acyclic_siblings" [tool.pytest] addopts = [ "--doctest-modules", - "--hypothesis-explain", "--import-mode=importlib", + "--junitxml=junit.xml", "--showlocals" ] consider_namespace_packages = true +junit_family = "legacy" strict = true testpaths = ["benches", "src", "tests"] @@ -136,6 +136,7 @@ exclude = ["**/marimo/"] extend = ".config/linters/.ruff.toml" [tool.ruff.lint] +exclude = ["**/.*/", "typings/ipctk/*.pyi"] ignore = [ "ANN201", "ANN202", @@ -150,3 +151,11 @@ ignore = [ [tool.uv] default-groups = "all" + +[[tool.uv.index]] +name = "ipctk" +url = "https://liblaf.github.io/mirrors-ipc-toolkit/simple/" + +[tool.uv.sources] +ipctk = { index = "ipctk" } +ipctk-stubs = { index = "ipctk" } diff --git a/scripts/gen-init.sh b/scripts/gen-init.sh deleted file mode 100755 index 48af06ada..000000000 --- a/scripts/gen-init.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# This file is @generated by . -# DO NOT EDIT! -set -o errexit -set -o nounset -set -o pipefail - -CODE="import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__)" -N_LINES=$(echo "$CODE" | wc --lines) - -git_root=$(git rev-parse --show-toplevel) -readarray -t files < <(fd --fixed-strings --type file '__init__.pyi' "$git_root") -for file in "${files[@]}"; do - file="${file/%".pyi"/".py"}" - if [[ ! -f $file ]]; then - echo "$CODE" > "$file" - continue - fi - last_lines=$(tail --lines="$N_LINES" "$file") - if ! diff <(echo "$last_lines") <(echo "$CODE") &> /dev/null; then - echo "$CODE" >> "$file" - fi -done diff --git a/src/liblaf/apple/__init__.py b/src/liblaf/apple/__init__.py index 97d0a5864..26eeb22d8 100644 --- a/src/liblaf/apple/__init__.py +++ b/src/liblaf/apple/__init__.py @@ -1,4 +1,5 @@ -import lazy_loader as lazy +from lazy_loader import attach_stub -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/__init__.pyi b/src/liblaf/apple/__init__.pyi index c17ab5c8d..b2b35d0b8 100644 --- a/src/liblaf/apple/__init__.pyi +++ b/src/liblaf/apple/__init__.pyi @@ -1,54 +1,3 @@ -from . import inverse, jax, model, utils, warp -from ._version import __version__, __version_tuple__ -from .inverse import Inverse -from .jax import ( - Dirichlet, - DirichletBuilder, - Gravity, - JaxEnergy, - JaxModel, - JaxModelBuilder, - MassSpring, - MassSpringPrestrain, -) -from .model import Forward, Model, ModelBuilder -from .warp import ( - Arap, - ArapActive, - ArapMuscle, - Hyperelastic, - Phace, - WarpEnergy, - WarpModel, - WarpModelBuilder, -) +from . import collision, common, forward, torch, warp -__all__ = [ - "Arap", - "ArapActive", - "ArapMuscle", - "Dirichlet", - "DirichletBuilder", - "Forward", - "Gravity", - "Hyperelastic", - "Inverse", - "JaxEnergy", - "JaxModel", - "JaxModelBuilder", - "MassSpring", - "MassSpringPrestrain", - "Model", - "ModelBuilder", - "Phace", - "WarpEnergy", - "WarpModel", - "WarpModelBuilder", - "__version__", - "__version_tuple__", - "inverse", - "jax", - "model", - "utils", - "warp", -] +__all__ = ["collision", "common", "forward", "torch", "warp"] diff --git a/src/liblaf/apple/_version.pyi b/src/liblaf/apple/_version.pyi index 9f9352042..6e34b8c8e 100644 --- a/src/liblaf/apple/_version.pyi +++ b/src/liblaf/apple/_version.pyi @@ -1,4 +1,8 @@ +# ref: +# ref: +__commit_id__: str | None __version__: str __version_tuple__: tuple[int | str, ...] +commit_id: str | None version_tuple: tuple[int | str, ...] version: str diff --git a/src/liblaf/apple/collision/__init__.py b/src/liblaf/apple/collision/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/collision/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/collision/__init__.pyi b/src/liblaf/apple/collision/__init__.pyi new file mode 100644 index 000000000..0b525b627 --- /dev/null +++ b/src/liblaf/apple/collision/__init__.pyi @@ -0,0 +1,4 @@ +from ._builder import CollisionBuilder +from ._collision import Collision + +__all__ = ["Collision", "CollisionBuilder"] diff --git a/src/liblaf/apple/collision/_builder.py b/src/liblaf/apple/collision/_builder.py new file mode 100644 index 000000000..b67237e2c --- /dev/null +++ b/src/liblaf/apple/collision/_builder.py @@ -0,0 +1,63 @@ +import attrs +import ipctk +import numpy as np +import pyvista as pv +import torch +from jaxtyping import Float, Integer + +from liblaf.apple.common import GLOBAL_POINT_ID + +from ._collision import Collision + + +@attrs.define +class CollisionBuilder: + stiffness: float + use_physical_barrier: bool = attrs.field(default=True) + + rest_positions: Float[np.ndarray, "V dim"] = attrs.field( + factory=lambda: np.empty((0, 3)) + ) + faces: Integer[np.ndarray, "F 3"] = attrs.field( + factory=lambda: np.empty((0, 3), dtype=np.int32) + ) + indices: Integer[np.ndarray, " V"] = attrs.field( + factory=lambda: np.empty((0,), dtype=np.int32) + ) + + @property + def n_vertices(self) -> int: + return self.rest_positions.shape[0] + + def add_tetmesh(self, obj: pv.UnstructuredGrid) -> None: + surface: pv.PolyData = obj.extract_surface(algorithm=None) + self.add_trimesh(surface) + + def add_trimesh(self, obj: pv.PolyData) -> None: + global_point_id: Integer[np.ndarray, ""] = obj.point_data[GLOBAL_POINT_ID.vtk] + faces: Integer[np.ndarray, "F 3"] = obj.regular_faces + self.n_vertices + self.rest_positions = np.concat([self.rest_positions, obj.points]) + self.faces = np.concat([self.faces, faces]) + self.indices = np.concat([self.indices, global_point_id]) + + def finalize(self) -> Collision: + edges: Integer[np.ndarray, "E 2"] = ipctk.edges(self.faces) + collision_mesh: ipctk.CollisionMesh = ipctk.CollisionMesh( + rest_positions=self.rest_positions, edges=edges, faces=self.faces + ) + mean_edge_length, _std = ipctk.mean_edge_length( + collision_mesh.rest_positions, + collision_mesh.rest_positions, + collision_mesh.edges, + ) + potential: ipctk.BarrierPotential = ipctk.BarrierPotential( + dhat=0.5 * mean_edge_length, + stiffness=self.stiffness, + use_physical_barrier=self.use_physical_barrier, + ) + return Collision( + collision_mesh=collision_mesh, + indices=torch.as_tensor(self.indices), + potential=potential, + use_physical_barrier=self.use_physical_barrier, + ) diff --git a/src/liblaf/apple/collision/_collision.py b/src/liblaf/apple/collision/_collision.py new file mode 100644 index 000000000..c63e6580a --- /dev/null +++ b/src/liblaf/apple/collision/_collision.py @@ -0,0 +1,180 @@ +import logging + +import attrs +import ipctk +import numpy as np +import scipy.sparse +import torch +from jaxtyping import Float, Integer +from torch import Tensor + +logger: logging.Logger = logging.getLogger(__name__) + +type Full = Float[Tensor, "points dim"] +type Scalar = Float[Tensor, ""] +type VDim = Float[Tensor, "V dim"] + + +@attrs.define +class Collision: + @attrs.define + class State: + candidates: ipctk.Candidates = attrs.field(factory=ipctk.Candidates) + collisions: ipctk.NormalCollisions = attrs.field(factory=ipctk.NormalCollisions) + hess: scipy.sparse.csc_matrix | None = None + + @staticmethod + def _default_broad_phase() -> ipctk.BroadPhase: + if torch.cuda.is_available() and hasattr(ipctk, "SweepAndTiniestQueue"): + logger.debug("broad phase: SweepAndTiniestQueue") + return ipctk.SweepAndTiniestQueue() + logger.debug("broad phase: LBVH") + return ipctk.LBVH() + + def _default_inflation_radius(self) -> float: + return 0.5 * self.potential.dhat + + def _default_vertices(self) -> VDim: + return torch.as_tensor(self.collision_mesh.rest_positions) + + collision_mesh: ipctk.CollisionMesh + indices: Integer[Tensor, " V"] + potential: ipctk.BarrierPotential + + broad_phase: ipctk.BroadPhase = attrs.field(factory=_default_broad_phase) + narrow_phase_ccd: ipctk.NarrowPhaseCCD = attrs.field( + factory=ipctk.TightInclusionCCD + ) + + dmin: float = attrs.field(default=0.0) + inflation_radius: float = attrs.field( + default=attrs.Factory(_default_inflation_radius, takes_self=True) + ) + min_distance: float = attrs.field(default=0.0) + use_physical_barrier: bool = attrs.field(default=True) + + vertices: Float[Tensor, "V dim"] = attrs.field( + default=attrs.Factory(_default_vertices, takes_self=True) + ) + + def init(self) -> State: + state: Collision.State = Collision.State() + if self.use_physical_barrier: + state.collisions.use_area_weighting = True + state.collisions.collision_set_type = ( + ipctk.NormalCollisions.CollisionSetType.IMPROVED_MAX_APPROX + ) + vertices: Float[np.ndarray, "V dim"] = self.vertices.numpy(force=True) + state.candidates.build( + mesh=self.collision_mesh, + vertices=vertices, + inflation_radius=self.inflation_radius, + broad_phase=self.broad_phase, + ) + state.collisions.build( + candidates=state.candidates, + mesh=self.collision_mesh, + vertices=vertices, + dhat=self.potential.dhat, + dmin=self.dmin, + ) + return state + + def max_step_size(self, state: State, u: Full, p: Full) -> Scalar: + vertices_t0: Full = self.vertices + u[self.indices] + vertices_t1: Full = vertices_t0 + p[self.indices] + vertices_t0: Float[np.ndarray, "V dim"] = vertices_t0.numpy(force=True) + vertices_t1: Float[np.ndarray, "V dim"] = vertices_t1.numpy(force=True) + state.candidates.clear() + state.candidates.build( + mesh=self.collision_mesh, + vertices_t0=vertices_t0, + vertices_t1=vertices_t1, + inflation_radius=self.inflation_radius, + broad_phase=self.broad_phase, + ) + alpha: float = state.candidates.compute_collision_free_stepsize( + mesh=self.collision_mesh, + vertices_t0=vertices_t0, + vertices_t1=vertices_t1, + min_distance=self.min_distance, + narrow_phase_ccd=self.narrow_phase_ccd, + ) + return torch.as_tensor(alpha) + + def update(self, state: State, u: Full) -> None: + vertices: VDim = self.vertices + u[self.indices] + vertices: Float[np.ndarray, "V dim"] = vertices.numpy(force=True) + # state.candidates.clear() + # state.candidates.build( + # mesh=self.collision_mesh, + # vertices=vertices, + # inflation_radius=self.inflation_radius, + # broad_phase=self.broad_phase, + # ) + state.collisions.clear() + state.collisions.build( + candidates=state.candidates, + mesh=self.collision_mesh, + vertices=vertices, + dhat=self.potential.dhat, + dmin=self.dmin, + ) + state.hess = None + + def fun(self, state: State, u: Full) -> Scalar: + vertices: VDim = self.vertices + u[self.indices] + vertices: Float[np.ndarray, "V dim"] = vertices.numpy(force=True) + fun: float = self.potential( + collisions=state.collisions, mesh=self.collision_mesh, X=vertices + ) + return torch.as_tensor(fun) + + def grad(self, state: State, u: Full, output: Full) -> None: + vertices: VDim = self.vertices + u[self.indices] + vertices: Float[np.ndarray, "V dim"] = vertices.numpy(force=True) + grad: Float[np.ndarray, " V*dim"] = self.potential.gradient( + state.collisions, mesh=self.collision_mesh, X=vertices + ) + grad: Float[Tensor, " V*dim"] = torch.as_tensor(grad) + grad: VDim = grad.reshape(vertices.shape) + output.index_add_(0, self.indices, grad) + + def hess_diag(self, state: State, u: Full, output: Full) -> None: + vertices: VDim = self.vertices + u[self.indices] + vertices: Float[np.ndarray, "V dim"] = vertices.numpy(force=True) + H_diag: Float[np.ndarray, " V*dim"] = ( + self.potential.gauss_newton_hessian_diagonal( + collisions=state.collisions, mesh=self.collision_mesh, vertices=vertices + ) + ) + H_diag: Float[Tensor, " V*dim"] = torch.as_tensor(H_diag) + H_diag: VDim = H_diag.reshape(vertices.shape) + output.index_add_(0, self.indices, H_diag) + + def hess_prod(self, state: State, u: Full, p: Full, output: Full) -> None: + if state.hess is None: + vertices: VDim = self.vertices + u[self.indices] + vertices: Float[np.ndarray, "V dim"] = vertices.numpy(force=True) + state.hess = self.potential.hessian( + collisions=state.collisions, mesh=self.collision_mesh, X=vertices + ) + p: Float[Tensor, " V*dim"] = p[self.indices].flatten() + p: Float[np.ndarray, " V*dim"] = p.numpy(force=True) + Hp: Float[np.ndarray, " V*dim"] = state.hess @ p + Hp: VDim = torch.as_tensor(Hp).reshape(self.vertices.shape) + output.index_add_(0, self.indices, Hp) + + def hess_quad(self, state: State, u: Full, p: Full) -> Scalar: + vertices: VDim = self.vertices + u[self.indices] + vertices: Float[np.ndarray, "V dim"] = vertices.numpy(force=True) + p: VDim = p[self.indices] + p: Float[Tensor, " V*dim"] = p.flatten() + p: Float[np.ndarray, " V*dim"] = p.numpy(force=True) + pHp: float = self.potential.gauss_newton_hessian_quadratic_form( + collisions=state.collisions, + mesh=self.collision_mesh, + vertices=vertices, + p=p, + ) + return torch.as_tensor(pHp) diff --git a/src/liblaf/apple/common/__init__.py b/src/liblaf/apple/common/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/common/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/common/__init__.pyi b/src/liblaf/apple/common/__init__.pyi new file mode 100644 index 000000000..73335b7a9 --- /dev/null +++ b/src/liblaf/apple/common/__init__.pyi @@ -0,0 +1,41 @@ +from . import attr_name +from ._moduli import lame_converter +from ._potential_name import DEFAULT_POTENTIAL_NAME +from .attr_name import ( + ACTIVATION, + ACTIVATION_INV, + DISPLACEMENT, + FIXED_MASK, + FIXED_VALUE, + FORCE, + FRACTION, + GLOBAL_POINT_ID, + LAMBDA, + MASS_DENSITY, + MU, + NU, + PRESTRAIN, + AttrName, + E, +) + +__all__ = [ + "ACTIVATION", + "ACTIVATION_INV", + "DEFAULT_POTENTIAL_NAME", + "DISPLACEMENT", + "FIXED_MASK", + "FIXED_VALUE", + "FORCE", + "FRACTION", + "GLOBAL_POINT_ID", + "LAMBDA", + "MASS_DENSITY", + "MU", + "NU", + "PRESTRAIN", + "AttrName", + "E", + "attr_name", + "lame_converter", +] diff --git a/src/liblaf/apple/common/_moduli.py b/src/liblaf/apple/common/_moduli.py new file mode 100644 index 000000000..4e8104558 --- /dev/null +++ b/src/liblaf/apple/common/_moduli.py @@ -0,0 +1,16 @@ +import torch +from jaxtyping import Float +from numpy.typing import ArrayLike +from torch import Tensor + + +def lame_converter( + E: Float[ArrayLike, "..."], nu: Float[ArrayLike, "..."] +) -> tuple[Float[Tensor, "..."], Float[Tensor, "..."]]: + E: Float[Tensor, " ..."] = torch.as_tensor(E) + nu: Float[Tensor, " ..."] = torch.as_tensor(nu) + la: Float[Tensor, " ..."] = torch.as_tensor( + E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu)) + ) + mu: Float[Tensor, " ..."] = torch.as_tensor(E / (2.0 * (1.0 + nu))) + return la, mu diff --git a/src/liblaf/apple/common/_potential_name.py b/src/liblaf/apple/common/_potential_name.py new file mode 100644 index 000000000..6acc43151 --- /dev/null +++ b/src/liblaf/apple/common/_potential_name.py @@ -0,0 +1,16 @@ +from collections import Counter +from typing import Any + +import attrs + +counter: Counter[str] = Counter() + + +def _default_name(self: Any) -> str: + cls_name: str = type(self).__name__ + count: int = counter[cls_name] + counter[cls_name] += 1 + return f"{cls_name}{count}" + + +DEFAULT_POTENTIAL_NAME = attrs.Factory(_default_name, takes_self=True) diff --git a/src/liblaf/apple/common/attr_name.py b/src/liblaf/apple/common/attr_name.py new file mode 100644 index 000000000..dc3a02c17 --- /dev/null +++ b/src/liblaf/apple/common/attr_name.py @@ -0,0 +1,56 @@ +import enum +from typing import Self + + +class AttrName(enum.StrEnum): + vtk: str + ACTIVATION = enum.auto() + ACTIVATION_INV = enum.auto() + DISPLACEMENT = enum.auto() + E = enum.auto() + FIXED_MASK = enum.auto() + FIXED_VALUE = enum.auto() + FORCE = enum.auto() + FRACTION = enum.auto() + GLOBAL_POINT_ID = enum.auto() + LAMBDA = "lmbda" + MASS_DENSITY = enum.auto() + MU = enum.auto() + NU = enum.auto() + PRESTRAIN = enum.auto() + + @classmethod + def to_vtk(cls, name: str) -> str: + try: + name: Self = cls(name) + except ValueError: + return name + else: + return name.vtk + + +ACTIVATION = AttrName.ACTIVATION +ACTIVATION_INV = AttrName.ACTIVATION_INV +DISPLACEMENT = AttrName.DISPLACEMENT +E = AttrName.E +FIXED_MASK = AttrName.FIXED_MASK +FIXED_VALUE = AttrName.FIXED_VALUE +FORCE = AttrName.FORCE +FRACTION = AttrName.FRACTION +GLOBAL_POINT_ID = AttrName.GLOBAL_POINT_ID +LAMBDA = AttrName.LAMBDA +MASS_DENSITY = AttrName.MASS_DENSITY +MU = AttrName.MU +NU = AttrName.NU +PRESTRAIN = AttrName.PRESTRAIN + + +def snake_to_pascal(s: str) -> str: + return s.title().replace("_", "") + + +for name in AttrName: + name.vtk = snake_to_pascal(name.value) +LAMBDA.vtk = "lambda" +MU.vtk = "mu" +NU.vtk = "nu" diff --git a/src/liblaf/apple/constants/__init__.py b/src/liblaf/apple/constants/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/constants/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/constants/__init__.pyi b/src/liblaf/apple/constants/__init__.pyi deleted file mode 100644 index b4534c457..000000000 --- a/src/liblaf/apple/constants/__init__.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from ._array_names import ( - ACTIVATION, - DIRICHLET_MASK, - DIRICHLET_VALUE, - LAMBDA, - LENGTH, - MASS, - MU, - MUSCLE_FRACTION, - POINT_ID, - PRESTRAIN, - STIFFNESS, -) - -__all__ = [ - "ACTIVATION", - "DIRICHLET_MASK", - "DIRICHLET_VALUE", - "LAMBDA", - "LENGTH", - "MASS", - "MU", - "MUSCLE_FRACTION", - "POINT_ID", - "PRESTRAIN", - "STIFFNESS", -] diff --git a/src/liblaf/apple/constants/_array_names.py b/src/liblaf/apple/constants/_array_names.py deleted file mode 100644 index 57cbd3f69..000000000 --- a/src/liblaf/apple/constants/_array_names.py +++ /dev/null @@ -1,16 +0,0 @@ -# PyVista / VTK -LENGTH = "Length" - -# common -DIRICHLET_MASK = "IsDirichlet" -DIRICHLET_VALUE = "DirichletValue" -POINT_ID = "PointId" - -# material properties -ACTIVATION = "Activation" -LAMBDA = "lambda" -MASS = "Mass" -MU = "mu" -MUSCLE_FRACTION = "MuscleFraction" -PRESTRAIN = "Prestrain" -STIFFNESS = "Stiffness" diff --git a/src/liblaf/apple/forward/__init__.py b/src/liblaf/apple/forward/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/forward/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/forward/__init__.pyi b/src/liblaf/apple/forward/__init__.pyi new file mode 100644 index 000000000..72239ea73 --- /dev/null +++ b/src/liblaf/apple/forward/__init__.pyi @@ -0,0 +1,14 @@ +from ._builder import ModelBuilder +from ._forward import Forward +from ._model import Model +from ._problem import ForwardProblem +from .dof_map import DofMap, DofMapBuilder + +__all__ = [ + "DofMap", + "DofMapBuilder", + "Forward", + "ForwardProblem", + "Model", + "ModelBuilder", +] diff --git a/src/liblaf/apple/forward/_builder.py b/src/liblaf/apple/forward/_builder.py new file mode 100644 index 000000000..4a0593224 --- /dev/null +++ b/src/liblaf/apple/forward/_builder.py @@ -0,0 +1,37 @@ +import attrs +import pyvista as pv + +from liblaf.apple.collision import Collision, CollisionBuilder +from liblaf.apple.warp.model import WarpModel, WarpModelAdapter, WarpPotential + +from ._model import Model +from .dof_map import DofMap, DofMapBuilder + + +@attrs.define +class ModelBuilder: + collision: CollisionBuilder | None = attrs.field(default=None) + dof: DofMapBuilder = attrs.field(factory=DofMapBuilder) + potentials: list[WarpPotential] = attrs.field(factory=list) + + def add_fixed(self, obj: pv.DataSet) -> None: + self.dof.add_fixed(obj) + + def add_potential(self, potential: WarpPotential) -> None: + self.potentials.append(potential) + + def add_vertices(self, obj: pv.DataSet) -> None: + self.dof.add_vertices(obj) + + def finalize(self) -> Model: + collision: Collision | None = None + if self.collision is not None: + collision: Collision = self.collision.finalize() + dof_map: DofMap = self.dof.finalize() + warp_model: WarpModel = WarpModel( + {potential.name: potential for potential in self.potentials} + ) + warp_model_adapter: WarpModelAdapter = WarpModelAdapter(warp_model) + return Model( + dof_map=dof_map, warp_model=warp_model_adapter, collision=collision + ) diff --git a/src/liblaf/apple/forward/_forward.py b/src/liblaf/apple/forward/_forward.py new file mode 100644 index 000000000..889fdd5a3 --- /dev/null +++ b/src/liblaf/apple/forward/_forward.py @@ -0,0 +1,65 @@ +import functools +import logging + +import attrs +from jaxtyping import Float +from liblaf.peach.optim import Optimizer +from torch import Tensor + +from ._model import Model +from ._problem import ForwardProblem + +type Free = Float[Tensor, " free"] +type Full = Float[Tensor, "points dim"] + +logger: logging.Logger = logging.getLogger(__name__) + + +@attrs.define +class Forward: + def default_optimizer( + self, *, max_steps: int = 5000, atol: float = 0.0, rtol: float = 5e-4 + ) -> Optimizer: + from liblaf.peach.optim import Pncg + + # max_step_norm: float = torch.inf + # if self.model.collision is not None: + # max_step_norm: float = 0.5 * self.model.collision.potential.dhat + criteria: Pncg.ConvergenceCriteria = Pncg.ConvergenceCriteria( + max_steps=max_steps, + atol_primary=atol, + rtol_primary=rtol, + atol_secondary=atol, + rtol_secondary=rtol, + ) + line_search: Pncg.LineSearch = Pncg.LineSearch() + return Pncg(criteria=criteria, line_search=line_search) + + def _default_state(self) -> Model.State: + return self.model.init() + + model: Model + optimizer: Optimizer = attrs.field( + default=attrs.Factory(default_optimizer, takes_self=True) + ) + state: Model.State = attrs.field( + default=attrs.Factory(_default_state, takes_self=True) + ) + + last_solution: Optimizer.Solution | None = None + + @property + def free(self) -> Free: + return self.model.dof_map.to_free(self.state.u) + + @functools.cached_property + def problem(self) -> ForwardProblem: + return ForwardProblem(model=self.model) + + def step(self) -> Optimizer.Solution: + solution: Optimizer.Solution = self.optimizer.minimize( + self.problem, self.state, self.free + ) + self.last_solution = solution + logger.info(solution) + return solution diff --git a/src/liblaf/apple/forward/_model.py b/src/liblaf/apple/forward/_model.py new file mode 100644 index 000000000..58395d29b --- /dev/null +++ b/src/liblaf/apple/forward/_model.py @@ -0,0 +1,130 @@ +from collections.abc import Mapping + +import attrs +import torch +import warp as wp +from jaxtyping import Float +from torch import Tensor + +from liblaf.apple.collision import Collision +from liblaf.apple.torch.utils import method_with_device +from liblaf.apple.warp.model import WarpModelAdapter + +from .dof_map import DofMap + +type Full = Float[Tensor, "points dim"] +type Scalar = Float[Tensor, ""] + + +@attrs.define +class Model: + @attrs.define + class State: + u: Full + collision: Collision.State | None = None + + dof_map: DofMap + warp_model: WarpModelAdapter + collision: Collision | None = None + device: torch.device = attrs.field(factory=torch.get_default_device) + + @property + def dim(self) -> int: + return self.dof_map.dim + + @property + def n_fixed(self) -> int: + return self.dof_map.n_fixed + + @property + def n_free(self) -> int: + return self.dof_map.n_free + + @property + def n_full(self) -> int: + return self.dof_map.n_full + + @property + def n_points(self) -> int: + return self.dof_map.n_points + + def get_materials(self) -> dict[str, dict[str, Tensor]]: + return self.warp_model.get_materials() + + def set_materials( + self, materials: Mapping[str, Mapping[str, wp.array | Tensor]] + ) -> None: + self.warp_model.set_materials(materials) + + def require_grad(self, materials: Mapping[str, Mapping[str, bool]]) -> None: + self.warp_model.require_grad(materials) + + @method_with_device + def init(self) -> State: + u_full: Full = self.dof_map.to_full(torch.zeros((self.n_free,))) + state: Model.State = self.State(u=u_full) + if self.collision is not None: + state.collision = self.collision.init() + return state + + @method_with_device + def max_step_size(self, state: State, p: Full) -> Scalar: + if self.collision is None: + return torch.ones((), dtype=state.u.dtype) + assert state.collision is not None + return self.collision.max_step_size(state.collision, state.u, p) + + @method_with_device + def update(self, state: State, u: Full) -> None: + state.u.copy_(u) + if self.collision is not None: + assert state.collision is not None + self.collision.update(state.collision, u) + + @method_with_device + def fun(self, state: State) -> Scalar: + output: Scalar = self.warp_model.fun(state.u) + if self.collision is not None: + assert state.collision is not None + output += self.collision.fun(state.collision, state.u) + return output + + @method_with_device + def grad(self, state: State) -> Full: + output: Full = torch.zeros_like(state.u) + self.warp_model.grad(state.u, output) + if self.collision is not None: + assert state.collision is not None + self.collision.grad(state.collision, state.u, output) + return output + + @method_with_device + def hess_diag(self, state: State) -> Full: + output: Full = torch.zeros_like(state.u) + self.warp_model.hess_diag(state.u, output) + if self.collision is not None: + assert state.collision is not None + self.collision.hess_diag(state.collision, state.u, output) + return output + + @method_with_device + def hess_prod(self, state: State, p: Full) -> Full: + output: Full = torch.zeros_like(state.u) + self.warp_model.hess_prod(state.u, p, output) + if self.collision is not None: + assert state.collision is not None + self.collision.hess_prod(state.collision, state.u, p, output) + return output + + @method_with_device + def hess_quad(self, state: State, p: Full) -> Scalar: + output: Scalar = self.warp_model.hess_quad(state.u, p) + if self.collision is not None: + assert state.collision is not None + output += self.collision.hess_quad(state.collision, state.u, p) + return output + + def mixed_derivative_prod(self, state: State, p: Full) -> Full: + output: Full = torch.zeros_like(state.u) + self.warp_model.mixed_derivative_prod(state.u, p) + return output diff --git a/src/liblaf/apple/forward/_problem.py b/src/liblaf/apple/forward/_problem.py new file mode 100644 index 000000000..5f09b9855 --- /dev/null +++ b/src/liblaf/apple/forward/_problem.py @@ -0,0 +1,70 @@ +from typing import override + +import attrs +import torch +from jaxtyping import Float +from liblaf.peach.optim import Problem +from torch import Tensor + +from liblaf.apple.torch.utils import method_with_device + +from ._model import Model + +type Free = Float[Tensor, " free"] +type Full = Float[Tensor, "points dim"] +type Scalar = Float[Tensor, ""] + + +@attrs.define +class ForwardProblem(Problem[Model.State]): + type State = Model.State + + model: Model + + @property + def device(self) -> torch.device: + return self.model.device + + @method_with_device + @override + def max_step_size(self, state: State, p: Free) -> Scalar: + p_full: Full = self.model.dof_map.to_full_grad(p) + return self.model.max_step_size(state, p_full) + + @method_with_device + @override + def update(self, state: State, u: Free) -> None: + u_full: Full = self.model.dof_map.to_full(u) + self.model.update(state, u_full) + + @method_with_device + @override + def fun(self, state: State) -> Scalar: + output: Scalar = self.model.fun(state) + return output + + @method_with_device + @override + def grad(self, state: State) -> Free: + grad_full: Full = self.model.grad(state) + grad_free: Free = self.model.dof_map.to_free_grad(grad_full) + return grad_free + + @method_with_device + @override + def hess_diag(self, state: State) -> Free: + H_diag_full: Full = self.model.hess_diag(state) + return self.model.dof_map.to_free_hess_diag(H_diag_full) + + @method_with_device + @override + def hess_prod(self, state: State, p: Free) -> Free: + p_full: Full = self.model.dof_map.to_full_grad(p) + Hp_full: Full = self.model.hess_prod(state, p_full) + return self.model.dof_map.to_free_grad(Hp_full) + + @method_with_device + @override + def hess_quad(self, state: State, p: Free) -> Scalar: + p_full: Full = self.model.dof_map.to_full_grad(p) + return self.model.hess_quad(state, p_full) diff --git a/src/liblaf/apple/forward/dof_map/__init__.py b/src/liblaf/apple/forward/dof_map/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/forward/dof_map/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/forward/dof_map/__init__.pyi b/src/liblaf/apple/forward/dof_map/__init__.pyi new file mode 100644 index 000000000..b719d5dfb --- /dev/null +++ b/src/liblaf/apple/forward/dof_map/__init__.pyi @@ -0,0 +1,4 @@ +from ._builder import DofMapBuilder +from ._dof_map import DofMap + +__all__ = ["DofMap", "DofMapBuilder"] diff --git a/src/liblaf/apple/forward/dof_map/_builder.py b/src/liblaf/apple/forward/dof_map/_builder.py new file mode 100644 index 000000000..96b806364 --- /dev/null +++ b/src/liblaf/apple/forward/dof_map/_builder.py @@ -0,0 +1,70 @@ +import attrs +import numpy as np +import pyvista as pv +import torch +from jaxtyping import Bool, Float, Integer +from torch import Tensor + +from liblaf.apple.common import FIXED_MASK, FIXED_VALUE, GLOBAL_POINT_ID + +from ._dof_map import DofMap + + +@attrs.define +class DofMapBuilder: + dim: int = attrs.field(default=3) + + def _default_fixed_mask(self) -> Integer[np.ndarray, "points dim"]: + return np.empty((0, self.dim), np.bool) + + def _default_full_values(self) -> Float[np.ndarray, "points dim"]: + return np.empty((0, self.dim)) + + fixed_mask: Integer[np.ndarray, "points dim"] = attrs.field( + default=attrs.Factory(_default_fixed_mask, takes_self=True) + ) + full_values: Float[np.ndarray, "points dim"] = attrs.field( + default=attrs.Factory(_default_full_values, takes_self=True) + ) + + @property + def n_points(self) -> int: + return self.fixed_mask.shape[0] + + def add_fixed(self, obj: pv.DataSet) -> None: + global_point_id: Integer[np.ndarray, " points"] = obj.point_data[ + GLOBAL_POINT_ID.vtk + ] + self.fixed_mask[global_point_id] = obj.point_data[FIXED_MASK.vtk] + self.full_values[global_point_id] = obj.point_data[FIXED_VALUE.vtk] + + def add_vertices(self, obj: pv.DataSet) -> None: + obj.point_data[GLOBAL_POINT_ID.vtk] = np.arange( + self.n_points, self.n_points + obj.n_points + ) + self.fixed_mask = np.pad( + self.fixed_mask, ((0, obj.n_points), (0, 0)), constant_values=False + ) + self.full_values = np.pad( + self.full_values, ((0, obj.n_points), (0, 0)), constant_values=0.0 + ) + + def finalize(self) -> DofMap: + fixed_mask: Bool[Tensor, "points dim"] = torch.as_tensor(self.fixed_mask) + full_values: Float[Tensor, "points dim"] = torch.as_tensor(self.full_values) + fixed_indices: Integer[Tensor, " fixed"] = torch.nonzero( + fixed_mask.flatten() + ).squeeze(dim=-1) + fixed_values: Float[Tensor, " fixed"] = torch.as_tensor( + full_values.flatten()[fixed_indices] + ) + free_indices: Integer[Tensor, " free"] = torch.nonzero( + ~fixed_mask.flatten() + ).squeeze(dim=-1) + return DofMap( + dim=self.dim, + n_points=self.n_points, + fixed_indices=fixed_indices, + fixed_values=fixed_values, + free_indices=free_indices, + ) diff --git a/src/liblaf/apple/forward/dof_map/_dof_map.py b/src/liblaf/apple/forward/dof_map/_dof_map.py new file mode 100644 index 000000000..2d7825cab --- /dev/null +++ b/src/liblaf/apple/forward/dof_map/_dof_map.py @@ -0,0 +1,75 @@ +import attrs +import torch +from jaxtyping import Float, Integer +from torch import Tensor + +type Free = Float[Tensor, " free"] +type Full = Float[Tensor, "points dim"] + + +@attrs.define +class DofMap: + n_points: int + fixed_indices: Integer[Tensor, " fixed"] + fixed_values: Float[Tensor, " fixed"] + free_indices: Integer[Tensor, " free"] + dim: int = attrs.field(default=3) + + @property + def n_fixed(self) -> int: + return self.fixed_indices.numel() + + @property + def n_free(self) -> int: + return self.free_indices.numel() + + @property + def n_full(self) -> int: + return self.n_points * self.dim + + def to_free(self, full: Full) -> Free: + free_indices: Integer[Tensor, " free"] = self.free_indices.to( + device=full.device + ) + return full.flatten()[free_indices] + + def to_free_grad(self, full: Full) -> Free: + free_indices: Integer[Tensor, " free"] = self.free_indices.to( + device=full.device + ) + return full.flatten()[free_indices] + + def to_free_hess_diag(self, full: Full) -> Free: + free_indices: Integer[Tensor, " free"] = self.free_indices.to( + device=full.device + ) + return full.flatten()[free_indices] + + def to_full(self, free: Free) -> Full: + fixed_indices: Integer[Tensor, " fixed"] = self.fixed_indices.to( + device=free.device + ) + free_indices: Integer[Tensor, " free"] = self.free_indices.to( + device=free.device + ) + fixed_values: Float[Tensor, " fixed"] = self.fixed_values.to( + device=free.device, dtype=free.dtype + ) + result: Full = torch.empty((self.n_full,), dtype=free.dtype, device=free.device) + result[fixed_indices] = fixed_values + result[free_indices] = free + return result.reshape((self.n_points, self.dim)) + + def to_full_grad(self, grad_free: Free) -> Full: + fixed_indices: Integer[Tensor, " fixed"] = self.fixed_indices.to( + device=grad_free.device + ) + free_indices: Integer[Tensor, " free"] = self.free_indices.to( + device=grad_free.device + ) + result: Full = torch.empty( + (self.n_full,), dtype=grad_free.dtype, device=grad_free.device + ) + result[fixed_indices] = 0.0 + result[free_indices] = grad_free + return result.reshape((self.n_points, self.dim)) diff --git a/src/liblaf/apple/inverse/__init__.py b/src/liblaf/apple/inverse/__init__.py index 97d0a5864..26eeb22d8 100644 --- a/src/liblaf/apple/inverse/__init__.py +++ b/src/liblaf/apple/inverse/__init__.py @@ -1,4 +1,5 @@ -import lazy_loader as lazy +from lazy_loader import attach_stub -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/inverse/__init__.pyi b/src/liblaf/apple/inverse/__init__.pyi index 32be36c1b..239589499 100644 --- a/src/liblaf/apple/inverse/__init__.pyi +++ b/src/liblaf/apple/inverse/__init__.pyi @@ -1,3 +1,3 @@ -from ._inverse import Inverse +from ._diff_forward import DifferentiableForward -__all__ = ["Inverse"] +__all__ = ["DifferentiableForward"] diff --git a/src/liblaf/apple/inverse/_diff_forward.py b/src/liblaf/apple/inverse/_diff_forward.py new file mode 100644 index 000000000..ca3431594 --- /dev/null +++ b/src/liblaf/apple/inverse/_diff_forward.py @@ -0,0 +1,161 @@ +import logging +from collections.abc import Mapping +from typing import Any, cast, override + +import attrs +import optree +import torch +from jaxtyping import Float +from liblaf.peach.linalg import FallbackSolver, LinearSolver +from liblaf.peach.optim import Optimizer +from torch import Tensor +from torch.autograd import Function +from torch.autograd.function import once_differentiable + +from liblaf.apple.forward import Forward, Model + +type Free = Float[Tensor, " free"] +type Full = Float[Tensor, "points dim"] + +logger: logging.Logger = logging.getLogger(__name__) + + +@attrs.define +class DifferentiableForward: + __wrapped__: Forward + adjoint_solver: LinearSolver = attrs.field(factory=FallbackSolver) + last_adjoint_solution: LinearSolver.Solution | None = None + + @property + def last_solution(self) -> Optimizer.Solution | None: + return self.__wrapped__.last_solution + + @property + def model(self) -> Model: + return self.__wrapped__.model + + @property + def state(self) -> Model.State: + return self.__wrapped__.state + + def adjoint_solve(self, u_grad: Full) -> LinearSolver.Solution: + u_grad: Free = self.model.dof_map.to_free_grad(u_grad) + problem: _AdjointProblem = _AdjointProblem( + b=-u_grad, model=self.model, model_state=self.state + ) + if ( + self.last_adjoint_solution is not None + and self.last_adjoint_solution.success + ): + params: Free = self.last_adjoint_solution.params + else: + params: Free = torch.zeros_like(u_grad) + solution: LinearSolver.Solution = self.adjoint_solver.solve(problem, params) + self.last_adjoint_solution = solution + logger.info(solution) + return solution + + def forward(self, materials: Mapping[str, Mapping[str, Tensor]]) -> Full: + leaves, spec = optree.tree_flatten(cast("Any", materials)) + return _DifferentiableForward.apply(self, spec, *leaves) + + def step(self) -> Optimizer.Solution: + return self.__wrapped__.step() + + +@attrs.define +class _AdjointProblem: + def _default_preconditioner(self) -> Free: + H_diag: Full = self.model.hess_diag(self.model_state) + H_diag: Free = self.model.dof_map.to_free_hess_diag(H_diag) + H_diag: Free = H_diag.abs() + return H_diag.reciprocal() + + b: Free + model: Model + model_state: Model.State + _preconditioner: Free = attrs.field( + default=attrs.Factory(_default_preconditioner, takes_self=True) + ) + + def matvec(self, p_free: Free) -> Free: + p_full: Full = self.model.dof_map.to_full_grad(p_free) + output_full: Full = self.model.hess_prod(self.model_state, p_full) + return self.model.dof_map.to_free_grad(output_full) + + def rmatvec(self, p_free: Free) -> Free: + return self.matvec(p_free) + + def precondition(self, p_free: Free) -> Free: + return self._preconditioner * p_free + + def rprecondition(self, p_free: Free) -> Free: + return self.precondition(p_free) + + def preconditioner(self, p_free: Free) -> Free: + return self.precondition(p_free) + + def rpreconditioner(self, p_free: Free) -> Free: + return self.rprecondition(p_free) + + +class FunctionCtx(torch.autograd.function.FunctionCtx): + needs_input_grad: tuple[bool, ...] + saved_tensors: tuple[Tensor, ...] + forward: DifferentiableForward + spec: optree.PyTreeSpec + + +class _DifferentiableForward(Function): + @staticmethod + @override + def forward( + forward: DifferentiableForward, spec: optree.PyTreeSpec, *args: Tensor + ) -> Tensor: + materials: dict[str, dict[str, Tensor]] = cast( + "dict[str, dict[str, Tensor]]", spec.unflatten(args) + ) + forward.model.set_materials(materials) + forward.step() + return forward.state.u + + @staticmethod + @override + def setup_context( + ctx: FunctionCtx, inputs: tuple[Any, ...], output: Tensor + ) -> None: + forward, spec, *args = inputs + ctx.forward = forward + ctx.spec = spec + ctx.save_for_backward(*args) + + @staticmethod + @once_differentiable + @override + def backward(ctx: FunctionCtx, grad_output: Tensor) -> tuple[Tensor | None, ...]: + original_materials: dict[str, dict[str, Tensor]] = ( + ctx.forward.model.get_materials() + ) + try: + leaves: list[Tensor] = [ + leaf.detach().requires_grad_(needs_grad) + for leaf, needs_grad in zip( + ctx.saved_tensors, ctx.needs_input_grad[2:], strict=True + ) + ] + tmp_materials: dict[str, dict[str, Tensor]] = cast( + "dict[str, dict[str, Tensor]]", ctx.spec.unflatten(leaves) + ) + ctx.forward.model.set_materials(tmp_materials) + solution: LinearSolver.Solution = ctx.forward.adjoint_solve(grad_output) + p: Free = solution.params + p: Full = ctx.forward.model.dof_map.to_full_grad(p) + result_materials: dict[str, dict[str, Tensor]] = ( + ctx.forward.model.get_materials() + ) + leaves: list[Tensor] = optree.tree_leaves(cast("Any", result_materials)) + ctx.forward.model.mixed_derivative_prod(ctx.forward.state, p) + grads: list[Tensor | None] = [leaf.grad for leaf in leaves] + finally: + ctx.forward.model.set_materials(original_materials) + return (None, None, *grads) diff --git a/src/liblaf/apple/inverse/_inverse.py b/src/liblaf/apple/inverse/_inverse.py deleted file mode 100644 index 8e94c1cac..000000000 --- a/src/liblaf/apple/inverse/_inverse.py +++ /dev/null @@ -1,230 +0,0 @@ -from __future__ import annotations - -import abc -import logging -import operator -from collections.abc import Callable, Iterable, Mapping - -import attrs -import equinox as eqx -import jax -import jax.numpy as jnp -from jaxtyping import Array, Bool, Float -from liblaf.peach import tree -from liblaf.peach.constraints import Constraint -from liblaf.peach.linalg import ( - CompositeSolver, - JaxCG, - LinearSolver, - LinearSystem, - ScipyMinRes, -) -from liblaf.peach.optim import PNCG, Callback, Objective, Optimizer, ScipyOptimizer - -from liblaf import peach -from liblaf.apple.model import Forward, Model - -from ._types import Aux, Params - -type EnergyParams = Mapping[str, Array] -type Free = Float[Array, " free"] -type Full = Float[Array, "points dim"] -type ModelParams = Mapping[str, EnergyParams] -type Scalar = Float[Array, ""] - - -logger: logging.Logger = logging.getLogger(__name__) - - -@tree.define -class Inverse[ParamsT: Params, AuxT: Aux](abc.ABC): - from ._types import Aux, Params - - def default_adjoint_solver( - self, - *, - jit: bool = True, - rtol: float = 1e-3, - rtol_primary: float = 1e-5, - timer: bool = True, - ) -> LinearSolver: - cg_max_steps: int = max(1000, int(jnp.ceil(5 * jnp.sqrt(self.model.n_free)))) - minres_max_steps: int = max( - 1000, int(jnp.ceil(10 * jnp.sqrt(self.model.n_free))) - ) - if peach.cuda.is_available(): - from liblaf.peach.linalg import CupyMinRes - - return CompositeSolver( - [ - JaxCG(max_steps=cg_max_steps, rtol=rtol, rtol_primary=rtol_primary), - CupyMinRes( - max_steps=minres_max_steps, rtol=rtol, rtol_primary=rtol_primary - ), - ], - jit=jit, - timer=timer, - ) - return CompositeSolver( - [ - JaxCG(max_steps=cg_max_steps, rtol=rtol, rtol_primary=rtol_primary), - ScipyMinRes(max_steps=minres_max_steps, rtol=rtol), - ], - jit=jit, - timer=timer, - ) - - forward: Forward - adjoint_solver: LinearSolver = tree.field( - default=attrs.Factory(default_adjoint_solver, takes_self=True), kw_only=True - ) - optimizer: Optimizer = tree.field( - factory=lambda: ScipyOptimizer(method="L-BFGS-B", tol=1e-5), kw_only=True - ) - - adjoint_vector: Free = tree.array(default=None, init=False, kw_only=True) - last_adjoint_success: Bool[Array, ""] = tree.array( - default=False, init=False, kw_only=True - ) - last_forward_success: Bool[Array, ""] = tree.array( - default=False, init=False, kw_only=True - ) - - @property - def model(self) -> Model: - return self.forward.model - - def adjoint(self, u: Full, dLdu: Full) -> Full: - solution: LinearSolver.Solution = self.adjoint_inner(u, dLdu) - if solution.success: - logger.info("Adjoint success: %r", solution.stats) - else: - logger.warning("Adjoint fail: %r", solution) - return self.model.to_full(solution.params, 0.0) - - def adjoint_inner(self, u: Full, dLdu: Full) -> LinearSolver.Solution: - u_free: Free = self.model.to_free(u) - preconditioner: Free = jnp.reciprocal(self.model.hess_diag(u_free)) - - @jax.custom_jvp - def matvec(p_free: Free) -> Free: - return self.model.hess_prod(u_free, p_free) - - @matvec.defjvp - def matvec_jvp( - primals: tuple[Free,], tangents: tuple[Free,] - ) -> tuple[Free, Free]: - (p_free,) = primals - (dp_free,) = tangents - Hp: Free = matvec(p_free) - dHp: Free = matvec(dp_free) - return Hp, dHp - - def preconditioner_fn(p_free: Free) -> Free: - return preconditioner * p_free - - system = LinearSystem( - matvec=matvec, - b=-self.model.to_free(dLdu), - rmatvec=matvec, - preconditioner=preconditioner_fn, - rpreconditioner=preconditioner_fn, - ) - params: Free = ( - self.adjoint_vector if self.last_adjoint_success else jnp.zeros_like(u_free) - ) - # params: Free = jnp.zeros_like(u_free) - self.model.frozen = True # make jax.jit happy - solution: LinearSolver.Solution = self.adjoint_solver.solve(system, params) - # if not solution.success and self.last_adjoint_success: - # params = jnp.zeros_like(u_free) - # solution = self.adjoint_solver.solve(system, params) - self.model.frozen = False - self.adjoint_vector = solution.params - self.last_adjoint_success = jnp.asarray( - solution.success, self.last_adjoint_success.dtype - ) - return solution - - def fun(self, params: ParamsT) -> tuple[Scalar, AuxT]: - model_params: ModelParams = self.make_params(params) - u_full: Full = self._forward(model_params) - return self.loss(u_full, model_params) - - def grad(self, params: ParamsT) -> tuple[ParamsT, AuxT]: - aux: AuxT - grad: ParamsT - _loss, grad, aux = self.value_and_grad(params) - return grad, aux - - @abc.abstractmethod - def loss(self, u: Full, params: ModelParams) -> tuple[Scalar, AuxT]: - raise NotImplementedError - - @eqx.filter_jit - def loss_and_grad( - self, u: Full, params: ModelParams - ) -> tuple[Scalar, Full, ModelParams, AuxT]: - loss: Scalar - aux: AuxT - dLdu: Full - dLdq: ModelParams - (loss, aux), (dLdu, dLdq) = jax.value_and_grad( - self.loss, argnums=(0, 1), has_aux=True - )(u, params) - return loss, dLdu, dLdq, aux - - @abc.abstractmethod - def make_params(self, params: ParamsT) -> ModelParams: - raise NotImplementedError - - def solve( - self, - params: ParamsT, - *, - constraints: Iterable[Constraint] = (), - callback: Callback | None = None, - ) -> Optimizer.Solution: - objective = Objective(grad=self.grad, value_and_grad=self.value_and_grad) - optimizer_solution: Optimizer.Solution = self.optimizer.minimize( - objective, params, constraints=constraints, callback=callback - ) - if not optimizer_solution.success: - logger.warning("Inverse fail: %r", optimizer_solution) - return optimizer_solution - - def value_and_grad(self, params: ParamsT) -> tuple[Scalar, ParamsT, AuxT]: - model_params: ModelParams - model_params_vjp: Callable[[ModelParams], tuple[ParamsT]] - model_params, model_params_vjp = jax.vjp(self.make_params, params) - u_full: Full = self._forward(model_params) - loss: Scalar - dLdu: Full - dLdq: ModelParams - aux: AuxT - loss, dLdu, dLdq, aux = self.loss_and_grad(u_full, model_params) - p: Full = self.adjoint(u_full, dLdu) - prod: ModelParams = self.model.mixed_derivative_prod(u_full, p) - model_params_grad: ModelParams = jax.tree.map(operator.add, dLdq, prod) - grad: ParamsT - (grad,) = model_params_vjp(model_params_grad) - return loss, grad, aux - - def _forward( - self, model_params: ModelParams, *, callback: Callback | None = None - ) -> Full: - self._forward_inner(model_params, callback=callback) - return self.model.u_full - - def _forward_inner( - self, model_params: ModelParams, *, callback: Callback | None = None - ) -> Optimizer.Solution: - self.model.update_params(model_params) - if not self.last_forward_success: - self.model.u_free = jnp.zeros((self.model.n_free,)) - # self.model.u_free = jnp.zeros((self.model.n_free,)) - solution: PNCG.Solution = self.forward.step(callback=callback) - self.last_forward_success = jnp.asarray( - solution.success, self.last_forward_success.dtype - ) - return solution diff --git a/src/liblaf/apple/inverse/_types.py b/src/liblaf/apple/inverse/_types.py deleted file mode 100644 index 39c1d16e8..000000000 --- a/src/liblaf/apple/inverse/_types.py +++ /dev/null @@ -1,11 +0,0 @@ -from liblaf.peach import tree - - -@tree.define -class Aux: - pass - - -@tree.define -class Params: - pass diff --git a/src/liblaf/apple/jax/__init__.py b/src/liblaf/apple/jax/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/__init__.pyi b/src/liblaf/apple/jax/__init__.pyi deleted file mode 100644 index 8e2606d3b..000000000 --- a/src/liblaf/apple/jax/__init__.pyi +++ /dev/null @@ -1,26 +0,0 @@ -from . import energies, fem, model, testing -from .energies import Gravity, MassSpring, MassSpringPrestrain, make_activation -from .fem import Element, Geometry, GeometryTetra, GeometryTriangle, Region, Scheme -from .model import Dirichlet, DirichletBuilder, JaxEnergy, JaxModel, JaxModelBuilder - -__all__ = [ - "Dirichlet", - "DirichletBuilder", - "Element", - "Geometry", - "GeometryTetra", - "GeometryTriangle", - "Gravity", - "JaxEnergy", - "JaxModel", - "JaxModelBuilder", - "MassSpring", - "MassSpringPrestrain", - "Region", - "Scheme", - "energies", - "fem", - "make_activation", - "model", - "testing", -] diff --git a/src/liblaf/apple/jax/energies/__init__.py b/src/liblaf/apple/jax/energies/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/energies/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/energies/__init__.pyi b/src/liblaf/apple/jax/energies/__init__.pyi deleted file mode 100644 index 431151b2e..000000000 --- a/src/liblaf/apple/jax/energies/__init__.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from ._activation import make_activation -from ._gravity import Gravity -from ._mass_spring import MassSpring -from ._mass_spring_prestrain import MassSpringPrestrain - -__all__ = ["Gravity", "MassSpring", "MassSpringPrestrain", "make_activation"] diff --git a/src/liblaf/apple/jax/energies/_activation.py b/src/liblaf/apple/jax/energies/_activation.py deleted file mode 100644 index 987409145..000000000 --- a/src/liblaf/apple/jax/energies/_activation.py +++ /dev/null @@ -1,18 +0,0 @@ -import jax -import jax.numpy as jnp -from jaxtyping import Array, Float - - -@jax.jit -def make_activation(activation: Float[Array, "cells 6"]) -> Float[Array, "cells 3 3"]: - A: Float[Array, "cells 3 3"] = jnp.zeros((activation.shape[0], 3, 3)) - A = A.at[:, 0, 0].set(1.0 + activation[:, 0]) - A = A.at[:, 1, 1].set(1.0 + activation[:, 1]) - A = A.at[:, 2, 2].set(1.0 + activation[:, 2]) - A = A.at[:, 0, 1].set(activation[:, 3]) - A = A.at[:, 1, 0].set(activation[:, 3]) - A = A.at[:, 0, 2].set(activation[:, 4]) - A = A.at[:, 2, 0].set(activation[:, 4]) - A = A.at[:, 1, 2].set(activation[:, 5]) - A = A.at[:, 2, 1].set(activation[:, 5]) - return A diff --git a/src/liblaf/apple/jax/energies/_gravity.py b/src/liblaf/apple/jax/energies/_gravity.py deleted file mode 100644 index 3dbb7b4e0..000000000 --- a/src/liblaf/apple/jax/energies/_gravity.py +++ /dev/null @@ -1,42 +0,0 @@ -from typing import Self, override - -import jax.numpy as jnp -import pyvista as pv -from jaxtyping import Array, ArrayLike, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.constants import MASS, POINT_ID -from liblaf.apple.jax.model import JaxEnergy - -type Index = Integer[Array, " points"] -type Scalar = Float[Array, ""] -type Updates = tuple[Vector, Index] -type Vector = Float[Array, "points dim"] - - -@tree.define -class Gravity(JaxEnergy): - gravity: Float[Array, " dim"] - indices: Integer[Array, " points"] - mass: Float[Array, " points"] - - @classmethod - def from_pyvista( - cls, obj: pv.DataSet, gravity: Float[ArrayLike, " dim"] | None = None - ) -> Self: - if gravity is None: - gravity = jnp.asarray([0.0, -9.81, 0.0]) - return cls( - gravity=jnp.asarray(gravity), - indices=jnp.asarray(obj.point_data[POINT_ID]), - mass=jnp.asarray(obj.point_data[MASS]), - ) - - @override - def fun(self, u: Vector) -> Scalar: - u = u[self.indices] - return -jnp.vdot(self.mass, jnp.vecdot(u, self.gravity, axis=-1)) - - @override - def hess_diag(self, u: Vector) -> Updates: - return jnp.zeros_like(u[self.indices]), self.indices diff --git a/src/liblaf/apple/jax/energies/_mass_spring.py b/src/liblaf/apple/jax/energies/_mass_spring.py deleted file mode 100644 index 49bd2a0ba..000000000 --- a/src/liblaf/apple/jax/energies/_mass_spring.py +++ /dev/null @@ -1,81 +0,0 @@ -import logging -from typing import Self, override - -import einops -import jax.numpy as jnp -import numpy as np -import pyvista as pv -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.constants import LENGTH, POINT_ID, STIFFNESS -from liblaf.apple.jax.model import JaxEnergy - -logger: logging.Logger = logging.getLogger(__name__) - -type Index = Integer[Array, " points"] -type Scalar = Float[Array, ""] -type Updates = tuple[Vector, Index] -type Vector = Float[Array, "points dim"] - - -@tree.define -class MassSpring(JaxEnergy): - edges: Integer[Array, " edges 2"] - length: Float[Array, " edges"] - points: Float[Array, "edges 2 3"] - stiffness: Float[Array, " edges"] - - @classmethod - def from_pyvista(cls, obj: pv.PolyData) -> Self: - if LENGTH not in obj.cell_data: - obj = obj.compute_cell_sizes(length=True, area=False, volume=False) # pyright: ignore[reportAssignmentType] - point_id: Integer[np.ndarray, " points"] = obj.point_data[POINT_ID] - edges: Integer[np.ndarray, "edges 2"] = obj.lines.reshape((-1, 3))[:, 1:] - length: Float[Array, " edges"] = jnp.asarray(obj.cell_data[LENGTH]) - if jnp.any(length < 0.0): - logger.warning("Length < 0") - return cls( - edges=jnp.asarray(point_id[edges]), - length=length, - points=jnp.asarray(obj.points[edges]), - stiffness=jnp.asarray(obj.cell_data[STIFFNESS]), - ) - - @property - def n_edges(self) -> int: - return self.edges.shape[0] - - @override - def fun(self, u: Vector) -> Scalar: - x: Float[Array, "edges 2 3"] = self.points + u[self.edges] - delta: Float[Array, "edges 3"] = x[:, 1, :] - x[:, 0, :] - energy: Float[Array, " edges"] = ( - 0.5 - * self.stiffness - * jnp.square(jnp.linalg.norm(delta, axis=-1) - self.length) - ) - return jnp.sum(energy) - - @override - def grad(self, u: Vector) -> Updates: - x: Float[Array, "edges 2 3"] = self.points + u[self.edges] - delta: Float[Array, "edges 3"] = x[:, 1, :] - x[:, 0, :] - length: Float[Array, " edges"] = jnp.linalg.norm(delta, axis=-1) - direction: Float[Array, "edges 3"] = ( - delta / jnp.where(length > 0, length, 1.0)[:, jnp.newaxis] - ) - force: Float[Array, "edges 3"] = ( - self.stiffness[:, jnp.newaxis] - * (length - self.length)[:, jnp.newaxis] - * direction - ) - grad: Float[Array, "edges 2 3"] = jnp.stack([-force, force], axis=1) - return grad, self.edges.flatten() - - @override - def hess_diag(self, u: Vector) -> Updates: - values: Float[Array, "edges*2 3"] = einops.repeat( - self.stiffness, "edges -> (edges i) j", i=2, j=3 - ) - return values, self.edges.flatten() diff --git a/src/liblaf/apple/jax/energies/_mass_spring_prestrain.py b/src/liblaf/apple/jax/energies/_mass_spring_prestrain.py deleted file mode 100644 index 1768fabe7..000000000 --- a/src/liblaf/apple/jax/energies/_mass_spring_prestrain.py +++ /dev/null @@ -1,40 +0,0 @@ -import logging -from typing import Self - -import jax.numpy as jnp -import numpy as np -import pyvista as pv -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.constants import LENGTH, POINT_ID, PRESTRAIN, STIFFNESS - -from ._mass_spring import MassSpring - -logger = logging.getLogger(__name__) - - -type Index = Integer[Array, " points"] -type Scalar = Float[Array, ""] -type Updates = tuple[Vector, Index] -type Vector = Float[Array, "points dim"] - - -@tree.define -class MassSpringPrestrain(MassSpring): - @classmethod - def from_pyvista(cls, obj: pv.PolyData) -> Self: - if LENGTH not in obj.cell_data: - obj = obj.compute_cell_sizes(length=True, area=False, volume=False) # pyright: ignore[reportAssignmentType] - point_id: Integer[np.ndarray, " points"] = obj.point_data[POINT_ID] - edges: Integer[np.ndarray, "edges 2"] = obj.lines.reshape((-1, 3))[:, 1:] - length: Float[Array, " edges"] = jnp.asarray(obj.cell_data[LENGTH]) - if jnp.any(length < 0.0): - logger.warning("Length < 0") - prestrain: Float[Array, " edges"] = jnp.asarray(obj.cell_data[PRESTRAIN]) - return cls( - edges=jnp.asarray(point_id[edges]), - length=length * (1.0 + prestrain), - points=jnp.asarray(obj.points[edges]), - stiffness=jnp.asarray(obj.cell_data[STIFFNESS]), - ) diff --git a/src/liblaf/apple/jax/fem/__init__.py b/src/liblaf/apple/jax/fem/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/fem/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/fem/__init__.pyi b/src/liblaf/apple/jax/fem/__init__.pyi deleted file mode 100644 index 7351fc153..000000000 --- a/src/liblaf/apple/jax/fem/__init__.pyi +++ /dev/null @@ -1,18 +0,0 @@ -from . import element, geometry, quadrature, region -from .element import Element -from .geometry import Geometry, GeometryTetra, GeometryTriangle -from .quadrature import Scheme -from .region import Region - -__all__ = [ - "Element", - "Geometry", - "GeometryTetra", - "GeometryTriangle", - "Region", - "Scheme", - "element", - "geometry", - "quadrature", - "region", -] diff --git a/src/liblaf/apple/jax/fem/element/__init__.py b/src/liblaf/apple/jax/fem/element/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/fem/element/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/fem/element/_element.py b/src/liblaf/apple/jax/fem/element/_element.py deleted file mode 100644 index 6b3c13bba..000000000 --- a/src/liblaf/apple/jax/fem/element/_element.py +++ /dev/null @@ -1,46 +0,0 @@ -import jax -import jax.numpy as jnp -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.jax.fem.quadrature import Scheme - - -@tree.define -class Element: - """Base-class for a finite element which provides methods for plotting. - - References: - 1. [felupe.Element](https://felupe.readthedocs.io/en/latest/felupe/element.html#felupe.Element) - """ - - @property - def dim(self) -> int: - return self.points.shape[1] - - @property - def n_points(self) -> int: - return self.points.shape[0] - - @property - def cells(self) -> Integer[Array, " points"]: - with jax.ensure_compile_time_eval(): - return jnp.arange(self.n_points) - - @property - def points(self) -> Float[Array, "points dim"]: - raise NotImplementedError - - @property - def quadrature(self) -> Scheme: - return None # pyright: ignore[reportReturnType] - - def function(self, coords: Float[Array, " dim"]) -> Float[Array, " points"]: - """Return the shape functions at given coordinates.""" - raise NotImplementedError - - def gradient(self, coords: Float[Array, " dim"]) -> Float[Array, "points dim"]: - return jax.jacobian(self.function)(coords) - - def hessian(self, coords: Float[Array, " dim"]) -> Float[Array, "points dim dim"]: - return jax.hessian(self.function)(coords) diff --git a/src/liblaf/apple/jax/fem/element/_tetra.py b/src/liblaf/apple/jax/fem/element/_tetra.py deleted file mode 100644 index c851768fc..000000000 --- a/src/liblaf/apple/jax/fem/element/_tetra.py +++ /dev/null @@ -1,38 +0,0 @@ -from typing import override - -import jax.numpy as jnp -from jaxtyping import Array, Float -from liblaf.peach import tree - -from liblaf.apple.jax.fem.quadrature import QuadratureTetra - -from ._element import Element - - -@tree.define -class ElementTetra(Element): - @property - @override - def points(self) -> Float[Array, "points=4 dim=3"]: - return jnp.asarray([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]], float) - - @property - @override - def quadrature(self) -> QuadratureTetra: - return QuadratureTetra.from_order(1) - - @override - def function(self, coords: Float[Array, "dim=3"]) -> Float[Array, "points=4"]: - coords = jnp.asarray(coords) - r, s, t = coords - return jnp.asarray([1.0 - r - s - t, r, s, t], float) - - @override - def gradient(self, coords: Float[Array, "dim=3"]) -> Float[Array, "points=4 dim=3"]: - return jnp.asarray([[-1, -1, -1], [1, 0, 0], [0, 1, 0], [0, 0, 1]], float) - - @override - def hessian( - self, coords: Float[Array, "dim=3"] - ) -> Float[Array, "points=4 dim=3 dim=3"]: - return jnp.zeros((4, 3, 3), float) diff --git a/src/liblaf/apple/jax/fem/geometry/__init__.py b/src/liblaf/apple/jax/fem/geometry/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/fem/geometry/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/fem/geometry/_geometry.py b/src/liblaf/apple/jax/fem/geometry/_geometry.py deleted file mode 100644 index 5aff946b6..000000000 --- a/src/liblaf/apple/jax/fem/geometry/_geometry.py +++ /dev/null @@ -1,57 +0,0 @@ -from __future__ import annotations - -import jax.numpy as jnp -import pyvista as pv -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.constants import POINT_ID -from liblaf.apple.jax.fem.element import Element - - -@tree.define -class Geometry: - mesh: pv.DataSet = tree.field() - - @classmethod - def from_pyvista(cls, mesh: pv.DataObject) -> Geometry: - from ._tetra import GeometryTetra - from ._triangle import GeometryTriangle - - if isinstance(mesh, pv.PolyData): - return GeometryTriangle.from_pyvista(mesh) - if isinstance(mesh, pv.UnstructuredGrid): - return GeometryTetra.from_pyvista(mesh) - raise NotImplementedError - - @property - def element(self) -> Element: - raise NotImplementedError - - @property - def n_cells(self) -> int: - return self.cells.shape[0] - - @property - def cell_data(self) -> pv.DataSetAttributes: - return self.mesh.cell_data - - @property - def cells(self) -> Integer[Array, "c a"]: - raise NotImplementedError - - @property - def cells_global(self) -> Integer[Array, "c a"]: - return self.point_id[self.cells] - - @property - def point_data(self) -> pv.DataSetAttributes: - return self.mesh.point_data - - @property - def point_id(self) -> Integer[Array, "p J"]: - return jnp.asarray(self.point_data[POINT_ID]) - - @property - def points(self) -> Float[Array, "p J"]: - return jnp.asarray(self.mesh.points) diff --git a/src/liblaf/apple/jax/fem/geometry/_tetra.py b/src/liblaf/apple/jax/fem/geometry/_tetra.py deleted file mode 100644 index 33c75172f..000000000 --- a/src/liblaf/apple/jax/fem/geometry/_tetra.py +++ /dev/null @@ -1,31 +0,0 @@ -from typing import Self, override - -import jax.numpy as jnp -import pyvista as pv -from jaxtyping import Array, Integer -from liblaf.peach import tree - -from liblaf.apple.jax.fem.element import ElementTetra - -from ._geometry import Geometry - - -@tree.define -class GeometryTetra(Geometry): - mesh: pv.UnstructuredGrid = tree.field() # pyright: ignore[reportIncompatibleVariableOverride] - - @override - @classmethod - def from_pyvista(cls, mesh: pv.UnstructuredGrid) -> Self: # pyright: ignore[reportIncompatibleMethodOverride] - self: Self = cls(mesh=mesh) - return self - - @property - @override - def element(self) -> ElementTetra: - return ElementTetra() - - @property - @override - def cells(self) -> Integer[Array, "c a"]: - return jnp.asarray(self.mesh.cells_dict[pv.CellType.TETRA]) # pyright: ignore[reportArgumentType] diff --git a/src/liblaf/apple/jax/fem/geometry/_triangle.py b/src/liblaf/apple/jax/fem/geometry/_triangle.py deleted file mode 100644 index 0ab0242d9..000000000 --- a/src/liblaf/apple/jax/fem/geometry/_triangle.py +++ /dev/null @@ -1,24 +0,0 @@ -from typing import Self, override - -import jax.numpy as jnp -import pyvista as pv -from jaxtyping import Array, Integer -from liblaf.peach import tree - -from ._geometry import Geometry - - -@tree.define -class GeometryTriangle(Geometry): - mesh: pv.PolyData = tree.field() # pyright: ignore[reportIncompatibleVariableOverride] - - @override - @classmethod - def from_pyvista(cls, mesh: pv.PolyData) -> Self: # pyright: ignore[reportIncompatibleMethodOverride] - mesh = mesh.triangulate() # pyright: ignore[reportAssignmentType] - self: Self = cls(mesh=mesh) - return self - - @property - def cells(self) -> Integer[Array, "c a"]: - return jnp.asarray(self.mesh.regular_faces) diff --git a/src/liblaf/apple/jax/fem/quadrature/__init__.py b/src/liblaf/apple/jax/fem/quadrature/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/fem/quadrature/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/fem/quadrature/_scheme.py b/src/liblaf/apple/jax/fem/quadrature/_scheme.py deleted file mode 100644 index 38dca6073..000000000 --- a/src/liblaf/apple/jax/fem/quadrature/_scheme.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import Self - -import felupe.quadrature -import jax.numpy as jnp -from jaxtyping import Array, Float -from liblaf.peach import tree - - -@tree.define -class Scheme: - points: Float[Array, "q J"] = tree.array() - weights: Float[Array, " q"] = tree.array() - - @classmethod - def from_felupe(cls, scheme: felupe.quadrature.Scheme) -> Self: - return cls( - points=jnp.asarray(scheme.points), weights=jnp.asarray(scheme.weights) - ) - - @property - def dim(self) -> int: - return self.points.shape[1] - - @property - def n_points(self) -> int: - return self.points.shape[0] diff --git a/src/liblaf/apple/jax/fem/quadrature/_tetra.py b/src/liblaf/apple/jax/fem/quadrature/_tetra.py deleted file mode 100644 index d50c4bec7..000000000 --- a/src/liblaf/apple/jax/fem/quadrature/_tetra.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import Self - -import felupe.quadrature -import jax.numpy as jnp -from jaxtyping import Array, Float -from liblaf.peach import tree - -from ._scheme import Scheme - - -def _default_points() -> Float[Array, "q=1 J=3"]: - return jnp.ones((1, 3)) / 4.0 - - -def _default_weights() -> Float[Array, "q=1"]: - return jnp.ones((1,)) / 6.0 - - -@tree.define -class QuadratureTetra(Scheme): - points: Float[Array, "q=1 J=3"] = tree.array(factory=_default_points) - weights: Float[Array, "q=1"] = tree.array(factory=_default_weights) - - @classmethod - def from_order(cls, order: int = 1) -> Self: - return cls.from_felupe(felupe.quadrature.Tetrahedron(order=order)) diff --git a/src/liblaf/apple/jax/fem/region/__init__.py b/src/liblaf/apple/jax/fem/region/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/fem/region/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/fem/region/_region.py b/src/liblaf/apple/jax/fem/region/_region.py deleted file mode 100644 index bd21afd48..000000000 --- a/src/liblaf/apple/jax/fem/region/_region.py +++ /dev/null @@ -1,129 +0,0 @@ -import logging -from typing import Self - -import einops -import jax.numpy as jnp -import pyvista as pv -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.jax.fem.element import Element -from liblaf.apple.jax.fem.geometry import Geometry -from liblaf.apple.jax.fem.quadrature import Scheme - -logger = logging.getLogger(__name__) - - -@tree.define -class Region: - geometry: Geometry = tree.field() - quadrature: Scheme = tree.field() - - h: Float[Array, "q a"] = tree.array(default=None) - dhdr: Float[Array, "q a J"] = tree.array(default=None) - dXdr: Float[Array, "c q J J"] = tree.array(default=None) - drdX: Float[Array, "c q J J"] = tree.array(default=None) - dV: Float[Array, "c q"] = tree.array(default=None) - dhdX: Float[Array, "c q a J"] = tree.array(default=None) - - @classmethod - def from_geometry( - cls, geometry: Geometry, *, grad: bool = False, quadrature: Scheme | None = None - ) -> Self: - if quadrature is None: - quadrature = geometry.element.quadrature - self: Self = cls(geometry=geometry, quadrature=quadrature) - if grad: - self.compute_grad() - return self - - @classmethod - def from_pyvista( - cls, - mesh: pv.DataObject, - *, - grad: bool = False, - quadrature: Scheme | None = None, - ) -> Self: - geometry: Geometry = Geometry.from_pyvista(mesh) - self: Self = cls.from_geometry(geometry, grad=grad, quadrature=quadrature) - return self - - @property - def n_cells(self) -> int: - return self.geometry.n_cells - - @property - def cells(self) -> Integer[Array, "c a"]: - return self.geometry.cells - - @property - def cells_global(self) -> Integer[Array, "c a"]: - return self.geometry.cells_global - - @property - def element(self) -> Element: - return self.geometry.element - - @property - def mesh(self) -> pv.DataSet: - return self.geometry.mesh - - @property - def point_data(self) -> pv.DataSetAttributes: - return self.geometry.point_data - - @property - def cell_data(self) -> pv.DataSetAttributes: - return self.geometry.cell_data - - @property - def points(self) -> Float[Array, "p J"]: - return self.geometry.points - - def compute_grad(self) -> None: - h: Float[Array, "q a"] = jnp.stack( - [self.element.function(q) for q in self.quadrature.points] - ) - dhdr: Float[Array, "q a J"] = jnp.stack( - [self.element.gradient(q) for q in self.quadrature.points] - ) - dXdr: Float[Array, "c q J J"] = einops.einsum( - self.points[self.cells], dhdr, "c a I, q a J -> c q I J" - ) - drdX: Float[Array, "c q J J"] = jnp.linalg.inv(dXdr) - dV: Float[Array, "c q"] = ( - jnp.linalg.det(dXdr) * self.quadrature.weights[jnp.newaxis, :] - ) - if jnp.any(dV <= 0): - logger.warning("dV <= 0") - dhdX: Float[Array, "c q a J"] = einops.einsum( - dhdr, drdX, "q a I, c q I J -> c q a J" - ) - self.h = h - self.dhdr = dhdr - self.dXdr = dXdr - self.drdX = drdX - self.dV = dV - self.dhdX = dhdX - - def deformation_gradient(self, u: Float[Array, "p J"]) -> Float[Array, "c q J J"]: - grad: Float[Array, "c q J J"] = self.gradient(u) - F: Float[Array, "c q J J"] = ( - grad + jnp.identity(3)[jnp.newaxis, jnp.newaxis, ...] - ) - return F - - def gradient( - self, u: Float[Array, " points *shape"] - ) -> Float[Array, "c q *shape J"]: - result: Float[Array, "c q *shape J"] = einops.einsum( - self.scatter(u), self.dhdX, "c a ..., c q a J -> c q ... J" - ) - return result - - def integrate(self, a: Float[Array, "c q *shape"]) -> Float[Array, " c *shape"]: - return einops.einsum(a, self.dV, "c q ..., c q -> c ...") - - def scatter(self, u: Float[Array, " points *shape"]) -> Float[Array, "c a *shape"]: - return u[self.cells_global] diff --git a/src/liblaf/apple/jax/math/__init__.py b/src/liblaf/apple/jax/math/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/math/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/math/__init__.pyi b/src/liblaf/apple/jax/math/__init__.pyi deleted file mode 100644 index de3cf1f3e..000000000 --- a/src/liblaf/apple/jax/math/__init__.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from ._norm import fro_norm_square -from ._normalize import normalize -from ._rotation import polar_rv, svd_rv - -__all__ = ["fro_norm_square", "normalize", "polar_rv", "svd_rv"] diff --git a/src/liblaf/apple/jax/math/_norm.py b/src/liblaf/apple/jax/math/_norm.py deleted file mode 100644 index 465fbc907..000000000 --- a/src/liblaf/apple/jax/math/_norm.py +++ /dev/null @@ -1,10 +0,0 @@ -from collections.abc import Sequence - -import jax.numpy as jnp -from jaxtyping import Array, Float - -type Axis = int | Sequence[int] | None - - -def fro_norm_square(x: Array, axis: Axis = None) -> Float[Array, "*batch"]: - return jnp.sum(jnp.square(x), axis=axis) diff --git a/src/liblaf/apple/jax/math/_normalize.py b/src/liblaf/apple/jax/math/_normalize.py deleted file mode 100644 index 6b06e62e4..000000000 --- a/src/liblaf/apple/jax/math/_normalize.py +++ /dev/null @@ -1,7 +0,0 @@ -import jax.numpy as jnp -from jaxtyping import Array, Float - - -def normalize(v: Float[Array, "*batch dim"]) -> Float[Array, "*batch dim"]: - norm: Float[Array, "*batch 1"] = jnp.linalg.norm(v, axis=-1, keepdims=True) - return v / jnp.where(norm == 0.0, 1.0, norm) diff --git a/src/liblaf/apple/jax/math/_rotation.py b/src/liblaf/apple/jax/math/_rotation.py deleted file mode 100644 index e734dd7b3..000000000 --- a/src/liblaf/apple/jax/math/_rotation.py +++ /dev/null @@ -1,23 +0,0 @@ -import einops -import jax.numpy as jnp -from jaxtyping import Array, Float - -type Vec3 = Float[Array, "*batch 3"] -type Mat33 = Float[Array, "*batch 3 3"] - - -def svd_rv(F: Mat33) -> tuple[Mat33, Vec3, Mat33]: - U, S, Vh = jnp.linalg.svd(F, full_matrices=True) - detU = jnp.linalg.det(U) - detV = jnp.linalg.det(Vh) - U = U.at[..., :, -1].set(U[..., :, -1] * jnp.sign(detU)[..., jnp.newaxis]) - Vh = Vh.at[..., -1, :].set(Vh[..., -1, :] * jnp.sign(detV)[..., jnp.newaxis]) - return U, S, Vh - - -def polar_rv(F: Mat33) -> tuple[Mat33, Mat33]: - U, S, Vh = svd_rv(F) - R = U @ Vh - # P = Vh.T @ S @ Vh - P = einops.einsum(Vh, S, Vh, "... j i, ... j, ... j k -> ... i k") - return R, P diff --git a/src/liblaf/apple/jax/model/__init__.py b/src/liblaf/apple/jax/model/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/model/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/model/__init__.pyi b/src/liblaf/apple/jax/model/__init__.pyi deleted file mode 100644 index b9923f4fd..000000000 --- a/src/liblaf/apple/jax/model/__init__.pyi +++ /dev/null @@ -1,14 +0,0 @@ -from . import dirichlet -from ._builder import JaxModelBuilder -from ._energy import JaxEnergy -from ._model import JaxModel -from .dirichlet import Dirichlet, DirichletBuilder - -__all__ = [ - "Dirichlet", - "DirichletBuilder", - "JaxEnergy", - "JaxModel", - "JaxModelBuilder", - "dirichlet", -] diff --git a/src/liblaf/apple/jax/model/_builder.py b/src/liblaf/apple/jax/model/_builder.py deleted file mode 100644 index 7f75f675e..000000000 --- a/src/liblaf/apple/jax/model/_builder.py +++ /dev/null @@ -1,15 +0,0 @@ -from liblaf.peach import tree - -from ._energy import JaxEnergy -from ._model import JaxModel - - -@tree.define -class JaxModelBuilder: - energies: dict[str, JaxEnergy] = tree.field(factory=dict, kw_only=True) - - def add_energy(self, energy: JaxEnergy) -> None: - self.energies[energy.id] = energy - - def finalize(self) -> JaxModel: - return JaxModel(energies=self.energies) diff --git a/src/liblaf/apple/jax/model/_energy.py b/src/liblaf/apple/jax/model/_energy.py deleted file mode 100644 index a7204fed7..000000000 --- a/src/liblaf/apple/jax/model/_energy.py +++ /dev/null @@ -1,71 +0,0 @@ -from collections.abc import Mapping - -import equinox as eqx -import jax -import jax.numpy as jnp -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.utils import IdMixin - -type EnergyParams = Mapping[str, Array] -type Index = Integer[Array, " points"] -type Scalar = Float[Array, ""] -type Updates = tuple[Vector, Index] -type Vector = Float[Array, "points dim"] - - -@tree.define -class JaxEnergy(IdMixin): - requires_grad: frozenset[str] = tree.field(default=frozenset(), kw_only=True) - - @eqx.filter_jit - def update(self, u: Vector) -> None: - pass - - def update_params(self, params: Mapping[str, Array]) -> None: - for name, value in params.items(): - setattr(self, name, value) - - def fun(self, u: Vector) -> Scalar: - raise NotImplementedError - - @eqx.filter_jit - def grad(self, u: Vector) -> Updates: - values: Vector = eqx.filter_grad(self.fun)(u) - return values, jnp.arange(u.shape[0]) - - def hess_diag(self, u: Vector) -> Updates: - raise NotImplementedError - - @eqx.filter_jit - def hess_prod(self, u: Vector, p: Vector) -> Updates: - values: Vector - _, values = jax.jvp(jax.grad(self.fun), (u,), (p,)) - return values, jnp.arange(u.shape[0]) - - @eqx.filter_jit - def hess_quad(self, u: Vector, p: Vector) -> Scalar: - values: Vector - index: Index - values, index = self.hess_prod(u, p) - return jnp.vdot(p[index], values) - - @eqx.filter_jit - def value_and_grad(self, u: Vector) -> tuple[Scalar, Updates]: - value: Scalar - grad: Vector - value, grad = jax.value_and_grad(self.fun)(u) - return value, (grad, jnp.arange(u.shape[0])) - - @eqx.filter_jit - def grad_and_hess_diag(self, u: Vector) -> tuple[Updates, Updates]: - return self.grad(u), self.hess_diag(u) - - @eqx.filter_jit - def mixed_derivative_prod(self, u: Vector, p: Vector) -> EnergyParams: - outputs: EnergyParams = { - name: getattr(self, f"mixed_derivative_prod_{name}")(u, p) - for name in self.requires_grad - } - return outputs diff --git a/src/liblaf/apple/jax/model/_model.py b/src/liblaf/apple/jax/model/_model.py deleted file mode 100644 index b3049b689..000000000 --- a/src/liblaf/apple/jax/model/_model.py +++ /dev/null @@ -1,104 +0,0 @@ -from collections.abc import Mapping - -import equinox as eqx -import jax.numpy as jnp -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -from ._energy import JaxEnergy - -type Index = Integer[Array, " N"] -type ModelParams = Mapping[str, Mapping[str, Array]] -type Scalar = Float[Array, ""] -type Updates = tuple[Vector, Index] -type Vector = Float[Array, " N"] - - -@tree.define -class JaxModel: - energies: dict[str, JaxEnergy] = tree.field(factory=dict, kw_only=True) - - def update(self, x: Vector) -> None: - for energy in self.energies.values(): - energy.update(x) - - def update_params(self, params: ModelParams) -> None: - for name, energy_params in params.items(): - self.energies[name].update_params(energy_params) - - @eqx.filter_jit - def fun(self, x: Vector) -> Scalar: - output: Scalar = jnp.zeros(()) - for energy in self.energies.values(): - output += energy.fun(x) - return output - - @eqx.filter_jit - def grad(self, x: Vector) -> Vector: - output: Vector = jnp.zeros_like(x) - for energy in self.energies.values(): - grad: Vector - index: Index - grad, index = energy.grad(x) - output = output.at[index].add(grad) - return output - - @eqx.filter_jit - def hess_diag(self, x: Vector) -> Vector: - output: Vector = jnp.zeros_like(x) - for energy in self.energies.values(): - diag: Vector - index: Index - diag, index = energy.hess_diag(x) - output = output.at[index].add(diag) - return output - - @eqx.filter_jit - def hess_prod(self, x: Vector, p: Vector) -> Vector: - output: Vector = jnp.zeros_like(x) - for energy in self.energies.values(): - prod: Vector - index: Index - prod, index = energy.hess_prod(x, p) - output = output.at[index].add(prod) - return output - - @eqx.filter_jit - def hess_quad(self, x: Vector, p: Vector) -> Scalar: - output: Scalar = jnp.zeros(()) - for energy in self.energies.values(): - output += energy.hess_quad(x, p) - return output - - @eqx.filter_jit - def mixed_derivative_prod(self, x: Vector, p: Vector) -> ModelParams: - return { - name: energy.mixed_derivative_prod(x, p) - for name, energy in self.energies.items() - } - - @eqx.filter_jit - def value_and_grad(self, x: Vector) -> tuple[Scalar, Vector]: - value: Scalar = jnp.zeros(()) - grad: Vector = jnp.zeros_like(x) - for energy in self.energies.values(): - value_i: Scalar - grad_i: Vector - value_i, (grad_i, index) = energy.value_and_grad(x) - value += value_i - grad = grad.at[index].add(grad_i) - return value, grad - - @eqx.filter_jit - def grad_and_hess_diag(self, x: Vector) -> tuple[Vector, Vector]: - grad: Vector = jnp.zeros_like(x) - hess_diag: Vector = jnp.zeros_like(x) - for energy in self.energies.values(): - grad_i: Vector - index_g: Index - hess_diag_i: Vector - index_h: Index - (grad_i, index_g), (hess_diag_i, index_h) = energy.grad_and_hess_diag(x) - grad = grad.at[index_g].add(grad_i) - hess_diag = hess_diag.at[index_h].add(hess_diag_i) - return grad, hess_diag diff --git a/src/liblaf/apple/jax/model/dirichlet/__init__.py b/src/liblaf/apple/jax/model/dirichlet/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/model/dirichlet/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/model/dirichlet/__init__.pyi b/src/liblaf/apple/jax/model/dirichlet/__init__.pyi deleted file mode 100644 index c3a3ea39a..000000000 --- a/src/liblaf/apple/jax/model/dirichlet/__init__.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from ._builder import DirichletBuilder -from ._dirichlet import Dirichlet - -__all__ = ["Dirichlet", "DirichletBuilder"] diff --git a/src/liblaf/apple/jax/model/dirichlet/_builder.py b/src/liblaf/apple/jax/model/dirichlet/_builder.py deleted file mode 100644 index be261686d..000000000 --- a/src/liblaf/apple/jax/model/dirichlet/_builder.py +++ /dev/null @@ -1,66 +0,0 @@ -from collections.abc import Sequence - -import jax.numpy as jnp -import numpy as np -import pyvista as pv -from jaxtyping import Array, ArrayLike, Bool, Float, Integer -from liblaf.peach import tree - -from liblaf.apple.constants import DIRICHLET_MASK, DIRICHLET_VALUE, POINT_ID - -from ._dirichlet import Dirichlet - - -@tree.define -class DirichletBuilder: - mask: Bool[np.ndarray, "points dim"] - value: Float[np.ndarray, "points dim"] - - def __init__(self, dim: int = 3) -> None: - mask: Bool[np.ndarray, "points dim"] = np.empty((0, dim), bool) - value: Float[np.ndarray, "points dim"] = np.empty((0, dim)) - self.__attrs_init__(mask=mask, value=value) # pyright: ignore[reportAttributeAccessIssue] - - @property - def dim(self) -> int: - return self.mask.shape[1] - - @property - def n_points(self) -> int: - return self.mask.shape[0] - - def add_pyvista(self, obj: pv.DataSet) -> None: - point_id = obj.point_data[POINT_ID] - self.resize(point_id.max() + 1) - dirichlet_mask: Bool[Array, "points dim"] = self._left_broadcast_to( - obj.point_data[DIRICHLET_MASK], obj.n_points - ) - dirichlet_value: Float[Array, "points dim"] = self._left_broadcast_to( - obj.point_data[DIRICHLET_VALUE], obj.n_points - ) - self.mask[point_id] = dirichlet_mask - self.value[point_id] = dirichlet_value - - def finalize(self) -> Dirichlet: - mask: Bool[Array, "points dim"] = jnp.asarray(self.mask) - dirichlet_index: Integer[Array, " dirichlet"] = jnp.flatnonzero(mask) - return Dirichlet( - dim=self.dim, - dirichlet_index=dirichlet_index, - dirichlet_value=jnp.asarray(self.value.flat[dirichlet_index]), # pyright: ignore[reportArgumentType, reportCallIssue] - free_index=jnp.flatnonzero(~mask), - n_points=self.n_points, - ) - - def resize(self, n_points: int) -> None: - pad_after: int = n_points - self.n_points - if pad_after <= 0: - return - self.mask = np.pad(self.mask, ((0, pad_after), (0, 0)), constant_values=False) - self.value = np.pad(self.value, ((0, pad_after), (0, 0)), constant_values=0.0) - - def _left_broadcast_to(self, arr: ArrayLike, n_points: int) -> Array: - shape: Sequence[int] = (n_points, self.dim) - arr = jnp.asarray(arr) - arr = jnp.reshape(arr, arr.shape + (1,) * (len(shape) - arr.ndim)) - return jnp.broadcast_to(arr, shape) diff --git a/src/liblaf/apple/jax/model/dirichlet/_dirichlet.py b/src/liblaf/apple/jax/model/dirichlet/_dirichlet.py deleted file mode 100644 index 867799e62..000000000 --- a/src/liblaf/apple/jax/model/dirichlet/_dirichlet.py +++ /dev/null @@ -1,64 +0,0 @@ -import equinox as eqx -import jax.numpy as jnp -from jaxtyping import Array, ArrayLike, Float, Integer -from liblaf.peach import tree - - -@tree.define -class Dirichlet: - dim: int - dirichlet_index: Integer[Array, " dirichlet"] - dirichlet_value: Float[Array, " dirichlet"] - free_index: Integer[Array, " free"] - n_points: int - - @property - def n_dirichlet(self) -> int: - return self.dirichlet_index.size - - @property - def n_free(self) -> int: - return self.free_index.size - - @property - def n_full(self) -> int: - return self.n_points * self.dim - - @eqx.filter_jit - def get_dirichlet( - self, full: Float[Array, "points dim"] - ) -> Float[Array, " dirichlet"]: - return full.flatten()[self.dirichlet_index] - - @eqx.filter_jit - def get_free(self, full: Float[Array, "points dim"]) -> Float[Array, " free"]: - return full.flatten()[self.free_index] - - @eqx.filter_jit - def set_dirichlet( - self, - full: Float[Array, "points dim"], - values: Float[ArrayLike, " dirichlet"] | None = None, - ) -> Float[Array, "points dim"]: - if values is None: - values = self.dirichlet_value - return full.flatten().at[self.dirichlet_index].set(values).reshape(full.shape) - - @eqx.filter_jit - def set_free( - self, full: Float[Array, "points dim"], values: Float[ArrayLike, " free"] - ) -> Float[Array, "points dim"]: - return full.flatten().at[self.free_index].set(values).reshape(full.shape) - - @eqx.filter_jit - def to_full( - self, - free: Float[Array, " free"], - dirichlet: Float[ArrayLike, " dirichlet"] | None = None, - ) -> Float[Array, "points dim"]: - full: Float[Array, "points dim"] = jnp.empty( - (self.n_points, self.dim), free.dtype - ) - full = self.set_free(full, free) - full = self.set_dirichlet(full, dirichlet) - return full diff --git a/src/liblaf/apple/jax/testing/__init__.py b/src/liblaf/apple/jax/testing/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/jax/testing/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/jax/testing/__init__.pyi b/src/liblaf/apple/jax/testing/__init__.pyi deleted file mode 100644 index 6a37a095a..000000000 --- a/src/liblaf/apple/jax/testing/__init__.pyi +++ /dev/null @@ -1,14 +0,0 @@ -from ._close import assert_fraction_close -from ._jvp import check_grad, check_jvp, numeric_jvp -from ._matrix import matrices, spd_matrix -from ._random import seed - -__all__ = [ - "assert_fraction_close", - "check_grad", - "check_jvp", - "matrices", - "numeric_jvp", - "seed", - "spd_matrix", -] diff --git a/src/liblaf/apple/jax/testing/_close.py b/src/liblaf/apple/jax/testing/_close.py deleted file mode 100644 index 80fbb51a4..000000000 --- a/src/liblaf/apple/jax/testing/_close.py +++ /dev/null @@ -1,20 +0,0 @@ -import numpy as np -import numpy.typing as npt - - -def assert_fraction_close( - actual: npt.ArrayLike, - expected: npt.ArrayLike, - *, - atol: float = 0.0, - fraction: float = 0.01, - rtol: float = 1e-7, -) -> None: - __tracebackhide__ = True - actual: np.ndarray = np.asarray(actual) - expected: np.ndarray = np.asarray(expected) - diff: np.ndarray = np.abs(actual - expected) - n_fail: int = np.count_nonzero(diff > atol + rtol * np.abs(expected)) # pyright: ignore[reportAssignmentType] - if n_fail < fraction * actual.size: - return - np.testing.assert_allclose(actual, expected, rtol=rtol, atol=atol) diff --git a/src/liblaf/apple/jax/testing/_jvp.py b/src/liblaf/apple/jax/testing/_jvp.py deleted file mode 100644 index e994d8207..000000000 --- a/src/liblaf/apple/jax/testing/_jvp.py +++ /dev/null @@ -1,65 +0,0 @@ -from collections.abc import Callable - -import jax -import jax.numpy as jnp -from jaxtyping import Array, ArrayLike, Key - -from ._close import assert_fraction_close - - -def check_grad( - fun: Callable[[Array], Array], - grad: Callable[[Array], Array], - x: Array, - *, - atol: float = 0.0, - fraction: float = 0.0, - rtol: float = 1e-7, -) -> None: - __tracebackhide__ = True - tangent: Array = _rand_like(x) - actual: Array = jnp.vdot(grad(x), tangent) - expected: Array = numeric_jvp(fun, x, tangent) - assert_fraction_close(actual, expected, fraction=fraction, atol=atol, rtol=rtol) - - -def check_jvp( - fun: Callable[[Array], Array], - jvp: Callable[[Array, Array], Array], - primal: Array, - *, - atol: float = 0.0, - fraction: float = 0.0, - rtol: float = 1e-7, -) -> None: - __tracebackhide__ = True - tangent: Array = _rand_like(primal) - actual: Array = jvp(primal, tangent) - expected: Array = numeric_jvp(fun, primal, tangent) - assert_fraction_close(actual, expected, fraction=fraction, atol=atol, rtol=rtol) - - -def numeric_jvp( - fun: Callable[[Array], Array], - primal: ArrayLike, - tangent: ArrayLike | None = None, - *, - eps: float = 1e-4, -) -> Array: - primal = jnp.asarray(primal) - if tangent is None: - key: Key = jax.random.key(0) - tangent = jax.random.uniform( - key, primal.shape, primal.dtype, minval=-1.0, maxval=1.0 - ) - else: - tangent = jnp.asarray(tangent) - f0: Array = fun(primal - 0.5 * eps * tangent) - f1: Array = fun(primal + 0.5 * eps * tangent) - output: Array = (f1 - f0) / eps - return output - - -def _rand_like(arr: Array) -> Array: - key: Key = jax.random.key(0) - return jax.random.uniform(key, arr.shape, arr.dtype, minval=-1.0, maxval=1.0) diff --git a/src/liblaf/apple/jax/testing/_matrix.py b/src/liblaf/apple/jax/testing/_matrix.py deleted file mode 100644 index 9bcd92d82..000000000 --- a/src/liblaf/apple/jax/testing/_matrix.py +++ /dev/null @@ -1,46 +0,0 @@ -from collections.abc import Sequence - -import hypothesis.extra.numpy as hnp -import hypothesis.strategies as st -import jax -import numpy as np -from jaxtyping import Array, DTypeLike, Float, Key - -from ._random import seed - - -@st.composite -def matrices( - draw: st.DrawFn, - shape: Sequence[int], - dtype: DTypeLike = np.float64, - *, - min_dims: int = 1, - max_dims: int | None = 1, -) -> Array: - batch: Sequence[int] = draw( - st.shared(hnp.array_shapes(min_dims=min_dims, max_dims=max_dims), key="batch") - ) - key: Key = jax.random.key(draw(seed())) - arr: Array = jax.random.uniform( - key, (*batch, *shape), dtype, minval=-1.0, maxval=1.0 - ) - return arr - - -@st.composite -def spd_matrix( - draw: st.DrawFn, - n: int = 3, - dtype: DTypeLike = np.float64, - *, - min_dims: int = 1, - max_dims: int | None = 1, -) -> Float[Array, "*batch D D"]: - shape: Sequence[int] = draw( - st.shared(hnp.array_shapes(min_dims=min_dims, max_dims=max_dims), key="batch") - ) - key: Key = jax.random.key(draw(seed())) - arr: Array = jax.random.uniform(key, (*shape, n, n), dtype, minval=-1.0, maxval=1.0) - arr = 0.5 * (arr.mT + arr) + 2.0 * n * np.identity(n, dtype) - return arr diff --git a/src/liblaf/apple/jax/testing/_random.py b/src/liblaf/apple/jax/testing/_random.py deleted file mode 100644 index b64f7b244..000000000 --- a/src/liblaf/apple/jax/testing/_random.py +++ /dev/null @@ -1,5 +0,0 @@ -import hypothesis.strategies as st - - -def seed() -> st.SearchStrategy[int]: - return st.integers(min_value=-(2**31), max_value=2**31 - 1) diff --git a/src/liblaf/apple/model/__init__.py b/src/liblaf/apple/model/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/model/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/model/__init__.pyi b/src/liblaf/apple/model/__init__.pyi deleted file mode 100644 index cbc521544..000000000 --- a/src/liblaf/apple/model/__init__.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from ._builder import ModelBuilder -from ._forward import Forward -from ._model import Model - -__all__ = ["Forward", "Model", "ModelBuilder"] diff --git a/src/liblaf/apple/model/_builder.py b/src/liblaf/apple/model/_builder.py deleted file mode 100644 index 67de590f8..000000000 --- a/src/liblaf/apple/model/_builder.py +++ /dev/null @@ -1,69 +0,0 @@ -import jax.numpy as jnp -import numpy as np -import pyvista as pv -from jaxtyping import Array, Float -from liblaf.peach import tree - -from liblaf import melon -from liblaf.apple.constants import POINT_ID -from liblaf.apple.jax.model import ( - Dirichlet, - DirichletBuilder, - JaxEnergy, - JaxModelBuilder, -) -from liblaf.apple.warp.model import WarpEnergy, WarpModelAdapter, WarpModelBuilder - -from ._model import Model - -type Full = Float[Array, " full"] - - -@tree.define -class ModelBuilder: - edges_length_sum: float = tree.field(default=0.0) - n_edges: int = tree.field(default=0) - dirichlet: DirichletBuilder = tree.field(factory=DirichletBuilder) - jax: JaxModelBuilder = tree.field(factory=JaxModelBuilder) - warp: WarpModelBuilder = tree.field(factory=WarpModelBuilder) - - def __init__(self, dim: int = 3) -> None: - dirichlet: DirichletBuilder = DirichletBuilder(dim=dim) - self.__attrs_init__(dirichlet=dirichlet, warp=WarpModelBuilder(dim=dim)) # pyright: ignore[reportAttributeAccessIssue] - - @property - def n_points(self) -> int: - return self.dirichlet.n_points - - def add_dirichlet(self, obj: pv.DataSet) -> None: - self.dirichlet.add_pyvista(obj) - - def add_energy(self, energy: JaxEnergy | WarpEnergy) -> None: - if isinstance(energy, JaxEnergy): - self.jax.add_energy(energy) - elif isinstance(energy, WarpEnergy): - self.warp.add_energy(energy) - else: - raise TypeError(energy) - - def assign_global_ids[T: pv.DataSet](self, obj: T) -> T: - edges_length: Float[np.ndarray, " edges"] = melon.compute_edges_length(obj) - self.edges_length_sum += np.sum(edges_length) - self.n_edges += edges_length.size - start: int = self.n_points - stop: int = start + obj.n_points - self.dirichlet.resize(stop) - obj.point_data[POINT_ID] = np.arange(start, stop) - return obj - - def finalize(self) -> Model: - dirichlet: Dirichlet = self.dirichlet.finalize() - u_full: Full = jnp.zeros((self.dirichlet.n_points, self.dirichlet.dim)) - u_full = dirichlet.set_dirichlet(u_full) - return Model( - dirichlet=dirichlet, - u_full=u_full, - jax=self.jax.finalize(), - warp=WarpModelAdapter(self.warp.finalize()), - edges_length_mean=self.edges_length_sum / max(1, self.n_edges), # pyright: ignore[reportArgumentType] - ) diff --git a/src/liblaf/apple/model/_forward.py b/src/liblaf/apple/model/_forward.py deleted file mode 100644 index 02a0ac99b..000000000 --- a/src/liblaf/apple/model/_forward.py +++ /dev/null @@ -1,79 +0,0 @@ -from __future__ import annotations - -import logging -from collections.abc import Mapping - -import attrs -import jax.numpy as jnp -from jaxtyping import Array, Float -from liblaf.peach import tree -from liblaf.peach.optim import PNCG, Callback, Objective, Optimizer - -from ._model import Model - -logger: logging.Logger = logging.getLogger(__name__) - -type EnergyParams = Mapping[str, Array] -type Free = Float[Array, " free"] -type ModelParams = Mapping[str, EnergyParams] -type Scalar = Float[Array, ""] - - -def _default_optimizer(self: Forward) -> Optimizer: - max_steps: int = max(1000, jnp.ceil(20 * jnp.sqrt(self.model.n_free)).item()) - max_delta: Scalar = ( - 0.15 * self.model.edges_length_mean - if self.model.edges_length_mean > 0 - else jnp.asarray(jnp.inf) - ) - return PNCG( - max_steps=max_steps, - atol=1e-10, - rtol=1e-3, - atol_primary=1e-10, - rtol_primary=1e-5, - beta_non_negative=True, - beta_restart_threshold=10.0, - max_delta=max_delta, - timer=True, - stagnation_max_restarts=20, - stagnation_patience=50, - ) - - -@tree.define -class Forward: - model: Model - optimizer: Optimizer = tree.field( - default=attrs.Factory(_default_optimizer, takes_self=True), kw_only=True - ) - - @property - def u_full(self) -> Float[Array, "points dim"]: - return self.model.u_full - - def update_params(self, params: ModelParams) -> None: - self.model.update_params(params) - - def step( - self, callback: Callback | None = None, *, logging: bool = True - ) -> Optimizer.Solution: - objective = Objective( - fun=self.model.fun, - grad=self.model.grad, - hess_diag=self.model.hess_diag, - hess_prod=self.model.hess_prod, - hess_quad=self.model.hess_quad, - value_and_grad=self.model.value_and_grad, - grad_and_hess_diag=self.model.grad_and_hess_diag, - ) - solution: Optimizer.Solution = self.optimizer.minimize( - objective, self.model.u_free, callback=callback - ) - if logging: - if solution.success: - logger.info("Forward success: %r", solution.stats) - else: - logger.warning("Forward fail: %r", solution) - self.model.u_free = solution.params - return solution diff --git a/src/liblaf/apple/model/_model.py b/src/liblaf/apple/model/_model.py deleted file mode 100644 index dea42f2ff..000000000 --- a/src/liblaf/apple/model/_model.py +++ /dev/null @@ -1,163 +0,0 @@ -from collections.abc import Container, Mapping - -import jax.numpy as jnp -import tlz -from jaxtyping import Array, ArrayLike, Float -from liblaf.peach import tree - -from liblaf.apple.jax import Dirichlet, JaxModel -from liblaf.apple.warp import WarpModelAdapter - -type EnergyParams = Mapping[str, Array] -type Free = Float[Array, " free"] -type FreeOrFull = Free | Full -type Full = Float[Array, "points dim"] -type ModelParams = Mapping[str, EnergyParams] -type Scalar = Float[Array, ""] - - -@tree.define -class Model: - dirichlet: Dirichlet - u_full: Full - jax: JaxModel - warp: WarpModelAdapter - edges_length_mean: Scalar = tree.array(default=jnp.zeros(())) - frozen: bool = tree.field(default=False) - - @property - def dim(self) -> int: - return self.dirichlet.dim - - @property - def n_free(self) -> int: - return self.dirichlet.n_free - - @property - def n_full(self) -> int: - return self.dirichlet.n_full - - @property - def n_points(self) -> int: - return self.dirichlet.n_points - - @property - def u_free(self) -> Free: - return self.to_free(self.u_full) - - @u_free.setter - def u_free(self, value: Free) -> None: - self.u_full = self.to_full(value) - - def to_free(self, u: FreeOrFull) -> Free: - if u.size == self.n_free: - return u.reshape((self.n_free,)) - return self.dirichlet.get_free(u) - - def to_full( - self, u: FreeOrFull, dirichlet: Float[ArrayLike, " dirichlet"] | None = None - ) -> Full: - if u.size == self.n_full: - return u.reshape((self.n_points, self.dim)) - return self.dirichlet.to_full(u, dirichlet) - - def to_shape_like(self, u_full: Full, like: FreeOrFull) -> FreeOrFull: - if u_full.size == like.size: - return u_full.reshape(like.shape) - return self.dirichlet.get_free(u_full) - - def update(self, u: FreeOrFull) -> None: - u_full: Full = self.to_full(u) - if self.frozen: - return - if jnp.array_equiv(u_full, self.u_full): - return - self.u_full = u_full - self.jax.update(u_full) - self.warp.update(u_full) - - def update_params(self, params: ModelParams) -> None: - def pick(allowlist: Container[str], d: ModelParams) -> ModelParams: - return tlz.keyfilter(lambda name: name in allowlist, d) - - params_jax: ModelParams = pick(self.jax.energies, params) - params_warp: ModelParams = pick(self.warp.energies, params) - self.jax.update_params(params_jax) - self.warp.update_params(params_warp) - - def fun(self, u: FreeOrFull) -> Scalar: - u_full: Full = self.to_full(u) - self.update(u_full) - output_jax: Scalar = self.jax.fun(u_full) - output_wp: Scalar = self.warp.fun(u_full) - output: Scalar = output_jax + output_wp - return output - - def grad(self, u: FreeOrFull) -> FreeOrFull: - u_full: Full = self.to_full(u) - self.update(u_full) - output_jax: Full = self.jax.grad(u_full) - output_wp: Full = self.warp.grad(u_full) - output: Full = output_jax + output_wp - return self.to_shape_like(output, u) - - def hess_diag(self, u: FreeOrFull) -> FreeOrFull: - u_full: Full = self.to_full(u) - self.update(u_full) - output_jax: Full = self.jax.hess_diag(u_full) - output_wp: Full = self.warp.hess_diag(u_full) - output: Full = output_jax + output_wp - return self.to_shape_like(output, u) - - def hess_prod(self, u: FreeOrFull, p: FreeOrFull) -> FreeOrFull: - u_full: Full = self.to_full(u) - self.update(u_full) - p_full: Full = self.to_full(p, 0.0) - output_jax: Full = self.jax.hess_prod(u_full, p_full) - output_wp: Full = self.warp.hess_prod(u_full, p_full) - output: Full = output_jax + output_wp - return self.to_shape_like(output, u) - - def hess_quad(self, u: FreeOrFull, p: FreeOrFull) -> Scalar: - u_full: Full = self.to_full(u) - self.update(u_full) - p_full: Full = self.to_full(p, 0.0) - output_jax: Scalar = self.jax.hess_quad(u_full, p_full) - output_wp: Scalar = self.warp.hess_quad(u_full, p_full) - output: Scalar = output_jax + output_wp - return output - - def mixed_derivative_prod(self, u: FreeOrFull, p: FreeOrFull) -> ModelParams: - u_full: Full = self.to_full(u) - self.update(u_full) - p_full: Full = self.to_full(p, 0.0) - outputs_jax: ModelParams = self.jax.mixed_derivative_prod(u_full, p_full) - outputs_wp: ModelParams = self.warp.mixed_derivative_prod(u_full, p_full) - outputs: ModelParams = tlz.merge(outputs_jax, outputs_wp) - return outputs - - def value_and_grad(self, u: FreeOrFull) -> tuple[Scalar, FreeOrFull]: - u_full: Full = self.to_full(u) - self.update(u_full) - value_jax: Scalar - grad_jax: Full - value_jax, grad_jax = self.jax.value_and_grad(u_full) - value_wp: Scalar - grad_wp: Full - value_wp, grad_wp = self.warp.value_and_grad(u_full) - value: Scalar = value_jax + value_wp - grad: Full = grad_jax + grad_wp - return value, self.to_shape_like(grad, u) - - def grad_and_hess_diag(self, u: FreeOrFull) -> tuple[FreeOrFull, FreeOrFull]: - u_full: Full = self.to_full(u) - self.update(u_full) - grad_jax: Full - hess_diag_jax: Full - grad_jax, hess_diag_jax = self.jax.grad_and_hess_diag(u_full) - grad_wp: Full - hess_diag_wp: Full - grad_wp, hess_diag_wp = self.warp.grad_and_hess_diag(u_full) - grad: Full = grad_jax + grad_wp - hess_diag: Full = hess_diag_jax + hess_diag_wp - return self.to_shape_like(grad, u), self.to_shape_like(hess_diag, u) diff --git a/src/liblaf/apple/torch/__init__.py b/src/liblaf/apple/torch/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/torch/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/torch/__init__.pyi b/src/liblaf/apple/torch/__init__.pyi new file mode 100644 index 000000000..d763ea8f4 --- /dev/null +++ b/src/liblaf/apple/torch/__init__.pyi @@ -0,0 +1,3 @@ +from . import fem, utils + +__all__ = ["fem", "utils"] diff --git a/src/liblaf/apple/torch/fem/__init__.py b/src/liblaf/apple/torch/fem/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/torch/fem/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/torch/fem/__init__.pyi b/src/liblaf/apple/torch/fem/__init__.pyi new file mode 100644 index 000000000..746545d7e --- /dev/null +++ b/src/liblaf/apple/torch/fem/__init__.pyi @@ -0,0 +1,20 @@ +from . import element, geometry, quadrature, region +from .element import Element, ElementTetra +from .geometry import Geometry, GeometryTetra, GeometryTriangle +from .quadrature import QuadratureTetra, Scheme +from .region import Region + +__all__ = [ + "Element", + "ElementTetra", + "Geometry", + "GeometryTetra", + "GeometryTriangle", + "QuadratureTetra", + "Region", + "Scheme", + "element", + "geometry", + "quadrature", + "region", +] diff --git a/src/liblaf/apple/torch/fem/element/__init__.py b/src/liblaf/apple/torch/fem/element/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/torch/fem/element/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/jax/fem/element/__init__.pyi b/src/liblaf/apple/torch/fem/element/__init__.pyi similarity index 100% rename from src/liblaf/apple/jax/fem/element/__init__.pyi rename to src/liblaf/apple/torch/fem/element/__init__.pyi diff --git a/src/liblaf/apple/torch/fem/element/_element.py b/src/liblaf/apple/torch/fem/element/_element.py new file mode 100644 index 000000000..f9093ddb6 --- /dev/null +++ b/src/liblaf/apple/torch/fem/element/_element.py @@ -0,0 +1,45 @@ +import attrs +import torch +from jaxtyping import Float, Integer +from torch import Tensor + +from liblaf.apple.torch.fem.quadrature import Scheme + + +@attrs.define +class Element: + """Base-class for a finite element which provides methods for plotting. + + References: + 1. [felupe.Element](https://felupe.readthedocs.io/en/latest/felupe/element.html#felupe.Element) + """ + + @property + def dim(self) -> int: + return self.points.shape[1] + + @property + def n_points(self) -> int: + return self.points.shape[0] + + @property + def points(self) -> Float[Tensor, "points dim"]: + raise NotImplementedError + + @property + def cells(self) -> Integer[Tensor, " points"]: + return torch.arange(self.n_points) + + @property + def quadrature(self) -> Scheme: + raise NotImplementedError + + def function(self, coords: Float[Tensor, " dim"]) -> Float[Tensor, " points"]: + """Return the shape functions at given coordinates.""" + raise NotImplementedError + + def gradient(self, coords: Float[Tensor, " dim"]) -> Float[Tensor, "points dim"]: + return torch.autograd.functional.jacobian(self.function, coords) + + def hessian(self, coords: Float[Tensor, " dim"]) -> Float[Tensor, "points dim dim"]: + return torch.autograd.functional.hessian(self.function, coords) diff --git a/src/liblaf/apple/torch/fem/element/_tetra.py b/src/liblaf/apple/torch/fem/element/_tetra.py new file mode 100644 index 000000000..42e385d83 --- /dev/null +++ b/src/liblaf/apple/torch/fem/element/_tetra.py @@ -0,0 +1,50 @@ +from typing import override + +import attrs +import torch +from jaxtyping import Float +from torch import Tensor + +from liblaf.apple.torch.fem.quadrature import QuadratureTetra + +from ._element import Element + + +@attrs.define +class ElementTetra(Element): + @property + @override + def points(self) -> Float[Tensor, "points dim"]: + return torch.tensor( + [ + [0.0, 0.0, 0.0], + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0], + [0.0, 0.0, 1.0], + ] + ) + + @property + @override + def quadrature(self) -> QuadratureTetra: + return QuadratureTetra() + + @override + def function(self, coords: Float[Tensor, " dim"]) -> Float[Tensor, "points=4"]: + r, s, t = coords + return torch.tensor([1.0 - r - s - t, r, s, t]) + + @override + def gradient(self, coords: Float[Tensor, " dim"]) -> Float[Tensor, "points dim"]: + return torch.tensor( + [ + [-1.0, -1.0, -1.0], + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0], + [0.0, 0.0, 1.0], + ] + ) + + @override + def hessian(self, coords: Float[Tensor, " dim"]) -> Float[Tensor, "points dim dim"]: + return torch.zeros((4, 3, 3)) diff --git a/src/liblaf/apple/jax/fem/geometry/__init__.pyi b/src/liblaf/apple/torch/fem/geometry/__init__.py similarity index 100% rename from src/liblaf/apple/jax/fem/geometry/__init__.pyi rename to src/liblaf/apple/torch/fem/geometry/__init__.py diff --git a/src/liblaf/apple/torch/fem/geometry/_geometry.py b/src/liblaf/apple/torch/fem/geometry/_geometry.py new file mode 100644 index 000000000..0f5680d90 --- /dev/null +++ b/src/liblaf/apple/torch/fem/geometry/_geometry.py @@ -0,0 +1,58 @@ +import functools +from typing import Self, cast + +import attrs +import pyvista as pv +import torch +from jaxtyping import Float, Integer +from torch import Tensor + +from liblaf.apple.common import GLOBAL_POINT_ID +from liblaf.apple.torch.fem.element import Element + + +@attrs.define +class Geometry: + mesh: pv.DataSet + + @classmethod + def from_pyvista(cls, mesh: pv.DataObject) -> Self: + return cast("Self", _geometry_from_pyvista(mesh)) + + @property + def element(self) -> Element: + raise NotImplementedError + + @property + def n_cells(self) -> int: + return self.cells_local.shape[0] + + @property + def cell_data(self) -> pv.DataSetAttributes: + return self.mesh.cell_data + + @property + def cells_global(self) -> Integer[Tensor, "c a"]: + return self.global_point_id[self.cells_local] + + @property + def cells_local(self) -> Integer[Tensor, "c a"]: + raise NotImplementedError + + @property + def global_point_id(self) -> Integer[Tensor, "p J"]: + return torch.tensor(self.point_data[GLOBAL_POINT_ID.vtk], dtype=torch.int32) + + @property + def point_data(self) -> pv.DataSetAttributes: + return self.mesh.point_data + + @property + def points(self) -> Float[Tensor, "p J"]: + dtype: torch.dtype = torch.get_default_dtype() + return torch.tensor(self.mesh.points, dtype=dtype) + + +@functools.singledispatch +def _geometry_from_pyvista(mesh: pv.DataObject) -> Geometry: + raise TypeError(mesh) diff --git a/src/liblaf/apple/torch/fem/geometry/_tetra.py b/src/liblaf/apple/torch/fem/geometry/_tetra.py new file mode 100644 index 000000000..e308734ca --- /dev/null +++ b/src/liblaf/apple/torch/fem/geometry/_tetra.py @@ -0,0 +1,31 @@ +from typing import override + +import attrs +import pyvista as pv +import torch +from jaxtyping import Integer +from torch import Tensor + +from liblaf.apple.torch.fem.element import ElementTetra + +from ._geometry import Geometry, _geometry_from_pyvista + + +@attrs.define +class GeometryTetra(Geometry): + mesh: pv.UnstructuredGrid + + @property + @override + def element(self) -> ElementTetra: + return ElementTetra() + + @property + @override + def cells_local(self) -> Integer[Tensor, "c a"]: + return torch.tensor(self.mesh.cells_dict[pv.CellType.TETRA], dtype=torch.int32) # ty:ignore[invalid-argument-type] + + +@_geometry_from_pyvista.register(pv.UnstructuredGrid) +def _(mesh: pv.UnstructuredGrid) -> GeometryTetra: + return GeometryTetra(mesh=mesh) diff --git a/src/liblaf/apple/torch/fem/geometry/_triangle.py b/src/liblaf/apple/torch/fem/geometry/_triangle.py new file mode 100644 index 000000000..b4f6f7bbe --- /dev/null +++ b/src/liblaf/apple/torch/fem/geometry/_triangle.py @@ -0,0 +1,25 @@ +from typing import override + +import attrs +import pyvista as pv +import torch +from jaxtyping import Integer +from torch import Tensor + +from ._geometry import Geometry, _geometry_from_pyvista + + +@attrs.define +class GeometryTriangle(Geometry): + mesh: pv.PolyData + + @property + @override + def cells_local(self) -> Integer[Tensor, "c a"]: + return torch.tensor(self.mesh.regular_faces) + + +@_geometry_from_pyvista.register(pv.PolyData) +def _(mesh: pv.PolyData) -> GeometryTriangle: + mesh: pv.PolyData = mesh.triangulate() + return GeometryTriangle(mesh=mesh) diff --git a/src/liblaf/apple/torch/fem/quadrature/__init__.py b/src/liblaf/apple/torch/fem/quadrature/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/torch/fem/quadrature/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/jax/fem/quadrature/__init__.pyi b/src/liblaf/apple/torch/fem/quadrature/__init__.pyi similarity index 100% rename from src/liblaf/apple/jax/fem/quadrature/__init__.pyi rename to src/liblaf/apple/torch/fem/quadrature/__init__.pyi diff --git a/src/liblaf/apple/torch/fem/quadrature/_scheme.py b/src/liblaf/apple/torch/fem/quadrature/_scheme.py new file mode 100644 index 000000000..5941a7b01 --- /dev/null +++ b/src/liblaf/apple/torch/fem/quadrature/_scheme.py @@ -0,0 +1,28 @@ +from typing import Self + +import attrs +import felupe +import torch +from jaxtyping import Float +from torch import Tensor + + +@attrs.define +class Scheme: + points: Float[Tensor, "quadrature dim"] + weights: Float[Tensor, " quadrature"] + + @classmethod + def from_felupe(cls, schema: felupe.quadrature.Scheme) -> Self: + return cls( + points=torch.tensor(schema.points), + weights=torch.tensor(schema.weights), + ) + + @property + def dim(self) -> int: + return self.points.shape[1] + + @property + def n_points(self) -> int: + return self.points.shape[0] diff --git a/src/liblaf/apple/torch/fem/quadrature/_tetra.py b/src/liblaf/apple/torch/fem/quadrature/_tetra.py new file mode 100644 index 000000000..e55658b23 --- /dev/null +++ b/src/liblaf/apple/torch/fem/quadrature/_tetra.py @@ -0,0 +1,23 @@ +from typing import Self + +import attrs +import felupe.quadrature +import torch +from jaxtyping import Float +from torch import Tensor + +from ._scheme import Scheme + + +@attrs.define +class QuadratureTetra(Scheme): + points: Float[Tensor, "quadrature dim"] = attrs.field( + factory=lambda: torch.full((1, 3), 0.25) + ) + weights: Float[Tensor, " quadrature"] = attrs.field( + factory=lambda: torch.full((1,), 1.0 / 6.0) + ) + + @classmethod + def from_order(cls, order: int = 1) -> Self: + return cls.from_felupe(felupe.quadrature.Tetrahedron(order=order)) diff --git a/src/liblaf/apple/torch/fem/region/__init__.py b/src/liblaf/apple/torch/fem/region/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/torch/fem/region/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/jax/fem/region/__init__.pyi b/src/liblaf/apple/torch/fem/region/__init__.pyi similarity index 100% rename from src/liblaf/apple/jax/fem/region/__init__.pyi rename to src/liblaf/apple/torch/fem/region/__init__.pyi diff --git a/src/liblaf/apple/torch/fem/region/_region.py b/src/liblaf/apple/torch/fem/region/_region.py new file mode 100644 index 000000000..3a10d5f2f --- /dev/null +++ b/src/liblaf/apple/torch/fem/region/_region.py @@ -0,0 +1,127 @@ +import contextlib +import functools +import logging +from typing import Self + +import attrs +import einops +import pyvista as pv +import torch +from jaxtyping import Float, Integer +from torch import Tensor + +from liblaf.apple.torch.fem.element import Element +from liblaf.apple.torch.fem.geometry import Geometry +from liblaf.apple.torch.fem.quadrature import Scheme + +logger: logging.Logger = logging.getLogger(__name__) + + +@attrs.define +class Region: + geometry: Geometry + quadrature: Scheme = attrs.field(default=None) + + @classmethod + def from_geometry( + cls, geometry: Geometry, *, quadrature: Scheme | None = None + ) -> Self: + if quadrature is None: + with contextlib.suppress(NotImplementedError): + quadrature: Scheme = geometry.element.quadrature + self: Self = cls(geometry=geometry, quadrature=quadrature) + return self + + @classmethod + def from_pyvista( + cls, mesh: pv.DataObject, *, quadrature: Scheme | None = None + ) -> Self: + geometry: Geometry = Geometry.from_pyvista(mesh) + self: Self = cls.from_geometry(geometry, quadrature=quadrature) + return self + + @property + def n_cells(self) -> int: + return self.geometry.n_cells + + @property + def cells_global(self) -> Integer[Tensor, "c a"]: + return self.geometry.cells_global + + @property + def cells_local(self) -> Integer[Tensor, "c a"]: + return self.geometry.cells_local + + @property + def element(self) -> Element: + return self.geometry.element + + @property + def mesh(self) -> pv.DataSet: + return self.geometry.mesh + + @property + def point_data(self) -> pv.DataSetAttributes: + return self.geometry.point_data + + @property + def cell_data(self) -> pv.DataSetAttributes: + return self.geometry.cell_data + + @property + def points(self) -> Float[Tensor, "p J"]: + return self.geometry.points + + @functools.cached_property + def h(self) -> Float[Tensor, "q a"]: + return torch.stack([self.element.function(q) for q in self.quadrature.points]) + + @functools.cached_property + def dhdr(self) -> Float[Tensor, "q a J"]: + return torch.stack([self.element.gradient(q) for q in self.quadrature.points]) + + @functools.cached_property + def dXdr(self) -> Float[Tensor, "c q J J"]: + return einops.einsum( + self.points[self.cells_local], self.dhdr, "c a I, q a J -> c q I J" + ) + + @functools.cached_property + def drdX(self) -> Float[Tensor, "c q J J"]: + return torch.linalg.inv(self.dXdr) + + @functools.cached_property + def dV(self) -> Float[Tensor, "c q"]: + dV: Float[Tensor, "c q"] = ( + torch.linalg.det(self.dXdr) * self.quadrature.weights[torch.newaxis, :] + ) + if torch.any(dV <= 0): + logger.warning("dV <= 0") + return dV + + @functools.cached_property + def dhdX(self) -> Float[Tensor, "c q a J"]: + return einops.einsum(self.dhdr, self.drdX, "q a I, c q I J -> c q a J") + + def deformation_gradient(self, u: Float[Tensor, "p J"]) -> Float[Tensor, "c q J J"]: + grad: Float[Tensor, "c q J J"] = self.gradient(u) + F: Float[Tensor, "c q J J"] = ( + grad + torch.eye(3)[torch.newaxis, torch.newaxis, ...] + ) + return F + + def gradient( + self, u: Float[Tensor, " points *shape"] + ) -> Float[Tensor, "c q *shape J"]: + result: Float[Tensor, "c q *shape J"] = einops.einsum( + self.scatter(u), self.dhdX, "c a ..., c q a J -> c q ... J" + ) + return result + + def integrate(self, a: Float[Tensor, "c q *shape"]) -> Float[Tensor, " c *shape"]: + return einops.einsum(a, self.dV, "c q ..., c q -> c ...") + + def scatter( + self, u: Float[Tensor, " points *shape"] + ) -> Float[Tensor, "c a *shape"]: + return u[self.cells_global] diff --git a/src/liblaf/apple/torch/utils/__init__.py b/src/liblaf/apple/torch/utils/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/torch/utils/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/torch/utils/__init__.pyi b/src/liblaf/apple/torch/utils/__init__.pyi new file mode 100644 index 000000000..162376c57 --- /dev/null +++ b/src/liblaf/apple/torch/utils/__init__.pyi @@ -0,0 +1,3 @@ +from ._decorator import method_with_device + +__all__ = ["method_with_device"] diff --git a/src/liblaf/apple/torch/utils/_decorator.py b/src/liblaf/apple/torch/utils/_decorator.py new file mode 100644 index 000000000..d12275bba --- /dev/null +++ b/src/liblaf/apple/torch/utils/_decorator.py @@ -0,0 +1,19 @@ +import functools +from collections.abc import Callable +from typing import Any, Protocol, cast + +import torch + + +class HasDevice(Protocol): + @property + def device(self) -> torch.device: ... + + +def method_with_device[F: Callable[..., Any]](func: F) -> F: + @functools.wraps(func) + def wrapper(self: HasDevice, *args, **kwargs) -> Any: + with self.device: + return func(self, *args, **kwargs) + + return cast("F", wrapper) diff --git a/src/liblaf/apple/utils/__init__.py b/src/liblaf/apple/utils/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/utils/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/utils/__init__.pyi b/src/liblaf/apple/utils/__init__.pyi deleted file mode 100644 index 62485a78e..000000000 --- a/src/liblaf/apple/utils/__init__.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from ._id_mixin import IdMixin -from ._indices import group_indices - -__all__ = ["IdMixin", "group_indices"] diff --git a/src/liblaf/apple/utils/_id_mixin.py b/src/liblaf/apple/utils/_id_mixin.py deleted file mode 100644 index fd2adfcb3..000000000 --- a/src/liblaf/apple/utils/_id_mixin.py +++ /dev/null @@ -1,21 +0,0 @@ -from collections import Counter -from typing import Any - -import attrs -from liblaf.peach import tree - -counter: Counter[str] = Counter() - - -def _default_id(self: Any) -> str: - name: str = type(self).__name__ - count: int = counter[name] - counter[name] += 1 - return f"{name}{count:03d}" - - -@tree.define -class IdMixin: - id: str = tree.field( - default=attrs.Factory(_default_id, takes_self=True), kw_only=True - ) diff --git a/src/liblaf/apple/utils/_indices.py b/src/liblaf/apple/utils/_indices.py deleted file mode 100644 index 60a06d150..000000000 --- a/src/liblaf/apple/utils/_indices.py +++ /dev/null @@ -1,18 +0,0 @@ -import jax.numpy as jnp -from jaxtyping import Array, Integer - - -def group_indices( - arr: Integer[Array, " N"], -) -> dict[int, Integer[Array, " group_size"]]: - sort_idx: Integer[Array, " N"] = jnp.argsort(arr) - unique_id: Integer[Array, " n_groups"] - first_occurrence: Integer[Array, " group_size"] - unique_id, first_occurrence = jnp.unique(arr[sort_idx], return_index=True) - groups: list[Integer[Array, " group_size"]] = jnp.split( - sort_idx, first_occurrence[1:] - ) - index_to_group: dict[int, Integer[Array, " group_size"]] = dict( - zip(unique_id.tolist(), groups, strict=True) - ) - return index_to_group diff --git a/src/liblaf/apple/warp/__init__.py b/src/liblaf/apple/warp/__init__.py index 97d0a5864..26eeb22d8 100644 --- a/src/liblaf/apple/warp/__init__.py +++ b/src/liblaf/apple/warp/__init__.py @@ -1,4 +1,5 @@ -import lazy_loader as lazy +from lazy_loader import attach_stub -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/__init__.pyi b/src/liblaf/apple/warp/__init__.pyi index e962e656a..b4b7e6dd9 100644 --- a/src/liblaf/apple/warp/__init__.pyi +++ b/src/liblaf/apple/warp/__init__.pyi @@ -1,20 +1,3 @@ -from . import energies, math, model, types -from .energies import Arap, ArapActive, ArapMuscle, Hyperelastic, Phace, PhaceFixHess -from .model import WarpEnergy, WarpModel, WarpModelAdapter, WarpModelBuilder +from . import fem, math, model, potential -__all__ = [ - "Arap", - "ArapActive", - "ArapMuscle", - "Hyperelastic", - "Phace", - "PhaceFixHess", - "WarpEnergy", - "WarpModel", - "WarpModelAdapter", - "WarpModelBuilder", - "energies", - "math", - "model", - "types", -] +__all__ = ["fem", "math", "model", "potential"] diff --git a/src/liblaf/apple/warp/energies/__init__.py b/src/liblaf/apple/warp/energies/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/warp/energies/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/warp/energies/__init__.pyi b/src/liblaf/apple/warp/energies/__init__.pyi deleted file mode 100644 index 50f0b3b77..000000000 --- a/src/liblaf/apple/warp/energies/__init__.pyi +++ /dev/null @@ -1,12 +0,0 @@ -from . import elastic -from .elastic import Arap, ArapActive, ArapMuscle, Hyperelastic, Phace, PhaceFixHess - -__all__ = [ - "Arap", - "ArapActive", - "ArapMuscle", - "Hyperelastic", - "Phace", - "PhaceFixHess", - "elastic", -] diff --git a/src/liblaf/apple/warp/energies/elastic/__init__.py b/src/liblaf/apple/warp/energies/elastic/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/warp/energies/elastic/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/warp/energies/elastic/__init__.pyi b/src/liblaf/apple/warp/energies/elastic/__init__.pyi deleted file mode 100644 index 9ff28ba9b..000000000 --- a/src/liblaf/apple/warp/energies/elastic/__init__.pyi +++ /dev/null @@ -1,19 +0,0 @@ -from . import hyperelastic -from .hyperelastic import ( - Arap, - ArapActive, - ArapMuscle, - Hyperelastic, - Phace, - PhaceFixHess, -) - -__all__ = [ - "Arap", - "ArapActive", - "ArapMuscle", - "Hyperelastic", - "Phace", - "PhaceFixHess", - "hyperelastic", -] diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/__init__.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/__init__.pyi b/src/liblaf/apple/warp/energies/elastic/hyperelastic/__init__.pyi deleted file mode 100644 index a29429562..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/__init__.pyi +++ /dev/null @@ -1,17 +0,0 @@ -from . import func -from ._arap import Arap -from ._arap_active import ArapActive -from ._arap_muscle import ArapMuscle -from ._base import Hyperelastic -from ._phace import Phace -from ._phace_fixed_hess import PhaceFixHess - -__all__ = [ - "Arap", - "ArapActive", - "ArapMuscle", - "Hyperelastic", - "Phace", - "PhaceFixHess", - "func", -] diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap.py deleted file mode 100644 index b8125f5cc..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap.py +++ /dev/null @@ -1,124 +0,0 @@ -from collections.abc import Mapping -from typing import Any, no_type_check, override - -import warp as wp -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -from liblaf.apple.constants import MU -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp import math, utils - -from . import func -from ._base import Hyperelastic - -mat33 = Any -mat43 = Any -scalar = Any - - -@tree.define -class Arap(Hyperelastic): - @override - @wp.struct - class Params: - mu: wp.array(dtype=wpt.float_) - - @override - @wp.struct - class ParamsElem: - mu: wpt.float_ - - @override - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - return Arap.ParamsElem(mu=params.mu[cid]) - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - R, _ = math.polar_rv(F) - Psi = F.dtype(0.5) * params.mu * math.fro_norm_square(F - R) - return Psi - - @override - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - R, _ = math.polar_rv(F) - g1 = func.g1(R) # mat33 - g2 = func.g2(F) # mat33 - PK1 = F.dtype(0.5) * params.mu * (g2 - F.dtype(2.0) * g1) # mat33 - return PK1 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat43: - U, s, V = math.svd_rv(F) # mat33, vec3, mat33 - h4_diag = func.h4_diag(dhdX, U, s, V, clamp=clamp) # mat43 - h5_diag = func.h5_diag(dhdX) # mat43 - h_diag = -F.dtype(2.0) * h4_diag + h5_diag # mat43 - return F.dtype(0.5) * params.mu * h_diag # mat43 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat43: - U, s, V = math.svd_rv(F) # mat33, vec3, mat33 - h4_prod = func.h4_prod(p, dhdX, U, s, V, clamp=clamp) # mat43 - h5_prod = func.h5_prod(p, dhdX) # mat43 - h_prod = -F.dtype(2.0) * h4_prod + h5_prod # mat43 - return F.dtype(0.5) * params.mu * h_prod # mat43 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - U, s, V = math.svd_rv(F) # mat33, vec3, mat33 - h4_quad = func.h4_quad(p, dhdX, U, s, V, clamp=clamp) # scalar - h5_quad = func.h5_quad(p, dhdX) # scalar - h_quad = -F.dtype(2.0) * h4_quad + h5_quad - return F.dtype(0.5) * params.mu * h_quad - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - U, s, V = math.svd_rv(F) # mat33, vec3, mat33 - h4_bd = func.h4_block_diag(dhdX, U, s, V, clamp=clamp) - h5_bd = func.h5_block_diag(dhdX) - scale = F.dtype(0.5) * params.mu - neg2 = -F.dtype(2.0) - return ( - scale * (neg2 * h4_bd[0] + h5_bd[0]), - scale * (neg2 * h4_bd[1] + h5_bd[1]), - scale * (neg2 * h4_bd[2] + h5_bd[2]), - scale * (neg2 * h4_bd[3] + h5_bd[3]), - ) - - @override - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: - fields: dict[str, wp.array] = {} - fields["mu"] = utils.to_warp(region.cell_data[MU], wpt.float_) - return fields diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_active.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_active.py deleted file mode 100644 index 25a004c08..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_active.py +++ /dev/null @@ -1,184 +0,0 @@ -from collections.abc import Mapping -from typing import Any, no_type_check, override - -import warp as wp -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -from liblaf.apple.constants import ACTIVATION, MU, MUSCLE_FRACTION -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp import utils - -from ._arap import Arap -from ._arap_muscle import ArapMuscle -from ._base import Hyperelastic - -mat33 = Any -mat43 = Any -scalar = Any - - -@tree.define -class ArapActive(Hyperelastic): - @override - @wp.struct - class Params: - activation: wp.array(dtype=wpt.vec6) - mu: wp.array(dtype=wpt.float_) - muscle_fraction: wp.array(dtype=wpt.float_) - - @override - @wp.struct - class ParamsElem: - activation: wpt.vec6 - mu: wpt.float_ - muscle_fraction: wpt.float_ - - @override - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - return ArapActive.ParamsElem( - activation=params.activation[cid], - mu=params.mu[cid], - muscle_fraction=params.muscle_fraction[cid], - ) - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - Psi_active = ArapMuscle.energy_density_func( - F, ArapActive._arap_active_params(params) - ) # float - Psi_passive = Arap.energy_density_func( - F, ArapActive._arap_params(params) - ) # float - Psi = ( - params.muscle_fraction * Psi_active - + (F.dtype(1.0) - params.muscle_fraction) * Psi_passive - ) # float - return Psi - - @override - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - PK1_active = ArapMuscle.first_piola_kirchhoff_stress_func( - F, ArapActive._arap_active_params(params), clamp=clamp - ) # mat33 - PK1_passive = Arap.first_piola_kirchhoff_stress_func( - F, ArapActive._arap_params(params), clamp=clamp - ) # mat33 - PK1 = ( - params.muscle_fraction * PK1_active - + (F.dtype(1.0) - params.muscle_fraction) * PK1_passive - ) # mat33 - return PK1 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - diag_active = ArapMuscle.energy_density_hess_diag_func( - F, dhdX, ArapActive._arap_active_params(params), clamp=clamp - ) # mat43 - diag_passive = Arap.energy_density_hess_diag_func( - F, dhdX, ArapActive._arap_params(params), clamp=clamp - ) # mat43 - diag = ( - params.muscle_fraction * diag_active - + (F.dtype(1.0) - params.muscle_fraction) * diag_passive - ) # mat43 - return diag - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - prod_active = ArapMuscle.energy_density_hess_prod_func( - F, p, dhdX, ArapActive._arap_active_params(params), clamp=clamp - ) # mat43 - prod_passive = Arap.energy_density_hess_prod_func( - F, p, dhdX, ArapActive._arap_params(params), clamp=clamp - ) # mat43 - prod = ( - params.muscle_fraction * prod_active - + (F.dtype(1.0) - params.muscle_fraction) * prod_passive - ) # mat43 - return prod - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - quad_active = ArapMuscle.energy_density_hess_quad_func( - F, p, dhdX, ArapActive._arap_active_params(params), clamp=clamp - ) - quad_passive = Arap.energy_density_hess_quad_func( - F, p, dhdX, ArapActive._arap_params(params), clamp=clamp - ) - quad = ( - params.muscle_fraction * quad_active - + (F.dtype(1.0) - params.muscle_fraction) * quad_passive - ) - return quad - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - bd_active = ArapMuscle.energy_density_hess_block_diag_func( - F, dhdX, ArapActive._arap_active_params(params), clamp=clamp - ) - bd_passive = Arap.energy_density_hess_block_diag_func( - F, dhdX, ArapActive._arap_params(params), clamp=clamp - ) - mf = params.muscle_fraction - imf = F.dtype(1.0) - mf - return ( - mf * bd_active[0] + imf * bd_passive[0], - mf * bd_active[1] + imf * bd_passive[1], - mf * bd_active[2] + imf * bd_passive[2], - mf * bd_active[3] + imf * bd_passive[3], - ) - - @staticmethod - @no_type_check - @wp.func - def _arap_active_params(params: ParamsElem) -> ArapMuscle.ParamsElem: - return ArapMuscle.ParamsElem(activation=params.activation, mu=params.mu) - - @staticmethod - @no_type_check - @wp.func - def _arap_params(params: ParamsElem) -> Arap.ParamsElem: - return Arap.ParamsElem(mu=params.mu) - - @override - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: - fields: dict[str, wp.array] = {} - fields["activation"] = utils.to_warp(region.cell_data[ACTIVATION], wpt.vec6) - fields["mu"] = utils.to_warp(region.cell_data[MU], wpt.float_) - fields["muscle_fraction"] = utils.to_warp( - region.cell_data[MUSCLE_FRACTION], wpt.float_ - ) - return fields diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_muscle.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_muscle.py deleted file mode 100644 index 2e95ded5f..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_muscle.py +++ /dev/null @@ -1,143 +0,0 @@ -from collections.abc import Mapping -from typing import Any, no_type_check, override - -import warp as wp -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -from liblaf.apple.constants import ACTIVATION, MU -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp import math, utils - -from . import func -from ._arap import Arap - -mat33 = Any -mat43 = Any -scalar = Any - - -@tree.define -class ArapMuscle(Arap): - @override - @wp.struct - class Params: - activation: wp.array(dtype=wpt.vec6) - mu: wp.array(dtype=wpt.float_) - - @override - @wp.struct - class ParamsElem: - activation: wpt.vec6 - mu: wpt.float_ - - @override - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - return ArapMuscle.ParamsElem( - activation=params.activation[cid], mu=params.mu[cid] - ) - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - R, _ = math.polar_rv(G) - Psi = F.dtype(0.5) * params.mu * math.fro_norm_square(G - R) - return Psi - - @override - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - R, _ = math.polar_rv(G) # mat33 - PK1 = params.mu * (G - R) @ wp.transpose(A) - return PK1 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat43: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - dhdX_A = dhdX @ A # mat43 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_diag = func.h4_diag(dhdX_A, U, s, V, clamp=clamp) # mat43 - h5_diag = func.h5_diag(dhdX_A) # mat43 - h_diag = -F.dtype(2.0) * h4_diag + h5_diag # mat43 - return F.dtype(0.5) * params.mu * h_diag # mat43 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat43: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - dhdX_A = dhdX @ A # mat43 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_prod = func.h4_prod(p, dhdX_A, U, s, V, clamp=clamp) # mat43 - h5_prod = func.h5_prod(p, dhdX_A) # mat43 - h_prod = -F.dtype(2.0) * h4_prod + h5_prod # mat43 - return F.dtype(0.5) * params.mu * h_prod # mat43 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - dhdX_A = dhdX @ A # mat43 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_quad = func.h4_quad(p, dhdX_A, U, s, V, clamp=clamp) # scalar - h5_quad = func.h5_quad(p, dhdX_A) # scalar - h_quad = -F.dtype(2.0) * h4_quad + h5_quad - return F.dtype(0.5) * params.mu * h_quad - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - dhdX_A = dhdX @ A # mat43 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_bd = func.h4_block_diag(dhdX_A, U, s, V, clamp=clamp) - h5_bd = func.h5_block_diag(dhdX_A) - scale = F.dtype(0.5) * params.mu - neg2 = -F.dtype(2.0) - return ( - scale * (neg2 * h4_bd[0] + h5_bd[0]), - scale * (neg2 * h4_bd[1] + h5_bd[1]), - scale * (neg2 * h4_bd[2] + h5_bd[2]), - scale * (neg2 * h4_bd[3] + h5_bd[3]), - ) - - @override - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: - fields: dict[str, wp.array] = {} - fields["activation"] = utils.to_warp(region.cell_data[ACTIVATION], wpt.vec6) - fields["mu"] = utils.to_warp(region.cell_data[MU], wpt.float_) - return fields diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_muscle_v2.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_muscle_v2.py deleted file mode 100644 index e6e05cb99..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_arap_muscle_v2.py +++ /dev/null @@ -1,139 +0,0 @@ -from collections.abc import Mapping -from typing import Any, no_type_check, override - -import warp as wp -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -from liblaf.apple.constants import ACTIVATION, MU -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp import math, utils - -from . import func -from ._arap import Arap - -mat33 = Any -mat43 = Any -scalar = Any - - -@tree.define -class ArapMuscleV2(Arap): - @override - @wp.struct - class Params: - activation: wp.array(dtype=wpt.vec6) - mu: wp.array(dtype=wpt.float_) - - @override - @wp.struct - class ParamsElem: - activation: wpt.vec6 - mu: wpt.float_ - - @override - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - return ArapMuscleV2.ParamsElem( - activation=params.activation[cid], mu=params.mu[cid] - ) - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - R, _ = math.polar_rv(G) - Psi = F.dtype(0.5) * params.mu * math.fro_norm_square(F - R @ A) - return Psi - - @override - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - R, _ = math.polar_rv(G) # mat33 - PK1 = params.mu * (F - R @ A) # mat33 - return PK1 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat43: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_diag = func.h4_diag(dhdX, U, s, A @ V, clamp=clamp) # mat43 - h5_diag = func.h5_diag(dhdX) # mat43 - h_diag = -F.dtype(2.0) * h4_diag + h5_diag # mat43 - return F.dtype(0.5) * params.mu * h_diag # mat43 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat43: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_prod = func.h4_prod(p, dhdX, U, s, A @ V, clamp=clamp) # mat43 - h5_prod = func.h5_prod(p, dhdX) # mat43 - h_prod = -F.dtype(2.0) * h4_prod + h5_prod # mat43 - return F.dtype(0.5) * params.mu * h_prod # mat43 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_quad = func.h4_quad(p, dhdX, U, s, A @ V, clamp=clamp) # scalar - h5_quad = func.h5_quad(p, dhdX) # scalar - h_quad = -F.dtype(2.0) * h4_quad + h5_quad - return F.dtype(0.5) * params.mu * h_quad - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - A = func.make_activation_mat33(params.activation) # mat33 - G = F @ A # mat33 - U, s, V = math.svd_rv(G) # mat33, vec3, mat33 - h4_bd = func.h4_block_diag(dhdX, U, s, A @ V, clamp=clamp) - h5_bd = func.h5_block_diag(dhdX) - scale = F.dtype(0.5) * params.mu - neg2 = -F.dtype(2.0) - return ( - scale * (neg2 * h4_bd[0] + h5_bd[0]), - scale * (neg2 * h4_bd[1] + h5_bd[1]), - scale * (neg2 * h4_bd[2] + h5_bd[2]), - scale * (neg2 * h4_bd[3] + h5_bd[3]), - ) - - @override - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: - fields: dict[str, wp.array] = {} - fields["activation"] = utils.to_warp(region.cell_data[ACTIVATION], wpt.vec6) - fields["mu"] = utils.to_warp(region.cell_data[MU], wpt.float_) - return fields diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_base.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_base.py deleted file mode 100644 index 98267613f..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_base.py +++ /dev/null @@ -1,550 +0,0 @@ -import functools -from collections.abc import Mapping, Sequence -from typing import Any, Self, no_type_check, overload, override - -import pyvista as pv -import warp as wp -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -import liblaf.apple.warp.utils as wpu -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp.model import WarpEnergy - -from . import func - -type Vector = Float[wp.array, "points dim"] -type Scalar = Float[wp.array, "1"] -type EnergyParams = Mapping[str, Array] - -mat33 = Any -mat43 = Any -scalar = Any -vec3 = Any -vec4i = Any - - -@tree.define -class Hyperelastic(WarpEnergy): - @wp.struct - class Params: - pass - - @wp.struct - class ParamsElem: - pass - - cells: Integer[wp.array, "c a"] - dhdX: Integer[wp.array, "c q a J"] - dV: Integer[wp.array, "c q"] - params: Params # pyright: ignore[reportGeneralTypeIssues] - - clamp_hess_diag: bool = True - clamp_hess_quad: bool = True - clamp_lambda: bool = False - - @overload - @classmethod - def from_pyvista( # pyright: ignore[reportInconsistentOverload] - cls, - obj: pv.DataObject, - *, - clamp_hess_diag: bool = True, - clamp_hess_quad: bool = True, - clamp_lambda: bool = True, - requires_grad: Sequence[str] = (), - **kwargs, - ) -> Self: ... - @classmethod - def from_pyvista(cls, obj: pv.DataObject, **kwargs) -> Self: - region = Region.from_pyvista(obj, grad=True) - return cls.from_region(region, **kwargs) - - @overload - @classmethod - def from_region( # pyright: ignore[reportInconsistentOverload] - cls, - region: Region, - *, - clamp_hess_diag: bool = True, - clamp_hess_quad: bool = True, - clamp_lambda: bool = True, - requires_grad: Sequence[str] = (), - **kwargs, - ) -> Self: ... - @classmethod - def from_region( - cls, region: Region, *, requires_grad: Sequence[str] = (), **kwargs - ) -> Self: - self: Self = cls( - cells=wpu.to_warp(region.cells, wpt.vec4i), - dhdX=wpu.to_warp(region.dhdX, wpt.mat43), - dV=wpu.to_warp(region.dV, wpt.float_), - params=cls.make_params(region, requires_grad), - requires_grad=requires_grad, - **kwargs, - ) - return self - - @classmethod - @no_type_check - def make_params(cls, region: Region, requires_grad: Sequence[str] = ()) -> Params: - fields: Mapping[str, wp.array] = cls._params_fields_from_region(region) - return cls._params_from_fields(fields, requires_grad) - - @property - def n_cells(self) -> int: - return self.cells.shape[0] - - @property - def n_quadrature_points(self) -> int: - return self.dV.shape[1] - - @override - def update_params(self, params: EnergyParams) -> None: - for name, value in params.items(): - param: wp.array = getattr(self.params, name) - wp.copy(param, wpu.to_warp(value, param.dtype)) - - @override - def fun(self, u: Vector, output: Scalar) -> None: - wp.launch( - self.fun_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, self.cells, self.dhdX, self.dV, self.params], - outputs=[output], - ) - - @override - def grad(self, u: Vector, output: Vector) -> None: - wp.launch( - self.grad_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, self.cells, self.dhdX, self.dV, self.params], - outputs=[output], - ) - - @override - def hess_diag(self, u: Vector, output: Vector) -> None: - wp.launch( - self.hess_diag_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, self.cells, self.dhdX, self.dV, self.params], - outputs=[output], - ) - - @override - def hess_prod(self, u: Vector, p: Vector, output: Vector) -> None: - wp.launch( - self.hess_prod_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, p, self.cells, self.dhdX, self.dV, self.params], - outputs=[output], - ) - - @override - def hess_quad(self, u: Vector, p: Vector, output: Scalar) -> None: - wp.launch( - self.hess_quad_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, p, self.cells, self.dhdX, self.dV, self.params], - outputs=[output], - ) - - @override - def mixed_derivative_prod(self, u: wp.array, p: wp.array) -> dict[str, wp.array]: - if not self.requires_grad: - return {} - for name in self.requires_grad: - getattr(self.params, name).grad.zero_() - output: wp.array = wp.zeros_like(u) - with wp.Tape() as tape: - self.grad(u, output) - tape.backward(grads={output: p}) - outputs: dict[str, wp.array] = { - name: getattr(self.params, name).grad for name in self.requires_grad - } - return outputs - - @override - def value_and_grad(self, u: Vector, value: Scalar, grad: Vector) -> None: - wp.launch( - self.value_and_grad_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, self.cells, self.dhdX, self.dV, self.params], - outputs=[value, grad], - ) - - @override - def grad_and_hess_diag(self, u: Vector, grad: Vector, hess_diag: Vector) -> None: - wp.launch( - self.grad_and_hess_diag_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, self.cells, self.dhdX, self.dV, self.params], - outputs=[grad, hess_diag], - ) - - def hess_block_diag(self, u: Vector, hess_block_diag: wp.array) -> None: - wp.launch( - self.hess_block_diag_kernel, - dim=(self.n_cells, self.n_quadrature_points), - inputs=[u, self.cells, self.dhdX, self.dV, self.params], - outputs=[hess_block_diag], - ) - - @functools.cached_property - def fun_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - output: wp.array(dtype=scalar), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - output[0] += dV[cid, qid] * self.energy_density_func(F, cell_params) - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def grad_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - output: wp.array(dtype=vec3), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - # we want accurate grad, so no clamping here - PK1 = self.first_piola_kirchhoff_stress_func( - F, cell_params, clamp=False - ) # mat33 - grad = dV[cid, qid] * func.deformation_gradient_vjp( - dhdX[cid, qid], PK1 - ) # mat43 - for i in range(4): - output[vid[i]] += grad[i] - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def hess_diag_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - output: wp.array(dtype=vec3), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - hess_diag = dV[cid, qid] * self.energy_density_hess_diag_func( - F, dhdX[cid, qid], cell_params, clamp=wp.static(self.clamp_lambda) - ) # mat43 - if wp.static(self.clamp_hess_diag): - zero_vec3 = wp.vector(length=3, dtype=hess_diag.dtype) - hess_diag = wp.matrix_from_rows( - wp.max(hess_diag[0], zero_vec3), - wp.max(hess_diag[1], zero_vec3), - wp.max(hess_diag[2], zero_vec3), - wp.max(hess_diag[3], zero_vec3), - ) - for i in range(4): - output[vid[i]] += hess_diag[i] - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def hess_prod_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - p: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - output: wp.array(dtype=vec3), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - p0 = p[vid[0]] # vec3 - p1 = p[vid[1]] # vec3 - p2 = p[vid[2]] # vec3 - p3 = p[vid[3]] # vec3 - p_cell = wp.matrix_from_rows(p0, p1, p2, p3) # mat43 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - hess_prod = dV[cid, qid] * self.energy_density_hess_prod_func( - F, - p_cell, - dhdX[cid, qid], - cell_params, - clamp=wp.static(self.clamp_lambda), - ) # mat43 - for i in range(4): - output[vid[i]] += hess_prod[i] - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def hess_quad_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - p: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - output: wp.array(dtype=scalar), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - p0 = p[vid[0]] # vec3 - p1 = p[vid[1]] # vec3 - p2 = p[vid[2]] # vec3 - p3 = p[vid[3]] # vec3 - p_cell = wp.matrix_from_rows(p0, p1, p2, p3) # mat43 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - hess_quad = dV[cid, qid] * self.energy_density_hess_quad_func( - F, - p_cell, - dhdX[cid, qid], - cell_params, - clamp=wp.static(self.clamp_lambda), - ) - if wp.static(self.clamp_hess_quad): - _0 = hess_quad.dtype(0.0) - hess_quad = wp.max(hess_quad, _0) - output[0] += hess_quad - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def hess_block_diag_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - hess_block_diag: wp.array(dtype=mat33), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - hess_block_diag_cell = self.energy_density_hess_block_diag_func( - F, dhdX[cid, qid], cell_params, clamp=wp.static(self.clamp_lambda) - ) - scale = dV[cid, qid] - wp.atomic_add(hess_block_diag, vid[0], scale * hess_block_diag_cell[0]) - wp.atomic_add(hess_block_diag, vid[1], scale * hess_block_diag_cell[1]) - wp.atomic_add(hess_block_diag, vid[2], scale * hess_block_diag_cell[2]) - wp.atomic_add(hess_block_diag, vid[3], scale * hess_block_diag_cell[3]) - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def value_and_grad_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - value: wp.array(dtype=scalar), - grad: wp.array(dtype=vec3), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - value[0] += dV[cid, qid] * self.energy_density_func(F, cell_params) - # we want accurate grad, so no clamping here - PK1 = self.first_piola_kirchhoff_stress_func( - F, cell_params, clamp=False - ) # mat33 - grad_cell = dV[cid, qid] * func.deformation_gradient_vjp( - dhdX[cid, qid], PK1 - ) # mat43 - for i in range(4): - grad[vid[i]] += grad_cell[i] - - return kernel # pyright: ignore[reportReturnType] - - @functools.cached_property - def grad_and_hess_diag_kernel(self) -> wp.Kernel: - @wp.kernel - @no_type_check - def kernel( - u: wp.array(dtype=vec3), - cells: wp.array(dtype=vec4i), - dhdX: wp.array2d(dtype=mat43), - dV: wp.array2d(dtype=scalar), - params: self.Params, - grad: wp.array(dtype=vec3), - hess_diag: wp.array(dtype=vec3), - ) -> None: - cid, qid = wp.tid() - vid = cells[cid] # vec4i - u0 = u[vid[0]] # vec3 - u1 = u[vid[1]] # vec3 - u2 = u[vid[2]] # vec3 - u3 = u[vid[3]] # vec3 - u_cell = wp.matrix_from_rows(u0, u1, u2, u3) # mat43 - F = func.deformation_gradient(u_cell, dhdX[cid, qid]) # mat33 - cell_params = self.get_cell_params_func(params, cid) # ParamsElem - # we want accurate grad, so no clamping here - PK1 = self.first_piola_kirchhoff_stress_func( - F, cell_params, clamp=False - ) # mat33 - jac_cell = dV[cid, qid] * func.deformation_gradient_vjp( - dhdX[cid, qid], PK1 - ) # mat43 - hess_diag_cell = dV[cid, qid] * self.energy_density_hess_diag_func( - F, dhdX[cid, qid], cell_params, clamp=wp.static(self.clamp_lambda) - ) # mat43 - if wp.static(self.clamp_hess_diag): - zero_vec3 = wp.vector(length=3, dtype=hess_diag_cell.dtype) - hess_diag_cell = wp.matrix_from_rows( - wp.max(hess_diag_cell[0], zero_vec3), - wp.max(hess_diag_cell[1], zero_vec3), - wp.max(hess_diag_cell[2], zero_vec3), - wp.max(hess_diag_cell[3], zero_vec3), - ) - for i in range(4): - grad[vid[i]] += jac_cell[i] - hess_diag[vid[i]] += hess_diag_cell[i] - - return kernel # pyright: ignore[reportReturnType] - - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - raise NotImplementedError - - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - raise NotImplementedError - - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - raise NotImplementedError - - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - raise NotImplementedError - - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - raise NotImplementedError - - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - raise NotImplementedError - - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - raise NotImplementedError - - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: # noqa: ARG003 - return {} - - @classmethod - @no_type_check - def _params_from_fields( - cls, fields: Mapping[str, wp.array], requires_grad: Sequence[str] - ) -> Params: - for name in requires_grad: - fields[name].requires_grad = True - params = cls.Params() - for key, value in fields.items(): - setattr(params, key, value) - return params diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_phace.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_phace.py deleted file mode 100644 index ccb1f37e2..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_phace.py +++ /dev/null @@ -1,250 +0,0 @@ -from collections.abc import Mapping -from typing import Any, no_type_check, override - -import warp as wp -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -from liblaf.apple.constants import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp import math, utils - -from . import func -from ._arap import Arap -from ._arap_muscle import ArapMuscle -from ._base import Hyperelastic - -mat33 = Any -mat43 = Any -scalar = Any - - -@tree.define -class Phace(Hyperelastic): - @override - @wp.struct - class Params: - activation: wp.array(dtype=wpt.vec6) - lambda_: wp.array(dtype=wpt.float_) - mu: wp.array(dtype=wpt.float_) - muscle_fraction: wp.array(dtype=wpt.float_) - - @override - @wp.struct - class ParamsElem: - activation: wpt.vec6 - lambda_: wpt.float_ - mu: wpt.float_ - muscle_fraction: wpt.float_ - - @override - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - return Phace.ParamsElem( - activation=params.activation[cid], - lambda_=params.lambda_[cid], - mu=params.mu[cid], - muscle_fraction=params.muscle_fraction[cid], - ) - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - Psi_ARAP_active = ArapMuscle.energy_density_func( - F, Phace._arap_active_params(params) - ) # float - Psi_ARAP_passive = Arap.energy_density_func( - F, Phace._arap_params(params) - ) # float - Psi_ARAP = ( - params.muscle_fraction * Psi_ARAP_active - + (_1 - params.muscle_fraction) * Psi_ARAP_passive - ) # float - Psi_VP = params.lambda_ * math.square(J - _1) # float - Psi = _2 * Psi_ARAP + Psi_VP # float - return Psi - - @override - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - PK1_ARAP_active = ArapMuscle.first_piola_kirchhoff_stress_func( - F, Phace._arap_active_params(params), clamp=clamp - ) # mat33 - PK1_ARAP_passive = Arap.first_piola_kirchhoff_stress_func( - F, Phace._arap_params(params), clamp=clamp - ) # mat33 - PK1_ARAP = ( - params.muscle_fraction * PK1_ARAP_active - + (_1 - params.muscle_fraction) * PK1_ARAP_passive - ) # mat33 - PK1_VP = _2 * params.lambda_ * (J - _1) * g3 # mat33 - PK1 = _2 * PK1_ARAP + PK1_VP # mat33 - return PK1 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - diag_arap_active = ArapMuscle.energy_density_hess_diag_func( - F, dhdX, Phace._arap_active_params(params), clamp=clamp - ) # mat43 - diag_arap_passive = Arap.energy_density_hess_diag_func( - F, dhdX, Phace._arap_params(params), clamp=clamp - ) # mat43 - diag_arap = ( - params.muscle_fraction * diag_arap_active - + (_1 - params.muscle_fraction) * diag_arap_passive - ) # mat43 - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_diag = func.h3_diag(dhdX, g3) # mat43 - h6_diag = func.h6_diag(dhdX, F) # mat43 - diag_vp = d2Psi_dI32 * h3_diag + dPsi_dI3 * h6_diag # mat43 - diag = _2 * diag_arap + diag_vp # mat43 - return diag - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - prod_arap_active = ArapMuscle.energy_density_hess_prod_func( - F, p, dhdX, Phace._arap_active_params(params), clamp=clamp - ) # mat43 - prod_arap_passive = Arap.energy_density_hess_prod_func( - F, p, dhdX, Phace._arap_params(params), clamp=clamp - ) # mat43 - prod_arap = ( - params.muscle_fraction * prod_arap_active - + (_1 - params.muscle_fraction) * prod_arap_passive - ) # mat43 - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_prod = func.h3_prod(p, dhdX, g3) # mat43 - h6_prod = func.h6_prod(p, dhdX, F) # mat43 - prod_vp = d2Psi_dI32 * h3_prod + dPsi_dI3 * h6_prod # mat43 - prod = _2 * prod_arap + prod_vp # mat43 - return prod - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - quad_arap_active = ArapMuscle.energy_density_hess_quad_func( - F, p, dhdX, Phace._arap_active_params(params), clamp=clamp - ) - quad_arap_passive = Arap.energy_density_hess_quad_func( - F, p, dhdX, Phace._arap_params(params), clamp=clamp - ) - quad_arap = ( - params.muscle_fraction * quad_arap_active - + (_1 - params.muscle_fraction) * quad_arap_passive - ) - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_quad = func.h3_quad(p, dhdX, g3) # float - h6_quad = func.h6_quad(p, dhdX, F) # float - quad_vp = d2Psi_dI32 * h3_quad + dPsi_dI3 * h6_quad # float - quad = _2 * quad_arap + quad_vp # float - return quad - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - bd_arap_active = ArapMuscle.energy_density_hess_block_diag_func( - F, dhdX, Phace._arap_active_params(params), clamp=clamp - ) - bd_arap_passive = Arap.energy_density_hess_block_diag_func( - F, dhdX, Phace._arap_params(params), clamp=clamp - ) - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_bd = func.h3_block_diag(dhdX, g3) - h6_bd = func.h6_block_diag(dhdX, F) - mf = params.muscle_fraction - imf = _1 - mf - return ( - mf * bd_arap_active[0] - + imf * bd_arap_passive[0] - + d2Psi_dI32 * h3_bd[0] - + dPsi_dI3 * h6_bd[0], - mf * bd_arap_active[1] - + imf * bd_arap_passive[1] - + d2Psi_dI32 * h3_bd[1] - + dPsi_dI3 * h6_bd[1], - mf * bd_arap_active[2] - + imf * bd_arap_passive[2] - + d2Psi_dI32 * h3_bd[2] - + dPsi_dI3 * h6_bd[2], - mf * bd_arap_active[3] - + imf * bd_arap_passive[3] - + d2Psi_dI32 * h3_bd[3] - + dPsi_dI3 * h6_bd[3], - ) - - @staticmethod - @no_type_check - @wp.func - def _arap_active_params(params: ParamsElem) -> ArapMuscle.ParamsElem: - return ArapMuscle.ParamsElem(activation=params.activation, mu=params.mu) - - @staticmethod - @no_type_check - @wp.func - def _arap_params(params: ParamsElem) -> Arap.ParamsElem: - return Arap.ParamsElem(mu=params.mu) - - @override - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: - fields: dict[str, wp.array] = {} - fields["activation"] = utils.to_warp(region.cell_data[ACTIVATION], wpt.vec6) - fields["mu"] = utils.to_warp(region.cell_data[MU], wpt.float_) - fields["lambda_"] = utils.to_warp(region.cell_data[LAMBDA], wpt.float_) - fields["muscle_fraction"] = utils.to_warp( - region.cell_data[MUSCLE_FRACTION], wpt.float_ - ) - return fields diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_phace_fixed_hess.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/_phace_fixed_hess.py deleted file mode 100644 index 93547ded3..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/_phace_fixed_hess.py +++ /dev/null @@ -1,215 +0,0 @@ -from collections.abc import Mapping -from typing import Any, no_type_check, override - -import warp as wp -from liblaf.peach import tree - -import liblaf.apple.warp.types as wpt -from liblaf.apple.constants import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION -from liblaf.apple.jax.fem import Region -from liblaf.apple.warp import math, utils - -from . import func -from ._arap import Arap -from ._arap_muscle import ArapMuscle -from ._base import Hyperelastic - -mat33 = Any -mat43 = Any -scalar = Any - - -@tree.define -class PhaceFixHess(Hyperelastic): - @override - @wp.struct - class Params: - activation: wp.array(dtype=wpt.vec6) - lambda_: wp.array(dtype=wpt.float_) - mu: wp.array(dtype=wpt.float_) - muscle_fraction: wp.array(dtype=wpt.float_) - - @override - @wp.struct - class ParamsElem: - activation: wpt.vec6 - lambda_: wpt.float_ - mu: wpt.float_ - muscle_fraction: wpt.float_ - - @override - @staticmethod - @no_type_check - @wp.func - def get_cell_params_func(params: Params, cid: int) -> ParamsElem: - return PhaceFixHess.ParamsElem( - activation=params.activation[cid], - lambda_=params.lambda_[cid], - mu=params.mu[cid], - muscle_fraction=params.muscle_fraction[cid], - ) - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_func(F: mat33, params: ParamsElem) -> scalar: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - Psi_ARAP_active = ArapMuscle.energy_density_func( - F, PhaceFixHess._arap_active_params(params) - ) # float - Psi_ARAP_passive = Arap.energy_density_func( - F, PhaceFixHess._arap_params(params) - ) # float - Psi_ARAP = ( - params.muscle_fraction * Psi_ARAP_active - + (_1 - params.muscle_fraction) * Psi_ARAP_passive - ) # float - Psi_VP = params.lambda_ * math.square(J - _1) # float - Psi = _2 * Psi_ARAP + Psi_VP # float - return Psi - - @override - @staticmethod - @no_type_check - @wp.func - def first_piola_kirchhoff_stress_func( - F: mat33, params: ParamsElem, *, clamp: bool = False - ) -> mat33: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - PK1_ARAP_active = ArapMuscle.first_piola_kirchhoff_stress_func( - F, PhaceFixHess._arap_active_params(params), clamp=clamp - ) # mat33 - PK1_ARAP_passive = Arap.first_piola_kirchhoff_stress_func( - F, PhaceFixHess._arap_params(params), clamp=clamp - ) # mat33 - PK1_ARAP = ( - params.muscle_fraction * PK1_ARAP_active - + (_1 - params.muscle_fraction) * PK1_ARAP_passive - ) # mat33 - PK1_VP = _2 * params.lambda_ * (J - _1) * g3 # mat33 - PK1 = _2 * PK1_ARAP + PK1_VP # mat33 - return PK1 - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - diag_arap_passive = Arap.energy_density_hess_diag_func( - F, dhdX, PhaceFixHess._arap_params(params), clamp=clamp - ) # mat43 - diag_arap = diag_arap_passive # mat43 - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_diag = func.h3_diag(dhdX, g3) # mat43 - h6_diag = func.h6_diag(dhdX, F) # mat43 - diag_vp = d2Psi_dI32 * h3_diag + dPsi_dI3 * h6_diag # mat43 - diag = _2 * diag_arap + diag_vp # mat43 - return diag - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_prod_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> mat33: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - prod_arap_passive = Arap.energy_density_hess_prod_func( - F, p, dhdX, PhaceFixHess._arap_params(params), clamp=clamp - ) # mat43 - prod_arap = prod_arap_passive # mat43 - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_prod = func.h3_prod(p, dhdX, g3) # mat43 - h6_prod = func.h6_prod(p, dhdX, F) # mat43 - prod_vp = d2Psi_dI32 * h3_prod + dPsi_dI3 * h6_prod # mat43 - prod = _2 * prod_arap + prod_vp # mat43 - return prod - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_quad_func( - F: mat33, p: mat43, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> scalar: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - quad_arap_passive = Arap.energy_density_hess_quad_func( - F, p, dhdX, PhaceFixHess._arap_params(params), clamp=clamp - ) # float - quad_arap = quad_arap_passive # float - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_quad = func.h3_quad(p, dhdX, g3) # float - h6_quad = func.h6_quad(p, dhdX, F) # float - quad_vp = d2Psi_dI32 * h3_quad + dPsi_dI3 * h6_quad # float - quad = _2 * quad_arap + quad_vp # float - return quad - - @override - @staticmethod - @no_type_check - @wp.func - def energy_density_hess_block_diag_func( - F: mat33, dhdX: mat43, params: ParamsElem, *, clamp: bool = True - ) -> tuple[mat33, mat33, mat33, mat33]: - _1 = F.dtype(1.0) - _2 = F.dtype(2.0) - J = func.I3(F) # float - g3 = func.g3(F) # mat33 - bd_arap_passive = Arap.energy_density_hess_block_diag_func( - F, dhdX, PhaceFixHess._arap_params(params), clamp=clamp - ) - d2Psi_dI32 = _2 * params.lambda_ # float - dPsi_dI3 = _2 * params.lambda_ * (J - _1) # float - h3_bd = func.h3_block_diag(dhdX, g3) - h6_bd = func.h6_block_diag(dhdX, F) - return ( - bd_arap_passive[0] + d2Psi_dI32 * h3_bd[0] + dPsi_dI3 * h6_bd[0], - bd_arap_passive[1] + d2Psi_dI32 * h3_bd[1] + dPsi_dI3 * h6_bd[1], - bd_arap_passive[2] + d2Psi_dI32 * h3_bd[2] + dPsi_dI3 * h6_bd[2], - bd_arap_passive[3] + d2Psi_dI32 * h3_bd[3] + dPsi_dI3 * h6_bd[3], - ) - - @staticmethod - @no_type_check - @wp.func - def _arap_active_params(params: ParamsElem) -> ArapMuscle.ParamsElem: - return ArapMuscle.ParamsElem(activation=params.activation, mu=params.mu) - - @staticmethod - @no_type_check - @wp.func - def _arap_params(params: ParamsElem) -> Arap.ParamsElem: - return Arap.ParamsElem(mu=params.mu) - - @override - @classmethod - def _params_fields_from_region(cls, region: Region) -> Mapping[str, wp.array]: - fields: dict[str, wp.array] = {} - fields["activation"] = utils.to_warp(region.cell_data[ACTIVATION], wpt.vec6) - fields["mu"] = utils.to_warp(region.cell_data[MU], wpt.float_) - fields["lambda_"] = utils.to_warp(region.cell_data[LAMBDA], wpt.float_) - fields["muscle_fraction"] = utils.to_warp( - region.cell_data[MUSCLE_FRACTION], wpt.float_ - ) - return fields diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/__init__.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/__init__.py deleted file mode 100644 index 97d0a5864..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import lazy_loader as lazy - -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/__init__.pyi b/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/__init__.pyi deleted file mode 100644 index ff87195bf..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/__init__.pyi +++ /dev/null @@ -1,61 +0,0 @@ -from ._deformation import ( - deformation_gradient, - deformation_gradient_jvp, - deformation_gradient_vjp, - gradient, -) -from ._gradients import g1, g2, g3 -from ._hess_block_diag import ( - h1_block_diag, - h2_block_diag, - h3_block_diag, - h4_block_diag, - h5_block_diag, - h6_block_diag, -) -from ._hess_diag import h1_diag, h2_diag, h3_diag, h4_diag, h5_diag, h6_diag -from ._hess_prod import h1_prod, h2_prod, h3_prod, h4_prod, h5_prod, h6_prod -from ._hess_quad import h1_quad, h2_quad, h3_quad, h4_quad, h5_quad, h6_quad -from ._identities import I1, I2, I3 -from ._misc import Qs, dRdF_vjp, lambdas, make_activation_mat33 - -__all__ = [ - "I1", - "I2", - "I3", - "Qs", - "dRdF_vjp", - "deformation_gradient", - "deformation_gradient_jvp", - "deformation_gradient_vjp", - "g1", - "g2", - "g3", - "gradient", - "h1_block_diag", - "h1_diag", - "h1_prod", - "h1_quad", - "h2_block_diag", - "h2_diag", - "h2_prod", - "h2_quad", - "h3_block_diag", - "h3_diag", - "h3_prod", - "h3_quad", - "h4_block_diag", - "h4_diag", - "h4_prod", - "h4_quad", - "h5_block_diag", - "h5_diag", - "h5_prod", - "h5_quad", - "h6_block_diag", - "h6_diag", - "h6_prod", - "h6_quad", - "lambdas", - "make_activation_mat33", -] diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_gradients.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_gradients.py deleted file mode 100644 index 6c6ad8458..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_gradients.py +++ /dev/null @@ -1,42 +0,0 @@ -from typing import Any, no_type_check - -import warp as wp - -mat33 = Any - - -@wp.func -@no_type_check -def g1(R: mat33) -> mat33: - r"""Gradient of $I_1$ w.r.t. $F$. - - $$ - g_1 = vec(R) - $$ - """ - return R - - -@wp.func -@no_type_check -def g2(F: mat33) -> mat33: - """Gradient of $I_2$ w.r.t. $F$. - - $$ - g_2 = 2 vec(F) - $$ - """ - return F.dtype(2.0) * F - - -@wp.func -@no_type_check -def g3(F: mat33) -> mat33: - r"""Gradient of $I_3$ w.r.t. $F$. - - $$ - g_3 = vec([f_1 \cp f_2, f_2 \cp f_0, f_0 \cp f_1]) - $$ - """ - f0, f1, f2 = F[:, 0], F[:, 1], F[:, 2] - return wp.matrix_from_cols(wp.cross(f1, f2), wp.cross(f2, f0), wp.cross(f0, f1)) diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_block_diag.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_block_diag.py deleted file mode 100644 index 2d3b3744c..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_block_diag.py +++ /dev/null @@ -1,111 +0,0 @@ -from typing import Any, no_type_check - -import warp as wp - -from . import _misc -from ._deformation import deformation_gradient_vjp - -mat43 = Any -mat33 = Any -vec3 = Any - - -@wp.func -@no_type_check -def outer_product_block_diag(v: mat43) -> tuple[mat33, mat33, mat33, mat33]: - v0 = v[0] - v1 = v[1] - v2 = v[2] - v3 = v[3] - return ( - wp.outer(v0, v0), - wp.outer(v1, v1), - wp.outer(v2, v2), - wp.outer(v3, v3), - ) - - -@wp.func -@no_type_check -def h1_block_diag(dhdX: mat43, g1: mat33) -> tuple[mat33, mat33, mat33, mat33]: - """Block diagonal of $h_1$.""" - v = deformation_gradient_vjp(dhdX, g1) - return outer_product_block_diag(v) - - -@wp.func -@no_type_check -def h2_block_diag(dhdX: mat43, g2: mat33) -> tuple[mat33, mat33, mat33, mat33]: - """Block diagonal of $h_2$.""" - v = deformation_gradient_vjp(dhdX, g2) - return outer_product_block_diag(v) - - -@wp.func -@no_type_check -def h3_block_diag(dhdX: mat43, g3: mat33) -> tuple[mat33, mat33, mat33, mat33]: - """Block diagonal of $h_3$.""" - v = deformation_gradient_vjp(dhdX, g3) - return outer_product_block_diag(v) - - -@wp.func -@no_type_check -def h4_block_diag( - dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp: bool = True -) -> tuple[mat33, mat33, mat33, mat33]: - """Block diagonal of $h_4$.""" - lambdas = _misc.lambdas(sigma, clamp=clamp) - Q0, Q1, Q2 = _misc.Qs(U, V) - W0 = deformation_gradient_vjp(dhdX, Q0) - W1 = deformation_gradient_vjp(dhdX, Q1) - W2 = deformation_gradient_vjp(dhdX, Q2) - - H0_0 = wp.outer(W0[0], W0[0]) - H0_1 = wp.outer(W0[1], W0[1]) - H0_2 = wp.outer(W0[2], W0[2]) - H0_3 = wp.outer(W0[3], W0[3]) - - H1_0 = wp.outer(W1[0], W1[0]) - H1_1 = wp.outer(W1[1], W1[1]) - H1_2 = wp.outer(W1[2], W1[2]) - H1_3 = wp.outer(W1[3], W1[3]) - - H2_0 = wp.outer(W2[0], W2[0]) - H2_1 = wp.outer(W2[1], W2[1]) - H2_2 = wp.outer(W2[2], W2[2]) - H2_3 = wp.outer(W2[3], W2[3]) - - return ( - lambdas[0] * H0_0 + lambdas[1] * H1_0 + lambdas[2] * H2_0, - lambdas[0] * H0_1 + lambdas[1] * H1_1 + lambdas[2] * H2_1, - lambdas[0] * H0_2 + lambdas[1] * H1_2 + lambdas[2] * H2_2, - lambdas[0] * H0_3 + lambdas[1] * H1_3 + lambdas[2] * H2_3, - ) - - -@wp.func -@no_type_check -def h5_block_diag(dhdX: mat43) -> tuple[mat33, mat33, mat33, mat33]: - """Block diagonal of $h_5$.""" - t0 = wp.length_sq(dhdX[0]) - t1 = wp.length_sq(dhdX[1]) - t2 = wp.length_sq(dhdX[2]) - t3 = wp.length_sq(dhdX[3]) - - Id = wp.identity(3, dtype=dhdX.dtype) - - return ( - dhdX.dtype(2.0) * t0 * Id, - dhdX.dtype(2.0) * t1 * Id, - dhdX.dtype(2.0) * t2 * Id, - dhdX.dtype(2.0) * t3 * Id, - ) - - -@wp.func -@no_type_check -def h6_block_diag(dhdX: mat43, F: mat33) -> tuple[mat33, mat33, mat33, mat33]: # noqa: ARG001 - """Block diagonal of $h_6$.""" - Z = wp.matrix(shape=(3, 3), dtype=dhdX.dtype) - return (Z, Z, Z, Z) diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_identities.py b/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_identities.py deleted file mode 100644 index bca7e391f..000000000 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_identities.py +++ /dev/null @@ -1,39 +0,0 @@ -from typing import Any - -import warp as wp - -mat33 = Any -scalar = Any - - -@wp.func -def I1(S: mat33) -> scalar: - r"""$I_1$. - - $$ - I_1 = \operatorname{tr}(R^T F) = \operatorname{tr}(S) - $$ - """ - return wp.trace(S) - - -@wp.func -def I2(F: mat33) -> scalar: - r"""$I_2$. - - $$ - I_2 = I_C = \|F\|_F^2 - $$ - """ - return wp.ddot(F, F) - - -@wp.func -def I3(F: mat33) -> scalar: - r"""$I_3$. - - $$ - I_3 = J = \det(F) - $$ - """ - return wp.determinant(F) diff --git a/src/liblaf/apple/warp/fem/__init__.py b/src/liblaf/apple/warp/fem/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/warp/fem/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/fem/__init__.pyi b/src/liblaf/apple/warp/fem/__init__.pyi new file mode 100644 index 000000000..5b40038b1 --- /dev/null +++ b/src/liblaf/apple/warp/fem/__init__.pyi @@ -0,0 +1,16 @@ +from . import func, utils +from ._arap import Arap +from ._base import WarpPotentialFem +from ._neo_hookean import NeoHookean +from ._stable_neo_hookean import StableNeoHookean +from ._stable_neo_hookean_active import StableNeoHookeanActive + +__all__ = [ + "Arap", + "NeoHookean", + "StableNeoHookean", + "StableNeoHookeanActive", + "WarpPotentialFem", + "func", + "utils", +] diff --git a/src/liblaf/apple/warp/fem/_arap.py b/src/liblaf/apple/warp/fem/_arap.py new file mode 100644 index 000000000..43c4673b8 --- /dev/null +++ b/src/liblaf/apple/warp/fem/_arap.py @@ -0,0 +1,121 @@ +from collections.abc import Mapping +from typing import Any, ClassVar, cast + +import attrs +import warp as wp + +from liblaf.apple.common import MU +from liblaf.apple.warp import math +from liblaf.apple.warp.model import MaterialField + +from . import func +from ._base import WarpPotentialFem + +floating = Any +mat33 = Any +mat43 = Any +Materials = Any + + +@wp.func +def energy_density(F: mat33, materials: Materials, cid: int) -> floating: + mu = materials.mu[cid] # float + R, _S = math.polar_rv(F) + return F.dtype(0.5) * mu * math.fro_norm_square(F - R) + + +@wp.func +def first_piola_kirchhoff(F: mat33, materials: Materials, cid: int) -> mat33: + mu = materials.mu[cid] # float + R, _S = math.polar_rv(F) + return mu * (F - R) + + +@wp.func +def hess_diag( + F: mat33, dhdX: mat43, materials: Materials, cid: int, *, clamp_lambda: bool = True +) -> mat33: + mu = materials.mu[cid] # float + U, sigma, V = math.svd_rv(F) # mat33, vec3, mat33 + h4_diag = func.h4_diag(dhdX, U, sigma, V, clamp_lambda=clamp_lambda) # mat43 + h5_diag = func.h5_diag(dhdX) # mat43 + h_diag = -F.dtype(2.0) * h4_diag + h5_diag # mat43 + return F.dtype(0.5) * mu * h_diag # mat33 + + +@wp.func +def hess_prod( + F: mat33, + p: mat33, + dhdX: mat43, + materials: Materials, + cid: int, + *, + clamp_lambda: bool = True, +) -> mat33: + mu = materials.mu[cid] # float + U, sigma, V = math.svd_rv(F) # mat33, vec3, mat33 + h4_prod = func.h4_prod(p, dhdX, U, sigma, V, clamp_lambda=clamp_lambda) # mat43 + h5_prod = func.h5_prod(p, dhdX) # mat43 + h_prod = -F.dtype(2.0) * h4_prod + h5_prod # mat43 + return F.dtype(0.5) * mu * h_prod # mat33 + + +@wp.func +def hess_quad( + F: mat33, + v: mat43, + dhdX: mat43, + materials: Materials, + cid: int, + *, + clamp_lambda: bool = True, +) -> floating: + mu = materials.mu[cid] # float + U, sigma, V = math.svd_rv(F) # mat33, vec3, mat33 + h4_quad = func.h4_quad(v, dhdX, U, sigma, V, clamp_lambda=clamp_lambda) # float + h5_quad = func.h5_quad(v, dhdX) # float + h_quad = -F.dtype(2.0) * h4_quad + h5_quad # float + return F.dtype(0.5) * mu * h_quad # float + + +@attrs.define +class Arap(WarpPotentialFem): + class Materials(WarpPotentialFem.Materials): + mu: wp.array + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = { + **WarpPotentialFem.MATERIAL_FIELDS, + MU.value: MaterialField.CELL.floating(MU.vtk), + } + + energy_density_func: ClassVar[wp.Function] = cast("wp.Function", energy_density) + first_piola_kirchhoff_func: ClassVar[wp.Function] = cast( + "wp.Function", first_piola_kirchhoff + ) + hess_diag_func: ClassVar[wp.Function] = cast("wp.Function", hess_diag) + hess_prod_func: ClassVar[wp.Function] = cast("wp.Function", hess_prod) + hess_quad_func: ClassVar[wp.Function] = cast("wp.Function", hess_quad) + + energy_density_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_energy_density_kernel(energy_density_func) + ) + first_piola_kirchhoff_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_first_piola_kirchhoff_kernel(first_piola_kirchhoff_func) + ) + + fun_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_fun_kernel( + energy_density_func + ) + grad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_grad_kernel( + first_piola_kirchhoff_func + ) + hess_prod_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_prod_kernel( + hess_prod_func + ) + hess_diag_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_diag_kernel( + hess_diag_func + ) + hess_quad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_quad_kernel( + hess_quad_func + ) diff --git a/src/liblaf/apple/warp/fem/_base.py b/src/liblaf/apple/warp/fem/_base.py new file mode 100644 index 000000000..ffb5816c9 --- /dev/null +++ b/src/liblaf/apple/warp/fem/_base.py @@ -0,0 +1,341 @@ +from collections.abc import Callable, Mapping, Sequence +from typing import Any, ClassVar, Self, cast, no_type_check, override + +import attrs +import warp as wp + +from liblaf.apple.torch.fem import Region +from liblaf.apple.warp import math +from liblaf.apple.warp.model import MaterialField, WarpPotential + +from . import func, utils + +floating = Any +mat33 = Any +mat43 = Any +vec3 = Any +Materials = Any +WarpRegion = Any + + +@wp.kernel +@no_type_check +def _deformation_gradient_kernel( + u: wp.array1d[vec3], # (points,) + cells: wp.array1d[wp.vec4i], # (cells,) + materials: Materials, + output: wp.array2d[mat33], # (cells, quadrature) +) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) + output[cid, qid] = func.deformation_gradient(u_cell, materials.dhdX[cid, qid]) + + +@attrs.define +class WarpPotentialFem(WarpPotential): + class Materials(WarpPotential.Materials): + dhdX: wp.array + """(cells, quadrature)""" + dV: wp.array + """(cells, quadrature)""" + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = { + **WarpPotential.MATERIAL_FIELDS, + "dhdX": MaterialField( + "dhdX", + lambda dtype: wp.array2d(dtype=wp.types.matrix((4, 3), dtype)), + utils.get_dhdX, + ), + "dV": MaterialField("dV", lambda dtype: wp.array2d(dtype=dtype), utils.get_dV), + } + + energy_density_func: ClassVar[wp.Function] + first_piola_kirchhoff_func: ClassVar[wp.Function] + hess_diag_func: ClassVar[wp.Function] + hess_prod_func: ClassVar[wp.Function] + hess_quad_func: ClassVar[wp.Function] + + deformation_gradient_kernel: ClassVar[wp.Kernel] = cast( + "wp.Kernel", _deformation_gradient_kernel + ) + energy_density_kernel: ClassVar[wp.Kernel] + first_piola_kirchhoff_kernel: ClassVar[wp.Kernel] + + fun_kernel: ClassVar[wp.Kernel] + grad_kernel: ClassVar[wp.Kernel] + hess_prod_kernel: ClassVar[wp.Kernel] + hess_diag_kernel: ClassVar[wp.Kernel] + hess_quad_kernel: ClassVar[wp.Kernel] + + cells: wp.array + materials: Materials = attrs.field(default=None, kw_only=True) + + @classmethod + def from_region( + cls, region: Region, requires_grad: Sequence[str] = (), **kwargs + ) -> Self: + cells: wp.array = wp.from_torch(region.cells_global, dtype=wp.vec4i) + self: Self = cls(cells=cells, **kwargs) + self.materials = self.material_from_region(region, requires_grad=requires_grad) + return self + + @property + def launch_dim(self) -> tuple[int, int]: + return self.materials.dhdX.shape + + def deformation_gradient(self, u: wp.array, output: wp.array) -> None: + wp.launch( + self.deformation_gradient_kernel, + dim=self.launch_dim, + inputs=[u, self.cells, self.materials], + outputs=[output], + ) + + def energy_density(self, u: wp.array, output: wp.array) -> None: + wp.launch( + self.energy_density_kernel, + dim=self.launch_dim, + inputs=[u, self.cells, self.materials], + outputs=[output], + ) + + def first_piola_kirchhoff(self, u: wp.array, output: wp.array) -> None: + wp.launch( + self.first_piola_kirchhoff_kernel, + dim=self.launch_dim, + inputs=[u, self.cells, self.materials], + outputs=[output], + ) + + @override + def fun(self, u: wp.array, output: wp.array) -> None: + wp.launch( + self.fun_kernel, + dim=self.launch_dim, + inputs=[u, self.cells, self.materials], + outputs=[output], + ) + + @override + def grad(self, u: wp.array, output: wp.array) -> None: + wp.launch( + self.grad_kernel, + dim=self.launch_dim, + inputs=[u, self.cells, self.materials], + outputs=[output], + ) + + @override + def hess_diag(self, u: wp.array, output: wp.array) -> None: + wp.launch( + self.hess_diag_kernel, + dim=self.launch_dim, + inputs=[u, self.cells, self.materials], + outputs=[output], + ) + + @override + def hess_prod(self, u: wp.array, p: wp.array, output: wp.array) -> None: + wp.launch( + self.hess_prod_kernel, + dim=self.launch_dim, + inputs=[u, p, self.cells, self.materials], + outputs=[output], + ) + + @override + def hess_quad(self, u: wp.array, p: wp.array, output: wp.array) -> None: + wp.launch( + self.hess_quad_kernel, + dim=self.launch_dim, + inputs=[u, p, self.cells, self.materials], + outputs=[output], + ) + + @classmethod + def make_energy_density_kernel( + cls, energy_density_func: Callable[..., Any], module: str | None = "unique" + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def energy_density_kernel( + u: wp.array1d[vec3], + cells: wp.array1d[wp.vec4i], + materials: Materials, + output: wp.array2d[floating], + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + output[cid, qid] = energy_density_func(F, materials, cid) + + return cast("wp.Kernel", energy_density_kernel) + + @classmethod + def make_first_piola_kirchhoff_kernel( + cls, + first_piola_kirchhoff_func: Callable[..., Any], + module: str | None = "unique", + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def first_piola_kirchhoff_kernel( + u: wp.array1d[vec3], + cells: wp.array1d[wp.vec4i], + materials: Materials, + output: wp.array2d[mat33], + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + P = first_piola_kirchhoff_func(F, materials, cid) # mat33 + output[cid, qid] = P + + return cast("wp.Kernel", first_piola_kirchhoff_kernel) + + @classmethod + def make_fun_kernel( + cls, energy_density_func: Callable[..., Any], module: str | None = "unique" + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def fun_kernel( + u: wp.array1d[vec3], + cells: wp.array1d[wp.vec4i], + materials: Materials, + output: wp.array1d[floating], + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + Psi = energy_density_func(F, materials, cid) # float + wp.atomic_add(output, 0, Psi * materials.dV[cid, qid]) + + return cast("wp.Kernel", fun_kernel) + + @classmethod + def make_grad_kernel( + cls, + first_piola_kirchhoff_func: Callable[..., Any], + module: str | None = "unique", + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def grad_kernel( + u: wp.array1d[vec3], + cells: wp.array1d[wp.vec4i], + materials: Materials, + output: wp.array1d[vec3], + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + P = first_piola_kirchhoff_func(F, materials, cid) # mat33 + grad_cell = ( + func.deformation_gradient_vjp(dhdX_cell, P) * materials.dV[cid, qid] + ) # mat43 + for i in range(4): + wp.atomic_add(output, cell[i], grad_cell[i]) + + return cast("wp.Kernel", grad_kernel) + + @classmethod + def make_hess_diag_kernel( + cls, + hess_diag_func: Callable[..., Any], + module: str | None = "unique", + *, + clamp_hess_diag: bool = True, + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def hess_diag_kernel( + u: wp.array1d[vec3], # (points,) + cells: wp.array1d[wp.vec4i], # (cells,) + materials: Materials, + output: wp.array1d[vec3], # (points,) + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + H_diag = ( + hess_diag_func(F, dhdX_cell, materials, cid) * materials.dV[cid, qid] + ) # mat43 + if wp.static(clamp_hess_diag): + H_diag = math.cw_max_4x( + H_diag, wp.matrix(shape=(4, 3), dtype=H_diag.dtype) + ) + for i in range(4): + wp.atomic_add(output, cell[i], H_diag[i]) + + return cast("wp.Kernel", hess_diag_kernel) + + @classmethod + def make_hess_prod_kernel( + cls, hess_prod_func: Callable[..., Any], module: str | None = "unique" + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def hess_prod_kernel( + u: wp.array1d[vec3], # (points,) + p: wp.array1d[vec3], # (points,) + cells: wp.array1d[wp.vec4i], # (cells,) + materials: Materials, + output: wp.array1d[vec3], # (points,) + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + p_cell = func.get_cell_displacements(p, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + h_prod = materials.dV[cid, qid] * hess_prod_func( + F, p_cell, dhdX_cell, materials, cid + ) # mat43 + for i in range(4): + wp.atomic_add(output, cell[i], h_prod[i]) + + return cast("wp.Kernel", hess_prod_kernel) + + @classmethod + def make_hess_quad_kernel( + cls, + hess_quad_func: Callable[..., Any], + module: str | None = "unique", + *, + clamp_hess_quad: bool = True, + ) -> wp.Kernel: + @wp.kernel(module=module) + @no_type_check + def hess_quad_kernel( + u: wp.array1d[vec3], # (points,) + p: wp.array1d[vec3], # (points,) + cells: wp.array1d[wp.vec4i], # (cells,) + materials: Materials, + output: wp.array1d[floating], # (1,) + ) -> None: + cid, qid = wp.tid() + cell = cells[cid] # vec4i + u_cell = func.get_cell_displacements(u, cell) # mat43 + p_cell = func.get_cell_displacements(p, cell) # mat43 + dhdX_cell = materials.dhdX[cid, qid] # mat43 + F = func.deformation_gradient(u_cell, dhdX_cell) # mat33 + h_quad = materials.dV[cid, qid] * hess_quad_func( + F, p_cell, dhdX_cell, materials, cid + ) # float + if wp.static(clamp_hess_quad): + h_quad = wp.max(h_quad, h_quad.dtype(0.0)) + wp.atomic_add(output, 0, h_quad) + + return cast("wp.Kernel", hess_quad_kernel) diff --git a/src/liblaf/apple/warp/fem/_neo_hookean.py b/src/liblaf/apple/warp/fem/_neo_hookean.py new file mode 100644 index 000000000..c98347f9c --- /dev/null +++ b/src/liblaf/apple/warp/fem/_neo_hookean.py @@ -0,0 +1,150 @@ +from collections.abc import Mapping +from typing import Any, ClassVar, cast + +import attrs +import warp as wp + +from liblaf.apple.common import LAMBDA, MU +from liblaf.apple.warp import math +from liblaf.apple.warp.model import MaterialField + +from . import func +from ._base import WarpPotentialFem + +floating = Any +mat33 = Any +mat43 = Any +Materials = Any + + +@wp.func +def energy_density(F: mat33, materials: Materials, cid: int) -> floating: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + I2 = func.I2(F) # float + J = func.I3(F) # float + return ( + F.dtype(0.5) * mu * (I2 - F.dtype(3.0)) + - mu * wp.log(J) + + F.dtype(0.5) * la * math.square(wp.log(J)) + ) + + +@wp.func +def first_piola_kirchhoff(F: mat33, materials: Materials, cid: int) -> mat33: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = (-mu + la * wp.log(J)) / J # float + g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + return dPsi_dI2 * g2 + dPsi_dI3 * g3 + + +@wp.func +def hess_diag( + F: mat33, + dhdX: mat43, + materials: Materials, + cid: int, + *, + clamp_lambda: bool = True, # noqa: ARG001 +) -> mat33: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + # g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = (-mu + la * wp.log(J)) / J # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = (la - la * wp.log(J) + mu) / math.square(J) # float + # h2_diag = func.h2_diag(dhdX, g2) # mat43 + h3_diag = func.h3_diag(dhdX, g3) # mat43 + h5_diag = func.h5_diag(dhdX) # mat43 + h6_diag = func.h6_diag(dhdX, F) # mat43 + return ( + # d2Psi_dI22 * h2_diag + d2Psi_dI32 * h3_diag + dPsi_dI2 * h5_diag + dPsi_dI3 * h6_diag + ) + + +@wp.func +def hess_prod(F: mat33, p: mat43, dhdX: mat43, materials: Materials, cid: int) -> mat33: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + # g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = (-mu + la * wp.log(J)) / J # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = (la - la * wp.log(J) + mu) / math.square(J) # float + h3_prod = func.h3_prod(p, dhdX, g3) # mat43 + h5_prod = func.h5_prod(p, dhdX) # mat43 + h6_prod = func.h6_prod(p, dhdX, F) # mat43 + return d2Psi_dI32 * h3_prod + dPsi_dI2 * h5_prod + dPsi_dI3 * h6_prod + + +@wp.func +def hess_quad( + F: mat33, p: mat43, dhdX: mat43, materials: Materials, cid: int +) -> floating: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + # g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = (-mu + la * wp.log(J)) / J # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = (la - la * wp.log(J) + mu) / math.square(J) # float + h3_quad = func.h3_quad(p, dhdX, g3) # float + h5_quad = func.h5_quad(p, dhdX) # float + h6_quad = func.h6_quad(p, dhdX, F) # float + return d2Psi_dI32 * h3_quad + dPsi_dI2 * h5_quad + dPsi_dI3 * h6_quad + + +@attrs.define +class NeoHookean(WarpPotentialFem): + class Materials(WarpPotentialFem.Materials): + lmbda: wp.array + mu: wp.array + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = { + **WarpPotentialFem.MATERIAL_FIELDS, + LAMBDA.value: MaterialField.CELL.floating(LAMBDA.value), + MU.value: MaterialField.CELL.floating(MU.value), + } + + energy_density_func: ClassVar[wp.Function] = cast("wp.Function", energy_density) + first_piola_kirchhoff_func: ClassVar[wp.Function] = cast( + "wp.Function", first_piola_kirchhoff + ) + hess_diag_func: ClassVar[wp.Function] = cast("wp.Function", hess_diag) + hess_prod_func: ClassVar[wp.Function] = cast("wp.Function", hess_prod) + hess_quad_func: ClassVar[wp.Function] = cast("wp.Function", hess_quad) + + energy_density_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_energy_density_kernel(energy_density_func) + ) + first_piola_kirchhoff_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_first_piola_kirchhoff_kernel(first_piola_kirchhoff_func) + ) + + fun_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_fun_kernel( + energy_density_func + ) + grad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_grad_kernel( + first_piola_kirchhoff_func + ) + hess_prod_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_prod_kernel( + hess_prod_func + ) + hess_diag_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_diag_kernel( + hess_diag_func + ) + hess_quad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_quad_kernel( + hess_quad_func + ) diff --git a/src/liblaf/apple/warp/fem/_stable_neo_hookean.py b/src/liblaf/apple/warp/fem/_stable_neo_hookean.py new file mode 100644 index 000000000..b98b712de --- /dev/null +++ b/src/liblaf/apple/warp/fem/_stable_neo_hookean.py @@ -0,0 +1,150 @@ +from collections.abc import Mapping +from typing import Any, ClassVar, cast + +import attrs +import warp as wp + +from liblaf.apple.common import LAMBDA, MU +from liblaf.apple.warp import math +from liblaf.apple.warp.model import MaterialField + +from . import func +from ._base import WarpPotentialFem + +floating = Any +mat33 = Any +mat43 = Any +Materials = Any + + +@wp.func +def energy_density(F: mat33, materials: Materials, cid: int) -> floating: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + I2 = func.I2(F) # float + J = func.I3(F) # float + return ( + F.dtype(0.5) * mu * (I2 - F.dtype(3.0)) + - mu * (J - F.dtype(1.0)) + + F.dtype(0.5) * la * math.square(J - F.dtype(1.0)) + ) + + +@wp.func +def first_piola_kirchhoff(F: mat33, materials: Materials, cid: int) -> mat33: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + return dPsi_dI2 * g2 + dPsi_dI3 * g3 + + +@wp.func +def hess_diag( + F: mat33, + dhdX: mat43, + materials: Materials, + cid: int, + *, + clamp_lambda: bool = True, # noqa: ARG001 +) -> mat33: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + # g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = la # float + # h2_diag = func.h2_diag(dhdX, g2) # mat43 + h3_diag = func.h3_diag(dhdX, g3) # mat43 + h5_diag = func.h5_diag(dhdX) # mat43 + h6_diag = func.h6_diag(dhdX, F) # mat43 + return ( + # d2Psi_dI22 * h2_diag + d2Psi_dI32 * h3_diag + dPsi_dI2 * h5_diag + dPsi_dI3 * h6_diag + ) + + +@wp.func +def hess_prod(F: mat33, p: mat43, dhdX: mat43, materials: Materials, cid: int) -> mat33: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + # g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = la # float + h3_prod = func.h3_prod(p, dhdX, g3) # mat43 + h5_prod = func.h5_prod(p, dhdX) # mat43 + h6_prod = func.h6_prod(p, dhdX, F) # mat43 + return d2Psi_dI32 * h3_prod + dPsi_dI2 * h5_prod + dPsi_dI3 * h6_prod + + +@wp.func +def hess_quad( + F: mat33, p: mat43, dhdX: mat43, materials: Materials, cid: int +) -> floating: + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + J = func.I3(F) # float + # g2 = func.g2(F) # mat33 + g3 = func.g3(F) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = la # float + h3_quad = func.h3_quad(p, dhdX, g3) # float + h5_quad = func.h5_quad(p, dhdX) # float + h6_quad = func.h6_quad(p, dhdX, F) # float + return d2Psi_dI32 * h3_quad + dPsi_dI2 * h5_quad + dPsi_dI3 * h6_quad + + +@attrs.define +class StableNeoHookean(WarpPotentialFem): + class Materials(WarpPotentialFem.Materials): + lmbda: wp.array + mu: wp.array + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = { + **WarpPotentialFem.MATERIAL_FIELDS, + LAMBDA.value: MaterialField.CELL.floating(LAMBDA.value), + MU.value: MaterialField.CELL.floating(MU.value), + } + + energy_density_func: ClassVar[wp.Function] = cast("wp.Function", energy_density) + first_piola_kirchhoff_func: ClassVar[wp.Function] = cast( + "wp.Function", first_piola_kirchhoff + ) + hess_diag_func: ClassVar[wp.Function] = cast("wp.Function", hess_diag) + hess_prod_func: ClassVar[wp.Function] = cast("wp.Function", hess_prod) + hess_quad_func: ClassVar[wp.Function] = cast("wp.Function", hess_quad) + + energy_density_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_energy_density_kernel(energy_density_func) + ) + first_piola_kirchhoff_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_first_piola_kirchhoff_kernel(first_piola_kirchhoff_func) + ) + + fun_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_fun_kernel( + energy_density_func + ) + grad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_grad_kernel( + first_piola_kirchhoff_func + ) + hess_prod_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_prod_kernel( + hess_prod_func + ) + hess_diag_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_diag_kernel( + hess_diag_func + ) + hess_quad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_quad_kernel( + hess_quad_func + ) diff --git a/src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py b/src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py new file mode 100644 index 000000000..752de1b8f --- /dev/null +++ b/src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py @@ -0,0 +1,169 @@ +from collections.abc import Mapping +from typing import Any, ClassVar, cast + +import attrs +import warp as wp + +from liblaf.apple.common import ACTIVATION_INV, LAMBDA, MU +from liblaf.apple.warp import math +from liblaf.apple.warp.model import MaterialField + +from . import func, utils +from ._base import WarpPotentialFem + +floating = Any +mat33 = Any +mat43 = Any +Materials = Any + + +@wp.func +def energy_density(F: mat33, materials: Materials, cid: int) -> floating: + A_inv = func.make_activation_mat33(materials.activation_inv[cid]) # mat33 + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + G = F @ A_inv # mat33 + I2 = func.I2(G) # float + J = func.I3(G) # float + return ( + F.dtype(0.5) * mu * (I2 - F.dtype(3.0)) + - mu * (J - F.dtype(1.0)) + + F.dtype(0.5) * la * math.square(J - F.dtype(1.0)) + ) + + +@wp.func +def first_piola_kirchhoff(F: mat33, materials: Materials, cid: int) -> mat33: + A_inv = func.make_activation_mat33(materials.activation_inv[cid]) # mat33 + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + G = F @ A_inv # mat33 + J = func.I3(G) # float + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + g2 = func.g2(G) # mat33 + g3 = func.g3(G) # mat33 + return (dPsi_dI2 * g2 + dPsi_dI3 * g3) @ wp.transpose(A_inv) + + +@wp.func +def hess_diag( + F: mat33, + dhdX: mat43, + materials: Materials, + cid: int, + *, + clamp_lambda: bool = True, # noqa: ARG001 +) -> mat33: + A_inv = func.make_activation_mat33(materials.activation_inv[cid]) # mat33 + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + G = F @ A_inv # mat33 + J = func.I3(G) # float + # g2 = func.g2(G) # mat33 + g3 = func.g3(G) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = la # float + # h2_diag = func.h2_diag(dhdX, g2) # mat43 + dhdX_A = dhdX @ A_inv # mat43 + h3_diag = func.h3_diag(dhdX_A, g3) # mat43 + h5_diag = func.h5_diag(dhdX_A) # mat43 + h6_diag = func.h6_diag(dhdX_A, G) # mat43 + return ( + # d2Psi_dI22 * h2_diag + d2Psi_dI32 * h3_diag + dPsi_dI2 * h5_diag + dPsi_dI3 * h6_diag + ) + + +@wp.func +def hess_prod(F: mat33, p: mat43, dhdX: mat43, materials: Materials, cid: int) -> mat33: + A_inv = func.make_activation_mat33(materials.activation_inv[cid]) # mat33 + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + G = F @ A_inv # mat33 + J = func.I3(G) # float + # g2 = func.g2(G) # mat33 + g3 = func.g3(G) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = la # float + dhdX_A = dhdX @ A_inv # mat43 + h3_prod = func.h3_prod(p, dhdX_A, g3) # mat43 + h5_prod = func.h5_prod(p, dhdX_A) # mat43 + h6_prod = func.h6_prod(p, dhdX_A, G) # mat43 + return d2Psi_dI32 * h3_prod + dPsi_dI2 * h5_prod + dPsi_dI3 * h6_prod + + +@wp.func +def hess_quad( + F: mat33, p: mat43, dhdX: mat43, materials: Materials, cid: int +) -> floating: + A_inv = func.make_activation_mat33(materials.activation_inv[cid]) # mat33 + la = materials.lmbda[cid] # float + mu = materials.mu[cid] # float + G = F @ A_inv # mat33 + J = func.I3(G) # float + # g2 = func.g2(G) # mat33 + g3 = func.g3(G) # mat33 + dPsi_dI2 = F.dtype(0.5) * mu # float + dPsi_dI3 = -mu + la * (J - F.dtype(1.0)) # float + # d2Psi_dI22 = F.dtype(0.0) # float + d2Psi_dI32 = la # float + dhdX_A = dhdX @ A_inv # mat43 + h3_quad = func.h3_quad(p, dhdX_A, g3) # float + h5_quad = func.h5_quad(p, dhdX_A) # float + h6_quad = func.h6_quad(p, dhdX_A, G) # float + return d2Psi_dI32 * h3_quad + dPsi_dI2 * h5_quad + dPsi_dI3 * h6_quad + + +@attrs.define +class StableNeoHookeanActive(WarpPotentialFem): + class Materials(WarpPotentialFem.Materials): + activation_inv: wp.array + lmbda: wp.array + mu: wp.array + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = { + **WarpPotentialFem.MATERIAL_FIELDS, + ACTIVATION_INV.value: MaterialField( + name=ACTIVATION_INV.value, + annotation=lambda dtype: wp.array1d(dtype=wp.types.vector(6, dtype)), + factory=utils.get_activation_inv, + ), + LAMBDA.value: MaterialField.CELL.floating(LAMBDA.value), + MU.value: MaterialField.CELL.floating(MU.value), + } + + energy_density_func: ClassVar[wp.Function] = cast("wp.Function", energy_density) + first_piola_kirchhoff_func: ClassVar[wp.Function] = cast( + "wp.Function", first_piola_kirchhoff + ) + hess_diag_func: ClassVar[wp.Function] = cast("wp.Function", hess_diag) + hess_prod_func: ClassVar[wp.Function] = cast("wp.Function", hess_prod) + hess_quad_func: ClassVar[wp.Function] = cast("wp.Function", hess_quad) + + energy_density_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_energy_density_kernel(energy_density_func) + ) + first_piola_kirchhoff_kernel: ClassVar[wp.Kernel] = ( + WarpPotentialFem.make_first_piola_kirchhoff_kernel(first_piola_kirchhoff_func) + ) + + fun_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_fun_kernel( + energy_density_func + ) + grad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_grad_kernel( + first_piola_kirchhoff_func + ) + hess_prod_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_prod_kernel( + hess_prod_func + ) + hess_diag_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_diag_kernel( + hess_diag_func + ) + hess_quad_kernel: ClassVar[wp.Kernel] = WarpPotentialFem.make_hess_quad_kernel( + hess_quad_func + ) diff --git a/src/liblaf/apple/warp/fem/func/__init__.py b/src/liblaf/apple/warp/fem/func/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/warp/fem/func/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/fem/func/__init__.pyi b/src/liblaf/apple/warp/fem/func/__init__.pyi new file mode 100644 index 000000000..b0eaca8d2 --- /dev/null +++ b/src/liblaf/apple/warp/fem/func/__init__.pyi @@ -0,0 +1,48 @@ +from ._deformation import ( + deformation_gradient, + deformation_gradient_jvp, + deformation_gradient_vjp, + gradient, +) +from ._gradient import g1, g2, g3 +from ._hess_diag import h1_diag, h2_diag, h3_diag, h4_diag, h5_diag, h6_diag +from ._hess_prod import h1_prod, h2_prod, h3_prod, h4_prod, h5_prod, h6_prod +from ._hess_quad import h1_quad, h2_quad, h3_quad, h4_quad, h5_quad, h6_quad +from ._identity import I1, I2, I3 +from ._misc import Qs, dRdF_vjp, get_cell_displacements, lambdas, make_activation_mat33 + +__all__ = [ + "I1", + "I2", + "I3", + "Qs", + "dRdF_vjp", + "deformation_gradient", + "deformation_gradient_jvp", + "deformation_gradient_vjp", + "g1", + "g2", + "g3", + "get_cell_displacements", + "gradient", + "h1_diag", + "h1_prod", + "h1_quad", + "h2_diag", + "h2_prod", + "h2_quad", + "h3_diag", + "h3_prod", + "h3_quad", + "h4_diag", + "h4_prod", + "h4_quad", + "h5_diag", + "h5_prod", + "h5_quad", + "h6_diag", + "h6_prod", + "h6_quad", + "lambdas", + "make_activation_mat33", +] diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_deformation.py b/src/liblaf/apple/warp/fem/func/_deformation.py similarity index 93% rename from src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_deformation.py rename to src/liblaf/apple/warp/fem/func/_deformation.py index 073a03f70..395590e13 100644 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_deformation.py +++ b/src/liblaf/apple/warp/fem/func/_deformation.py @@ -2,12 +2,11 @@ import warp as wp -mat43 = Any mat33 = Any +mat43 = Any @wp.func -@no_type_check def gradient(u: mat43, dhdX: mat43) -> mat33: r"""$\pdv{u}{x}$.""" return wp.transpose(u) @ dhdX @@ -21,14 +20,12 @@ def deformation_gradient(u: mat43, dhdX: mat43) -> mat33: @wp.func -@no_type_check def deformation_gradient_jvp(dhdX: mat43, p: mat43) -> mat33: r"""$\pdv{F}{x} p$.""" return wp.transpose(p) @ dhdX @wp.func -@no_type_check def deformation_gradient_vjp(dhdX: mat43, p: mat33) -> mat43: r"""$\pdv{F}{x}^T p$.""" return dhdX @ wp.transpose(p) diff --git a/src/liblaf/apple/warp/fem/func/_gradient.py b/src/liblaf/apple/warp/fem/func/_gradient.py new file mode 100644 index 000000000..de40a287b --- /dev/null +++ b/src/liblaf/apple/warp/fem/func/_gradient.py @@ -0,0 +1,40 @@ +from typing import Any, no_type_check + +import warp as wp + +mat33 = Any + + +@wp.func +def g1(R: mat33) -> mat33: + r"""Gradient of $I_1$ w.r.t. $F$. + + $$ + g_1 = vec(R) + $$ + """ + return R + + +@wp.func +def g2(F: mat33) -> mat33: + """Gradient of $I_2$ w.r.t. $F$. + + $$ + g_2 = 2 vec(F) + $$ + """ + return F.dtype(2.0) * F + + +@wp.func +@no_type_check +def g3(F: mat33) -> mat33: + r"""Gradient of $I_3$ w.r.t. $F$. + + $$ + g_3 = vec([f_1 \cp f_2, f_2 \cp f_0, f_0 \cp f_1]) + $$ + """ + f0, f1, f2 = F[:, 0], F[:, 1], F[:, 2] + return wp.matrix_from_cols(wp.cross(f1, f2), wp.cross(f2, f0), wp.cross(f0, f1)) diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_diag.py b/src/liblaf/apple/warp/fem/func/_hess_diag.py similarity index 91% rename from src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_diag.py rename to src/liblaf/apple/warp/fem/func/_hess_diag.py index f0602de24..8b7259c09 100644 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_diag.py +++ b/src/liblaf/apple/warp/fem/func/_hess_diag.py @@ -34,12 +34,11 @@ def h3_diag(dhdX: mat43, g3: mat33) -> mat43: @wp.func -@no_type_check def h4_diag( - dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp: bool = True + dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp_lambda: bool = True ) -> mat43: """$diag(h_4)$.""" - lambdas = _misc.lambdas(sigma, clamp=clamp) # vec3 + lambdas = _misc.lambdas(sigma, clamp=clamp_lambda) # vec3 Q0, Q1, Q2 = _misc.Qs(U, V) # mat33, mat33, mat33 W0 = deformation_gradient_vjp(dhdX, Q0) # mat43 W1 = deformation_gradient_vjp(dhdX, Q1) # mat43 @@ -68,7 +67,6 @@ def h5_diag(dhdX: mat43) -> mat43: @wp.func -@no_type_check def h6_diag(dhdX: mat43, F: mat33) -> mat43: # noqa: ARG001 """$diag(h_6)$.""" return wp.matrix(shape=(4, 3), dtype=dhdX.dtype) diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_prod.py b/src/liblaf/apple/warp/fem/func/_hess_prod.py similarity index 95% rename from src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_prod.py rename to src/liblaf/apple/warp/fem/func/_hess_prod.py index 4a38f73d5..6b1ea1363 100644 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_prod.py +++ b/src/liblaf/apple/warp/fem/func/_hess_prod.py @@ -35,12 +35,11 @@ def h3_prod(p: mat43, dhdX: mat43, g3: mat33) -> mat43: @wp.func -@no_type_check def h4_prod( - p: mat43, dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp: bool = True + p: mat43, dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp_lambda: bool = True ) -> mat43: """$h_4 p$.""" - lambdas = _misc.lambdas(sigma, clamp=clamp) # vec3 + lambdas = _misc.lambdas(sigma, clamp=clamp_lambda) # vec3 Q0, Q1, Q2 = _misc.Qs(U, V) dFdxT_q0 = deformation_gradient_vjp(dhdX, Q0) # mat33 dFdxT_q1 = deformation_gradient_vjp(dhdX, Q1) # mat33 @@ -53,7 +52,6 @@ def h4_prod( @wp.func -@no_type_check def h5_prod(p: mat43, dhdX: mat43) -> mat43: """$h_5 p$.""" dFdx_p = deformation_gradient_jvp(dhdX, p) # mat33 diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_quad.py b/src/liblaf/apple/warp/fem/func/_hess_quad.py similarity index 78% rename from src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_quad.py rename to src/liblaf/apple/warp/fem/func/_hess_quad.py index 91c4cfc84..49da4a920 100644 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_hess_quad.py +++ b/src/liblaf/apple/warp/fem/func/_hess_quad.py @@ -7,41 +7,40 @@ from . import _misc from ._deformation import deformation_gradient_jvp +floating = Any +vec3 = Any mat33 = Any mat43 = Any -scalar = Any -vec3 = Any @wp.func @no_type_check -def h1_quad(p: mat43, dhdX: mat43, g1: mat33) -> scalar: +def h1_quad(p: mat43, dhdX: mat43, g1: mat33) -> floating: """$p^T h_1 p$.""" return math.square(wp.ddot(deformation_gradient_jvp(dhdX, p), g1)) @wp.func @no_type_check -def h2_quad(p: mat43, dhdX: mat43, g2: mat33) -> scalar: +def h2_quad(p: mat43, dhdX: mat43, g2: mat33) -> floating: """$p^T h_2 p$.""" return math.square(wp.ddot(deformation_gradient_jvp(dhdX, p), g2)) @wp.func @no_type_check -def h3_quad(p: mat43, dhdX: mat43, g3: mat33) -> scalar: +def h3_quad(p: mat43, dhdX: mat43, g3: mat33) -> floating: """$p^T h_3 p$.""" return math.square(wp.ddot(deformation_gradient_jvp(dhdX, p), g3)) @wp.func -@no_type_check def h4_quad( - p: mat43, dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp: bool = True -) -> scalar: + p: mat43, dhdX: mat43, U: mat33, sigma: vec3, V: mat33, *, clamp_lambda: bool = True +) -> floating: """$p^T h_4 p$.""" dFdx_p = deformation_gradient_jvp(dhdX, p) # mat33 - lambdas = _misc.lambdas(sigma, clamp=clamp) # vec3 + lambdas = _misc.lambdas(sigma, clamp=clamp_lambda) # vec3 Q0, Q1, Q2 = _misc.Qs(U, V) return ( lambdas[0] * math.square(wp.ddot(Q0, dFdx_p)) @@ -51,8 +50,7 @@ def h4_quad( @wp.func -@no_type_check -def h5_quad(p: mat43, dhdX: mat43) -> scalar: +def h5_quad(p: mat43, dhdX: mat43) -> floating: """$p^T h_5 p$.""" dFdx_p = deformation_gradient_jvp(dhdX, p) # mat33 return dhdX.dtype(2.0) * math.fro_norm_square(dFdx_p) @@ -60,7 +58,7 @@ def h5_quad(p: mat43, dhdX: mat43) -> scalar: @wp.func @no_type_check -def h6_quad(p: mat43, dhdX: mat43, F: mat33) -> scalar: +def h6_quad(p: mat43, dhdX: mat43, F: mat33) -> floating: """$p^T h_6 p$.""" dFdx_p = deformation_gradient_jvp(dhdX, p) # mat33 f0 = F[:, 0] diff --git a/src/liblaf/apple/warp/fem/func/_identity.py b/src/liblaf/apple/warp/fem/func/_identity.py new file mode 100644 index 000000000..3ae909610 --- /dev/null +++ b/src/liblaf/apple/warp/fem/func/_identity.py @@ -0,0 +1,39 @@ +from typing import Any + +import warp as wp + +mat33 = Any +float_ = Any + + +@wp.func +def I1(S: mat33) -> float_: + r"""$I_1$. + + $$ + I_1 = \operatorname{tr}(R^T F) = \operatorname{tr}(S) + $$ + """ + return wp.trace(S) + + +@wp.func +def I2(F: mat33) -> float_: + r"""$I_2$. + + $$ + I_2 = I_C = \|F\|_F^2 + $$ + """ + return wp.ddot(F, F) + + +@wp.func +def I3(F: mat33) -> float_: + r"""$I_3$. + + $$ + I_3 = J = \det(F) + $$ + """ + return wp.determinant(F) diff --git a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_misc.py b/src/liblaf/apple/warp/fem/func/_misc.py similarity index 86% rename from src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_misc.py rename to src/liblaf/apple/warp/fem/func/_misc.py index f5fb3aeb5..925b7eb3d 100644 --- a/src/liblaf/apple/warp/energies/elastic/hyperelastic/func/_misc.py +++ b/src/liblaf/apple/warp/fem/func/_misc.py @@ -2,9 +2,12 @@ import warp as wp +int_ = Any vec3 = Any +vec4i = Any vec6 = Any mat33 = Any +mat43 = Any @wp.func @@ -16,6 +19,15 @@ def dRdF_vjp(M: mat33, lambdas: vec3, Q0: mat33, Q1: mat33, Q2: mat33) -> mat33: ) +@wp.func +@no_type_check +def get_cell_displacements( + u: wp.array1d[vec3], # (points,) + cell: vec4i, +) -> mat43: + return wp.matrix_from_rows(u[cell[0]], u[cell[1]], u[cell[2]], u[cell[3]]) # mat43 + + @wp.func @no_type_check def lambdas(sigma: vec3, *, clamp: bool = True) -> vec3: diff --git a/src/liblaf/apple/warp/fem/utils/__init__.py b/src/liblaf/apple/warp/fem/utils/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/warp/fem/utils/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/fem/utils/__init__.pyi b/src/liblaf/apple/warp/fem/utils/__init__.pyi new file mode 100644 index 000000000..1cfbf30f1 --- /dev/null +++ b/src/liblaf/apple/warp/fem/utils/__init__.pyi @@ -0,0 +1,3 @@ +from ._material import get_activation_inv, get_dhdX, get_dV + +__all__ = ["get_activation_inv", "get_dV", "get_dhdX"] diff --git a/src/liblaf/apple/warp/fem/utils/_material.py b/src/liblaf/apple/warp/fem/utils/_material.py new file mode 100644 index 000000000..76660fa24 --- /dev/null +++ b/src/liblaf/apple/warp/fem/utils/_material.py @@ -0,0 +1,51 @@ +import numpy as np +import torch +import warp as wp +from jaxtyping import Float +from torch import Tensor + +from liblaf.apple.common import ACTIVATION, ACTIVATION_INV, FRACTION +from liblaf.apple.torch.fem import Region +from liblaf.apple.warp.model import ArrayAnnotation + + +def get_dhdX(region: Region, annotation: ArrayAnnotation) -> wp.array: + return wp.from_torch(region.dhdX.contiguous(), dtype=annotation.dtype) + + +def get_dV(region: Region, annotation: ArrayAnnotation) -> wp.array: + dV: Float[Tensor, "c q"] = region.dV + fraction: Float[np.ndarray, " c"] | None = region.cell_data.get(FRACTION.vtk) + if fraction is not None: + fraction: Float[Tensor, " c"] = torch.as_tensor( + fraction, dtype=torch.get_default_dtype() + ) + dV: Float[Tensor, "c q"] = fraction[:, None] * dV + return wp.from_torch(dV.contiguous(), dtype=annotation.dtype) + + +def get_activation_inv(region: Region, annotation: ArrayAnnotation) -> wp.array: + activation_inv: Float[np.ndarray, "c 6"] | None = region.cell_data.get( + ACTIVATION_INV.vtk + ) + if activation_inv is not None: + return wp.from_numpy(activation_inv, annotation.dtype) + activation: Float[np.ndarray, "c 6"] | None = region.cell_data.get(ACTIVATION.vtk) + if activation is not None: + A: Float[np.ndarray, "c 3 3"] = np.zeros((region.mesh.n_cells, 3, 3)) + A[:, 0, 0] = 1.0 + activation[:, 0] + A[:, 1, 1] = 1.0 + activation[:, 1] + A[:, 2, 2] = 1.0 + activation[:, 2] + A[:, 0, 1] = A[:, 1, 0] = activation[:, 3] + A[:, 0, 2] = A[:, 2, 0] = activation[:, 4] + A[:, 1, 2] = A[:, 2, 1] = activation[:, 5] + A_inv: Float[np.ndarray, "c 3 3"] = np.linalg.inv(A) + activation_inv: Float[np.ndarray, "c 6"] = np.zeros((region.mesh.n_cells, 6)) + activation_inv[:, 0] = A_inv[:, 0, 0] - 1.0 + activation_inv[:, 1] = A_inv[:, 1, 1] - 1.0 + activation_inv[:, 2] = A_inv[:, 2, 2] - 1.0 + activation_inv[:, 3] = A_inv[:, 0, 1] + activation_inv[:, 4] = A_inv[:, 0, 2] + activation_inv[:, 5] = A_inv[:, 1, 2] + return wp.from_numpy(activation_inv, annotation.dtype) + return wp.zeros((region.mesh.n_cells,), annotation.dtype) diff --git a/src/liblaf/apple/warp/math/__init__.py b/src/liblaf/apple/warp/math/__init__.py index 97d0a5864..26eeb22d8 100644 --- a/src/liblaf/apple/warp/math/__init__.py +++ b/src/liblaf/apple/warp/math/__init__.py @@ -1,4 +1,5 @@ -import lazy_loader as lazy +from lazy_loader import attach_stub -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/math/__init__.pyi b/src/liblaf/apple/warp/math/__init__.pyi index 2f962050c..26c8683d1 100644 --- a/src/liblaf/apple/warp/math/__init__.pyi +++ b/src/liblaf/apple/warp/math/__init__.pyi @@ -1,4 +1,4 @@ -from ._misc import cw_square, fro_norm_square, square +from ._misc import cw_max_4x, cw_square, fro_norm_square, square from ._rotation import polar_rv, svd_rv -__all__ = ["cw_square", "fro_norm_square", "polar_rv", "square", "svd_rv"] +__all__ = ["cw_max_4x", "cw_square", "fro_norm_square", "polar_rv", "square", "svd_rv"] diff --git a/src/liblaf/apple/warp/math/_misc.py b/src/liblaf/apple/warp/math/_misc.py index 23560f934..b48e541ac 100644 --- a/src/liblaf/apple/warp/math/_misc.py +++ b/src/liblaf/apple/warp/math/_misc.py @@ -3,6 +3,13 @@ import warp as wp +@wp.func +def cw_max_4x(a: Any, b: Any) -> Any: + return wp.matrix_from_rows( + wp.max(a[0], b[0]), wp.max(a[1], b[1]), wp.max(a[2], b[2]), wp.max(a[3], b[3]) + ) + + @wp.func def cw_square(a: Any) -> Any: return wp.cw_mul(a, a) diff --git a/src/liblaf/apple/warp/math/_rotation.py b/src/liblaf/apple/warp/math/_rotation.py index 4d3677da6..57821029a 100644 --- a/src/liblaf/apple/warp/math/_rotation.py +++ b/src/liblaf/apple/warp/math/_rotation.py @@ -2,21 +2,21 @@ import warp as wp -mat33 = Any vec3 = Any +mat33 = Any @wp.func @no_type_check -def svd_rv(A: mat33) -> tuple[mat33, vec3, mat33]: - U, s, V = wp.svd3(A) - return U, s, V +def svd_rv(F: mat33) -> tuple[mat33, vec3, mat33]: + U, sigma, V = wp.svd3(F) + return U, sigma, V @wp.func @no_type_check -def polar_rv(A: mat33) -> tuple[mat33, mat33]: - U, s, V = svd_rv(A) +def polar_rv(F: mat33) -> tuple[mat33, mat33]: + U, sigma, V = svd_rv(F) R = U @ wp.transpose(V) - S = V @ wp.diag(s) @ wp.transpose(V) + S = V @ wp.diag(sigma) @ wp.transpose(V) return R, S diff --git a/src/liblaf/apple/warp/model/__init__.py b/src/liblaf/apple/warp/model/__init__.py index 97d0a5864..26eeb22d8 100644 --- a/src/liblaf/apple/warp/model/__init__.py +++ b/src/liblaf/apple/warp/model/__init__.py @@ -1,4 +1,5 @@ -import lazy_loader as lazy +from lazy_loader import attach_stub -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/model/__init__.pyi b/src/liblaf/apple/warp/model/__init__.pyi index b8425e796..05ff18ce5 100644 --- a/src/liblaf/apple/warp/model/__init__.pyi +++ b/src/liblaf/apple/warp/model/__init__.pyi @@ -1,6 +1,23 @@ from ._adapter import WarpModelAdapter -from ._builder import WarpModelBuilder -from ._energy import WarpEnergy +from ._material import ( + ArrayAnnotation, + MaterialField, + MaterialVar, + Struct, + StructInstance, + make_struct, +) from ._model import WarpModel +from ._potential import WarpPotential -__all__ = ["WarpEnergy", "WarpModel", "WarpModelAdapter", "WarpModelBuilder"] +__all__ = [ + "ArrayAnnotation", + "MaterialField", + "MaterialVar", + "Struct", + "StructInstance", + "WarpModel", + "WarpModelAdapter", + "WarpPotential", + "make_struct", +] diff --git a/src/liblaf/apple/warp/model/_adapter.py b/src/liblaf/apple/warp/model/_adapter.py index 386b661e9..3c8fbe3f5 100644 --- a/src/liblaf/apple/warp/model/_adapter.py +++ b/src/liblaf/apple/warp/model/_adapter.py @@ -1,118 +1,92 @@ -from collections.abc import Callable, Mapping +from collections.abc import Mapping +from typing import Any -import tlz +import attrs +import torch import warp as wp -import warp.jax_experimental -import warp.jax_experimental.ffi -from jaxtyping import Array, Float -from liblaf.peach import tree +from jaxtyping import Float +from torch import Tensor -import liblaf.apple.warp.types as wpt - -from ._energy import WarpEnergy from ._model import WarpModel -type Scalar = Float[Array, ""] -type Vector = Float[Array, "points dim"] -type EnergyParams = Mapping[str, Array] -type ModelParams = Mapping[str, EnergyParams] +type Scalar = Float[Tensor, ""] +type Full = Float[Tensor, "points dim"] -@tree.define +@attrs.define class WarpModelAdapter: - wrapped: WarpModel - - @property - def dim(self) -> int: - return self.wrapped.dim - - @property - def energies(self) -> Mapping[str, WarpEnergy]: - return self.wrapped.energies - - def update(self, u: Vector) -> None: - u_wp: wp.array = _to_warp(u) - self.wrapped.update(u_wp) - - def update_params(self, params: ModelParams) -> None: - self.wrapped.update_params(params) - - def fun(self, u: Vector) -> Scalar: - u_wp: wp.array = _to_warp(u) - output_wp: wp.array = wp.zeros((1,), dtype=wp.dtype_from_jax(u.dtype)) - self.wrapped.fun(u_wp, output_wp) - return wp.to_jax(output_wp)[0] - - def grad(self, u: Vector) -> Vector: - u_wp: wp.array = _to_warp(u) - output_wp: wp.array = wp.zeros_like(u_wp) - self.wrapped.grad(u_wp, output_wp) - return wp.to_jax(output_wp) - - def hess_diag(self, u: Vector) -> Vector: - u_wp: wp.array = _to_warp(u) - output_wp: wp.array = wp.zeros_like(u_wp) - self.wrapped.hess_diag(u_wp, output_wp) - return wp.to_jax(output_wp) - - def hess_prod(self, u: Vector, p: Vector) -> Vector: - output: Vector - (output,) = self._hess_prod_callable(u, p, output_dims=u.shape) - return output - - def hess_quad(self, u: Vector, p: Vector) -> Scalar: - u_wp: wp.array = _to_warp(u) - p_wp: wp.array = _to_warp(p) - output_wp: wp.array = wp.zeros((1,), dtype=wp.dtype_from_jax(u.dtype)) - self.wrapped.hess_quad(u_wp, p_wp, output_wp) - return wp.to_jax(output_wp)[0] - - def mixed_derivative_prod( - self, u: Vector, p: Vector - ) -> dict[str, dict[str, Array]]: - u_wp: wp.array = _to_warp(u) - p_wp: wp.array = _to_warp(p) - outputs_wp: dict[str, dict[str, wp.array]] = self.wrapped.mixed_derivative_prod( - u_wp, p_wp - ) - outputs: dict[str, dict[str, Array]] = tlz.valmap( - lambda energy_dict: tlz.valmap(wp.to_jax, energy_dict), outputs_wp - ) - return outputs - - def value_and_grad(self, u: Vector) -> tuple[Scalar, Vector]: - u_wp: wp.array = _to_warp(u) - value_wp: wp.array = wp.zeros((1,), dtype=wp.dtype_from_jax(u.dtype)) - grad_wp: wp.array = wp.zeros_like(u_wp) - self.wrapped.value_and_grad(u_wp, value_wp, grad_wp) - value: Scalar = wp.to_jax(value_wp)[0] - grad: Vector = wp.to_jax(grad_wp) - return value, grad - - def grad_and_hess_diag(self, u: Vector) -> tuple[Vector, Vector]: - u_wp: wp.array = _to_warp(u) - grad_wp: wp.array = wp.zeros_like(u_wp) - hess_diag_wp: wp.array = wp.zeros_like(u_wp) - self.wrapped.grad_and_hess_diag(u_wp, grad_wp, hess_diag_wp) - grad: Vector = wp.to_jax(grad_wp) - hess_diag: Vector = wp.to_jax(hess_diag_wp) - return grad, hess_diag - - @property - def _hess_prod_callable(self) -> Callable: - @warp.jax_experimental.jax_callable - def hess_prod_callable( - u: wp.array(dtype=wp.types.vector(self.dim, wpt.float_)), - p: wp.array(dtype=wp.types.vector(self.dim, wpt.float_)), - output: wp.array(dtype=wp.types.vector(self.dim, wpt.float_)), - ) -> None: - output.zero_() - self.wrapped.hess_prod(u, p, output) - - return hess_prod_callable - - -def _to_warp(u: Vector) -> wp.array: - _, dim = u.shape - u_wp: wp.array = wp.from_jax(u, wp.types.vector(dim, wp.dtype_from_jax(u.dtype))) - return u_wp + __wrapped__: WarpModel = attrs.field() + + def get_materials(self) -> dict[str, dict[str, Tensor]]: + materials: dict[str, dict[str, wp.array]] = self.__wrapped__.get_materials() + return { + pot_name: {mat_name: wp.to_torch(arr) for mat_name, arr in pot_mat.items()} + for pot_name, pot_mat in materials.items() + } + + def set_materials( + self, materials: Mapping[str, Mapping[str, wp.array | Tensor]] + ) -> None: + self.__wrapped__.set_materials(materials) + + def require_grad(self, materials: Mapping[str, Mapping[str, bool]]) -> None: + self.__wrapped__.require_grad(materials) + + def fun(self, u: Full) -> Scalar: + output: Scalar = torch.zeros((1,), dtype=u.dtype, device=u.device) + u_wp: wp.array = _from_torch_vec3(u) + output_wp: wp.array = _from_torch_float(output) + with _stream(u): + self.__wrapped__.fun(u_wp, output_wp) + return output[0] + + def grad(self, u: Full, output: Full) -> None: + u_wp: wp.array = _from_torch_vec3(u) + output_wp: wp.array = _from_torch_vec3(output) + with _stream(u): + self.__wrapped__.grad(u_wp, output_wp) + + def hess_diag(self, u: Full, output: Full) -> None: + u_wp: wp.array = _from_torch_vec3(u) + output_wp: wp.array = _from_torch_vec3(output) + with _stream(u): + self.__wrapped__.hess_diag(u_wp, output_wp) + + def hess_prod(self, u: Full, p: Full, output: Full) -> None: + u_wp: wp.array = _from_torch_vec3(u) + p_wp: wp.array = _from_torch_vec3(p) + output_wp: wp.array = _from_torch_vec3(output) + with _stream(u): + self.__wrapped__.hess_prod(u_wp, p_wp, output_wp) + + def hess_quad(self, u: Full, p: Full) -> Scalar: + output: Scalar = torch.zeros((1,), dtype=u.dtype, device=u.device) + u_wp: wp.array = _from_torch_vec3(u) + p_wp: wp.array = _from_torch_vec3(p) + output_wp: wp.array = _from_torch_float(output) + with _stream(u): + self.__wrapped__.hess_quad(u_wp, p_wp, output_wp) + return output[0] + + def mixed_derivative_prod(self, u: Full, p: Full) -> None: + u_wp: wp.array = _from_torch_vec3(u) + p_wp: wp.array = _from_torch_vec3(p) + with _stream(u): + self.__wrapped__.mixed_derivative_prod(u_wp, p_wp) + + +def _from_torch_float(x: Tensor) -> wp.array: + floating: Any = wp.dtype_from_torch(x.dtype) + return wp.from_torch(x, dtype=floating) + + +def _from_torch_vec3(x: Tensor) -> wp.array: + floating: Any = wp.dtype_from_torch(x.dtype) + vec3: Any = wp.types.vector(3, floating) + return wp.from_torch(x, dtype=vec3) + + +def _stream(x: Tensor) -> wp.ScopedStream: + stream_torch: torch.cuda.Stream = torch.cuda.current_stream(x.device) + stream_wp: wp.Stream = wp.stream_from_torch(stream_torch) + return wp.ScopedStream(stream_wp) diff --git a/src/liblaf/apple/warp/model/_builder.py b/src/liblaf/apple/warp/model/_builder.py deleted file mode 100644 index 1195e36b1..000000000 --- a/src/liblaf/apple/warp/model/_builder.py +++ /dev/null @@ -1,16 +0,0 @@ -from liblaf.peach import tree - -from ._energy import WarpEnergy -from ._model import WarpModel - - -@tree.define -class WarpModelBuilder: - energies: dict[str, WarpEnergy] = tree.field(factory=dict) - dim: int = tree.field(default=3, kw_only=True) - - def add_energy(self, energy: WarpEnergy) -> None: - self.energies[energy.id] = energy - - def finalize(self) -> WarpModel: - return WarpModel(dim=self.dim, energies=self.energies) diff --git a/src/liblaf/apple/warp/model/_energy.py b/src/liblaf/apple/warp/model/_energy.py deleted file mode 100644 index 020bf8f3d..000000000 --- a/src/liblaf/apple/warp/model/_energy.py +++ /dev/null @@ -1,51 +0,0 @@ -from collections.abc import Mapping, Sequence - -import warp as wp -from jaxtyping import Array, Float -from liblaf.peach import tree - -import liblaf.apple.warp.utils as wpu -from liblaf.apple.utils import IdMixin - -type EnergyParams = Mapping[str, Array] -type Scalar = Float[wp.array, ""] -type Vector = Float[wp.array, " N"] - - -@tree.define -class WarpEnergy(IdMixin): - requires_grad: Sequence[str] = tree.field(default=(), kw_only=True) - - def update(self, u: Vector) -> None: - pass - - def update_params(self, params: EnergyParams) -> None: - for name, value in params.items(): - param: wp.array = getattr(self, name) - wp.copy(param, wpu.to_warp(value, param.dtype)) - - def fun(self, u: Vector, output: Scalar) -> None: - raise NotImplementedError - - def grad(self, u: Vector, output: Vector) -> None: - raise NotImplementedError - - def hess_diag(self, u: Vector, output: Vector) -> None: - raise NotImplementedError - - def hess_prod(self, u: Vector, p: Vector, output: Vector) -> None: - raise NotImplementedError - - def hess_quad(self, u: Vector, p: Vector, output: Scalar) -> None: - raise NotImplementedError - - def mixed_derivative_prod(self, u: Vector, p: Vector) -> dict[str, wp.array]: - raise NotImplementedError - - def value_and_grad(self, u: Vector, value: Scalar, grad: Vector) -> None: - self.fun(u, value) - self.grad(u, grad) - - def grad_and_hess_diag(self, u: Vector, grad: Vector, hess_diag: Vector) -> None: - self.grad(u, grad) - self.hess_diag(u, hess_diag) diff --git a/src/liblaf/apple/warp/model/_material.py b/src/liblaf/apple/warp/model/_material.py new file mode 100644 index 000000000..5342bb22b --- /dev/null +++ b/src/liblaf/apple/warp/model/_material.py @@ -0,0 +1,117 @@ +from __future__ import annotations + +import functools +from collections.abc import Callable +from typing import Any, ClassVar, Protocol + +import attrs +import numpy as np +import pyvista as pv +import warp as wp + +from liblaf.apple.common import AttrName +from liblaf.apple.torch.fem import Region + + +class ArrayAnnotation(Protocol): + @property + def dtype(self) -> Any: ... + + +class StructInstance(Protocol): ... + + +class Struct(Protocol): + def __call__(self) -> StructInstance: ... + + +@attrs.frozen +class MaterialVar: + name: str + annotation: ArrayAnnotation + factory: Callable[[Region, ArrayAnnotation], wp.array] + + def from_region(self, region: Region) -> wp.array: + return self.factory(region, self.annotation) + + +@attrs.frozen +class MaterialFieldFactory: + association: pv.FieldAssociation + + def _get_data(self, region: Region, name: str) -> np.ndarray: + match self.association: + case pv.FieldAssociation.POINT: + return region.point_data[name] + case pv.FieldAssociation.CELL: + return region.cell_data[name] + case _: + raise NotImplementedError + + def floating(self, name: str) -> MaterialField: + vtk: str = AttrName.to_vtk(name) + return MaterialField( + name=name, + annotation=lambda dtype: wp.array1d(dtype=dtype), + factory=lambda region, annotation: wp.from_numpy( + self._get_data(region, vtk), dtype=annotation.dtype + ), + ) + + def vec3(self, name: str) -> MaterialField: + vtk: str = AttrName.to_vtk(name) + return MaterialField( + name=name, + annotation=lambda dtype: wp.array1d(dtype=wp.types.vector(3, dtype)), + factory=lambda region, annotation: wp.from_numpy( + self._get_data(region, vtk), dtype=annotation.dtype + ), + ) + + def vec6(self, name: str) -> MaterialField: + vtk: str = AttrName.to_vtk(name) + return MaterialField( + name=name, + annotation=lambda dtype: wp.array1d(dtype=wp.types.vector(6, dtype)), + factory=lambda region, annotation: wp.from_numpy( + self._get_data(region, vtk), dtype=annotation.dtype + ), + ) + + +@attrs.frozen +class MaterialField: + POINT: ClassVar[MaterialFieldFactory] = MaterialFieldFactory( + pv.FieldAssociation.POINT + ) + CELL: ClassVar[MaterialFieldFactory] = MaterialFieldFactory( + pv.FieldAssociation.CELL + ) + + name: str + annotation: Callable[[Any], ArrayAnnotation] + factory: Callable[[Region, ArrayAnnotation], wp.array] + + def make(self, dtype: Any) -> MaterialVar: + return MaterialVar( + name=self.name, annotation=self.annotation(dtype), factory=self.factory + ) + + +@functools.cache +def make_struct( + material_vars: tuple[MaterialVar, ...], module: str, qualname: str +) -> Struct: + annotations: dict[str, ArrayAnnotation] = { + var.name: var.annotation for var in material_vars + } + c: type = type( + "Materials", + (), + { + "__module__": module, + "__qualname__": f"{qualname}.Materials", + "__annotations__": annotations, + }, + ) + return wp.struct(c, module="unique") diff --git a/src/liblaf/apple/warp/model/_model.py b/src/liblaf/apple/warp/model/_model.py index c4f4203230..4992bb46a 100644 --- a/src/liblaf/apple/warp/model/_model.py +++ b/src/liblaf/apple/warp/model/_model.py @@ -1,63 +1,57 @@ from collections.abc import Mapping +import attrs import warp as wp -from jaxtyping import Array, Float -from liblaf.peach import tree +from torch import Tensor -from ._energy import WarpEnergy +from ._potential import WarpPotential -type EnergyParams = Mapping[str, Array] -type ModelParams = Mapping[str, EnergyParams] -type Scalar = Float[wp.array, ""] -type Vector = Float[wp.array, " N"] - -@tree.define +@attrs.define class WarpModel: - dim: int = tree.field(default=3, kw_only=True) - energies: dict[str, WarpEnergy] = tree.field(factory=dict) - - def update(self, u: Vector) -> None: - for energy in self.energies.values(): - energy.update(u) - - def update_params(self, params: ModelParams) -> None: - for name, energy_params in params.items(): - self.energies[name].update_params(energy_params) - - def fun(self, u: Vector, output: Scalar) -> None: - for energy in self.energies.values(): - energy.fun(u, output) - - def grad(self, u: Vector, output: Vector) -> None: - for energy in self.energies.values(): - energy.grad(u, output) - - def hess_diag(self, u: Vector, output: Vector) -> None: - for energy in self.energies.values(): - energy.hess_diag(u, output) - - def hess_prod(self, u: Vector, p: Vector, output: Vector) -> None: - for energy in self.energies.values(): - energy.hess_prod(u, p, output) - - def hess_quad(self, u: Vector, p: Vector, output: Scalar) -> None: - for energy in self.energies.values(): - energy.hess_quad(u, p, output) - - def mixed_derivative_prod( - self, u: Vector, p: Vector - ) -> dict[str, dict[str, wp.array]]: - output: dict[str, dict[str, wp.array]] = { - name: energy.mixed_derivative_prod(u, p) - for name, energy in self.energies.items() - } - return output + potentials: dict[str, WarpPotential] = attrs.field(factory=dict) - def value_and_grad(self, u: Vector, value: Scalar, grad: Vector) -> None: - for energy in self.energies.values(): - energy.value_and_grad(u, value, grad) + def get_materials(self) -> dict[str, dict[str, wp.array]]: + return { + name: potential.get_materials() + for name, potential in self.potentials.items() + } - def grad_and_hess_diag(self, u: Vector, grad: Vector, hess_diag: Vector) -> None: - for energy in self.energies.values(): - energy.grad_and_hess_diag(u, grad, hess_diag) + def set_materials( + self, materials: Mapping[str, Mapping[str, wp.array | Tensor]] + ) -> None: + for name, potential in self.potentials.items(): + if name in materials: + potential.set_materials(materials[name]) + + def require_grad(self, materials: Mapping[str, Mapping[str, bool]]) -> None: + for name, pot_materials in materials.items(): + self.potentials[name].require_grad(pot_materials) + + def fun(self, u: wp.array, output: wp.array) -> None: + for potential in self.potentials.values(): + potential.fun(u, output) + + def grad(self, u: wp.array, output: wp.array) -> None: + for potential in self.potentials.values(): + potential.grad(u, output) + + def hess_diag(self, u: wp.array, output: wp.array) -> None: + for potential in self.potentials.values(): + potential.hess_diag(u, output) + + def hess_prod(self, u: wp.array, p: wp.array, output: wp.array) -> None: + for potential in self.potentials.values(): + potential.hess_prod(u, p, output) + + def hess_quad(self, u: wp.array, p: wp.array, output: wp.array) -> None: + for potential in self.potentials.values(): + potential.hess_quad(u, p, output) + + def mixed_derivative_prod(self, u: wp.array, p: wp.array) -> None: + output: wp.array = wp.zeros_like(u) + tape: wp.Tape = wp.Tape() + with tape: + self.grad(u, output) + tape.zero() + tape.backward(grads={output: p}) diff --git a/src/liblaf/apple/warp/model/_potential.py b/src/liblaf/apple/warp/model/_potential.py new file mode 100644 index 000000000..00a1f1092 --- /dev/null +++ b/src/liblaf/apple/warp/model/_potential.py @@ -0,0 +1,104 @@ +import functools +from collections.abc import Mapping, Sequence +from typing import Any, ClassVar, Protocol, Self + +import attrs +import pyvista as pv +import torch +import warp as wp +from torch import Tensor + +from liblaf.apple.common import DEFAULT_POTENTIAL_NAME +from liblaf.apple.torch.fem import Region +from liblaf.apple.warp.utils import warp_default_dtype + +from ._material import ( + ArrayAnnotation, + MaterialField, + MaterialVar, + Struct, + StructInstance, + make_struct, +) + + +@attrs.define +class WarpPotential: + class Materials(Protocol): + pass + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = {} + materials: Materials = attrs.field(default=None, kw_only=True) + name: str = attrs.field(default=DEFAULT_POTENTIAL_NAME, kw_only=True) + + @functools.cached_property + def material_vars(self) -> Mapping[str, MaterialVar]: + dtype: Any = warp_default_dtype() + return {name: field.make(dtype) for name, field in self.MATERIAL_FIELDS.items()} + + @functools.cached_property + def material_struct(self) -> Struct: + cls: type = type(self) + return make_struct( + tuple(self.material_vars.values()), + module=cls.__module__, + qualname=cls.__qualname__, + ) + + def material_from_region( + self, region: Region, requires_grad: Sequence[str] = () + ) -> Any: + struct: Struct = self.material_struct + materials: StructInstance = struct() + for field in self.material_vars.values(): + value: wp.array = field.from_region(region) + setattr(materials, field.name, value) + for name in requires_grad: + arr: wp.array = getattr(materials, name) + arr.requires_grad = True + return materials + + @classmethod + def from_region( + cls, region: Region, requires_grad: Sequence[str] = (), **kwargs + ) -> Self: + self: Self = cls(**kwargs) + self.materials = self.material_from_region(region, requires_grad=requires_grad) + return self + + @classmethod + def from_pyvista( + cls, obj: pv.DataObject, requires_grad: Sequence[str] = (), **kwargs + ) -> Self: + region: Region = Region.from_pyvista(obj) + return cls.from_region(region, requires_grad=requires_grad, **kwargs) + + def get_materials(self) -> dict[str, wp.array]: + return {name: getattr(self.materials, name) for name in self.MATERIAL_FIELDS} + + def set_materials(self, materials: Mapping[str, wp.array | Tensor]) -> None: + for name, value in materials.items(): + if torch.is_tensor(value): + annotation: ArrayAnnotation = self.material_vars[name].annotation + value: wp.array = wp.from_torch(value, annotation.dtype) # noqa: PLW2901 + setattr(self.materials, name, value) + + def require_grad(self, materials: Mapping[str, bool]) -> None: + for name, requires_grad in materials.items(): + arr: wp.array = getattr(self.materials, name) + arr.requires_grad = requires_grad + + def fun(self, u: wp.array, output: wp.array) -> None: + raise NotImplementedError + + def grad(self, u: wp.array, output: wp.array) -> None: + raise NotImplementedError + + def hess_diag(self, u: wp.array, output: wp.array) -> None: + raise NotImplementedError + + def hess_prod(self, u: wp.array, p: wp.array, output: wp.array) -> None: + raise NotImplementedError + + def hess_quad(self, u: wp.array, p: wp.array, output: wp.array) -> None: + raise NotImplementedError diff --git a/src/liblaf/apple/warp/potential/__init__.py b/src/liblaf/apple/warp/potential/__init__.py new file mode 100644 index 000000000..26eeb22d8 --- /dev/null +++ b/src/liblaf/apple/warp/potential/__init__.py @@ -0,0 +1,5 @@ +from lazy_loader import attach_stub + +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/potential/__init__.pyi b/src/liblaf/apple/warp/potential/__init__.pyi new file mode 100644 index 000000000..fcdd7478a --- /dev/null +++ b/src/liblaf/apple/warp/potential/__init__.pyi @@ -0,0 +1,3 @@ +from ._ext_force import ExternalForce + +__all__ = ["ExternalForce"] diff --git a/src/liblaf/apple/warp/potential/_ext_force.py b/src/liblaf/apple/warp/potential/_ext_force.py new file mode 100644 index 000000000..a1b7ec65e --- /dev/null +++ b/src/liblaf/apple/warp/potential/_ext_force.py @@ -0,0 +1,92 @@ +from collections.abc import Mapping, Sequence +from typing import Any, ClassVar, Self, no_type_check, override + +import attrs +import warp as wp + +from liblaf.apple.common import FORCE, GLOBAL_POINT_ID +from liblaf.apple.torch.fem import Region +from liblaf.apple.warp.model import MaterialField, WarpPotential + +floating = Any +vec3 = Any + + +@wp.kernel +@no_type_check +def fun_kernel( + force: wp.array1d[vec3], + indices: wp.array1d[wp.int32], + u: wp.array1d[vec3], + output: wp.array1d[floating], +) -> None: + tid = wp.tid() # int + vid = indices[tid] # int + W = -wp.dot(force[tid], u[vid]) # float + wp.atomic_add(output, 0, W) + + +@wp.kernel +@no_type_check +def grad_kernel( + force: wp.array1d[vec3], indices: wp.array1d[wp.int32], output: wp.array1d[vec3] +) -> None: + tid = wp.tid() # int + vid = indices[tid] # int + f = -force[tid] # vec3 + wp.atomic_add(output, vid, f) + + +@attrs.define +class ExternalForce(WarpPotential): + class Materials(WarpPotential.Materials): + force: wp.array + + MATERIAL_FIELDS: ClassVar[Mapping[str, MaterialField]] = { + **WarpPotential.MATERIAL_FIELDS, + FORCE.value: MaterialField.POINT.vec3(FORCE.value), + } + + indices: wp.array[wp.int32] + materials: Materials = attrs.field(default=None, kw_only=True) + + @classmethod + @override + def from_region( + cls, region: Region, requires_grad: Sequence[str] = (), **kwargs + ) -> Self: + indices: wp.array = wp.from_numpy( + region.mesh.point_data[GLOBAL_POINT_ID.vtk], wp.int32 + ) + self: Self = cls(indices=indices, **kwargs) + self.materials = self.material_from_region(region, requires_grad=requires_grad) + return self + + @override + def fun(self, u: wp.array, output: wp.array) -> None: + wp.launch( + fun_kernel, + dim=self.indices.shape, + inputs=[self.materials.force, self.indices, u, output], + ) + + @override + def grad(self, u: wp.array, output: wp.array) -> None: + del u + wp.launch( + grad_kernel, + dim=self.indices.shape, + inputs=[self.materials.force, self.indices, output], + ) + + @override + def hess_diag(self, u: wp.array, output: wp.array) -> None: + pass + + @override + def hess_prod(self, u: wp.array, p: wp.array, output: wp.array) -> None: + pass + + @override + def hess_quad(self, u: wp.array, p: wp.array, output: wp.array) -> None: + pass diff --git a/src/liblaf/apple/warp/types.py b/src/liblaf/apple/warp/types.py deleted file mode 100644 index 7666bc7cf..000000000 --- a/src/liblaf/apple/warp/types.py +++ /dev/null @@ -1,10 +0,0 @@ -import jax -import warp as wp - -float_ = wp.float64 if jax.config.read("jax_enable_x64") else wp.float32 -int_ = wp.int32 -mat33 = wp.types.matrix((3, 3), float_) -mat43 = wp.types.matrix((4, 3), float_) -vec3 = wp.types.vector(3, float_) -vec4i = wp.types.vector(4, int_) -vec6 = wp.types.vector(6, float_) diff --git a/src/liblaf/apple/warp/utils/__init__.py b/src/liblaf/apple/warp/utils/__init__.py index 97d0a5864..26eeb22d8 100644 --- a/src/liblaf/apple/warp/utils/__init__.py +++ b/src/liblaf/apple/warp/utils/__init__.py @@ -1,4 +1,5 @@ -import lazy_loader as lazy +from lazy_loader import attach_stub -__getattr__, __dir__, __all__ = lazy.attach_stub(__name__, __file__) -del lazy +__getattr__, __dir__, __all__ = attach_stub(__name__, __file__) + +del attach_stub diff --git a/src/liblaf/apple/warp/utils/__init__.pyi b/src/liblaf/apple/warp/utils/__init__.pyi index 27f87291e..3ba151369 100644 --- a/src/liblaf/apple/warp/utils/__init__.pyi +++ b/src/liblaf/apple/warp/utils/__init__.pyi @@ -1,3 +1,4 @@ -from ._to_warp import to_warp +from ._dtype import warp_default_dtype +from ._struct import warp_struct -__all__ = ["to_warp"] +__all__ = ["warp_default_dtype", "warp_struct"] diff --git a/src/liblaf/apple/warp/utils/_dtype.py b/src/liblaf/apple/warp/utils/_dtype.py new file mode 100644 index 000000000..8d248939d --- /dev/null +++ b/src/liblaf/apple/warp/utils/_dtype.py @@ -0,0 +1,8 @@ +from typing import Any + +import torch +import warp as wp + + +def warp_default_dtype() -> Any: + return wp.dtype_from_torch(torch.get_default_dtype()) diff --git a/src/liblaf/apple/warp/utils/_struct.py b/src/liblaf/apple/warp/utils/_struct.py new file mode 100644 index 000000000..ccdd1db9e --- /dev/null +++ b/src/liblaf/apple/warp/utils/_struct.py @@ -0,0 +1,43 @@ +"""Decorators for dtype-specialized Warp structs.""" + +from typing import Any, cast + +import attrs +import warp as wp +from warp._src.codegen import Struct, StructInstance + +from ._dtype import warp_default_dtype + + +@attrs.define +class _WarpStruct: + __wrapped__: type + _cache: dict[Any, Struct] = attrs.field(factory=dict, init=False) + + def __call__(self, *args, **kwargs) -> StructInstance: + dtype: Any = warp_default_dtype() + return self[dtype](*args, **kwargs) + + def __getattr__(self, name: str) -> Any: + dtype: Any = warp_default_dtype() + return getattr(self[dtype], name) + + def __getitem__(self, key: Any) -> Struct: + if key not in self._cache: + c: type = type( + self.__wrapped__.__name__, + (self.__wrapped__,), + { + "__module__": self.__wrapped__.__module__, + "__qualname__": self.__wrapped__.__qualname__, + "__annotations__": self.__wrapped__.__annotations_factory__(key), # ty:ignore[unresolved-attribute] + }, + ) + self._cache[key] = wp.struct(c, module="unique") + return self._cache[key] + + +def warp_struct[T: type](cls: T) -> T: + if not hasattr(cls, "__annotations_factory__"): + return cast("T", wp.struct(cls)) + return cast("T", _WarpStruct(cls)) diff --git a/src/liblaf/apple/warp/utils/_to_warp.py b/src/liblaf/apple/warp/utils/_to_warp.py deleted file mode 100644 index 23c48159b..000000000 --- a/src/liblaf/apple/warp/utils/_to_warp.py +++ /dev/null @@ -1,73 +0,0 @@ -import functools -from collections.abc import Callable -from typing import Any, overload - -import attrs -import jax -import numpy as np -import warp as wp -from jaxtyping import Array - -type WarpDType = Any - - -@attrs.define -class Adapter: - array_from: Callable[..., wp.array] - dtype_from: Callable[[Any], Any] - dtype_to: Callable[[Any], Any] - - -@overload -def to_warp( # pyright: ignore[reportInconsistentOverload] - arr: np.ndarray | Array, - dtype: int | tuple[int, int] | WarpDType | None = None, - *, - requires_grad: bool = ..., -) -> wp.array: ... -def to_warp(arr: np.ndarray | Array, dtype: Any = None, **kwargs) -> wp.array: - adapter: Adapter = _registry(arr) - if dtype is None: - return adapter.array_from(arr, **kwargs) - if isinstance(dtype, int): - length: int = dtype - return adapter.array_from( - arr, dtype=wp.types.vector(length, adapter.dtype_from(arr.dtype)), **kwargs - ) - if isinstance(dtype, tuple): - shape: tuple[int, int] = dtype - return adapter.array_from( - arr, dtype=wp.types.matrix(shape, adapter.dtype_from(arr.dtype)), **kwargs - ) - return adapter.array_from( - arr.astype(adapter.dtype_to(_type_scalar_type(dtype))), dtype, **kwargs - ) - - -@functools.singledispatch -def _registry(_arr: Any) -> Any: - return Adapter( - array_from=wp.from_numpy, - dtype_from=wp.dtype_from_numpy, - dtype_to=wp.dtype_to_numpy, - ) - - -@_registry.register(np.ndarray) -def _registry_numpy(_arr: np.ndarray) -> Adapter: - return Adapter( - array_from=wp.from_numpy, - dtype_from=wp.dtype_from_numpy, - dtype_to=wp.dtype_to_numpy, - ) - - -@_registry.register(jax.Array) -def _registry_jax(_arr: jax.Array) -> Adapter: - return Adapter( - array_from=wp.from_jax, dtype_from=wp.dtype_from_jax, dtype_to=wp.dtype_to_jax - ) - - -def _type_scalar_type(dtype: Any) -> Any: - return getattr(dtype, "_wp_scalar_type_", dtype) diff --git a/tests/conftest.py b/tests/conftest.py deleted file mode 100644 index 71176ddc7..000000000 --- a/tests/conftest.py +++ /dev/null @@ -1,16 +0,0 @@ -import hypothesis -import jax -import pytest -import warp as wp - - -def pytest_configure(config: pytest.Config) -> None: # noqa: ARG001 - hypothesis.settings.register_profile("default", max_examples=1, deadline=None) - jax.config.update("jax_check_tracer_leaks", True) # noqa: FBT003 - jax.config.update("jax_debug_nans", True) # noqa: FBT003 - jax.config.update("jax_default_matmul_precision", "highest") - jax.config.update("jax_enable_x64", True) # noqa: FBT003 - wp.config.mode = "release" # "debug" is too slow - wp.config.verbose = True - wp.config.verbose_warnings = True - wp.init() diff --git a/tests/forward/test_static_simulation.py b/tests/forward/test_static_simulation.py new file mode 100644 index 000000000..3530db7b1 --- /dev/null +++ b/tests/forward/test_static_simulation.py @@ -0,0 +1,93 @@ +import jax +import numpy as np +import pytest +import pyvista as pv +import warp as wp + +jax.config.update("jax_enable_x64", val=True) + + +pytestmark = pytest.mark.skipif( + jax.default_backend() != "gpu", + reason="Warp JAX FFI is registered for the active GPU backend", +) + + +def _make_embedded_tetra_mesh(mu_name: str) -> pv.UnstructuredGrid: + points = np.array( + [ + [0.0, 0.0, 0.0], + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0], + [0.0, 0.0, 1.0], + [0.25, 0.25, 0.25], + ], + dtype=np.float64, + ) + cells = np.array( + [ + 4, + 0, + 1, + 2, + 4, + 4, + 0, + 1, + 4, + 3, + 4, + 0, + 4, + 2, + 3, + 4, + 4, + 1, + 2, + 3, + ], + dtype=np.int64, + ) + cell_types = np.full(4, pv.CellType.TETRA, dtype=np.uint8) + mesh = pv.UnstructuredGrid(cells, cell_types, points) + mesh.cell_data[mu_name] = np.ones(mesh.n_cells, dtype=np.float64) + return mesh + + +def test_forward_static_simulation_end_to_end() -> None: + from liblaf.apple.common import FIXED_MASK, FIXED_VALUE, MU + from liblaf.apple.forward import Forward, ModelBuilder + from liblaf.apple.warp.fem import Arap + + wp.init() + + mesh = _make_embedded_tetra_mesh(MU.vtk) + builder = ModelBuilder() + builder.add_vertices(mesh) + + fixed_mask = np.zeros((mesh.n_points, 3), dtype=bool) + fixed_value = np.zeros((mesh.n_points, 3), dtype=np.float64) + fixed_mask[:4, :] = True + fixed_value[3] = np.array([0.2, -0.1, 0.15]) + mesh.point_data[FIXED_MASK.vtk] = fixed_mask + mesh.point_data[FIXED_VALUE.vtk] = fixed_value + + builder.add_fixed(mesh) + builder.add_potential(Arap.from_pyvista(mesh)) + model = builder.finalize() + forward = Forward(model) + + initial_energy = float(forward.problem.fun(forward.state)) + solution = forward.step() + final_energy = float(forward.problem.fun(forward.state)) + + assert solution.result.name == "PRIMARY_SUCCESS" + assert model.n_free == 3 + assert np.isfinite(initial_energy) + assert np.isfinite(final_energy) + assert final_energy < initial_energy + + u_full = np.asarray(forward.state.u) + np.testing.assert_allclose(u_full[:4], fixed_value[:4]) + np.testing.assert_allclose(u_full[4], [0.05, -0.025, 0.0375], atol=1e-8) diff --git a/tests/jax/math/test_rotation.py b/tests/jax/math/test_rotation.py deleted file mode 100644 index 8bebeac5d..000000000 --- a/tests/jax/math/test_rotation.py +++ /dev/null @@ -1,41 +0,0 @@ -import hypothesis -import jax.numpy as jnp -import numpy as np -from jaxtyping import Array, Float - -from liblaf.apple.jax import math, testing - -ATOL: float = 1e-7 - -type Mat33 = Float[Array, "*batch 3 3"] -type Vec3 = Float[Array, "*batch 3"] - - -@hypothesis.given(testing.matrices((3, 3))) -def test_svd_rv(F: Mat33) -> None: - U: Mat33 - S: Vec3 - Vh: Mat33 - U, S, Vh = math.svd_rv(F) - np.testing.assert_allclose( - U.mT @ U, jnp.broadcast_to(jnp.identity(3), F.shape), atol=ATOL - ) - np.testing.assert_allclose(jnp.linalg.det(U), 1.0) - np.testing.assert_allclose( - Vh.mT @ Vh, jnp.broadcast_to(jnp.identity(3), F.shape), atol=ATOL - ) - np.testing.assert_allclose(jnp.linalg.det(Vh), 1.0) - S: Mat33 = S[..., jnp.newaxis] * jnp.identity(3) - np.testing.assert_allclose(U @ S @ Vh, F, atol=ATOL) - - -@hypothesis.given(testing.matrices((3, 3))) -def test_polar_rv(F: Mat33) -> None: - R: Mat33 - S: Mat33 - R, S = math.polar_rv(F) - np.testing.assert_allclose( - R.mT @ R, jnp.broadcast_to(jnp.identity(3), F.shape), atol=ATOL - ) - np.testing.assert_allclose(jnp.linalg.det(R), 1.0) - np.testing.assert_allclose(R @ S, F, atol=ATOL) diff --git a/tests/model/test_forward.py b/tests/model/test_forward.py deleted file mode 100644 index 35bc02429..000000000 --- a/tests/model/test_forward.py +++ /dev/null @@ -1,33 +0,0 @@ -import jax.numpy as jnp -import numpy as np -import pyvista as pv -from liblaf.peach.optim import PNCG - -from liblaf.apple import Forward, Model, ModelBuilder -from liblaf.apple.constants import DIRICHLET_MASK, DIRICHLET_VALUE, MU -from liblaf.apple.warp import Arap - - -def test_forward() -> None: - mesh: pv.UnstructuredGrid = pv.examples.download_letter_a() # pyright: ignore[reportAssignmentType] - mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) - mesh.point_data[DIRICHLET_MASK] = mesh.points[:, 1] < mesh.bounds.y_min + 0.1 * ( - mesh.bounds.y_max - mesh.bounds.y_min - ) - mesh.point_data[DIRICHLET_VALUE] = np.zeros((mesh.n_points, 3)) - - builder = ModelBuilder() - mesh = builder.assign_global_ids(mesh) - builder.add_dirichlet(mesh) - elastic: Arap = Arap.from_pyvista(mesh) - builder.add_energy(elastic) - - model: Model = builder.finalize() - rng: np.random.Generator = np.random.default_rng() - model.u_free = jnp.asarray( - rng.uniform(-mesh.length, mesh.length, model.u_free.shape) - ) - forward = Forward(model, optimizer=PNCG(max_steps=1000, rtol=1e-15)) - solution: PNCG.Solution = forward.step() - assert solution.success - np.testing.assert_allclose(model.u_full, 0.0, atol=1e-3 * mesh.length) diff --git a/tests/model/test_inverse.py b/tests/model/test_inverse.py deleted file mode 100644 index 21b032aa0..000000000 --- a/tests/model/test_inverse.py +++ /dev/null @@ -1,100 +0,0 @@ -from collections.abc import Mapping -from typing import override - -import jax.numpy as jnp -import numpy as np -import pytest -import pyvista as pv -from jaxtyping import Array, Float, Integer -from liblaf.peach import tree -from liblaf.peach.optim import Optimizer - -from liblaf.apple import Forward, Inverse, Model, ModelBuilder, Phace -from liblaf.apple.constants import ( - ACTIVATION, - DIRICHLET_MASK, - DIRICHLET_VALUE, - LAMBDA, - MU, - MUSCLE_FRACTION, - POINT_ID, -) - -type EnergyParams = Mapping[str, Array] -type ModelParams = Mapping[str, EnergyParams] - - -@pytest.fixture(scope="package") -def mesh() -> pv.UnstructuredGrid: - mesh: pv.UnstructuredGrid = pv.examples.download_tetrahedron() # pyright: ignore[reportAssignmentType] - mesh.point_data[DIRICHLET_MASK] = mesh.points[:, 1] < mesh.bounds.y_min + 1e-3 * ( - mesh.bounds.y_max - mesh.bounds.y_min - ) - mesh.point_data[DIRICHLET_VALUE] = np.zeros((mesh.n_points, 3)) - mesh.cell_data[LAMBDA] = np.full((mesh.n_cells,), 1.0) - mesh.cell_data[MU] = np.full((mesh.n_cells,), 1.0) - mesh.cell_data[MUSCLE_FRACTION] = np.full((mesh.n_cells,), 0.5) - - rng: np.random.Generator = np.random.default_rng() - mesh.cell_data[ACTIVATION] = rng.uniform(-1.0, 1.0, (mesh.n_cells, 6)) - - return mesh - - -@pytest.fixture(scope="package") -def model(mesh: pv.UnstructuredGrid) -> Model: - builder = ModelBuilder() - mesh = builder.assign_global_ids(mesh) - builder.add_dirichlet(mesh) - elastic: Phace = Phace.from_pyvista( - mesh, id="elastic", requires_grad=["activation"] - ) - builder.add_energy(elastic) - model: Model = builder.finalize() - return model - - -def test_inverse(mesh: pv.UnstructuredGrid, model: Model) -> None: - @tree.define - class InverseActivation(Inverse): - surface_idx: Integer[Array, " surface"] - target: Float[Array, "surface dim"] - - @tree.define - class Params(Inverse.Params): - activation: Float[Array, "cells 6"] - - @tree.define - class Aux(Inverse.Aux): - pass - - @override - def loss( - self, u: Float[Array, "points dim"], params: ModelParams - ) -> tuple[Float[Array, ""], Aux]: - loss: Float[Array, ""] = 0.5 * jnp.sum( - jnp.square(u[self.surface_idx] - self.target) - ) - return loss, self.Aux() - - @override - def make_params(self, params: Params) -> ModelParams: # pyright: ignore[reportIncompatibleMethodOverride] - return {"elastic": {"activation": params.activation}} - - forward = Forward(model) - forward.step() - - surface: pv.PolyData = mesh.extract_surface() # pyright: ignore[reportAssignmentType] - surface_idx: Integer[Array, " surface"] = jnp.asarray(surface.point_data[POINT_ID]) - target: Float[Array, "surface dim"] = forward.u_full[surface_idx] - - inverse = InverseActivation(forward, surface_idx=surface_idx, target=target) - params = InverseActivation.Params(activation=jnp.zeros((mesh.n_cells, 6))) - solution: Optimizer.Solution = inverse.solve(params) - assert solution.success - - forward.update_params(inverse.make_params(solution.params)) - forward.step() - np.testing.assert_allclose( - forward.u_full[surface_idx], target, atol=1e-3 * mesh.length - ) diff --git a/tests/warp/energies/elastic/hyperelastic/common.py b/tests/warp/energies/elastic/hyperelastic/common.py deleted file mode 100644 index 65f1da1d2..000000000 --- a/tests/warp/energies/elastic/hyperelastic/common.py +++ /dev/null @@ -1,127 +0,0 @@ -from collections.abc import Callable, Mapping, Sequence - -import jax -import jax.numpy as jnp -import numpy as np -import pyvista as pv -import warp as wp -from jaxtyping import Array, ArrayLike, Float, Key - -import liblaf.apple.warp.utils as wpu -from liblaf.apple import Model -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic import Hyperelastic - -type EnergyParams = Mapping[str, Array] -type Full = Float[Array, "points 3"] -type ModelParams = Mapping[str, EnergyParams] -type Scalar = Float[Array, ""] - - -EPS: float = 1e-6 - - -def check_grad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - u: Full = rand_u(seed, mesh) - testing.check_grad(model.fun, model.grad, u, rtol=1e-3) - - -def check_grad_direction(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - u: Full = rand_u(seed, mesh) - g: Full = model.grad(u) - f0 = model.fun(u) - f1 = model.fun(u + EPS * g) - assert f0 < f1 - - -def check_hess_diag(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - def hess_diag_from_quad(quad: Callable, u: Full) -> Full: - diag_np: np.ndarray = np.zeros_like(u) - for ijk in np.ndindex(*u.shape): - p: Full = jnp.zeros_like(u) - p = p.at[ijk].set(1.0) - diag_np[ijk] = quad(u, p) - diag: Full = jnp.asarray(diag_np) - return diag - - u: Full = rand_u(seed, mesh) - actual: Full = model.hess_diag(u) - expected: Full = hess_diag_from_quad(model.hess_quad, u) - np.testing.assert_allclose(actual, expected, rtol=1e-3) - - -def check_hess_prod(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - u: Full = rand_u(seed, mesh) - testing.check_jvp(model.grad, model.hess_prod, u, rtol=1e-3) - - -def check_hess_quad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - u: Full = rand_u(seed, mesh) - p: Full = rand_u(seed + 1, mesh) - actual: Scalar = model.hess_quad(u, p) - expected: Scalar = jnp.vdot(p, model.hess_prod(u, p)) - np.testing.assert_allclose(actual, expected, rtol=1e-3) - - -def check_mixed_derivative_prod( - seed: int, - model: Model, - mesh: pv.UnstructuredGrid, - *, - param_name: str, - param_shape: Sequence[int], - minval: float = -1.0, - maxval: float = 1.0, -) -> None: - u: Full = rand_u(seed, mesh) - p: Full = rand_u(seed + 1, mesh) - - def f(q: Array) -> Scalar: - energy: Hyperelastic = model.warp.energies["elastic"] # pyright: ignore[reportAssignmentType] - param: wp.array = getattr(energy.params, param_name) - wp.copy(param, wpu.to_warp(q, param.dtype)) - return jnp.vdot(p, model.grad(u)) - - def f_jvp(q: Array, dq: Array) -> Scalar: - energy: Hyperelastic = model.warp.energies["elastic"] # pyright: ignore[reportAssignmentType] - param: wp.array = getattr(energy.params, param_name) - wp.copy(param, wpu.to_warp(q, param.dtype)) - grads: ModelParams = model.mixed_derivative_prod(u, p) - return jnp.vdot(grads["elastic"][param_name], dq) - - key: Key = jax.random.key(seed) - mu: Float[Array, " ..."] = jax.random.uniform( - key, param_shape, minval=minval, maxval=maxval - ) - testing.check_jvp(f, f_jvp, mu, atol=1e-13, rtol=1e-3) - - -def check_value_and_grad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - u: Full = rand_u(seed, mesh) - value_expected: Scalar = model.fun(u) - grad_expected: Full = model.grad(u) - value_actual: Scalar - grad_actual: Full - value_actual, grad_actual = model.value_and_grad(u) - np.testing.assert_allclose(value_actual, value_expected, rtol=1e-3) - np.testing.assert_allclose(grad_actual, grad_expected, rtol=1e-3) - - -def check_grad_and_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - u: Full = rand_u(seed, mesh) - grad_expected: Full = model.grad(u) - hess_diag_expected: Full = model.hess_diag(u) - grad_actual: Full - hess_diag_actual: Full - grad_actual, hess_diag_actual = model.grad_and_hess_diag(u) - np.testing.assert_allclose(grad_actual, grad_expected, rtol=1e-3) - np.testing.assert_allclose(hess_diag_actual, hess_diag_expected, rtol=1e-3) - - -def rand_u(seed: ArrayLike, mesh: pv.UnstructuredGrid) -> Full: - key: Key = jax.random.key(seed) - return jax.random.uniform( - key, (mesh.n_points, 3), minval=-mesh.length, maxval=mesh.length - ) diff --git a/tests/warp/energies/elastic/hyperelastic/func/test_gradients.py b/tests/warp/energies/elastic/hyperelastic/func/test_gradients.py deleted file mode 100644 index 910da93ec..000000000 --- a/tests/warp/energies/elastic/hyperelastic/func/test_gradients.py +++ /dev/null @@ -1,115 +0,0 @@ -from typing import Protocol - -import hypothesis -import jax.numpy as jnp -import jax.test_util -import warp as wp -from jaxtyping import Array, Float - -from liblaf.apple.jax import testing -from liblaf.apple.warp import math -from liblaf.apple.warp import utils as wpu -from liblaf.apple.warp.energies.elastic.hyperelastic import func - - -class IdentityFunction(Protocol): - def __call__(self, F: Float[Array, "batch 3 3"]) -> Float[Array, " batch"]: ... - - -class IdentityGradient(Protocol): - def __call__(self, F: Float[Array, "batch 3 3"]) -> Float[Array, "batch 3 3"]: ... - - -class IdentityJvp(Protocol): - def __call__( - self, - primals: tuple[Float[Array, "batch 3 3"]], - tangents: tuple[Float[Array, "batch 3 3"]], - ) -> tuple[Float[Array, " batch"], Float[Array, " batch"]]: ... - - -def identity_jvp(fun: IdentityFunction, grad: IdentityGradient) -> IdentityJvp: - def jvp( - primals: tuple[Float[Array, "batch 3 3"]], - tangents: tuple[Float[Array, "batch 3 3"]], - ) -> tuple[Float[Array, " batch"], Float[Array, " batch"]]: - F: Float[Array, "batch 3 3"] - (F,) = primals - dF: Float[Array, "batch 3 3"] - (dF,) = tangents - primals_out: Float[Array, " batch"] = fun(F) - tangents_out: Float[Array, " batch"] = jnp.sum(grad(F) * dF, axis=(-2, -1)) - return primals_out, tangents_out - - return jvp - - -def I1(F: Float[Array, "batch 3 3"]) -> Float[Array, " batch"]: - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - S_wp: wp.array - _, S_wp = wp.map(math.polar_rv, F_wp) # pyright: ignore[reportAssignmentType, reportGeneralTypeIssues] - I1_wp: wp.array = wp.map(func.I1, S_wp) # pyright: ignore[reportAssignmentType] - I1: Float[Array, " batch"] = wp.to_jax(I1_wp) - return I1 - - -def I2(F: Float[Array, "batch 3 3"]) -> Float[Array, " batch"]: - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - I2_wp: wp.array = wp.map(func.I2, F_wp) # pyright: ignore[reportAssignmentType] - I2: Float[Array, " batch"] = wp.to_jax(I2_wp) - return I2 - - -def I3(F: Float[Array, "batch 3 3"]) -> Float[Array, " batch"]: - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - I3_wp: wp.array = wp.map(func.I3, F_wp) # pyright: ignore[reportAssignmentType] - I3: Float[Array, " batch"] = wp.to_jax(I3_wp) - return I3 - - -def g1(F: Float[Array, "batch 3 3"]) -> Float[Array, " batch 3 3"]: - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - R_wp: wp.array - R_wp, _ = wp.map(math.polar_rv, F_wp) # pyright: ignore[reportAssignmentType, reportGeneralTypeIssues] - g1_wp: wp.array = wp.map(func.g1, R_wp) # pyright: ignore[reportAssignmentType] - g1: Float[Array, "batch 3 3"] = wp.to_jax(g1_wp) - return g1 - - -def g2(F: Float[Array, "batch 3 3"]) -> Float[Array, " batch 3 3"]: - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - g2_wp: wp.array = wp.map(func.g2, F_wp) # pyright: ignore[reportAssignmentType] - g2: Float[Array, "batch 3 3"] = wp.to_jax(g2_wp) - return g2 - - -def g3(F: Float[Array, "batch 3 3"]) -> Float[Array, " batch 3 3"]: - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - g3_wp: wp.array = wp.map(func.g3, F_wp) # pyright: ignore[reportAssignmentType] - g3: Float[Array, "batch 3 3"] = wp.to_jax(g3_wp) - return g3 - - -def check_gradients( - fun: IdentityFunction, grad: IdentityGradient, F: Float[Array, "batch 3 3"] -) -> None: - I_jvp: IdentityJvp = identity_jvp(fun, grad) - if jnp.isdtype(F.dtype, jnp.float32): - jax.test_util.check_jvp(fun, I_jvp, (F,), atol=0.1, rtol=0.1) - else: - jax.test_util.check_jvp(fun, I_jvp, (F,)) - - -@hypothesis.given(testing.spd_matrix(3)) -def test_g1(F: Float[Array, "batch 3 3"]) -> None: - check_gradients(I1, g1, F) - - -@hypothesis.given(testing.spd_matrix(3)) -def test_g2(F: Float[Array, "batch 3 3"]) -> None: - check_gradients(I2, g2, F) - - -@hypothesis.given(testing.spd_matrix(3)) -def test_g3(F: Float[Array, "batch 3 3"]) -> None: - check_gradients(I3, g3, F) diff --git a/tests/warp/energies/elastic/hyperelastic/func/test_hess_diag.py b/tests/warp/energies/elastic/hyperelastic/func/test_hess_diag.py deleted file mode 100644 index 1d9c408d3..000000000 --- a/tests/warp/energies/elastic/hyperelastic/func/test_hess_diag.py +++ /dev/null @@ -1,121 +0,0 @@ -from collections.abc import Callable, Sequence - -import hypothesis -import jax.numpy as jnp -import numpy as np -import warp as wp -from jaxtyping import Array, DTypeLike, Float - -import liblaf.apple.warp.utils as wpu -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic import func - - -def diag_from_quad( - quad: Callable, args: Sequence[wp.array], dtype: DTypeLike -) -> Float[Array, "batch 4 3"]: - diag: Float[Array, "batch 4 3"] = jnp.zeros((*args[0].shape, 4, 3), dtype) - for i, j in np.ndindex(4, 3): - p: Float[Array, "batch 4 3"] = jnp.zeros_like(diag) - p = p.at[..., i, j].set(1.0) - p_wp: wp.array = wpu.to_warp(p, (4, 3)) - quad_wp: wp.array = wp.map(quad, p_wp, *args) # pyright: ignore[reportAssignmentType] - quad_jax: Float[Array, " batch"] = wp.to_jax(quad_wp) - diag = diag.at[..., i, j].set(quad_jax) - return diag - - -def check_diag( - diag: Callable, quad: Callable, args: Sequence[wp.array], dtype: DTypeLike -) -> None: - diag_wp: wp.array = wp.map(diag, *args) # pyright: ignore[reportAssignmentType] - diag_jax: Float[Array, " batch 4 3"] = wp.to_jax(diag_wp) - diag_expected: Float[Array, "batch 4 3"] = diag_from_quad(quad, args, dtype) - np.testing.assert_allclose(diag_jax, diag_expected) - - -@hypothesis.given(dhdX=testing.matrices((4, 3)), g1=testing.matrices((3, 3))) -def test_h1_diag( - dhdX: Float[Array, "batch 4 3"], g1: Float[Array, "batch 3 3"] -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - g1_wp: wp.array = wpu.to_warp(g1, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, g1_wp) - check_diag(func.h1_diag, func.h1_quad, args, dhdX.dtype) - - -@hypothesis.given(dhdX=testing.matrices((4, 3)), g2=testing.matrices((3, 3))) -def test_h2_diag( - dhdX: Float[Array, "batch 4 3"], g2: Float[Array, "batch 3 3"] -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - g2_wp: wp.array = wpu.to_warp(g2, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, g2_wp) - check_diag(func.h2_diag, func.h2_quad, args, dhdX.dtype) - - -@hypothesis.given(dhdX=testing.matrices((4, 3)), g3=testing.matrices((3, 3))) -def test_h3_diag( - dhdX: Float[Array, "batch 4 3"], g3: Float[Array, "batch 3 3"] -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - g3_wp: wp.array = wpu.to_warp(g3, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, g3_wp) - check_diag(func.h3_diag, func.h3_quad, args, dhdX.dtype) - - -@hypothesis.given( - dhdX=testing.matrices((4, 3)), - U=testing.matrices((3, 3)), - s=testing.matrices((3,)), - V=testing.matrices((3, 3)), -) -def test_h4_diag( - dhdX: Float[Array, "batch 4 3"], - U: Float[Array, "batch 3 3"], - s: Float[Array, "batch 3"], - V: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - U_wp: wp.array = wpu.to_warp(U, (3, 3)) - s_wp: wp.array = wpu.to_warp(s, 3) - V_wp: wp.array = wpu.to_warp(V, (3, 3)) - clamp: wp.array = wp.ones(dhdX_wp.shape, wp.bool) - args: Sequence[wp.array] = (dhdX_wp, U_wp, s_wp, V_wp, clamp) - check_diag(func.h4_diag, func.h4_quad, args, dhdX.dtype) - - -@hypothesis.given( - dhdX=testing.matrices((4, 3)), - U=testing.matrices((3, 3)), - s=testing.matrices((3,)), - V=testing.matrices((3, 3)), -) -def test_h4_diag_no_clamp( - dhdX: Float[Array, "batch 4 3"], - U: Float[Array, "batch 3 3"], - s: Float[Array, "batch 3"], - V: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - U_wp: wp.array = wpu.to_warp(U, (3, 3)) - s_wp: wp.array = wpu.to_warp(s, 3) - V_wp: wp.array = wpu.to_warp(V, (3, 3)) - clamp: wp.array = wp.zeros(dhdX_wp.shape, wp.bool) - args: Sequence[wp.array] = (dhdX_wp, U_wp, s_wp, V_wp, clamp) - check_diag(func.h4_diag, func.h4_quad, args, dhdX.dtype) - - -@hypothesis.given(dhdX=testing.matrices((4, 3))) -def test_h5_diag(dhdX: Float[Array, "batch 4 3"]) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - args: Sequence[wp.array] = (dhdX_wp,) - check_diag(func.h5_diag, func.h5_quad, args, dhdX.dtype) - - -@hypothesis.given(dhdX=testing.matrices((4, 3)), F=testing.matrices((3, 3))) -def test_h6_diag(dhdX: Float[Array, "batch 4 3"], F: Float[Array, "batch 3 3"]) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, F_wp) - check_diag(func.h6_diag, func.h6_quad, args, dhdX.dtype) diff --git a/tests/warp/energies/elastic/hyperelastic/func/test_hess_prod.py b/tests/warp/energies/elastic/hyperelastic/func/test_hess_prod.py deleted file mode 100644 index 0fb142744..000000000 --- a/tests/warp/energies/elastic/hyperelastic/func/test_hess_prod.py +++ /dev/null @@ -1,145 +0,0 @@ -from collections.abc import Callable, Sequence - -import einops -import hypothesis -import numpy as np -import warp as wp -from jaxtyping import Array, Float - -import liblaf.apple.warp.utils as wpu -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic import func - - -def check_prod( - prod: Callable, - quad: Callable, - p: Float[Array, "batch 4 3"], - args: Sequence[wp.array], -) -> None: - p_wp: wp.array = wpu.to_warp(p, (4, 3)) - prod_wp: wp.array = wp.map(prod, p_wp, *args) # pyright: ignore[reportAssignmentType] - prod_jax: Float[Array, "batch 4 3"] = wp.to_jax(prod_wp) - quad_wp: wp.array = wp.map(quad, p_wp, *args) # pyright: ignore[reportAssignmentType] - quad_jax: Float[Array, " batch"] = wp.to_jax(quad_wp) - quad_expected: Float[Array, " batch"] = einops.einsum( - p, prod_jax, "batch i j, batch i j -> batch" - ) - np.testing.assert_allclose(quad_jax, quad_expected, atol=1e-15) - - -@hypothesis.given( - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), - g1=testing.matrices((3, 3)), -) -def test_h1_prod( - p: Float[Array, "batch 4 3"], - dhdX: Float[Array, "batch 4 3"], - g1: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - g1_wp: wp.array = wpu.to_warp(g1, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, g1_wp) - check_prod(func.h1_prod, func.h1_quad, p, args) - - -@hypothesis.given( - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), - g2=testing.matrices((3, 3)), -) -def test_h2_prod( - p: Float[Array, "batch 4 3"], - dhdX: Float[Array, "batch 4 3"], - g2: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - g2_wp: wp.array = wpu.to_warp(g2, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, g2_wp) - check_prod(func.h2_prod, func.h2_quad, p, args) - - -@hypothesis.given( - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), - g3=testing.matrices((3, 3)), -) -def test_h3_prod( - p: Float[Array, "batch 4 3"], - dhdX: Float[Array, "batch 4 3"], - g3: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - g3_wp: wp.array = wpu.to_warp(g3, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, g3_wp) - check_prod(func.h3_prod, func.h3_quad, p, args) - - -@hypothesis.given( - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), - U=testing.matrices((3, 3)), - s=testing.matrices((3,)), - V=testing.matrices((3, 3)), -) -def test_h4_prod( - p: Float[Array, "batch 4 3"], - dhdX: Float[Array, "batch 4 3"], - U: Float[Array, "batch 3 3"], - s: Float[Array, "batch 3"], - V: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - U_wp: wp.array = wpu.to_warp(U, (3, 3)) - s_wp: wp.array = wpu.to_warp(s, 3) - V_wp: wp.array = wpu.to_warp(V, (3, 3)) - clamp: wp.array = wp.ones(dhdX_wp.shape, wp.bool) - args: Sequence[wp.array] = (dhdX_wp, U_wp, s_wp, V_wp, clamp) - check_prod(func.h4_prod, func.h4_quad, p, args) - - -@hypothesis.given( - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), - U=testing.matrices((3, 3)), - s=testing.matrices((3,)), - V=testing.matrices((3, 3)), -) -def test_h4_prod_no_clamp( - p: Float[Array, "batch 4 3"], - dhdX: Float[Array, "batch 4 3"], - U: Float[Array, "batch 3 3"], - s: Float[Array, "batch 3"], - V: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - U_wp: wp.array = wpu.to_warp(U, (3, 3)) - s_wp: wp.array = wpu.to_warp(s, 3) - V_wp: wp.array = wpu.to_warp(V, (3, 3)) - clamp: wp.array = wp.zeros(dhdX_wp.shape, wp.bool) - args: Sequence[wp.array] = (dhdX_wp, U_wp, s_wp, V_wp, clamp) - check_prod(func.h4_prod, func.h4_quad, p, args) - - -@hypothesis.given(p=testing.matrices((4, 3)), dhdX=testing.matrices((4, 3))) -def test_h5_prod(p: Float[Array, "batch 4 3"], dhdX: Float[Array, "batch 4 3"]) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - args: Sequence[wp.array] = (dhdX_wp,) - check_prod(func.h5_prod, func.h5_quad, p, args) - - -@hypothesis.given( - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), - F=testing.matrices((3, 3)), -) -def test_h6_prod( - p: Float[Array, "batch 4 3"], - dhdX: Float[Array, "batch 4 3"], - F: Float[Array, "batch 3 3"], -) -> None: - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - args: Sequence[wp.array] = (dhdX_wp, F_wp) - check_prod(func.h6_prod, func.h6_quad, p, args) diff --git a/tests/warp/energies/elastic/hyperelastic/func/test_hess_quad.py b/tests/warp/energies/elastic/hyperelastic/func/test_hess_quad.py deleted file mode 100644 index ed5167673..000000000 --- a/tests/warp/energies/elastic/hyperelastic/func/test_hess_quad.py +++ /dev/null @@ -1,153 +0,0 @@ -from collections.abc import Callable -from typing import Any, no_type_check - -import hypothesis -import numpy as np -import warp as wp -from jaxtyping import Array, Float - -import liblaf.apple.warp.utils as wpu -from liblaf.apple.jax import testing -from liblaf.apple.warp import math -from liblaf.apple.warp.energies.elastic.hyperelastic import func - -type Mat33 = Float[Array, "batch 3 3"] -type Mat43 = Float[Array, "batch 4 3"] -type Scalar = Float[Array, " batch"] - - -EPS: float = 1e-5 - - -def numeric_quad( - g: Callable, F: Mat33, p: Mat43, dhdX: Mat43, *, eps: float = EPS -) -> Scalar: - @wp.kernel - @no_type_check - def kernel( - F: wp.array(dtype=Any), - p: wp.array(dtype=Any), - dhdX: wp.array(dtype=Any), - output: wp.array(dtype=Any), - ) -> None: - cid = wp.tid() - dFdx_p = func.deformation_gradient_jvp(dhdX[cid], p[cid]) # mat33 - F0 = F[cid] - dFdx_p.dtype(0.5) * dFdx_p.dtype(eps) * dFdx_p # mat33 - F1 = F[cid] + dFdx_p.dtype(0.5) * dFdx_p.dtype(eps) * dFdx_p # mat33 - f0 = g(F0) # mat33 - f1 = g(F1) # mat33 - output[cid] = wp.ddot(dFdx_p, f1 - f0) / dFdx_p.dtype(eps) - - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - p_wp: wp.array = wpu.to_warp(p, (4, 3)) - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - output_wp: wp.array = wp.zeros(F_wp.shape, wp.dtype_from_jax(F.dtype)) - wp.launch(kernel, F_wp.shape, inputs=[F_wp, p_wp, dhdX_wp], outputs=[output_wp]) - output: Scalar = wp.to_jax(output_wp) - return output - - -def h4_quad(F: Mat33, p: Mat43, dhdX: Mat43) -> Scalar: - @wp.kernel - @no_type_check - def kernel( - F: wp.array(dtype=Any), - p: wp.array(dtype=Any), - dhdX: wp.array(dtype=Any), - output: wp.array(dtype=Any), - ) -> None: - cid = wp.tid() - U, s, V = math.svd_rv(F[cid]) # mat33, vec3, mat33 - h4_quad = func.h4_quad(p[cid], dhdX[cid], U, s, V, clamp=False) # mat43 - output[cid] = h4_quad - - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - p_wp: wp.array = wpu.to_warp(p, (4, 3)) - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - output_wp: wp.array = wp.zeros(F_wp.shape, wp.dtype_from_jax(F.dtype)) - wp.launch(kernel, F_wp.shape, inputs=[F_wp, p_wp, dhdX_wp], outputs=[output_wp]) - output: Scalar = wp.to_jax(output_wp) - return output - - -def h5_quad(F: Mat33, p: Mat43, dhdX: Mat43) -> Scalar: - @wp.kernel - @no_type_check - def kernel( - _F: wp.array(dtype=Any), - p: wp.array(dtype=Any), - dhdX: wp.array(dtype=Any), - output: wp.array(dtype=Any), - ) -> None: - cid = wp.tid() - h5_quad = func.h5_quad(p[cid], dhdX[cid]) # mat43 - output[cid] = h5_quad - - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - p_wp: wp.array = wpu.to_warp(p, (4, 3)) - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - output_wp: wp.array = wp.zeros(F_wp.shape, wp.dtype_from_jax(F.dtype)) - wp.launch(kernel, F_wp.shape, inputs=[F_wp, p_wp, dhdX_wp], outputs=[output_wp]) - output: Scalar = wp.to_jax(output_wp) - return output - - -def h6_quad(F: Mat33, p: Mat43, dhdX: Mat43) -> Scalar: - @wp.kernel - @no_type_check - def kernel( - F: wp.array(dtype=Any), - p: wp.array(dtype=Any), - dhdX: wp.array(dtype=Any), - output: wp.array(dtype=Any), - ) -> None: - cid = wp.tid() - h6_quad = func.h6_quad(p[cid], dhdX[cid], F[cid]) # mat43 - output[cid] = h6_quad - - F_wp: wp.array = wpu.to_warp(F, (3, 3)) - p_wp: wp.array = wpu.to_warp(p, (4, 3)) - dhdX_wp: wp.array = wpu.to_warp(dhdX, (4, 3)) - output_wp: wp.array = wp.zeros(F_wp.shape, wp.dtype_from_jax(F.dtype)) - wp.launch(kernel, F_wp.shape, inputs=[F_wp, p_wp, dhdX_wp], outputs=[output_wp]) - output: Scalar = wp.to_jax(output_wp) - return output - - -@hypothesis.given( - F=testing.spd_matrix(3), - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), -) -def test_h4_quad(F: Mat33, p: Mat43, dhdX: Mat43) -> None: - @wp.func - @no_type_check - def g1(F: Any) -> Any: - R, _ = math.polar_rv(F) - return func.g1(R) - - actual: Scalar = h4_quad(F, p, dhdX) - expected: Scalar = numeric_quad(g1, F, p, dhdX) - np.testing.assert_allclose(actual, expected, atol=1e-9) - - -@hypothesis.given( - F=testing.matrices((3, 3)), - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), -) -def test_h5_quad(F: Mat33, p: Mat43, dhdX: Mat43) -> None: - actual: Scalar = h5_quad(F, p, dhdX) - expected: Scalar = numeric_quad(func.g2, F, p, dhdX) - np.testing.assert_allclose(actual, expected, atol=1e-9) - - -@hypothesis.given( - F=testing.matrices((3, 3)), - p=testing.matrices((4, 3)), - dhdX=testing.matrices((4, 3)), -) -def test_h6_quad(F: Mat33, p: Mat43, dhdX: Mat43) -> None: - actual: Scalar = h6_quad(F, p, dhdX) - expected: Scalar = numeric_quad(func.g3, F, p, dhdX) - np.testing.assert_allclose(actual, expected, atol=1e-9) diff --git a/tests/warp/energies/elastic/hyperelastic/test_arap.py b/tests/warp/energies/elastic/hyperelastic/test_arap.py deleted file mode 100644 index 76ef53d85..000000000 --- a/tests/warp/energies/elastic/hyperelastic/test_arap.py +++ /dev/null @@ -1,94 +0,0 @@ -import hypothesis -import numpy as np -import pytest -import pyvista as pv - -from liblaf.apple import Model, ModelBuilder -from liblaf.apple.constants import MU -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic import Arap - -from . import common - - -@pytest.fixture(scope="package") -def mesh() -> pv.UnstructuredGrid: - mesh: pv.UnstructuredGrid = pv.examples.cells.Tetrahedron() # pyright: ignore[reportAssignmentType] - rng: np.random.Generator = np.random.default_rng() - mesh.cell_data[MU] = rng.uniform(0.0, 1.0, (mesh.n_cells,)) - return mesh - - -@pytest.fixture(scope="package") -def model(mesh: pv.UnstructuredGrid) -> Model: - builder = ModelBuilder() - - builder.assign_global_ids(mesh) - - elastic = Arap.from_pyvista( - mesh, - clamp_hess_diag=False, - clamp_hess_quad=False, - clamp_lambda=False, - id="elastic", - requires_grad=["mu"], - ) - # register kernels to avoid recompilation - _ = elastic.fun_kernel - _ = elastic.hess_diag_kernel - _ = elastic.hess_prod_kernel - _ = elastic.hess_quad_kernel - _ = elastic.value_and_grad_kernel - _ = elastic.grad_and_hess_diag_kernel - builder.add_energy(elastic) - - return builder.finalize() - - -@hypothesis.given(seed=testing.seed()) -def test_arap_grad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_grad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_hess_diag(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_hess_diag(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_hess_prod(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_hess_prod(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_hess_quad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_hess_quad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_mixed_derivative_prod( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="mu", - param_shape=(mesh.n_cells,), - minval=0.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_value_and_grad( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_value_and_grad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_grad_and_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_grad_and_hess_diag(seed, model, mesh) diff --git a/tests/warp/energies/elastic/hyperelastic/test_arap_muscle.py b/tests/warp/energies/elastic/hyperelastic/test_arap_muscle.py deleted file mode 100644 index 0e5fac0ba..000000000 --- a/tests/warp/energies/elastic/hyperelastic/test_arap_muscle.py +++ /dev/null @@ -1,118 +0,0 @@ -import hypothesis -import numpy as np -import pytest -import pyvista as pv - -from liblaf.apple import Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MU -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic import ArapMuscle - -from . import common - - -@pytest.fixture(scope="package") -def mesh() -> pv.UnstructuredGrid: - mesh: pv.UnstructuredGrid = pv.examples.cells.Tetrahedron() # pyright: ignore[reportAssignmentType] - rng: np.random.Generator = np.random.default_rng() - mesh.cell_data[ACTIVATION] = rng.uniform(-1.0, 1.0, (mesh.n_cells, 6)) - mesh.cell_data[MU] = rng.uniform(0.0, 1.0, (mesh.n_cells,)) - return mesh - - -@pytest.fixture(scope="package") -def model(mesh: pv.UnstructuredGrid) -> Model: - builder = ModelBuilder() - - builder.assign_global_ids(mesh) - - elastic = ArapMuscle.from_pyvista( - mesh, - clamp_hess_diag=False, - clamp_hess_quad=False, - clamp_lambda=False, - id="elastic", - requires_grad=["activation", "mu"], - ) - # register kernels to avoid recompilation - _ = elastic.fun_kernel - _ = elastic.hess_diag_kernel - _ = elastic.hess_prod_kernel - _ = elastic.hess_quad_kernel - _ = elastic.value_and_grad_kernel - _ = elastic.grad_and_hess_diag_kernel - builder.add_energy(elastic) - - return builder.finalize() - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_grad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_grad(seed, model, mesh) - # gradient of ArapMuscle is approximate, so we only check descent direction - # common.check_grad_direction(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_hess_diag(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_hess_prod( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_hess_prod(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_hess_quad( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_hess_quad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_mixed_derivative_prod_activation( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="activation", - param_shape=(mesh.n_cells, 6), - minval=-1.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_mixed_derivative_prod_mu( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="mu", - param_shape=(mesh.n_cells,), - minval=0.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_value_and_grad( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_value_and_grad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_grad_and_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_grad_and_hess_diag(seed, model, mesh) diff --git a/tests/warp/energies/elastic/hyperelastic/test_arap_muscle_v2.py b/tests/warp/energies/elastic/hyperelastic/test_arap_muscle_v2.py deleted file mode 100644 index b59c1614c..000000000 --- a/tests/warp/energies/elastic/hyperelastic/test_arap_muscle_v2.py +++ /dev/null @@ -1,118 +0,0 @@ -import hypothesis -import numpy as np -import pytest -import pyvista as pv - -from liblaf.apple import Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, MU -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic._arap_muscle_v2 import ArapMuscleV2 - -from . import common - - -@pytest.fixture(scope="package") -def mesh() -> pv.UnstructuredGrid: - mesh: pv.UnstructuredGrid = pv.examples.cells.Tetrahedron() # pyright: ignore[reportAssignmentType] - rng: np.random.Generator = np.random.default_rng() - mesh.cell_data[ACTIVATION] = rng.uniform(-1.0, 1.0, (mesh.n_cells, 6)) - mesh.cell_data[MU] = rng.uniform(0.0, 1.0, (mesh.n_cells,)) - return mesh - - -@pytest.fixture(scope="package") -def model(mesh: pv.UnstructuredGrid) -> Model: - builder = ModelBuilder() - - builder.assign_global_ids(mesh) - - elastic = ArapMuscleV2.from_pyvista( - mesh, - clamp_hess_diag=False, - clamp_hess_quad=False, - clamp_lambda=False, - id="elastic", - requires_grad=["activation", "mu"], - ) - # register kernels to avoid recompilation - _ = elastic.fun_kernel - _ = elastic.hess_diag_kernel - _ = elastic.hess_prod_kernel - _ = elastic.hess_quad_kernel - _ = elastic.value_and_grad_kernel - _ = elastic.grad_and_hess_diag_kernel - builder.add_energy(elastic) - - return builder.finalize() - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_grad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_grad(seed, model, mesh) - # gradient of ArapMuscleV2 is approximate, so we only check descent direction - # common.check_grad_direction(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_hess_diag(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_hess_prod( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_hess_prod(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_hess_quad( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_hess_quad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_mixed_derivative_prod_activation( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="activation", - param_shape=(mesh.n_cells, 6), - minval=-1.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_mixed_derivative_prod_mu( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="mu", - param_shape=(mesh.n_cells,), - minval=0.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_value_and_grad( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_value_and_grad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_arap_muscle_grad_and_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_grad_and_hess_diag(seed, model, mesh) diff --git a/tests/warp/energies/elastic/hyperelastic/test_phace.py b/tests/warp/energies/elastic/hyperelastic/test_phace.py deleted file mode 100644 index b8a1480ad..000000000 --- a/tests/warp/energies/elastic/hyperelastic/test_phace.py +++ /dev/null @@ -1,142 +0,0 @@ -import hypothesis -import numpy as np -import pytest -import pyvista as pv - -from liblaf.apple import Model, ModelBuilder -from liblaf.apple.constants import ACTIVATION, LAMBDA, MU, MUSCLE_FRACTION -from liblaf.apple.jax import testing -from liblaf.apple.warp.energies.elastic.hyperelastic import Phace - -from . import common - - -@pytest.fixture(scope="package") -def mesh() -> pv.UnstructuredGrid: - mesh: pv.UnstructuredGrid = pv.examples.cells.Tetrahedron() # pyright: ignore[reportAssignmentType] - rng: np.random.Generator = np.random.default_rng() - mesh.cell_data[ACTIVATION] = rng.uniform(-1.0, 1.0, (mesh.n_cells, 6)) - mesh.cell_data[LAMBDA] = rng.uniform(0.0, 1.0, (mesh.n_cells,)) - mesh.cell_data[MU] = rng.uniform(0.0, 1.0, (mesh.n_cells,)) - mesh.cell_data[MUSCLE_FRACTION] = rng.uniform(0.0, 1.0, (mesh.n_cells,)) - return mesh - - -@pytest.fixture(scope="package") -def model(mesh: pv.UnstructuredGrid) -> Model: - builder = ModelBuilder() - - builder.assign_global_ids(mesh) - - elastic = Phace.from_pyvista( - mesh, - clamp_hess_diag=False, - clamp_hess_quad=False, - clamp_lambda=False, - id="elastic", - requires_grad=["activation", "lambda_", "mu", "muscle_fraction"], - ) - # register kernels to avoid recompilation - _ = elastic.fun_kernel - _ = elastic.hess_diag_kernel - _ = elastic.hess_prod_kernel - _ = elastic.hess_quad_kernel - _ = elastic.value_and_grad_kernel - _ = elastic.grad_and_hess_diag_kernel - builder.add_energy(elastic) - - return builder.finalize() - - -@hypothesis.given(seed=testing.seed()) -def test_phace_grad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_grad_direction(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_hess_diag(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_hess_diag(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_hess_prod(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_hess_prod(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_hess_quad(seed: int, model: Model, mesh: pv.UnstructuredGrid) -> None: - common.check_hess_quad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_mixed_derivative_prod_activation( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="activation", - param_shape=(mesh.n_cells, 6), - minval=-1.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_mixed_derivative_prod_lambda( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="lambda_", - param_shape=(mesh.n_cells,), - minval=0.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_mixed_derivative_prod_mu( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="mu", - param_shape=(mesh.n_cells,), - minval=0.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_mixed_derivative_prod_muscle_fraction( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_mixed_derivative_prod( - seed, - model, - mesh, - param_name="muscle_fraction", - param_shape=(mesh.n_cells,), - minval=0.0, - maxval=1.0, - ) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_value_and_grad( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_value_and_grad(seed, model, mesh) - - -@hypothesis.given(seed=testing.seed()) -def test_phace_grad_and_hess_diag( - seed: int, model: Model, mesh: pv.UnstructuredGrid -) -> None: - common.check_grad_and_hess_diag(seed, model, mesh) diff --git a/tests/warp/math/test_rotation.py b/tests/warp/math/test_rotation.py deleted file mode 100644 index 9a2d5fac7..000000000 --- a/tests/warp/math/test_rotation.py +++ /dev/null @@ -1,46 +0,0 @@ -import hypothesis -import jax.numpy as jnp -import numpy as np -import warp as wp -from jaxtyping import Array, Float - -from liblaf.apple.jax import testing -from liblaf.apple.warp import math - -ATOL: float = 1e-7 - - -@hypothesis.given(testing.matrices((3, 3))) -def test_svd_rv(F: Float[Array, "batch 3 3"]) -> None: - F: Float[Array, "batch 3 3"] = jnp.asarray(F) - F_wp: wp.array = wp.from_jax(F, wp.mat33d) - U_wp, s_wp, V_wp = wp.map(math.svd_rv, F_wp) # pyright: ignore[reportAssignmentType, reportGeneralTypeIssues] - U: Float[Array, "batch 3 3"] = wp.to_jax(U_wp) - s: Float[Array, "batch 3"] = wp.to_jax(s_wp) - V: Float[Array, "batch 3 3"] = wp.to_jax(V_wp) - np.testing.assert_allclose( - U.mT @ U, jnp.broadcast_to(jnp.identity(3), F.shape), atol=ATOL - ) - np.testing.assert_allclose(jnp.linalg.det(U), 1.0) - np.testing.assert_allclose( - V @ V.mT, jnp.broadcast_to(jnp.identity(3), F.shape), atol=ATOL - ) - np.testing.assert_allclose(jnp.linalg.det(V), 1.0) - S: Float[Array, "batch 3 3"] = s[..., jnp.newaxis] * jnp.identity(3) - np.testing.assert_allclose(U @ S @ V.mT, F, atol=ATOL) - - -@hypothesis.given(testing.matrices((3, 3))) -def test_polar_rv(F: Float[Array, "batch 3 3"]) -> None: - F: Float[Array, "batch 3 3"] = jnp.asarray(F) - F_wp: wp.array = wp.from_jax(F, wp.mat33d) - R_wp: wp.array - S_wp: wp.array - R_wp, S_wp = wp.map(math.polar_rv, F_wp) # pyright: ignore[reportAssignmentType, reportGeneralTypeIssues] - R: Float[Array, "batch 3 3"] = wp.to_jax(R_wp) - S: Float[Array, "batch 3 3"] = wp.to_jax(S_wp) - np.testing.assert_allclose( - R.mT @ R, jnp.broadcast_to(jnp.identity(3), F.shape), atol=ATOL - ) - np.testing.assert_allclose(jnp.linalg.det(R), 1.0) - np.testing.assert_allclose(R @ S, F, atol=ATOL) diff --git a/typings/cytoolz/__init__.pyi b/typings/cytoolz/__init__.pyi deleted file mode 100644 index c47ceb132..000000000 --- a/typings/cytoolz/__init__.pyi +++ /dev/null @@ -1 +0,0 @@ -from toolz import * # noqa: F403 diff --git a/uv.lock b/uv.lock index 94339735f..301d50f88 100644 --- a/uv.lock +++ b/uv.lock @@ -2,7 +2,8 @@ version = 1 revision = 3 requires-python = ">=3.12" resolution-markers = [ - "python_full_version >= '3.13'", + "python_full_version >= '3.15'", + "python_full_version >= '3.13' and python_full_version < '3.15'", "python_full_version < '3.13'", ] @@ -16,159 +17,12 @@ wheels = [ ] [[package]] -name = "absl-py" -version = "2.3.1" +name = "annotated-doc" +version = "0.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/10/2a/c93173ffa1b39c1d0395b7e842bbdc62e556ca9d8d3b5572926f3e4ca752/absl_py-2.3.1.tar.gz", hash = "sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9", size = 116588, upload-time = "2025-07-03T09:31:44.05Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/aa/ba0014cc4659328dc818a28827be78e6d97312ab0cb98105a770924dc11e/absl_py-2.3.1-py3-none-any.whl", hash = "sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d", size = 135811, upload-time = "2025-07-03T09:31:42.253Z" }, -] - -[[package]] -name = "aiohappyeyeballs" -version = "2.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, -] - -[[package]] -name = "aiohttp" -version = "3.13.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohappyeyeballs" }, - { name = "aiosignal" }, - { name = "attrs" }, - { name = "frozenlist" }, - { name = "multidict" }, - { name = "propcache" }, - { name = "yarl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, - { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, - { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, - { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, - { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, - { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, - { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, - { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, - { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, - { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, - { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, - { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, - { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, - { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, - { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, - { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, - { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, - { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, - { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, - { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, - { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, - { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, - { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, - { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, - { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, - { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, - { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, - { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, - { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, - { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, - { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, - { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, - { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, - { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, - { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, - { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, - { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, - { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, - { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, - { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, - { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, - { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, - { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, - { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, - { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, - { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, - { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, - { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, - { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, - { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, - { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, - { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, - { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, - { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, - { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, - { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, - { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, - { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, - { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, - { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, - { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, -] - -[[package]] -name = "aiohttp-retry" -version = "2.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9d/61/ebda4d8e3d8cfa1fd3db0fb428db2dd7461d5742cea35178277ad180b033/aiohttp_retry-2.9.1.tar.gz", hash = "sha256:8eb75e904ed4ee5c2ec242fefe85bf04240f685391c4879d8f541d6028ff01f1", size = 13608, upload-time = "2024-11-06T10:44:54.574Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/99/84ba7273339d0f3dfa57901b846489d2e5c2cd731470167757f1935fffbd/aiohttp_retry-2.9.1-py3-none-any.whl", hash = "sha256:66d2759d1921838256a05a3f80ad7e724936f083e35be5abb5e16eed6be6dc54", size = 9981, upload-time = "2024-11-06T10:44:52.917Z" }, -] - -[[package]] -name = "aiosignal" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "frozenlist" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, -] - -[[package]] -name = "altair" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jinja2" }, - { name = "jsonschema" }, - { name = "narwhals" }, - { name = "packaging" }, - { name = "typing-extensions", marker = "python_full_version < '3.15'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f7/c0/184a89bd5feba14ff3c41cfaf1dd8a82c05f5ceedbc92145e17042eb08a4/altair-6.0.0.tar.gz", hash = "sha256:614bf5ecbe2337347b590afb111929aa9c16c9527c4887d96c9bc7f6640756b4", size = 763834, upload-time = "2025-11-12T08:59:11.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/33/ef2f2409450ef6daa61459d5de5c08128e7d3edb773fefd0a324d1310238/altair-6.0.0-py3-none-any.whl", hash = "sha256:09ae95b53d5fe5b16987dccc785a7af8588f2dca50de1e7a156efa8a461515f8", size = 795410, upload-time = "2025-11-12T08:59:09.804Z" }, -] - -[[package]] -name = "amqp" -version = "5.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "vine" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013, upload-time = "2024-11-12T19:55:44.051Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944, upload-time = "2024-11-12T19:55:41.782Z" }, + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, ] [[package]] @@ -180,32 +34,17 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] -[[package]] -name = "antlr4-python3-runtime" -version = "4.9.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } - [[package]] name = "anyio" -version = "4.12.1" +version = "4.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, -] - -[[package]] -name = "appdirs" -version = "1.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470, upload-time = "2020-05-11T07:59:51.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566, upload-time = "2020-05-11T07:59:49.499Z" }, + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, ] [[package]] @@ -218,48 +57,70 @@ wheels = [ ] [[package]] -name = "asttokens" -version = "3.0.1" +name = "argcomplete" +version = "3.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/61/0b9ae6399dd4a58d8c1b1dc5a27d6f2808023d0b5dd3104bb99f45a33ff6/argcomplete-3.6.3.tar.gz", hash = "sha256:62e8ed4fd6a45864acc8235409461b72c9a28ee785a2011cc5eb78318786c89c", size = 73754, upload-time = "2025-10-20T03:33:34.741Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, + { url = "https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl", hash = "sha256:f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce", size = 43846, upload-time = "2025-10-20T03:33:33.021Z" }, ] [[package]] -name = "asyncssh" -version = "2.22.0" +name = "ast-serialize" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cryptography" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/957886c316466349d55c4de6a688a10a98295c0b4429deb8db1a17f3eb19/asyncssh-2.22.0.tar.gz", hash = "sha256:c3ce72b01be4f97b40e62844dd384227e5ff5a401a3793007c42f86a5c8eb537", size = 540523, upload-time = "2025-12-21T23:38:30.5Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/9d/09e27731bd5864a9ce04e3244074e674bb8936bf62b45e0357248717adac/ast_serialize-0.5.0.tar.gz", hash = "sha256:5880091bfe6f4f986f22866375c2e884843e7a0b6343ae41aeea659613d879b6", size = 61157, upload-time = "2026-05-17T17:48:29.429Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/ae/0da2f2214fc183338af1afe5a103a2052fd03464e8eafbd827abff58a4d0/asyncssh-2.22.0-py3-none-any.whl", hash = "sha256:d16465ccdf1ed20eba1131b14415b155e047f6f5be0d19f39c2e0b61331ee0e7", size = 374938, upload-time = "2025-12-21T23:38:28.976Z" }, -] - -[package.optional-dependencies] -bcrypt = [ - { name = "bcrypt" }, + { url = "https://files.pythonhosted.org/packages/c0/9a/13dde51ba9e15f8b97957ab7cb0120d0e381524d651c6bd630b9c359227f/ast_serialize-0.5.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8f5c14f169eb0972c0c21bada5358b23d6047c76583b005234f865b11f1fa00a", size = 1183520, upload-time = "2026-05-17T17:47:30.831Z" }, + { url = "https://files.pythonhosted.org/packages/37/de/5a7f0a9fe68944f536632a5af84676739c7d2582be42deb082634bf3a754/ast_serialize-0.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7d1a2de9de5be04652f0ed60738356ef94f66db37924a9499fffe98dc491aa0b", size = 1175779, upload-time = "2026-05-17T17:47:32.551Z" }, + { url = "https://files.pythonhosted.org/packages/9c/81/0bb853e76e4f6e9a1855d569003c59e19ffac45f7079d91505d1bb212f92/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be5173fb66f9b49026d9d5a2ff0fc7c7009077107c0eb285b2d60fdf1fe10bd1", size = 1233750, upload-time = "2026-05-17T17:47:34.731Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d3/4cf705beeccc08754d0bbda99aefff26110e209b9a07ac8a6b60eec48531/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8015cd071ac1339924ee2b8098c93e00e155f30a16f40ec9816fcf84f4753f6", size = 1235942, upload-time = "2026-05-17T17:47:36.287Z" }, + { url = "https://files.pythonhosted.org/packages/26/c8/ee097e437ea27dd2b8b227865c875492b585650a5802a22d82b304c8201b/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5499e8797edff2a9186aa313ed382c6b422e798e9332d9953badcee6e69a88f2", size = 1442517, upload-time = "2026-05-17T17:47:38.17Z" }, + { url = "https://files.pythonhosted.org/packages/ff/bd/68063442838f1ba68ec72b5436430bc75b3bb17a1a3c3063f09b0c05ae2b/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6848f2a093fb5548751a9a09bff8fcd229e2bbeb0e3331f391b6ae6d26cd9903", size = 1254081, upload-time = "2026-05-17T17:47:39.826Z" }, + { url = "https://files.pythonhosted.org/packages/50/e2/1e520793bc6a4e4524a6ab022391e827825eaa0c3811828bfdc6852eca26/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:832d4c998e0b091fd60a6d6bceee535483c4d490de9ba85003af835225719261", size = 1259910, upload-time = "2026-05-17T17:47:41.369Z" }, + { url = "https://files.pythonhosted.org/packages/4e/e1/49b60f467979979cfe6913b43948ff25bca971ad0591d181812f163a988e/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:16db7c62ec0b8efe1d7afd283a388d8f74f2605d56032e5a37747d2de8dba027", size = 1250678, upload-time = "2026-05-17T17:47:43.702Z" }, + { url = "https://files.pythonhosted.org/packages/74/ba/66ab9555de6275677566f6574e5ef6c29cb185ea866f643bc06f8280a8ee/ast_serialize-0.5.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:baf5eb061eb5bccade4128ad42da33787d72f6013809cd1b590376ece8b3c937", size = 1301603, upload-time = "2026-05-17T17:47:46.256Z" }, + { url = "https://files.pythonhosted.org/packages/66/42/6aca9b9abc710014b2be9059689e5dd1679339e78f567ffb4d255a9e2050/ast_serialize-0.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:104e4a35bd7c124173c41760ef9aaea17ddb3f86c65cb643671d59afbe3ee94c", size = 1410332, upload-time = "2026-05-17T17:47:47.899Z" }, + { url = "https://files.pythonhosted.org/packages/47/68/2f76594432a22581ecf878b5e75a9b8601c24b2241cf0bbeb1e21fcf370c/ast_serialize-0.5.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:36be371028fc1675acb38a331bde160dbab7ff907fdf00b67eb6911aa106951b", size = 1509979, upload-time = "2026-05-17T17:47:50.942Z" }, + { url = "https://files.pythonhosted.org/packages/40/ac/a93c9b58292653f6c595752f677a08e608f903b710594909e9231a389b3b/ast_serialize-0.5.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:061ee58bdb52341c8201a6df41182a977736bae3b7ded87ca7176ca25a8a47ab", size = 1505002, upload-time = "2026-05-17T17:47:54.093Z" }, + { url = "https://files.pythonhosted.org/packages/14/2e/b278f68c497ee2f1d1576cbbef8db5281cd4a5f2db040537592ac9c8862e/ast_serialize-0.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b15219e9cdc9f53f6f4cb51c009203507228226148c05c5e8fe451c28b435eb3", size = 1456231, upload-time = "2026-05-17T17:47:56.311Z" }, + { url = "https://files.pythonhosted.org/packages/0b/43/419be1c566a4c504cd8fd60ce2f84e790f295495c0f327cfaeadf3d51012/ast_serialize-0.5.0-cp314-cp314t-win32.whl", hash = "sha256:842d1c004bb466c7df036f95fabef789570541922b10976b12f5592a69cf0b38", size = 1058668, upload-time = "2026-05-17T17:47:58.305Z" }, + { url = "https://files.pythonhosted.org/packages/03/6f/c9d4d549295ed05111aeb8853232d1afd9d0a179fddb01eeffbb3a4a6842/ast_serialize-0.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b0c06d760909b095cc466356dfccd05a1c7233a6ca191c020dca2c6a6f16c24c", size = 1101075, upload-time = "2026-05-17T17:48:00.35Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8e/d00c5ab30c58222e07d62956fca86c59d91b9ad32997e633c38b526623a3/ast_serialize-0.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:787baedb0262cc49e8ce37cc15c00ae818e46a165a3b36f5e21ed174998104cb", size = 1075347, upload-time = "2026-05-17T17:48:01.753Z" }, + { url = "https://files.pythonhosted.org/packages/e0/9e/dc2530acb3a60dc6e46d65abf27d1d9f86721694757906a148d90a6860de/ast_serialize-0.5.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:0668aa9459cfa8c9c49ddd2163ebcf43088ba045ef7492af6fe22e0098303101", size = 1191380, upload-time = "2026-05-17T17:48:03.738Z" }, + { url = "https://files.pythonhosted.org/packages/26/0a/bd3d18a582f273d6c843d16bb9e22e9e16365ff7991e92f18f798e9f1224/ast_serialize-0.5.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:bf683d6363edf2b39eed6b6d4fe22d34b6203867a67e27134d9e2a2680c4bc4a", size = 1183879, upload-time = "2026-05-17T17:48:05.463Z" }, + { url = "https://files.pythonhosted.org/packages/40/ae/1f919100f8620887af58fcc381c61a1f218cdf89c6e155f87b213e61010a/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc22cf0c9be65e71cf88fda130af60d61eb4a79370ad4cfe7900d48a4aa2211", size = 1244529, upload-time = "2026-05-17T17:48:07.008Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ca/6376559dcce707cdbc1d0d9a13c8d3baaaa501e949ce0ebdc4230cd881aa/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f66173891548c9f2726bf27957b41cabce12fa679dc6da505ddbde4d4b3b31cf", size = 1240560, upload-time = "2026-05-17T17:48:08.46Z" }, + { url = "https://files.pythonhosted.org/packages/35/b2/a620e206b5aeb7efbf2710336df57d457cffbb3991076bbcc1147ef9abd4/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e42d729ef2be96a14efbad355093284739e3670ece3e534f82cc8832790911d9", size = 1451172, upload-time = "2026-05-17T17:48:09.922Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e0/4ad5c04c24a40481b2935ce9a0ccdb6023dc8b667167d06ae530cc3512f2/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b725026bafa801dbd7310eb13a75f0a2e370e7e51b2cb225f9d21fcfadf919ee", size = 1265072, upload-time = "2026-05-17T17:48:11.469Z" }, + { url = "https://files.pythonhosted.org/packages/b2/71/4d1d479aa56d0101c40e17720c3d6ac2af7269ea0487a80b18e7bfd1a5b7/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b54f60c1d78767a53b67eaa663f0dfac3afe606aa07f1301572f588b73d64809", size = 1270488, upload-time = "2026-05-17T17:48:13.575Z" }, + { url = "https://files.pythonhosted.org/packages/6d/4f/0de1bbe06f6edef9fde4ed12ca8e7b3ec7e6e2bd4e672c5af487f7957665/ast_serialize-0.5.0-cp39-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:27d51654fc240a1e87e742d353d98eb45b75f62f129086b3596ab53df2ac2a43", size = 1260702, upload-time = "2026-05-17T17:48:15.141Z" }, + { url = "https://files.pythonhosted.org/packages/75/61/e00872439cfdddcc3c1b6cdaa6e5d904ba8e26a18807c67c4e14409d0ca8/ast_serialize-0.5.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c36237c46dd1674542f2109740ea5ea485a169bf1431939ada0434e17934", size = 1311182, upload-time = "2026-05-17T17:48:16.779Z" }, + { url = "https://files.pythonhosted.org/packages/76/8e/699a5b955f7926956c95e9e1d74132acad73c2fe7a426f94da89123c20aa/ast_serialize-0.5.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1943db345233cc7194a470f13afa9c59772c0b123dea0c9414c4d4ca54369759", size = 1421410, upload-time = "2026-05-17T17:48:18.527Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ae/d5b7626874478997adc7a29ab28accf21e596fb590c944290401dfd0b29e/ast_serialize-0.5.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:df1c00022cbbcb064bfaa505aa9c9295362443ce5dacb459d1331d3da353f887", size = 1516587, upload-time = "2026-05-17T17:48:20.133Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ce/b59e02a82d9c4244d64cde502e0b00e83e38816abe19155ceb5437402c7f/ast_serialize-0.5.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:cae65289fc456fde04af979a2be09302ef5d8ab92ef23e596d6746dc267ada27", size = 1515171, upload-time = "2026-05-17T17:48:21.921Z" }, + { url = "https://files.pythonhosted.org/packages/8b/38/d8d90042747d05aa08d4efcf1c99035a5f670a6bf4c214d31644392afbca/ast_serialize-0.5.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:239a4c354e8d676e9d94631d1d4a64edc6b266f86ff3a5a80aedd344f342c01d", size = 1464668, upload-time = "2026-05-17T17:48:23.544Z" }, + { url = "https://files.pythonhosted.org/packages/dd/51/5b840c4df7334104cecffa28f23904fe81ca89ca223d2450e288de39fd3c/ast_serialize-0.5.0-cp39-abi3-win32.whl", hash = "sha256:143a4ef63285a075871908fda3672dc21864b83a8ec3ee12304aa3e4c5387b9a", size = 1068311, upload-time = "2026-05-17T17:48:25.027Z" }, + { url = "https://files.pythonhosted.org/packages/41/11/ca5672c7d491825bc4cd6702dea106a6b60d928707712ec257c7833ae476/ast_serialize-0.5.0-cp39-abi3-win_amd64.whl", hash = "sha256:cf25572c526add400f26a4750dc6ce0c3bb93fc1f75e7ae0cad4ce4f2cd5c590", size = 1108931, upload-time = "2026-05-17T17:48:26.591Z" }, + { url = "https://files.pythonhosted.org/packages/45/19/cc8bd127d28a43da249aa955cfd164cf8fd534e79e42cea96c4854d72fd0/ast_serialize-0.5.0-cp39-abi3-win_arm64.whl", hash = "sha256:92a31c9c20d25a076edaeec76b128a3535d74a24f340b9a8a7e96c9b86dc9642", size = 1081181, upload-time = "2026-05-17T17:48:28.122Z" }, ] [[package]] -name = "atpublic" -version = "7.0.0" +name = "asttokens" +version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/05/e2e131a0debaf0f01b8a1b586f5f11713f6affc3e711b406f15f11eafc92/atpublic-7.0.0.tar.gz", hash = "sha256:466ef10d0c8bbd14fd02a5fbd5a8b6af6a846373d91106d3a07c16d72d96b63e", size = 17801, upload-time = "2025-11-29T05:56:45.45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/c0/271f3e1e3502a8decb8ee5c680dbed2d8dc2cd504f5e20f7ed491d5f37e1/atpublic-7.0.0-py3-none-any.whl", hash = "sha256:6702bd9e7245eb4e8220a3e222afcef7f87412154732271ee7deee4433b72b4b", size = 6421, upload-time = "2025-11-29T05:56:44.604Z" }, + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, ] [[package]] name = "attrs" -version = "25.4.0" +version = "26.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, ] [[package]] @@ -271,245 +132,138 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8c/bb/2c9f8812f713dff207a15b960495527a462b401e9e22dc27edece97a916e/autoregistry-1.2.1-py3-none-any.whl", hash = "sha256:e1033b1b1511ffddf37d75ea5f697f00adb519ea387bb071b5c6bfb13d397d39", size = 17836, upload-time = "2025-12-08T03:11:44.004Z" }, ] -[[package]] -name = "babel" -version = "2.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, -] - [[package]] name = "backports-zstd" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f4/b1/36a5182ce1d8ef9ef32bff69037bd28b389bbdb66338f8069e61da7028cb/backports_zstd-1.3.0.tar.gz", hash = "sha256:e8b2d68e2812f5c9970cabc5e21da8b409b5ed04e79b4585dbffa33e9b45ebe2", size = 997138, upload-time = "2025-12-29T17:28:06.143Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/d4/356da49d3053f4bc50e71a8535631b57bc9ca4e8c6d2442e073e0ab41c44/backports_zstd-1.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f4a292e357f3046d18766ce06d990ccbab97411708d3acb934e63529c2ea7786", size = 435972, upload-time = "2025-12-29T17:26:18.752Z" }, - { url = "https://files.pythonhosted.org/packages/30/8f/dbe389e60c7e47af488520f31a4aa14028d66da5bf3c60d3044b571eb906/backports_zstd-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb4c386f38323698991b38edcc9c091d46d4713f5df02a3b5c80a28b40e289ea", size = 362124, upload-time = "2025-12-29T17:26:19.995Z" }, - { url = "https://files.pythonhosted.org/packages/55/4b/173beafc99e99e7276ce008ef060b704471e75124c826bc5e2092815da37/backports_zstd-1.3.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:f52523d2bdada29e653261abdc9cfcecd9e5500d305708b7e37caddb24909d4e", size = 506378, upload-time = "2025-12-29T17:26:21.855Z" }, - { url = "https://files.pythonhosted.org/packages/df/c8/3f12a411d9a99d262cdb37b521025eecc2aa7e4a93277be3f4f4889adb74/backports_zstd-1.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3321d00beaacbd647252a7f581c1e1cdbdbda2407f2addce4bfb10e8e404b7c7", size = 476201, upload-time = "2025-12-29T17:26:23.047Z" }, - { url = "https://files.pythonhosted.org/packages/43/dc/73c090e4a2d5671422512e1b6d276ca6ea0cc0c45ec4634789106adc0d66/backports_zstd-1.3.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:88f94d238ef36c639c0ae17cf41054ce103da9c4d399c6a778ce82690d9f4919", size = 581659, upload-time = "2025-12-29T17:26:24.189Z" }, - { url = "https://files.pythonhosted.org/packages/08/4f/11bfcef534aa2bf3f476f52130217b45337f334d8a287edb2e06744a6515/backports_zstd-1.3.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:97d8c78fe20c7442c810adccfd5e3ea6a4e6f4f1fa4c73da2bc083260ebead17", size = 640388, upload-time = "2025-12-29T17:26:25.47Z" }, - { url = "https://files.pythonhosted.org/packages/71/17/8faea426d4f49b63238bdfd9f211a9f01c862efe0d756d3abeb84265a4e2/backports_zstd-1.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eefda80c3dbfbd924f1c317e7b0543d39304ee645583cb58bae29e19f42948ed", size = 494173, upload-time = "2025-12-29T17:26:26.736Z" }, - { url = "https://files.pythonhosted.org/packages/ba/9d/901f19ac90f3cd999bdcfb6edb4d7b4dc383dfba537f06f533fc9ac4777b/backports_zstd-1.3.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2ab5d3b5a54a674f4f6367bb9e0914063f22cd102323876135e9cc7a8f14f17e", size = 568628, upload-time = "2025-12-29T17:26:28.12Z" }, - { url = "https://files.pythonhosted.org/packages/60/39/4d29788590c2465a570c2fae49dbff05741d1f0c8e4a0fb2c1c310f31804/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7558fb0e8c8197c59a5f80c56bf8f56c3690c45fd62f14e9e2081661556e3e64", size = 482233, upload-time = "2025-12-29T17:26:29.399Z" }, - { url = "https://files.pythonhosted.org/packages/d9/4b/24c7c9e8ef384b19d515a7b1644a500ceb3da3baeff6d579687da1a0f62b/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:27744870e38f017159b9c0241ea51562f94c7fefcfa4c5190fb3ec4a65a7fc63", size = 509806, upload-time = "2025-12-29T17:26:30.605Z" }, - { url = "https://files.pythonhosted.org/packages/3f/7e/7ba1aeecf0b5859f1855c0e661b4559566b64000f0627698ebd9e83f2138/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b099750755bb74c280827c7d68de621da0f245189082ab48ff91bda0ec2db9df", size = 586037, upload-time = "2025-12-29T17:26:32.201Z" }, - { url = "https://files.pythonhosted.org/packages/4a/1a/18f0402b36b9cfb0aea010b5df900cfd42c214f37493561dba3abac90c4e/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5434e86f2836d453ae3e19a2711449683b7e21e107686838d12a255ad256ca99", size = 566220, upload-time = "2025-12-29T17:26:33.5Z" }, - { url = "https://files.pythonhosted.org/packages/dc/d9/44c098ab31b948bbfd909ec4ae08e1e44c5025a2d846f62991a62ab3ebea/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:407e451f64e2f357c9218f5be4e372bb6102d7ae88582d415262a9d0a4f9b625", size = 630847, upload-time = "2025-12-29T17:26:35.273Z" }, - { url = "https://files.pythonhosted.org/packages/30/33/e74cb2cfb162d2e9e00dad8bcdf53118ca7786cfd467925d6864732f79cc/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:58a071f3c198c781b2df801070290b7174e3ff61875454e9df93ab7ea9ea832b", size = 498665, upload-time = "2025-12-29T17:26:37.123Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a9/67a24007c333ed22736d5cd79f1aa1d7209f09be772ff82a8fd724c1978e/backports_zstd-1.3.0-cp312-cp312-win32.whl", hash = "sha256:21a9a542ccc7958ddb51ae6e46d8ed25d585b54d0d52aaa1c8da431ea158046a", size = 288809, upload-time = "2025-12-29T17:26:38.373Z" }, - { url = "https://files.pythonhosted.org/packages/42/24/34b816118ea913debb2ea23e71ffd0fb2e2ac738064c4ac32e3fb62c18bb/backports_zstd-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:89ea8281821123b071a06b30b80da8e4d8a2b40a4f57315a19850337a21297ac", size = 313815, upload-time = "2025-12-29T17:26:39.665Z" }, - { url = "https://files.pythonhosted.org/packages/4e/2f/babd02c9fc4ca35376ada7c291193a208165c7be2455f0f98bc1e1243f31/backports_zstd-1.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:f6843ecb181480e423b02f60fe29e393cbc31a95fb532acdf0d3a2c87bd50ce3", size = 288927, upload-time = "2025-12-29T17:26:40.923Z" }, - { url = "https://files.pythonhosted.org/packages/0c/7d/53e8da5950cdfc5e8fe23efd5165ce2f4fed5222f9a3292e0cdb03dd8c0d/backports_zstd-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e86e03e3661900955f01afed6c59cae9baa63574e3b66896d99b7de97eaffce9", size = 435463, upload-time = "2025-12-29T17:26:42.152Z" }, - { url = "https://files.pythonhosted.org/packages/da/78/f98e53870f7404071a41e3d04f2ff514302eeeb3279d931d02b220f437aa/backports_zstd-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:41974dcacc9824c1effe1c8d2f9d762bcf47d265ca4581a3c63321c7b06c61f0", size = 361740, upload-time = "2025-12-29T17:26:43.377Z" }, - { url = "https://files.pythonhosted.org/packages/6d/ed/2c64706205a944c9c346d95c17f632d4e3468db3ce60efb6f5caa7c0dcae/backports_zstd-1.3.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:3090a97738d6ce9545d3ca5446df43370928092a962cbc0153e5445a947e98ed", size = 505651, upload-time = "2025-12-29T17:26:44.495Z" }, - { url = "https://files.pythonhosted.org/packages/7b/7b/22998f691dc6e0c7e6fa81d611eb4b1f6a72fb27327f322366d4a7ca8fb3/backports_zstd-1.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddc874638abf03ea1ff3b0525b4a26a8d0adf7cb46a448c3449f08e4abc276b3", size = 475859, upload-time = "2025-12-29T17:26:45.722Z" }, - { url = "https://files.pythonhosted.org/packages/0b/78/0cde898339a339530e5f932634872d2d64549969535447a48d3b98959e11/backports_zstd-1.3.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:db609e57b8ed88b3472930c87e93c08a4bbd5ffeb94608cd9c7c6f0ac0e166c6", size = 581339, upload-time = "2025-12-29T17:26:46.93Z" }, - { url = "https://files.pythonhosted.org/packages/e2/1d/e0973e0eebe678c12c146473af2c54cda8a3e63b179785ca1a20727ad69c/backports_zstd-1.3.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5f13033a3dd95f323c067199f2e61b4589a7880188ef4ef356c7ffbdb78a9f11", size = 642182, upload-time = "2025-12-29T17:26:48.545Z" }, - { url = "https://files.pythonhosted.org/packages/82/a2/ac67e79e137eb98aead66c7162bafe3cffcb82ef9cdeb6367ec18d88fbce/backports_zstd-1.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c4c7bcda5619a754726e7f5b391827f5efbe4bed8e62e9ec7490d42bff18aa6", size = 490807, upload-time = "2025-12-29T17:26:49.789Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e9/3514b1d065801ae7dce05246e9389003ed8fb1d7c3d71f85aa07a80f41e6/backports_zstd-1.3.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:884a94c40f27affe986f394f219a4fd3cbbd08e1cff2e028d29d467574cd266e", size = 566103, upload-time = "2025-12-29T17:26:51.062Z" }, - { url = "https://files.pythonhosted.org/packages/1b/03/10ddb54cbf032e5fe390c0776d3392611b1fc772d6c3cb5a9bcdff4f915f/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497f5765126f11a5b3fd8fedfdae0166d1dd867e7179b8148370a3313d047197", size = 481614, upload-time = "2025-12-29T17:26:52.255Z" }, - { url = "https://files.pythonhosted.org/packages/5c/13/21efa7f94c41447f43aee1563b05fc540a235e61bce4597754f6c11c2e97/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a6ff6769948bb29bba07e1c2e8582d5a9765192a366108e42d6581a458475881", size = 509207, upload-time = "2025-12-29T17:26:53.496Z" }, - { url = "https://files.pythonhosted.org/packages/de/e7/12da9256d9e49e71030f0ff75e9f7c258e76091a4eaf5b5f414409be6a57/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1623e5bff1acd9c8ef90d24fc548110f20df2d14432bfe5de59e76fc036824ef", size = 585765, upload-time = "2025-12-29T17:26:54.99Z" }, - { url = "https://files.pythonhosted.org/packages/24/bf/59ca9cb4e7be1e59331bb792e8ef1331828efe596b1a2f8cbbc4e3f70d75/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:622c28306dcc429c8f2057fc4421d5722b1f22968d299025b35d71b50cfd4e03", size = 563852, upload-time = "2025-12-29T17:26:56.371Z" }, - { url = "https://files.pythonhosted.org/packages/7c/ee/5a3eaed9a73bdf2c35dc0c7adc0616a99588e0de28f5ab52f3e0caaaa96f/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09a2785e410ed2e812cb39b684ef5eb55083a5897bfd0e6f5de3bbd2c6345f70", size = 632549, upload-time = "2025-12-29T17:26:57.598Z" }, - { url = "https://files.pythonhosted.org/packages/75/b9/c823633afc48a1ac56d6ad34289c8f51b0234685142531bfa8197ca91777/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ade1f4127fdbe36a02f8067d75aa79c1ea1c8a306bf63c7b818bb7b530e1beaa", size = 495104, upload-time = "2025-12-29T17:26:58.826Z" }, - { url = "https://files.pythonhosted.org/packages/a3/8f/6f7030f18fa7307f87b0f57108a50a3a540b6350e2486d1739c0567629a3/backports_zstd-1.3.0-cp313-cp313-win32.whl", hash = "sha256:668e6fb1805b825cb7504c71436f7b28d4d792bb2663ee901ec9a2bb15804437", size = 288447, upload-time = "2025-12-29T17:27:00.036Z" }, - { url = "https://files.pythonhosted.org/packages/a2/82/b1df1bbbe4e6d3ffd364d0bcffdeb6c4361115c1eccd91238dbdd0c07fec/backports_zstd-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:385bdadf0ea8fe6ba780a95e4c7d7f018db7bafdd630932f0f9f0fad05d608ff", size = 313664, upload-time = "2025-12-29T17:27:01.267Z" }, - { url = "https://files.pythonhosted.org/packages/45/0f/60918fe4d3f2881de8f4088d73be4837df9e4c6567594109d355a2d548b6/backports_zstd-1.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:4321a8a367537224b3559fe7aeb8012b98aea2a60a737e59e51d86e2e856fe0a", size = 288678, upload-time = "2025-12-29T17:27:02.506Z" }, - { url = "https://files.pythonhosted.org/packages/a7/b9/35f423c0bcd85020d5e7be6ab8d7517843e3e4441071beb5c3bd8c5216cb/backports_zstd-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:10057d66fa4f0a7d3f6419ffb84b4fe61088da572e3ac4446134a1c8089e4166", size = 436155, upload-time = "2025-12-29T17:27:03.859Z" }, - { url = "https://files.pythonhosted.org/packages/f6/14/e504daea24e8916f14ecbc223c354b558d8410cfc846606668ab91d96b38/backports_zstd-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4abf29d706ba05f658ca0247eb55675bcc00e10f12bca15736e45b05f1f2d2dc", size = 362436, upload-time = "2025-12-29T17:27:05.076Z" }, - { url = "https://files.pythonhosted.org/packages/c4/f7/06e178dbab7edb88c2872aebd68b54137e07a169eba1aeedf614014f7036/backports_zstd-1.3.0-cp313-cp313t-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:127b0d73c745b0684da3d95c31c0939570810dad8967dfe8231eea8f0e047b2f", size = 507600, upload-time = "2025-12-29T17:27:06.254Z" }, - { url = "https://files.pythonhosted.org/packages/3e/f1/2ce499b81c4389d6fa1eeea7e76f6e0bad48effdbb239da7cbcdaaf24b76/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0205ef809fb38bb5ca7f59fa03993596f918768b9378fb7fbd8a68889a6ce028", size = 475496, upload-time = "2025-12-29T17:27:07.939Z" }, - { url = "https://files.pythonhosted.org/packages/18/1e/c82a586f2866aabf3a601a521af3c58756d83d98b724fda200016ac5e7e2/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1c389b667b0b07915781aa28beabf2481f11a6062a1a081873c4c443b98601a7", size = 580919, upload-time = "2025-12-29T17:27:09.1Z" }, - { url = "https://files.pythonhosted.org/packages/1b/a3/eb5d9b7c4cb69d1b8ccd011abe244ba6815693b70bed07ed4b77ddda4535/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8e7ac5ef693d49d6fb35cd7bbb98c4762cfea94a8bd2bf2ab112027004f70b11", size = 639913, upload-time = "2025-12-29T17:27:10.433Z" }, - { url = "https://files.pythonhosted.org/packages/11/2c/7296b99df79d9f31174a99c81c1964a32de8996ce2b3068f5bc66b413615/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5d5543945aae2a76a850b23f283249424f535de6a622d6002957b7d971e6a36d", size = 494800, upload-time = "2025-12-29T17:27:11.59Z" }, - { url = "https://files.pythonhosted.org/packages/f9/fc/b8ae6e104ba72d20cd5f9dfd9baee36675e89c81d432434927967114f30f/backports_zstd-1.3.0-cp313-cp313t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e38be15ebce82737deda2c9410c1f942f1df9da74121049243a009810432db75", size = 570396, upload-time = "2025-12-29T17:27:13.063Z" }, - { url = "https://files.pythonhosted.org/packages/30/56/60a7a9de7a5bc951ea1106358b413c95183c93480394f3abc541313c8679/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3e3f58c76f4730607a4e0130d629173aa114ae72a5c8d3d5ad94e1bf51f18d8", size = 481980, upload-time = "2025-12-29T17:27:14.317Z" }, - { url = "https://files.pythonhosted.org/packages/4b/bb/93fc1e8e81b8ecba58b0e53a14f7b44375cf837db6354410998f0c4cb6ff/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b808bf889722d889b792f7894e19c1f904bb0e9092d8c0eb0787b939b08bad9a", size = 511358, upload-time = "2025-12-29T17:27:15.669Z" }, - { url = "https://files.pythonhosted.org/packages/ae/0f/b165c2a6080d22306975cd86ce97270208493f31a298867e343110570370/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f7be27d56f2f715bcd252d0c65c232146d8e1e039c7e2835b8a3ad3dc88bc508", size = 585492, upload-time = "2025-12-29T17:27:16.986Z" }, - { url = "https://files.pythonhosted.org/packages/26/76/85b4bde76e982b24a7eb57a2fb9868807887bef4d2114a3654a6530a67ef/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:cbe341c7fcc723893663a37175ba859328b907a4e6d2d40a4c26629cc55efb67", size = 568309, upload-time = "2025-12-29T17:27:18.28Z" }, - { url = "https://files.pythonhosted.org/packages/83/64/9490667827a320766fb883f358a7c19171fdc04f19ade156a8c341c36967/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:b4116a9e12dfcd834dd9132cf6a94657bf0d328cba5b295f26de26ea0ae1adc8", size = 630518, upload-time = "2025-12-29T17:27:19.525Z" }, - { url = "https://files.pythonhosted.org/packages/ea/43/258587233b728bbff457bdb0c52b3e08504c485a8642b3daeb0bdd5a76bc/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1049e804cc8754290b24dab383d4d6ed0b7f794ad8338813ddcb3907d15a89d0", size = 499429, upload-time = "2025-12-29T17:27:21.063Z" }, - { url = "https://files.pythonhosted.org/packages/32/04/cfab76878f360f124dbb533779e1e4603c801a0f5ada72ae5c742b7c4d7d/backports_zstd-1.3.0-cp313-cp313t-win32.whl", hash = "sha256:7d3f0f2499d2049ec53d2674c605a4b3052c217cc7ee49c05258046411685adc", size = 289389, upload-time = "2025-12-29T17:27:22.287Z" }, - { url = "https://files.pythonhosted.org/packages/cb/ff/dbcfb6c9c922ab6d98f3d321e7d0c7b34ecfa26f3ca71d930fe1ef639737/backports_zstd-1.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:eb2f8fab0b1ea05148394cb34a9e543a43477178765f2d6e7c84ed332e34935e", size = 314776, upload-time = "2025-12-29T17:27:23.458Z" }, - { url = "https://files.pythonhosted.org/packages/01/4b/82e4baae3117806639fe1c693b1f2f7e6133a7cefd1fa2e38018c8edcd68/backports_zstd-1.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c66ad9eb5bfbe28c2387b7fc58ddcdecfb336d6e4e60bcba1694a906c1f21a6c", size = 289315, upload-time = "2025-12-29T17:27:24.601Z" }, -] - -[[package]] -name = "backrefs" -version = "6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/86/e3/bb3a439d5cb255c4774724810ad8073830fac9c9dee123555820c1bcc806/backrefs-6.1.tar.gz", hash = "sha256:3bba1749aafe1db9b915f00e0dd166cba613b6f788ffd63060ac3485dc9be231", size = 7011962, upload-time = "2025-11-15T14:52:08.323Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ee/c216d52f58ea75b5e1841022bbae24438b19834a29b163cb32aa3a2a7c6e/backrefs-6.1-py310-none-any.whl", hash = "sha256:2a2ccb96302337ce61ee4717ceacfbf26ba4efb1d55af86564b8bbaeda39cac1", size = 381059, upload-time = "2025-11-15T14:51:59.758Z" }, - { url = "https://files.pythonhosted.org/packages/e6/9a/8da246d988ded941da96c7ed945d63e94a445637eaad985a0ed88787cb89/backrefs-6.1-py311-none-any.whl", hash = "sha256:e82bba3875ee4430f4de4b6db19429a27275d95a5f3773c57e9e18abc23fd2b7", size = 392854, upload-time = "2025-11-15T14:52:01.194Z" }, - { url = "https://files.pythonhosted.org/packages/37/c9/fd117a6f9300c62bbc33bc337fd2b3c6bfe28b6e9701de336b52d7a797ad/backrefs-6.1-py312-none-any.whl", hash = "sha256:c64698c8d2269343d88947c0735cb4b78745bd3ba590e10313fbf3f78c34da5a", size = 398770, upload-time = "2025-11-15T14:52:02.584Z" }, - { url = "https://files.pythonhosted.org/packages/eb/95/7118e935b0b0bd3f94dfec2d852fd4e4f4f9757bdb49850519acd245cd3a/backrefs-6.1-py313-none-any.whl", hash = "sha256:4c9d3dc1e2e558965202c012304f33d4e0e477e1c103663fd2c3cc9bb18b0d05", size = 400726, upload-time = "2025-11-15T14:52:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/1d/72/6296bad135bfafd3254ae3648cd152980a424bd6fed64a101af00cc7ba31/backrefs-6.1-py314-none-any.whl", hash = "sha256:13eafbc9ccd5222e9c1f0bec563e6d2a6d21514962f11e7fc79872fd56cbc853", size = 412584, upload-time = "2025-11-15T14:52:05.233Z" }, - { url = "https://files.pythonhosted.org/packages/02/e3/a4fa1946722c4c7b063cc25043a12d9ce9b4323777f89643be74cef2993c/backrefs-6.1-py39-none-any.whl", hash = "sha256:a9e99b8a4867852cad177a6430e31b0f6e495d65f8c6c134b68c14c3c95bf4b0", size = 381058, upload-time = "2025-11-15T14:52:06.698Z" }, -] - -[[package]] -name = "bcrypt" -version = "5.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/36/3329e2518d70ad8e2e5817d5a4cac6bba05a47767ec416c7d020a965f408/bcrypt-5.0.0.tar.gz", hash = "sha256:f748f7c2d6fd375cc93d3fba7ef4a9e3a092421b8dbf34d8d4dc06be9492dfdd", size = 25386, upload-time = "2025-09-25T19:50:47.829Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/85/3e65e01985fddf25b64ca67275bb5bdb4040bd1a53b66d355c6c37c8a680/bcrypt-5.0.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f3c08197f3039bec79cee59a606d62b96b16669cff3949f21e74796b6e3cd2be", size = 481806, upload-time = "2025-09-25T19:49:05.102Z" }, - { url = "https://files.pythonhosted.org/packages/44/dc/01eb79f12b177017a726cbf78330eb0eb442fae0e7b3dfd84ea2849552f3/bcrypt-5.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:200af71bc25f22006f4069060c88ed36f8aa4ff7f53e67ff04d2ab3f1e79a5b2", size = 268626, upload-time = "2025-09-25T19:49:06.723Z" }, - { url = "https://files.pythonhosted.org/packages/8c/cf/e82388ad5959c40d6afd94fb4743cc077129d45b952d46bdc3180310e2df/bcrypt-5.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:baade0a5657654c2984468efb7d6c110db87ea63ef5a4b54732e7e337253e44f", size = 271853, upload-time = "2025-09-25T19:49:08.028Z" }, - { url = "https://files.pythonhosted.org/packages/ec/86/7134b9dae7cf0efa85671651341f6afa695857fae172615e960fb6a466fa/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c58b56cdfb03202b3bcc9fd8daee8e8e9b6d7e3163aa97c631dfcfcc24d36c86", size = 269793, upload-time = "2025-09-25T19:49:09.727Z" }, - { url = "https://files.pythonhosted.org/packages/cc/82/6296688ac1b9e503d034e7d0614d56e80c5d1a08402ff856a4549cb59207/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4bfd2a34de661f34d0bda43c3e4e79df586e4716ef401fe31ea39d69d581ef23", size = 289930, upload-time = "2025-09-25T19:49:11.204Z" }, - { url = "https://files.pythonhosted.org/packages/d1/18/884a44aa47f2a3b88dd09bc05a1e40b57878ecd111d17e5bba6f09f8bb77/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ed2e1365e31fc73f1825fa830f1c8f8917ca1b3ca6185773b349c20fd606cec2", size = 272194, upload-time = "2025-09-25T19:49:12.524Z" }, - { url = "https://files.pythonhosted.org/packages/0e/8f/371a3ab33c6982070b674f1788e05b656cfbf5685894acbfef0c65483a59/bcrypt-5.0.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:83e787d7a84dbbfba6f250dd7a5efd689e935f03dd83b0f919d39349e1f23f83", size = 269381, upload-time = "2025-09-25T19:49:14.308Z" }, - { url = "https://files.pythonhosted.org/packages/b1/34/7e4e6abb7a8778db6422e88b1f06eb07c47682313997ee8a8f9352e5a6f1/bcrypt-5.0.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:137c5156524328a24b9fac1cb5db0ba618bc97d11970b39184c1d87dc4bf1746", size = 271750, upload-time = "2025-09-25T19:49:15.584Z" }, - { url = "https://files.pythonhosted.org/packages/c0/1b/54f416be2499bd72123c70d98d36c6cd61a4e33d9b89562c22481c81bb30/bcrypt-5.0.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:38cac74101777a6a7d3b3e3cfefa57089b5ada650dce2baf0cbdd9d65db22a9e", size = 303757, upload-time = "2025-09-25T19:49:17.244Z" }, - { url = "https://files.pythonhosted.org/packages/13/62/062c24c7bcf9d2826a1a843d0d605c65a755bc98002923d01fd61270705a/bcrypt-5.0.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d8d65b564ec849643d9f7ea05c6d9f0cd7ca23bdd4ac0c2dbef1104ab504543d", size = 306740, upload-time = "2025-09-25T19:49:18.693Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c8/1fdbfc8c0f20875b6b4020f3c7dc447b8de60aa0be5faaf009d24242aec9/bcrypt-5.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:741449132f64b3524e95cd30e5cd3343006ce146088f074f31ab26b94e6c75ba", size = 334197, upload-time = "2025-09-25T19:49:20.523Z" }, - { url = "https://files.pythonhosted.org/packages/a6/c1/8b84545382d75bef226fbc6588af0f7b7d095f7cd6a670b42a86243183cd/bcrypt-5.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:212139484ab3207b1f0c00633d3be92fef3c5f0af17cad155679d03ff2ee1e41", size = 352974, upload-time = "2025-09-25T19:49:22.254Z" }, - { url = "https://files.pythonhosted.org/packages/10/a6/ffb49d4254ed085e62e3e5dd05982b4393e32fe1e49bb1130186617c29cd/bcrypt-5.0.0-cp313-cp313t-win32.whl", hash = "sha256:9d52ed507c2488eddd6a95bccee4e808d3234fa78dd370e24bac65a21212b861", size = 148498, upload-time = "2025-09-25T19:49:24.134Z" }, - { url = "https://files.pythonhosted.org/packages/48/a9/259559edc85258b6d5fc5471a62a3299a6aa37a6611a169756bf4689323c/bcrypt-5.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f6984a24db30548fd39a44360532898c33528b74aedf81c26cf29c51ee47057e", size = 145853, upload-time = "2025-09-25T19:49:25.702Z" }, - { url = "https://files.pythonhosted.org/packages/2d/df/9714173403c7e8b245acf8e4be8876aac64a209d1b392af457c79e60492e/bcrypt-5.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9fffdb387abe6aa775af36ef16f55e318dcda4194ddbf82007a6f21da29de8f5", size = 139626, upload-time = "2025-09-25T19:49:26.928Z" }, - { url = "https://files.pythonhosted.org/packages/f8/14/c18006f91816606a4abe294ccc5d1e6f0e42304df5a33710e9e8e95416e1/bcrypt-5.0.0-cp314-cp314t-macosx_10_12_universal2.whl", hash = "sha256:4870a52610537037adb382444fefd3706d96d663ac44cbb2f37e3919dca3d7ef", size = 481862, upload-time = "2025-09-25T19:49:28.365Z" }, - { url = "https://files.pythonhosted.org/packages/67/49/dd074d831f00e589537e07a0725cf0e220d1f0d5d8e85ad5bbff251c45aa/bcrypt-5.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48f753100931605686f74e27a7b49238122aa761a9aefe9373265b8b7aa43ea4", size = 268544, upload-time = "2025-09-25T19:49:30.39Z" }, - { url = "https://files.pythonhosted.org/packages/f5/91/50ccba088b8c474545b034a1424d05195d9fcbaaf802ab8bfe2be5a4e0d7/bcrypt-5.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f70aadb7a809305226daedf75d90379c397b094755a710d7014b8b117df1ebbf", size = 271787, upload-time = "2025-09-25T19:49:32.144Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e7/d7dba133e02abcda3b52087a7eea8c0d4f64d3e593b4fffc10c31b7061f3/bcrypt-5.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:744d3c6b164caa658adcb72cb8cc9ad9b4b75c7db507ab4bc2480474a51989da", size = 269753, upload-time = "2025-09-25T19:49:33.885Z" }, - { url = "https://files.pythonhosted.org/packages/33/fc/5b145673c4b8d01018307b5c2c1fc87a6f5a436f0ad56607aee389de8ee3/bcrypt-5.0.0-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a28bc05039bdf3289d757f49d616ab3efe8cf40d8e8001ccdd621cd4f98f4fc9", size = 289587, upload-time = "2025-09-25T19:49:35.144Z" }, - { url = "https://files.pythonhosted.org/packages/27/d7/1ff22703ec6d4f90e62f1a5654b8867ef96bafb8e8102c2288333e1a6ca6/bcrypt-5.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7f277a4b3390ab4bebe597800a90da0edae882c6196d3038a73adf446c4f969f", size = 272178, upload-time = "2025-09-25T19:49:36.793Z" }, - { url = "https://files.pythonhosted.org/packages/c8/88/815b6d558a1e4d40ece04a2f84865b0fef233513bd85fd0e40c294272d62/bcrypt-5.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:79cfa161eda8d2ddf29acad370356b47f02387153b11d46042e93a0a95127493", size = 269295, upload-time = "2025-09-25T19:49:38.164Z" }, - { url = "https://files.pythonhosted.org/packages/51/8c/e0db387c79ab4931fc89827d37608c31cc57b6edc08ccd2386139028dc0d/bcrypt-5.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a5393eae5722bcef046a990b84dff02b954904c36a194f6cfc817d7dca6c6f0b", size = 271700, upload-time = "2025-09-25T19:49:39.917Z" }, - { url = "https://files.pythonhosted.org/packages/06/83/1570edddd150f572dbe9fc00f6203a89fc7d4226821f67328a85c330f239/bcrypt-5.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7f4c94dec1b5ab5d522750cb059bb9409ea8872d4494fd152b53cca99f1ddd8c", size = 334034, upload-time = "2025-09-25T19:49:41.227Z" }, - { url = "https://files.pythonhosted.org/packages/c9/f2/ea64e51a65e56ae7a8a4ec236c2bfbdd4b23008abd50ac33fbb2d1d15424/bcrypt-5.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0cae4cb350934dfd74c020525eeae0a5f79257e8a201c0c176f4b84fdbf2a4b4", size = 352766, upload-time = "2025-09-25T19:49:43.08Z" }, - { url = "https://files.pythonhosted.org/packages/d7/d4/1a388d21ee66876f27d1a1f41287897d0c0f1712ef97d395d708ba93004c/bcrypt-5.0.0-cp314-cp314t-win32.whl", hash = "sha256:b17366316c654e1ad0306a6858e189fc835eca39f7eb2cafd6aaca8ce0c40a2e", size = 152449, upload-time = "2025-09-25T19:49:44.971Z" }, - { url = "https://files.pythonhosted.org/packages/3f/61/3291c2243ae0229e5bca5d19f4032cecad5dfb05a2557169d3a69dc0ba91/bcrypt-5.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:92864f54fb48b4c718fc92a32825d0e42265a627f956bc0361fe869f1adc3e7d", size = 149310, upload-time = "2025-09-25T19:49:46.162Z" }, - { url = "https://files.pythonhosted.org/packages/3e/89/4b01c52ae0c1a681d4021e5dd3e45b111a8fb47254a274fa9a378d8d834b/bcrypt-5.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dd19cf5184a90c873009244586396a6a884d591a5323f0e8a5922560718d4993", size = 143761, upload-time = "2025-09-25T19:49:47.345Z" }, - { url = "https://files.pythonhosted.org/packages/84/29/6237f151fbfe295fe3e074ecc6d44228faa1e842a81f6d34a02937ee1736/bcrypt-5.0.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:fc746432b951e92b58317af8e0ca746efe93e66555f1b40888865ef5bf56446b", size = 494553, upload-time = "2025-09-25T19:49:49.006Z" }, - { url = "https://files.pythonhosted.org/packages/45/b6/4c1205dde5e464ea3bd88e8742e19f899c16fa8916fb8510a851fae985b5/bcrypt-5.0.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c2388ca94ffee269b6038d48747f4ce8df0ffbea43f31abfa18ac72f0218effb", size = 275009, upload-time = "2025-09-25T19:49:50.581Z" }, - { url = "https://files.pythonhosted.org/packages/3b/71/427945e6ead72ccffe77894b2655b695ccf14ae1866cd977e185d606dd2f/bcrypt-5.0.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:560ddb6ec730386e7b3b26b8b4c88197aaed924430e7b74666a586ac997249ef", size = 278029, upload-time = "2025-09-25T19:49:52.533Z" }, - { url = "https://files.pythonhosted.org/packages/17/72/c344825e3b83c5389a369c8a8e58ffe1480b8a699f46c127c34580c4666b/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d79e5c65dcc9af213594d6f7f1fa2c98ad3fc10431e7aa53c176b441943efbdd", size = 275907, upload-time = "2025-09-25T19:49:54.709Z" }, - { url = "https://files.pythonhosted.org/packages/0b/7e/d4e47d2df1641a36d1212e5c0514f5291e1a956a7749f1e595c07a972038/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2b732e7d388fa22d48920baa267ba5d97cca38070b69c0e2d37087b381c681fd", size = 296500, upload-time = "2025-09-25T19:49:56.013Z" }, - { url = "https://files.pythonhosted.org/packages/0f/c3/0ae57a68be2039287ec28bc463b82e4b8dc23f9d12c0be331f4782e19108/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0c8e093ea2532601a6f686edbc2c6b2ec24131ff5c52f7610dd64fa4553b5464", size = 278412, upload-time = "2025-09-25T19:49:57.356Z" }, - { url = "https://files.pythonhosted.org/packages/45/2b/77424511adb11e6a99e3a00dcc7745034bee89036ad7d7e255a7e47be7d8/bcrypt-5.0.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5b1589f4839a0899c146e8892efe320c0fa096568abd9b95593efac50a87cb75", size = 275486, upload-time = "2025-09-25T19:49:59.116Z" }, - { url = "https://files.pythonhosted.org/packages/43/0a/405c753f6158e0f3f14b00b462d8bca31296f7ecfc8fc8bc7919c0c7d73a/bcrypt-5.0.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:89042e61b5e808b67daf24a434d89bab164d4de1746b37a8d173b6b14f3db9ff", size = 277940, upload-time = "2025-09-25T19:50:00.869Z" }, - { url = "https://files.pythonhosted.org/packages/62/83/b3efc285d4aadc1fa83db385ec64dcfa1707e890eb42f03b127d66ac1b7b/bcrypt-5.0.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:e3cf5b2560c7b5a142286f69bde914494b6d8f901aaa71e453078388a50881c4", size = 310776, upload-time = "2025-09-25T19:50:02.393Z" }, - { url = "https://files.pythonhosted.org/packages/95/7d/47ee337dacecde6d234890fe929936cb03ebc4c3a7460854bbd9c97780b8/bcrypt-5.0.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f632fd56fc4e61564f78b46a2269153122db34988e78b6be8b32d28507b7eaeb", size = 312922, upload-time = "2025-09-25T19:50:04.232Z" }, - { url = "https://files.pythonhosted.org/packages/d6/3a/43d494dfb728f55f4e1cf8fd435d50c16a2d75493225b54c8d06122523c6/bcrypt-5.0.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:801cad5ccb6b87d1b430f183269b94c24f248dddbbc5c1f78b6ed231743e001c", size = 341367, upload-time = "2025-09-25T19:50:05.559Z" }, - { url = "https://files.pythonhosted.org/packages/55/ab/a0727a4547e383e2e22a630e0f908113db37904f58719dc48d4622139b5c/bcrypt-5.0.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3cf67a804fc66fc217e6914a5635000259fbbbb12e78a99488e4d5ba445a71eb", size = 359187, upload-time = "2025-09-25T19:50:06.916Z" }, - { url = "https://files.pythonhosted.org/packages/1b/bb/461f352fdca663524b4643d8b09e8435b4990f17fbf4fea6bc2a90aa0cc7/bcrypt-5.0.0-cp38-abi3-win32.whl", hash = "sha256:3abeb543874b2c0524ff40c57a4e14e5d3a66ff33fb423529c88f180fd756538", size = 153752, upload-time = "2025-09-25T19:50:08.515Z" }, - { url = "https://files.pythonhosted.org/packages/41/aa/4190e60921927b7056820291f56fc57d00d04757c8b316b2d3c0d1d6da2c/bcrypt-5.0.0-cp38-abi3-win_amd64.whl", hash = "sha256:35a77ec55b541e5e583eb3436ffbbf53b0ffa1fa16ca6782279daf95d146dcd9", size = 150881, upload-time = "2025-09-25T19:50:09.742Z" }, - { url = "https://files.pythonhosted.org/packages/54/12/cd77221719d0b39ac0b55dbd39358db1cd1246e0282e104366ebbfb8266a/bcrypt-5.0.0-cp38-abi3-win_arm64.whl", hash = "sha256:cde08734f12c6a4e28dc6755cd11d3bdfea608d93d958fffbe95a7026ebe4980", size = 144931, upload-time = "2025-09-25T19:50:11.016Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ba/2af136406e1c3839aea9ecadc2f6be2bcd1eff255bd451dd39bcf302c47a/bcrypt-5.0.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0c418ca99fd47e9c59a301744d63328f17798b5947b0f791e9af3c1c499c2d0a", size = 495313, upload-time = "2025-09-25T19:50:12.309Z" }, - { url = "https://files.pythonhosted.org/packages/ac/ee/2f4985dbad090ace5ad1f7dd8ff94477fe089b5fab2040bd784a3d5f187b/bcrypt-5.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddb4e1500f6efdd402218ffe34d040a1196c072e07929b9820f363a1fd1f4191", size = 275290, upload-time = "2025-09-25T19:50:13.673Z" }, - { url = "https://files.pythonhosted.org/packages/e4/6e/b77ade812672d15cf50842e167eead80ac3514f3beacac8902915417f8b7/bcrypt-5.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7aeef54b60ceddb6f30ee3db090351ecf0d40ec6e2abf41430997407a46d2254", size = 278253, upload-time = "2025-09-25T19:50:15.089Z" }, - { url = "https://files.pythonhosted.org/packages/36/c4/ed00ed32f1040f7990dac7115f82273e3c03da1e1a1587a778d8cea496d8/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f0ce778135f60799d89c9693b9b398819d15f1921ba15fe719acb3178215a7db", size = 276084, upload-time = "2025-09-25T19:50:16.699Z" }, - { url = "https://files.pythonhosted.org/packages/e7/c4/fa6e16145e145e87f1fa351bbd54b429354fd72145cd3d4e0c5157cf4c70/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a71f70ee269671460b37a449f5ff26982a6f2ba493b3eabdd687b4bf35f875ac", size = 297185, upload-time = "2025-09-25T19:50:18.525Z" }, - { url = "https://files.pythonhosted.org/packages/24/b4/11f8a31d8b67cca3371e046db49baa7c0594d71eb40ac8121e2fc0888db0/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8429e1c410b4073944f03bd778a9e066e7fad723564a52ff91841d278dfc822", size = 278656, upload-time = "2025-09-25T19:50:19.809Z" }, - { url = "https://files.pythonhosted.org/packages/ac/31/79f11865f8078e192847d2cb526e3fa27c200933c982c5b2869720fa5fce/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:edfcdcedd0d0f05850c52ba3127b1fce70b9f89e0fe5ff16517df7e81fa3cbb8", size = 275662, upload-time = "2025-09-25T19:50:21.567Z" }, - { url = "https://files.pythonhosted.org/packages/d4/8d/5e43d9584b3b3591a6f9b68f755a4da879a59712981ef5ad2a0ac1379f7a/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:611f0a17aa4a25a69362dcc299fda5c8a3d4f160e2abb3831041feb77393a14a", size = 278240, upload-time = "2025-09-25T19:50:23.305Z" }, - { url = "https://files.pythonhosted.org/packages/89/48/44590e3fc158620f680a978aafe8f87a4c4320da81ed11552f0323aa9a57/bcrypt-5.0.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:db99dca3b1fdc3db87d7c57eac0c82281242d1eabf19dcb8a6b10eb29a2e72d1", size = 311152, upload-time = "2025-09-25T19:50:24.597Z" }, - { url = "https://files.pythonhosted.org/packages/5f/85/e4fbfc46f14f47b0d20493669a625da5827d07e8a88ee460af6cd9768b44/bcrypt-5.0.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:5feebf85a9cefda32966d8171f5db7e3ba964b77fdfe31919622256f80f9cf42", size = 313284, upload-time = "2025-09-25T19:50:26.268Z" }, - { url = "https://files.pythonhosted.org/packages/25/ae/479f81d3f4594456a01ea2f05b132a519eff9ab5768a70430fa1132384b1/bcrypt-5.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3ca8a166b1140436e058298a34d88032ab62f15aae1c598580333dc21d27ef10", size = 341643, upload-time = "2025-09-25T19:50:28.02Z" }, - { url = "https://files.pythonhosted.org/packages/df/d2/36a086dee1473b14276cd6ea7f61aef3b2648710b5d7f1c9e032c29b859f/bcrypt-5.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:61afc381250c3182d9078551e3ac3a41da14154fbff647ddf52a769f588c4172", size = 359698, upload-time = "2025-09-25T19:50:31.347Z" }, - { url = "https://files.pythonhosted.org/packages/c0/f6/688d2cd64bfd0b14d805ddb8a565e11ca1fb0fd6817175d58b10052b6d88/bcrypt-5.0.0-cp39-abi3-win32.whl", hash = "sha256:64d7ce196203e468c457c37ec22390f1a61c85c6f0b8160fd752940ccfb3a683", size = 153725, upload-time = "2025-09-25T19:50:34.384Z" }, - { url = "https://files.pythonhosted.org/packages/9f/b9/9d9a641194a730bda138b3dfe53f584d61c58cd5230e37566e83ec2ffa0d/bcrypt-5.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:64ee8434b0da054d830fa8e89e1c8bf30061d539044a39524ff7dec90481e5c2", size = 150912, upload-time = "2025-09-25T19:50:35.69Z" }, - { url = "https://files.pythonhosted.org/packages/27/44/d2ef5e87509158ad2187f4dd0852df80695bb1ee0cfe0a684727b01a69e0/bcrypt-5.0.0-cp39-abi3-win_arm64.whl", hash = "sha256:f2347d3534e76bf50bca5500989d6c1d05ed64b440408057a37673282c654927", size = 144953, upload-time = "2025-09-25T19:50:37.32Z" }, -] - -[[package]] -name = "beartype" -version = "0.22.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/94/1009e248bbfbab11397abca7193bea6626806be9a327d399810d523a07cb/beartype-0.22.9.tar.gz", hash = "sha256:8f82b54aa723a2848a56008d18875f91c1db02c32ef6a62319a002e3e25a975f", size = 1608866, upload-time = "2025-12-13T06:50:30.72Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl", hash = "sha256:d16c9bbc61ea14637596c5f6fbff2ee99cbe3573e46a716401734ef50c3060c2", size = 1333658, upload-time = "2025-12-13T06:50:28.266Z" }, -] - -[[package]] -name = "billiard" -version = "4.2.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/23/b12ac0bcdfb7360d664f40a00b1bda139cbbbced012c34e375506dbd0143/billiard-4.2.4.tar.gz", hash = "sha256:55f542c371209e03cd5862299b74e52e4fbcba8250ba611ad94276b369b6a85f", size = 156537, upload-time = "2025-11-30T13:28:48.52Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/87/8bab77b323f16d67be364031220069f79159117dd5e43eeb4be2fef1ac9b/billiard-4.2.4-py3-none-any.whl", hash = "sha256:525b42bdec68d2b983347ac312f892db930858495db601b5836ac24e6477cde5", size = 87070, upload-time = "2025-11-30T13:28:47.016Z" }, -] - -[[package]] -name = "bracex" -version = "2.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/63/9a/fec38644694abfaaeca2798b58e276a8e61de49e2e37494ace423395febc/bracex-2.6.tar.gz", hash = "sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7", size = 26642, upload-time = "2025-06-22T19:12:31.254Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/2a/9186535ce58db529927f6cf5990a849aa9e052eea3e2cfefe20b9e1802da/bracex-2.6-py3-none-any.whl", hash = "sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952", size = 11508, upload-time = "2025-06-22T19:12:29.781Z" }, -] - -[[package]] -name = "cachetools" -version = "6.2.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/1d/ede8680603f6016887c062a2cf4fc8fdba905866a3ab8831aa8aa651320c/cachetools-6.2.4.tar.gz", hash = "sha256:82c5c05585e70b6ba2d3ae09ea60b79548872185d2f24ae1f2709d37299fd607", size = 31731, upload-time = "2025-12-15T18:24:53.744Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/fc/1d7b80d0eb7b714984ce40efc78859c022cd930e402f599d8ca9e39c78a4/cachetools-6.2.4-py3-none-any.whl", hash = "sha256:69a7a52634fed8b8bf6e24a050fb60bff1c9bd8f6d24572b99c32d4e71e62a51", size = 11551, upload-time = "2025-12-15T18:24:52.332Z" }, -] - -[[package]] -name = "cairocffi" -version = "1.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload-time = "2024-06-18T10:56:06.741Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload-time = "2024-06-18T10:55:59.489Z" }, -] - -[[package]] -name = "cairosvg" -version = "2.8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cairocffi" }, - { name = "cssselect2" }, - { name = "defusedxml" }, - { name = "pillow" }, - { name = "tinycss2" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590, upload-time = "2025-05-15T06:56:32.653Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773, upload-time = "2025-05-15T06:56:28.552Z" }, -] - -[[package]] -name = "celery" -version = "5.6.2" +version = "1.5.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "billiard" }, - { name = "click" }, - { name = "click-didyoumean" }, - { name = "click-plugins" }, - { name = "click-repl" }, - { name = "kombu" }, - { name = "python-dateutil" }, - { name = "tzlocal" }, - { name = "vine" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/9d/3d13596519cfa7207a6f9834f4b082554845eb3cd2684b5f8535d50c7c44/celery-5.6.2.tar.gz", hash = "sha256:4a8921c3fcf2ad76317d3b29020772103581ed2454c4c042cc55dcc43585009b", size = 1718802, upload-time = "2026-01-04T12:35:58.012Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/bd/9ecd619e456ae4ba73b6583cc313f26152afae13e9a82ac4fe7f8856bfd1/celery-5.6.2-py3-none-any.whl", hash = "sha256:3ffafacbe056951b629c7abcf9064c4a2366de0bdfc9fdba421b97ebb68619a5", size = 445502, upload-time = "2026-01-04T12:35:55.894Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/d4/05/480d439b482edf59b786bc19b474d990c61942e372f5de3dc14acac8154d/backports_zstd-1.5.0.tar.gz", hash = "sha256:a5e622a82eb183b4fbe18032755ce0a15fa9a82f2adb9b621620b91247aaedb7", size = 998556, upload-time = "2026-05-11T19:54:24.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/71/29ed213344f8f62b7520745d7df3752d88db456aff9d8b706bdf5eb99a3c/backports_zstd-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1858cacdb3e50105a1b60acdc3dd5b18650077d12dce243e19d5c88e8172bd71", size = 437170, upload-time = "2026-05-11T19:52:53.204Z" }, + { url = "https://files.pythonhosted.org/packages/d0/e3/a58a3eb8fc54d4e3e4f684ed7b1f688da02e5bda5ae5e2809e94cf2ead2f/backports_zstd-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ccffc0a1974ecc2cc42afa4c15f56d036a4b2bae0abc46e6ba9b3358d9b1c037", size = 363265, upload-time = "2026-05-11T19:52:55.153Z" }, + { url = "https://files.pythonhosted.org/packages/3f/03/9d13840d206dec1c4698c803f61c58379b3578cb9dc6140ba5fa4ce2f31d/backports_zstd-1.5.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:ab3430ab4d4ac3fb1bc1e4174d137731e51363b6abd5e51a1599690fe9c7d61d", size = 507527, upload-time = "2026-05-11T19:52:57.256Z" }, + { url = "https://files.pythonhosted.org/packages/6a/8f/8dc4b5736dca218cbca9609549a8f6dc202990abdb49afdc6112442f5360/backports_zstd-1.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c737c1cb4a10c2d0f6cba9a347522858094f0a737b4558c67a777bcaa4a795cd", size = 477352, upload-time = "2026-05-11T19:52:59.425Z" }, + { url = "https://files.pythonhosted.org/packages/96/2c/65a66976a761b5b62eacbaed5ed418c694b24b5c480399315d799751de62/backports_zstd-1.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0379c66510681a6b2780d3f3ef2cff54d01204b52448d64bde1855d40f856a04", size = 582799, upload-time = "2026-05-11T19:53:01.303Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e9/ee93a66cd28cb3ad7f3c04d1105325a5428671b18bd41ba9ed8b43bc44cf/backports_zstd-1.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7c7474b291e264c9609358d3875cf539623f7a65339c2b533020992b1a4c095b", size = 641530, upload-time = "2026-05-11T19:53:03.082Z" }, + { url = "https://files.pythonhosted.org/packages/e4/4b/2cecd4d6679f175f28ae02022bd2050ff4023e38902fae104dbe2e231911/backports_zstd-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb73c22444617bc5a3abf32dd27b3f2085898cfe3b95e6855300e9189898a3bd", size = 495324, upload-time = "2026-05-11T19:53:05.005Z" }, + { url = "https://files.pythonhosted.org/packages/4d/20/ee21e4e791e31f38f7a70b3961eb64b350d9be802a335e7a04c02b41b197/backports_zstd-1.5.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6cd7f6c33afd89354f74469e315e72754e3040f91f7b685061e225d9e36e3e8e", size = 569796, upload-time = "2026-05-11T19:53:07.011Z" }, + { url = "https://files.pythonhosted.org/packages/76/da/86c9a2ea384885b60638b3e47113198449568d0e36ef3834d1f969623092/backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2106309071f279b38d3663c55c7fed192733b4f332b50eb3fa707e54bad6967a", size = 483367, upload-time = "2026-05-11T19:53:08.674Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f0/c95c6e4dd28fc314547782a482839e422283d62c2aaf45d30672109a4a1e/backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:56fffa80be74cb11ac843333bbdc56e466c87967706886b3efd6b16d83830d90", size = 510976, upload-time = "2026-05-11T19:53:10.339Z" }, + { url = "https://files.pythonhosted.org/packages/0e/a2/72777b7e1872228a13b09b0bf77ae6cf626008d462cc2e1a0ae64721fd55/backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5e8b8251eec80e67e30ec79dfc5b3b1ada069b9ac48b56b102f3e2c6f8281062", size = 587190, upload-time = "2026-05-11T19:53:12.205Z" }, + { url = "https://files.pythonhosted.org/packages/f5/a1/db5d1aee59da308eadeaa189764a4ec68e98495c309a13dcb8da5718fef1/backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:f334dd17ffead361aa9090e40151bd123507ce213a62733121b7145c6711cbde", size = 567395, upload-time = "2026-05-11T19:53:14.245Z" }, + { url = "https://files.pythonhosted.org/packages/00/0f/39ca1a6e8c5c2dc81da9e06c44d1990cc464f4b16dae214e877afd7adfc0/backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:78cbfd061255fef6de5070a54e0f9c00e8aabad5c99dd2ad884a3a7d1acc09ae", size = 632048, upload-time = "2026-05-11T19:53:16.234Z" }, + { url = "https://files.pythonhosted.org/packages/73/fd/a438ee4fc615016dbe96112b709b6805ee19eb215f46e208c8fbce086d8d/backports_zstd-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f55d70df44f49d599e20033013bc1ae705202735c45d4bca8eb963b225e15fd", size = 499833, upload-time = "2026-05-11T19:53:17.85Z" }, + { url = "https://files.pythonhosted.org/packages/f7/42/f544fde4de32687e28c514288ae3c11106ba644e9dd580992cbd704bbb49/backports_zstd-1.5.0-cp312-cp312-win32.whl", hash = "sha256:a8b096e0383a3bcab34f8c97b79e1a52051189d11258bbc2bc1145997a15dd1d", size = 289876, upload-time = "2026-05-11T19:53:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/ad/31/9c29cd3175892e5ee909f5e8d14707fa07815301ff24b5c697d1cea62a77/backports_zstd-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e2802899ba4ef1a062ffe4bb1292c5df32011a54b4c3004c54f46ec975f39554", size = 314933, upload-time = "2026-05-11T19:53:20.942Z" }, + { url = "https://files.pythonhosted.org/packages/11/ee/1a50acd6446c0d57c4f93ad6ce68e1a631ad920737a6b2d0bbbc47de7f42/backports_zstd-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:3c0353e66942afbd45518788cfbd1e9e117828ceb390fa50517f46f291850d8e", size = 291665, upload-time = "2026-05-11T19:53:22.686Z" }, + { url = "https://files.pythonhosted.org/packages/c6/e6/252521e3a847eb200bc0a1d528542d651b9c8dc7953e231c39ed2890d5ff/backports_zstd-1.5.0-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:02a57ee8598dd863c0b11c7af00042ce6bc045bf6f4249fa4c322c62614ca1fd", size = 400134, upload-time = "2026-05-11T19:53:24.28Z" }, + { url = "https://files.pythonhosted.org/packages/36/43/27ef105ffa2da3d52218d4a7b2e14037974283953b3ee790358af6e9b4df/backports_zstd-1.5.0-cp313-cp313-android_21_x86_64.whl", hash = "sha256:c56c11eb3173d540e1fb0216f7ab477cbd3a204eca41f5f329059ee8a5d2ad47", size = 454225, upload-time = "2026-05-11T19:53:25.874Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c9/cdcba1244347500d00567ce2cd6bf04c92d1b0fb6405fb8e13c07715eb46/backports_zstd-1.5.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:ef98f632026aa8e6ce05d786977092798efbe78677aa71219f22d31787809c90", size = 357229, upload-time = "2026-05-11T19:53:27.661Z" }, + { url = "https://files.pythonhosted.org/packages/df/da/cea04dab3ffb940bde9a59866bde6f2594a7b3ef2948a63fb3898f73d311/backports_zstd-1.5.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:c3712300b18f9d07f788b03594b2f34dfad89d77df96938a640c5007522a6b69", size = 365907, upload-time = "2026-05-11T19:53:29.241Z" }, + { url = "https://files.pythonhosted.org/packages/da/c4/6a71df2e65033f9b7d8017d77ea2bb572fc2ebc814ea383fdcda4187597a/backports_zstd-1.5.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:bdbc75d1f54df70b65bcfbc8aa0cac21475f79665bb045960af606dc07b56090", size = 446453, upload-time = "2026-05-11T19:53:30.888Z" }, + { url = "https://files.pythonhosted.org/packages/66/e7/f98ad1a6a249c27884df9d28cf6ebc3c368e0e3288a741c1d51a572bb3d7/backports_zstd-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93d306300d25e59f1cbe98cda494bf295be03a20e8b2c5602ee5ddc03ded29f2", size = 436634, upload-time = "2026-05-11T19:53:32.484Z" }, + { url = "https://files.pythonhosted.org/packages/ba/42/d0393ecc64e2ab6ae1b5ca7edbe26e3fe5196885f15d6cc4bce7254e29cd/backports_zstd-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:305d2e4ae9a595d0fd9d5bea5a7a2163306c6c4dcc5eec35ecd5008219d4580e", size = 362867, upload-time = "2026-05-11T19:53:34.385Z" }, + { url = "https://files.pythonhosted.org/packages/41/fe/87aa9404763bada695d06e5cb9d0575bae033cbf3a2e4e3bd648760178f7/backports_zstd-1.5.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:c8f0967bf8d806b250fb1e905a6b8190e7ae83656d5308989243f84e01fa3774", size = 506844, upload-time = "2026-05-11T19:53:36.023Z" }, + { url = "https://files.pythonhosted.org/packages/56/94/3af7ce637d148e0b0acb1298b61afe9a934ed425bad9ff05e87afbf6766d/backports_zstd-1.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76b7314ca9a253171e3e9524960e9e6411997323cf10aecbbc330faa7a90278d", size = 476975, upload-time = "2026-05-11T19:53:37.885Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6c/dc2aa1b48296ac6effc3bacb5a3061d40ed74bf73082dfe38eed2ba8362b/backports_zstd-1.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b1d0bf16bba86b1071731ced389f184e8de61c1afcafa584244f7f726632f92f", size = 582496, upload-time = "2026-05-11T19:53:39.812Z" }, + { url = "https://files.pythonhosted.org/packages/f6/38/dd49d3dd27eda9b165ccd63d70538fea016a3e9e42923bbbc1d89fae8a43/backports_zstd-1.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:96709d27d406008575ef759405169d538040156704b457d8c0ac035127a46b67", size = 643257, upload-time = "2026-05-11T19:53:41.819Z" }, + { url = "https://files.pythonhosted.org/packages/59/75/78e819272450aec2462f97a1bceb90bde481f9dba435bf9e76d580b4dec4/backports_zstd-1.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5737402c29b2bd5bc661d4cde08aed531ed326f2b59a7ad98dc07650dc99a2c9", size = 491958, upload-time = "2026-05-11T19:53:43.501Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/d860f9cf21cb59d583a12166353bf71a439538e2b669f4a7736e400ca596/backports_zstd-1.5.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2b65f37ddd375114dbf84658e7dd168e10f5a93394940bfefa7fafc2d3234450", size = 567198, upload-time = "2026-05-11T19:53:45.226Z" }, + { url = "https://files.pythonhosted.org/packages/38/7c/b175d4c9ff60f964c8f6dd43211de905227cfde5a41eb5f654df58483025/backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4fae7825dde4f81c28b4c66b1e997f893e296c3f1668351952b3ed085eb9f8cd", size = 482792, upload-time = "2026-05-11T19:53:47.323Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e3/f7b50cf891a10da5f9c412ed4a9c4a772df4d4186d98a41e75c9b462f148/backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3aa10e77c0e712d2dfb950910b50591c2fb11f0f1328814e23acc0b4950766df", size = 510363, upload-time = "2026-05-11T19:53:49.523Z" }, + { url = "https://files.pythonhosted.org/packages/be/50/e7841fd4a65661d527697a0e2dab97295868965ccd4e3e12474472719a60/backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:518b2ef54ce0fee6d29379cfd64ef66e639456f1b18943466e929b19677f135f", size = 586917, upload-time = "2026-05-11T19:53:51.741Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7c/57e985dbd621f0307b8c57cabb258eb976793f2aeaf8a5bc020e15b4a793/backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:673a1e5fdaa6cb0c7a967eb33066b6dd564871b3498a93e11e2972998047d11f", size = 565004, upload-time = "2026-05-11T19:53:53.774Z" }, + { url = "https://files.pythonhosted.org/packages/2f/8f/855ffcd1ee0fcf44c3fe62e36db8e7362292d450cc7c4b3f43edccbcd37a/backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1277c07ff2d731586aa05aebd946a1b30184620d886a735dd5d5bf94a4a1061e", size = 633737, upload-time = "2026-05-11T19:53:56.036Z" }, + { url = "https://files.pythonhosted.org/packages/20/39/c4129a03d268699200dfebe1ccab97c7c332d2794571afb372a62e4ed098/backports_zstd-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aff334c7c38b4aea2a899f3138a99c1d58f0686ad7815c74bff506ecf4333296", size = 496309, upload-time = "2026-05-11T19:53:57.591Z" }, + { url = "https://files.pythonhosted.org/packages/8e/33/34152316dd244dcd43d5300ded3cf6e1b46d343e4e92620c23e533fa91df/backports_zstd-1.5.0-cp313-cp313-win32.whl", hash = "sha256:b932834c4d85360f46d1e7fbf3eee1e26ba594e0eb5c3ee1281e89bc1d48d06f", size = 289560, upload-time = "2026-05-11T19:53:59.274Z" }, + { url = "https://files.pythonhosted.org/packages/71/c5/f759bc87fd77c88f4fdad2d878535fb7e9537c6a05876d206e6690bf33c6/backports_zstd-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:c71dfbeced720326a8917a6edf921c568dc2396228c6432205c6d7e7fe7f3707", size = 314812, upload-time = "2026-05-11T19:54:00.909Z" }, + { url = "https://files.pythonhosted.org/packages/47/96/d7970dbb2fef34b549b34146090f48f41903cc7268b1ed1c7542eaa1852e/backports_zstd-1.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:7b5798b20ffff71ee4620a01f56fe0b50271724b4251db08c90a069446cc4752", size = 291411, upload-time = "2026-05-11T19:54:02.541Z" }, +] + +[[package]] +name = "cachebox" +version = "5.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/f6/85f176d2518cf1d1be5f981fc2dadf6b131e33fefd721f36b330e3434d6c/cachebox-5.2.3.tar.gz", hash = "sha256:b1f68246685aa739bbbd2734befb1465363a1e1042407c154feadb065f17a099", size = 63686, upload-time = "2026-04-10T12:21:35.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/e7/6fa6abfc9c4c07b88f09a88466fa93c7081fd679d8e06f8f558bb4ac845c/cachebox-5.2.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09c0340e9daa7b4530801e5a570cb0c1a1ad941a85d245d360020d3986d0e787", size = 377791, upload-time = "2026-04-10T12:20:23.87Z" }, + { url = "https://files.pythonhosted.org/packages/3a/79/89e4423352d0ca33bbf80fc1b4b665e654a93de8b16cf41e96fcac81801a/cachebox-5.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3162758792626685ec34950eedd565d015b115d0ff0d751d2716031fc32d51b", size = 359562, upload-time = "2026-04-10T12:20:10.626Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ab/e533c2751e6a3411ebe369277aaed03199b9e4586a48f0a3712a1f4b418b/cachebox-5.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a189a780c3ccd7b9d157074ba6bf3e191e522b39abbdb590075111851f02d50d", size = 397910, upload-time = "2026-04-10T12:18:53.336Z" }, + { url = "https://files.pythonhosted.org/packages/7a/0d/b8492d6ca53278499a37c9f9d51afd4ad77bfbe813d6281944d45b97a1e7/cachebox-5.2.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:410b67baa99d433644199b11289627f7ebba4ee5786f95ca9858f238afcee157", size = 353699, upload-time = "2026-04-10T12:19:06.248Z" }, + { url = "https://files.pythonhosted.org/packages/78/d4/fd20b3a5362651303fa12d3ee62f56af2bd396e4a7303d7014a1a1e5b392/cachebox-5.2.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f81474dc19d3865fa5e57263f834bc6bbc00e471a594fb9d934ed552732c02fd", size = 372510, upload-time = "2026-04-10T12:19:18.997Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/3ec55c946d300cc4eaed3a0f79740051ac6e11ef4032421332c6ca15f5d5/cachebox-5.2.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85ccd827193b3e3e887a88a16b88ef7ed174e7e65be515b5253322aa75e665c3", size = 392802, upload-time = "2026-04-10T12:19:31.196Z" }, + { url = "https://files.pythonhosted.org/packages/01/b1/1a3c4e436ad8a4c4ba3e70f4c62e1f927cbbb3c943a9bba5813b8b815bde/cachebox-5.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a1e7d3cb8a5e7e68996a8619e3ef8771a124d14568c251f9e586eba88d759c1", size = 398223, upload-time = "2026-04-10T12:19:57.583Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/d36ad3976c4396b350b96a1582411b7a00e56c144eec0bb5ba5f36ce7d86/cachebox-5.2.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:adcedfcfcb933b21e7fdcfe560c79887bc8287abceab0586aa3730417dd0277d", size = 427696, upload-time = "2026-04-10T12:19:44.361Z" }, + { url = "https://files.pythonhosted.org/packages/a8/36/71845b5c7a9ffbd85e6fdb470c11a174f499bd5238fa37b1214157c2454d/cachebox-5.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c7f0c72c51a3a9e7049ea6ff2a43cd3877ab7fee966eb65771a59621563b75e3", size = 567854, upload-time = "2026-04-10T12:20:38.357Z" }, + { url = "https://files.pythonhosted.org/packages/e8/a2/baf0e5a8392e64e352b137ccd7356b3d98068c842fd19f510a7790c05d34/cachebox-5.2.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c48c10e498d573511aafbd545570e7f43b40a7428dc282183bf5adc334d9e1a8", size = 670306, upload-time = "2026-04-10T12:20:52.903Z" }, + { url = "https://files.pythonhosted.org/packages/a5/22/cd4e4c1d624b8ef9fb4b8bebf0bf5d2d74a399cf1ac46b667bb79d15359a/cachebox-5.2.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2f1e086ab5ffd082a68bb63699d517655a59b06414927bfc84e01df91b81e34d", size = 645943, upload-time = "2026-04-10T12:21:08.238Z" }, + { url = "https://files.pythonhosted.org/packages/0a/d6/55859981f5ec6a9e412baaa4db6aa5973a00008750b3f054cdefcb6491fc/cachebox-5.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:649d18399f13735bb82daa33800196f815529c49e967767c40ca221723e68afa", size = 612309, upload-time = "2026-04-10T12:21:23.404Z" }, + { url = "https://files.pythonhosted.org/packages/d7/1e/313f650467ac85824c4199188f8f1ee3386cd12eb665dbf7c88d372e4956/cachebox-5.2.3-cp312-cp312-win32.whl", hash = "sha256:0a17aeb4e5b1c6ef1c3db8fc5186f9986e215ba5ea5a5d08baa45bcf55f261b2", size = 279789, upload-time = "2026-04-10T12:21:53.215Z" }, + { url = "https://files.pythonhosted.org/packages/c5/50/3b334f887accfa811cf5c7533b8ce22c523eb009363a86401198899dadd2/cachebox-5.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:cfd69114141ab362acaa2099e425a1b965cf7b021a539a4e953143d593930b74", size = 290917, upload-time = "2026-04-10T12:21:39.696Z" }, + { url = "https://files.pythonhosted.org/packages/31/3b/16d5c295f6ec2913ef595b39986dc7b7cc179fdd2e73f5ebd1814c38fd51/cachebox-5.2.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9527c5c70f8735f2d696331d8bcf77254f03b4dc8542046807823bd36ed4e8ba", size = 377408, upload-time = "2026-04-10T12:20:25.444Z" }, + { url = "https://files.pythonhosted.org/packages/cd/87/45f834154f79721e5b64a80ffab4f9710834c4f9c01fa977f94a9116c32a/cachebox-5.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:40ac878af00d5969862c1f6bc076de1e34ca248662fce6aecca1761f52e33e32", size = 359274, upload-time = "2026-04-10T12:20:12.127Z" }, + { url = "https://files.pythonhosted.org/packages/46/17/794e5f93e0a172aa14ecd692f6d89bdf094f71eb35fa923d0a0af25cef1c/cachebox-5.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5ff26bfd8f7e95b3becf6d5f65c25edaca50fa68078868648b70d79bcccc260", size = 397520, upload-time = "2026-04-10T12:18:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/19/9470b1a96de6e480192b1a92b2fafa72aa052efc2509a5418a5652205b33/cachebox-5.2.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82e7002dd343afeeba2fcf0e483131b342a27ec3bc34b2214dc617691bda40d6", size = 353183, upload-time = "2026-04-10T12:19:07.797Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2b/72813f80397ed4640e337cbd1a14ab7eaafe33e479291d3623b6a6a55fec/cachebox-5.2.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ccbdc54a6c4b5758408c1083bdfa217bd382894a8331c7d0a54b84ba0cf51e5b", size = 372239, upload-time = "2026-04-10T12:19:20.44Z" }, + { url = "https://files.pythonhosted.org/packages/05/17/47dc9687288fa55486573627089ecd9aae124de5924a4bce008af96d80b6/cachebox-5.2.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df5135a168f143d186b1cc3be0ca16b66446897ab5cedc03bd80bcc926fcd403", size = 392568, upload-time = "2026-04-10T12:19:32.73Z" }, + { url = "https://files.pythonhosted.org/packages/13/95/450765b971a3bed9d7cf003c3833c1976482eb83b0241b6dbb840a25b43b/cachebox-5.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10bedf96db8f9766cc956f9adcc623e604264e5d6fa2e255432f8c2ed7519143", size = 397920, upload-time = "2026-04-10T12:19:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3e/dd8f4c1f92e58d479913ce9cbaa3227c911128e6046c82f4fd44309f685a/cachebox-5.2.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f22732d0d69bb84ad2dca7480bffdfd0430c647152d488936e152ecbbfee52fb", size = 427332, upload-time = "2026-04-10T12:19:45.888Z" }, + { url = "https://files.pythonhosted.org/packages/7e/20/80d8c26ce63e78da3874a5bb07a3a78de53a2b0356ba80583a4927f0a074/cachebox-5.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:26ae0b68979204d360327f4c0725cfdc95cfc34ab73ab1a8f528e3bd2f6d023c", size = 567494, upload-time = "2026-04-10T12:20:40.373Z" }, + { url = "https://files.pythonhosted.org/packages/10/35/7249885dfed3602b3b48c1e67781197dcdc536c50f72caeabe3944348af8/cachebox-5.2.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:f3d628b816e28a6e7661d460e02dd5b421247cc2cd275814f80ea79621245fc4", size = 669968, upload-time = "2026-04-10T12:20:55.155Z" }, + { url = "https://files.pythonhosted.org/packages/2d/8a/e5b58f0bbd6fef74da5d8e5ab49e67898ce7e6df28c16280a0f2b78461f7/cachebox-5.2.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:64057caa6b741320655cd3c5997fe642dae5dbff571eb530e6f53e58272bb43b", size = 645547, upload-time = "2026-04-10T12:21:09.948Z" }, + { url = "https://files.pythonhosted.org/packages/d8/25/51783a4c6f25ca87ef1b4b762ff0364bd98053a02d597b30d26ff4cf13c5/cachebox-5.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa325306084aa2dc0b21e07723d7700f4d43dece3732c7fdaf7a269dc5e35aa7", size = 611844, upload-time = "2026-04-10T12:21:25.286Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c5/b26c4b046e296d0e249448fe297626b3caca2e851837712f03c358662cb7/cachebox-5.2.3-cp313-cp313-win32.whl", hash = "sha256:55003089d21c2f5515089c307be063b45558e884a4a1cc9593944374c89975c4", size = 279421, upload-time = "2026-04-10T12:21:54.921Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7f/a49420670393bfea618de7a893d45cae9294cf3293d7b158e7af20e8f39e/cachebox-5.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:dcc5edb6ecf2b516e90b773d232360c5e4ed8fdcda038b19441da2ed9cf208ab", size = 290702, upload-time = "2026-04-10T12:21:41.458Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0b/bf83bda13ef6fc490d208a1d4dd712034624526a88f61713cca0edc9884f/cachebox-5.2.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:a4b7559fa4994c4032dd07466c2041d57e055feb814762e1f73f4e8beef188d0", size = 371704, upload-time = "2026-04-10T12:20:27.253Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ea/aa5162273238e84f9e41b33600c69299572dc1c8f0f768d07660b71be07d/cachebox-5.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f57afada3d9327adf87f3b5cf0094348c6fd49354ab2e9bd20b044648eb094ae", size = 353385, upload-time = "2026-04-10T12:20:13.668Z" }, + { url = "https://files.pythonhosted.org/packages/47/96/3ca013e2e48df5c1d7855669b208f4bf8014ccb842ccf7a3a0eaac07bee0/cachebox-5.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8342ff350ce86f062492752d612e9f056ac5dc56375713d75c3bf6e83b4d18db", size = 392181, upload-time = "2026-04-10T12:18:56.385Z" }, + { url = "https://files.pythonhosted.org/packages/63/ca/1bacb4efa0b0ce8065d1fb7c8dc7c382ec4e1cc3f007eb08417732be2725/cachebox-5.2.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:405f9cc8492fc9d953b5a6b9e2b661e99583755c6639ab8d09a287fdf336503c", size = 349494, upload-time = "2026-04-10T12:19:09.505Z" }, + { url = "https://files.pythonhosted.org/packages/d7/2e/75db4bda3768658f5baa5a54f6a4f643bc2de1a16788e40581a080e803c7/cachebox-5.2.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94aae393ec1d9b26565d346445bb6afa3963d2a0d3eb5e4188d0e510fab871a0", size = 369216, upload-time = "2026-04-10T12:19:22.224Z" }, + { url = "https://files.pythonhosted.org/packages/f5/82/e1f833be0d57e29a8c5eb0a0275cd34b962f3c7f5b9e0517ec4bf75e7cc3/cachebox-5.2.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8b0b575066fc09f6fae0d4bd30d6ff56584a6870cbe7d202916c5e0d725cfd4", size = 385922, upload-time = "2026-04-10T12:19:34.198Z" }, + { url = "https://files.pythonhosted.org/packages/53/d6/615a3c16c1d63839f2c67644eb414c4dc9769ab2e169d935110fd8e268d5/cachebox-5.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41e99c1240106d39b63ce7868a6cd8c9da9243fef08848b85d428164e0769fd2", size = 393276, upload-time = "2026-04-10T12:20:00.925Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a6/7844c9c84b170dae1005b22da174639968e64c8055d66a209a1598663771/cachebox-5.2.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:432ca62b99f7eafc21af669d76c88c1b7377db179b89fb6fca3ea93b8f9fff19", size = 421355, upload-time = "2026-04-10T12:19:47.691Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0f/43f62355846cae3dc41cb4daccac0a4bb2b7b8b3c7d77d1b6a220bae6d54/cachebox-5.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e51d9c59006b53447f806145406eb37a7fc3c25553d4fd24c3887f3b268d214e", size = 561656, upload-time = "2026-04-10T12:20:42.161Z" }, + { url = "https://files.pythonhosted.org/packages/9b/fc/a453813c6d000d69a41a06c6a3143a6c4d0d0e41f23c155db2f82ea0edfa/cachebox-5.2.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:5e48a405f699fb001b8af120a6e0b4a981277f84eb5dd66a1faa21e4b6fe9485", size = 665791, upload-time = "2026-04-10T12:20:56.842Z" }, + { url = "https://files.pythonhosted.org/packages/aa/a3/f6a9e75f1e602b67b6d67088a9a766adfc4e0a740a9c4b68e4e6207c1006/cachebox-5.2.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8cbfc007ea78af61d75d7d26e5854df53dc5da6877d074afd4b4696c074f4ee7", size = 640975, upload-time = "2026-04-10T12:21:11.641Z" }, + { url = "https://files.pythonhosted.org/packages/a3/15/4ac98277f7fd9d855c8ed337e8e2a3386d17997cce2dd3eadb23dedc08e3/cachebox-5.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6a94d0da8133b3a0707ae11c9ea321f8fc37e3b5a14517019a05d632218b0f56", size = 607242, upload-time = "2026-04-10T12:21:27.27Z" }, + { url = "https://files.pythonhosted.org/packages/9c/0b/ce61907a803f75854e0cc91b84c16e14dce0e4e939efbda26293eb4c8784/cachebox-5.2.3-cp313-cp313t-win32.whl", hash = "sha256:5fee33549877c03c2494ec5359a57a7667f872fe8e296a7f39d3dfe08dd3914c", size = 271619, upload-time = "2026-04-10T12:21:56.768Z" }, + { url = "https://files.pythonhosted.org/packages/b0/06/fece190ad5173d06b2779494aaad5528907f2e55c809618e5b67c2e3dbb5/cachebox-5.2.3-cp313-cp313t-win_amd64.whl", hash = "sha256:67548a05cd41fcc4f7af80a2f97f742fef3d436537ac2e1a1dce0fcba5d41190", size = 283133, upload-time = "2026-04-10T12:21:43.037Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8b/72c0e80aad08e09867ce14a621bce689a733552f20cdf2ef96d4b052da10/cachebox-5.2.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:37fa0891f0defee053c09f5f43f802f731e36e6e6ca055d7d174af07f77232ca", size = 380523, upload-time = "2026-04-10T12:20:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fc/62/33aaade81b181d5191cc39c867c297aa7c65f3191aa9749bf99b77496b88/cachebox-5.2.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:dc6315902f2ef4afbf10bc8e08c54ff34de5ce124546b8e0016c9b0d327be21e", size = 362424, upload-time = "2026-04-10T12:20:15.215Z" }, + { url = "https://files.pythonhosted.org/packages/9e/0b/3eedaf9ea4b41c931f4340bfa42056efe2bb5fe3a79649d6c8a1dce585a5/cachebox-5.2.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7df1735ca778480d51b8232fed397ffe3935158f20d34fb1c5ed171b53d5a6e2", size = 399572, upload-time = "2026-04-10T12:18:58.331Z" }, + { url = "https://files.pythonhosted.org/packages/be/69/c79b8a6a5b889ac4a60800bacea3553cb3b86f6fd13b2262bade1cb962c6/cachebox-5.2.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e22451cde8f884051e941b21870e4fc91fcf58d0d8c285bb8964107e1f02445c", size = 353803, upload-time = "2026-04-10T12:19:11.21Z" }, + { url = "https://files.pythonhosted.org/packages/d4/c3/bc7838de51039f8c50506d8dc82f22ff9a652794339a223b12af595e1d2f/cachebox-5.2.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dcbccf3015d9a42bcf41260fa5cc048a5bdb75aa10997d514d6c976117f30ee2", size = 374474, upload-time = "2026-04-10T12:19:23.658Z" }, + { url = "https://files.pythonhosted.org/packages/65/61/e5231ad2ae952ca482f9b9df55df4b96add1a80de28de537c5f574605987/cachebox-5.2.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:311eae5079e256cbbfafdc3dcff1714b6598a767f9c1ef8c3709e74ea0cc12b0", size = 393045, upload-time = "2026-04-10T12:19:35.651Z" }, + { url = "https://files.pythonhosted.org/packages/78/c4/c9b3fa764ac5420a9e079ad53fa8840d4a26b74c4ccda56acbef49cf76ff/cachebox-5.2.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f4d2a80a5cd3380739c67f7d89e596634f5897b8d5a4a3dc1598312cb077535", size = 398700, upload-time = "2026-04-10T12:20:02.513Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3e/c4e3acd4cb04e01c5fb7cc7a4de16059b9594d90672fff85af8670275267/cachebox-5.2.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3977515b727a5203f494c44c4566fb936c4b940351c01d3d8e7b5d104dff4f53", size = 426725, upload-time = "2026-04-10T12:19:49.385Z" }, + { url = "https://files.pythonhosted.org/packages/25/5d/610b79479719951581109d985244d34c97f86a308c3d7c83443e2b1dac46/cachebox-5.2.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c5be17dd5c4fabcfecd5bcf6d54f9c6fb719daed3ef01ac1c03a14af0e2b26c1", size = 570042, upload-time = "2026-04-10T12:20:43.793Z" }, + { url = "https://files.pythonhosted.org/packages/8c/63/cad8a05db4d0c0f5ba6bccb32e57d15c472276de9476f56004445b40711f/cachebox-5.2.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:6d37334fc218fdaee31db8a4f938938716e7c3b1b4059e25de27c8447fc95fde", size = 670974, upload-time = "2026-04-10T12:20:58.528Z" }, + { url = "https://files.pythonhosted.org/packages/54/d1/9cff7c2b9048d1c38b7ad8199ce856596d09720b3bea74043f3bad71970b/cachebox-5.2.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:1e5f1b7e23411b748d919348c3b65db1f9f8927ab8f6f3acae19bd617543df2d", size = 646213, upload-time = "2026-04-10T12:21:13.619Z" }, + { url = "https://files.pythonhosted.org/packages/27/ae/2e1ad162ec13903e84469c8a753baf385f1bc324279d6c7cb6365e7099df/cachebox-5.2.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7b06a75a898b31fd73c4d8bf727a9b9f8b5b7738cccd0ab5e6fd2a9cf659d3c", size = 612787, upload-time = "2026-04-10T12:21:29.271Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8a/07b5ffd841e1ff534bb6e8721c39fdfe0d7cdaac1398e1783b2a0c37bd22/cachebox-5.2.3-cp314-cp314-win32.whl", hash = "sha256:3b798052719f09a2ce7bf9fa9452dc0a7d4dc53b50a2d3aba6ce6ebc12d39df7", size = 278559, upload-time = "2026-04-10T12:21:58.482Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f8/b88a82ce9ec7a2fa0f09ed1cdd031692c8664c41f9ab71831e177c7ce2df/cachebox-5.2.3-cp314-cp314-win_amd64.whl", hash = "sha256:4afc8b8575e3228a42ad8d819de5fbbecc6bd0b521295966b00244be37ae3b9b", size = 291928, upload-time = "2026-04-10T12:21:44.621Z" }, + { url = "https://files.pythonhosted.org/packages/4a/01/8c79c07c8c6517fb2fe7d479dd87044e38aac5b9af0245b33fcd695eae37/cachebox-5.2.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:0e8a34b82be30d3d9fb7dfaf9a86ec2b3ab9bc264715909ef27fc3d3587324d2", size = 374325, upload-time = "2026-04-10T12:20:30.923Z" }, + { url = "https://files.pythonhosted.org/packages/7f/51/0fc26b923e80ab857ac99d5f7f3784dc941e7b4de361c204835233176ddf/cachebox-5.2.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4d4e336aebf866463878ccd28a4d0ef4003ea216708cf4a02a7f198481b3af81", size = 355444, upload-time = "2026-04-10T12:20:16.879Z" }, + { url = "https://files.pythonhosted.org/packages/c1/6d/a6b399221f8dc4b3e01b37d3240ef5b8a7eb78cd9bfbb99b0e655dd01649/cachebox-5.2.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b102fcdd97b0602bf5d6ba1a571bba3e3d6fa912b89fd768b0da5427408eab8", size = 393978, upload-time = "2026-04-10T12:18:59.753Z" }, + { url = "https://files.pythonhosted.org/packages/bd/f1/4c8f998c117c1941a82bd824d6687280c50167f21fea6392e41531d641e2/cachebox-5.2.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:245a79fb2c5d3bff252f4263f76210ef3ad7c2ff9b0234859b26974830a80491", size = 349298, upload-time = "2026-04-10T12:19:12.843Z" }, + { url = "https://files.pythonhosted.org/packages/d1/dd/683bc5a32a0da660d02fa248b880b71a2b834e9b54b8d272b5801282f402/cachebox-5.2.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd0e8dbd8fd4cf664c645c08f9e10508e133353756705c4a738e90a5406224b5", size = 370619, upload-time = "2026-04-10T12:19:25.298Z" }, + { url = "https://files.pythonhosted.org/packages/81/49/d6c47c78a7769b355076c5b635c2b538c8b88e8ceeb408e104d0f269b515/cachebox-5.2.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdb74294bdc33e39e26606919a9b2229038d5fac0edb80c9056683c08584d4a9", size = 385988, upload-time = "2026-04-10T12:19:37.638Z" }, + { url = "https://files.pythonhosted.org/packages/70/e2/b669555ada7fa1392e4cdb8a19f3367db5c6abef0fde8ab034a9747760df/cachebox-5.2.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bba3e9a7f52fa196b434522f39675f3b32a076976ef2373ded6f1065e99f4d20", size = 394090, upload-time = "2026-04-10T12:20:03.978Z" }, + { url = "https://files.pythonhosted.org/packages/8f/01/42916249e53fe4fcbdf0419fb55dbc09b9f377475376e1d7f4ae9c9bd6cd/cachebox-5.2.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abb21f0f937fb66528f1b9f1a04874d6aa503e78bbb26f4cf33bf67faddbdd68", size = 421632, upload-time = "2026-04-10T12:19:51.048Z" }, + { url = "https://files.pythonhosted.org/packages/a1/54/34eebe18c6ed8ba27b1331b5e3d08bd8bb62f03ba81fbf47a2db0fa646f7/cachebox-5.2.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:dab6fd3189b0c746fb03e1915fd947aaca9112cedf26ef3a0c39383acf87d2e5", size = 563871, upload-time = "2026-04-10T12:20:45.417Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b2/f92da0d54e4f18609588709090de8c81dd7c8b20ed6ac30f9b91bedbedf5/cachebox-5.2.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b4e7d2935b9df11d3717f99c7237b6780f1f8c70e6a99b69b8430d89929ec825", size = 665677, upload-time = "2026-04-10T12:21:00.512Z" }, + { url = "https://files.pythonhosted.org/packages/43/9d/bf2d3dc949afe4d21fc7eb15b7524255e834b9252df6bba111e6686d1c6f/cachebox-5.2.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:611aa260fe1b2506330ff72f415e2cb4053c9c4e3776ac68fe2eedee0e1b91b1", size = 642067, upload-time = "2026-04-10T12:21:15.727Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4f/a789eda189550d239fbaf165b9810f148e733e97a2a4eda7c4192295c7f8/cachebox-5.2.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a424ffb8514a9cb49bacff7995b7c767625cb2239692bd6524245e8579e375cc", size = 608048, upload-time = "2026-04-10T12:21:31.156Z" }, + { url = "https://files.pythonhosted.org/packages/41/c3/590e161c04ffbd36e33933e6dcca5ffa40b5548e3121a21d77aad42af138/cachebox-5.2.3-cp314-cp314t-win32.whl", hash = "sha256:83988dd8e9075ee837e8407e26db49a9944ae74924d5db57b477444d7d98622c", size = 271694, upload-time = "2026-04-10T12:22:00.589Z" }, + { url = "https://files.pythonhosted.org/packages/66/f4/f60b8506df467261178afe918801df37c02c46ec2b8ce019760a14e2abe7/cachebox-5.2.3-cp314-cp314t-win_amd64.whl", hash = "sha256:dbda6390fa5070a19157ae35ab8066d3fe468634e0e9e21452c68ce7999c7d0c", size = 284212, upload-time = "2026-04-10T12:21:46.241Z" }, ] [[package]] name = "certifi" -version = "2026.1.4" +version = "2026.5.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d", size = 135422, upload-time = "2026-05-20T11:46:50.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", size = 134134, upload-time = "2026-05-20T11:46:48.578Z" }, ] [[package]] @@ -571,59 +325,75 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, - { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, - { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, - { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, - { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, - { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, - { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, - { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, - { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, - { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, - { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, - { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, - { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, - { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, - { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, - { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, - { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, - { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, - { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, - { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, - { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, - { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, - { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, - { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, - { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, - { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, - { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, - { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, - { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, - { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, - { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, - { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, - { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, - { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, - { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, - { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, - { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, - { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, - { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, - { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, - { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, - { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, ] [[package]] @@ -642,70 +412,16 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/be/05/f39fde9f31ef80b285ef5822fad4ddabf73fec62a1f02c5beb4b2f328972/check_wheel_contents-0.6.3-py3-none-any.whl", hash = "sha256:5ae39c8c434b972f0740d04610759168590713175aab584b012b1b84f6771874", size = 27541, upload-time = "2025-08-02T14:01:43.968Z" }, ] -[[package]] -name = "chex" -version = "0.1.91" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "absl-py" }, - { name = "jax" }, - { name = "jaxlib" }, - { name = "numpy" }, - { name = "toolz" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5b/7d/812f01e7b2ddf28a0caa8dde56bd951a2c8f691c9bbfce38d469458d1502/chex-0.1.91.tar.gz", hash = "sha256:65367a521415ada905b8c0222b0a41a68337fcadf79a1fb6fc992dbd95dd9f76", size = 90302, upload-time = "2025-09-01T21:49:32.834Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/0c/96102c01dd02ae740d4afc3644d5c7d7fc51d3feefd67300a2aa1ddbf7cb/chex-0.1.91-py3-none-any.whl", hash = "sha256:6fc4cbfc22301c08d4a7ef706045668410100962eba8ba6af03fa07f4e5dcf9b", size = 100965, upload-time = "2025-09-01T21:49:31.141Z" }, -] - [[package]] name = "click" -version = "8.3.1" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, -] - -[[package]] -name = "click-didyoumean" -version = "0.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/30/ce/217289b77c590ea1e7c24242d9ddd6e249e52c795ff10fac2c50062c48cb/click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", size = 3089, upload-time = "2024-03-24T08:22:07.499Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/5b/974430b5ffdb7a4f1941d13d83c64a0395114503cc357c6b9ae4ce5047ed/click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c", size = 3631, upload-time = "2024-03-24T08:22:06.356Z" }, -] - -[[package]] -name = "click-plugins" -version = "1.1.1.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c3/a4/34847b59150da33690a36da3681d6bbc2ec14ee9a846bc30a6746e5984e4/click_plugins-1.1.1.2.tar.gz", hash = "sha256:d7af3984a99d243c131aa1a828331e7630f4a88a9741fd05c927b204bcf92261", size = 8343, upload-time = "2025-06-25T00:47:37.555Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl", hash = "sha256:008d65743833ffc1f5417bf0e78e8d2c23aab04d9745ba817bd3e71b0feb6aa6", size = 11051, upload-time = "2025-06-25T00:47:36.731Z" }, -] - -[[package]] -name = "click-repl" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "prompt-toolkit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cb/a2/57f4ac79838cfae6912f997b4d1a64a858fb0c86d7fcaae6f7b58d267fca/click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812" }, + { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, ] [[package]] @@ -731,7 +447,7 @@ wheels = [ [[package]] name = "comet-ml" -version = "3.55.0" +version = "3.58.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "dulwich" }, @@ -750,9 +466,9 @@ dependencies = [ { name = "wrapt" }, { name = "wurlitzer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/b5/c89ac9f5e149dfb8fe8e3ba508825f47279877f55adabdacc50bd3d250d1/comet_ml-3.55.0.tar.gz", hash = "sha256:6cd7e1ead569b14d8bad22dc00acb99572e077895ba37ffa773ccc078f84874f", size = 580765, upload-time = "2025-12-09T14:01:13.466Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/95/13dce1808d6101b6d341e59209f7a913d255385fd4b591b91808326508b3/comet_ml-3.58.0.tar.gz", hash = "sha256:9a02fa0b768c321666d66b7e3038fecae4b2d76aaed70998ad46e3647cc56c1c", size = 588845, upload-time = "2026-05-22T17:03:11.321Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/7f/16c90c5c566f6df3c8451a89adfc9901912cef239e177b3718794d39cc3d/comet_ml-3.55.0-py3-none-any.whl", hash = "sha256:65fc65dcefad0a1fa7ea5f5ea5c7a53debd0768d33e406b039427292f1c25ba3", size = 780899, upload-time = "2025-12-09T14:01:11.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8a/2f4336a7519a479335cec06ab3bd4201aea24beeed6974b109c280fba4b3/comet_ml-3.58.0-py3-none-any.whl", hash = "sha256:f781959924e909bea736f091fffbabd91efd80962e8908a1cba2f0d9452185b7", size = 790550, upload-time = "2026-05-22T17:03:09.132Z" }, ] [[package]] @@ -841,179 +557,218 @@ wheels = [ [[package]] name = "coverage" -version = "7.13.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/f9/e92df5e07f3fc8d4c7f9a0f146ef75446bf870351cd37b788cf5897f8079/coverage-7.13.1.tar.gz", hash = "sha256:b7593fe7eb5feaa3fbb461ac79aac9f9fc0387a5ca8080b0c6fe2ca27b091afd", size = 825862, upload-time = "2025-12-28T15:42:56.969Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/8a/87af46cccdfa78f53db747b09f5f9a21d5fc38d796834adac09b30a8ce74/coverage-7.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6f34591000f06e62085b1865c9bc5f7858df748834662a51edadfd2c3bfe0dd3", size = 218927, upload-time = "2025-12-28T15:40:52.814Z" }, - { url = "https://files.pythonhosted.org/packages/82/a8/6e22fdc67242a4a5a153f9438d05944553121c8f4ba70cb072af4c41362e/coverage-7.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b67e47c5595b9224599016e333f5ec25392597a89d5744658f837d204e16c63e", size = 219288, upload-time = "2025-12-28T15:40:54.262Z" }, - { url = "https://files.pythonhosted.org/packages/d0/0a/853a76e03b0f7c4375e2ca025df45c918beb367f3e20a0a8e91967f6e96c/coverage-7.13.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3e7b8bd70c48ffb28461ebe092c2345536fb18bbbf19d287c8913699735f505c", size = 250786, upload-time = "2025-12-28T15:40:56.059Z" }, - { url = "https://files.pythonhosted.org/packages/ea/b4/694159c15c52b9f7ec7adf49d50e5f8ee71d3e9ef38adb4445d13dd56c20/coverage-7.13.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c223d078112e90dc0e5c4e35b98b9584164bea9fbbd221c0b21c5241f6d51b62", size = 253543, upload-time = "2025-12-28T15:40:57.585Z" }, - { url = "https://files.pythonhosted.org/packages/96/b2/7f1f0437a5c855f87e17cf5d0dc35920b6440ff2b58b1ba9788c059c26c8/coverage-7.13.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:794f7c05af0763b1bbd1b9e6eff0e52ad068be3b12cd96c87de037b01390c968", size = 254635, upload-time = "2025-12-28T15:40:59.443Z" }, - { url = "https://files.pythonhosted.org/packages/e9/d1/73c3fdb8d7d3bddd9473c9c6a2e0682f09fc3dfbcb9c3f36412a7368bcab/coverage-7.13.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0642eae483cc8c2902e4af7298bf886d605e80f26382124cddc3967c2a3df09e", size = 251202, upload-time = "2025-12-28T15:41:01.328Z" }, - { url = "https://files.pythonhosted.org/packages/66/3c/f0edf75dcc152f145d5598329e864bbbe04ab78660fe3e8e395f9fff010f/coverage-7.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f5e772ed5fef25b3de9f2008fe67b92d46831bd2bc5bdc5dd6bfd06b83b316f", size = 252566, upload-time = "2025-12-28T15:41:03.319Z" }, - { url = "https://files.pythonhosted.org/packages/17/b3/e64206d3c5f7dcbceafd14941345a754d3dbc78a823a6ed526e23b9cdaab/coverage-7.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:45980ea19277dc0a579e432aef6a504fe098ef3a9032ead15e446eb0f1191aee", size = 250711, upload-time = "2025-12-28T15:41:06.411Z" }, - { url = "https://files.pythonhosted.org/packages/dc/ad/28a3eb970a8ef5b479ee7f0c484a19c34e277479a5b70269dc652b730733/coverage-7.13.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e4f18eca6028ffa62adbd185a8f1e1dd242f2e68164dba5c2b74a5204850b4cf", size = 250278, upload-time = "2025-12-28T15:41:08.285Z" }, - { url = "https://files.pythonhosted.org/packages/54/e3/c8f0f1a93133e3e1291ca76cbb63565bd4b5c5df63b141f539d747fff348/coverage-7.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f8dca5590fec7a89ed6826fce625595279e586ead52e9e958d3237821fbc750c", size = 252154, upload-time = "2025-12-28T15:41:09.969Z" }, - { url = "https://files.pythonhosted.org/packages/d0/bf/9939c5d6859c380e405b19e736321f1c7d402728792f4c752ad1adcce005/coverage-7.13.1-cp312-cp312-win32.whl", hash = "sha256:ff86d4e85188bba72cfb876df3e11fa243439882c55957184af44a35bd5880b7", size = 221487, upload-time = "2025-12-28T15:41:11.468Z" }, - { url = "https://files.pythonhosted.org/packages/fa/dc/7282856a407c621c2aad74021680a01b23010bb8ebf427cf5eacda2e876f/coverage-7.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:16cc1da46c04fb0fb128b4dc430b78fa2aba8a6c0c9f8eb391fd5103409a6ac6", size = 222299, upload-time = "2025-12-28T15:41:13.386Z" }, - { url = "https://files.pythonhosted.org/packages/10/79/176a11203412c350b3e9578620013af35bcdb79b651eb976f4a4b32044fa/coverage-7.13.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d9bc218650022a768f3775dd7fdac1886437325d8d295d923ebcfef4892ad5c", size = 220941, upload-time = "2025-12-28T15:41:14.975Z" }, - { url = "https://files.pythonhosted.org/packages/a3/a4/e98e689347a1ff1a7f67932ab535cef82eb5e78f32a9e4132e114bbb3a0a/coverage-7.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cb237bfd0ef4d5eb6a19e29f9e528ac67ac3be932ea6b44fb6cc09b9f3ecff78", size = 218951, upload-time = "2025-12-28T15:41:16.653Z" }, - { url = "https://files.pythonhosted.org/packages/32/33/7cbfe2bdc6e2f03d6b240d23dc45fdaf3fd270aaf2d640be77b7f16989ab/coverage-7.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1dcb645d7e34dcbcc96cd7c132b1fc55c39263ca62eb961c064eb3928997363b", size = 219325, upload-time = "2025-12-28T15:41:18.609Z" }, - { url = "https://files.pythonhosted.org/packages/59/f6/efdabdb4929487baeb7cb2a9f7dac457d9356f6ad1b255be283d58b16316/coverage-7.13.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3d42df8201e00384736f0df9be2ced39324c3907607d17d50d50116c989d84cd", size = 250309, upload-time = "2025-12-28T15:41:20.629Z" }, - { url = "https://files.pythonhosted.org/packages/12/da/91a52516e9d5aea87d32d1523f9cdcf7a35a3b298e6be05d6509ba3cfab2/coverage-7.13.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa3edde1aa8807de1d05934982416cb3ec46d1d4d91e280bcce7cca01c507992", size = 252907, upload-time = "2025-12-28T15:41:22.257Z" }, - { url = "https://files.pythonhosted.org/packages/75/38/f1ea837e3dc1231e086db1638947e00d264e7e8c41aa8ecacf6e1e0c05f4/coverage-7.13.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9edd0e01a343766add6817bc448408858ba6b489039eaaa2018474e4001651a4", size = 254148, upload-time = "2025-12-28T15:41:23.87Z" }, - { url = "https://files.pythonhosted.org/packages/7f/43/f4f16b881aaa34954ba446318dea6b9ed5405dd725dd8daac2358eda869a/coverage-7.13.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:985b7836931d033570b94c94713c6dba5f9d3ff26045f72c3e5dbc5fe3361e5a", size = 250515, upload-time = "2025-12-28T15:41:25.437Z" }, - { url = "https://files.pythonhosted.org/packages/84/34/8cba7f00078bd468ea914134e0144263194ce849ec3baad187ffb6203d1c/coverage-7.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ffed1e4980889765c84a5d1a566159e363b71d6b6fbaf0bebc9d3c30bc016766", size = 252292, upload-time = "2025-12-28T15:41:28.459Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a4/cffac66c7652d84ee4ac52d3ccb94c015687d3b513f9db04bfcac2ac800d/coverage-7.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8842af7f175078456b8b17f1b73a0d16a65dcbdc653ecefeb00a56b3c8c298c4", size = 250242, upload-time = "2025-12-28T15:41:30.02Z" }, - { url = "https://files.pythonhosted.org/packages/f4/78/9a64d462263dde416f3c0067efade7b52b52796f489b1037a95b0dc389c9/coverage-7.13.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:ccd7a6fca48ca9c131d9b0a2972a581e28b13416fc313fb98b6d24a03ce9a398", size = 250068, upload-time = "2025-12-28T15:41:32.007Z" }, - { url = "https://files.pythonhosted.org/packages/69/c8/a8994f5fece06db7c4a97c8fc1973684e178599b42e66280dded0524ef00/coverage-7.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0403f647055de2609be776965108447deb8e384fe4a553c119e3ff6bfbab4784", size = 251846, upload-time = "2025-12-28T15:41:33.946Z" }, - { url = "https://files.pythonhosted.org/packages/cc/f7/91fa73c4b80305c86598a2d4e54ba22df6bf7d0d97500944af7ef155d9f7/coverage-7.13.1-cp313-cp313-win32.whl", hash = "sha256:549d195116a1ba1e1ae2f5ca143f9777800f6636eab917d4f02b5310d6d73461", size = 221512, upload-time = "2025-12-28T15:41:35.519Z" }, - { url = "https://files.pythonhosted.org/packages/45/0b/0768b4231d5a044da8f75e097a8714ae1041246bb765d6b5563bab456735/coverage-7.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:5899d28b5276f536fcf840b18b61a9fce23cc3aec1d114c44c07fe94ebeaa500", size = 222321, upload-time = "2025-12-28T15:41:37.371Z" }, - { url = "https://files.pythonhosted.org/packages/9b/b8/bdcb7253b7e85157282450262008f1366aa04663f3e3e4c30436f596c3e2/coverage-7.13.1-cp313-cp313-win_arm64.whl", hash = "sha256:868a2fae76dfb06e87291bcbd4dcbcc778a8500510b618d50496e520bd94d9b9", size = 220949, upload-time = "2025-12-28T15:41:39.553Z" }, - { url = "https://files.pythonhosted.org/packages/70/52/f2be52cc445ff75ea8397948c96c1b4ee14f7f9086ea62fc929c5ae7b717/coverage-7.13.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:67170979de0dacac3f3097d02b0ad188d8edcea44ccc44aaa0550af49150c7dc", size = 219643, upload-time = "2025-12-28T15:41:41.567Z" }, - { url = "https://files.pythonhosted.org/packages/47/79/c85e378eaa239e2edec0c5523f71542c7793fe3340954eafb0bc3904d32d/coverage-7.13.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f80e2bb21bfab56ed7405c2d79d34b5dc0bc96c2c1d2a067b643a09fb756c43a", size = 219997, upload-time = "2025-12-28T15:41:43.418Z" }, - { url = "https://files.pythonhosted.org/packages/fe/9b/b1ade8bfb653c0bbce2d6d6e90cc6c254cbb99b7248531cc76253cb4da6d/coverage-7.13.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f83351e0f7dcdb14d7326c3d8d8c4e915fa685cbfdc6281f9470d97a04e9dfe4", size = 261296, upload-time = "2025-12-28T15:41:45.207Z" }, - { url = "https://files.pythonhosted.org/packages/1f/af/ebf91e3e1a2473d523e87e87fd8581e0aa08741b96265730e2d79ce78d8d/coverage-7.13.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb3f6562e89bad0110afbe64e485aac2462efdce6232cdec7862a095dc3412f6", size = 263363, upload-time = "2025-12-28T15:41:47.163Z" }, - { url = "https://files.pythonhosted.org/packages/c4/8b/fb2423526d446596624ac7fde12ea4262e66f86f5120114c3cfd0bb2befa/coverage-7.13.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77545b5dcda13b70f872c3b5974ac64c21d05e65b1590b441c8560115dc3a0d1", size = 265783, upload-time = "2025-12-28T15:41:49.03Z" }, - { url = "https://files.pythonhosted.org/packages/9b/26/ef2adb1e22674913b89f0fe7490ecadcef4a71fa96f5ced90c60ec358789/coverage-7.13.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a4d240d260a1aed814790bbe1f10a5ff31ce6c21bc78f0da4a1e8268d6c80dbd", size = 260508, upload-time = "2025-12-28T15:41:51.035Z" }, - { url = "https://files.pythonhosted.org/packages/ce/7d/f0f59b3404caf662e7b5346247883887687c074ce67ba453ea08c612b1d5/coverage-7.13.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d2287ac9360dec3837bfdad969963a5d073a09a85d898bd86bea82aa8876ef3c", size = 263357, upload-time = "2025-12-28T15:41:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/1a/b1/29896492b0b1a047604d35d6fa804f12818fa30cdad660763a5f3159e158/coverage-7.13.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:0d2c11f3ea4db66b5cbded23b20185c35066892c67d80ec4be4bab257b9ad1e0", size = 260978, upload-time = "2025-12-28T15:41:54.589Z" }, - { url = "https://files.pythonhosted.org/packages/48/f2/971de1238a62e6f0a4128d37adadc8bb882ee96afbe03ff1570291754629/coverage-7.13.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:3fc6a169517ca0d7ca6846c3c5392ef2b9e38896f61d615cb75b9e7134d4ee1e", size = 259877, upload-time = "2025-12-28T15:41:56.263Z" }, - { url = "https://files.pythonhosted.org/packages/6a/fc/0474efcbb590ff8628830e9aaec5f1831594874360e3251f1fdec31d07a3/coverage-7.13.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d10a2ed46386e850bb3de503a54f9fe8192e5917fcbb143bfef653a9355e9a53", size = 262069, upload-time = "2025-12-28T15:41:58.093Z" }, - { url = "https://files.pythonhosted.org/packages/88/4f/3c159b7953db37a7b44c0eab8a95c37d1aa4257c47b4602c04022d5cb975/coverage-7.13.1-cp313-cp313t-win32.whl", hash = "sha256:75a6f4aa904301dab8022397a22c0039edc1f51e90b83dbd4464b8a38dc87842", size = 222184, upload-time = "2025-12-28T15:41:59.763Z" }, - { url = "https://files.pythonhosted.org/packages/58/a5/6b57d28f81417f9335774f20679d9d13b9a8fb90cd6160957aa3b54a2379/coverage-7.13.1-cp313-cp313t-win_amd64.whl", hash = "sha256:309ef5706e95e62578cda256b97f5e097916a2c26247c287bbe74794e7150df2", size = 223250, upload-time = "2025-12-28T15:42:01.52Z" }, - { url = "https://files.pythonhosted.org/packages/81/7c/160796f3b035acfbb58be80e02e484548595aa67e16a6345e7910ace0a38/coverage-7.13.1-cp313-cp313t-win_arm64.whl", hash = "sha256:92f980729e79b5d16d221038dbf2e8f9a9136afa072f9d5d6ed4cb984b126a09", size = 221521, upload-time = "2025-12-28T15:42:03.275Z" }, - { url = "https://files.pythonhosted.org/packages/aa/8e/ba0e597560c6563fc0adb902fda6526df5d4aa73bb10adf0574d03bd2206/coverage-7.13.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:97ab3647280d458a1f9adb85244e81587505a43c0c7cff851f5116cd2814b894", size = 218996, upload-time = "2025-12-28T15:42:04.978Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8e/764c6e116f4221dc7aa26c4061181ff92edb9c799adae6433d18eeba7a14/coverage-7.13.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8f572d989142e0908e6acf57ad1b9b86989ff057c006d13b76c146ec6a20216a", size = 219326, upload-time = "2025-12-28T15:42:06.691Z" }, - { url = "https://files.pythonhosted.org/packages/4f/a6/6130dc6d8da28cdcbb0f2bf8865aeca9b157622f7c0031e48c6cf9a0e591/coverage-7.13.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d72140ccf8a147e94274024ff6fd8fb7811354cf7ef88b1f0a988ebaa5bc774f", size = 250374, upload-time = "2025-12-28T15:42:08.786Z" }, - { url = "https://files.pythonhosted.org/packages/82/2b/783ded568f7cd6b677762f780ad338bf4b4750205860c17c25f7c708995e/coverage-7.13.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d3c9f051b028810f5a87c88e5d6e9af3c0ff32ef62763bf15d29f740453ca909", size = 252882, upload-time = "2025-12-28T15:42:10.515Z" }, - { url = "https://files.pythonhosted.org/packages/cd/b2/9808766d082e6a4d59eb0cc881a57fc1600eb2c5882813eefff8254f71b5/coverage-7.13.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f398ba4df52d30b1763f62eed9de5620dcde96e6f491f4c62686736b155aa6e4", size = 254218, upload-time = "2025-12-28T15:42:12.208Z" }, - { url = "https://files.pythonhosted.org/packages/44/ea/52a985bb447c871cb4d2e376e401116520991b597c85afdde1ea9ef54f2c/coverage-7.13.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:132718176cc723026d201e347f800cd1a9e4b62ccd3f82476950834dad501c75", size = 250391, upload-time = "2025-12-28T15:42:14.21Z" }, - { url = "https://files.pythonhosted.org/packages/7f/1d/125b36cc12310718873cfc8209ecfbc1008f14f4f5fa0662aa608e579353/coverage-7.13.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9e549d642426e3579b3f4b92d0431543b012dcb6e825c91619d4e93b7363c3f9", size = 252239, upload-time = "2025-12-28T15:42:16.292Z" }, - { url = "https://files.pythonhosted.org/packages/6a/16/10c1c164950cade470107f9f14bbac8485f8fb8515f515fca53d337e4a7f/coverage-7.13.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:90480b2134999301eea795b3a9dbf606c6fbab1b489150c501da84a959442465", size = 250196, upload-time = "2025-12-28T15:42:18.54Z" }, - { url = "https://files.pythonhosted.org/packages/2a/c6/cd860fac08780c6fd659732f6ced1b40b79c35977c1356344e44d72ba6c4/coverage-7.13.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e825dbb7f84dfa24663dd75835e7257f8882629fc11f03ecf77d84a75134b864", size = 250008, upload-time = "2025-12-28T15:42:20.365Z" }, - { url = "https://files.pythonhosted.org/packages/f0/3a/a8c58d3d38f82a5711e1e0a67268362af48e1a03df27c03072ac30feefcf/coverage-7.13.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:623dcc6d7a7ba450bbdbeedbaa0c42b329bdae16491af2282f12a7e809be7eb9", size = 251671, upload-time = "2025-12-28T15:42:22.114Z" }, - { url = "https://files.pythonhosted.org/packages/f0/bc/fd4c1da651d037a1e3d53e8cb3f8182f4b53271ffa9a95a2e211bacc0349/coverage-7.13.1-cp314-cp314-win32.whl", hash = "sha256:6e73ebb44dca5f708dc871fe0b90cf4cff1a13f9956f747cc87b535a840386f5", size = 221777, upload-time = "2025-12-28T15:42:23.919Z" }, - { url = "https://files.pythonhosted.org/packages/4b/50/71acabdc8948464c17e90b5ffd92358579bd0910732c2a1c9537d7536aa6/coverage-7.13.1-cp314-cp314-win_amd64.whl", hash = "sha256:be753b225d159feb397bd0bf91ae86f689bad0da09d3b301478cd39b878ab31a", size = 222592, upload-time = "2025-12-28T15:42:25.619Z" }, - { url = "https://files.pythonhosted.org/packages/f7/c8/a6fb943081bb0cc926499c7907731a6dc9efc2cbdc76d738c0ab752f1a32/coverage-7.13.1-cp314-cp314-win_arm64.whl", hash = "sha256:228b90f613b25ba0019361e4ab81520b343b622fc657daf7e501c4ed6a2366c0", size = 221169, upload-time = "2025-12-28T15:42:27.629Z" }, - { url = "https://files.pythonhosted.org/packages/16/61/d5b7a0a0e0e40d62e59bc8c7aa1afbd86280d82728ba97f0673b746b78e2/coverage-7.13.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:60cfb538fe9ef86e5b2ab0ca8fc8d62524777f6c611dcaf76dc16fbe9b8e698a", size = 219730, upload-time = "2025-12-28T15:42:29.306Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2c/8881326445fd071bb49514d1ce97d18a46a980712b51fee84f9ab42845b4/coverage-7.13.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:57dfc8048c72ba48a8c45e188d811e5efd7e49b387effc8fb17e97936dde5bf6", size = 220001, upload-time = "2025-12-28T15:42:31.319Z" }, - { url = "https://files.pythonhosted.org/packages/b5/d7/50de63af51dfa3a7f91cc37ad8fcc1e244b734232fbc8b9ab0f3c834a5cd/coverage-7.13.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3f2f725aa3e909b3c5fdb8192490bdd8e1495e85906af74fe6e34a2a77ba0673", size = 261370, upload-time = "2025-12-28T15:42:32.992Z" }, - { url = "https://files.pythonhosted.org/packages/e1/2c/d31722f0ec918fd7453b2758312729f645978d212b410cd0f7c2aed88a94/coverage-7.13.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9ee68b21909686eeb21dfcba2c3b81fee70dcf38b140dcd5aa70680995fa3aa5", size = 263485, upload-time = "2025-12-28T15:42:34.759Z" }, - { url = "https://files.pythonhosted.org/packages/fa/7a/2c114fa5c5fc08ba0777e4aec4c97e0b4a1afcb69c75f1f54cff78b073ab/coverage-7.13.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:724b1b270cb13ea2e6503476e34541a0b1f62280bc997eab443f87790202033d", size = 265890, upload-time = "2025-12-28T15:42:36.517Z" }, - { url = "https://files.pythonhosted.org/packages/65/d9/f0794aa1c74ceabc780fe17f6c338456bbc4e96bd950f2e969f48ac6fb20/coverage-7.13.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:916abf1ac5cf7eb16bc540a5bf75c71c43a676f5c52fcb9fe75a2bd75fb944e8", size = 260445, upload-time = "2025-12-28T15:42:38.646Z" }, - { url = "https://files.pythonhosted.org/packages/49/23/184b22a00d9bb97488863ced9454068c79e413cb23f472da6cbddc6cfc52/coverage-7.13.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:776483fd35b58d8afe3acbd9988d5de592ab6da2d2a865edfdbc9fdb43e7c486", size = 263357, upload-time = "2025-12-28T15:42:40.788Z" }, - { url = "https://files.pythonhosted.org/packages/7d/bd/58af54c0c9199ea4190284f389005779d7daf7bf3ce40dcd2d2b2f96da69/coverage-7.13.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b6f3b96617e9852703f5b633ea01315ca45c77e879584f283c44127f0f1ec564", size = 260959, upload-time = "2025-12-28T15:42:42.808Z" }, - { url = "https://files.pythonhosted.org/packages/4b/2a/6839294e8f78a4891bf1df79d69c536880ba2f970d0ff09e7513d6e352e9/coverage-7.13.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:bd63e7b74661fed317212fab774e2a648bc4bb09b35f25474f8e3325d2945cd7", size = 259792, upload-time = "2025-12-28T15:42:44.818Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c3/528674d4623283310ad676c5af7414b9850ab6d55c2300e8aa4b945ec554/coverage-7.13.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:933082f161bbb3e9f90d00990dc956120f608cdbcaeea15c4d897f56ef4fe416", size = 262123, upload-time = "2025-12-28T15:42:47.108Z" }, - { url = "https://files.pythonhosted.org/packages/06/c5/8c0515692fb4c73ac379d8dc09b18eaf0214ecb76ea6e62467ba7a1556ff/coverage-7.13.1-cp314-cp314t-win32.whl", hash = "sha256:18be793c4c87de2965e1c0f060f03d9e5aff66cfeae8e1dbe6e5b88056ec153f", size = 222562, upload-time = "2025-12-28T15:42:49.144Z" }, - { url = "https://files.pythonhosted.org/packages/05/0e/c0a0c4678cb30dac735811db529b321d7e1c9120b79bd728d4f4d6b010e9/coverage-7.13.1-cp314-cp314t-win_amd64.whl", hash = "sha256:0e42e0ec0cd3e0d851cb3c91f770c9301f48647cb2877cb78f74bdaa07639a79", size = 223670, upload-time = "2025-12-28T15:42:51.218Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5f/b177aa0011f354abf03a8f30a85032686d290fdeed4222b27d36b4372a50/coverage-7.13.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eaecf47ef10c72ece9a2a92118257da87e460e113b83cc0d2905cbbe931792b4", size = 221707, upload-time = "2025-12-28T15:42:53.034Z" }, - { url = "https://files.pythonhosted.org/packages/cc/48/d9f421cb8da5afaa1a64570d9989e00fb7955e6acddc5a12979f7666ef60/coverage-7.13.1-py3-none-any.whl", hash = "sha256:2016745cb3ba554469d02819d78958b571792bb68e31302610e898f80dd3a573", size = 210722, upload-time = "2025-12-28T15:42:54.901Z" }, +version = "7.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/7f/d0720730a397a999ffc0fd3f5bebef347338e3a47b727da66fbb228e2ff2/coverage-7.14.0.tar.gz", hash = "sha256:057a6af2f160a85384cde4ab36f0d2777bae1057bae255f95413cdd382aa5c74", size = 919489, upload-time = "2026-05-10T18:02:31.397Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/1e/2f996b2c8415cbb6f54b0f5ec1ee850c96d7911961afb4fc05f4a89d8c58/coverage-7.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7ffd19fc8aed057fd686a17a4935eef5f9859d69208f96310e893e64b9b6ccf5", size = 219967, upload-time = "2026-05-10T18:00:13.756Z" }, + { url = "https://files.pythonhosted.org/packages/34/23/35c7aea1274aef7525bdd2dc92f710bdde6d11652239d71d1ec450067939/coverage-7.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:829994cfe1aeb773ca27bf246d4badc1e764893e3bfb98fff820fcecd1ca4662", size = 220329, upload-time = "2026-05-10T18:00:15.264Z" }, + { url = "https://files.pythonhosted.org/packages/75/cf/a8f4b43a16e194b0261257ad28ded5853ec052570afef4a84e1d81189f3b/coverage-7.14.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b4f07cf7edcb7ec39431a5074d7ea83b29a9f71fcfc494f0f40af4e65180420f", size = 251839, upload-time = "2026-05-10T18:00:17.16Z" }, + { url = "https://files.pythonhosted.org/packages/69/ff/6699e7b71e60d3049eb2bdcbc95ee3f35707b2b0e48f32e9e63d3ce30c08/coverage-7.14.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ca3d9cf2c32b521bd9518385608787fa86f38daf993695307531822c3430ed67", size = 254576, upload-time = "2026-05-10T18:00:18.829Z" }, + { url = "https://files.pythonhosted.org/packages/22/ec/c936d495fcd67f48f03a9c4ad3297ff80d1f222a5df3980f15b34c186c21/coverage-7.14.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92af52828e7f29d827346b0294e5a0853fa206db77db0395b282918d41e28db9", size = 255690, upload-time = "2026-05-10T18:00:20.648Z" }, + { url = "https://files.pythonhosted.org/packages/5c/42/5af63f636cc62a4a2b1b3ba9146f6ee6f53a35a50d5cefc54d5670f60999/coverage-7.14.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7b2bb6c9d7e769360d0f20a0f219603fd64f0c8f97de17ab25853261602be0fb", size = 257949, upload-time = "2026-05-10T18:00:22.28Z" }, + { url = "https://files.pythonhosted.org/packages/26/d3/a225317bd2012132a27e1176d51660b826f99bb975876463c44ea0d7ee5a/coverage-7.14.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1c9ed6ef99f88fb8c14aa8e2bf8eb0fe55fa2edfea68f8675d78741df1a5ac0e", size = 252242, upload-time = "2026-05-10T18:00:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7f/9e65495298c3ea414742998539c37d048b5e81cc818fb1828cc6b51d10bf/coverage-7.14.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8231ade007f37959fbf58acc677f26b922c02eda6f0428ea307da0fd39681bf3", size = 253608, upload-time = "2026-05-10T18:00:25.588Z" }, + { url = "https://files.pythonhosted.org/packages/94/46/1522b524a35bdad22b2b8c4f9d32d0a104b524726ec380b2db68db1746f5/coverage-7.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d8b013632cc1ce1d09dbe4f32667b4d320ec2f54fc326ebeffcd0b0bcc2bb6c4", size = 251753, upload-time = "2026-05-10T18:00:27.104Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e9/cdf00d38817742c541ade405e115a3f7bf36e6f2a8b99d4f209861b85a2d/coverage-7.14.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1733198802d71ec4c524f322e2867ee05c62e9e75df86bdca545407a221827d1", size = 255823, upload-time = "2026-05-10T18:00:29.038Z" }, + { url = "https://files.pythonhosted.org/packages/38/fc/5e7877cf5f902d08a17ff1c532511476d87e1bea355bd5028cb97f902e79/coverage-7.14.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:72a305291fa8ee01332f1aaf38b348ca34097f6aa0b0ef627eef2837e57bbba5", size = 251323, upload-time = "2026-05-10T18:00:30.647Z" }, + { url = "https://files.pythonhosted.org/packages/18/9d/50f05a72dff8487464fdd4178dda5daed642a060e60afb644e3d45123559/coverage-7.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fcaba850dd317c65423a9d63d88f9573c53b00354d6dd95724576cc98a131595", size = 253197, upload-time = "2026-05-10T18:00:32.211Z" }, + { url = "https://files.pythonhosted.org/packages/00/3f/6f61ffe6439df266c3cf60f5c99cfaa21103d0210d706a42fc6c30683ff8/coverage-7.14.0-cp312-cp312-win32.whl", hash = "sha256:5ac83957a80d0701310e96d8bec68cdcf4f90a7674b7d13f15a344315b41ab27", size = 222515, upload-time = "2026-05-10T18:00:33.717Z" }, + { url = "https://files.pythonhosted.org/packages/85/19/93853133df2cb371083285ef6a93982a0173e7a233b0f61373ba9fd30eb2/coverage-7.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:70390b0da32cb90b501953716302906e8bcce087cb283e70d8c97729f22e92b2", size = 223324, upload-time = "2026-05-10T18:00:35.172Z" }, + { url = "https://files.pythonhosted.org/packages/74/18/9f7fe62f659f24b7a82a0be56bf94c1bd0a89e0ae7ab4c668f6e82404294/coverage-7.14.0-cp312-cp312-win_arm64.whl", hash = "sha256:91b993743d959b8be85b4abf9d5478216a69329c321efe5be0433c1a841d691d", size = 221944, upload-time = "2026-05-10T18:00:37.014Z" }, + { url = "https://files.pythonhosted.org/packages/6b/76/b7c66ee3c66e1b0f9d894c8125983aa0c03fb2336f2fd16559f9c966157f/coverage-7.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f2bbb8254370eb4c628ff3d6fa8a7f74ddc40565394d4f7ab791d1fe568e37ef", size = 219990, upload-time = "2026-05-10T18:00:38.887Z" }, + { url = "https://files.pythonhosted.org/packages/b3/af/e567cbad5ba69c013a50146dfa886dc7193361fda77521f51274ff620e1b/coverage-7.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23b81107f46d3f21d0cbce30664fcec0f5d9f585638a67081750f99738f6bf66", size = 220365, upload-time = "2026-05-10T18:00:40.864Z" }, + { url = "https://files.pythonhosted.org/packages/44/6f/9ad575d505b4d805b254febc8a5b338a2efe278f8786e56ff1cb8413f9c3/coverage-7.14.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:22a7e06a5f11a757cdfe79018e9095f9f69ae283c5cd8123774c788deec8717b", size = 251363, upload-time = "2026-05-10T18:00:42.489Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5f/b5370068b2f57787454592ed7dcd1002f0f1703b7db1fa30f6a325a4ca6e/coverage-7.14.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9d1aa57a1dc8e05bdc42e81c5d671d849577aeedf279f4c449d6d286f9ed88ca", size = 253961, upload-time = "2026-05-10T18:00:44.079Z" }, + { url = "https://files.pythonhosted.org/packages/29/1e/51adf17738976e8f2b85ddef7b7aa12a0838b056c92f175941d8862767c1/coverage-7.14.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90c1a51bcfddf645b3bb7ec333d9e94393a8e94f55642380fa8a9a5a9e636cb7", size = 255193, upload-time = "2026-05-10T18:00:45.623Z" }, + { url = "https://files.pythonhosted.org/packages/9e/7b/5bfd7ac1df3b881c2ac7a5cbc99c7609e6296c402f5ef587cd81c6f355b3/coverage-7.14.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a841fae2fadcae4f438d43b6ccc4aac2ad609f47cdb6cfdce60cbb3fe5ca7bc2", size = 257326, upload-time = "2026-05-10T18:00:47.173Z" }, + { url = "https://files.pythonhosted.org/packages/7d/38/1d37d316b174fad3843a1d76dbdfe4398771c9ecd0515935dd9ece9cd627/coverage-7.14.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c79d2319cabef1fe8e86df73371126931550804738f78ad7d31e3aad85a67367", size = 251582, upload-time = "2026-05-10T18:00:49.152Z" }, + { url = "https://files.pythonhosted.org/packages/34/46/746704f95980ba220214e1a41e18cec5aea80a898eaa53c51bf2d645ff36/coverage-7.14.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b23b0c6f0b1db6ad769b7050c8b641c0bf215ded26c1816955b17b7f26edfa9", size = 253325, upload-time = "2026-05-10T18:00:51.252Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b9/bbe87206d9687b192352f893797825b5f5b15ecd3aa9c68fbff0c074d77b/coverage-7.14.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:55d3089079ce181a4566b1065ab28d2575eb76d8ac8f81f4fcda2bf037fee087", size = 251291, upload-time = "2026-05-10T18:00:52.816Z" }, + { url = "https://files.pythonhosted.org/packages/46/57/b8cdb12ac0d73ef0243218bd5e22c9df8f92edab8018213a86aec67c5324/coverage-7.14.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:49c005cba1e2f9677fb2845dcdf9a2e72a52a17d63e8231aaaae35d9f50215ef", size = 255448, upload-time = "2026-05-10T18:00:54.548Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d4/5002019538b2036ce3c84340f54d2fd5100d55b0a6b0894eee56128d03c7/coverage-7.14.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:9117377b823daa28aa8635fbb08cda1cd6be3d7143257345459559aeef852d52", size = 251110, upload-time = "2026-05-10T18:00:56.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/53/20c5009477660f084e6ed60bc02a91894b8e234e617e86ecfd9aaf78e27b/coverage-7.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7b79d646cf46d5cf9a9f40281d4441df5849e445726e369006d2b117710b33fe", size = 252885, upload-time = "2026-05-10T18:00:57.967Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ab/3cf6427ac9c1f1db747dbb1ce71dde47984876d4c2cfd018a3fef0a78d4d/coverage-7.14.0-cp313-cp313-win32.whl", hash = "sha256:fb609b3658479e33f9516d46f1a89dbb9b6c261366e3a11844a96ec487533dae", size = 222539, upload-time = "2026-05-10T18:00:59.581Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b8/9228523e80321c2cb4880d1f589bc0171f2f71432c35118ad04dc01decce/coverage-7.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:0773d8329cf32b6fd222e4b52622c61fe8d503eb966cfc8d3c3c10c96266d50e", size = 223344, upload-time = "2026-05-10T18:01:01.531Z" }, + { url = "https://files.pythonhosted.org/packages/a3/99/118daa192f95e3a6cb2740100fbf8797cda1734b4134ef0b5d501a7fa8f3/coverage-7.14.0-cp313-cp313-win_arm64.whl", hash = "sha256:b4e26a0f1b696faf283bffe5b8569e44e336c582439df5d53281ab89ee0cba96", size = 221966, upload-time = "2026-05-10T18:01:03.16Z" }, + { url = "https://files.pythonhosted.org/packages/e6/f1/a46cc0c013be170216253184a32366d7cbdb9252feaec866b05c2d12a894/coverage-7.14.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:953f521ca9445300397e65fda3dca58b2dbd68fee983777420b57ac3c77e9f90", size = 220679, upload-time = "2026-05-10T18:01:05.058Z" }, + { url = "https://files.pythonhosted.org/packages/64/8c/9c30a3d311a34177fa432995be7fbfc64477d8bac5630bd38055b1c9b424/coverage-7.14.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:98af83fd65ae24b1fdd03aaead967a9f523bcd2f1aab2d4f3ffda65bb568a6f1", size = 221033, upload-time = "2026-05-10T18:01:07.002Z" }, + { url = "https://files.pythonhosted.org/packages/9a/cd/3fb5e06c3badefd0c1b47e2044fdca67f8220a4ec2e7fcfb476aa0a67c6c/coverage-7.14.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:668b92e6958c4db7cf92e81caac328dfbbdbb215db2850ad28f0cbe1eea0bfbd", size = 262333, upload-time = "2026-05-10T18:01:08.903Z" }, + { url = "https://files.pythonhosted.org/packages/a8/e6/fbc322325c7294d3e22c1ad6b79e45d0806b25228c8e5842aed6d8169aa7/coverage-7.14.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9fbd898551762dea00d3fef2b1c4f99afd2c6a3ff952ea07d60a9bd5ed4f34bc", size = 264410, upload-time = "2026-05-10T18:01:10.531Z" }, + { url = "https://files.pythonhosted.org/packages/08/92/c497b264bec1673c47cc77e26f760fcda4654cabf1f39546d1a23a3b8c35/coverage-7.14.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:68af363c07ecd8d4b7d4043d85cb376d7d227eceb54e5323ee45da73dbd3e426", size = 266836, upload-time = "2026-05-10T18:01:12.19Z" }, + { url = "https://files.pythonhosted.org/packages/78/fc/045da320987f401af5d2815d351e8aa799aec859f60e29f445e3089eeedb/coverage-7.14.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6e57054a583da8ac55edf24117ea4c9133032cfc4cf72aa2d48c1e5d4b52f899", size = 267974, upload-time = "2026-05-10T18:01:13.926Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ae/227b1e379497fb7a4fc3286e620f80c8a1e7cec66d45695a01639eb1af65/coverage-7.14.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cc3499459bbcdd51a65b64c35ab7ed2764eaf3cba826e0df3f1d7fe2e102b70b", size = 261578, upload-time = "2026-05-10T18:01:15.564Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f5/3570342900f2acea31d33ff1590c5d8bac1a8e1a2e1c6d34a5d5e61de681/coverage-7.14.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:45899ec2138a4346ed34d601dedf5076fb74edf2d1dd9dc76a78e82397edee90", size = 264394, upload-time = "2026-05-10T18:01:17.607Z" }, + { url = "https://files.pythonhosted.org/packages/16/29/de1bbc01c935b28f89b1dc3db85b011c055e843a8e5e3b83141c3f80af7f/coverage-7.14.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8767486808c436f05b23ab98eb963fb29185e32a9357a166971685cb3459900f", size = 262022, upload-time = "2026-05-10T18:01:19.304Z" }, + { url = "https://files.pythonhosted.org/packages/35/95/f53890b0bf2fc10ab168e05d38869215e73ca24c4cb521c3bb0eb62fe16b/coverage-7.14.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:a3b5ddfd6aa7ddad53ee3edb231e88a2151507a43229b7d71b953916deca127d", size = 265732, upload-time = "2026-05-10T18:01:21.494Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ea/c919e259081dd2bdf0e43b87209709ba7ec2e4117c2a7f5185379c43463c/coverage-7.14.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:63df0fe568e698e1045792399f8ab6da3a6c2dce3182813fb92afa2641087b47", size = 260921, upload-time = "2026-05-10T18:01:23.533Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2c/c2831889705a81dc5d1c6ca12e4d8e9b95dfc146d153488a6c0ea685d28e/coverage-7.14.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:827d6397dbd95144939b18f89edf31f63e1f99633e8d5f32f22ba8bdda567477", size = 263109, upload-time = "2026-05-10T18:01:25.165Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a9/2fcae5003cac3d63fe344d2166243c2756935f48420863c5272b240d550b/coverage-7.14.0-cp313-cp313t-win32.whl", hash = "sha256:7bf43e000d24012599b879791cff41589af90674722421ef11b11a5431920bab", size = 223212, upload-time = "2026-05-10T18:01:27.157Z" }, + { url = "https://files.pythonhosted.org/packages/3f/bb/18e94d7b14b9b398164197114a587a04ab7c9fdbe1d237eef57311c5e883/coverage-7.14.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3f5549365af25d770e06b1f8f5682d9a5637d06eb494db91c6fa75d3950cc917", size = 224272, upload-time = "2026-05-10T18:01:29.107Z" }, + { url = "https://files.pythonhosted.org/packages/db/56/4f14fad782b035c81c4ffd09159e7103d42bb1d93ac8496d04b90a11b7da/coverage-7.14.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6d160217ec6fe890f16ad3a9531761589443749e448f91986c972714fad361c8", size = 222530, upload-time = "2026-05-10T18:01:31.151Z" }, + { url = "https://files.pythonhosted.org/packages/1c/18/b9a6586d73992807c26f9a5f274131be3d76b56b18a82b9392e2a25d2e45/coverage-7.14.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9aed9fa983514ca032790f3fe0d1c0e42ca7e16b42432af1706b50a9a46bef5d", size = 220036, upload-time = "2026-05-10T18:01:33.057Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9b/4165a1d56ddc302a0e2d518fd9d412a4fd0b57562618c78c5f21c57194f5/coverage-7.14.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ba3b8390db29296dbbf49e91b6fe08f990743a90c8f447ba4c2ffc29670dfa63", size = 220368, upload-time = "2026-05-10T18:01:34.705Z" }, + { url = "https://files.pythonhosted.org/packages/69/aa/c12e52a5ba148d9995229d557e3be6e554fe469addc0e9241b2f0956d8ea/coverage-7.14.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3a5d8e876dfa2f102e970b183863d6dedd023d3c0eeca1fe7a9787bc5f28b212", size = 251417, upload-time = "2026-05-10T18:01:36.949Z" }, + { url = "https://files.pythonhosted.org/packages/d7/51/ec641c26e6dca1b25a7d2035ba6ecb7c884ef1a100a9e42fbe4ce4405139/coverage-7.14.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5ebb8f4614a3787d567e610bbfdf96a4798dd69a1afb1bd8ad228d4111fe6ff3", size = 253924, upload-time = "2026-05-10T18:01:38.985Z" }, + { url = "https://files.pythonhosted.org/packages/33/c4/59c3de0bd1b538824173fd518fed51c1ce740ca5ed68e74545983f4053a9/coverage-7.14.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b9bf47223dd8db3d4c4b2e443b02bace480d428f0822c3f991600448a176c97", size = 255269, upload-time = "2026-05-10T18:01:40.957Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a9/36dfa153a62040296f6e7febfdb20a5720622f6ef5a81a41e8237b9a5344/coverage-7.14.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3485a836550b303d006d57cc06e3d5afaabc642c77050b7c985a97b13e3776b8", size = 257583, upload-time = "2026-05-10T18:01:42.607Z" }, + { url = "https://files.pythonhosted.org/packages/26/7b/cc2c048d4114d9ab1c2409e9ee365e5ae10736df6dffcfc9444effa6c708/coverage-7.14.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3e7e88110bae996d199d1693ca8ec3fd52441d426401ae963437598667b4c5eb", size = 251434, upload-time = "2026-05-10T18:01:44.537Z" }, + { url = "https://files.pythonhosted.org/packages/ee/df/6770eaa576e604575e9a78055313250faef5faa84bd6f71a39fece519c43/coverage-7.14.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:15228a6800ce7bdf1b74800595e56db7138cecb338fdbf044806e10dcf182dfe", size = 253280, upload-time = "2026-05-10T18:01:46.175Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9e/1c0264514a3f98259a6d64765a397b2c8373e3ba59ee722a4802d3ec0c61/coverage-7.14.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:9d26ac7f5398bafc5b57421ad994e8a4749e8a7a0e62d05ec7d53014d5963bfa", size = 251241, upload-time = "2026-05-10T18:01:48.732Z" }, + { url = "https://files.pythonhosted.org/packages/64/16/4efdf3e3c4079cdbf0ece56a2fea872df9e8a3e15a13a0af4400e1075944/coverage-7.14.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2fb73254ff43c911c967a899e1359bc5049b4b115d6e8fbdde4937d0a2246cd5", size = 255516, upload-time = "2026-05-10T18:01:50.819Z" }, + { url = "https://files.pythonhosted.org/packages/93/69/b1de96346603881b3d1bc8d6447c83200e1c9700ffbaff926ba01ff5724c/coverage-7.14.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:454a380af72c6adada298ed270d38c7a391288198dbfb8467f786f588751a90c", size = 251059, upload-time = "2026-05-10T18:01:52.773Z" }, + { url = "https://files.pythonhosted.org/packages/a4/66/2881853e0363a5e0a724d1103e53650795367471b6afb234f8b49e713bc6/coverage-7.14.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:65c86fb646d2bd2972e96bd1a8b45817ed907cee68655d6295fe7ec031d04cca", size = 252716, upload-time = "2026-05-10T18:01:54.506Z" }, + { url = "https://files.pythonhosted.org/packages/55/5c/0d3305d002c41dcde873dbe456491e663dc55152ca526b630b5c47efd62f/coverage-7.14.0-cp314-cp314-win32.whl", hash = "sha256:6a6516b02a6101398e19a3f44820f69bab2590697f7def4331f668b14adaf828", size = 222788, upload-time = "2026-05-10T18:01:56.487Z" }, + { url = "https://files.pythonhosted.org/packages/f9/58/6e1b8f52fdc3184b47dc5037f5070d83a3d11042db1594b02d2a44d786c8/coverage-7.14.0-cp314-cp314-win_amd64.whl", hash = "sha256:45e0f79d8351fa76e256716df91eab12890d32678b9590df7ae1042e4bd4cf5d", size = 223600, upload-time = "2026-05-10T18:01:58.497Z" }, + { url = "https://files.pythonhosted.org/packages/00/70/a18c408e674bc26281cadaedc7351f929bd2094e191e4b15271c30b084cc/coverage-7.14.0-cp314-cp314-win_arm64.whl", hash = "sha256:4b899594a8b2d81e5cc064a0d7f9cac2081fed91049456cae7676787e41549c9", size = 222168, upload-time = "2026-05-10T18:02:00.411Z" }, + { url = "https://files.pythonhosted.org/packages/3d/89/2681f071d238b62aff8dfc2ab44fc24cfdb38d1c01f391a80522ff5d3a16/coverage-7.14.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:f580f8c80acd94ac72e863efe2cab791d8c38d153e0b463b92dfa000d5c84cd1", size = 220766, upload-time = "2026-05-10T18:02:02.313Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c7/c987babafd9207ffa1995e1ef1f9b26762cf4963aa768a66b6f0501e4616/coverage-7.14.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a2bd259c442cd43c49b30fbafc51776eb19ea396faf159d26a83e6a0a5f13b0c", size = 221035, upload-time = "2026-05-10T18:02:04.017Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e9/d6a5ac3b333088143d6fc877d398a9a674dc03124a2f776e131f03864823/coverage-7.14.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a706b908dfa85538863504c624b237a3cc34232bf403c057414ebfdb3b4d9f84", size = 262405, upload-time = "2026-05-10T18:02:05.915Z" }, + { url = "https://files.pythonhosted.org/packages/38/b1/e70838d29a7c08e22d44398a46db90815bbcbf28de06992bd9210d1a8d8e/coverage-7.14.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7333cd944ee4393b9b3d3c1b598c936d4fc8d70573a4c7dacfec5590dd50e436", size = 264530, upload-time = "2026-05-10T18:02:07.582Z" }, + { url = "https://files.pythonhosted.org/packages/6b/73/5c31ef97763288d03d9995152b96d5475b527c63d91c84b01caea894b83a/coverage-7.14.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f162bc9a15b82d947b02651b0c7e1609d6f7a8735ca330cfadec8481dd97d5a", size = 266932, upload-time = "2026-05-10T18:02:09.401Z" }, + { url = "https://files.pythonhosted.org/packages/e1/76/dd56d80f29c5f05b4d76f7e7c6d47cafacae017189c75c5759d24f9ff0cc/coverage-7.14.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:362cb78e01a5dc82009d88004cf60f2e6b6d6fcbfdec05b05af73b0abf40118f", size = 268062, upload-time = "2026-05-10T18:02:11.399Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c7/27ba85cd5b95614f159ff93ebff1901584a8d192e2e5e24c4943a7453f59/coverage-7.14.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:acebd068fca5512c3a6fde9c045f901613478781a73f0e82b307b214daef23fb", size = 261504, upload-time = "2026-05-10T18:02:13.257Z" }, + { url = "https://files.pythonhosted.org/packages/13/2e/e8149f60ab5d5684c6eee881bdf34b127115cddbb958b196768dd9d63473/coverage-7.14.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:29fe3da551dface75deb2ccbf87b6b66e2e7ef38f6d89050b428be94afff3490", size = 264398, upload-time = "2026-05-10T18:02:15.063Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7f/1261b025285323225f4b4abffa5a643649dfd67e25ddca7ebcbdea3b7cb3/coverage-7.14.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b4cc4fce8672fffcb09b0eafc167b396b3ba53c4a7230f54b7aaffbf6c835fa9", size = 262000, upload-time = "2026-05-10T18:02:16.756Z" }, + { url = "https://files.pythonhosted.org/packages/d3/dc/829c54f60b9d08389439c00f813c752781c496fc5788c78d8006db4b4f2b/coverage-7.14.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:5d4a51aad8ba8bdcd2b8bd8f03d4aca19693fa2327a3470e4718a25b03481020", size = 265732, upload-time = "2026-05-10T18:02:18.817Z" }, + { url = "https://files.pythonhosted.org/packages/ed/b0/70bd1419941652fa062689cba9c3eeafb8f5e6fbb890bce41c3bdda5dbd6/coverage-7.14.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:9f323af3e1e4f68b60b7b247e37b8515563a61375518fa59de1af48ba28a3db6", size = 260847, upload-time = "2026-05-10T18:02:20.528Z" }, + { url = "https://files.pythonhosted.org/packages/f2/73/be40b2390656c654d35ea0015ea7ba3d945769cf80790ad5e0bb2d56d2ba/coverage-7.14.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1a0abc7342ea9711c469dd8b821c6c311e6bc6aac1442e5fbd6b27fae0a8f3db", size = 263166, upload-time = "2026-05-10T18:02:22.337Z" }, + { url = "https://files.pythonhosted.org/packages/29/55/4a643f712fcf7cf2881f8ec1e0ccb7b164aff3108f69b51801246c8799f2/coverage-7.14.0-cp314-cp314t-win32.whl", hash = "sha256:a9f864ef57b7172e2db87a096642dd51e179e085ab6b2c371c29e885f65c8fb2", size = 223573, upload-time = "2026-05-10T18:02:24.11Z" }, + { url = "https://files.pythonhosted.org/packages/27/96/3acae5da0953be042c0b4dea6d6789d2f080701c77b88e44d5bd41b9219b/coverage-7.14.0-cp314-cp314t-win_amd64.whl", hash = "sha256:29943e552fdc08e082eb51400fb2f58e118a83b5542bd06531214e084399b644", size = 224680, upload-time = "2026-05-10T18:02:25.896Z" }, + { url = "https://files.pythonhosted.org/packages/93/3d/6ab5d2dd8325d838737c6f8d83d62eb6230e0d70b87b51b57bbfd08fa767/coverage-7.14.0-cp314-cp314t-win_arm64.whl", hash = "sha256:742a73ea621953b012f2c4c2219b512180dd84489acf5b1596b0aafc55b9100b", size = 222703, upload-time = "2026-05-10T18:02:27.822Z" }, + { url = "https://files.pythonhosted.org/packages/61/e8/cb8e80d6f9f55b99588625062822bf946cf03ed06315df4bd8397f5632a1/coverage-7.14.0-py3-none-any.whl", hash = "sha256:8de5b61163aee3d05c8a2beab6f47913df7981dad1baf82c414d99158c286ab1", size = 211764, upload-time = "2026-05-10T18:02:29.538Z" }, ] [[package]] name = "cryptography" -version = "46.0.3" +version = "48.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" }, - { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" }, - { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" }, - { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" }, - { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" }, - { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" }, - { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" }, - { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" }, - { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" }, - { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" }, - { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" }, - { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" }, - { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" }, - { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" }, - { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" }, - { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" }, - { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" }, - { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" }, - { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" }, - { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" }, - { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" }, - { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" }, - { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" }, - { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" }, - { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" }, - { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" }, - { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" }, - { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" }, - { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" }, - { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" }, - { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" }, - { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" }, - { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" }, - { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" }, - { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" }, - { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" }, - { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" }, - { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" }, - { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" }, - { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" }, - { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" }, -] - -[[package]] -name = "cssselect2" -version = "0.8.0" +sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/6e/e90527eef33f309beb811cf7c982c3aeffcce8e3edb178baa4ca3ae4a6fa/cryptography-48.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c", size = 4690433, upload-time = "2026-05-04T22:57:40.373Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/673510ed51ddff56575f306cf1617d80411ee76831ccd3097599140efdfe/cryptography-48.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3", size = 4710620, upload-time = "2026-05-04T22:57:42.935Z" }, + { url = "https://files.pythonhosted.org/packages/14/d5/e9c4ef932c8d800490c34d8bd589d64a31d5890e27ec9e9ad532be893294/cryptography-48.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5", size = 4696283, upload-time = "2026-05-04T22:57:45.294Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/174b9dfb60b12d59ecfc6cfa04bc88c21b42a54f01b8aae09bb6e51e4c7f/cryptography-48.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c", size = 5296573, upload-time = "2026-05-04T22:57:47.933Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/0d29a6fd7d0d1373f0c0c88a04ba20e359b257753ac497564cd660fc1d55/cryptography-48.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f", size = 4743677, upload-time = "2026-05-04T22:57:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/30/be/eef653013d5c63b6a490529e0316f9ac14a37602965d4903efed1399f32b/cryptography-48.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25", size = 4330808, upload-time = "2026-05-04T22:57:52.301Z" }, + { url = "https://files.pythonhosted.org/packages/84/9e/500463e87abb7a0a0f9f256ec21123ecde0a7b5541a15e840ea54551fd81/cryptography-48.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602", size = 4695941, upload-time = "2026-05-04T22:57:54.603Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/7303087450c2ec9e7fbb750e17c2abfbc658f23cbd0e54009509b7cc4091/cryptography-48.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c", size = 5252579, upload-time = "2026-05-04T22:57:57.207Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c0/7101d3b7215edcdc90c45da544961fd8ed2d6448f77577460fa75a8443f7/cryptography-48.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5", size = 4743326, upload-time = "2026-05-04T22:57:59.535Z" }, + { url = "https://files.pythonhosted.org/packages/ac/d8/5b833bad13016f562ab9d063d68199a4bd121d18458e439515601d3357ec/cryptography-48.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321", size = 4826672, upload-time = "2026-05-04T22:58:01.996Z" }, + { url = "https://files.pythonhosted.org/packages/98/e1/7074eb8bf3c135558c73fc2bcf0f5633f912e6fb87e868a55c454080ef09/cryptography-48.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74", size = 4972574, upload-time = "2026-05-04T22:58:03.968Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/18e07a618bb5442ba10cf4df16e99c071365528aa570dfcb8c02e25a303b/cryptography-48.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18", size = 4684776, upload-time = "2026-05-04T22:58:13.712Z" }, + { url = "https://files.pythonhosted.org/packages/be/6a/4ea3b4c6c6759794d5ee2103c304a5076dc4b19ae1f9fe47dba439e159e9/cryptography-48.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20", size = 4698121, upload-time = "2026-05-04T22:58:16.448Z" }, + { url = "https://files.pythonhosted.org/packages/2f/59/6ff6ad6cae03bb887da2a5860b2c9805f8dac969ef01ce563336c49bd1d1/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff", size = 4690042, upload-time = "2026-05-04T22:58:18.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b4/fc334ed8cfd705aca282fe4d8f5ae64a8e0f74932e9feecb344610cf6e4d/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c", size = 5282526, upload-time = "2026-05-04T22:58:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/11/08/9f8c5386cc4cd90d8255c7cdd0f5baf459a08502a09de30dc51f553d38dc/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db", size = 4733116, upload-time = "2026-05-04T22:58:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/b8/77/99307d7574045699f8805aa500fa0fb83422d115b5400a064ddd306d7750/cryptography-48.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741", size = 4316030, upload-time = "2026-05-04T22:58:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/fd/36/a608b98337af3cb2aff4818e406649d30572b7031918b04c87d979495348/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166", size = 4689640, upload-time = "2026-05-04T22:58:27.747Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a6/825010a291b4438aecc1f568bc428189fc1175515223632477c07dc0a6df/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336", size = 5237657, upload-time = "2026-05-04T22:58:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/b9/09/4e76a09b4caa29aad535ddc806f5d4c5d01885bd978bd984fbc6ca032cae/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057", size = 4732362, upload-time = "2026-05-04T22:58:32.009Z" }, + { url = "https://files.pythonhosted.org/packages/18/78/444fa04a77d0cb95f417dda20d450e13c56ba8e5220fc892a1658f44f882/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae", size = 4819580, upload-time = "2026-05-04T22:58:34.254Z" }, + { url = "https://files.pythonhosted.org/packages/38/85/ea67067c70a1fd4be2c63d35eeed82658023021affccc7b17705f8527dd2/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c", size = 4963283, upload-time = "2026-05-04T22:58:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ac/f5b5995b87770c693e2596559ffafe195b4033a57f14a82268a2842953f3/cryptography-48.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e", size = 4683266, upload-time = "2026-05-04T22:58:46.064Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c6/8b14f67e18338fbc4adb76f66c001f5c3610b3e2d1837f268f47a347dbbb/cryptography-48.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f", size = 4696228, upload-time = "2026-05-04T22:58:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/ea/73/f808fbae9514bd91b47875b003f13e284c8c6bdfd904b7944e803937eec1/cryptography-48.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7", size = 4689097, upload-time = "2026-05-04T22:58:50.9Z" }, + { url = "https://files.pythonhosted.org/packages/93/01/d86632d7d28db8ae83221995752eeb6639ffb374c2d22955648cf8d52797/cryptography-48.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832", size = 5283582, upload-time = "2026-05-04T22:58:53.017Z" }, + { url = "https://files.pythonhosted.org/packages/02/e1/50edc7a50334807cc4791fc4a0ce7468b4a1416d9138eab358bfc9a3d70b/cryptography-48.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c", size = 4730479, upload-time = "2026-05-04T22:58:55.611Z" }, + { url = "https://files.pythonhosted.org/packages/6f/af/99a582b1b1641ff5911ac559beb45097cf79efd4ead4657f578ef1af2d47/cryptography-48.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a", size = 4326481, upload-time = "2026-05-04T22:58:57.607Z" }, + { url = "https://files.pythonhosted.org/packages/90/ee/89aa26a06ef0a7d7611788ffd571a7c50e368cc6a4d5eef8b4884e866edb/cryptography-48.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a", size = 4688713, upload-time = "2026-05-04T22:59:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/70/ba/bcb1b0bb7a33d4c7c0c4d4c7874b4a62ae4f56113a5f4baefa362dfb1f0f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a", size = 5238165, upload-time = "2026-05-04T22:59:02.317Z" }, + { url = "https://files.pythonhosted.org/packages/c9/70/ca4003b1ce5ca3dc3186ada51908c8a9b9ff7d5cab83cc0d43ee14ec144f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239", size = 4729947, upload-time = "2026-05-04T22:59:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/4ec7cf774207905aef1a8d11c3750d5a1db805eb380ee4e16df317870128/cryptography-48.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c", size = 4822059, upload-time = "2026-05-04T22:59:07.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/75/a2e55f99c16fcac7b5d6c1eb19ad8e00799854d6be5ca845f9259eae1681/cryptography-48.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4", size = 4960575, upload-time = "2026-05-04T22:59:09.851Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "13.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/c8/b2589d68acf7e3d63e2be330b84bc25712e97ed799affbca7edd7eae25d6/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e865447abfb83d6a98ad5130ed3c70b1fc295ae3eeee39fd07b4ddb0671b6788", size = 5722404, upload-time = "2026-03-11T00:12:44.041Z" }, + { url = "https://files.pythonhosted.org/packages/1f/92/f899f7bbb5617bb65ec52a6eac1e9a1447a86b916c4194f8a5001b8cde0c/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46d8776a55d6d5da9dd6e9858fba2efcda2abe6743871dee47dd06eb8cb6d955", size = 6320619, upload-time = "2026-03-11T00:12:45.939Z" }, + { url = "https://files.pythonhosted.org/packages/df/93/eef988860a3ca985f82c4f3174fc0cdd94e07331ba9a92e8e064c260337f/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6629ca2df6f795b784752409bcaedbd22a7a651b74b56a165ebc0c9dcbd504d0", size = 5614610, upload-time = "2026-03-11T00:12:50.337Z" }, + { url = "https://files.pythonhosted.org/packages/18/23/6db3aba46864aee357ab2415135b3fe3da7e9f1fa0221fa2a86a5968099c/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7dca0da053d3b4cc4869eff49c61c03f3c5dbaa0bcd712317a358d5b8f3f385d", size = 6149914, upload-time = "2026-03-11T00:12:52.374Z" }, + { url = "https://files.pythonhosted.org/packages/c0/87/87a014f045b77c6de5c8527b0757fe644417b184e5367db977236a141602/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6464b30f46692d6c7f65d4a0e0450d81dd29de3afc1bb515653973d01c2cd6e", size = 5685673, upload-time = "2026-03-11T00:12:56.371Z" }, + { url = "https://files.pythonhosted.org/packages/ee/5e/c0fe77a73aaefd3fff25ffaccaac69c5a63eafdf8b9a4c476626ef0ac703/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4af9f3e1be603fa12d5ad6cfca7844c9d230befa9792b5abdf7dd79979c3626", size = 6191386, upload-time = "2026-03-11T00:12:58.965Z" }, + { url = "https://files.pythonhosted.org/packages/5f/58/ed2c3b39c8dd5f96aa7a4abef0d47a73932c7a988e30f5fa428f00ed0da1/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df850a1ff8ce1b3385257b08e47b70e959932f5f432d0a4e46a355962b4e4771", size = 5507469, upload-time = "2026-03-11T00:13:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/1f/01/0c941b112ceeb21439b05895eace78ca1aa2eaaf695c8521a068fd9b4c00/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8a16384c6494e5485f39314b0b4afb04bee48d49edb16d5d8593fd35bbd231b", size = 6059693, upload-time = "2026-03-11T00:13:06.003Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.5.4" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "tinycss2" }, - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716, upload-time = "2025-03-05T14:46:07.988Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454, upload-time = "2025-03-05T14:46:06.463Z" }, + { url = "https://files.pythonhosted.org/packages/11/d0/c177e29701cf1d3008d7d2b16b5fc626592ce13bd535f8795c5f57187e0e/cuda_pathfinder-1.5.4-py3-none-any.whl", hash = "sha256:9563d3175ce1828531acf4b94e1c1c7d67208c347ca002493e2654878b26f4b7", size = 51657, upload-time = "2026-04-27T22:42:07.712Z" }, ] [[package]] -name = "cupy-cuda12x" -version = "13.6.0" +name = "cuda-toolkit" +version = "13.0.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastrlock" }, - { name = "numpy" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/12/c5/7e7fc4816d0de0154e5d9053242c3a08a0ca8b43ee656a6f7b3b95055a7b/cupy_cuda12x-13.6.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a6970ceefe40f9acbede41d7fe17416bd277b1bd2093adcde457b23b578c5a59", size = 127334633, upload-time = "2025-08-18T08:24:43.065Z" }, - { url = "https://files.pythonhosted.org/packages/e0/95/d7e1295141e7d530674a3cc567e13ed0eb6b81524cb122d797ed996b5bea/cupy_cuda12x-13.6.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:79b0cacb5e8b190ef409f9e03f06ac8de1b021b0c0dda47674d446f5557e0eb1", size = 112886268, upload-time = "2025-08-18T08:24:49.294Z" }, - { url = "https://files.pythonhosted.org/packages/ae/8c/14555b63fd78cfac7b88af0094cea0a3cb845d243661ec7da69f7b3ea0de/cupy_cuda12x-13.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca06fede7b8b83ca9ad80062544ef2e5bb8d4762d1c4fc3ac8349376de9c8a5e", size = 89785108, upload-time = "2025-08-18T08:24:54.527Z" }, - { url = "https://files.pythonhosted.org/packages/19/ec/f62cb991f11fb41291c4c15b6936d7b67ffa71ddb344ad6e8894e06ce58d/cupy_cuda12x-13.6.0-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e5426ae3b1b9cf59927481e457a89e3f0b50a35b114a8034ec9110e7a833434c", size = 126904601, upload-time = "2025-08-18T08:24:59.951Z" }, - { url = "https://files.pythonhosted.org/packages/f8/b8/30127bcdac53a25f94ee201bf4802fcd8d012145567d77c54174d6d01c01/cupy_cuda12x-13.6.0-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:52d9e7f83d920da7d81ec2e791c2c2c747fdaa1d7b811971b34865ce6371e98a", size = 112654824, upload-time = "2025-08-18T08:25:05.944Z" }, - { url = "https://files.pythonhosted.org/packages/72/36/c9e24acb19f039f814faea880b3704a3661edaa6739456b73b27540663e3/cupy_cuda12x-13.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:297b4268f839de67ef7865c2202d3f5a0fb8d20bd43360bc51b6e60cb4406447", size = 89750580, upload-time = "2025-08-18T08:25:10.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" }, +] + +[package.optional-dependencies] +cudart = [ + { name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cufft = [ + { name = "nvidia-cufft", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cufile = [ + { name = "nvidia-cufile", marker = "sys_platform == 'linux'" }, +] +cupti = [ + { name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +curand = [ + { name = "nvidia-curand", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cusolver = [ + { name = "nvidia-cusolver", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cusparse = [ + { name = "nvidia-cusparse", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +nvtx = [ + { name = "nvidia-nvtx", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, ] [[package]] name = "cupy-cuda13x" -version = "13.6.0" +version = "14.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "fastrlock" }, + { name = "cuda-pathfinder" }, { name = "numpy" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/55/73/68a35a4c027be4c24844585441176635d814ada7d1330c771e410bad9816/cupy_cuda13x-13.6.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a3bb49fb023757bfaf0b82c5a1740739a2108ea46d944d699bcff92963c7b87f", size = 66330291, upload-time = "2025-08-18T08:32:31.332Z" }, - { url = "https://files.pythonhosted.org/packages/67/f5/ca0ba263602fc3e7afb7052ae1df68ca48110867752740d355854f8b28d0/cupy_cuda13x-13.6.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:f06b2585b68639fdf3975be06a91e3106b1306a43d77848b6c28df7f8ea98299", size = 54542783, upload-time = "2025-08-18T08:32:35.767Z" }, - { url = "https://files.pythonhosted.org/packages/95/16/0bc90e94e6beee40aac5f466081069267e284eb3dfc35bd00515bd27bff3/cupy_cuda13x-13.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:58da388fb3b3b15aec66634a73f03681579baa1d22cb32f7543a29086c0a1ec5", size = 33906940, upload-time = "2025-08-18T08:32:39.367Z" }, - { url = "https://files.pythonhosted.org/packages/b7/2d/91af3d769c7d0cdd6eb7fa1e32e5971171ee3a7679704f8f3a13d000d5db/cupy_cuda13x-13.6.0-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:d6d83733691d3114f1a5b792c9e1288e2fb4c432023ce86853a37a16193e1760", size = 65900404, upload-time = "2025-08-18T08:32:43.043Z" }, - { url = "https://files.pythonhosted.org/packages/1a/5c/885d0113113f4a0bfe3e30cd74f92eb4f8717e3077224655496ad98a12de/cupy_cuda13x-13.6.0-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:015a052ec46bad154a74ff04c9c5aea2a8ab441f2d6ae3824bdfe3db0eeb4d2e", size = 54331219, upload-time = "2025-08-18T08:32:46.81Z" }, - { url = "https://files.pythonhosted.org/packages/f8/63/4935ead68bc414e4d7d8ba16b1feae5bd0b59ebc02c061e70bd100623d61/cupy_cuda13x-13.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:ccde134a3fdfffbf6ba6fb933173a11efce4108730aeb86a672dc09507acdb98", size = 33874661, upload-time = "2025-08-18T08:32:50.429Z" }, + { url = "https://files.pythonhosted.org/packages/23/7e/21afe0ab60bd88acbfa0daa6e1d7beff31fc9ec72702173520f58236daec/cupy_cuda13x-14.1.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:9b83ce4965466bf2bf99aaa6ce594c0547ca696f451676cd1d46124443476fb0", size = 73277053, upload-time = "2026-05-23T01:11:40.406Z" }, + { url = "https://files.pythonhosted.org/packages/2c/2e/d3780ce0a8d951e632349bb989d8536e77e03e8ff1c419922ed933f3ba55/cupy_cuda13x-14.1.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:3d3a64a850f5560239b942a833a6498e2d9a5fff4efbb6e93cddfa8c4f53b9cf", size = 69532518, upload-time = "2026-05-23T01:11:44.38Z" }, + { url = "https://files.pythonhosted.org/packages/99/2d/5faee3a1626deac5feef290fd52460ad57460009e9738ec4f0e62d40af5b/cupy_cuda13x-14.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:9e42ff785aec56e76ffc05fc0d92f7eab2a970dc7c377ad61288a98aa10e7db8", size = 35192581, upload-time = "2026-05-23T01:11:47.759Z" }, + { url = "https://files.pythonhosted.org/packages/04/8a/31c58ffa8e1780c8f15492018997d5fb3548427f5fa0e6327becf26f00c6/cupy_cuda13x-14.1.0-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:42f85f692a589b92a86627113e1072c534cc9d9047433b4291b8bd7b49fb238a", size = 72812202, upload-time = "2026-05-23T01:11:51.015Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/be34e911811a0369e3e66b1b618dfccdea1f84ad6a2cc17f146ce9095e99/cupy_cuda13x-14.1.0-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:eef76f0647af5a9bfe3d0bac641f201deb5f15a644f4b13a2e68c0c62e6808fe", size = 69094718, upload-time = "2026-05-23T01:11:57.103Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c1/c92b4c9c2c561c1298dfad2e3dbb75e527ac1a15d567d8fb868fc277c80e/cupy_cuda13x-14.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:18338008d428bf04dcd73ab2489c6f90c39b7ff439ab2b609115b9bb0e16e0ec", size = 35171775, upload-time = "2026-05-23T01:12:00.57Z" }, + { url = "https://files.pythonhosted.org/packages/24/b4/8963aced61d836417ca681d7cd1b6b27916ed877a01f3adf7c902bd8f392/cupy_cuda13x-14.1.0-cp314-cp314-manylinux2014_aarch64.whl", hash = "sha256:fa77dc442a166e784e28e5c7dd4e1bb4b2ac54a2ec55c59c1af3c0ed27e14f69", size = 72680065, upload-time = "2026-05-23T01:12:03.979Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a8/2ae8d8235a236564e65a73812ee0bf4c1afe96b7104f754f100832f015e9/cupy_cuda13x-14.1.0-cp314-cp314-manylinux2014_x86_64.whl", hash = "sha256:7824fc7757bac2d91d6c810c4f5376359c1eeaf5d37c2625c4a670705f3d9f36", size = 68432300, upload-time = "2026-05-23T01:12:07.777Z" }, + { url = "https://files.pythonhosted.org/packages/ee/12/8e1d2b9efda12e8ad5c648f1fc289454b7c6210c2f4d9e99d7663178d8e1/cupy_cuda13x-14.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:f3c9f5e61fefc7920bcd3da9818679ea8f9319cca080dd88118f463a2ca08e41", size = 35323531, upload-time = "2026-05-23T01:12:11.024Z" }, + { url = "https://files.pythonhosted.org/packages/f6/bc/6cceec523fd467fc6259c4c394d87a9e7e3b8f011685da028d9862bf8497/cupy_cuda13x-14.1.0-cp314-cp314t-manylinux2014_aarch64.whl", hash = "sha256:e5b2a0dcaa5fb27faf034f5e3d271eaa13c4a5351e2c6dec925a866c210f3605", size = 72984031, upload-time = "2026-05-23T01:12:14.388Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/180777ccc0f85ce4469f3e6e615c471968f482fed85827410090adf40523/cupy_cuda13x-14.1.0-cp314-cp314t-manylinux2014_x86_64.whl", hash = "sha256:69b314f0085d7ad46a671338e62b3f35270c144c31df8c443c0341b97a905980", size = 68662879, upload-time = "2026-05-23T01:12:18.04Z" }, ] [[package]] @@ -1027,7 +782,7 @@ wheels = [ [[package]] name = "cyclopts" -version = "4.4.4" +version = "4.16.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -1035,9 +790,9 @@ dependencies = [ { name = "rich" }, { name = "rich-rst" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/43/c4/60b6068e703c78656d07b249919754f8f60e9e7da3325560574ee27b4e39/cyclopts-4.4.4.tar.gz", hash = "sha256:f30c591c971d974ab4f223e099f881668daed72de713713c984ca41479d393dd", size = 160046, upload-time = "2026-01-05T03:40:18.438Z" } +sdist = { url = "https://files.pythonhosted.org/packages/34/07/bf61d13de86d96a4c46aff00c9ca0eced44bcc8c3e16280605c1253e5720/cyclopts-4.16.1.tar.gz", hash = "sha256:8aa47bf92a5fb33abca5af05e576eecdb0d2f79893ad29238046df78370fc4a8", size = 181196, upload-time = "2026-05-25T15:29:08.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/5b/0eceb9a5990de9025733a0d212ca43649ba9facd58b8552b6bf93c11439d/cyclopts-4.4.4-py3-none-any.whl", hash = "sha256:316f798fe2f2a30cb70e7140cfde2a46617bfbb575d31bbfdc0b2410a447bd83", size = 197398, upload-time = "2026-01-05T03:40:17.141Z" }, + { url = "https://files.pythonhosted.org/packages/00/8d/7f362c2fb8ef4decd2160bc24d4292c6ca658cc6d9a161b89ca5122bbdbf/cyclopts-4.16.1-py3-none-any.whl", hash = "sha256:617795392c4113a2c2cc7af716f20244900e87f23daa05442d1268d81472a592", size = 219020, upload-time = "2026-05-25T15:29:09.646Z" }, ] [[package]] @@ -1159,71 +914,65 @@ wheels = [ [[package]] name = "debugpy" -version = "1.8.19" +version = "1.8.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/73/75/9e12d4d42349b817cd545b89247696c67917aab907012ae5b64bbfea3199/debugpy-1.8.19.tar.gz", hash = "sha256:eea7e5987445ab0b5ed258093722d5ecb8bb72217c5c9b1e21f64efe23ddebdb", size = 1644590, upload-time = "2025-12-15T21:53:28.044Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/cd8080344452e4874aae67c40d8940e2b4d47b01601a8fd9f44786c757c7/debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33", size = 1645207, upload-time = "2026-01-29T23:03:28.199Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/15/d762e5263d9e25b763b78be72dc084c7a32113a0bac119e2f7acae7700ed/debugpy-1.8.19-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:bccb1540a49cde77edc7ce7d9d075c1dbeb2414751bc0048c7a11e1b597a4c2e", size = 2549995, upload-time = "2025-12-15T21:53:43.773Z" }, - { url = "https://files.pythonhosted.org/packages/a7/88/f7d25c68b18873b7c53d7c156ca7a7ffd8e77073aa0eac170a9b679cf786/debugpy-1.8.19-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:e9c68d9a382ec754dc05ed1d1b4ed5bd824b9f7c1a8cd1083adb84b3c93501de", size = 4309891, upload-time = "2025-12-15T21:53:45.26Z" }, - { url = "https://files.pythonhosted.org/packages/c5/4f/a65e973aba3865794da65f71971dca01ae66666132c7b2647182d5be0c5f/debugpy-1.8.19-cp312-cp312-win32.whl", hash = "sha256:6599cab8a783d1496ae9984c52cb13b7c4a3bd06a8e6c33446832a5d97ce0bee", size = 5286355, upload-time = "2025-12-15T21:53:46.763Z" }, - { url = "https://files.pythonhosted.org/packages/d8/3a/d3d8b48fec96e3d824e404bf428276fb8419dfa766f78f10b08da1cb2986/debugpy-1.8.19-cp312-cp312-win_amd64.whl", hash = "sha256:66e3d2fd8f2035a8f111eb127fa508469dfa40928a89b460b41fd988684dc83d", size = 5328239, upload-time = "2025-12-15T21:53:48.868Z" }, - { url = "https://files.pythonhosted.org/packages/71/3d/388035a31a59c26f1ecc8d86af607d0c42e20ef80074147cd07b180c4349/debugpy-1.8.19-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:91e35db2672a0abaf325f4868fcac9c1674a0d9ad9bb8a8c849c03a5ebba3e6d", size = 2538859, upload-time = "2025-12-15T21:53:50.478Z" }, - { url = "https://files.pythonhosted.org/packages/4a/19/c93a0772d0962294f083dbdb113af1a7427bb632d36e5314297068f55db7/debugpy-1.8.19-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:85016a73ab84dea1c1f1dcd88ec692993bcbe4532d1b49ecb5f3c688ae50c606", size = 4292575, upload-time = "2025-12-15T21:53:51.821Z" }, - { url = "https://files.pythonhosted.org/packages/5c/56/09e48ab796b0a77e3d7dc250f95251832b8bf6838c9632f6100c98bdf426/debugpy-1.8.19-cp313-cp313-win32.whl", hash = "sha256:b605f17e89ba0ecee994391194285fada89cee111cfcd29d6f2ee11cbdc40976", size = 5286209, upload-time = "2025-12-15T21:53:53.602Z" }, - { url = "https://files.pythonhosted.org/packages/fb/4e/931480b9552c7d0feebe40c73725dd7703dcc578ba9efc14fe0e6d31cfd1/debugpy-1.8.19-cp313-cp313-win_amd64.whl", hash = "sha256:c30639998a9f9cd9699b4b621942c0179a6527f083c72351f95c6ab1728d5b73", size = 5328206, upload-time = "2025-12-15T21:53:55.433Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b9/cbec520c3a00508327476c7fce26fbafef98f412707e511eb9d19a2ef467/debugpy-1.8.19-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:1e8c4d1bd230067bf1bbcdbd6032e5a57068638eb28b9153d008ecde288152af", size = 2537372, upload-time = "2025-12-15T21:53:57.318Z" }, - { url = "https://files.pythonhosted.org/packages/88/5e/cf4e4dc712a141e10d58405c58c8268554aec3c35c09cdcda7535ff13f76/debugpy-1.8.19-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d40c016c1f538dbf1762936e3aeb43a89b965069d9f60f9e39d35d9d25e6b809", size = 4268729, upload-time = "2025-12-15T21:53:58.712Z" }, - { url = "https://files.pythonhosted.org/packages/82/a3/c91a087ab21f1047db328c1d3eb5d1ff0e52de9e74f9f6f6fa14cdd93d58/debugpy-1.8.19-cp314-cp314-win32.whl", hash = "sha256:0601708223fe1cd0e27c6cce67a899d92c7d68e73690211e6788a4b0e1903f5b", size = 5286388, upload-time = "2025-12-15T21:54:00.687Z" }, - { url = "https://files.pythonhosted.org/packages/17/b8/bfdc30b6e94f1eff09f2dc9cc1f9cd1c6cde3d996bcbd36ce2d9a4956e99/debugpy-1.8.19-cp314-cp314-win_amd64.whl", hash = "sha256:8e19a725f5d486f20e53a1dde2ab8bb2c9607c40c00a42ab646def962b41125f", size = 5327741, upload-time = "2025-12-15T21:54:02.148Z" }, - { url = "https://files.pythonhosted.org/packages/25/3e/e27078370414ef35fafad2c06d182110073daaeb5d3bf734b0b1eeefe452/debugpy-1.8.19-py2.py3-none-any.whl", hash = "sha256:360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38", size = 5292321, upload-time = "2025-12-15T21:54:16.024Z" }, + { url = "https://files.pythonhosted.org/packages/14/57/7f34f4736bfb6e00f2e4c96351b07805d83c9a7b33d28580ae01374430f7/debugpy-1.8.20-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:4ae3135e2089905a916909ef31922b2d733d756f66d87345b3e5e52b7a55f13d", size = 2550686, upload-time = "2026-01-29T23:03:42.023Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/b193a3975ca34458f6f0e24aaf5c3e3da72f5401f6054c0dfd004b41726f/debugpy-1.8.20-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:88f47850a4284b88bd2bfee1f26132147d5d504e4e86c22485dfa44b97e19b4b", size = 4310588, upload-time = "2026-01-29T23:03:43.314Z" }, + { url = "https://files.pythonhosted.org/packages/c1/55/f14deb95eaf4f30f07ef4b90a8590fc05d9e04df85ee379712f6fb6736d7/debugpy-1.8.20-cp312-cp312-win32.whl", hash = "sha256:4057ac68f892064e5f98209ab582abfee3b543fb55d2e87610ddc133a954d390", size = 5331372, upload-time = "2026-01-29T23:03:45.526Z" }, + { url = "https://files.pythonhosted.org/packages/a1/39/2bef246368bd42f9bd7cba99844542b74b84dacbdbea0833e610f384fee8/debugpy-1.8.20-cp312-cp312-win_amd64.whl", hash = "sha256:a1a8f851e7cf171330679ef6997e9c579ef6dd33c9098458bd9986a0f4ca52e3", size = 5372835, upload-time = "2026-01-29T23:03:47.245Z" }, + { url = "https://files.pythonhosted.org/packages/15/e2/fc500524cc6f104a9d049abc85a0a8b3f0d14c0a39b9c140511c61e5b40b/debugpy-1.8.20-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:5dff4bb27027821fdfcc9e8f87309a28988231165147c31730128b1c983e282a", size = 2539560, upload-time = "2026-01-29T23:03:48.738Z" }, + { url = "https://files.pythonhosted.org/packages/90/83/fb33dcea789ed6018f8da20c5a9bc9d82adc65c0c990faed43f7c955da46/debugpy-1.8.20-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:84562982dd7cf5ebebfdea667ca20a064e096099997b175fe204e86817f64eaf", size = 4293272, upload-time = "2026-01-29T23:03:50.169Z" }, + { url = "https://files.pythonhosted.org/packages/a6/25/b1e4a01bfb824d79a6af24b99ef291e24189080c93576dfd9b1a2815cd0f/debugpy-1.8.20-cp313-cp313-win32.whl", hash = "sha256:da11dea6447b2cadbf8ce2bec59ecea87cc18d2c574980f643f2d2dfe4862393", size = 5331208, upload-time = "2026-01-29T23:03:51.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/f7/a0b368ce54ffff9e9028c098bd2d28cfc5b54f9f6c186929083d4c60ba58/debugpy-1.8.20-cp313-cp313-win_amd64.whl", hash = "sha256:eb506e45943cab2efb7c6eafdd65b842f3ae779f020c82221f55aca9de135ed7", size = 5372930, upload-time = "2026-01-29T23:03:53.585Z" }, + { url = "https://files.pythonhosted.org/packages/33/2e/f6cb9a8a13f5058f0a20fe09711a7b726232cd5a78c6a7c05b2ec726cff9/debugpy-1.8.20-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:9c74df62fc064cd5e5eaca1353a3ef5a5d50da5eb8058fcef63106f7bebe6173", size = 2538066, upload-time = "2026-01-29T23:03:54.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/56/6ddca50b53624e1ca3ce1d1e49ff22db46c47ea5fb4c0cc5c9b90a616364/debugpy-1.8.20-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:077a7447589ee9bc1ff0cdf443566d0ecf540ac8aa7333b775ebcb8ce9f4ecad", size = 4269425, upload-time = "2026-01-29T23:03:56.518Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d9/d64199c14a0d4c476df46c82470a3ce45c8d183a6796cfb5e66533b3663c/debugpy-1.8.20-cp314-cp314-win32.whl", hash = "sha256:352036a99dd35053b37b7803f748efc456076f929c6a895556932eaf2d23b07f", size = 5331407, upload-time = "2026-01-29T23:03:58.481Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d9/1f07395b54413432624d61524dfd98c1a7c7827d2abfdb8829ac92638205/debugpy-1.8.20-cp314-cp314-win_amd64.whl", hash = "sha256:a98eec61135465b062846112e5ecf2eebb855305acc1dfbae43b72903b8ab5be", size = 5372521, upload-time = "2026-01-29T23:03:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c3/7f67dea8ccf8fdcb9c99033bbe3e90b9e7395415843accb81428c441be2d/debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7", size = 5337658, upload-time = "2026-01-29T23:04:17.404Z" }, ] [[package]] name = "decorator" -version = "5.2.1" +version = "5.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/60/8b/32f9823da46cde7df2087faa08cd98d01b908f8dcab982cdba9c84e85355/decorator-5.3.1.tar.gz", hash = "sha256:4cbcdd55a6efadb9dbea26b858f4fb3264567b52d69ca0d25b721b553f60ea82", size = 58084, upload-time = "2026-05-18T06:03:28.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, + { url = "https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl", hash = "sha256:f47fe6fdbd2edd623ecfe36875d37aba411624e2670dd395dddae1358689bb3c", size = 10365, upload-time = "2026-05-18T06:03:26.517Z" }, ] [[package]] -name = "defusedxml" -version = "0.7.1" +name = "deepmerge" +version = "2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/3a/b0ba594708f1ad0bc735884b3ad854d3ca3bdc1d741e56e40bbda6263499/deepmerge-2.0.tar.gz", hash = "sha256:5c3d86081fbebd04dd5de03626a0607b809a98fb6ccba5770b62466fe940ff20", size = 19890, upload-time = "2024-08-30T05:31:50.308Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" }, + { url = "https://files.pythonhosted.org/packages/2d/82/e5d2c1c67d19841e9edc74954c827444ae826978499bde3dfc1d007c8c11/deepmerge-2.0-py3-none-any.whl", hash = "sha256:6de9ce507115cff0bed95ff0ce9ecc31088ef50cbdf09bc90a09349a318b3d00", size = 13475, upload-time = "2024-08-30T05:31:48.659Z" }, ] [[package]] -name = "deprecated" +name = "dependency-groups" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "wrapt" }, + { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } +sdist = { url = "https://files.pythonhosted.org/packages/62/55/f054de99871e7beb81935dea8a10b90cd5ce42122b1c3081d5282fdb3621/dependency_groups-1.3.1.tar.gz", hash = "sha256:78078301090517fd938c19f64a53ce98c32834dfe0dee6b88004a569a6adfefd", size = 10093, upload-time = "2025-05-02T00:34:29.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, + { url = "https://files.pythonhosted.org/packages/99/c7/d1ec24fb280caa5a79b6b950db565dab30210a66259d17d5bb2b3a9f878d/dependency_groups-1.3.1-py3-none-any.whl", hash = "sha256:51aeaa0dfad72430fcfb7bcdbefbd75f3792e5919563077f30bc0d73f4493030", size = 8664, upload-time = "2025-05-02T00:34:27.085Z" }, ] [[package]] -name = "dictdiffer" -version = "0.9.0" +name = "deprecated" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/7b/35cbccb7effc5d7e40f4c55e2b79399e1853041997fcda15c9ff160abba0/dictdiffer-0.9.0.tar.gz", hash = "sha256:17bacf5fbfe613ccf1b6d512bd766e6b21fb798822a133aa86098b8ac9997578", size = 31513, upload-time = "2021-07-22T13:24:29.276Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/ef/4cb333825d10317a36a1154341ba37e6e9c087bac99c1990ef07ffdb376f/dictdiffer-0.9.0-py2.py3-none-any.whl", hash = "sha256:442bfc693cfcadaf46674575d2eba1c53b42f5e404218ca2c2ff549f2df56595", size = 16754, upload-time = "2021-07-22T13:24:26.783Z" }, +dependencies = [ + { name = "wrapt" }, ] - -[[package]] -name = "diskcache" -version = "5.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc" } +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19" }, + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, ] [[package]] @@ -1235,34 +984,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, ] -[[package]] -name = "distro" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, -] - -[[package]] -name = "docstring-inheritance" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/44/e0/517e63eeca8302ad1432e3f57da9a081e044ae9916c8e0d3bc1c15ac222f/docstring_inheritance-2.3.0.tar.gz", hash = "sha256:c08c0cd92070c5c551eb9b0a1fbb7f16c7a0bef8bc14980bb38dcf2d5510497d", size = 30743, upload-time = "2025-11-29T12:14:48.091Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/e6/0a9dfc16c3bb08e4db4ad18b48f1a8139666b0453280bce23c92d26d9208/docstring_inheritance-2.3.0-py3-none-any.whl", hash = "sha256:c89519e9deb0877d79a4540effc89a7d59335e2cbcd340ba107d50b76d1bf22e", size = 25322, upload-time = "2025-11-29T12:14:49.27Z" }, -] - [[package]] name = "docstring-parser" -version = "0.17.0" +version = "0.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/9d/c3b43da9515bd270df0f80548d9944e389870713cc1fe2b8fb35fe2bcefd/docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912", size = 27442, upload-time = "2025-07-21T07:35:01.868Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/4d/f332313098c1de1b2d2ff91cf2674415cc7cddab2ca1b01ae29774bd5fdf/docstring_parser-0.18.0.tar.gz", hash = "sha256:292510982205c12b1248696f44959db3cdd1740237a968ea1e2e7a900eeb2015", size = 29341, upload-time = "2026-04-14T04:09:19.867Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, + { url = "https://files.pythonhosted.org/packages/a7/5f/ed01f9a3cdffbd5a008556fc7b2a08ddb1cc6ace7effa7340604b1d16699/docstring_parser-0.18.0-py3-none-any.whl", hash = "sha256:b3fcbed555c47d8479be0796ef7e19c2670d428d72e96da63f3a40122860374b", size = 22484, upload-time = "2026-04-14T04:09:18.638Z" }, ] [[package]] @@ -1274,44 +1002,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, ] -[[package]] -name = "dpath" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/ce/e1fd64d36e4a5717bd5e6b2ad188f5eaa2e902fde871ea73a79875793fc9/dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e", size = 28266, upload-time = "2024-06-12T22:08:03.686Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/d1/8952806fbf9583004ab479d8f58a9496c3d35f6b6009ddd458bdd9978eaf/dpath-2.2.0-py3-none-any.whl", hash = "sha256:b330a375ded0a0d2ed404440f6c6a715deae5313af40bbb01c8a41d891900576", size = 17618, upload-time = "2024-06-12T22:08:01.881Z" }, -] - -[[package]] -name = "duckdb" -version = "1.4.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/da/17c3eb5458af69d54dedc8d18e4a32ceaa8ce4d4c699d45d6d8287e790c3/duckdb-1.4.3.tar.gz", hash = "sha256:fea43e03604c713e25a25211ada87d30cd2a044d8f27afab5deba26ac49e5268", size = 18478418, upload-time = "2025-12-09T10:59:22.945Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/d7/fdc2139b94297fc5659110a38adde293d025e320673ae5e472b95d323c50/duckdb-1.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6302452e57aef29aae3977063810ed7b2927967b97912947b9cca45c1c21955f", size = 29033112, upload-time = "2025-12-09T10:58:16.52Z" }, - { url = "https://files.pythonhosted.org/packages/eb/d9/ca93df1ce19aef8f799e3aaacf754a4dde7e9169c0b333557752d21d076a/duckdb-1.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:deab351ac43b6282a3270e3d40e3d57b3b50f472d9fd8c30975d88a31be41231", size = 15414646, upload-time = "2025-12-09T10:58:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/16/90/9f2748e740f5fc05b739e7c5c25aab6ab4363e5da4c3c70419c7121dc806/duckdb-1.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5634e40e1e2d972e4f75bced1fbdd9e9e90faa26445c1052b27de97ee546944a", size = 13740477, upload-time = "2025-12-09T10:58:21.778Z" }, - { url = "https://files.pythonhosted.org/packages/5f/ec/279723615b4fb454efd823b7efe97cf2504569e2e74d15defbbd6b027901/duckdb-1.4.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:274d4a31aba63115f23e7e7b401e3e3a937f3626dc9dea820a9c7d3073f450d2", size = 18483715, upload-time = "2025-12-09T10:58:24.346Z" }, - { url = "https://files.pythonhosted.org/packages/10/63/af20cd20fd7fd6565ea5a1578c16157b6a6e07923e459a6f9b0dc9ada308/duckdb-1.4.3-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f868a7e6d9b37274a1aa34849ea92aa964e9bd59a5237d6c17e8540533a1e4f", size = 20495188, upload-time = "2025-12-09T10:58:26.806Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ab/0acb4b64afb2cc6c1d458a391c64e36be40137460f176c04686c965ce0e0/duckdb-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef7ef15347ce97201b1b5182a5697682679b04c3374d5a01ac10ba31cf791b95", size = 12335622, upload-time = "2025-12-09T10:58:29.707Z" }, - { url = "https://files.pythonhosted.org/packages/50/d5/2a795745f6597a5e65770141da6efdc4fd754e5ee6d652f74bcb7f9c7759/duckdb-1.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:1b9b445970fd18274d5ac07a0b24c032e228f967332fb5ebab3d7db27738c0e4", size = 13075834, upload-time = "2025-12-09T10:58:32.036Z" }, - { url = "https://files.pythonhosted.org/packages/fd/76/288cca43a10ddd082788e1a71f1dc68d9130b5d078c3ffd0edf2f3a8719f/duckdb-1.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:16952ac05bd7e7b39946695452bf450db1ebbe387e1e7178e10f593f2ea7b9a8", size = 29033392, upload-time = "2025-12-09T10:58:34.631Z" }, - { url = "https://files.pythonhosted.org/packages/64/07/cbad3d3da24af4d1add9bccb5fb390fac726ffa0c0cebd29bf5591cef334/duckdb-1.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de984cd24a6cbefdd6d4a349f7b9a46e583ca3e58ce10d8def0b20a6e5fcbe78", size = 15414567, upload-time = "2025-12-09T10:58:37.051Z" }, - { url = "https://files.pythonhosted.org/packages/c4/19/57af0cc66ba2ffb8900f567c9aec188c6ab2a7b3f2260e9c6c3c5f9b57b1/duckdb-1.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e5457dda91b67258aae30fb1a0df84183a9f6cd27abac1d5536c0d876c6dfa1", size = 13740960, upload-time = "2025-12-09T10:58:39.658Z" }, - { url = "https://files.pythonhosted.org/packages/73/dd/23152458cf5fd51e813fadda60b9b5f011517634aa4bb9301f5f3aa951d8/duckdb-1.4.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:006aca6a6d6736c441b02ff5c7600b099bb8b7f4de094b8b062137efddce42df", size = 18484312, upload-time = "2025-12-09T10:58:42.054Z" }, - { url = "https://files.pythonhosted.org/packages/1a/7b/adf3f611f11997fc429d4b00a730604b65d952417f36a10c4be6e38e064d/duckdb-1.4.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2813f4635f4d6681cc3304020374c46aca82758c6740d7edbc237fe3aae2744", size = 20495571, upload-time = "2025-12-09T10:58:44.646Z" }, - { url = "https://files.pythonhosted.org/packages/40/d5/6b7ddda7713a788ab2d622c7267ec317718f2bdc746ce1fca49b7ff0e50f/duckdb-1.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:6db124f53a3edcb32b0a896ad3519e37477f7e67bf4811cb41ab60c1ef74e4c8", size = 12335680, upload-time = "2025-12-09T10:58:46.883Z" }, - { url = "https://files.pythonhosted.org/packages/e8/28/0670135cf54525081fded9bac1254f78984e3b96a6059cd15aca262e3430/duckdb-1.4.3-cp313-cp313-win_arm64.whl", hash = "sha256:a8b0a8764e1b5dd043d168c8f749314f7a1252b5a260fa415adaa26fa3b958fd", size = 13075161, upload-time = "2025-12-09T10:58:49.47Z" }, - { url = "https://files.pythonhosted.org/packages/b6/f4/a38651e478fa41eeb8e43a0a9c0d4cd8633adea856e3ac5ac95124b0fdbf/duckdb-1.4.3-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:316711a9e852bcfe1ed6241a5f654983f67e909e290495f3562cccdf43be8180", size = 29042272, upload-time = "2025-12-09T10:58:51.826Z" }, - { url = "https://files.pythonhosted.org/packages/16/de/2cf171a66098ce5aeeb7371511bd2b3d7b73a2090603b0b9df39f8aaf814/duckdb-1.4.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9e625b2b4d52bafa1fd0ebdb0990c3961dac8bb00e30d327185de95b68202131", size = 15419343, upload-time = "2025-12-09T10:58:54.439Z" }, - { url = "https://files.pythonhosted.org/packages/35/28/6b0a7830828d4e9a37420d87e80fe6171d2869a9d3d960bf5d7c3b8c7ee4/duckdb-1.4.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:130c6760f6c573f9c9fe9aba56adba0fab48811a4871b7b8fd667318b4a3e8da", size = 13748905, upload-time = "2025-12-09T10:58:56.656Z" }, - { url = "https://files.pythonhosted.org/packages/15/4d/778628e194d63967870873b9581c8a6b4626974aa4fbe09f32708a2d3d3a/duckdb-1.4.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:20c88effaa557a11267706b01419c542fe42f893dee66e5a6daa5974ea2d4a46", size = 18487261, upload-time = "2025-12-09T10:58:58.866Z" }, - { url = "https://files.pythonhosted.org/packages/c6/5f/87e43af2e4a0135f9675449563e7c2f9b6f1fe6a2d1691c96b091f3904dd/duckdb-1.4.3-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1b35491db98ccd11d151165497c084a9d29d3dc42fc80abea2715a6c861ca43d", size = 20497138, upload-time = "2025-12-09T10:59:01.241Z" }, - { url = "https://files.pythonhosted.org/packages/94/41/abec537cc7c519121a2a83b9a6f180af8915fabb433777dc147744513e74/duckdb-1.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:23b12854032c1a58d0452e2b212afa908d4ce64171862f3792ba9a596ba7c765", size = 12836056, upload-time = "2025-12-09T10:59:03.388Z" }, - { url = "https://files.pythonhosted.org/packages/b1/5a/8af5b96ce5622b6168854f479ce846cf7fb589813dcc7d8724233c37ded3/duckdb-1.4.3-cp314-cp314-win_arm64.whl", hash = "sha256:90f241f25cffe7241bf9f376754a5845c74775e00e1c5731119dc88cd71e0cb2", size = 13527759, upload-time = "2025-12-09T10:59:05.496Z" }, -] - [[package]] name = "dulwich" version = "0.25.2" @@ -1339,249 +1029,65 @@ wheels = [ ] [[package]] -name = "dvc" -version = "3.66.1" +name = "einops" +version = "0.8.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "celery" }, - { name = "colorama" }, - { name = "configobj" }, - { name = "distro" }, - { name = "dpath" }, - { name = "dulwich" }, - { name = "dvc-data" }, - { name = "dvc-http" }, - { name = "dvc-objects" }, - { name = "dvc-render" }, - { name = "dvc-studio-client" }, - { name = "dvc-task" }, - { name = "flatten-dict" }, - { name = "flufl-lock" }, - { name = "fsspec" }, - { name = "funcy" }, - { name = "grandalf" }, - { name = "gto" }, - { name = "hydra-core" }, - { name = "iterative-telemetry" }, - { name = "kombu" }, - { name = "networkx" }, - { name = "omegaconf" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, - { name = "psutil" }, - { name = "pydot" }, - { name = "pygtrie" }, - { name = "pyparsing" }, - { name = "requests" }, - { name = "rich" }, - { name = "ruamel-yaml" }, - { name = "scmrepo" }, - { name = "shortuuid" }, - { name = "shtab" }, - { name = "tabulate" }, - { name = "tomlkit" }, - { name = "tqdm" }, - { name = "voluptuous" }, - { name = "zc-lockfile" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b6/46/134ce696e6d4e857e4378ad5dd6f84eac3e1c3b66cdada89baade9cfd1e9/dvc-3.66.1.tar.gz", hash = "sha256:ed8e07050fdf1fc222ea95afbef8540820179e42022bc068c7b343f2a1304e69", size = 674159, upload-time = "2026-01-08T15:29:38.496Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/77/850bef8d72ffb9219f0b1aac23fbc1bf7d038ee6ea666f331fa273031aa2/einops-0.8.2.tar.gz", hash = "sha256:609da665570e5e265e27283aab09e7f279ade90c4f01bcfca111f3d3e13f2827", size = 56261, upload-time = "2026-01-26T04:13:17.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/66/95726b3700988a8c08f5f1a7221bc93d7984a61ef8889ed10dd50b0dbb70/dvc-3.66.1-py3-none-any.whl", hash = "sha256:6805637cde28902ada95b33127c6a36b85133d6b0f161626eb473504605f686f", size = 469657, upload-time = "2026-01-08T15:29:36.503Z" }, -] - -[package.optional-dependencies] -ssh = [ - { name = "dvc-ssh" }, + { url = "https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl", hash = "sha256:54058201ac7087911181bfec4af6091bb59380360f069276601256a76af08193", size = 65638, upload-time = "2026-01-26T04:13:18.546Z" }, ] [[package]] -name = "dvc-data" -version = "3.18.2" +name = "embreex" +version = "4.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "attrs" }, - { name = "dictdiffer" }, - { name = "diskcache" }, - { name = "dvc-objects" }, - { name = "fsspec" }, - { name = "orjson", marker = "implementation_name == 'cpython'" }, - { name = "pygtrie" }, - { name = "sqltrie" }, - { name = "tqdm" }, + { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/7f/fa1be22d32ccf49fb605cad410182f85c744bbfc51e5759141f0a7eaad64/dvc_data-3.18.2.tar.gz", hash = "sha256:71c0bf7e62514dbad06db796a3f3aac5ccae672222b6be67029157e4efa5d359", size = 84517, upload-time = "2026-01-08T13:58:30.436Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/5b/b7c2bdc92193ff1cae5aad747c1f2ee310a685a8dbfbbb2f4f3e3f87d6ba/dvc_data-3.18.2-py3-none-any.whl", hash = "sha256:a8114b5bb909823793c63f1de7db30acc5cc7cc0e170704d99a3d9dccc0101e9", size = 79322, upload-time = "2026-01-08T13:58:29.038Z" }, + { url = "https://files.pythonhosted.org/packages/f6/04/b3413ba4f1c17f2374cc39b5b86404221aedc632c8b6cdb484697eeffcd8/embreex-4.4.0-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:3bb261a25c21d50bc7f046401e7256e59e43a500b229fb2a00b6393c61e5293d", size = 5097518, upload-time = "2026-04-22T19:46:51.379Z" }, + { url = "https://files.pythonhosted.org/packages/6d/78/8cc0960cc0f2d60d581869a66c8013e1bf1c73bf5bf9609bd8aa79e0f721/embreex-4.4.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:8e93bce7cf905365117dea2d0726d19262c88a010044d00631db6bb7dc145612", size = 13214768, upload-time = "2026-04-22T19:46:54.088Z" }, + { url = "https://files.pythonhosted.org/packages/79/b0/05a5b4d49749602b12e13d1871f8e6d1fe6db806eda75f6f57bb4f1acf6f/embreex-4.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cb0872f5bc231f465b840b122847acbaf468ac48f49bfaff127c5347ec0db94f", size = 14529899, upload-time = "2026-04-22T19:46:56.824Z" }, + { url = "https://files.pythonhosted.org/packages/b5/96/625e035f3433071c91de07e66265a261be7bb708367f785000f93d7a992a/embreex-4.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:6c092ee1adf5c48b7430c7ae3902943863745e54b4aef4327ecb3473e0a299d7", size = 13119305, upload-time = "2026-04-22T19:46:59.329Z" }, + { url = "https://files.pythonhosted.org/packages/9b/58/56b0ef72a128da86892f89f61f0c91bf60c6ea20c2ab952cb88e05c4e89b/embreex-4.4.0-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:096cffa6be78966b0214b26f09fc22cb5ebcfbd4fe9fdc27caf6400869058a51", size = 5094712, upload-time = "2026-04-22T19:47:02.112Z" }, + { url = "https://files.pythonhosted.org/packages/36/d2/9bbde8d9d520c2a7bcad892631165b9676d9dcbde381f25bfda06d0f6e42/embreex-4.4.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:078bae4dcebb2a64c8dde6b3c178f258f966c4514e265608620033a6c907e21b", size = 13212105, upload-time = "2026-04-22T19:47:04.511Z" }, + { url = "https://files.pythonhosted.org/packages/03/5d/3e5ca5dea1c2c5b4604f3bedb67ea4beaa465398d9c04d8124ca3d657b05/embreex-4.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd305875e2cd7c51004a423fe7da9881fa266fa4a50e61dd546978e10f020e66", size = 14486730, upload-time = "2026-04-22T19:47:07.229Z" }, + { url = "https://files.pythonhosted.org/packages/45/00/26741306e557129d398744601cd9bca4069d52cebe146ba99e535f9f2c65/embreex-4.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:433de9063843804d70bb3c1680619bb28bc6403b79d3d94560ec9acc3df96eda", size = 13117246, upload-time = "2026-04-22T19:47:10.08Z" }, + { url = "https://files.pythonhosted.org/packages/62/70/4ed53f33ab0f0dca32f8017b903f5dcad25df32f7068854e529902aa97da/embreex-4.4.0-cp314-cp314-macosx_13_0_arm64.whl", hash = "sha256:1ef2650f1ced083d433d46389a187fd57f7bf795106ff79a2671e95f2e6a4c4c", size = 5095722, upload-time = "2026-04-22T19:47:12.774Z" }, + { url = "https://files.pythonhosted.org/packages/f5/ac/638a6b4a6cb67125a3c2676a108fb73d75e67b3ce3813f25b6056d0b77cd/embreex-4.4.0-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:ab3c50ecd3aa6c39491928d975b00c9f5eeaa1b39b74bab87170c17e2df1bfde", size = 13212439, upload-time = "2026-04-22T19:47:15.009Z" }, + { url = "https://files.pythonhosted.org/packages/39/1c/567194e9f5bdbb5099144dae3202452821319ff348e328b50c0fbacc3828/embreex-4.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b0bd41b10dc2f1ad4995faef08d924d5f33a5d47afb97ba5801c820f305db6d", size = 14480771, upload-time = "2026-04-22T19:47:17.681Z" }, + { url = "https://files.pythonhosted.org/packages/d1/8d/a46fb6ca4cc898e8d06449a4b46a8c22a28971f1e6d9bb6c99459bbb96d1/embreex-4.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:80f938291832ab11dc7a604d609bce2587d574b4fe862be91d117562629f1b94", size = 13373573, upload-time = "2026-04-22T19:47:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/d2/71/4e21eff598840060229cc502034737d04d2a42dee8118c7d5acf6ee6f28a/embreex-4.4.0-cp314-cp314t-macosx_13_0_arm64.whl", hash = "sha256:670470a53fdde1aeb52c4d8db600f17bc0dc7c34dc6f90233909db9c6fe1e88a", size = 5102482, upload-time = "2026-04-22T19:47:23.67Z" }, + { url = "https://files.pythonhosted.org/packages/61/5e/da7c1448c209f406a5b43a8feb07489e8652a64c48450b5642d3f34cf9e7/embreex-4.4.0-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:ea332cfe60f3b242ecb557ef7b5fcbffec5edd0f3127241bed343d090ac735e2", size = 13218445, upload-time = "2026-04-22T19:47:25.847Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d4/8cb8a41b25138999a98286ae1562e5903c7579ec71becc05bfa1c10d571f/embreex-4.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1e3481b76df80f23128173486ac0efe55e9199fc311bc74707452b4f19951eff", size = 14589303, upload-time = "2026-04-22T19:47:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/93/3d/8b393b35016909143ecac7bf7bf418f79236e1f83faf3867b5c5cb50c97f/embreex-4.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:a2fedc756a36729da6803425398aa4987b27d1d89e9fad403d8ef371fad5ca01", size = 13389585, upload-time = "2026-04-22T19:47:31.398Z" }, ] [[package]] -name = "dvc-http" -version = "2.32.0" +name = "environs" +version = "15.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiohttp-retry" }, - { name = "fsspec", extra = ["http"] }, + { name = "marshmallow" }, + { name = "python-dotenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/e6/4fb38ab911a9d90fbe2c7759c430814fe2253760304a9de0d3ebd6e27c20/dvc-http-2.32.0.tar.gz", hash = "sha256:f714f8435634aab943c625f659ddac1188c6ddaf3ff161b39715b83ff39637fc", size = 14603, upload-time = "2023-12-13T10:53:16.393Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/f4/0273d36ab287a00866b69d4008e2ed2e479e4bc1eef4f8be2708f30ad15f/environs-15.0.1.tar.gz", hash = "sha256:638106bfb5d8c9a13ee51c23a9f2416baf9a748c8e537fec771102927cd02aa8", size = 36385, upload-time = "2026-04-06T14:15:12.676Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/89/04/2fe178c037c69cce0c8e9863f90512ca46aa2c763d67bc0e0e0fdac146ae/dvc_http-2.32.0-py3-none-any.whl", hash = "sha256:1bfd57a9eae3cbfa1db564d90d87003841921a644ab35f3f7735c641cc93d72e", size = 12597, upload-time = "2023-12-13T10:53:14.925Z" }, + { url = "https://files.pythonhosted.org/packages/49/fb/11e461eb609792f9f439398eb5f400fb4130ff2b9b59e0ceb346bb830a17/environs-15.0.1-py3-none-any.whl", hash = "sha256:a6aeb3e18d5649a4e74f62984f0d84ec869269cff588a43685272c72b5b8979b", size = 17357, upload-time = "2026-04-06T14:15:11.118Z" }, ] [[package]] -name = "dvc-objects" -version = "5.2.0" +name = "everett" +version = "3.1.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/3a/90c765395fe282132aac3fb4fb8ba2839437c459125a38af0c4865b7b963/dvc_objects-5.2.0.tar.gz", hash = "sha256:969bc19847b76604327631ce0ad0f287efa549d87bac028b5c2eb17a0d610984", size = 43459, upload-time = "2025-12-22T06:57:07.388Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/b4/c7c61c0b243c4277d19299cd1bccee8b2b57d04073c0d8625799fe47f5c9/everett-3.1.0.tar.gz", hash = "sha256:46175da5bcb06c193aa129e59714bca981344ff067c3a8bc2e625bc0b3dc01f6", size = 73796, upload-time = "2022-10-26T15:15:00.651Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/b9/0df6a5342d59ad913dff58642c703d81eab6dfc87afeea1629e1dc4c1035/dvc_objects-5.2.0-py3-none-any.whl", hash = "sha256:e9e31e4763787260ac7c2b5c4f46134915d00d1fe6a2e2b4a26d47f9aa31afce", size = 33739, upload-time = "2025-12-22T06:57:06.062Z" }, + { url = "https://files.pythonhosted.org/packages/91/9a/d882fd7562208456236fb2e62b762bf16fbc9ecde842bb871f676ca0f7e1/everett-3.1.0-py2.py3-none-any.whl", hash = "sha256:db13891b849e45e54faea93ee79881d12458c5378f5b9b7f806eeff03ce1de3c", size = 35702, upload-time = "2022-10-26T15:14:58.698Z" }, ] -[[package]] -name = "dvc-render" -version = "1.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/15/605312dbdc0931547987ee25a9a3f6fcabf48ca1436039abcd524156b8e2/dvc-render-1.0.2.tar.gz", hash = "sha256:40d1cd81760daf34b48fa8362b5002fcbe415e3cdbcf42369b6347d01497ffc0", size = 37772, upload-time = "2024-04-10T14:29:01.438Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/e4/d79fe332346a47b5468751292c0e45e496e10441e548ef447df1b6adb018/dvc_render-1.0.2-py3-none-any.whl", hash = "sha256:7e3e3cec1200fda41a99984190f14871f3cb878db7f94c853305056f69614ddb", size = 22070, upload-time = "2024-04-10T14:28:58.351Z" }, -] - -[[package]] -name = "dvc-ssh" -version = "4.2.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dvc" }, - { name = "sshfs", extra = ["bcrypt"] }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/a8/cbeb99c682425f2be8816825dc6159951b0bf2011b1f6aa46ac11d4b10f4/dvc_ssh-4.2.2.tar.gz", hash = "sha256:4fac932c5f22bd9444d87d4e7b3ffd6c09cc8e56d98eb3c6d4b44301d3535017", size = 17585, upload-time = "2025-10-13T08:45:38.441Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/8c/2781a23c8c83f9052935ac1e2a82d321a8861e008546207299975b97bb5c/dvc_ssh-4.2.2-py3-none-any.whl", hash = "sha256:c8078b784518b29e63014f151ec21009f72de56216081b570a09fcb8aeac91dd", size = 15763, upload-time = "2025-10-13T08:45:36.548Z" }, -] - -[[package]] -name = "dvc-studio-client" -version = "0.22.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dulwich" }, - { name = "requests" }, - { name = "voluptuous" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f4/52/f00bc978bfa313929221df1b6a1d82256b1c2727c55594dbbf9520f0adfd/dvc_studio_client-0.22.0.tar.gz", hash = "sha256:45d554a0386dd18bdfe17968e93f9b075563c888088b51bfa58713f64ed58ac8", size = 29432, upload-time = "2025-07-28T16:23:52.699Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/8b/42cb2c96555cf63b5c57c3b21f3901bb30a9ae963ecba86a8265b61eee7d/dvc_studio_client-0.22.0-py3-none-any.whl", hash = "sha256:99cb8874a1e5fc05de126a36a82b421f7af5c36d23c22024284733fc4d98029b", size = 16432, upload-time = "2025-07-28T16:23:51.256Z" }, -] - -[[package]] -name = "dvc-task" -version = "0.40.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "celery" }, - { name = "funcy" }, - { name = "kombu" }, - { name = "pywin32", marker = "sys_platform == 'win32'" }, - { name = "shortuuid" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/ef/da712c4d9c7d6cacac27d7b2779e6a97c3381ef2c963c33719d39113b6a3/dvc_task-0.40.2.tar.gz", hash = "sha256:909af541bf5fde83439da56c4c0ebac592af178a59b702708fadaacfd6e7b704", size = 36147, upload-time = "2024-10-08T12:47:31.915Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/bf/f23e8eff38556d479ab421f8b9ac9a9a0b44f8400098c934dce0607da1de/dvc_task-0.40.2-py3-none-any.whl", hash = "sha256:3891b94cf9d349072ee32ce47217b73530b1905e6dd5a1e378bd74afc8b4c030", size = 21392, upload-time = "2024-10-08T12:47:30.317Z" }, -] - -[[package]] -name = "einops" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/81/df4fbe24dff8ba3934af99044188e20a98ed441ad17a274539b74e82e126/einops-0.8.1.tar.gz", hash = "sha256:de5d960a7a761225532e0f1959e5315ebeafc0cd43394732f103ca44b9837e84", size = 54805, upload-time = "2025-02-09T03:17:00.434Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/87/62/9773de14fe6c45c23649e98b83231fffd7b9892b6cf863251dc2afa73643/einops-0.8.1-py3-none-any.whl", hash = "sha256:919387eb55330f5757c6bea9165c5ff5cfe63a642682ea788a6d472576d81737", size = 64359, upload-time = "2025-02-09T03:17:01.998Z" }, -] - -[[package]] -name = "embreex" -version = "2.17.7.post7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/01/ed299e72f62731be03c383ee4e13191d28afd7e73a8a30012e5b12c61916/embreex-2.17.7.post7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b10cddba4cc294122e5a76c6df8b042fcb291b352220ecc72b2d9559fc45c48b", size = 10738000, upload-time = "2025-10-22T20:07:29.599Z" }, - { url = "https://files.pythonhosted.org/packages/75/c9/8f7ee075d31f51c9e2c50a1a380cf4cbb5c1d56c55a3d26dc098cf9bef5a/embreex-2.17.7.post7-cp312-cp312-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e069c7140ab8d4a3712fcc902dafda31e36c5aaa5fdc3fe5ba0f0e613cbe1876", size = 17235388, upload-time = "2025-10-22T20:07:32.121Z" }, - { url = "https://files.pythonhosted.org/packages/bb/47/483c92bd50a334b81d94f7a6a224080be0e20705a1d76bfb75935ee1ce8c/embreex-2.17.7.post7-cp312-cp312-win_amd64.whl", hash = "sha256:239e34700d821a55365565bcb2c9275237bc32984d0e518e04e106278978911e", size = 13466148, upload-time = "2025-10-22T20:07:34.334Z" }, - { url = "https://files.pythonhosted.org/packages/99/1a/e6d80ab0104ba947e1e5a0c5251021a4bf374cfe3b0d88e2be62b150170d/embreex-2.17.7.post7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:377888d4f61b6d523e91b835aea3bd74193bd2b5fee9212adfe5fa0d5b80671b", size = 10734165, upload-time = "2025-10-22T20:07:36.707Z" }, - { url = "https://files.pythonhosted.org/packages/59/c7/410b62268fa98d9f0f2f5ab14b6e718e308a5f30dc4b9c2dcb0223d98ac8/embreex-2.17.7.post7-cp313-cp313-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c947025954a43a17a51d17be5ddbcfd1881ec5d0ea443bdf0ac4ac67e8e15e15", size = 17225042, upload-time = "2025-10-22T20:07:38.833Z" }, - { url = "https://files.pythonhosted.org/packages/c8/17/cf4bfc4f30cdaa9b64670e223d55949aae4f3d0005a8ba6559c7327477ac/embreex-2.17.7.post7-cp313-cp313-win_amd64.whl", hash = "sha256:c0f125c0517a4200a3f5d1979920704b924ec1ff6d6d0d826238216e40bf65fe", size = 13463316, upload-time = "2025-10-22T20:07:42.26Z" }, - { url = "https://files.pythonhosted.org/packages/47/30/dd0be2d0fec7ce0d032e8ebdfe6c1b3c7a70fb44821d32ff44ce5d0a389e/embreex-2.17.7.post7-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a8f8ba00c1270976f57bb608be623c64ec46d1f60a9b04dbdee2acc2b82b6224", size = 10734492, upload-time = "2025-10-22T20:07:45.211Z" }, - { url = "https://files.pythonhosted.org/packages/a5/be/ded6ef0197a112ec47a58550ad9471f879c2856169ebd3986d3e4ce1ec4f/embreex-2.17.7.post7-cp314-cp314-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a34feb5c30bebddf71a94c5b529646542e4209c0879c2644615744f1f407a60f", size = 17216580, upload-time = "2025-10-22T20:07:47.357Z" }, - { url = "https://files.pythonhosted.org/packages/bb/29/c814b7696fed98e08d524c856d92c36356e32ba80cb5edf419f2031025a4/embreex-2.17.7.post7-cp314-cp314-win_amd64.whl", hash = "sha256:13b2ecbaeb016a64d278835960223e78fd9266f63f74f1cbc4d427335994c4b5", size = 13755202, upload-time = "2025-10-22T20:07:49.909Z" }, - { url = "https://files.pythonhosted.org/packages/32/2c/34bdcd616daeb1a7066d28af419ef5728bd28b74c1b4c5658c4945809bdf/embreex-2.17.7.post7-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2341a479cb996e2e4e36cabc499c61d81d8e67acc8f2b3c1eb1628ccacde88a1", size = 10742295, upload-time = "2025-10-22T20:07:51.997Z" }, - { url = "https://files.pythonhosted.org/packages/8c/5c/940683357ad9aa52ecb0fc040e8f4422bcd2fd7596654f5ccfe7f2c43b44/embreex-2.17.7.post7-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f943bb39ea6494e20632ff02613c7cff730a8349ceb572ae4742b2201f2de2f", size = 17364382, upload-time = "2025-10-22T20:07:54.373Z" }, - { url = "https://files.pythonhosted.org/packages/f4/c3/d6d020ecb8701aba43fe210d038459dfc8e1e3d3baf9365163362f50c0ec/embreex-2.17.7.post7-cp314-cp314t-win_amd64.whl", hash = "sha256:29c95e5f6487db6a4f71fcce80d8b1f318e454b936e6318babcd478ae68e0acf", size = 13771100, upload-time = "2025-10-22T20:07:58.099Z" }, -] - -[[package]] -name = "entrypoints" -version = "0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/8d/a7121ffe5f402dc015277d2d31eb82d2187334503a011c18f2e78ecbb9b2/entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", size = 13974, upload-time = "2022-02-02T21:30:28.172Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/a8/365059bbcd4572cbc41de17fd5b682be5868b218c3c5479071865cab9078/entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f", size = 5294, upload-time = "2022-02-02T21:30:26.024Z" }, -] - -[[package]] -name = "environs" -version = "14.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "marshmallow" }, - { name = "python-dotenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/aa/75/06801d5beeb398ed3903167af9376bb81c4ac41c44a53d45193065ebb1a8/environs-14.5.0.tar.gz", hash = "sha256:f7b8f6fcf3301bc674bc9c03e39b5986d116126ffb96764efd34c339ed9464ee", size = 35426, upload-time = "2025-11-02T21:30:36.78Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/f3/6961beb9a1e77d01dee1dd48f00fb3064429c8abcfa26aa863eb7cb2b6dd/environs-14.5.0-py3-none-any.whl", hash = "sha256:1abd3e3a5721fb09797438d6c902bc2f35d4580dfaffe68b8ee588b67b504e13", size = 17202, upload-time = "2025-11-02T21:30:35.186Z" }, -] - -[[package]] -name = "equinox" -version = "0.13.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jax" }, - { name = "jaxtyping" }, - { name = "typing-extensions" }, - { name = "wadler-lindig" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ae/17/96a3b61a80c63c75974bd84318cee2818a23d60628e77fb6ed00eb623a69/equinox-0.13.2.tar.gz", hash = "sha256:509ad744ff99b7c684d45230d6890f9e78eac1a556d7a06db1eff664a3cac74f", size = 139386, upload-time = "2025-10-09T10:15:39.595Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ce/c3bc53bdda6edb050859939a8e91e206123f96f50906e7ba7c027c6c535f/equinox-0.13.2-py3-none-any.whl", hash = "sha256:bc1ee687e4841945d8b776664403839639a05e2f2c02c1da353ff3386e0e43b0", size = 179235, upload-time = "2025-10-09T10:15:37.991Z" }, -] - -[[package]] -name = "everett" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c0/b4/c7c61c0b243c4277d19299cd1bccee8b2b57d04073c0d8625799fe47f5c9/everett-3.1.0.tar.gz", hash = "sha256:46175da5bcb06c193aa129e59714bca981344ff067c3a8bc2e625bc0b3dc01f6", size = 73796, upload-time = "2022-10-26T15:15:00.651Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/9a/d882fd7562208456236fb2e62b762bf16fbc9ecde842bb871f676ca0f7e1/everett-3.1.0-py2.py3-none-any.whl", hash = "sha256:db13891b849e45e54faea93ee79881d12458c5378f5b9b7f806eeff03ce1de3c", size = 35702, upload-time = "2022-10-26T15:14:58.698Z" }, -] - -[package.optional-dependencies] -ini = [ - { name = "configobj" }, -] - -[[package]] -name = "execnet" -version = "2.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bf/89/780e11f9588d9e7128a3f87788354c7946a9cbb1401ad38a48c4db9a4f07/execnet-2.1.2.tar.gz", hash = "sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd", size = 166622, upload-time = "2025-11-12T09:56:37.75Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/84/02fc1827e8cdded4aa65baef11296a9bbe595c474f0d6d758af082d849fd/execnet-2.1.2-py3-none-any.whl", hash = "sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec", size = 40708, upload-time = "2025-11-12T09:56:36.333Z" }, +[package.optional-dependencies] +ini = [ + { name = "configobj" }, ] [[package]] @@ -1594,247 +1100,103 @@ wheels = [ ] [[package]] -name = "fastjsonschema" -version = "2.21.2" +name = "fastapi" +version = "0.136.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, ] - -[[package]] -name = "fastrlock" -version = "0.8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/73/b1/1c3d635d955f2b4bf34d45abf8f35492e04dbd7804e94ce65d9f928ef3ec/fastrlock-0.8.3.tar.gz", hash = "sha256:4af6734d92eaa3ab4373e6c9a1dd0d5ad1304e172b1521733c6c3b3d73c8fa5d", size = 79327, upload-time = "2024-12-17T11:03:39.638Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/2d/ff8d91d7b564d464629a0fd50a4489c97fcb836ac230bf3a7269232a9b1f/fastapi-0.136.3.tar.gz", hash = "sha256:e487fae93ad408e6f47641ee4dfe389864fd7bec92e547ea8498fc13f43e83ab", size = 396410, upload-time = "2026-05-23T18:53:15.192Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/df/56270f2e10c1428855c990e7a7e5baafa9e1262b8e789200bd1d047eb501/fastrlock-0.8.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:8cb2cf04352ea8575d496f31b3b88c42c7976e8e58cdd7d1550dfba80ca039da", size = 55727, upload-time = "2024-12-17T11:02:17.26Z" }, - { url = "https://files.pythonhosted.org/packages/57/21/ea1511b0ef0d5457efca3bf1823effb9c5cad4fc9dca86ce08e4d65330ce/fastrlock-0.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:85a49a1f1e020097d087e1963e42cea6f307897d5ebe2cb6daf4af47ffdd3eed", size = 52201, upload-time = "2024-12-17T11:02:19.512Z" }, - { url = "https://files.pythonhosted.org/packages/80/07/cdecb7aa976f34328372f1c4efd6c9dc1b039b3cc8d3f38787d640009a25/fastrlock-0.8.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5f13ec08f1adb1aa916c384b05ecb7dbebb8df9ea81abd045f60941c6283a670", size = 53924, upload-time = "2024-12-17T11:02:20.85Z" }, - { url = "https://files.pythonhosted.org/packages/88/6d/59c497f8db9a125066dd3a7442fab6aecbe90d6fec344c54645eaf311666/fastrlock-0.8.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0ea4e53a04980d646def0f5e4b5e8bd8c7884288464acab0b37ca0c65c482bfe", size = 52140, upload-time = "2024-12-17T11:02:22.263Z" }, - { url = "https://files.pythonhosted.org/packages/62/04/9138943c2ee803d62a48a3c17b69de2f6fa27677a6896c300369e839a550/fastrlock-0.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:38340f6635bd4ee2a4fb02a3a725759fe921f2ca846cb9ca44531ba739cc17b4", size = 53261, upload-time = "2024-12-17T11:02:24.418Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4b/db35a52589764c7745a613b6943bbd018f128d42177ab92ee7dde88444f6/fastrlock-0.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:da06d43e1625e2ffddd303edcd6d2cd068e1c486f5fd0102b3f079c44eb13e2c", size = 31235, upload-time = "2024-12-17T11:02:25.708Z" }, - { url = "https://files.pythonhosted.org/packages/92/74/7b13d836c3f221cff69d6f418f46c2a30c4b1fe09a8ce7db02eecb593185/fastrlock-0.8.3-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:5264088185ca8e6bc83181dff521eee94d078c269c7d557cc8d9ed5952b7be45", size = 54157, upload-time = "2024-12-17T11:02:29.196Z" }, - { url = "https://files.pythonhosted.org/packages/06/77/f06a907f9a07d26d0cca24a4385944cfe70d549a2c9f1c3e3217332f4f12/fastrlock-0.8.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a98ba46b3e14927550c4baa36b752d0d2f7387b8534864a8767f83cce75c160", size = 50954, upload-time = "2024-12-17T11:02:32.12Z" }, - { url = "https://files.pythonhosted.org/packages/f9/4e/94480fb3fd93991dd6f4e658b77698edc343f57caa2870d77b38c89c2e3b/fastrlock-0.8.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbdea6deeccea1917c6017d353987231c4e46c93d5338ca3e66d6cd88fbce259", size = 52535, upload-time = "2024-12-17T11:02:33.402Z" }, - { url = "https://files.pythonhosted.org/packages/7d/a7/ee82bb55b6c0ca30286dac1e19ee9417a17d2d1de3b13bb0f20cefb86086/fastrlock-0.8.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c6e5bfecbc0d72ff07e43fed81671747914d6794e0926700677ed26d894d4f4f", size = 50942, upload-time = "2024-12-17T11:02:34.688Z" }, - { url = "https://files.pythonhosted.org/packages/63/1d/d4b7782ef59e57dd9dde69468cc245adafc3674281905e42fa98aac30a79/fastrlock-0.8.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:2a83d558470c520ed21462d304e77a12639859b205759221c8144dd2896b958a", size = 52044, upload-time = "2024-12-17T11:02:36.613Z" }, - { url = "https://files.pythonhosted.org/packages/28/a3/2ad0a0a69662fd4cf556ab8074f0de978ee9b56bff6ddb4e656df4aa9e8e/fastrlock-0.8.3-cp313-cp313-win_amd64.whl", hash = "sha256:8d1d6a28291b4ace2a66bd7b49a9ed9c762467617febdd9ab356b867ed901af8", size = 30472, upload-time = "2024-12-17T11:02:37.983Z" }, + { url = "https://files.pythonhosted.org/packages/e0/82/45359b62a067409bd929ae8a56b8ed13e5a8c8a61194b3c236920999ab83/fastapi-0.136.3-py3-none-any.whl", hash = "sha256:3d2a69bdf04b7e9f3afa292c3bc7a98816bbfafa10bc9b45f3f3700d2f761620", size = 117481, upload-time = "2026-05-23T18:53:16.924Z" }, ] [[package]] name = "felupe" -version = "9.5.0" +version = "10.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "scipy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/b9/1ac724449abe8f43165dd26c20d981e0a2ccfe0e6f5c4c1a72c2f32cf5cd/felupe-9.5.0.tar.gz", hash = "sha256:fa0f5ee235c545024e1f8be5db42a4689fe61a26eeef06a7289d1ae4be2a5283", size = 257327, upload-time = "2025-11-05T10:33:35.815Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/ad/a0e78479dd5652b18832e8557a06fedf373a0a0c72bbb2e9614e63199418/felupe-10.1.0.tar.gz", hash = "sha256:cf179e45a960ca9e79f18551a4745c37496733abed586df5d8c433bc97f4571c", size = 262217, upload-time = "2026-02-26T17:43:05.706Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/74/31/a2ad5b1616c44e9f61aa9ea36cc4a803b1e5ef25857cd66c5f669209a8d9/felupe-9.5.0-py3-none-any.whl", hash = "sha256:a5d6a7888bd8a8bcf443f520ce5c9b66cede1b17410c0655725bfdc8ac097755", size = 373657, upload-time = "2025-11-05T10:33:34.182Z" }, + { url = "https://files.pythonhosted.org/packages/f4/59/30c0464719818c8f200fd7c2c48d3bca0c6013067474cf6c0270750261b9/felupe-10.1.0-py3-none-any.whl", hash = "sha256:96fef93d29ccaf7a83f4a2b9f84cf33c89435e3a58a2ccdec00c4bd8bd649e38", size = 379200, upload-time = "2026-02-26T17:43:04.464Z" }, ] [[package]] name = "fieldz" -version = "0.1.3" +version = "0.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/c2/9d35a747f439051bff41511178b0b527f1466c7fd4b5a5f7357c136e82bc/fieldz-0.1.3.tar.gz", hash = "sha256:bc21013b2bd5f8a4a782ecef440343ff059fc0a4a2033ae4d616311675260585", size = 18018, upload-time = "2025-09-26T20:42:24.67Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/46/7a8d1db959eabd5d3e52bd3c000a8b132184b7651cbd5481c4cbf31ff65d/fieldz-0.2.0.tar.gz", hash = "sha256:e11215188cad5c5371113d2b7707155960efd0d48500b6bf675648bc3f6fc8d6", size = 18222, upload-time = "2026-02-24T19:26:02.251Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/a0/5db990f52226aa4e01e268f285fa56ddf233b3b27b993b4ecc751cf2216f/fieldz-0.1.3-py3-none-any.whl", hash = "sha256:f975fc6f250958966e39504f89bf09bad41479b4c5e0b06b36d13fd92fbac792", size = 18227, upload-time = "2025-09-26T20:42:22.894Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9d/9034acaf3d80e85deb3d49876cb734479327b9cf89a918815ef67cb6b36c/fieldz-0.2.0-py3-none-any.whl", hash = "sha256:43b5be702816df39f55d08ae392eaabe58d3c69d2e4b61a853252cb2da41931f", size = 17946, upload-time = "2026-02-24T19:26:00.931Z" }, ] [[package]] name = "filelock" -version = "3.20.3" +version = "3.29.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/65/ce7f1b70157833bf3cb851b556a37d4547ceafc158aa9b34b36782f23696/filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1", size = 19485, upload-time = "2026-01-09T17:55:05.421Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" }, -] - -[[package]] -name = "flatten-dict" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/89/c6/5fe21639369f2ea609c964e20870b5c6c98a134ef12af848a7776ddbabe3/flatten-dict-0.4.2.tar.gz", hash = "sha256:506a96b6e6f805b81ae46a0f9f31290beb5fa79ded9d80dbe1b7fa236ab43076", size = 10362, upload-time = "2021-08-08T09:56:51.455Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl", hash = "sha256:7e245b20c4c718981212210eec4284a330c9f713e632e98765560e05421e48ad", size = 9656, upload-time = "2021-08-08T09:56:54.313Z" }, -] - -[[package]] -name = "flufl-lock" -version = "9.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "atpublic" }, - { name = "psutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/23/90/242e0362ae44826309dde73311312b7cb1a8017487221685ab8af4519ae5/flufl_lock-9.0.0.tar.gz", hash = "sha256:270a46e754af3937735cdd4f8a8f43a2dc4e5c40a24fdf972f5dc6db0862e8bb", size = 34151, upload-time = "2025-11-29T04:35:35.205Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/04/ada6c2e9dd03fb8bc0b81fab653907082307abfd0b9792eda2b3ae0232b0/flufl_lock-9.0.0-py3-none-any.whl", hash = "sha256:4c3d1d80ef0fa0039f3a6581a144fa7859499fddda9a7fdf8cd964cdec137eea", size = 11126, upload-time = "2025-11-29T04:35:34.071Z" }, + { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" }, ] [[package]] name = "fonttools" -version = "4.61.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, - { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, - { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, - { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, - { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, - { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, - { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, - { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, - { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, - { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, - { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, - { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, - { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, - { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, - { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, - { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, - { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, - { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, - { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, - { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, - { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, - { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, - { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, - { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, - { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, - { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, - { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, - { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, - { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, - { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, - { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, - { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, -] - -[[package]] -name = "frozenlist" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, - { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, - { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, - { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload-time = "2025-10-06T05:36:09.801Z" }, - { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload-time = "2025-10-06T05:36:11.394Z" }, - { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload-time = "2025-10-06T05:36:12.598Z" }, - { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload-time = "2025-10-06T05:36:14.065Z" }, - { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload-time = "2025-10-06T05:36:15.39Z" }, - { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload-time = "2025-10-06T05:36:16.558Z" }, - { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload-time = "2025-10-06T05:36:17.821Z" }, - { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload-time = "2025-10-06T05:36:19.046Z" }, - { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload-time = "2025-10-06T05:36:20.763Z" }, - { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload-time = "2025-10-06T05:36:22.129Z" }, - { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload-time = "2025-10-06T05:36:23.661Z" }, - { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload-time = "2025-10-06T05:36:24.958Z" }, - { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload-time = "2025-10-06T05:36:26.333Z" }, - { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload-time = "2025-10-06T05:36:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload-time = "2025-10-06T05:36:28.855Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload-time = "2025-10-06T05:36:29.877Z" }, - { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391, upload-time = "2025-10-06T05:36:31.301Z" }, - { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048, upload-time = "2025-10-06T05:36:32.531Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549, upload-time = "2025-10-06T05:36:33.706Z" }, - { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833, upload-time = "2025-10-06T05:36:34.947Z" }, - { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363, upload-time = "2025-10-06T05:36:36.534Z" }, - { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314, upload-time = "2025-10-06T05:36:38.582Z" }, - { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365, upload-time = "2025-10-06T05:36:40.152Z" }, - { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763, upload-time = "2025-10-06T05:36:41.355Z" }, - { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110, upload-time = "2025-10-06T05:36:42.716Z" }, - { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717, upload-time = "2025-10-06T05:36:44.251Z" }, - { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628, upload-time = "2025-10-06T05:36:45.423Z" }, - { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882, upload-time = "2025-10-06T05:36:46.796Z" }, - { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676, upload-time = "2025-10-06T05:36:47.8Z" }, - { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235, upload-time = "2025-10-06T05:36:48.78Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742, upload-time = "2025-10-06T05:36:49.837Z" }, - { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725, upload-time = "2025-10-06T05:36:50.851Z" }, - { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533, upload-time = "2025-10-06T05:36:51.898Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506, upload-time = "2025-10-06T05:36:53.101Z" }, - { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161, upload-time = "2025-10-06T05:36:54.309Z" }, - { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676, upload-time = "2025-10-06T05:36:55.566Z" }, - { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638, upload-time = "2025-10-06T05:36:56.758Z" }, - { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067, upload-time = "2025-10-06T05:36:57.965Z" }, - { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101, upload-time = "2025-10-06T05:36:59.237Z" }, - { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901, upload-time = "2025-10-06T05:37:00.811Z" }, - { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395, upload-time = "2025-10-06T05:37:02.115Z" }, - { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659, upload-time = "2025-10-06T05:37:03.711Z" }, - { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492, upload-time = "2025-10-06T05:37:04.915Z" }, - { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034, upload-time = "2025-10-06T05:37:06.343Z" }, - { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749, upload-time = "2025-10-06T05:37:07.431Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c8/85da824b7e7b9b6e7f7705b2ecaf9591ba6f79c1177f324c2735e41d36a2/frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0", size = 86127, upload-time = "2025-10-06T05:37:08.438Z" }, - { url = "https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f", size = 49698, upload-time = "2025-10-06T05:37:09.48Z" }, - { url = "https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c", size = 49749, upload-time = "2025-10-06T05:37:10.569Z" }, - { url = "https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2", size = 231298, upload-time = "2025-10-06T05:37:11.993Z" }, - { url = "https://files.pythonhosted.org/packages/3a/3b/d9b1e0b0eed36e70477ffb8360c49c85c8ca8ef9700a4e6711f39a6e8b45/frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8", size = 232015, upload-time = "2025-10-06T05:37:13.194Z" }, - { url = "https://files.pythonhosted.org/packages/dc/94/be719d2766c1138148564a3960fc2c06eb688da592bdc25adcf856101be7/frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686", size = 225038, upload-time = "2025-10-06T05:37:14.577Z" }, - { url = "https://files.pythonhosted.org/packages/e4/09/6712b6c5465f083f52f50cf74167b92d4ea2f50e46a9eea0523d658454ae/frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e", size = 240130, upload-time = "2025-10-06T05:37:15.781Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d4/cd065cdcf21550b54f3ce6a22e143ac9e4836ca42a0de1022da8498eac89/frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a", size = 242845, upload-time = "2025-10-06T05:37:17.037Z" }, - { url = "https://files.pythonhosted.org/packages/62/c3/f57a5c8c70cd1ead3d5d5f776f89d33110b1addae0ab010ad774d9a44fb9/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128", size = 229131, upload-time = "2025-10-06T05:37:18.221Z" }, - { url = "https://files.pythonhosted.org/packages/6c/52/232476fe9cb64f0742f3fde2b7d26c1dac18b6d62071c74d4ded55e0ef94/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f", size = 240542, upload-time = "2025-10-06T05:37:19.771Z" }, - { url = "https://files.pythonhosted.org/packages/5f/85/07bf3f5d0fb5414aee5f47d33c6f5c77bfe49aac680bfece33d4fdf6a246/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7", size = 237308, upload-time = "2025-10-06T05:37:20.969Z" }, - { url = "https://files.pythonhosted.org/packages/11/99/ae3a33d5befd41ac0ca2cc7fd3aa707c9c324de2e89db0e0f45db9a64c26/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30", size = 238210, upload-time = "2025-10-06T05:37:22.252Z" }, - { url = "https://files.pythonhosted.org/packages/b2/60/b1d2da22f4970e7a155f0adde9b1435712ece01b3cd45ba63702aea33938/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7", size = 231972, upload-time = "2025-10-06T05:37:23.5Z" }, - { url = "https://files.pythonhosted.org/packages/3f/ab/945b2f32de889993b9c9133216c068b7fcf257d8595a0ac420ac8677cab0/frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806", size = 40536, upload-time = "2025-10-06T05:37:25.581Z" }, - { url = "https://files.pythonhosted.org/packages/59/ad/9caa9b9c836d9ad6f067157a531ac48b7d36499f5036d4141ce78c230b1b/frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0", size = 44330, upload-time = "2025-10-06T05:37:26.928Z" }, - { url = "https://files.pythonhosted.org/packages/82/13/e6950121764f2676f43534c555249f57030150260aee9dcf7d64efda11dd/frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b", size = 40627, upload-time = "2025-10-06T05:37:28.075Z" }, - { url = "https://files.pythonhosted.org/packages/c0/c7/43200656ecc4e02d3f8bc248df68256cd9572b3f0017f0a0c4e93440ae23/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d", size = 89238, upload-time = "2025-10-06T05:37:29.373Z" }, - { url = "https://files.pythonhosted.org/packages/d1/29/55c5f0689b9c0fb765055629f472c0de484dcaf0acee2f7707266ae3583c/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed", size = 50738, upload-time = "2025-10-06T05:37:30.792Z" }, - { url = "https://files.pythonhosted.org/packages/ba/7d/b7282a445956506fa11da8c2db7d276adcbf2b17d8bb8407a47685263f90/frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930", size = 51739, upload-time = "2025-10-06T05:37:32.127Z" }, - { url = "https://files.pythonhosted.org/packages/62/1c/3d8622e60d0b767a5510d1d3cf21065b9db874696a51ea6d7a43180a259c/frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c", size = 284186, upload-time = "2025-10-06T05:37:33.21Z" }, - { url = "https://files.pythonhosted.org/packages/2d/14/aa36d5f85a89679a85a1d44cd7a6657e0b1c75f61e7cad987b203d2daca8/frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24", size = 292196, upload-time = "2025-10-06T05:37:36.107Z" }, - { url = "https://files.pythonhosted.org/packages/05/23/6bde59eb55abd407d34f77d39a5126fb7b4f109a3f611d3929f14b700c66/frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37", size = 273830, upload-time = "2025-10-06T05:37:37.663Z" }, - { url = "https://files.pythonhosted.org/packages/d2/3f/22cff331bfad7a8afa616289000ba793347fcd7bc275f3b28ecea2a27909/frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a", size = 294289, upload-time = "2025-10-06T05:37:39.261Z" }, - { url = "https://files.pythonhosted.org/packages/a4/89/5b057c799de4838b6c69aa82b79705f2027615e01be996d2486a69ca99c4/frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2", size = 300318, upload-time = "2025-10-06T05:37:43.213Z" }, - { url = "https://files.pythonhosted.org/packages/30/de/2c22ab3eb2a8af6d69dc799e48455813bab3690c760de58e1bf43b36da3e/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef", size = 282814, upload-time = "2025-10-06T05:37:45.337Z" }, - { url = "https://files.pythonhosted.org/packages/59/f7/970141a6a8dbd7f556d94977858cfb36fa9b66e0892c6dd780d2219d8cd8/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe", size = 291762, upload-time = "2025-10-06T05:37:46.657Z" }, - { url = "https://files.pythonhosted.org/packages/c1/15/ca1adae83a719f82df9116d66f5bb28bb95557b3951903d39135620ef157/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8", size = 289470, upload-time = "2025-10-06T05:37:47.946Z" }, - { url = "https://files.pythonhosted.org/packages/ac/83/dca6dc53bf657d371fbc88ddeb21b79891e747189c5de990b9dfff2ccba1/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a", size = 289042, upload-time = "2025-10-06T05:37:49.499Z" }, - { url = "https://files.pythonhosted.org/packages/96/52/abddd34ca99be142f354398700536c5bd315880ed0a213812bc491cff5e4/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e", size = 283148, upload-time = "2025-10-06T05:37:50.745Z" }, - { url = "https://files.pythonhosted.org/packages/af/d3/76bd4ed4317e7119c2b7f57c3f6934aba26d277acc6309f873341640e21f/frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df", size = 44676, upload-time = "2025-10-06T05:37:52.222Z" }, - { url = "https://files.pythonhosted.org/packages/89/76/c615883b7b521ead2944bb3480398cbb07e12b7b4e4d073d3752eb721558/frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd", size = 49451, upload-time = "2025-10-06T05:37:53.425Z" }, - { url = "https://files.pythonhosted.org/packages/e0/a3/5982da14e113d07b325230f95060e2169f5311b1017ea8af2a29b374c289/frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79", size = 42507, upload-time = "2025-10-06T05:37:54.513Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" }, + { url = "https://files.pythonhosted.org/packages/44/04/0b91d8e916e92ad1fac9e4624760baf0fd5ff2ead614c2f68fb21373f03f/fonttools-4.63.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af", size = 5044298, upload-time = "2026-05-14T12:03:18.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8", size = 4999800, upload-time = "2026-05-14T12:03:20.161Z" }, + { url = "https://files.pythonhosted.org/packages/e6/6d/67fe16c48d7ce050979b33f47e0d28a318f02da030602e944c34f7a16ef3/fonttools-4.63.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b", size = 4982666, upload-time = "2026-05-14T12:03:22.87Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/3bbab338c07c71fa56269953845e92c951a61457bbbb0f1022551ea266d9/fonttools-4.63.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78", size = 5133598, upload-time = "2026-05-14T12:03:25.168Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/aa27c7f98db5b064883dadcc5283947e81e034de42e22a33675878d98b54/fonttools-4.63.0-cp312-cp312-win32.whl", hash = "sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263", size = 2292575, upload-time = "2026-05-14T12:03:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272", size = 2343211, upload-time = "2026-05-14T12:03:30.057Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8d/d8fec3dcde2963f8c908fb315e5ff2cd0ac34f82394bbbf73a2aa5145ce3/fonttools-4.63.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd7e9857e5e63738b9d9fd707bc1f59c8b09e5177726d23664db393c59bb08bd", size = 2876062, upload-time = "2026-05-14T12:03:32.554Z" }, + { url = "https://files.pythonhosted.org/packages/ef/71/d935dc54e4ff121bfdd11e08702db63a7e6f25af21d8a3d7b7212df53641/fonttools-4.63.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c2a2a42198b696a6f48fad91709afb55176e66a5e566131219dba372fb7f8c59", size = 2424594, upload-time = "2026-05-14T12:03:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/8e/40/e76320afa1df918e146155ef239b1719ee266092e96f5423bfd075affba1/fonttools-4.63.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e874792a8212b44583ea02189d9e693906b2f78b261f372f95d6c563210ac1d", size = 5024840, upload-time = "2026-05-14T12:03:36.745Z" }, + { url = "https://files.pythonhosted.org/packages/ce/36/0b805d8c485f872f65a509cbe3b58a5d0d17bee855333b54a150c79d3061/fonttools-4.63.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22135da48a348785c5e2d5d2d9d6bec5ed44adacbaeb9db12d9493bf6c6bfa68", size = 4975801, upload-time = "2026-05-14T12:03:38.833Z" }, + { url = "https://files.pythonhosted.org/packages/c8/26/2cee03d0aa083ab022da5c07aff9ed3f689da1defb81ad6917c9627896da/fonttools-4.63.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ccf41f2efdf56994d22d73bef4ced1052161958169428d06ba9724ea9e9a64be", size = 4965009, upload-time = "2026-05-14T12:03:41.494Z" }, + { url = "https://files.pythonhosted.org/packages/7e/48/cc4b66d9058c0d0982c833fad10127c4b0e9324606aafa41382295ca4102/fonttools-4.63.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9ced0bd02ac751dd6319b0da88aaef24414e3b0dbc32bb4f24944821a3741a27", size = 5105892, upload-time = "2026-05-14T12:03:43.525Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1f/a98a30a814b9ddef3a2e706025f90b9e0bc94890e6cb15254bc86547d11a/fonttools-4.63.0-cp313-cp313-win32.whl", hash = "sha256:85be818f5506e8a7753153def2c9550178f0ecae6a47b5e0e8dbb23f7cc90380", size = 2291313, upload-time = "2026-05-14T12:03:45.594Z" }, + { url = "https://files.pythonhosted.org/packages/92/46/5177b01f3b4abfdd4409f31cca4ab279c9343a26efbe9ec78c97fc612e02/fonttools-4.63.0-cp313-cp313-win_amd64.whl", hash = "sha256:ba04cb5891d4c0c21b6da95eda8d7b090021508a294fff33464fc7d241e0856b", size = 2342299, upload-time = "2026-05-14T12:03:47.414Z" }, + { url = "https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745", size = 2875338, upload-time = "2026-05-14T12:03:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/cd/58/7dfa0c761cb3b2964e2a84c4dc986c926a87de0cb9fb60d5b28ded3f2914/fonttools-4.63.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6e528da43bc3791085f8cb6141b1d13e459226790240340fcbb4625649238b03", size = 2422661, upload-time = "2026-05-14T12:03:52.154Z" }, + { url = "https://files.pythonhosted.org/packages/dd/87/64cfa18a7a1621d17b7f4502b2b0ed8a135a90c3db51ea590ee99043e76b/fonttools-4.63.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b2248c5decb223562f7902ff6325077a073f608ee8e33e88ad88db734eb9f49", size = 5010526, upload-time = "2026-05-14T12:03:54.647Z" }, + { url = "https://files.pythonhosted.org/packages/36/e1/a8933a72c45a87177fbde2696e0d0755c8c9062f8c077a961c6215fa27b1/fonttools-4.63.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:308f957cdeaf8abe4e5f2f124902ef405448af92c90f80e302a3b771c2e6116b", size = 4923946, upload-time = "2026-05-14T12:03:56.984Z" }, + { url = "https://files.pythonhosted.org/packages/27/60/872e6e233b8c5e8b41413796ff18b7fe479661bd40147e071b450dfad7a1/fonttools-4.63.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bf00f21eb5fb721dbaf73d1e9da6d02a1af7768f2ebcf9798be98beab8ba90f6", size = 4962489, upload-time = "2026-05-14T12:03:59.443Z" }, + { url = "https://files.pythonhosted.org/packages/30/c4/83c24f2ec38b90cfda84bf4b1a1f49df80e84a1db4e7ac6e0d41bf23bc39/fonttools-4.63.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c1aaa4b9c75798400ac043ce04d74e7830376c85095a5a6ed7cba2f17a266bf4", size = 5071870, upload-time = "2026-05-14T12:04:02.122Z" }, + { url = "https://files.pythonhosted.org/packages/de/40/3ae22b60ff1d41ce0bd044b31238cdc72cef99f28b976f1e128ebd618c9b/fonttools-4.63.0-cp314-cp314-win32.whl", hash = "sha256:22693918177bd9ceabec4736d338045f357769416fc6b0b2508eefef75b08616", size = 2295026, upload-time = "2026-05-14T12:04:04.47Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d4/98078064ccc76b45cb0f6c002452011e93c4bd26f6850344f0951cc1fe89/fonttools-4.63.0-cp314-cp314-win_amd64.whl", hash = "sha256:7d782fac32985914c351556f68ac0855391572bcd87de50e05970d3cd4c96fc5", size = 2347454, upload-time = "2026-05-14T12:04:06.752Z" }, + { url = "https://files.pythonhosted.org/packages/49/4e/652d1580c5f4e39f7d103b0c793e4773129ad633dce4addd0cf4dfebde02/fonttools-4.63.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6db5140a60a5d731d21ec076745b40a310607731b0a565b50776393188649001", size = 2958152, upload-time = "2026-05-14T12:04:08.706Z" }, + { url = "https://files.pythonhosted.org/packages/0e/55/ad864c9a9b219f552eb46b32cd7906c466e5a578ba0c3abfcc0fe7413eb6/fonttools-4.63.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d76edbff9014094dbf03bd2d074709dfa6ec7aba13d838c937a2b33d2d6a86e", size = 2460809, upload-time = "2026-05-14T12:04:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/0aa8db70f18cf52e49b4ed5ecec68547f981160bf5ded3b5aed6faa0a6f9/fonttools-4.63.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eac00b9118c3c2f87d272e45341871c5b3066baa3c86897fa634a7c3fb59096", size = 5148649, upload-time = "2026-05-14T12:04:12.747Z" }, + { url = "https://files.pythonhosted.org/packages/7f/63/18e4369c25043096f1048e0c9915951adc4f842bd81c6b18155824d6fa99/fonttools-4.63.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51394295f1a51de8b5f30bdb1e1b9a4231536c7064ef5c6e211eec19fa36036f", size = 4932147, upload-time = "2026-05-14T12:04:14.806Z" }, + { url = "https://files.pythonhosted.org/packages/a1/3f/67f3eac2ffd8a98446c5022f8ed3864eac878a5ff7af8df4c8286dba16cc/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9e12f105d2b6342c559c298afb674006bb2893afc7102dcf8a1b55b0486b4e40", size = 5027237, upload-time = "2026-05-14T12:04:17.675Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ba/4e6214cb38a7b04779e97bb7636de9a5c7f20af7018d03dee0b64c08510a/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:796f27556dbe094c4824f75ca85267e4df776c79036c8441469a4df37038c196", size = 5053933, upload-time = "2026-05-14T12:04:20.818Z" }, + { url = "https://files.pythonhosted.org/packages/34/3b/214dcc19ee31d3d38fb5ad2755c11ef0514e5dc300bbaf41c0b69f393799/fonttools-4.63.0-cp314-cp314t-win32.whl", hash = "sha256:948428a275741f0b64b113c955425a953314f4b9ab9997f73a72c83e68e569c8", size = 2359326, upload-time = "2026-05-14T12:04:24.22Z" }, + { url = "https://files.pythonhosted.org/packages/dd/1e/3ff1a9b523058c2eeb6a9d50f5574e2a738200d0d94107d5bc4105e8da3f/fonttools-4.63.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6d4741eb179121cab9eea4cb2393d24492373a260d7945006358c08cfbf45419", size = 2425829, upload-time = "2026-05-14T12:04:26.829Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, ] [[package]] name = "fsspec" -version = "2026.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d5/7d/5df2650c57d47c57232af5ef4b4fdbff182070421e405e0d62c6cdbfaa87/fsspec-2026.1.0.tar.gz", hash = "sha256:e987cb0496a0d81bba3a9d1cee62922fb395e7d4c3b575e57f547953334fe07b", size = 310496, upload-time = "2026-01-09T15:21:35.562Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/c9/97cc5aae1648dcb851958a3ddf73ccd7dbe5650d95203ecb4d7720b4cdbf/fsspec-2026.1.0-py3-none-any.whl", hash = "sha256:cb76aa913c2285a3b49bdd5fc55b1d7c708d7208126b60f2eb8194fe1b4cbdcc", size = 201838, upload-time = "2026-01-09T15:21:34.041Z" }, -] - -[package.optional-dependencies] -http = [ - { name = "aiohttp" }, -] -tqdm = [ - { name = "tqdm" }, -] - -[[package]] -name = "funcy" -version = "2.0" +version = "2026.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/b8/c6081521ff70afdff55cd9512b2220bbf4fa88804dae51d1b57b4b58ef32/funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb", size = 537931, upload-time = "2023-03-28T06:22:46.764Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/8d/1c51c094345df128ca4a990d633fe1a0ff28726c9e6b3c41ba65087bba1d/fsspec-2026.4.0.tar.gz", hash = "sha256:301d8ac70ae90ef3ad05dcf94d6c3754a097f9b5fe4667d2787aa359ec7df7e4", size = 312760, upload-time = "2026-04-29T20:42:38.635Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/08/c2409cb01d5368dcfedcbaffa7d044cc8957d57a9d0855244a5eb4709d30/funcy-2.0-py2.py3-none-any.whl", hash = "sha256:53df23c8bb1651b12f095df764bfb057935d49537a56de211b098f4c79614bb0", size = 30891, upload-time = "2023-03-28T06:22:42.576Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl", hash = "sha256:11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2", size = 203402, upload-time = "2026-04-29T20:42:36.842Z" }, ] [[package]] @@ -1863,14 +1225,14 @@ wheels = [ [[package]] name = "gitpython" -version = "3.1.46" +version = "3.1.50" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/b5/59d16470a1f0dfe8c793f9ef56fd3826093fc52b3bd96d6b9d6c26c7e27b/gitpython-3.1.46.tar.gz", hash = "sha256:400124c7d0ef4ea03f7310ac2fbf7151e09ff97f2a3288d64a440c584a29c37f", size = 215371, upload-time = "2026-01-01T15:37:32.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz", hash = "sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size = 219798, upload-time = "2026-05-06T04:01:26.571Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl", hash = "sha256:79812ed143d9d25b6d176a10bb511de0f9c67b1fa641d82097b0ab90398a2058", size = 208620, upload-time = "2026-01-01T15:37:30.574Z" }, + { url = "https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl", hash = "sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size = 212507, upload-time = "2026-05-06T04:01:23.799Z" }, ] [[package]] @@ -1882,163 +1244,131 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c4/f9/9ff5a301459f804a885f237453ba81564bc6ee54740e9f2676c2642043f6/giturlparse-0.14.0-py2.py3-none-any.whl", hash = "sha256:04fd9c262ca9a4db86043d2ef32b2b90bfcbcdefc4f6a260fd9402127880931d", size = 16299, upload-time = "2025-10-22T09:21:10.818Z" }, ] -[[package]] -name = "google-auth" -version = "2.47.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1-modules" }, - { name = "rsa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/3c/ec64b9a275ca22fa1cd3b6e77fefcf837b0732c890aa32d2bd21313d9b33/google_auth-2.47.0.tar.gz", hash = "sha256:833229070a9dfee1a353ae9877dcd2dec069a8281a4e72e72f77d4a70ff945da", size = 323719, upload-time = "2026-01-06T21:55:31.045Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/18/79e9008530b79527e0d5f79e7eef08d3b179b7f851cfd3a2f27822fbdfa9/google_auth-2.47.0-py3-none-any.whl", hash = "sha256:c516d68336bfde7cf0da26aab674a36fedcf04b37ac4edd59c597178760c3498", size = 234867, upload-time = "2026-01-06T21:55:28.6Z" }, -] - -[package.optional-dependencies] -requests = [ - { name = "requests" }, -] - -[[package]] -name = "google-genai" -version = "1.57.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "google-auth", extra = ["requests"] }, - { name = "httpx" }, - { name = "pydantic" }, - { name = "requests" }, - { name = "sniffio" }, - { name = "tenacity" }, - { name = "typing-extensions" }, - { name = "websockets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2b/b4/8251c2d2576224a4b51a8ab6159820f9200b8da28ff555c78ee15607096e/google_genai-1.57.0.tar.gz", hash = "sha256:0ff9c36b8d68abfbdbd13b703ece926de5f3e67955666b36315ecf669b94a826", size = 485648, upload-time = "2026-01-07T20:38:20.271Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/02/858bdae08e2184b6afe0b18bc3113318522c9cf326a5a1698055edd31f88/google_genai-1.57.0-py3-none-any.whl", hash = "sha256:d63c7a89a1f549c4d14032f41a0cdb4b6fe3f565e2eee6b5e0907a0aeceabefd", size = 713323, upload-time = "2026-01-07T20:38:18.051Z" }, -] - -[[package]] -name = "grandalf" -version = "0.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyparsing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/0e/4ac934b416857969f9135dec17ac80660634327e003a870835dd1f382659/grandalf-0.8.tar.gz", hash = "sha256:2813f7aab87f0d20f334a3162ccfbcbf085977134a17a5b516940a93a77ea974", size = 38128, upload-time = "2023-01-26T07:37:06.668Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/30/44c7eb0a952478dbb5f2f67df806686d6a7e4b19f6204e091c4f49dc7c69/grandalf-0.8-py3-none-any.whl", hash = "sha256:793ca254442f4a79252ea9ff1ab998e852c1e071b863593e5383afee906b4185", size = 41802, upload-time = "2023-01-10T15:16:19.753Z" }, -] - -[[package]] -name = "griffe" -version = "1.15.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0d/0c/3a471b6e31951dce2360477420d0a8d1e00dea6cf33b70f3e8c3ab6e28e1/griffe-1.15.0.tar.gz", hash = "sha256:7726e3afd6f298fbc3696e67958803e7ac843c1cfe59734b6251a40cdbfb5eea", size = 424112, upload-time = "2025-11-10T15:03:15.52Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl", hash = "sha256:6f6762661949411031f5fcda9593f586e6ce8340f0ba88921a0f2ef7a81eb9a3", size = 150705, upload-time = "2025-11-10T15:03:13.549Z" }, -] - [[package]] name = "griffe-fieldz" -version = "0.3.0" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fieldz" }, - { name = "griffe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c5/6a/94754bf39fd63ba424c667b2abf0ade78e3878e223591d1fb9c3e8a77bce/griffe_fieldz-0.3.0.tar.gz", hash = "sha256:42e7707dac51d38e26fb7f3f7f51429da9b47e98060bfeb81a4287456d5b8a89", size = 10149, upload-time = "2025-07-30T21:43:10.042Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/33/cc527c11132a6274724a04938d50e1ff2b54a5f5943cd0480427571e1adb/griffe_fieldz-0.3.0-py3-none-any.whl", hash = "sha256:52e02fdcbdf6dea3c8c95756d1e0b30861569f871d19437fda702776fde4e64d", size = 6577, upload-time = "2025-07-30T21:43:09.073Z" }, -] - -[[package]] -name = "griffe-generics" -version = "1.0.13" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "griffe" }, - { name = "typing-extensions" }, + { name = "griffelib" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/87/56a51c97f6a88b2dd4199a12c3a96c12627a24fa9994270d79047c79ecca/griffe_generics-1.0.13.tar.gz", hash = "sha256:00cfd1f1a940fb1566b382a24dbb40b288a694d313e41363cfc3e30093c358b3", size = 8064, upload-time = "2025-01-18T07:44:05.332Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/7f/b57a27807536590f0cabdd2e6c0faac78c7d6a740e096684c51c503b7003/griffe_fieldz-0.5.0.tar.gz", hash = "sha256:dcf237a0def9f5c15e15aa5cf07b3d0a4edf4f7d6a2d713a45afe29c8af9bc8e", size = 14250, upload-time = "2026-02-24T16:22:23.374Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/59/96c5bfdc24f5942690ac6161d425d4cc181d4c4624eb3f54b5d244672908/griffe_generics-1.0.13-py3-none-any.whl", hash = "sha256:e8139e485d256d0eba97ab310368c8800048918f0d5c7257817d769bba76ac94", size = 10557, upload-time = "2025-01-18T07:44:03.507Z" }, + { url = "https://files.pythonhosted.org/packages/ce/66/9daa3118d9bf4443778d6ee31b024c79766eeb116b275eca71597adae43a/griffe_fieldz-0.5.0-py3-none-any.whl", hash = "sha256:d363e56a7468019a7184ea3995277a1f20507bb9a345408c1f7014ae06878ebf", size = 9629, upload-time = "2026-02-24T16:22:22.094Z" }, ] [[package]] name = "griffe-inherited-docstrings" -version = "1.1.2" +version = "1.1.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "griffe" }, + { name = "griffelib" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/02/36d9929bb8ad929941b27117aba4d850b8a9f2c12f982e2b59ab4bc4d80b/griffe_inherited_docstrings-1.1.2.tar.gz", hash = "sha256:0a489ac4bb6093a7789d014b23083b4cbb1ab139f0b8dd878c8f3a4f8e892624", size = 27541, upload-time = "2025-09-05T15:17:13.081Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/da/fd002dc5f215cd896bfccaebe8b4aa1cdeed8ea1d9d60633685bd61ff933/griffe_inherited_docstrings-1.1.3.tar.gz", hash = "sha256:cd1f937ec9336a790e5425e7f9b92f5a5ab17f292ba86917f1c681c0704cb64e", size = 26738, upload-time = "2026-02-21T09:38:44.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/12/4c67b644dc5965000874908dfa89d05ba878d5ca22a9b4ebfbfadc41467b/griffe_inherited_docstrings-1.1.2-py3-none-any.whl", hash = "sha256:b1cf61fff6e12a769db75de5718ddbbb5361b2cc4155af1f1ad86c13f56c197b", size = 6709, upload-time = "2025-09-05T15:17:11.853Z" }, + { url = "https://files.pythonhosted.org/packages/16/20/4bc15f242181daad1c104e0a7d33be49e712461ea89e548152be0365b9ea/griffe_inherited_docstrings-1.1.3-py3-none-any.whl", hash = "sha256:aa7f6e624515c50d9325a5cfdf4b2acac547f1889aca89092d5da7278f739695", size = 6710, upload-time = "2026-02-20T11:06:38.75Z" }, ] [[package]] -name = "griffe-modernized-annotations" -version = "1.0.8" +name = "griffe-pydantic" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "griffe" }, - { name = "typing-extensions" }, + { name = "griffelib" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/89/70efdbdbf5ca13cf6919368b542de78b8d0f5cca77f04f533d9f89cd9639/griffe_modernized_annotations-1.0.8.tar.gz", hash = "sha256:f4cd757260d2ebdb96d361c8ab882015955225bc3edc4713073b5a81ddad75b0", size = 8409, upload-time = "2024-08-16T10:02:48.106Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/bd/d2eaeaf3f9910c9cd72793af0de18ee3d3a3a27bb30ab01cfd7659c08dc4/griffe_pydantic-1.3.1.tar.gz", hash = "sha256:f7caedfa0effedb22893bf01cc411fd567614f7b4de7ce0c1f4293eb7acb5c44", size = 38176, upload-time = "2026-02-21T09:38:49.674Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/54/f2defd39a3e258abda26e6c0ec0611611c5757e97d73defd64a4e917f5e9/griffe_modernized_annotations-1.0.8-py3-none-any.whl", hash = "sha256:d84b2d03d9c3127c2548f1eaa04dc3eba6cde34c0a2c4ae64f627908984e973d", size = 12158, upload-time = "2024-08-16T10:02:46.917Z" }, + { url = "https://files.pythonhosted.org/packages/2d/88/17d656aa97406cd509e2be0e6eddcf81fc1666104bf81042b89721d4a44c/griffe_pydantic-1.3.1-py3-none-any.whl", hash = "sha256:475103794a1d5da3933d3968e82a2bd9d9a1fa507c06d5ee1a39ee1fadcca628", size = 15189, upload-time = "2026-02-20T11:34:14.965Z" }, ] [[package]] -name = "griffe-pydantic" -version = "1.1.8" +name = "griffe-warnings-deprecated" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "griffe" }, + { name = "griffelib" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/52/b05f582287f887f58a1738183d6dd0e799842b83f6f60d65c77ba90cee31/griffe_pydantic-1.1.8.tar.gz", hash = "sha256:72cde69c74c70f3dc0385a7a5243c736cd6bf6fcf8a41cae497383defe107041", size = 43425, upload-time = "2025-10-14T09:12:37.693Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/9e/fc86f1e9270f143a395a601de81aa42a871722c34d4b3c7763658dc2e04d/griffe_warnings_deprecated-1.1.1.tar.gz", hash = "sha256:9261369bf2acb8b5d24a0dc7895cce788208513d4349031d4ea315b979b2e99f", size = 26262, upload-time = "2026-02-21T09:38:55.858Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/e3/94b2e39d841a1c07b586903177d3ee802c8ae87567449a541d14028eb657/griffe_pydantic-1.1.8-py3-none-any.whl", hash = "sha256:22212c94216e03bf43d30ff3bc79cd53fb973ae2fe81d8b7510242232a1e6764", size = 12852, upload-time = "2025-10-14T09:12:36.23Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3c/c2a9eee79bf2c8002d2fa370534bee93fdca39e8b1fc82e83d552d5d2c07/griffe_warnings_deprecated-1.1.1-py3-none-any.whl", hash = "sha256:4b7d765e82ca9139ed44ffe7bdebed0d3a46ce014ad5a35a2c22e9a16288737a", size = 6565, upload-time = "2026-02-20T15:35:23.577Z" }, ] [[package]] -name = "griffe-warnings-deprecated" -version = "1.1.0" +name = "griffelib" +version = "2.0.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "griffe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7e/0e/f034e1714eb2c694d6196c75f77a02f9c69d19f9961c4804a016397bf3e5/griffe_warnings_deprecated-1.1.0.tar.gz", hash = "sha256:7bf21de327d59c66c7ce08d0166aa4292ce0577ff113de5878f428d102b6f7c5", size = 33260, upload-time = "2024-12-10T21:02:18.395Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/82/74f4a3310cdabfbb10da554c3a672847f1ed33c6f61dd472681ce7f1fe67/griffelib-2.0.2.tar.gz", hash = "sha256:3cf20b3bc470e83763ffbf236e0076b1211bac1bc67de13daf494640f2de707e", size = 166461, upload-time = "2026-03-27T11:34:51.091Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/4c/b7241f03ad1f22ec2eed33b0f90c4f8c949e3395c4b7488670b07225a20b/griffe_warnings_deprecated-1.1.0-py3-none-any.whl", hash = "sha256:e7b0e8bfd6e5add3945d4d9805b2a41c72409e456733965be276d55f01e8a7a2", size = 5854, upload-time = "2024-12-10T21:02:16.96Z" }, + { url = "https://files.pythonhosted.org/packages/11/8c/c9138d881c79aa0ea9ed83cbd58d5ca75624378b38cee225dcf5c42cc91f/griffelib-2.0.2-py3-none-any.whl", hash = "sha256:925c857658fb1ba40c0772c37acbc2ab650bd794d9c1b9726922e36ea4117ea1", size = 142357, upload-time = "2026-03-27T11:34:46.275Z" }, ] [[package]] -name = "gto" -version = "1.9.0" +name = "grimp" +version = "3.14" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "entrypoints" }, - { name = "funcy" }, - { name = "pydantic" }, - { name = "pydantic-settings" }, - { name = "rich" }, - { name = "ruamel-yaml" }, - { name = "scmrepo" }, - { name = "semver" }, - { name = "tabulate" }, - { name = "typer" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/06/d2ec91a6c1e6b1a55c419e8599df7ac3430323a1bb1e5c01a1f83f8ecb64/gto-1.9.0.tar.gz", hash = "sha256:3beb5c652a98585ad083dbb6879a580ffe926271661d9b7a50e428cd591005ea", size = 58999, upload-time = "2025-10-08T17:05:28.568Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/b3/6086ab9cfd4a27517a1269e8b7c48621beb79ccc0affd2485b9747976bfe/gto-1.9.0-py3-none-any.whl", hash = "sha256:e94371a67c25256f973722c5891e551ca3cd8cc25864dcf468f2b16e6bcca6b8", size = 45038, upload-time = "2025-10-08T17:05:26.947Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/63/46/79764cfb61a3ac80dadae5d94fb10acdb7800e31fecf4113cf3d345e4952/grimp-3.14.tar.gz", hash = "sha256:645fbd835983901042dae4e1b24fde3a89bf7ac152f9272dd17a97e55cb4f871", size = 830882, upload-time = "2025-12-10T17:55:01.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/d6/a35ff62f35aa5fd148053506eddd7a8f2f6afaed31870dc608dd0eb38e4f/grimp-3.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ffabc6940301214753bad89ec0bfe275892fa1f64b999e9a101f6cebfc777133", size = 2178573, upload-time = "2025-12-10T17:53:42.836Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/bd2e80273da4d46110969fc62252e5372e0249feb872bc7fe76fdc7f1818/grimp-3.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:075d9a1c78d607792d0ed8d4d3d7754a621ef04c8a95eaebf634930dc9232bb2", size = 2110452, upload-time = "2025-12-10T17:53:19.831Z" }, + { url = "https://files.pythonhosted.org/packages/44/c3/7307249c657d34dca9d250d73ba027d6cfe15a98fb3119b6e5210bc388b7/grimp-3.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06ff52addeb20955a4d6aa097bee910573ffc9ef0d3c8a860844f267ad958156", size = 2283064, upload-time = "2025-12-10T17:52:07.673Z" }, + { url = "https://files.pythonhosted.org/packages/c7/d2/cae4cf32dc8d4188837cc4ab183300d655f898969b0f169e240f3b7c25be/grimp-3.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d10e0663e961fcbe8d0f54608854af31f911f164c96a44112d5173050132701f", size = 2235893, upload-time = "2025-12-10T17:52:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/04/92/3f58bc3064fc305dac107d08003ba65713a5bc89a6d327f1c06b30cce752/grimp-3.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ab874d7ddddc7a1291259cf7c31a4e7b5c612e9da2e24c67c0eb1a44a624e67", size = 2393376, upload-time = "2025-12-10T17:53:02.397Z" }, + { url = "https://files.pythonhosted.org/packages/06/b8/f476f30edf114f04cb58e8ae162cb4daf52bda0ab01919f3b5b7edb98430/grimp-3.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54fec672ec83355636a852177f5a470c964bede0f6730f9ba3c7b5c8419c9eab", size = 2571342, upload-time = "2025-12-10T17:52:35.214Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ae/2e44d3c4f591f95f86322a8f4dbb5aac17001d49e079f3a80e07e7caaf09/grimp-3.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9e221b5e8070a916c780e88c877fee2a61c95a76a76a2a076396e459511b0bb", size = 2359022, upload-time = "2025-12-10T17:52:49.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/ac/42b4d6bc0ea119ce2e91e1788feabf32c5433e9617dbb495c2a3d0dc7f12/grimp-3.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eea6b495f9b4a8d82f5ce544921e76d0d12017f5d1ac3a3bd2f5ac88ab055b1c", size = 2309424, upload-time = "2025-12-10T17:53:11.069Z" }, + { url = "https://files.pythonhosted.org/packages/e8/c7/6a731989625c1790f4da7602dcbf9d6525512264e853cda77b3b3602d5e0/grimp-3.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:655e8d3f79cd99bb859e09c9dd633515150e9d850879ca71417d5ac31809b745", size = 2462754, upload-time = "2025-12-10T17:53:50.886Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4d/3d1571c0a39a59dd68be4835f766da64fe64cbab0d69426210b716a8bdf0/grimp-3.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a14f10b1b71c6c37647a76e6a49c226509648107abc0f48c1e3ecd158ba05531", size = 2501356, upload-time = "2025-12-10T17:54:06.014Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d1/8950b8229095ebda5c54c8784e4d1f0a6e19423f2847289ef9751f878798/grimp-3.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:81685111ee24d3e25f8ed9e77ed00b92b58b2414e1a1c2937236026900972744", size = 2504631, upload-time = "2025-12-10T17:54:34.441Z" }, + { url = "https://files.pythonhosted.org/packages/0a/e6/23bed3da9206138d36d01890b656c7fb7adfb3a37daac8842d84d8777ade/grimp-3.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce8352a8ea0e27b143136ea086582fc6653419aa8a7c15e28ed08c898c42b185", size = 2514751, upload-time = "2025-12-10T17:54:49.384Z" }, + { url = "https://files.pythonhosted.org/packages/eb/45/6f1f55c97ee982f133ec5ccb22fc99bf5335aee70c208f4fb86cd833b8d5/grimp-3.14-cp312-cp312-win32.whl", hash = "sha256:3fc0f98b3c60d88e9ffa08faff3200f36604930972f8b29155f323b76ea25a06", size = 1875041, upload-time = "2025-12-10T17:55:13.326Z" }, + { url = "https://files.pythonhosted.org/packages/cf/cf/03ba01288e2a41a948bc8526f32c2eeaddd683ed34be1b895e31658d5a4c/grimp-3.14-cp312-cp312-win_amd64.whl", hash = "sha256:6bca77d1d50c8dc402c96af21f4e28e2f1e9938eeabd7417592a22bd83cde3c3", size = 2013868, upload-time = "2025-12-10T17:55:05.907Z" }, + { url = "https://files.pythonhosted.org/packages/3b/bd/d12a9c821b79ba31fc52243e564712b64140fc6d011c2bdbb483d9092a12/grimp-3.14-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:af8a625554beea84530b98cc471902155b5fc042b42dc47ec846fa3e32b0c615", size = 2178632, upload-time = "2025-12-10T17:53:44.55Z" }, + { url = "https://files.pythonhosted.org/packages/96/8c/d6620dbc245149d5a5a7a9342733556ba91a672f358259c0ab31d889b56b/grimp-3.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0dd1942ffb419ad342f76b0c3d3d2d7f312b264ddc578179d13ce8d5acec1167", size = 2110288, upload-time = "2025-12-10T17:53:21.662Z" }, + { url = "https://files.pythonhosted.org/packages/60/9d/ea51edc4eb295c99786040051c66466bfa235fd1def9f592057b36e03d0f/grimp-3.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:537f784ce9b4acf8657f0b9714ab69a6c72ffa752eccc38a5a85506103b1a194", size = 2282197, upload-time = "2025-12-10T17:52:09.304Z" }, + { url = "https://files.pythonhosted.org/packages/28/6e/7db27818ced6a797f976ca55d981a3af5c12aec6aeda12d63965847cd028/grimp-3.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:78ab18c08770aa005bef67b873bc3946d33f65727e9f3e508155093db5fa57d6", size = 2235720, upload-time = "2025-12-10T17:52:21.806Z" }, + { url = "https://files.pythonhosted.org/packages/37/26/0e3bbae4826bd6eaabf404738400414071e73ddb1e65bf487dcce17858c4/grimp-3.14-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28ca58728c27e7292c99f964e6ece9295c2f9cfdefc37c18dea0679c783ffb6f", size = 2393023, upload-time = "2025-12-10T17:53:04.149Z" }, + { url = "https://files.pythonhosted.org/packages/49/f2/7da91db5703da34c7ef4c7cddcbb1a8fc30cd85fe54756eba942c6fb27d8/grimp-3.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9b5577de29c6c5ae6e08d4ca0ac361b45dba323aa145796e6b320a6ea35414b7", size = 2571108, upload-time = "2025-12-10T17:52:36.523Z" }, + { url = "https://files.pythonhosted.org/packages/25/5e/4d6278f18032c7208696edf8be24a4b5f7fad80acc20ffca737344bcecb5/grimp-3.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d7d1f9f42306f455abcec34db877e4887ff15f2777a43491f7ccbd6936c449b", size = 2358531, upload-time = "2025-12-10T17:52:50.521Z" }, + { url = "https://files.pythonhosted.org/packages/24/fb/231c32493161ac82f27af6a56965daefa0ec6030fdaf5b948ddd5d68d000/grimp-3.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39bd5c9b7cef59ee30a05535e9cb4cbf45a3c503f22edce34d0aa79362a311a9", size = 2308831, upload-time = "2025-12-10T17:53:12.587Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/f6db325bf5efbbebc9c85cad0af865e821a12a0ba58ee309e938cbd5fedf/grimp-3.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7fec3116b4f780a1bc54176b19e6b9f2e36e2ef3164b8fc840660566af35df88", size = 2462138, upload-time = "2025-12-10T17:53:52.403Z" }, + { url = "https://files.pythonhosted.org/packages/41/2e/cc3fe29cf07f70364018086840c228a190539ab8105147e34588db590792/grimp-3.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:0233a35a5bbb23688d63e1736b54415fa9994ace8dfeb7de8514ed9dee212968", size = 2501393, upload-time = "2025-12-10T17:54:22.486Z" }, + { url = "https://files.pythonhosted.org/packages/e5/eb/54cada9a726455148da23f64577b5cd164164d23a6449e3fa14551157356/grimp-3.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e46b2fef0f1da7e7e2f8129eb93c7e79db716ff7810140a22ce5504e10ed86df", size = 2504514, upload-time = "2025-12-10T17:54:36.34Z" }, + { url = "https://files.pythonhosted.org/packages/e8/c7/e6afe4f0652df07e8762f61899d1202b73c22c559c804d0a09e5aab2ff17/grimp-3.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3e6d9b50623ee1c3d2a1927ec3f5d408995ea1f92f3e91ed996c908bb40e856f", size = 2514018, upload-time = "2025-12-10T17:54:50.76Z" }, + { url = "https://files.pythonhosted.org/packages/75/13/2b8550acc1f010301f02c4fe9664810929fd9277cd032ab608b8534a96fb/grimp-3.14-cp313-cp313-win32.whl", hash = "sha256:fd57c56f5833c99320ec77e8ba5508d56f6fb48ec8032a942f7931cc6ebb80ce", size = 1874922, upload-time = "2025-12-10T17:55:15.239Z" }, + { url = "https://files.pythonhosted.org/packages/46/c7/bc9db5a54ef22972cd17d15ad80a8fee274a471bd3f02300405702d29ea5/grimp-3.14-cp313-cp313-win_amd64.whl", hash = "sha256:173307cf881a126fe5120b7bbec7d54384002e3c83dcd8c4df6ce7f0fee07c53", size = 2013705, upload-time = "2025-12-10T17:55:07.488Z" }, + { url = "https://files.pythonhosted.org/packages/80/7e/02710bf5e50997168c84ac622b10dd41d35515efd0c67549945ad20996a0/grimp-3.14-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebe29f8f13fbd7c314908ed535183a36e6db71839355b04869b27f23c58fa082", size = 2281868, upload-time = "2025-12-10T17:52:10.589Z" }, + { url = "https://files.pythonhosted.org/packages/15/88/2e440c6762cc78bd50582e1b092357d2255f0852ccc6218d8db25170ab31/grimp-3.14-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:073d285b00100153fd86064c7726bb1b6d610df1356d33bb42d3fd8809cb6e72", size = 2230917, upload-time = "2025-12-10T17:52:23.212Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bb/2e7dce129b88f07fc525fe5c97f28cfb7ed7b62c59386d39226b4d08969c/grimp-3.14-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6d6efc37e1728bbfcd881b89467be5f7b046292597b3ebe5f8e44e89ea8b6cb", size = 2571371, upload-time = "2025-12-10T17:52:37.84Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2b/8f1be8294af60c953687db7dec25525d87ed9c2aa26b66dcbe5244abaca2/grimp-3.14-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5337d65d81960b712574c41e85b480d4480bbb5c6f547c94e634f6c60d730889", size = 2356980, upload-time = "2025-12-10T17:52:52.004Z" }, + { url = "https://files.pythonhosted.org/packages/35/ca/ead91e04b3ddd4774ae74601860ea0f0f21bcf6b970b6769ba9571eb2904/grimp-3.14-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:84a7fea63e352b325daa89b0b7297db411b7f0036f8d710c32f8e5090e1fc3ca", size = 2461540, upload-time = "2025-12-10T17:53:53.749Z" }, + { url = "https://files.pythonhosted.org/packages/94/aa/f8a085ff73c37d6e6a37de9f58799a3fea9e16badf267aaef6f11c9a53a3/grimp-3.14-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:d0b19a3726377165fe1f7184a8af317734d80d32b371b6c5578747867ab53c0b", size = 2497925, upload-time = "2025-12-10T17:54:23.842Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a3/db3c2d6df07fe74faf5a28fcf3b44fad2831d323ba4a3c2ff66b77a6520c/grimp-3.14-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9caa4991f530750f88474a3f5ecf6ef9f0d064034889d92db00cfb4ecb78aa24", size = 2501794, upload-time = "2025-12-10T17:54:38.05Z" }, + { url = "https://files.pythonhosted.org/packages/e5/de/095f4e3765e7b60425a41e9fbd2b167f8b0acb957cc88c387f631778a09d/grimp-3.14-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1876efc119b99332a5cc2b08a6bdaada2f0ad94b596f0372a497e2aa8bda4d94", size = 2515203, upload-time = "2025-12-10T17:54:52.555Z" }, + { url = "https://files.pythonhosted.org/packages/c6/5f/ee02a3a1237282d324f596a50923bf9d2cb1b1230ef2fef49fb4d3563c2c/grimp-3.14-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3ccf03e65864d6bc7bf1c003c319f5330a7627b3677f31143f11691a088464c2", size = 2177150, upload-time = "2025-12-10T17:53:46.145Z" }, + { url = "https://files.pythonhosted.org/packages/f2/64/2a92889e5fc78e8ef5c548e6a5c6fed78b817eeb0253aca586c28108393a/grimp-3.14-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9ecd58fa58a270e7523f8bec9e6452f4fdb9c21e4cd370640829f1e43fa87a69", size = 2109280, upload-time = "2025-12-10T17:53:23.345Z" }, + { url = "https://files.pythonhosted.org/packages/69/02/5d0b9ab54821e7fbdeb02f3919fa2cb8b9f0c3869fa6e4b969a5766f0ffa/grimp-3.14-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d75d1f8f7944978b39b08d870315174f1ffcd5123be6ccff8ce90467ace648a", size = 2283367, upload-time = "2025-12-10T17:52:11.875Z" }, + { url = "https://files.pythonhosted.org/packages/c2/96/a77c40c92faf7500f42ac019ab8de108b04ffe3db8ec8d6f90416d2322ce/grimp-3.14-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6f70bbb1dd6055d08d29e39a78a11c4118c1778b39d17cd8271e18e213524ca7", size = 2237125, upload-time = "2025-12-10T17:52:24.606Z" }, + { url = "https://files.pythonhosted.org/packages/6a/5e/3e1483721c83057bff921cf454dd5ff3e661ae1d2e63150a380382d116c2/grimp-3.14-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f21b7c003626c902669dc26ede83a91220cf0a81b51b27128370998c2f247b4", size = 2391735, upload-time = "2025-12-10T17:53:05.619Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cb/25fad4a174fe672d42f3e5616761a8120a3b03c8e9e2ae3f31159561968a/grimp-3.14-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80d9f056415c936b45561310296374c4319b5df0003da802c84d2830a103792a", size = 2571388, upload-time = "2025-12-10T17:52:39.337Z" }, + { url = "https://files.pythonhosted.org/packages/29/7e/456df7f6a765ce3f160eb32a0f64ed0c1c3cd39b518555dde02087f9b6e4/grimp-3.14-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0332963cd63a45863775d4237e59dedf95455e0a1ea50c356be23100c5fc1d7c", size = 2359637, upload-time = "2025-12-10T17:52:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/7c/98/3e5005ef21a4e2243f0da489aba86aaaff0bc11d5240d67113482cba88e0/grimp-3.14-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4144350d074f2058fe7c89230a26b34296b161f085b0471a692cb2fe27036f", size = 2308335, upload-time = "2025-12-10T17:53:13.893Z" }, + { url = "https://files.pythonhosted.org/packages/8a/03/4e055f756946d6f71ab7e9d1f8536a9e476777093dd7a050f40412d1a2b1/grimp-3.14-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e148e67975e92f90a8435b1b4c02180b9a3f3d725b7a188ba63793f1b1e445a0", size = 2463680, upload-time = "2025-12-10T17:53:55.507Z" }, + { url = "https://files.pythonhosted.org/packages/26/b9/3c76b7c2e1587e4303a6eff6587c2117c3a7efe1b100cd13d8a4a5613572/grimp-3.14-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:1093f7770cb5f3ca6f99fb152f9c949381cc0b078dfdfe598c8ab99abaccda3b", size = 2502808, upload-time = "2025-12-10T17:54:25.383Z" }, + { url = "https://files.pythonhosted.org/packages/20/80/ada10b85ad3125ebedea10256d9c568b6bf28339d2f79d2d196a7b94f633/grimp-3.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a213f45ec69e9c2b28ffd3ba5ab12cc9859da17083ba4dc39317f2083b618111", size = 2504013, upload-time = "2025-12-10T17:54:39.762Z" }, + { url = "https://files.pythonhosted.org/packages/05/45/7c369f749d50b0ceac23cd6874ca4695cc1359a96091c7010301e5c8b619/grimp-3.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5f003ac3f226d2437a49af0b6036f26edba57f8a32d329275dbde1b2b2a00a56", size = 2515043, upload-time = "2025-12-10T17:54:54.437Z" }, + { url = "https://files.pythonhosted.org/packages/5c/32/85135fe83826ce11ae56a340d32a1391b91eed94d25ce7bc318019f735de/grimp-3.14-cp314-cp314-win32.whl", hash = "sha256:eec81be65a18f4b2af014b1e97296cc9ee20d1115529bf70dd7e06f457eac30b", size = 1877509, upload-time = "2025-12-10T17:55:17.062Z" }, + { url = "https://files.pythonhosted.org/packages/db/61/e4a2234edecb3bb3cff8963bc4ec5cc482a9e3c54f8df0946d7d90003830/grimp-3.14-cp314-cp314-win_amd64.whl", hash = "sha256:cd3bab6164f1d5e313678f0ab4bf45955afe7f5bdb0f2f481014aa9cca7e81ba", size = 2014364, upload-time = "2025-12-10T17:55:08.896Z" }, + { url = "https://files.pythonhosted.org/packages/16/be/3d304443fbf1df4d60c09668846d0c8a605c6c95646226e41d8f5c3254da/grimp-3.14-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b1df33de479be4d620f69633d1876858a8e64a79c07907d47cf3aaf896af057", size = 2281385, upload-time = "2025-12-10T17:52:13.668Z" }, + { url = "https://files.pythonhosted.org/packages/fe/13/493e2648dbb83b3fc517ee675e464beb0154551d726053c7982a3138c6a8/grimp-3.14-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07096d4402e9d5a2c59c402ea3d601f4b7f99025f5e32f077468846fc8d3821b", size = 2231470, upload-time = "2025-12-10T17:52:26.104Z" }, + { url = "https://files.pythonhosted.org/packages/80/84/e772b302385a6b7ec752c88f84ffe35c33d14076245ae27a635aed9c63a2/grimp-3.14-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:712bc28f46b354316af50c469c77953ba3d6cb4166a62b8fb086436a8b05d301", size = 2571579, upload-time = "2025-12-10T17:52:40.889Z" }, + { url = "https://files.pythonhosted.org/packages/69/92/5b23aa7b89c5f4f2cfa636cbeaf33e784378a6b0a823d77a3448670dfacc/grimp-3.14-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abe2bbef1cf8e27df636c02f60184319f138dee4f3a949405c21a4b491980397", size = 2356545, upload-time = "2025-12-10T17:52:54.887Z" }, + { url = "https://files.pythonhosted.org/packages/15/af/bcf2116f4b1c3939ab35f9cdddd9ca59e953e57e9a0ac0c143deaf9f29cc/grimp-3.14-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2f9ae3fabb7a7a8468ddc96acc84ecabd84f168e7ca508ee94d8f32ea9bd5de2", size = 2461022, upload-time = "2025-12-10T17:53:56.923Z" }, + { url = "https://files.pythonhosted.org/packages/81/ce/1a076dce6bc22bca4b9ad5d1bbcd7e1023dcf7bf20ea9404c6462d78f049/grimp-3.14-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:efaf11ea73f7f12d847c54a5d6edcbe919e0369dce2d1aabae6c50792e16f816", size = 2498256, upload-time = "2025-12-10T17:54:27.214Z" }, + { url = "https://files.pythonhosted.org/packages/45/ea/ac735bed202c1c5c019e611b92d3861779e0cfbe2d20fdb0dec94266d248/grimp-3.14-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e089c9ab8aa755ff5af88c55891727783b4eb6b228e7bdf278e17209d954aa1e", size = 2502056, upload-time = "2025-12-10T17:54:41.537Z" }, + { url = "https://files.pythonhosted.org/packages/80/8f/774ce522de6a7e70fbeceeaeb6fbe502f5dfb8365728fb3bb4cb23463da8/grimp-3.14-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a424ad14d5deb56721ac24ab939747f72ab3d378d42e7d1f038317d33b052b77", size = 2515157, upload-time = "2025-12-10T17:54:55.874Z" }, ] [[package]] @@ -2052,7 +1382,7 @@ wheels = [ [[package]] name = "hatch" -version = "1.16.2" +version = "1.16.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backports-zstd", marker = "python_full_version < '3.14'" }, @@ -2065,6 +1395,7 @@ dependencies = [ { name = "pexpect" }, { name = "platformdirs" }, { name = "pyproject-hooks" }, + { name = "python-discovery" }, { name = "rich" }, { name = "shellingham" }, { name = "tomli-w" }, @@ -2073,14 +1404,14 @@ dependencies = [ { name = "uv" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/c1/8598996a6f264d430c530799dc65fb13942fb29092e35505039a5f2fb5dc/hatch-1.16.2.tar.gz", hash = "sha256:f288938da85b4b90e47d94788e19e9976dcd6fd53b48343ea251a2a37256a980", size = 5216569, upload-time = "2025-12-06T19:18:12.596Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d2/02/ce9c4c439fa3f195b21b4b5bb18b44d1076297c86477ef7e3d2de6064ec3/hatch-1.16.5.tar.gz", hash = "sha256:57bdeeaa72577859ce37091a5449583875331c06f9cb6af9077947ad40b3a1de", size = 5220741, upload-time = "2026-02-27T18:45:31.21Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/7c/bbed5611b1cd7b0b42b2dadb0721d9ccfa4fa9d03abc05e0f57c85a319c6/hatch-1.16.2-py3-none-any.whl", hash = "sha256:827eaf9813c63119f172b85975c5c27110a2306b07e5304c9d38527b0239052a", size = 140658, upload-time = "2025-12-06T19:18:10.573Z" }, + { url = "https://files.pythonhosted.org/packages/e4/8a/11ae7e271870f0ad8fa0012e4265982bebe0fdc21766b161fb8b8fc3aefc/hatch-1.16.5-py3-none-any.whl", hash = "sha256:d9b8047f2cd10d3349eb6e8f278ad728a04f91495aace305c257d5c2747188fb", size = 141269, upload-time = "2026-02-27T18:45:29.573Z" }, ] [[package]] name = "hatchling" -version = "1.28.0" +version = "1.29.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, @@ -2088,9 +1419,9 @@ dependencies = [ { name = "pluggy" }, { name = "trove-classifiers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0b/8e/e480359492affde4119a131da729dd26da742c2c9b604dff74836e47eef9/hatchling-1.28.0.tar.gz", hash = "sha256:4d50b02aece6892b8cd0b3ce6c82cb218594d3ec5836dbde75bf41a21ab004c8", size = 55365, upload-time = "2025-11-27T00:31:13.766Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/9c/b4cfe330cd4f49cff17fd771154730555fa4123beb7f292cf0098b4e6c20/hatchling-1.29.0.tar.gz", hash = "sha256:793c31816d952cee405b83488ce001c719f325d9cda69f1fc4cd750527640ea6", size = 55656, upload-time = "2026-02-23T19:42:06.539Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/a5/48cb7efb8b4718b1a4c0c331e3364a3a33f614ff0d6afd2b93ee883d3c47/hatchling-1.28.0-py3-none-any.whl", hash = "sha256:dc48722b68b3f4bbfa3ff618ca07cdea6750e7d03481289ffa8be1521d18a961", size = 76075, upload-time = "2025-11-27T00:31:12.544Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8a/44032265776062a89171285ede55a0bdaadc8ac00f27f0512a71a9e3e1c8/hatchling-1.29.0-py3-none-any.whl", hash = "sha256:50af9343281f34785fab12da82e445ed987a6efb34fd8c2fc0f6e6630dbcc1b0", size = 76356, upload-time = "2026-02-23T19:42:05.197Z" }, ] [[package]] @@ -2122,17 +1453,12 @@ wheels = [ ] [[package]] -name = "hydra-core" -version = "1.3.2" +name = "humanize" +version = "4.15.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "antlr4-python3-runtime" }, - { name = "omegaconf" }, - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/8e/07e42bc434a847154083b315779b0a81d567154504624e181caf2c71cd98/hydra-core-1.3.2.tar.gz", hash = "sha256:8a878ed67216997c3e9d88a8e72e7b4767e81af37afb4ea3334b269a4390a824", size = 3263494, upload-time = "2023-02-23T18:33:43.03Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/66/a3921783d54be8a6870ac4ccffcd15c4dc0dd7fcce51c6d63b8c63935276/humanize-4.15.0.tar.gz", hash = "sha256:1dd098483eb1c7ee8e32eb2e99ad1910baefa4b75c3aff3a82f4d78688993b10", size = 83599, upload-time = "2025-12-20T20:16:13.19Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, + { url = "https://files.pythonhosted.org/packages/c5/7b/bca5613a0c3b542420cf92bd5e5fb8ebd5435ce1011a091f66bb7693285e/humanize-4.15.0-py3-none-any.whl", hash = "sha256:b1186eb9f5a9749cd9cb8565aee77919dd7c8d076161cf44d70e59e3301e1769", size = 132203, upload-time = "2025-12-20T20:16:11.67Z" }, ] [[package]] @@ -2149,19 +1475,19 @@ wheels = [ [[package]] name = "hypothesis" -version = "6.150.1" +version = "6.153.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "sortedcontainers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/4e/cd3a398b9834386a79f4eb777dc4004ca439c1019d324771ec8196fc8354/hypothesis-6.150.1.tar.gz", hash = "sha256:dc79672b3771e92e6563ca0c56a24135438f319b257a1a1982deb8fbb791be89", size = 474924, upload-time = "2026-01-12T08:45:45.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/92/918fb03318c7ff9a271d7cad8eceb359d1069f17e84f5191d52c2970f18f/hypothesis-6.153.0.tar.gz", hash = "sha256:11616e5158fc485d62bae19d9cc69333237faa8050ad44a45218254a1ef272bb", size = 474030, upload-time = "2026-05-26T05:19:05.468Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/18/f43815244cd99b54d8ac9f44f9799bb7c0115e48e29bc7a1899c0589ee48/hypothesis-6.150.1-py3-none-any.whl", hash = "sha256:7badb28a0da323d6afaf25eae1c93932cb8ac06193355f5e080d6e6465a51da5", size = 542374, upload-time = "2026-01-12T08:45:41.854Z" }, + { url = "https://files.pythonhosted.org/packages/2e/20/96dc2387cf29a0ec75b427d62d3dde1f44c924719503babaac4c96806223/hypothesis-6.153.0-py3-none-any.whl", hash = "sha256:2aeda9bbb44ae0ee0bfa67ef744a25be05c1f804dca4eb6479c63518dc9f2900", size = 540326, upload-time = "2026-05-26T05:19:02.861Z" }, ] [[package]] name = "icecream" -version = "2.1.8" +version = "2.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asttokens" }, @@ -2169,30 +1495,51 @@ dependencies = [ { name = "executing" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d0/be/a89ec4132ddb4481f9587f736b8a01a07378f9e71de73549223ff1cd41f7/icecream-2.1.8.tar.gz", hash = "sha256:37269bbc62b02f0d85bfaf3a0eb4df272c967fad059f7ddcdaee5303ea2b2a62", size = 18337, upload-time = "2025-09-14T09:31:09.938Z" } +sdist = { url = "https://files.pythonhosted.org/packages/10/84/6ebc95844feae8a6a29c7fd57e9e3a7ac4817ffab384dc4f0ed53b8e3c46/icecream-2.2.0.tar.gz", hash = "sha256:9d7f244187f00a13f4ac77d176990e187e9c279d6cac4f7548e338291ad97343", size = 14267, upload-time = "2026-04-03T17:42:51.387Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/5f/f877d2cfcad41c0db98b120872f67b805fde5e6d407e584e9edfc9dec35c/icecream-2.1.8-py3-none-any.whl", hash = "sha256:10b1c39dcb54cb28eb487bac56c35dbf9c2b2f406d24340e1a615c3f17274852", size = 15714, upload-time = "2025-09-14T09:31:08.647Z" }, + { url = "https://files.pythonhosted.org/packages/7a/82/9707c7b0336bca53b75f52fc350956a93da66eb6be632b370bc933216fb4/icecream-2.2.0-py3-none-any.whl", hash = "sha256:f8df7343b3e787023eec22f42fbe4722df2f93099d394fd820b91e16b2e6cb56", size = 16707, upload-time = "2026-04-03T17:42:50.001Z" }, ] [[package]] name = "id" -version = "1.5.0" +version = "1.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "requests" }, + { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/22/11/102da08f88412d875fa2f1a9a469ff7ad4c874b0ca6fed0048fe385bdb3d/id-1.5.0.tar.gz", hash = "sha256:292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d", size = 15237, upload-time = "2024-12-04T19:53:05.575Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/04/c2156091427636080787aac190019dc64096e56a23b7364d3c1764ee3a06/id-1.6.1.tar.gz", hash = "sha256:d0732d624fb46fd4e7bc4e5152f00214450953b9e772c182c1c22964def1a069", size = 18088, upload-time = "2026-02-04T16:19:41.26Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/cb/18326d2d89ad3b0dd143da971e77afd1e6ca6674f1b1c3df4b6bec6279fc/id-1.5.0-py3-none-any.whl", hash = "sha256:f1434e1cef91f2cbb8a4ec64663d5a23b9ed43ef44c4c957d02583d61714c658", size = 13611, upload-time = "2024-12-04T19:53:03.02Z" }, + { url = "https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl", hash = "sha256:f5ec41ed2629a508f5d0988eda142e190c9c6da971100612c4de9ad9f9b237ca", size = 14689, upload-time = "2026-02-04T16:19:40.051Z" }, ] [[package]] name = "idna" -version = "3.11" +version = "3.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/88/bcf9709822fe69d02c2a6a77956c98ce6ea8ca8767a9aadcedc7eb6a2390/idna-3.16.tar.gz", hash = "sha256:d7a6da03db833450fca25d2358ac9ff06cd624577a4aea3a596d5c0f77b8e03d", size = 203770, upload-time = "2026-05-22T00:16:18.781Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/16/70255075a9859a0e3adb789b68ceb0e210dec03934245fd98d248226572f/idna-3.16-py3-none-any.whl", hash = "sha256:cc246e3a3f89580c3a951b5ad298ca4638078b2cdd4f115654332b5c26daded5", size = 74165, upload-time = "2026-05-22T00:16:16.698Z" }, +] + +[[package]] +name = "import-linter" +version = "2.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +dependencies = [ + { name = "click" }, + { name = "grimp" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/66/55b697a17bb15c6cb88d97d73716813f5427281527b90f02cc0a600abc6e/import_linter-2.11.tar.gz", hash = "sha256:5abc3394797a54f9bae315e7242dc98715ba485f840ac38c6d3192c370d0085e", size = 1153682, upload-time = "2026-03-06T12:11:38.198Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, + { url = "https://files.pythonhosted.org/packages/e9/aa/2ed2c89543632ded7196e0d93dcc6c7fe87769e88391a648c4a298ea864a/import_linter-2.11-py3-none-any.whl", hash = "sha256:3dc54cae933bae3430358c30989762b721c77aa99d424f56a08265be0eeaa465", size = 637315, upload-time = "2026-03-06T12:11:36.599Z" }, +] + +[package.optional-dependencies] +ui = [ + { name = "fastapi" }, + { name = "uvicorn" }, ] [[package]] @@ -2204,9 +1551,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] +[[package]] +name = "ipctk" +version = "1.6.0" +source = { registry = "https://pypi.org/simple/" } +dependencies = [ + { name = "numpy" }, + { name = "scipy" }, +] +wheels = [ + { url = "https://github.com/liblaf/mirrors-ipc-toolkit/releases/download/latest/ipctk-1.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5d662e45ba73a48f5c0f2de778b13e634367b63ac03a1259b34eb89cf0842fbc" }, + { url = "https://github.com/liblaf/mirrors-ipc-toolkit/releases/download/latest/ipctk-1.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1a32a4368cf3f67b6aedad483e9b0f60da11145a4631a6a8870be1e3598f1df" }, + { url = "https://github.com/liblaf/mirrors-ipc-toolkit/releases/download/latest/ipctk-1.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:043820b229b72bc9f34c3cc18375ce5d7b7369eec2fb817bd38ea5064e0af67a" }, + { url = "https://github.com/liblaf/mirrors-ipc-toolkit/releases/download/latest/ipctk-1.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c2878e75906ee5144b36b37fa85b4a2527fba631e9f12fceab903f4c8024b14" }, +] + +[[package]] +name = "ipctk-stubs" +version = "1.6.0" +source = { registry = "https://pypi.org/simple/" } +dependencies = [ + { name = "ipctk" }, +] +sdist = { url = "https://github.com/liblaf/mirrors-ipc-toolkit/releases/download/latest/ipctk_stubs-1.6.0.tar.gz", hash = "sha256:d1e64558fc0a68963c2b6a3f04f5d3ffad076fb02be85f653f8cd5eb5d3a255d" } +wheels = [ + { url = "https://github.com/liblaf/mirrors-ipc-toolkit/releases/download/latest/ipctk_stubs-1.6.0-py3-none-any.whl", hash = "sha256:e5b1879519342e516e3078172c7f9492559d118e9afdf1af0941a7aa075cbcf2" }, +] + [[package]] name = "ipykernel" -version = "7.1.0" +version = "7.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, @@ -2223,14 +1597,14 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/a4/4948be6eb88628505b83a1f2f40d90254cab66abf2043b3c40fa07dfce0f/ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db", size = 174579, upload-time = "2025-10-27T09:46:39.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/8d/b68b728e2d06b9e0051019640a40a9eb7a88fcd82c2e1b5ce70bef5ff044/ipykernel-7.2.0.tar.gz", hash = "sha256:18ed160b6dee2cbb16e5f3575858bc19d8f1fe6046a9a680c708494ce31d909e", size = 176046, upload-time = "2026-02-06T16:43:27.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c", size = 117968, upload-time = "2025-10-27T09:46:37.805Z" }, + { url = "https://files.pythonhosted.org/packages/82/b9/e73d5d9f405cba7706c539aa8b311b49d4c2f3d698d9c12f815231169c71/ipykernel-7.2.0-py3-none-any.whl", hash = "sha256:3bbd4420d2b3cc105cbdf3756bfc04500b1e52f090a90716851f3916c62e1661", size = 118788, upload-time = "2026-02-06T16:43:25.149Z" }, ] [[package]] name = "ipython" -version = "9.9.0" +version = "9.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -2240,13 +1614,14 @@ dependencies = [ { name = "matplotlib-inline" }, { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "prompt-toolkit" }, + { name = "psutil" }, { name = "pygments" }, { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/46/dd/fb08d22ec0c27e73c8bc8f71810709870d51cadaf27b7ddd3f011236c100/ipython-9.9.0.tar.gz", hash = "sha256:48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220", size = 4425043, upload-time = "2026-01-05T12:36:46.233Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/c4/87cda5842cf5c31837c06ddb588e11c3c35d8ece89b7a0108c06b8c9b00a/ipython-9.13.0.tar.gz", hash = "sha256:7e834b6afc99f020e3f05966ced34792f40267d64cb1ea9043886dab0dde5967", size = 4430549, upload-time = "2026-04-24T12:24:55.221Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/86/92/162cfaee4ccf370465c5af1ce36a9eacec1becb552f2033bb3584e6f640a/ipython-9.9.0-py3-none-any.whl", hash = "sha256:b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b", size = 621431, upload-time = "2026-01-05T12:36:44.669Z" }, + { url = "https://files.pythonhosted.org/packages/b9/86/3060e8029b7cc505cce9a0137431dda81d0a3fde93a8f0f50ee0bf37a795/ipython-9.13.0-py3-none-any.whl", hash = "sha256:57f9d4639e20818d328d287c7b549af3d05f12486ea8f2e7f73e52a36ec4d201", size = 627274, upload-time = "2026-04-24T12:24:53.038Z" }, ] [[package]] @@ -2261,30 +1636,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] -[[package]] -name = "iterative-telemetry" -version = "0.0.10" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "appdirs" }, - { name = "distro" }, - { name = "filelock" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d2/b6/f17d6e80252b7be6ca4d9463db226ce7863d26287f16f1347e981cd2f3d8/iterative_telemetry-0.0.10.tar.gz", hash = "sha256:7fde6111de6fa4acf5a95a6190cc9cc5d17d835a815f0a18ece201f6031f4ed6", size = 20080, upload-time = "2025-02-11T02:47:53.391Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/82/7331bbf84f1ccce7a2dd09a580c7bad38417cf35c84dc0b81bce2cf779b9/iterative_telemetry-0.0.10-py3-none-any.whl", hash = "sha256:e58ffb60d22c3de8dad6a114697cc61f6c14911cae484bf90df394e0d6553603", size = 10644, upload-time = "2025-02-11T02:47:51.273Z" }, -] - -[[package]] -name = "itsdangerous" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, -] - [[package]] name = "jaraco-classes" version = "3.4.0" @@ -2299,28 +1650,28 @@ wheels = [ [[package]] name = "jaraco-context" -version = "6.1.0" +version = "6.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/9c/a788f5bb29c61e456b8ee52ce76dbdd32fd72cd73dd67bc95f42c7a8d13c/jaraco_context-6.1.0.tar.gz", hash = "sha256:129a341b0a85a7db7879e22acd66902fda67882db771754574338898b2d5d86f", size = 15850, upload-time = "2026-01-13T02:53:53.847Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/50/4763cd07e722bb6285316d390a164bc7e479db9d90daa769f22578f698b4/jaraco_context-6.1.2.tar.gz", hash = "sha256:f1a6c9d391e661cc5b8d39861ff077a7dc24dc23833ccee564b234b81c82dfe3", size = 16801, upload-time = "2026-03-20T22:13:33.922Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/48/aa685dbf1024c7bd82bede569e3a85f82c32fd3d79ba5fea578f0159571a/jaraco_context-6.1.0-py3-none-any.whl", hash = "sha256:a43b5ed85815223d0d3cfdb6d7ca0d2bc8946f28f30b6f3216bda070f68badda", size = 7065, upload-time = "2026-01-13T02:53:53.031Z" }, + { url = "https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl", hash = "sha256:bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535", size = 7871, upload-time = "2026-03-20T22:13:32.808Z" }, ] [[package]] name = "jaraco-functools" -version = "4.4.0" +version = "4.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/27/056e0638a86749374d6f57d0b0db39f29509cce9313cf91bdc0ac4d91084/jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb", size = 19943, upload-time = "2025-12-21T09:29:43.6Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/cf/ea4ef2920830dea3f5ab2ea4da6fb67724e6dca80ee2553788c3607243d0/jaraco_functools-4.5.0.tar.gz", hash = "sha256:3bb5665ea4a020cf78a7040e89154c77edadb3ca74f366479669c5999aa70b03", size = 20272, upload-time = "2026-05-15T21:34:10.025Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/c4/813bb09f0985cb21e959f21f2464169eca882656849adf727ac7bb7e1767/jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176", size = 10481, upload-time = "2025-12-21T09:29:42.27Z" }, + { url = "https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl", hash = "sha256:79ce39246eddbde4b3a03b77ea5f0f7878dc669b166a66cf3fa8e266aa3fa2f4", size = 10594, upload-time = "2026-05-15T21:34:08.595Z" }, ] [[package]] name = "jax" -version = "0.8.2" +version = "0.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jaxlib" }, @@ -2329,93 +1680,44 @@ dependencies = [ { name = "opt-einsum" }, { name = "scipy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e6/25/5efb46e5492076622d9150ed394da97ef9aad393aa52f7dd7e980f836e1f/jax-0.8.2.tar.gz", hash = "sha256:1a685ded06a8223a7b52e45e668e406049dbbead02873f2b5a4d881ba7b421ae", size = 2505776, upload-time = "2025-12-18T18:41:59.274Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/49/b082387119c4a6bc7596296bbdc6bce034628cdd2845ebb27304cbca3624/jax-0.10.1.tar.gz", hash = "sha256:11672410faf8752429eb9a131de203dc488a2a3a012d509baa2b39878008810d", size = 2718178, upload-time = "2026-05-20T14:54:09.441Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/f7/ae4ecf183d9693cd5fcce7ee063c5e54f173b66dc80a8a79951861e1b557/jax-0.8.2-py3-none-any.whl", hash = "sha256:d0478c5dc74406441efcd25731166a65ee782f13c352fa72dc7d734351909355", size = 2925344, upload-time = "2025-12-18T18:39:38.645Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6e/5087e0347188f6970aba1ffbd0018754d23c3f3461e9f21785f2f27a02c2/jax-0.10.1-py3-none-any.whl", hash = "sha256:47f3192c76e9e3358de1b106a8af5e943fccb10510903f25d96ea53652729134", size = 3150973, upload-time = "2026-05-20T14:51:30.066Z" }, ] [package.optional-dependencies] -cuda12 = [ - { name = "jax-cuda12-plugin", extra = ["with-cuda"] }, - { name = "jaxlib" }, -] cuda13 = [ { name = "jax-cuda13-plugin", extra = ["with-cuda"] }, { name = "jaxlib" }, ] [[package]] -name = "jax-cuda12-pjrt" -version = "0.8.2" +name = "jax-cuda13-pjrt" +version = "0.10.1" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/57/633225274a1a8812607eebba6be88d63fa5bec3d87ac6979721f02d32f52/jax_cuda12_pjrt-0.8.2-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:717a1b196a642409ce195ddf031c20bbeadcc886f55e49a1d3f4927373aeedae", size = 147769954, upload-time = "2025-12-18T18:39:41.686Z" }, - { url = "https://files.pythonhosted.org/packages/53/f2/44ad0ce1d115f0f6be10f4af0ca05a18afb838b06e6ca6b01ba4b0137421/jax_cuda12_pjrt-0.8.2-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:e3bab41ca7c48e4163db9e7efd271b3aa85f0fe45f5ed0708d6bbed93a59f977", size = 153684891, upload-time = "2025-12-18T18:39:47.172Z" }, + { url = "https://files.pythonhosted.org/packages/8c/8e/57eebc0c4d6d63bad64f7443cbc96d3e3c5535fa4992af58568ad7388cbb/jax_cuda13_pjrt-0.10.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7dd9f518876857e238a9a63abc185b277e9435470cc286b92209ef79d51d03cf", size = 113795506, upload-time = "2026-05-20T14:52:06.61Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/05adf1f245de3b37518ba1e7e668cdc38ec0291313ab63fc0768089f8baa/jax_cuda13_pjrt-0.10.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:af8042c7697fb6faa0cc4851d4f5e0504878ea1f6b6fc067255f449016336a6f", size = 119552553, upload-time = "2026-05-20T14:52:11.087Z" }, ] [[package]] -name = "jax-cuda12-plugin" -version = "0.8.2" +name = "jax-cuda13-plugin" +version = "0.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "jax-cuda12-pjrt" }, + { name = "jax-cuda13-pjrt" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/e1/b57bdb540fdaddbd4d226491773f00f30fedd0d241f0511a9e26db7a83e5/jax_cuda12_plugin-0.8.2-cp312-cp312-manylinux_2_27_aarch64.whl", hash = "sha256:403d5e07731b5cdac3bd9fb3f448bd8480062cb2c0ab61ea2ad23fcd0a65479a", size = 5670354, upload-time = "2025-12-18T18:39:53.01Z" }, - { url = "https://files.pythonhosted.org/packages/60/a5/3a4f6585d530516f8a70494e9e916a611e01733ce3174dacb45d48a5ee63/jax_cuda12_plugin-0.8.2-cp312-cp312-manylinux_2_27_x86_64.whl", hash = "sha256:20165861b3d3e66ebb2c0f63a547d1d5ee17ea44ac3be7153c7908c9ca8c88f3", size = 5684435, upload-time = "2025-12-18T18:39:54.213Z" }, - { url = "https://files.pythonhosted.org/packages/8c/84/42fe91a595d119b51a53acfa43266c400efd09804b9e1945c8658d5ff524/jax_cuda12_plugin-0.8.2-cp313-cp313-manylinux_2_27_aarch64.whl", hash = "sha256:637387dc3408cd204562668502f9e95f76c6edde0a6d2e48f055162dc2aebf0d", size = 5670615, upload-time = "2025-12-18T18:39:55.428Z" }, - { url = "https://files.pythonhosted.org/packages/1c/38/4ba2486f95fcf2120723932feacdded438e785258148b18a703cd1177e41/jax_cuda12_plugin-0.8.2-cp313-cp313-manylinux_2_27_x86_64.whl", hash = "sha256:82c6798be66bf8c773386918e4c8e5cd8119753f3bfb3ca4bbc46818283750c6", size = 5684138, upload-time = "2025-12-18T18:39:56.574Z" }, - { url = "https://files.pythonhosted.org/packages/74/94/0b6651b6a37a35b9ae30011e4698dc1705165e3fef2d4d54a4cbad852bd3/jax_cuda12_plugin-0.8.2-cp313-cp313t-manylinux_2_27_aarch64.whl", hash = "sha256:1b4828242d57f233b394d17ebaa599c503c1fb9b7c754012a06eb84dbc935fc8", size = 5685718, upload-time = "2025-12-18T18:39:57.765Z" }, - { url = "https://files.pythonhosted.org/packages/dd/0a/a5c40bd3d870e02edfbe45ab1c9d69e3ec19f6b2bf3c714cf8d8717b2fe6/jax_cuda12_plugin-0.8.2-cp313-cp313t-manylinux_2_27_x86_64.whl", hash = "sha256:dd4f7c34d4512ff5a36fd1b01584ef7781cad615e3f9e71880eae2f4998e5108", size = 5691685, upload-time = "2025-12-18T18:39:59.035Z" }, - { url = "https://files.pythonhosted.org/packages/84/a6/2ed072a156a26f47b0f3a537dcd70ad027b5afafd5c903221bc64b0bb2e3/jax_cuda12_plugin-0.8.2-cp314-cp314-manylinux_2_27_aarch64.whl", hash = "sha256:58c51473fc622e03138035985f741833564d70a4bd5a2178f61b62cdaa32ff94", size = 5671398, upload-time = "2025-12-18T18:40:00.328Z" }, - { url = "https://files.pythonhosted.org/packages/27/58/a5a27d4677d6890570f7e58cecd51891469cb620e6f64c8faed4935d93d0/jax_cuda12_plugin-0.8.2-cp314-cp314-manylinux_2_27_x86_64.whl", hash = "sha256:a5898bac1d8ab6020b54546440256409f2c66bcbbb3a1099ca473c84843addad", size = 5684741, upload-time = "2025-12-18T18:40:01.507Z" }, - { url = "https://files.pythonhosted.org/packages/3d/79/55891d955dc680f915916680fc88b351a9ca02664fc90b7eae7659951d89/jax_cuda12_plugin-0.8.2-cp314-cp314t-manylinux_2_27_aarch64.whl", hash = "sha256:d68a6d8b4a45ee561746bac7a6468da8203832626b0b39ad4ac43011f61f875d", size = 5685940, upload-time = "2025-12-18T18:40:03.174Z" }, - { url = "https://files.pythonhosted.org/packages/f8/35/42d5c9adf99f47c4f909029ff4f99cb65caef13044984fcfcb6ce89f536c/jax_cuda12_plugin-0.8.2-cp314-cp314t-manylinux_2_27_x86_64.whl", hash = "sha256:377e4be17e22dde0343b3f3c05bf69235b3dbf11d766cca9c5a93da47971dcb7", size = 5692440, upload-time = "2025-12-18T18:40:04.411Z" }, -] - -[package.optional-dependencies] -with-cuda = [ - { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvcc-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nvshmem-cu12", marker = "sys_platform == 'linux'" }, -] - -[[package]] -name = "jax-cuda13-pjrt" -version = "0.8.2" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/7a/87e266102012c1ec7684429193d4da57621ca96136323325488ab891f236/jax_cuda13_pjrt-0.8.2-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:370e9cb9a76af6a6b00e8f6c6ae8e5a0158886b65994a114cf3acf56ea1570f3", size = 104805710, upload-time = "2025-12-18T18:40:06.877Z" }, - { url = "https://files.pythonhosted.org/packages/11/b2/de494c8420cb95bdc29462074e6c25e035935c60373d1c2d92ce717b98d9/jax_cuda13_pjrt-0.8.2-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:c0ebc284d4bea9c0b278017b4bb62eb871755fe582cbf22ce1fb770d30fb9af6", size = 110716417, upload-time = "2025-12-18T18:40:10.978Z" }, -] - -[[package]] -name = "jax-cuda13-plugin" -version = "0.8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jax-cuda13-pjrt" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/d3/7187d27024edc695d6a96159353e9a2974ce1867a91a1abdfd612e255e82/jax_cuda13_plugin-0.8.2-cp312-cp312-manylinux_2_27_aarch64.whl", hash = "sha256:6703552ee10b6b41b43fe4fc62b4672bec13d271eb709a29bf14b0fa1ec805dd", size = 5658033, upload-time = "2025-12-18T18:40:18.398Z" }, - { url = "https://files.pythonhosted.org/packages/ce/32/f66b2a4b2c54da0a77cfae11d8acf7e2270f425b2c5ebbfb830143ff0c9b/jax_cuda13_plugin-0.8.2-cp312-cp312-manylinux_2_27_x86_64.whl", hash = "sha256:d5f9470db46aee8a64e9ab7817927335b77c6d3698d5113e0da2dd962c1468c4", size = 5675498, upload-time = "2025-12-18T18:40:19.829Z" }, - { url = "https://files.pythonhosted.org/packages/28/e1/f3d00c60d5e3b64f56998dca6df1cacca4710698da32abd296f81aa7c451/jax_cuda13_plugin-0.8.2-cp313-cp313-manylinux_2_27_aarch64.whl", hash = "sha256:0ab3a13f798f973416754cb00b1696a8e6d2425c39496e2145293661bcd28446", size = 5658522, upload-time = "2025-12-18T18:40:22.031Z" }, - { url = "https://files.pythonhosted.org/packages/bc/77/6e8b0c0d7db6c70b5fd154cea75976015ae59218c91c32aee4050b77e4d8/jax_cuda13_plugin-0.8.2-cp313-cp313-manylinux_2_27_x86_64.whl", hash = "sha256:f35f687d9b839365a49c2b0052eaeb6b9f0a9879813b4fa020f8d9caa3ddde46", size = 5675365, upload-time = "2025-12-18T18:40:23.711Z" }, - { url = "https://files.pythonhosted.org/packages/29/7e/185989d92700005945bbe84f0b5327606837407f0c2935e038bd2dd14fb8/jax_cuda13_plugin-0.8.2-cp313-cp313t-manylinux_2_27_aarch64.whl", hash = "sha256:9835076d0a917345700370cfaee5cfd7876c0b0982e99206a8b4848af0ea6e5e", size = 5672518, upload-time = "2025-12-18T18:40:25.083Z" }, - { url = "https://files.pythonhosted.org/packages/73/6e/218e5863ff9e75a0bc6f81f82a81fcfdd9470e57d8bc73135bc865d9f82a/jax_cuda13_plugin-0.8.2-cp313-cp313t-manylinux_2_27_x86_64.whl", hash = "sha256:fa6a6faf3130d6ef05f9ee6cbc27e0a2e4db0f23720136403991eccb3a0144af", size = 5683132, upload-time = "2025-12-18T18:40:27.107Z" }, - { url = "https://files.pythonhosted.org/packages/0b/bb/6f1d8091dd6ccd532a9ed14eda4ae6f7f46a1bd22a3ad63bf782fc5ef25f/jax_cuda13_plugin-0.8.2-cp314-cp314-manylinux_2_27_aarch64.whl", hash = "sha256:f1643b216ccb41a2d7c0e240359c729c96c5eca76e4525ffcd6313049e348b9a", size = 5659155, upload-time = "2025-12-18T18:40:28.84Z" }, - { url = "https://files.pythonhosted.org/packages/1f/a3/80303f91877bb988a6d94b88e5c04ebde5a0037940cab067dc346809268c/jax_cuda13_plugin-0.8.2-cp314-cp314-manylinux_2_27_x86_64.whl", hash = "sha256:8fe2c5874cbae18a01a0fa722dfbd547b5504e7bf42aaaae6ad3e1b676e8daa2", size = 5675899, upload-time = "2025-12-18T18:40:30.443Z" }, - { url = "https://files.pythonhosted.org/packages/7c/ee/1db7f85934d1a413ba2fd1a57402815f43f1ceda242194cf1b2f7d2d835f/jax_cuda13_plugin-0.8.2-cp314-cp314t-manylinux_2_27_aarch64.whl", hash = "sha256:bb059d99eb960718358f82f3eaa0829f96fc7d7e978ded821f2c40256a8aee4b", size = 5672830, upload-time = "2025-12-18T18:40:32.006Z" }, - { url = "https://files.pythonhosted.org/packages/82/d4/d851bc630651411bf35613cce859fdfa7a51da8c367129dbadcdf74f9879/jax_cuda13_plugin-0.8.2-cp314-cp314t-manylinux_2_27_x86_64.whl", hash = "sha256:950f2c1f2e0f5e13893c4c27a4df540a96a26ebd15d7954fa85ffb8cc8b1d9a1", size = 5683650, upload-time = "2025-12-18T18:40:33.656Z" }, + { url = "https://files.pythonhosted.org/packages/88/1e/6f8135ac3f6dbee231392131cb278fabccbceddbc0a1a160a579bfe7b37a/jax_cuda13_plugin-0.10.1-cp312-cp312-manylinux_2_27_aarch64.whl", hash = "sha256:a4f8c2ad46fcf6edbe09b66578ec5fd7f8d189fcdb5d0a2500e473c5eebfc824", size = 7254249, upload-time = "2026-05-20T14:52:18.2Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c2/6f9911b2a7f1f333320b3600118f13b57b43248288f2e4a3b276aa95c85e/jax_cuda13_plugin-0.10.1-cp312-cp312-manylinux_2_27_x86_64.whl", hash = "sha256:6799bf4e59574f5a49638fa4e1b6a43ddea75cc7eb19f726c4f6d94aa1e05cdd", size = 7306406, upload-time = "2026-05-20T14:52:20.056Z" }, + { url = "https://files.pythonhosted.org/packages/47/cf/d6d807cbbb4e61103291a34856b32766b252c96a39897bf4e0143942f030/jax_cuda13_plugin-0.10.1-cp313-cp313-manylinux_2_27_aarch64.whl", hash = "sha256:a31e7859ecebfa0680eca260ea64046d5c54c7596d734897526ebeb89d54e48b", size = 7255426, upload-time = "2026-05-20T14:52:21.663Z" }, + { url = "https://files.pythonhosted.org/packages/80/80/ec043edee9db3debf5074fe5fd0431c6fea3f94d1b9a53458b35cd30544d/jax_cuda13_plugin-0.10.1-cp313-cp313-manylinux_2_27_x86_64.whl", hash = "sha256:9070b1af00ebc7f5d6f20aafb789058f53812afd85e237dce0f1709a52cfd0f8", size = 7306050, upload-time = "2026-05-20T14:52:23.216Z" }, + { url = "https://files.pythonhosted.org/packages/44/94/d480e1fb807cf67c3796200dca01cbe4c75dfa82ce64460b90c944e218cf/jax_cuda13_plugin-0.10.1-cp313-cp313t-manylinux_2_27_aarch64.whl", hash = "sha256:6baea37967bd9759f5bc014d8d6291782332478f746302f46fd08a9009a23304", size = 7268591, upload-time = "2026-05-20T14:52:24.77Z" }, + { url = "https://files.pythonhosted.org/packages/3b/7f/da438722130ca56ec5b15a3318c477418088aaa818480280816e6ce6259d/jax_cuda13_plugin-0.10.1-cp313-cp313t-manylinux_2_27_x86_64.whl", hash = "sha256:699a984d67b040f6dd26bae1b9326d748c62cafee769a9050085f953b42db0e5", size = 7316498, upload-time = "2026-05-20T14:52:26.47Z" }, + { url = "https://files.pythonhosted.org/packages/02/e7/3a0194e0e6b74bf22e7bf4bd495042204aa5eaee278823780fc3aef9acb5/jax_cuda13_plugin-0.10.1-cp314-cp314-manylinux_2_27_aarch64.whl", hash = "sha256:b836b1eb29ae3e64d435def9c74b0ced435c3584cc17a29f3ff52c549274a059", size = 7256172, upload-time = "2026-05-20T14:52:28.037Z" }, + { url = "https://files.pythonhosted.org/packages/c2/0c/63c9e91d038ee0aaef39bed13efb526ed6bf5c4ced8d5ea5dcdd88868c34/jax_cuda13_plugin-0.10.1-cp314-cp314-manylinux_2_27_x86_64.whl", hash = "sha256:a556bd9e68155c7a8a43148fcdd2b582678e2270b86ea1749b1880be0aca7d2e", size = 7306774, upload-time = "2026-05-20T14:52:30.429Z" }, + { url = "https://files.pythonhosted.org/packages/9c/42/537fa75f685b90175c7e10239ec7ad713c759e6057c4d695719feaa1ebf2/jax_cuda13_plugin-0.10.1-cp314-cp314t-manylinux_2_27_aarch64.whl", hash = "sha256:ee4b25a4f00a696b2f45c2a3a4693aeeed4408914c3784496d747e6655172e20", size = 7269049, upload-time = "2026-05-20T14:52:32.302Z" }, + { url = "https://files.pythonhosted.org/packages/f4/c1/a40da5ef96b0d030a22f31c01e3b372e2f7527b85df592ca907d44824576/jax_cuda13_plugin-0.10.1-cp314-cp314t-manylinux_2_27_x86_64.whl", hash = "sha256:24315ca6d00c992125a5bd38471e1c3bd30c9d0f3c26286ca29fd82f29883452", size = 7317313, upload-time = "2026-05-20T14:52:33.894Z" }, ] [package.optional-dependencies] @@ -2437,7 +1739,7 @@ with-cuda = [ [[package]] name = "jaxlib" -version = "0.8.2" +version = "0.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ml-dtypes" }, @@ -2445,48 +1747,48 @@ dependencies = [ { name = "scipy" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/77/18ac0ac08c76bf12ed47b0c2d7d35f3fc3d065bd105b36937901eab1455c/jaxlib-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:023de6f3f56da2af7037970996500586331fdb50b530ecbb54b9666da633bd00", size = 55938204, upload-time = "2025-12-18T18:40:50.859Z" }, - { url = "https://files.pythonhosted.org/packages/33/c5/fa809591cbddc0d7bbef9c95962a0b521ae4a168b0ff375cadf37840b97d/jaxlib-0.8.2-cp312-cp312-manylinux_2_27_aarch64.whl", hash = "sha256:3b16e50c5b730c9dd0a49e55f1acfaa722b00b1af0522a591558dcc0464252f2", size = 74550881, upload-time = "2025-12-18T18:40:54.491Z" }, - { url = "https://files.pythonhosted.org/packages/e0/bf/e386c4bbfda3fb326a01594cc46c8ac90cdeeeacee4c553d9e3848f75893/jaxlib-0.8.2-cp312-cp312-manylinux_2_27_x86_64.whl", hash = "sha256:2b9789bd08f8b0cc5a5c12ae896fe432d5942e32e417091b8b5a96a9a6fd5cf1", size = 80135127, upload-time = "2025-12-18T18:40:58.808Z" }, - { url = "https://files.pythonhosted.org/packages/bf/4c/0c90b1e2b47fdf34cd352a01c42c2628d115a6f015d4a3230060bb0d97af/jaxlib-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:f472cc72e3058e50b5f0230b236d5a1183bf6c3d5423d2a52eff07bcf34908de", size = 60361039, upload-time = "2025-12-18T18:41:02.367Z" }, - { url = "https://files.pythonhosted.org/packages/c5/22/c0ec75e43a13b2457d78d509f49b49a57fa302ffced4f4a2778e428cb0a6/jaxlib-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d006db96be020c8165212a1216372f8acac4ff4f8fb067743d694ef2b301ace", size = 55939058, upload-time = "2025-12-18T18:41:06.199Z" }, - { url = "https://files.pythonhosted.org/packages/c5/e2/2d3eff7a49ca37ef6929bf67b8ab4c933ab53a115060e60c239702028568/jaxlib-0.8.2-cp313-cp313-manylinux_2_27_aarch64.whl", hash = "sha256:7c304f3a016965b9d1f5239a8a0399a73925f5604fe914c5ca66ecf734bf6422", size = 74550207, upload-time = "2025-12-18T18:41:09.79Z" }, - { url = "https://files.pythonhosted.org/packages/6b/e0/91e5762a7ddb6351b07c742ca407cd28e26043d6945d6228b6c1b0881a45/jaxlib-0.8.2-cp313-cp313-manylinux_2_27_x86_64.whl", hash = "sha256:1bfbcf6c3de221784fa4cdb6765a09d71cb4298b15626b3d0409b3dfcd8a8667", size = 80133534, upload-time = "2025-12-18T18:41:14.193Z" }, - { url = "https://files.pythonhosted.org/packages/85/68/25b38673b07a808616ce7b6efb3eed491f983f3373a09cbbd03f67178563/jaxlib-0.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:f205e91c3a152a2a76c0bc59a6a2de03e87ec261b91e8812922777185e7b08f5", size = 60358239, upload-time = "2025-12-18T18:41:17.661Z" }, - { url = "https://files.pythonhosted.org/packages/bc/da/753c4b16297576e33cb41bf605d27fefd016867d365861c43c505afd1579/jaxlib-0.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f28edac8c226fc07fa3e8af6f9defede8ac2c307429e3291edce8739d39becc9", size = 56035453, upload-time = "2025-12-18T18:41:21.004Z" }, - { url = "https://files.pythonhosted.org/packages/4c/3d/891f967b01a60de1dbcb8c40b6fee28cc39c670c27c919756c41d8c89ebe/jaxlib-0.8.2-cp313-cp313t-manylinux_2_27_aarch64.whl", hash = "sha256:7da8127557c786264049ae55460d1b8d04cc3cdf0403a087f2fc1e6d313ec722", size = 74661142, upload-time = "2025-12-18T18:41:24.454Z" }, - { url = "https://files.pythonhosted.org/packages/e2/5c/3f1476cd6cbc0e2aa661cb750489739aeda500473d91dc79837b5bc9247f/jaxlib-0.8.2-cp313-cp313t-manylinux_2_27_x86_64.whl", hash = "sha256:28eec1a4e0639a0d8702cea3cb70dd3663053dbfa344452994ea48dc6ceadaa5", size = 80238500, upload-time = "2025-12-18T18:41:28.647Z" }, - { url = "https://files.pythonhosted.org/packages/d8/9d/dca93d916bf8664d7a2bb73ea3d219028dabbe382c31774348963287356a/jaxlib-0.8.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:beffb004e7eeb5c9afb24439e2b2cf45a4ee3e3e8adf45e355edf2af62acf8b8", size = 55943240, upload-time = "2025-12-18T18:41:32.095Z" }, - { url = "https://files.pythonhosted.org/packages/f0/47/7407d010db7f5ec1c25a8b8d379defc0c8b4daaaa829c88355e03c0ad314/jaxlib-0.8.2-cp314-cp314-manylinux_2_27_aarch64.whl", hash = "sha256:68108dff0de74adc468016be9a19f80efe48c660c0d5a122287094b44b092afc", size = 74560018, upload-time = "2025-12-18T18:41:36.154Z" }, - { url = "https://files.pythonhosted.org/packages/5e/27/2e6032727e41ce74914277478021140947af59127d68aa9e6f3776b428fd/jaxlib-0.8.2-cp314-cp314-manylinux_2_27_x86_64.whl", hash = "sha256:e6a97dfb0232eed9a2bb6e3828e4f682dbac1a7fea840bfda574cae2dbf5faf9", size = 80156235, upload-time = "2025-12-18T18:41:40.227Z" }, - { url = "https://files.pythonhosted.org/packages/b3/8c/af5a00b07a446414edf6b84a7397eab02cf01ba44b6ae1fce7798ce4c127/jaxlib-0.8.2-cp314-cp314-win_amd64.whl", hash = "sha256:05b958f497e49824c432e734bb059723b7dfe69e2ad696a9f9c8ad82fff7c3f8", size = 62673493, upload-time = "2025-12-18T18:41:43.991Z" }, - { url = "https://files.pythonhosted.org/packages/4d/eb/ad70fe97fda465d536625bef39ee381a7f8fed1f1bf0bc296510bac32ec5/jaxlib-0.8.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:964626f581beab31ee6826b228fcc2ec5181b05cecf94a528dff97921c145dbc", size = 56037334, upload-time = "2025-12-18T18:41:47.407Z" }, - { url = "https://files.pythonhosted.org/packages/34/97/0741440c66a49ec3702f6c28a5608c7543243b1728c3f465505ed5bfe7d2/jaxlib-0.8.2-cp314-cp314t-manylinux_2_27_aarch64.whl", hash = "sha256:a397ea7dcb37d689ce79173eeb99b2f1347637a36be9a27f20ae6848bfc58bfc", size = 74661591, upload-time = "2025-12-18T18:41:51.285Z" }, - { url = "https://files.pythonhosted.org/packages/7c/c4/388797324c201830ac414562eb6697fa38837f40852bdc4d0f464d65889c/jaxlib-0.8.2-cp314-cp314t-manylinux_2_27_x86_64.whl", hash = "sha256:aa8701b6356f098e8452c3cec762fb5f706fcb8f67ffd65964f63982479aa23b", size = 80236629, upload-time = "2025-12-18T18:41:56.05Z" }, + { url = "https://files.pythonhosted.org/packages/53/b4/fdb6e989b142d8a8d2093f342cbc5323fe0d4a7217fd899c8ddf9e108a5a/jaxlib-0.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7a4399c7429c87ee6f7ab1e5712c5548ecfabde974ee9f4a12957fea4e35efb8", size = 60816137, upload-time = "2026-05-20T14:52:53.028Z" }, + { url = "https://files.pythonhosted.org/packages/a7/29/0b4eaaca005708751ff301903a2ca760dcc34175dadb7536498c57a7de85/jaxlib-0.10.1-cp312-cp312-manylinux_2_27_aarch64.whl", hash = "sha256:12126603ba472300c62480f86d20972d563143041039d9dea349ad510aa6123c", size = 80294034, upload-time = "2026-05-20T14:52:56.941Z" }, + { url = "https://files.pythonhosted.org/packages/38/69/2912ab63036e21c72748019e1d8e09e8a1fc3368b3e83fc27898a1858575/jaxlib-0.10.1-cp312-cp312-manylinux_2_27_x86_64.whl", hash = "sha256:f3cdf5b7f48470ab5455ab79aab746419694ccb6b52651cc2ce5fb27def03588", size = 85828774, upload-time = "2026-05-20T14:53:01.749Z" }, + { url = "https://files.pythonhosted.org/packages/ec/8f/993ea419eca6f34fe12613e22a03b93f40e5b1e8e0df18d4060e1313a1fc/jaxlib-0.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:0acf3f8e7dca9074c0327f0f61502845792ca9f82fab23b841b00daa78e85488", size = 64830187, upload-time = "2026-05-20T14:53:05.932Z" }, + { url = "https://files.pythonhosted.org/packages/cf/76/3b637d4def229015a3035a7b44fac0dcf2536ae337540cdbffc651334d4e/jaxlib-0.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4167213aa00f14bb0d8fbd90f9ded75e976f71ce8baf8c3c44e04c8fb80ea0c1", size = 60815855, upload-time = "2026-05-20T14:53:11.718Z" }, + { url = "https://files.pythonhosted.org/packages/5b/76/9a1971bc9edb8728a7ba86d2693127ee46add9811230b8452321415fd4e9/jaxlib-0.10.1-cp313-cp313-manylinux_2_27_aarch64.whl", hash = "sha256:e53223d8f6861d33c02dd02343fa464700401ff5363784d37c33407218e328b8", size = 80293947, upload-time = "2026-05-20T14:53:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/20/1d/69a0ba52fb546261e71a7209378ee6059950e9c088a2a18355e01509f474/jaxlib-0.10.1-cp313-cp313-manylinux_2_27_x86_64.whl", hash = "sha256:bb073a1224e659e01e8d32d47c000edb52ec2aa8ba97ec22b2228b3a46e5c167", size = 85829861, upload-time = "2026-05-20T14:53:19.773Z" }, + { url = "https://files.pythonhosted.org/packages/a9/df/48659e2ee57705c63a51525f810fe3e0c87af4ca9f89d4738281a872d58e/jaxlib-0.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:6449f1d4a22324f5f02c843360475783f9fd1d353fe711806cbf4e927d1360ae", size = 64828863, upload-time = "2026-05-20T14:53:24.562Z" }, + { url = "https://files.pythonhosted.org/packages/c7/34/3f7c95ee1b2555d611f836988a49b522c04b8d186e0528f91d45118089bf/jaxlib-0.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:72a7db1242d6b7773340e430c244e73a8d13f82ce83933c0529a8b4b1520dcf3", size = 60934063, upload-time = "2026-05-20T14:53:28.549Z" }, + { url = "https://files.pythonhosted.org/packages/3a/84/855a2395d299e00e1d9ffd0aecd516b52b81780f3e4ef537527be6d8c1fc/jaxlib-0.10.1-cp313-cp313t-manylinux_2_27_aarch64.whl", hash = "sha256:649c26ca92e9bbffb3c35226b37893916f20e6b89fb3911ce79b39e5cfb27b46", size = 80402500, upload-time = "2026-05-20T14:53:32.444Z" }, + { url = "https://files.pythonhosted.org/packages/be/35/153e91a9c770a981d525d845b3f4cdb71a1e119681594a33908e9536bdff/jaxlib-0.10.1-cp313-cp313t-manylinux_2_27_x86_64.whl", hash = "sha256:cfe75d8a17e0d33a7bed27f32d7a5344a66e8d4af7073973f396e14ff4a9c503", size = 85941210, upload-time = "2026-05-20T14:53:36.982Z" }, + { url = "https://files.pythonhosted.org/packages/0b/a1/c4d4c0530313c50dd1ba07fff480cfd0c5f18c5ec49742f4a52a6edfd95f/jaxlib-0.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9a657554dbe56f3691d377cb99d00b29df14e5638e579e57965f9f69c32c9315", size = 60826189, upload-time = "2026-05-20T14:53:40.73Z" }, + { url = "https://files.pythonhosted.org/packages/98/71/529b2439b88491e0806ee9fa6191ecf90f4447dfe092e80bd19577c85260/jaxlib-0.10.1-cp314-cp314-manylinux_2_27_aarch64.whl", hash = "sha256:93cd9989404f86a21b50c7ff4e850a31f55509664312080978bde97a664d92a9", size = 80300654, upload-time = "2026-05-20T14:53:44.751Z" }, + { url = "https://files.pythonhosted.org/packages/be/08/0bc4132fb2fe224ee9d83fd60e3650fd4d893b4e5148707a98df8f0333a4/jaxlib-0.10.1-cp314-cp314-manylinux_2_27_x86_64.whl", hash = "sha256:26b94e9640b01968cc14b8353dd6b6540d723f30579c78b1f46a477fc4aa196d", size = 85841241, upload-time = "2026-05-20T14:53:49.13Z" }, + { url = "https://files.pythonhosted.org/packages/5c/de/423d748ce3367bd5ea20d8cc34a7ceb6420da4d41c20b247f54194700d04/jaxlib-0.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:375820799bbf7d515dd4e4d40f3334566b73d3fe64d340afbd6aa897d5d7c486", size = 67301520, upload-time = "2026-05-20T14:53:52.989Z" }, + { url = "https://files.pythonhosted.org/packages/2d/bf/3f7ce089d62f7ac85ea678925471f7ec88038899e67ab02079c1e7d8ad4e/jaxlib-0.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:bc52f16bdd61b299efeed7ea8e743e91a118059a463da2ab97196fc05b69ddb7", size = 60935393, upload-time = "2026-05-20T14:53:56.886Z" }, + { url = "https://files.pythonhosted.org/packages/65/6a/38cf1d4ff8c8f74ec8d567e0aa6e3d2082ab6fc580545f6bb51368da20a9/jaxlib-0.10.1-cp314-cp314t-manylinux_2_27_aarch64.whl", hash = "sha256:55b0a473fbd57d31dc3935c4cd5c0c38af5f7c1f41300df27923cf46676972ca", size = 80405741, upload-time = "2026-05-20T14:54:01.94Z" }, + { url = "https://files.pythonhosted.org/packages/16/9e/d3cff171aaf13a09aab26a44d1a27dcbf0d6311e4d855f5d99685965ace3/jaxlib-0.10.1-cp314-cp314t-manylinux_2_27_x86_64.whl", hash = "sha256:4b0cb8ef960a3723037db63f28ffa20083d90fff6d30085e99d7c63cfa08e4c0", size = 85942183, upload-time = "2026-05-20T14:54:05.91Z" }, ] [[package]] name = "jaxtyping" -version = "0.3.5" +version = "0.3.10" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wadler-lindig" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/43/30/0e29eab664d33127a7a30aebd7a845a95fbfa1887ede692676769820acea/jaxtyping-0.3.5.tar.gz", hash = "sha256:8150ad5b72b62fa63f573d492a79e9e455f070abe3b260f7dc15270b3eb9bba6", size = 45482, upload-time = "2026-01-05T10:51:34.486Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5d/b3/e0be221f95bbf92ea9dd34b04393130ce79fc11357add40bdd0fd4db72c8/jaxtyping-0.3.10.tar.gz", hash = "sha256:7e79b050257bb1c757ee2c3d4ba246bd54422dc785b25f24797a8ce014f6daca", size = 46251, upload-time = "2026-05-24T15:22:22.996Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/19/a29de61c7ada0edf4eacfc19355ab8560091b65ea5d2450bcb984e203259/jaxtyping-0.3.5-py3-none-any.whl", hash = "sha256:862c39fa2e526274e82dc96ee8dbe9369dadb651ab1e05d95bd685acb4e2ef02", size = 55824, upload-time = "2026-01-05T10:51:33.523Z" }, + { url = "https://files.pythonhosted.org/packages/61/61/91ffc93953cb2d4ea18db4cf4f3654690a9482443ae3c4c49ca7dc3d2de2/jaxtyping-0.3.10-py3-none-any.whl", hash = "sha256:e611a2b0a2fc3f867f01ceb3769dee6909a6d2075625dad07d3877e9e1297188", size = 56413, upload-time = "2026-05-24T15:22:21.828Z" }, ] [[package]] name = "jedi" -version = "0.19.2" +version = "0.20.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/b7/a3635f6a2d7cf5b5dd98064fc1d5fbbafcb25477bcea204a3a92145d158b/jedi-0.20.0.tar.gz", hash = "sha256:c3f4ccbd276696f4b19c54618d4fb18f9fc24b0aef02acf704b23f487daa1011", size = 3119416, upload-time = "2026-05-01T23:38:47.814Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl", hash = "sha256:7bdd9c2634f56713299976f4cbd59cb3fa92165cc5e05ea811fb253480728b67", size = 4884812, upload-time = "2026-05-01T23:38:43.919Z" }, ] [[package]] @@ -2510,74 +1812,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] -[[package]] -name = "jiter" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/45/9d/e0660989c1370e25848bb4c52d061c71837239738ad937e83edca174c273/jiter-0.12.0.tar.gz", hash = "sha256:64dfcd7d5c168b38d3f9f8bba7fc639edb3418abcc74f22fdbe6b8938293f30b", size = 168294, upload-time = "2025-11-09T20:49:23.302Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/c9/5b9f7b4983f1b542c64e84165075335e8a236fa9e2ea03a0c79780062be8/jiter-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:305e061fa82f4680607a775b2e8e0bcb071cd2205ac38e6ef48c8dd5ebe1cf37", size = 314449, upload-time = "2025-11-09T20:47:22.999Z" }, - { url = "https://files.pythonhosted.org/packages/98/6e/e8efa0e78de00db0aee82c0cf9e8b3f2027efd7f8a71f859d8f4be8e98ef/jiter-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c1860627048e302a528333c9307c818c547f214d8659b0705d2195e1a94b274", size = 319855, upload-time = "2025-11-09T20:47:24.779Z" }, - { url = "https://files.pythonhosted.org/packages/20/26/894cd88e60b5d58af53bec5c6759d1292bd0b37a8b5f60f07abf7a63ae5f/jiter-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df37577a4f8408f7e0ec3205d2a8f87672af8f17008358063a4d6425b6081ce3", size = 350171, upload-time = "2025-11-09T20:47:26.469Z" }, - { url = "https://files.pythonhosted.org/packages/f5/27/a7b818b9979ac31b3763d25f3653ec3a954044d5e9f5d87f2f247d679fd1/jiter-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:75fdd787356c1c13a4f40b43c2156276ef7a71eb487d98472476476d803fb2cf", size = 365590, upload-time = "2025-11-09T20:47:27.918Z" }, - { url = "https://files.pythonhosted.org/packages/ba/7e/e46195801a97673a83746170b17984aa8ac4a455746354516d02ca5541b4/jiter-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1eb5db8d9c65b112aacf14fcd0faae9913d07a8afea5ed06ccdd12b724e966a1", size = 479462, upload-time = "2025-11-09T20:47:29.654Z" }, - { url = "https://files.pythonhosted.org/packages/ca/75/f833bfb009ab4bd11b1c9406d333e3b4357709ed0570bb48c7c06d78c7dd/jiter-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73c568cc27c473f82480abc15d1301adf333a7ea4f2e813d6a2c7d8b6ba8d0df", size = 378983, upload-time = "2025-11-09T20:47:31.026Z" }, - { url = "https://files.pythonhosted.org/packages/71/b3/7a69d77943cc837d30165643db753471aff5df39692d598da880a6e51c24/jiter-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4321e8a3d868919bcb1abb1db550d41f2b5b326f72df29e53b2df8b006eb9403", size = 361328, upload-time = "2025-11-09T20:47:33.286Z" }, - { url = "https://files.pythonhosted.org/packages/b0/ac/a78f90caf48d65ba70d8c6efc6f23150bc39dc3389d65bbec2a95c7bc628/jiter-0.12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a51bad79f8cc9cac2b4b705039f814049142e0050f30d91695a2d9a6611f126", size = 386740, upload-time = "2025-11-09T20:47:34.703Z" }, - { url = "https://files.pythonhosted.org/packages/39/b6/5d31c2cc8e1b6a6bcf3c5721e4ca0a3633d1ab4754b09bc7084f6c4f5327/jiter-0.12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2a67b678f6a5f1dd6c36d642d7db83e456bc8b104788262aaefc11a22339f5a9", size = 520875, upload-time = "2025-11-09T20:47:36.058Z" }, - { url = "https://files.pythonhosted.org/packages/30/b5/4df540fae4e9f68c54b8dab004bd8c943a752f0b00efd6e7d64aa3850339/jiter-0.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efe1a211fe1fd14762adea941e3cfd6c611a136e28da6c39272dbb7a1bbe6a86", size = 511457, upload-time = "2025-11-09T20:47:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/07/65/86b74010e450a1a77b2c1aabb91d4a91dd3cd5afce99f34d75fd1ac64b19/jiter-0.12.0-cp312-cp312-win32.whl", hash = "sha256:d779d97c834b4278276ec703dc3fc1735fca50af63eb7262f05bdb4e62203d44", size = 204546, upload-time = "2025-11-09T20:47:40.47Z" }, - { url = "https://files.pythonhosted.org/packages/1c/c7/6659f537f9562d963488e3e55573498a442503ced01f7e169e96a6110383/jiter-0.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e8269062060212b373316fe69236096aaf4c49022d267c6736eebd66bbbc60bb", size = 205196, upload-time = "2025-11-09T20:47:41.794Z" }, - { url = "https://files.pythonhosted.org/packages/21/f4/935304f5169edadfec7f9c01eacbce4c90bb9a82035ac1de1f3bd2d40be6/jiter-0.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:06cb970936c65de926d648af0ed3d21857f026b1cf5525cb2947aa5e01e05789", size = 186100, upload-time = "2025-11-09T20:47:43.007Z" }, - { url = "https://files.pythonhosted.org/packages/3d/a6/97209693b177716e22576ee1161674d1d58029eb178e01866a0422b69224/jiter-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6cc49d5130a14b732e0612bc76ae8db3b49898732223ef8b7599aa8d9810683e", size = 313658, upload-time = "2025-11-09T20:47:44.424Z" }, - { url = "https://files.pythonhosted.org/packages/06/4d/125c5c1537c7d8ee73ad3d530a442d6c619714b95027143f1b61c0b4dfe0/jiter-0.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37f27a32ce36364d2fa4f7fdc507279db604d27d239ea2e044c8f148410defe1", size = 318605, upload-time = "2025-11-09T20:47:45.973Z" }, - { url = "https://files.pythonhosted.org/packages/99/bf/a840b89847885064c41a5f52de6e312e91fa84a520848ee56c97e4fa0205/jiter-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbc0944aa3d4b4773e348cda635252824a78f4ba44328e042ef1ff3f6080d1cf", size = 349803, upload-time = "2025-11-09T20:47:47.535Z" }, - { url = "https://files.pythonhosted.org/packages/8a/88/e63441c28e0db50e305ae23e19c1d8fae012d78ed55365da392c1f34b09c/jiter-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da25c62d4ee1ffbacb97fac6dfe4dcd6759ebdc9015991e92a6eae5816287f44", size = 365120, upload-time = "2025-11-09T20:47:49.284Z" }, - { url = "https://files.pythonhosted.org/packages/0a/7c/49b02714af4343970eb8aca63396bc1c82fa01197dbb1e9b0d274b550d4e/jiter-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:048485c654b838140b007390b8182ba9774621103bd4d77c9c3f6f117474ba45", size = 479918, upload-time = "2025-11-09T20:47:50.807Z" }, - { url = "https://files.pythonhosted.org/packages/69/ba/0a809817fdd5a1db80490b9150645f3aae16afad166960bcd562be194f3b/jiter-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:635e737fbb7315bef0037c19b88b799143d2d7d3507e61a76751025226b3ac87", size = 379008, upload-time = "2025-11-09T20:47:52.211Z" }, - { url = "https://files.pythonhosted.org/packages/5f/c3/c9fc0232e736c8877d9e6d83d6eeb0ba4e90c6c073835cc2e8f73fdeef51/jiter-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e017c417b1ebda911bd13b1e40612704b1f5420e30695112efdbed8a4b389ed", size = 361785, upload-time = "2025-11-09T20:47:53.512Z" }, - { url = "https://files.pythonhosted.org/packages/96/61/61f69b7e442e97ca6cd53086ddc1cf59fb830549bc72c0a293713a60c525/jiter-0.12.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:89b0bfb8b2bf2351fba36bb211ef8bfceba73ef58e7f0c68fb67b5a2795ca2f9", size = 386108, upload-time = "2025-11-09T20:47:54.893Z" }, - { url = "https://files.pythonhosted.org/packages/e9/2e/76bb3332f28550c8f1eba3bf6e5efe211efda0ddbbaf24976bc7078d42a5/jiter-0.12.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f5aa5427a629a824a543672778c9ce0c5e556550d1569bb6ea28a85015287626", size = 519937, upload-time = "2025-11-09T20:47:56.253Z" }, - { url = "https://files.pythonhosted.org/packages/84/d6/fa96efa87dc8bff2094fb947f51f66368fa56d8d4fc9e77b25d7fbb23375/jiter-0.12.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed53b3d6acbcb0fd0b90f20c7cb3b24c357fe82a3518934d4edfa8c6898e498c", size = 510853, upload-time = "2025-11-09T20:47:58.32Z" }, - { url = "https://files.pythonhosted.org/packages/8a/28/93f67fdb4d5904a708119a6ab58a8f1ec226ff10a94a282e0215402a8462/jiter-0.12.0-cp313-cp313-win32.whl", hash = "sha256:4747de73d6b8c78f2e253a2787930f4fffc68da7fa319739f57437f95963c4de", size = 204699, upload-time = "2025-11-09T20:47:59.686Z" }, - { url = "https://files.pythonhosted.org/packages/c4/1f/30b0eb087045a0abe2a5c9c0c0c8da110875a1d3be83afd4a9a4e548be3c/jiter-0.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:e25012eb0c456fcc13354255d0338cd5397cce26c77b2832b3c4e2e255ea5d9a", size = 204258, upload-time = "2025-11-09T20:48:01.01Z" }, - { url = "https://files.pythonhosted.org/packages/2c/f4/2b4daf99b96bce6fc47971890b14b2a36aef88d7beb9f057fafa032c6141/jiter-0.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:c97b92c54fe6110138c872add030a1f99aea2401ddcdaa21edf74705a646dd60", size = 185503, upload-time = "2025-11-09T20:48:02.35Z" }, - { url = "https://files.pythonhosted.org/packages/39/ca/67bb15a7061d6fe20b9b2a2fd783e296a1e0f93468252c093481a2f00efa/jiter-0.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:53839b35a38f56b8be26a7851a48b89bc47e5d88e900929df10ed93b95fea3d6", size = 317965, upload-time = "2025-11-09T20:48:03.783Z" }, - { url = "https://files.pythonhosted.org/packages/18/af/1788031cd22e29c3b14bc6ca80b16a39a0b10e611367ffd480c06a259831/jiter-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94f669548e55c91ab47fef8bddd9c954dab1938644e715ea49d7e117015110a4", size = 345831, upload-time = "2025-11-09T20:48:05.55Z" }, - { url = "https://files.pythonhosted.org/packages/05/17/710bf8472d1dff0d3caf4ced6031060091c1320f84ee7d5dcbed1f352417/jiter-0.12.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:351d54f2b09a41600ffea43d081522d792e81dcfb915f6d2d242744c1cc48beb", size = 361272, upload-time = "2025-11-09T20:48:06.951Z" }, - { url = "https://files.pythonhosted.org/packages/fb/f1/1dcc4618b59761fef92d10bcbb0b038b5160be653b003651566a185f1a5c/jiter-0.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2a5e90604620f94bf62264e7c2c038704d38217b7465b863896c6d7c902b06c7", size = 204604, upload-time = "2025-11-09T20:48:08.328Z" }, - { url = "https://files.pythonhosted.org/packages/d9/32/63cb1d9f1c5c6632a783c0052cde9ef7ba82688f7065e2f0d5f10a7e3edb/jiter-0.12.0-cp313-cp313t-win_arm64.whl", hash = "sha256:88ef757017e78d2860f96250f9393b7b577b06a956ad102c29c8237554380db3", size = 185628, upload-time = "2025-11-09T20:48:09.572Z" }, - { url = "https://files.pythonhosted.org/packages/a8/99/45c9f0dbe4a1416b2b9a8a6d1236459540f43d7fb8883cff769a8db0612d/jiter-0.12.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:c46d927acd09c67a9fb1416df45c5a04c27e83aae969267e98fba35b74e99525", size = 312478, upload-time = "2025-11-09T20:48:10.898Z" }, - { url = "https://files.pythonhosted.org/packages/4c/a7/54ae75613ba9e0f55fcb0bc5d1f807823b5167cc944e9333ff322e9f07dd/jiter-0.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:774ff60b27a84a85b27b88cd5583899c59940bcc126caca97eb2a9df6aa00c49", size = 318706, upload-time = "2025-11-09T20:48:12.266Z" }, - { url = "https://files.pythonhosted.org/packages/59/31/2aa241ad2c10774baf6c37f8b8e1f39c07db358f1329f4eb40eba179c2a2/jiter-0.12.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5433fab222fb072237df3f637d01b81f040a07dcac1cb4a5c75c7aa9ed0bef1", size = 351894, upload-time = "2025-11-09T20:48:13.673Z" }, - { url = "https://files.pythonhosted.org/packages/54/4f/0f2759522719133a9042781b18cc94e335b6d290f5e2d3e6899d6af933e3/jiter-0.12.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8c593c6e71c07866ec6bfb790e202a833eeec885022296aff6b9e0b92d6a70e", size = 365714, upload-time = "2025-11-09T20:48:15.083Z" }, - { url = "https://files.pythonhosted.org/packages/dc/6f/806b895f476582c62a2f52c453151edd8a0fde5411b0497baaa41018e878/jiter-0.12.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:90d32894d4c6877a87ae00c6b915b609406819dce8bc0d4e962e4de2784e567e", size = 478989, upload-time = "2025-11-09T20:48:16.706Z" }, - { url = "https://files.pythonhosted.org/packages/86/6c/012d894dc6e1033acd8db2b8346add33e413ec1c7c002598915278a37f79/jiter-0.12.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:798e46eed9eb10c3adbbacbd3bdb5ecd4cf7064e453d00dbef08802dae6937ff", size = 378615, upload-time = "2025-11-09T20:48:18.614Z" }, - { url = "https://files.pythonhosted.org/packages/87/30/d718d599f6700163e28e2c71c0bbaf6dace692e7df2592fd793ac9276717/jiter-0.12.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3f1368f0a6719ea80013a4eb90ba72e75d7ea67cfc7846db2ca504f3df0169a", size = 364745, upload-time = "2025-11-09T20:48:20.117Z" }, - { url = "https://files.pythonhosted.org/packages/8f/85/315b45ce4b6ddc7d7fceca24068543b02bdc8782942f4ee49d652e2cc89f/jiter-0.12.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65f04a9d0b4406f7e51279710b27484af411896246200e461d80d3ba0caa901a", size = 386502, upload-time = "2025-11-09T20:48:21.543Z" }, - { url = "https://files.pythonhosted.org/packages/74/0b/ce0434fb40c5b24b368fe81b17074d2840748b4952256bab451b72290a49/jiter-0.12.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:fd990541982a24281d12b67a335e44f117e4c6cbad3c3b75c7dea68bf4ce3a67", size = 519845, upload-time = "2025-11-09T20:48:22.964Z" }, - { url = "https://files.pythonhosted.org/packages/e8/a3/7a7a4488ba052767846b9c916d208b3ed114e3eb670ee984e4c565b9cf0d/jiter-0.12.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:b111b0e9152fa7df870ecaebb0bd30240d9f7fff1f2003bcb4ed0f519941820b", size = 510701, upload-time = "2025-11-09T20:48:24.483Z" }, - { url = "https://files.pythonhosted.org/packages/c3/16/052ffbf9d0467b70af24e30f91e0579e13ded0c17bb4a8eb2aed3cb60131/jiter-0.12.0-cp314-cp314-win32.whl", hash = "sha256:a78befb9cc0a45b5a5a0d537b06f8544c2ebb60d19d02c41ff15da28a9e22d42", size = 205029, upload-time = "2025-11-09T20:48:25.749Z" }, - { url = "https://files.pythonhosted.org/packages/e4/18/3cf1f3f0ccc789f76b9a754bdb7a6977e5d1d671ee97a9e14f7eb728d80e/jiter-0.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:e1fe01c082f6aafbe5c8faf0ff074f38dfb911d53f07ec333ca03f8f6226debf", size = 204960, upload-time = "2025-11-09T20:48:27.415Z" }, - { url = "https://files.pythonhosted.org/packages/02/68/736821e52ecfdeeb0f024b8ab01b5a229f6b9293bbdb444c27efade50b0f/jiter-0.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:d72f3b5a432a4c546ea4bedc84cce0c3404874f1d1676260b9c7f048a9855451", size = 185529, upload-time = "2025-11-09T20:48:29.125Z" }, - { url = "https://files.pythonhosted.org/packages/30/61/12ed8ee7a643cce29ac97c2281f9ce3956eb76b037e88d290f4ed0d41480/jiter-0.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e6ded41aeba3603f9728ed2b6196e4df875348ab97b28fc8afff115ed42ba7a7", size = 318974, upload-time = "2025-11-09T20:48:30.87Z" }, - { url = "https://files.pythonhosted.org/packages/2d/c6/f3041ede6d0ed5e0e79ff0de4c8f14f401bbf196f2ef3971cdbe5fd08d1d/jiter-0.12.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a947920902420a6ada6ad51892082521978e9dd44a802663b001436e4b771684", size = 345932, upload-time = "2025-11-09T20:48:32.658Z" }, - { url = "https://files.pythonhosted.org/packages/d5/5d/4d94835889edd01ad0e2dbfc05f7bdfaed46292e7b504a6ac7839aa00edb/jiter-0.12.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:add5e227e0554d3a52cf390a7635edaffdf4f8fce4fdbcef3cc2055bb396a30c", size = 367243, upload-time = "2025-11-09T20:48:34.093Z" }, - { url = "https://files.pythonhosted.org/packages/fd/76/0051b0ac2816253a99d27baf3dda198663aff882fa6ea7deeb94046da24e/jiter-0.12.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f9b1cda8fcb736250d7e8711d4580ebf004a46771432be0ae4796944b5dfa5d", size = 479315, upload-time = "2025-11-09T20:48:35.507Z" }, - { url = "https://files.pythonhosted.org/packages/70/ae/83f793acd68e5cb24e483f44f482a1a15601848b9b6f199dacb970098f77/jiter-0.12.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb12a2223fe0135c7ff1356a143d57f95bbf1f4a66584f1fc74df21d86b993", size = 380714, upload-time = "2025-11-09T20:48:40.014Z" }, - { url = "https://files.pythonhosted.org/packages/b1/5e/4808a88338ad2c228b1126b93fcd8ba145e919e886fe910d578230dabe3b/jiter-0.12.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c596cc0f4cb574877550ce4ecd51f8037469146addd676d7c1a30ebe6391923f", size = 365168, upload-time = "2025-11-09T20:48:41.462Z" }, - { url = "https://files.pythonhosted.org/packages/0c/d4/04619a9e8095b42aef436b5aeb4c0282b4ff1b27d1db1508df9f5dc82750/jiter-0.12.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ab4c823b216a4aeab3fdbf579c5843165756bd9ad87cc6b1c65919c4715f783", size = 387893, upload-time = "2025-11-09T20:48:42.921Z" }, - { url = "https://files.pythonhosted.org/packages/17/ea/d3c7e62e4546fdc39197fa4a4315a563a89b95b6d54c0d25373842a59cbe/jiter-0.12.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:e427eee51149edf962203ff8db75a7514ab89be5cb623fb9cea1f20b54f1107b", size = 520828, upload-time = "2025-11-09T20:48:44.278Z" }, - { url = "https://files.pythonhosted.org/packages/cc/0b/c6d3562a03fd767e31cb119d9041ea7958c3c80cb3d753eafb19b3b18349/jiter-0.12.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:edb868841f84c111255ba5e80339d386d937ec1fdce419518ce1bd9370fac5b6", size = 511009, upload-time = "2025-11-09T20:48:45.726Z" }, - { url = "https://files.pythonhosted.org/packages/aa/51/2cb4468b3448a8385ebcd15059d325c9ce67df4e2758d133ab9442b19834/jiter-0.12.0-cp314-cp314t-win32.whl", hash = "sha256:8bbcfe2791dfdb7c5e48baf646d37a6a3dcb5a97a032017741dea9f817dca183", size = 205110, upload-time = "2025-11-09T20:48:47.033Z" }, - { url = "https://files.pythonhosted.org/packages/b2/c5/ae5ec83dec9c2d1af805fd5fe8f74ebded9c8670c5210ec7820ce0dbeb1e/jiter-0.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2fa940963bf02e1d8226027ef461e36af472dea85d36054ff835aeed944dd873", size = 205223, upload-time = "2025-11-09T20:48:49.076Z" }, - { url = "https://files.pythonhosted.org/packages/97/9a/3c5391907277f0e55195550cf3fa8e293ae9ee0c00fb402fec1e38c0c82f/jiter-0.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:506c9708dd29b27288f9f8f1140c3cb0e3d8ddb045956d7757b1fa0e0f39a473", size = 185564, upload-time = "2025-11-09T20:48:50.376Z" }, - { url = "https://files.pythonhosted.org/packages/cb/f5/12efb8ada5f5c9edc1d4555fe383c1fb2eac05ac5859258a72d61981d999/jiter-0.12.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:e8547883d7b96ef2e5fe22b88f8a4c8725a56e7f4abafff20fd5272d634c7ecb", size = 309974, upload-time = "2025-11-09T20:49:17.187Z" }, - { url = "https://files.pythonhosted.org/packages/85/15/d6eb3b770f6a0d332675141ab3962fd4a7c270ede3515d9f3583e1d28276/jiter-0.12.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:89163163c0934854a668ed783a2546a0617f71706a2551a4a0666d91ab365d6b", size = 304233, upload-time = "2025-11-09T20:49:18.734Z" }, - { url = "https://files.pythonhosted.org/packages/8c/3e/e7e06743294eea2cf02ced6aa0ff2ad237367394e37a0e2b4a1108c67a36/jiter-0.12.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d96b264ab7d34bbb2312dedc47ce07cd53f06835eacbc16dde3761f47c3a9e7f", size = 338537, upload-time = "2025-11-09T20:49:20.317Z" }, - { url = "https://files.pythonhosted.org/packages/2f/9c/6753e6522b8d0ef07d3a3d239426669e984fb0eba15a315cdbc1253904e4/jiter-0.12.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24e864cb30ab82311c6425655b0cdab0a98c5d973b065c66a3f020740c2324c", size = 346110, upload-time = "2025-11-09T20:49:21.817Z" }, -] - [[package]] name = "joblib" version = "1.5.3" @@ -2643,18 +1877,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, ] -[[package]] -name = "keyboard" -version = "0.13.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc", marker = "sys_platform == 'darwin'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/79/75/c969f2258e908c39aadfc57d1cb78247dc49e6d36371bb3a48c194640c01/keyboard-0.13.5.zip", hash = "sha256:63ed83305955939ca5c9a73755e5cc43e8242263f5ad5fd3bb7e0b032f3d308b", size = 71798, upload-time = "2020-03-23T21:47:06.614Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/88/287159903c5b3fc6d47b651c7ab65a54dcf9c9916de546188a7f62870d6d/keyboard-0.13.5-py3-none-any.whl", hash = "sha256:8e9c2422f1217e0bd84489b9ecd361027cc78415828f4fe4f88dd4acd587947b", size = 58098, upload-time = "2020-03-23T21:47:05.023Z" }, -] - [[package]] name = "keyring" version = "25.7.0" @@ -2674,140 +1896,120 @@ wheels = [ [[package]] name = "kiwisolver" -version = "1.4.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, - { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, - { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, - { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, - { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, - { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, - { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, - { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, - { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, - { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, - { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, - { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, - { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, - { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, - { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, - { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, - { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, - { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, - { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, - { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, - { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, - { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, - { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, - { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, - { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, - { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, - { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, - { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, - { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, - { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, - { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, - { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, - { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, - { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, - { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, - { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, - { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, - { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, - { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, - { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, - { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, - { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, - { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, - { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, - { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, - { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, - { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, - { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, - { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, - { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, - { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, - { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, - { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, - { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, - { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, - { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, - { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, - { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, -] - -[[package]] -name = "kombu" -version = "5.6.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "amqp" }, - { name = "packaging" }, - { name = "tzdata" }, - { name = "vine" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b6/a5/607e533ed6c83ae1a696969b8e1c137dfebd5759a2e9682e26ff1b97740b/kombu-5.6.2.tar.gz", hash = "sha256:8060497058066c6f5aed7c26d7cd0d3b574990b09de842a8c5aaed0b92cc5a55", size = 472594, upload-time = "2025-12-29T20:30:07.779Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/0f/834427d8c03ff1d7e867d3db3d176470c64871753252b21b4f4897d1fa45/kombu-5.6.2-py3-none-any.whl", hash = "sha256:efcfc559da324d41d61ca311b0c64965ea35b4c55cc04ee36e55386145dace93", size = 214219, upload-time = "2025-12-29T20:30:05.74Z" }, +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" }, + { url = "https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f", size = 1477934, upload-time = "2026-03-09T13:13:27.166Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2f/cebfcdb60fd6a9b0f6b47a9337198bcbad6fbe15e68189b7011fd914911f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf", size = 1278537, upload-time = "2026-03-09T13:13:28.707Z" }, + { url = "https://files.pythonhosted.org/packages/f2/0d/9b782923aada3fafb1d6b84e13121954515c669b18af0c26e7d21f579855/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d", size = 1296685, upload-time = "2026-03-09T13:13:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/83241b6634b04fe44e892688d5208332bde130f38e610c0418f9ede47ded/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083", size = 1346024, upload-time = "2026-03-09T13:13:32.818Z" }, + { url = "https://files.pythonhosted.org/packages/e4/db/30ed226fb271ae1a6431fc0fe0edffb2efe23cadb01e798caeb9f2ceae8f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6", size = 987241, upload-time = "2026-03-09T13:13:34.435Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bd/c314595208e4c9587652d50959ead9e461995389664e490f4dce7ff0f782/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1", size = 2227742, upload-time = "2026-03-09T13:13:36.4Z" }, + { url = "https://files.pythonhosted.org/packages/c1/43/0499cec932d935229b5543d073c2b87c9c22846aab48881e9d8d6e742a2d/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0", size = 2323966, upload-time = "2026-03-09T13:13:38.204Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/79b0d760907965acfd9d61826a3d41f8f093c538f55cd2633d3f0db269f6/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15", size = 1977417, upload-time = "2026-03-09T13:13:39.966Z" }, + { url = "https://files.pythonhosted.org/packages/ab/31/01d0537c41cb75a551a438c3c7a80d0c60d60b81f694dac83dd436aec0d0/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314", size = 2491238, upload-time = "2026-03-09T13:13:41.698Z" }, + { url = "https://files.pythonhosted.org/packages/e4/34/8aefdd0be9cfd00a44509251ba864f5caf2991e36772e61c408007e7f417/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9", size = 2294947, upload-time = "2026-03-09T13:13:43.343Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384", size = 73569, upload-time = "2026-03-09T13:13:45.792Z" }, + { url = "https://files.pythonhosted.org/packages/28/26/192b26196e2316e2bd29deef67e37cdf9870d9af8e085e521afff0fed526/kiwisolver-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7", size = 64997, upload-time = "2026-03-09T13:13:46.878Z" }, + { url = "https://files.pythonhosted.org/packages/9d/69/024d6711d5ba575aa65d5538042e99964104e97fa153a9f10bc369182bc2/kiwisolver-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:fd40bb9cd0891c4c3cb1ddf83f8bbfa15731a248fdc8162669405451e2724b09", size = 123166, upload-time = "2026-03-09T13:13:48.032Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/adbb40df306f587054a348831220812b9b1d787aff714cfbc8556e38fccd/kiwisolver-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0e1403fd7c26d77c1f03e096dc58a5c726503fa0db0456678b8668f76f521e3", size = 66395, upload-time = "2026-03-09T13:13:49.365Z" }, + { url = "https://files.pythonhosted.org/packages/a8/3a/d0a972b34e1c63e2409413104216cd1caa02c5a37cb668d1687d466c1c45/kiwisolver-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dda366d548e89a90d88a86c692377d18d8bd64b39c1fb2b92cb31370e2896bbd", size = 64065, upload-time = "2026-03-09T13:13:50.562Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0a/7b98e1e119878a27ba8618ca1e18b14f992ff1eda40f47bccccf4de44121/kiwisolver-1.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:332b4f0145c30b5f5ad9374881133e5aa64320428a57c2c2b61e9d891a51c2f3", size = 1477903, upload-time = "2026-03-09T13:13:52.084Z" }, + { url = "https://files.pythonhosted.org/packages/18/d8/55638d89ffd27799d5cc3d8aa28e12f4ce7a64d67b285114dbedc8ea4136/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c50b89ffd3e1a911c69a1dd3de7173c0cd10b130f56222e57898683841e4f96", size = 1278751, upload-time = "2026-03-09T13:13:54.673Z" }, + { url = "https://files.pythonhosted.org/packages/b8/97/b4c8d0d18421ecceba20ad8701358453b88e32414e6f6950b5a4bad54e65/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4db576bb8c3ef9365f8b40fe0f671644de6736ae2c27a2c62d7d8a1b4329f099", size = 1296793, upload-time = "2026-03-09T13:13:56.287Z" }, + { url = "https://files.pythonhosted.org/packages/c4/10/f862f94b6389d8957448ec9df59450b81bec4abb318805375c401a1e6892/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0b85aad90cea8ac6797a53b5d5f2e967334fa4d1149f031c4537569972596cb8", size = 1346041, upload-time = "2026-03-09T13:13:58.269Z" }, + { url = "https://files.pythonhosted.org/packages/a3/6a/f1650af35821eaf09de398ec0bc2aefc8f211f0cda50204c9f1673741ba9/kiwisolver-1.5.0-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:d36ca54cb4c6c4686f7cbb7b817f66f5911c12ddb519450bbe86707155028f87", size = 987292, upload-time = "2026-03-09T13:13:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/de/19/d7fb82984b9238115fe629c915007be608ebd23dc8629703d917dbfaffd4/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:38f4a703656f493b0ad185211ccfca7f0386120f022066b018eb5296d8613e23", size = 2227865, upload-time = "2026-03-09T13:14:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/46b7f386589fd222dac9e9de9c956ce5bcefe2ee73b4e79891381dda8654/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3ac2360e93cb41be81121755c6462cff3beaa9967188c866e5fce5cf13170859", size = 2324369, upload-time = "2026-03-09T13:14:02.972Z" }, + { url = "https://files.pythonhosted.org/packages/92/8b/95e237cf3d9c642960153c769ddcbe278f182c8affb20cecc1cc983e7cc5/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c95cab08d1965db3d84a121f1c7ce7479bdd4072c9b3dafd8fecce48a2e6b902", size = 1977989, upload-time = "2026-03-09T13:14:04.503Z" }, + { url = "https://files.pythonhosted.org/packages/1b/95/980c9df53501892784997820136c01f62bc1865e31b82b9560f980c0e649/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc20894c3d21194d8041a28b65622d5b86db786da6e3cfe73f0c762951a61167", size = 2491645, upload-time = "2026-03-09T13:14:06.106Z" }, + { url = "https://files.pythonhosted.org/packages/cb/32/900647fd0840abebe1561792c6b31e6a7c0e278fc3973d30572a965ca14c/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7a32f72973f0f950c1920475d5c5ea3d971b81b6f0ec53b8d0a956cc965f22e0", size = 2295237, upload-time = "2026-03-09T13:14:08.891Z" }, + { url = "https://files.pythonhosted.org/packages/be/8a/be60e3bbcf513cc5a50f4a3e88e1dcecebb79c1ad607a7222877becaa101/kiwisolver-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bf3acf1419fa93064a4c2189ac0b58e3be7872bf6ee6177b0d4c63dc4cea276", size = 73573, upload-time = "2026-03-09T13:14:12.327Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d2/64be2e429eb4fca7f7e1c52a91b12663aeaf25de3895e5cca0f47ef2a8d0/kiwisolver-1.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:fa8eb9ecdb7efb0b226acec134e0d709e87a909fa4971a54c0c4f6e88635484c", size = 64998, upload-time = "2026-03-09T13:14:13.469Z" }, + { url = "https://files.pythonhosted.org/packages/b0/69/ce68dd0c85755ae2de490bf015b62f2cea5f6b14ff00a463f9d0774449ff/kiwisolver-1.5.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db485b3847d182b908b483b2ed133c66d88d49cacf98fd278fadafe11b4478d1", size = 125700, upload-time = "2026-03-09T13:14:14.636Z" }, + { url = "https://files.pythonhosted.org/packages/74/aa/937aac021cf9d4349990d47eb319309a51355ed1dbdc9c077cdc9224cb11/kiwisolver-1.5.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:be12f931839a3bdfe28b584db0e640a65a8bcbc24560ae3fdb025a449b3d754e", size = 67537, upload-time = "2026-03-09T13:14:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/ee/20/3a87fbece2c40ad0f6f0aefa93542559159c5f99831d596050e8afae7a9f/kiwisolver-1.5.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:16b85d37c2cbb3253226d26e64663f755d88a03439a9c47df6246b35defbdfb7", size = 65514, upload-time = "2026-03-09T13:14:18.035Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7f/f943879cda9007c45e1f7dba216d705c3a18d6b35830e488b6c6a4e7cdf0/kiwisolver-1.5.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4432b835675f0ea7414aab3d37d119f7226d24869b7a829caeab49ebda407b0c", size = 1584848, upload-time = "2026-03-09T13:14:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/37/f8/4d4f85cc1870c127c88d950913370dd76138482161cd07eabbc450deff01/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b0feb50971481a2cc44d94e88bdb02cdd497618252ae226b8eb1201b957e368", size = 1391542, upload-time = "2026-03-09T13:14:21.54Z" }, + { url = "https://files.pythonhosted.org/packages/04/0b/65dd2916c84d252b244bd405303220f729e7c17c9d7d33dca6feeff9ffc4/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56fa888f10d0f367155e76ce849fa1166fc9730d13bd2d65a2aa13b6f5424489", size = 1404447, upload-time = "2026-03-09T13:14:23.205Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/2606a373247babce9b1d056c03a04b65f3cf5290a8eac5d7bdead0a17e21/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:940dda65d5e764406b9fb92761cbf462e4e63f712ab60ed98f70552e496f3bf1", size = 1455918, upload-time = "2026-03-09T13:14:24.74Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d1/c6078b5756670658e9192a2ef11e939c92918833d2745f85cd14a6004bdf/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:89fc958c702ee9a745e4700378f5d23fddbc46ff89e8fdbf5395c24d5c1452a3", size = 1072856, upload-time = "2026-03-09T13:14:26.597Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c8/7def6ddf16eb2b3741d8b172bdaa9af882b03c78e9b0772975408801fa63/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9027d773c4ff81487181a925945743413f6069634d0b122d0b37684ccf4f1e18", size = 2333580, upload-time = "2026-03-09T13:14:28.237Z" }, + { url = "https://files.pythonhosted.org/packages/9e/87/2ac1fce0eb1e616fcd3c35caa23e665e9b1948bb984f4764790924594128/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5b233ea3e165e43e35dba1d2b8ecc21cf070b45b65ae17dd2747d2713d942021", size = 2423018, upload-time = "2026-03-09T13:14:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/67/13/c6700ccc6cc218716bfcda4935e4b2997039869b4ad8a94f364c5a3b8e63/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ce9bf03dad3b46408c08649c6fbd6ca28a9fce0eb32fdfffa6775a13103b5310", size = 2062804, upload-time = "2026-03-09T13:14:32.888Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/877056304626943ff0f1f44c08f584300c199b887cb3176cd7e34f1515f1/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:fc4d3f1fb9ca0ae9f97b095963bc6326f1dbfd3779d6679a1e016b9baaa153d3", size = 2597482, upload-time = "2026-03-09T13:14:34.971Z" }, + { url = "https://files.pythonhosted.org/packages/75/19/c60626c47bf0f8ac5dcf72c6c98e266d714f2fbbfd50cf6dab5ede3aaa50/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f443b4825c50a51ee68585522ab4a1d1257fac65896f282b4c6763337ac9f5d2", size = 2394328, upload-time = "2026-03-09T13:14:36.816Z" }, + { url = "https://files.pythonhosted.org/packages/47/84/6a6d5e5bb8273756c27b7d810d47f7ef2f1f9b9fd23c9ee9a3f8c75c9cef/kiwisolver-1.5.0-cp313-cp313t-win_arm64.whl", hash = "sha256:893ff3a711d1b515ba9da14ee090519bad4610ed1962fbe298a434e8c5f8db53", size = 68410, upload-time = "2026-03-09T13:14:38.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/060f45052f2a01ad5762c8fdecd6d7a752b43400dc29ff75cd47225a40fd/kiwisolver-1.5.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8df31fe574b8b3993cc61764f40941111b25c2d9fea13d3ce24a49907cd2d615", size = 123231, upload-time = "2026-03-09T13:14:41.323Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/78da680eadd06ff35edef6ef68a1ad273bad3e2a0936c9a885103230aece/kiwisolver-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:1d49a49ac4cbfb7c1375301cd1ec90169dfeae55ff84710d782260ce77a75a02", size = 66489, upload-time = "2026-03-09T13:14:42.534Z" }, + { url = "https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e", size = 64063, upload-time = "2026-03-09T13:14:44.759Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f9/b06c934a6aa8bc91f566bd2a214fd04c30506c2d9e2b6b171953216a65b6/kiwisolver-1.5.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80aa065ffd378ff784822a6d7c3212f2d5f5e9c3589614b5c228b311fd3063ac", size = 1475913, upload-time = "2026-03-09T13:14:46.247Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f0/f768ae564a710135630672981231320bc403cf9152b5596ec5289de0f106/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e7f886f47ab881692f278ae901039a234e4025a68e6dfab514263a0b1c4ae05", size = 1282782, upload-time = "2026-03-09T13:14:48.458Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9f/1de7aad00697325f05238a5f2eafbd487fb637cc27a558b5367a5f37fb7f/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5060731cc3ed12ca3a8b57acd4aeca5bbc2f49216dd0bec1650a1acd89486bcd", size = 1300815, upload-time = "2026-03-09T13:14:50.721Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c2/297f25141d2e468e0ce7f7a7b92e0cf8918143a0cbd3422c1ad627e85a06/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a4aa69609f40fce3cbc3f87b2061f042eee32f94b8f11db707b66a26461591a", size = 1347925, upload-time = "2026-03-09T13:14:52.304Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d3/f4c73a02eb41520c47610207b21afa8cdd18fdbf64ffd94674ae21c4812d/kiwisolver-1.5.0-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:d168fda2dbff7b9b5f38e693182d792a938c31db4dac3a80a4888de603c99554", size = 991322, upload-time = "2026-03-09T13:14:54.637Z" }, + { url = "https://files.pythonhosted.org/packages/7b/46/d3f2efef7732fcda98d22bf4ad5d3d71d545167a852ca710a494f4c15343/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:413b820229730d358efd838ecbab79902fe97094565fdc80ddb6b0a18c18a581", size = 2232857, upload-time = "2026-03-09T13:14:56.471Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ec/2d9756bf2b6d26ae4349b8d3662fb3993f16d80c1f971c179ce862b9dbae/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5124d1ea754509b09e53738ec185584cc609aae4a3b510aaf4ed6aa047ef9303", size = 2329376, upload-time = "2026-03-09T13:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/8f/9f/876a0a0f2260f1bde92e002b3019a5fabc35e0939c7d945e0fa66185eb20/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e4415a8db000bf49a6dd1c478bf70062eaacff0f462b92b0ba68791a905861f9", size = 1982549, upload-time = "2026-03-09T13:14:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/ba3624dfac23a64d54ac4179832860cb537c1b0af06024936e82ca4154a0/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d618fd27420381a4f6044faa71f46d8bfd911bd077c555f7138ed88729bfbe79", size = 2494680, upload-time = "2026-03-09T13:15:01.364Z" }, + { url = "https://files.pythonhosted.org/packages/39/b7/97716b190ab98911b20d10bf92eca469121ec483b8ce0edd314f51bc85af/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5092eb5b1172947f57d6ea7d89b2f29650414e4293c47707eb499ec07a0ac796", size = 2297905, upload-time = "2026-03-09T13:15:03.925Z" }, + { url = "https://files.pythonhosted.org/packages/a3/36/4e551e8aa55c9188bca9abb5096805edbf7431072b76e2298e34fd3a3008/kiwisolver-1.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:d76e2d8c75051d58177e762164d2e9ab92886534e3a12e795f103524f221dd8e", size = 75086, upload-time = "2026-03-09T13:15:07.775Z" }, + { url = "https://files.pythonhosted.org/packages/70/15/9b90f7df0e31a003c71649cf66ef61c3c1b862f48c81007fa2383c8bd8d7/kiwisolver-1.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:fa6248cd194edff41d7ea9425ced8ca3a6f838bfb295f6f1d6e6bb694a8518df", size = 66577, upload-time = "2026-03-09T13:15:09.139Z" }, + { url = "https://files.pythonhosted.org/packages/17/01/7dc8c5443ff42b38e72731643ed7cf1ed9bf01691ae5cdca98501999ed83/kiwisolver-1.5.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d1ffeb80b5676463d7a7d56acbe8e37a20ce725570e09549fe738e02ca6b7e1e", size = 125794, upload-time = "2026-03-09T13:15:10.525Z" }, + { url = "https://files.pythonhosted.org/packages/46/8a/b4ebe46ebaac6a303417fab10c2e165c557ddaff558f9699d302b256bc53/kiwisolver-1.5.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc4d8e252f532ab46a1de9349e2d27b91fce46736a9eedaa37beaca66f574ed4", size = 67646, upload-time = "2026-03-09T13:15:12.016Z" }, + { url = "https://files.pythonhosted.org/packages/60/35/10a844afc5f19d6f567359bf4789e26661755a2f36200d5d1ed8ad0126e5/kiwisolver-1.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6783e069732715ad0c3ce96dbf21dbc2235ab0593f2baf6338101f70371f4028", size = 65511, upload-time = "2026-03-09T13:15:13.311Z" }, + { url = "https://files.pythonhosted.org/packages/f8/8a/685b297052dd041dcebce8e8787b58923b6e78acc6115a0dc9189011c44b/kiwisolver-1.5.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e7c4c09a490dc4d4a7f8cbee56c606a320f9dc28cf92a7157a39d1ce7676a657", size = 1584858, upload-time = "2026-03-09T13:15:15.103Z" }, + { url = "https://files.pythonhosted.org/packages/9e/80/04865e3d4638ac5bddec28908916df4a3075b8c6cc101786a96803188b96/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a075bd7bd19c70cf67c8badfa36cf7c5d8de3c9ddb8420c51e10d9c50e94920", size = 1392539, upload-time = "2026-03-09T13:15:16.661Z" }, + { url = "https://files.pythonhosted.org/packages/ba/01/77a19cacc0893fa13fafa46d1bba06fb4dc2360b3292baf4b56d8e067b24/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bdd3e53429ff02aa319ba59dfe4ceeec345bf46cf180ec2cf6fd5b942e7975e9", size = 1405310, upload-time = "2026-03-09T13:15:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/53/39/bcaf5d0cca50e604cfa9b4e3ae1d64b50ca1ae5b754122396084599ef903/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cdcb35dc9d807259c981a85531048ede628eabcffb3239adf3d17463518992d", size = 1456244, upload-time = "2026-03-09T13:15:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7a/72c187abc6975f6978c3e39b7cf67aeb8b3c0a8f9790aa7fd412855e9e1f/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:70d593af6a6ca332d1df73d519fddb5148edb15cd90d5f0155e3746a6d4fcc65", size = 1073154, upload-time = "2026-03-09T13:15:22.039Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ca/cf5b25783ebbd59143b4371ed0c8428a278abe68d6d0104b01865b1bbd0f/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:377815a8616074cabbf3f53354e1d040c35815a134e01d7614b7692e4bf8acfa", size = 2334377, upload-time = "2026-03-09T13:15:23.741Z" }, + { url = "https://files.pythonhosted.org/packages/4a/e5/b1f492adc516796e88751282276745340e2a72dcd0d36cf7173e0daf3210/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0255a027391d52944eae1dbb5d4cc5903f57092f3674e8e544cdd2622826b3f0", size = 2425288, upload-time = "2026-03-09T13:15:25.789Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/9b21fbe91a61b8f409d74a26498706e97a48008bfcd1864373d32a6ba31c/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:012b1eb16e28718fa782b5e61dc6f2da1f0792ca73bd05d54de6cb9561665fc9", size = 2063158, upload-time = "2026-03-09T13:15:27.63Z" }, + { url = "https://files.pythonhosted.org/packages/b1/02/83f47986138310f95ea95531f851b2a62227c11cbc3e690ae1374fe49f0f/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0e3aafb33aed7479377e5e9a82e9d4bf87063741fc99fc7ae48b0f16e32bdd6f", size = 2597260, upload-time = "2026-03-09T13:15:29.421Z" }, + { url = "https://files.pythonhosted.org/packages/07/18/43a5f24608d8c313dd189cf838c8e68d75b115567c6279de7796197cfb6a/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7a116ae737f0000343218c4edf5bd45893bfeaff0993c0b215d7124c9f77646", size = 2394403, upload-time = "2026-03-09T13:15:31.517Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b5/98222136d839b8afabcaa943b09bd05888c2d36355b7e448550211d1fca4/kiwisolver-1.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1dd9b0b119a350976a6d781e7278ec7aca0b201e1a9e2d23d9804afecb6ca681", size = 79687, upload-time = "2026-03-09T13:15:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/99/a2/ca7dc962848040befed12732dff6acae7fb3c4f6fc4272b3f6c9a30b8713/kiwisolver-1.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57", size = 70032, upload-time = "2026-03-09T13:15:34.411Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" }, + { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" }, + { url = "https://files.pythonhosted.org/packages/fa/06/7399a607f434119c6e1fdc8ec89a8d51ccccadf3341dee4ead6bd14caaf5/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7", size = 194295, upload-time = "2026-03-09T13:15:38.22Z" }, + { url = "https://files.pythonhosted.org/packages/b5/91/53255615acd2a1eaca307ede3c90eb550bae9c94581f8c00081b6b1c8f44/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57", size = 75987, upload-time = "2026-03-09T13:15:39.65Z" }, ] [[package]] name = "lazy-loader" -version = "0.4" +version = "0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } +sdist = { url = "https://files.pythonhosted.org/packages/49/ac/21a1f8aa3777f5658576777ea76bfb124b702c520bbe90edf4ae9915eafa/lazy_loader-0.5.tar.gz", hash = "sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3", size = 15294, upload-time = "2026-03-06T15:45:09.054Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a1/8d812e53a5da1687abb10445275d41a8b13adb781bbf7196ddbcf8d88505/lazy_loader-0.5-py3-none-any.whl", hash = "sha256:ab0ea149e9c554d4ffeeb21105ac60bed7f3b4fd69b1d2360a4add51b170b005", size = 8044, upload-time = "2026-03-06T15:45:07.668Z" }, ] [[package]] name = "liblaf-apple" source = { editable = "." } dependencies = [ - { name = "beartype" }, - { name = "chex" }, - { name = "cytoolz" }, { name = "einops" }, - { name = "equinox" }, { name = "felupe" }, - { name = "jax" }, + { name = "ipctk" }, { name = "jaxtyping" }, { name = "lazy-loader" }, - { name = "liblaf-grapes" }, { name = "liblaf-melon" }, { name = "liblaf-peach" }, - { name = "lineax" }, - { name = "loguru" }, - { name = "matplotlib" }, { name = "numpy" }, - { name = "optax" }, + { name = "optree" }, { name = "pyvista" }, - { name = "rich" }, - { name = "scipy" }, + { name = "torch" }, { name = "warp-lang" }, ] -[package.optional-dependencies] -cuda12 = [ - { name = "jax", extra = ["cuda12"] }, - { name = "liblaf-peach", extra = ["cuda12"] }, -] -cuda13 = [ - { name = "jax", extra = ["cuda13"] }, - { name = "liblaf-peach", extra = ["cuda13"] }, -] - [package.dev-dependencies] build = [ { name = "check-wheel-contents" }, @@ -2817,113 +2019,169 @@ build = [ dev = [ { name = "icecream" }, { name = "ipykernel" }, - { name = "keyboard" }, + { name = "jax", extra = ["cuda13"] }, { name = "liblaf-cherries" }, - { name = "marimo", extra = ["recommended"] }, - { name = "scipy-stubs" }, + { name = "liblaf-grapes" }, + { name = "pygame" }, { name = "sympy" }, - { name = "toolz-stubs" }, { name = "viztracer" }, ] docs = [ - { name = "liblaf-mkdocs-preset" }, - { name = "mkdocs" }, + { name = "griffe-fieldz" }, + { name = "griffe-inherited-docstrings" }, + { name = "griffe-pydantic" }, + { name = "griffe-warnings-deprecated" }, + { name = "mkdocstrings", extra = ["python"] }, + { name = "zensical" }, +] +lint = [ + { name = "import-linter", extra = ["ui"] }, + { name = "ruff" }, +] +nox = [ + { name = "liblaf-nox-recipes" }, + { name = "nox" }, + { name = "nox-uv" }, ] test = [ - { name = "liblaf-pytest-preset" }, + { name = "hypothesis" }, + { name = "icecream" }, + { name = "ipykernel" }, + { name = "jax", extra = ["cuda13"] }, + { name = "liblaf-cherries" }, + { name = "liblaf-grapes" }, + { name = "pygame" }, { name = "pytest" }, + { name = "pytest-codspeed" }, + { name = "pytest-cov" }, + { name = "pytest-randomly" }, + { name = "sympy" }, + { name = "viztracer" }, +] +typing = [ + { name = "ipctk-stubs" }, + { name = "mypy" }, + { name = "pybind11-stubgen" }, + { name = "scipy-stubs" }, ] [package.metadata] requires-dist = [ - { name = "beartype", specifier = ">=0.22,<0.23" }, - { name = "chex", specifier = ">=0.1,<0.2" }, - { name = "cytoolz", specifier = ">=1,<2" }, - { name = "einops", specifier = ">=0.8,<0.9" }, - { name = "equinox", specifier = ">=0.13,<0.14" }, - { name = "felupe", specifier = ">=9,<10" }, - { name = "jax", specifier = ">=0.8,<0.9" }, - { name = "jax", extras = ["cuda12"], marker = "extra == 'cuda12'", specifier = ">=0.8,<0.9" }, - { name = "jax", extras = ["cuda13"], marker = "extra == 'cuda13'", specifier = ">=0.8,<0.9" }, - { name = "jaxtyping", specifier = ">=0.3,<0.4" }, - { name = "lazy-loader", specifier = ">=0.4,<0.5" }, - { name = "liblaf-grapes", specifier = ">=8,<9" }, - { name = "liblaf-melon", specifier = ">=1,<2" }, - { name = "liblaf-peach", specifier = ">=0.7,<0.8" }, - { name = "liblaf-peach", extras = ["cuda12"], marker = "extra == 'cuda12'", specifier = ">=0.7,<0.8" }, - { name = "liblaf-peach", extras = ["cuda13"], marker = "extra == 'cuda13'", specifier = ">=0.7,<0.8" }, - { name = "lineax", specifier = ">=0.0.8,<0.0.9" }, - { name = "loguru", specifier = ">=0.7,<0.8" }, - { name = "matplotlib", specifier = ">=3,<4" }, - { name = "numpy", specifier = ">=2,<3" }, - { name = "optax", specifier = ">=0.2,<0.3" }, - { name = "pyvista", specifier = ">=0.46,<0.47" }, - { name = "rich", specifier = ">=14,<15" }, - { name = "scipy", specifier = ">=1,<2" }, - { name = "warp-lang", specifier = ">=1,<2" }, -] -provides-extras = ["cuda12", "cuda13"] + { name = "einops", specifier = ">=0.8" }, + { name = "felupe", specifier = ">=10" }, + { name = "ipctk", specifier = ">=1.5.0", index = "https://pypi.org/simple/" }, + { name = "jaxtyping", specifier = ">=0.3" }, + { name = "lazy-loader", specifier = ">=0.1" }, + { name = "liblaf-melon", specifier = ">=1" }, + { name = "liblaf-peach", specifier = ">=0.10" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "optree", specifier = ">=0.19.1" }, + { name = "pyvista", specifier = ">=0.47" }, + { name = "torch", specifier = ">=2.11.0" }, + { name = "warp-lang", specifier = ">=1.13" }, +] [package.metadata.requires-dev] build = [ - { name = "check-wheel-contents", specifier = ">=0.6,<0.7" }, - { name = "hatch", specifier = ">=1,<2" }, - { name = "twine", specifier = ">=6,<7" }, + { name = "check-wheel-contents", specifier = ">=0.6" }, + { name = "hatch", specifier = ">=1" }, + { name = "twine", specifier = ">=6" }, ] dev = [ - { name = "icecream", specifier = ">=2,<3" }, - { name = "ipykernel", specifier = ">=7,<8" }, - { name = "keyboard", specifier = ">=0.13.5,<0.14.0" }, - { name = "liblaf-cherries", specifier = ">=1,<2" }, - { name = "marimo", extras = ["recommended"], specifier = ">=0.18,<0.19" }, - { name = "scipy-stubs", specifier = ">=1,<2" }, - { name = "sympy", specifier = ">=1,<2" }, - { name = "toolz-stubs", specifier = ">=0.2.1,<0.3.0" }, - { name = "viztracer", specifier = ">=1,<2" }, + { name = "icecream", specifier = ">=2.1.10" }, + { name = "ipykernel", specifier = ">=7" }, + { name = "jax", extras = ["cuda13"], specifier = ">=0.10.0" }, + { name = "liblaf-cherries", specifier = ">=1" }, + { name = "liblaf-grapes", specifier = ">=9" }, + { name = "pygame", specifier = ">=2.6.1" }, + { name = "sympy", specifier = ">=1" }, + { name = "viztracer", specifier = ">=1" }, ] docs = [ - { name = "liblaf-mkdocs-preset", specifier = ">=0.2,<0.3" }, - { name = "mkdocs", specifier = ">=1,<2" }, + { name = "griffe-fieldz", specifier = ">=0.5" }, + { name = "griffe-inherited-docstrings", specifier = ">=1" }, + { name = "griffe-pydantic", specifier = ">=1" }, + { name = "griffe-warnings-deprecated", specifier = ">=1" }, + { name = "mkdocstrings", extras = ["python"], specifier = ">=1" }, + { name = "zensical", specifier = ">=0.0.43" }, +] +lint = [ + { name = "import-linter", extras = ["ui"], specifier = ">=2" }, + { name = "ruff", specifier = ">=0.15" }, +] +nox = [ + { name = "liblaf-nox-recipes", specifier = ">=0.1" }, + { name = "nox", specifier = ">=2026" }, + { name = "nox-uv", specifier = ">=0.7" }, ] test = [ - { name = "liblaf-pytest-preset", specifier = ">=0.1,<0.2" }, - { name = "pytest", specifier = ">=9,<10" }, + { name = "hypothesis", specifier = ">=6" }, + { name = "icecream", specifier = ">=2.1.10" }, + { name = "ipykernel", specifier = ">=7" }, + { name = "jax", extras = ["cuda13"], specifier = ">=0.10.0" }, + { name = "liblaf-cherries", specifier = ">=1" }, + { name = "liblaf-grapes", specifier = ">=9" }, + { name = "pygame", specifier = ">=2.6.1" }, + { name = "pytest", specifier = ">=9" }, + { name = "pytest-codspeed", specifier = ">=4.5.0" }, + { name = "pytest-cov", specifier = ">=7" }, + { name = "pytest-randomly", specifier = ">=4" }, + { name = "sympy", specifier = ">=1" }, + { name = "viztracer", specifier = ">=1" }, +] +typing = [ + { name = "ipctk-stubs", specifier = ">=1", index = "https://pypi.org/simple/" }, + { name = "mypy", specifier = ">=2.1.0" }, + { name = "pybind11-stubgen", specifier = ">=2.5.5" }, + { name = "scipy-stubs", specifier = ">=1" }, ] [[package]] name = "liblaf-cherries" -version = "1.0.0" +version = "2.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, - { name = "cachetools" }, + { name = "autoregistry" }, { name = "comet-ml" }, - { name = "dvc", extra = ["ssh"] }, { name = "environs" }, { name = "gitpython" }, { name = "giturlparse" }, - { name = "lazy-loader" }, - { name = "liblaf-grapes" }, + { name = "liblaf-logging" }, + { name = "msgspec", extra = ["yaml"] }, { name = "pydantic" }, { name = "pydantic-settings" }, - { name = "rich" }, - { name = "wrapt" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/0a/c2294b87e8cb2e6065b17d93b84fbff4143ff3ccc63784a2d9aa81da29ec/liblaf_cherries-2.0.2.tar.gz", hash = "sha256:3befbb97f3bd73257da35770a65092f3865888c8886a19034349386884b548e1", size = 18943, upload-time = "2026-05-26T14:01:23.237Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/d5/f8c8980e591d360c981b084fc114ca934269137d76f0a20e9313384978d2/liblaf_cherries-2.0.2-py3-none-any.whl", hash = "sha256:7942cf18676b333254eed29bc509b91b366dfa2c821cf99cd885f08381e17ca2", size = 30829, upload-time = "2026-05-26T14:01:21.926Z" }, +] + +[[package]] +name = "liblaf-conf" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lazy-loader" }, + { name = "pydantic" }, + { name = "pydantic-extra-types", extra = ["pendulum"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/2c/0d9ab23f532d91138842287645317b365540e7e8c22a06edab05cbb5717e/liblaf_cherries-1.0.0.tar.gz", hash = "sha256:2f1c2573128d896a1d4f60b8daa4b44d228bd9be12ea32391e82c7c1b9e420e2", size = 14355, upload-time = "2026-01-04T08:28:38.649Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/6c/8554064e2a0c4fb24928fd93dae15cb130f186afa6a5282e7efe106642a0/liblaf_conf-0.1.2.tar.gz", hash = "sha256:6914b38717af82731b10c12c27bd0df66a06ed5624c4ca2541ca0c589bccab37", size = 12056, upload-time = "2026-05-05T08:25:23.523Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/54/94e60ffc0291caaf712eba4091c230aa4b17614356e156dd7c69a8fd6d1d/liblaf_cherries-1.0.0-py3-none-any.whl", hash = "sha256:64c40c928a5cdbf94c2ace9d32290181d31580878f3789b87deacefe5eaa8fda", size = 26989, upload-time = "2026-01-04T08:28:37.071Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/1d96d12fc79a38938b9f193b66e8d40f920492cf17c085b3d59bf3b3a4fd/liblaf_conf-0.1.2-py3-none-any.whl", hash = "sha256:95d04fd766c2307ddc85c39dc77cb550dc919e0f20712aedc1bd17d573ef57d2", size = 16464, upload-time = "2026-05-05T08:25:22.043Z" }, ] [[package]] name = "liblaf-grapes" -version = "8.11.0" +version = "9.3.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "about-time" }, { name = "asttokens" }, { name = "attrs" }, { name = "autoregistry" }, - { name = "cachetools" }, + { name = "cachebox" }, { name = "cytoolz" }, { name = "environs" }, { name = "executing" }, @@ -2936,20 +2194,36 @@ dependencies = [ { name = "pendulum" }, { name = "platformdirs" }, { name = "pydantic" }, + { name = "quantiphy" }, { name = "rich" }, { name = "toolz" }, - { name = "typing-extensions" }, { name = "wadler-lindig" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1c/57/78599f3109026e072989f4cf887b65a3343ae6b1e29dc63f641be0c5d8fb/liblaf_grapes-8.11.0.tar.gz", hash = "sha256:7c1d7b117fe837ccd02e8cf3f548bf0b71f188affd096afe8f028cc624e576d3", size = 43459, upload-time = "2026-01-13T06:26:42.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/48/9635f35e7372d7a324d4733ecfb1afcc40868a3946d5510dbab96484957b/liblaf_grapes-9.3.5.tar.gz", hash = "sha256:54b6fe9ccd7728af184b75fd71db8e4f42bcf5aa730df9e800c279d0a7f9f916", size = 45100, upload-time = "2026-03-31T10:08:03.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/94/43f071a2f3e8002d06e5668eaa69ffc2e93c74d5b38af2c254e9eefe80fe/liblaf_grapes-9.3.5-py3-none-any.whl", hash = "sha256:6099774a31e72eee17b3e21ba0181c4c517b98763a0d0424f9a5625fbd05ef23", size = 95520, upload-time = "2026-03-31T10:08:02.167Z" }, +] + +[[package]] +name = "liblaf-logging" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "liblaf-conf" }, + { name = "limits" }, + { name = "packaging" }, + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/03/45fad6b08cb70e14f4f672a73740dd61442452595aac5c5d31c9c5570ef9/liblaf_logging-0.1.2.tar.gz", hash = "sha256:7c6ec09a15be6fe4b7b3f9453cbdcc460a320b51f14a498a451af5c9313bf55d", size = 16644, upload-time = "2026-05-26T13:11:37.653Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/2c/a28578d8e2ea25699b2a013225d2e5dcea0ce890421a20caaab325e903a6/liblaf_grapes-8.11.0-py3-none-any.whl", hash = "sha256:1695b7e9a26dbd23cb97d61055dcf761927a8b9b844ed594f02120406eaf8bd7", size = 93911, upload-time = "2026-01-13T06:26:40.853Z" }, + { url = "https://files.pythonhosted.org/packages/7d/27/0a3632fd22362264a250aeaac884c501354f415743b02060802c426361e6/liblaf_logging-0.1.2-py3-none-any.whl", hash = "sha256:62886ddd85af289961c492f5b21238e34dddfc1512d5b5862acbc2a0cfd25f98", size = 25119, upload-time = "2026-05-26T13:11:36.38Z" }, ] [[package]] name = "liblaf-melon" -version = "1.1.0" +version = "1.1.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -2975,302 +2249,230 @@ dependencies = [ { name = "trimesh", extra = ["easy"] }, { name = "warp-lang" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/47/f8bee9d777f57cda644e6eb77108403d09ad04c352f33f2265e6801f2b4e/liblaf_melon-1.1.0.tar.gz", hash = "sha256:da6bcd3f447f66cc77a26b853c06762eb1c48ea843f36142c0194c51b91d1343", size = 31537, upload-time = "2026-01-04T12:29:21.515Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/fa/7a3ea2e0bb76819b671ab873cd982778960185163ee40dd8135aa0b652af/liblaf_melon-1.1.3.tar.gz", hash = "sha256:a7c9ced2b7706fbf2d46a987b0aa30042e70fad97a7c15d59cde5ec23a92b369", size = 31604, upload-time = "2026-03-24T13:25:06.31Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/2f/4b0d46e29858823d3e08990384cb8ddbb7e61f83cefdc6d080e80e2ecbf7/liblaf_melon-1.1.0-py3-none-any.whl", hash = "sha256:29d1653dd793426f93fe8f4c6ea2e4d61d417507024d6e249f3a06cea52337e3", size = 75089, upload-time = "2026-01-04T12:29:19.932Z" }, + { url = "https://files.pythonhosted.org/packages/58/24/299f2aa762286b8fc06d8a9317fc319917b900e6932c841ee3fe3ea97783/liblaf_melon-1.1.3-py3-none-any.whl", hash = "sha256:b24c67ee2999e28ba30ac59df30367a176b67cbe54570868cf293ddf30713b96", size = 75022, upload-time = "2026-03-24T13:25:05.072Z" }, ] [[package]] -name = "liblaf-mkdocs-preset" -version = "0.2.2" +name = "liblaf-nox-recipes" +version = "0.1.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "docstring-inheritance" }, - { name = "griffe-fieldz" }, - { name = "griffe-generics" }, - { name = "griffe-inherited-docstrings" }, - { name = "griffe-modernized-annotations" }, - { name = "griffe-pydantic" }, - { name = "griffe-warnings-deprecated" }, - { name = "mdx-truly-sane-lists" }, - { name = "mkdocs" }, - { name = "mkdocs-api-autonav" }, - { name = "mkdocs-autorefs" }, - { name = "mkdocs-awesome-nav" }, - { name = "mkdocs-git-committers-plugin-2" }, - { name = "mkdocs-git-revision-date-localized-plugin" }, - { name = "mkdocs-include-markdown-plugin", extra = ["cache"] }, - { name = "mkdocs-material", extra = ["imaging"] }, - { name = "mkdocstrings", extra = ["python"] }, - { name = "pymdown-extensions" }, - { name = "ruff" }, + { name = "lazy-loader" }, + { name = "nox" }, + { name = "nvidia-ml-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b6/62/6a0b33cc7fedb1fd2163a1c70e40d45a39cf7618ba753431d3df6ef1c70c/liblaf_mkdocs_preset-0.2.2.tar.gz", hash = "sha256:ae6450329594ad167dfebaebd9d35e28610d7748c7c130ee6c4120a8e9b0bd99", size = 4541, upload-time = "2025-10-12T01:22:07.455Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/52/bbaf2099c6bb96cf862178b903bfa2442f6e581cb7adbd3d8988dc219763/liblaf_nox_recipes-0.1.6.tar.gz", hash = "sha256:e3f02372809a938b8c8706dd98e1821b594120fc52793184ac761724b2163d48", size = 8211, upload-time = "2026-04-05T05:47:25.962Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/75/ede35005d36356816ca2ebf70a91954cc70c85a6fc5e2c8b665289de5628/liblaf_mkdocs_preset-0.2.2-py3-none-any.whl", hash = "sha256:26090eff15e729a072fe8700e327f933b9853c8ee601378a890d832f9df5892d", size = 3897, upload-time = "2025-10-12T01:22:05.766Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ee/aa653ffe0f348ce568bb7ea48231dc2b376d7687566984d1deb9de8eb579/liblaf_nox_recipes-0.1.6-py3-none-any.whl", hash = "sha256:d969effaf8c84de7fb4668fbc19d213b748f637a8b3fae0309895df70c52733c", size = 9924, upload-time = "2026-04-05T05:47:24.281Z" }, ] [[package]] name = "liblaf-peach" -version = "0.7.19" +version = "0.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, - { name = "cytoolz" }, - { name = "equinox" }, - { name = "jax" }, + { name = "cupy-cuda13x" }, { name = "jaxtyping" }, { name = "lazy-loader" }, - { name = "liblaf-grapes" }, - { name = "lineax" }, - { name = "more-itertools" }, { name = "numpy" }, - { name = "optax" }, - { name = "pylops" }, { name = "scipy" }, - { name = "wrapt" }, + { name = "torch" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/f9/24d2d6f20aca64baf00bcd3b31b5b6da71cc6c76c1402afd1c32a0ba8d24/liblaf_peach-0.7.19.tar.gz", hash = "sha256:8efcd9688d19d5786908db714573921ee178d9c523902ec44ae314fe3f6a3e57", size = 22653, upload-time = "2026-01-11T01:09:00.888Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/9b/b35a88053bb79a594319bee3e4ca020ead48252904adeef16b7ec2c3673d/liblaf_peach-0.10.0.tar.gz", hash = "sha256:7372c2818d4b10f4dc1a1b7858bc2c9acb2597a7588e589dbafe921da347cf54", size = 15221, upload-time = "2026-05-19T12:01:11.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/be/b8c451806565ee6062352a2028aeff662babb04fa07c4fc8ce239693d58b/liblaf_peach-0.7.19-py3-none-any.whl", hash = "sha256:72b0a39758d66c758335b264879ea8b2b21cdb32567f32b8ddf63e0f1e91e6a9", size = 53911, upload-time = "2026-01-11T01:08:59.327Z" }, -] - -[package.optional-dependencies] -cuda12 = [ - { name = "cupy-cuda12x" }, - { name = "jax", extra = ["cuda12"] }, -] -cuda13 = [ - { name = "cupy-cuda13x" }, - { name = "jax", extra = ["cuda13"] }, + { url = "https://files.pythonhosted.org/packages/7e/89/b05d40d0061a62d7fb1c4eedc0bc9eb7dd598ad6418b5daf7ca2691c90f7/liblaf_peach-0.10.0-py3-none-any.whl", hash = "sha256:6d384d011c80675b9dd09f184da7c75167af94d9d70c1f595b6948d6b57a196d", size = 30258, upload-time = "2026-05-19T12:01:09.815Z" }, ] [[package]] -name = "liblaf-pytest-preset" -version = "0.1.3" +name = "librt" +version = "0.11.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hypothesis" }, - { name = "pytest" }, - { name = "pytest-codspeed" }, - { name = "pytest-cov" }, - { name = "pytest-randomly" }, - { name = "pytest-xdist" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/77/fa/674b68d1dc2568299c708e480001327bef78e2c828dc71a711e585fd20d9/liblaf_pytest_preset-0.1.3.tar.gz", hash = "sha256:0153a065ad034c560969d19d478c4c4fb8629d5538363e20168acee75e60b53d", size = 2953, upload-time = "2025-11-10T03:13:11.498Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/92/33e9dc874deb6ff06ac4b5fe669ac41ac80808254ba9e5699f14e5fbad3b/liblaf_pytest_preset-0.1.3-py3-none-any.whl", hash = "sha256:ddda8c85020c97857db5d2a0cedc829839005fb3e3cdb4783f93a164c98fd930", size = 3681, upload-time = "2025-11-10T03:13:10.171Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/40/08/9e7f6b5d2b5bed6ad055cdd5925f192bb403a51280f86b56554d9d0699a2/librt-0.11.0.tar.gz", hash = "sha256:075dc3ef4458a278e0195cbf6ac9d38808d9b906c5a6c7f7f79c3888276a3fb1", size = 200139, upload-time = "2026-05-10T18:17:25.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/d0/07c77e067f0838949b43bd89232c29d72efebb9d2801a9750184eb706b71/librt-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b87504f1690a23b9a2cca841191a04f83895d4fc2dd04df91d82b1a04ca2ad46", size = 144147, upload-time = "2026-05-10T18:15:53.227Z" }, + { url = "https://files.pythonhosted.org/packages/7a/24/8493538fa4f62f982686398a5b8f68008138a75086abdea19ade64bf4255/librt-0.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40071fc5fe0ce8daa6de616702314a01e1250711682b0523d6ab8d4525910cb3", size = 143614, upload-time = "2026-05-10T18:15:54.657Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1e/f8bad050810d9171f34a1648ed910e56814c2ba61639f2bd53c6377ae24b/librt-0.11.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:137e79445c896a0ea7b265f52d23954e05b64222ee1af69e2cb34219067cbb67", size = 485538, upload-time = "2026-05-10T18:15:56.117Z" }, + { url = "https://files.pythonhosted.org/packages/c0/fe/3594ebfbaf03084ba4b120c9ba5c3183fd938a48725e9bbe6ff0a5159ad8/librt-0.11.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:cca6644054e78746d8d4ef238681f9c34ff8b584fe6b988ecebb8db3b15e622a", size = 479623, upload-time = "2026-05-10T18:15:57.544Z" }, + { url = "https://files.pythonhosted.org/packages/b0/da/5d1876984b3746c85dbd219dbfcb73c85f54ee263fd32e5b2a632ec14571/librt-0.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5b0eea49f5562861ee8d757a32ef7d559c1d35be2aaaa1ec28941d74c9ffc8a", size = 513082, upload-time = "2026-05-10T18:15:58.805Z" }, + { url = "https://files.pythonhosted.org/packages/19/6e/55bdf5d5ca00c3e18430690bf2c953d8d3ffd3c337418173d33dec985dc9/librt-0.11.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0d1029d7e1ae1a7e647ed6fb5df8c4ce2dffefb7a9f5fd1376a4554d96dac09f", size = 508105, upload-time = "2026-05-10T18:16:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/f1f23a7c595ee90ece4d35c851e5d104b1311a887ed1b4ac4c35bbd13da8/librt-0.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bc3ce6b33c5828d9e80592011a5c584cb2ce86edbc4088405f70da47dc1d1b3b", size = 522268, upload-time = "2026-05-10T18:16:01.708Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/5720f5697a7f54b78b3aefbe20df3a48cedcff1276618c4aa481177942ed/librt-0.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:936c5995f3514a42111f20099397d8177c79b4d7e70961e396c6f5a0a3566766", size = 527348, upload-time = "2026-05-10T18:16:03.496Z" }, + { url = "https://files.pythonhosted.org/packages/50/db/b4a47c6f91db4ff76348a0b3dd0cc65e090a078b765a810a62ff9434c3d3/librt-0.11.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9bc0ca6ad9381cbe8e4aa6e5726e4c80c78115a6e9723c599ed1d73e092bc49d", size = 516294, upload-time = "2026-05-10T18:16:05.173Z" }, + { url = "https://files.pythonhosted.org/packages/9e/58/9384b2f4eb1ed1d273d40948a7c5c4b2360213b402ef3be4641c06299f9c/librt-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:070aa8c26c0a74774317a72df8851facc7f0f012a5b406557ac56992d92e1ec8", size = 553608, upload-time = "2026-05-10T18:16:06.839Z" }, + { url = "https://files.pythonhosted.org/packages/21/7b/5aa8848a7c6a9278c79375146da1812e695754ceec5f005e6043461a7315/librt-0.11.0-cp312-cp312-win32.whl", hash = "sha256:6bf14feb84b05ae945277395451998c89c54d0def4070eb5c08de544930b245a", size = 101879, upload-time = "2026-05-10T18:16:08.103Z" }, + { url = "https://files.pythonhosted.org/packages/37/33/8a745436944947575b584231750a41417de1a38cf6a2e9251d1065651c09/librt-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:75672f0bc524ede266287d532d7923dbce94c7514ad07627bac3d0c6d92cc4d9", size = 119831, upload-time = "2026-05-10T18:16:09.174Z" }, + { url = "https://files.pythonhosted.org/packages/59/67/a6739ac96e28b7855808bdb0370e250606104a859750d209e5a0716fe7ab/librt-0.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f10cf143e4a9bb0f4f5af568a00df94a2d69ef41c2579584454bb0fe5cc642c", size = 103470, upload-time = "2026-05-10T18:16:10.369Z" }, + { url = "https://files.pythonhosted.org/packages/82/61/e59168d4d0bf2bf90f4f0caf7a001bfc60254c3af4586013b04dc3ef517b/librt-0.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:78dc31f7fdfe9c9d0eb0e8f42d139db230e826415bbcabd9f0e9faaaee909894", size = 144119, upload-time = "2026-05-10T18:16:11.771Z" }, + { url = "https://files.pythonhosted.org/packages/61/fd/caa1d60b12f7dd79ccea23054e06eeaebe266a5f52c40a6b651069200ce5/librt-0.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fa475675db22290c3158e1d42326d0f5a65f04f44a0e68c3630a25b53560fb9c", size = 143565, upload-time = "2026-05-10T18:16:13.334Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a9/dc744f5c2b4978d48db970be29f22716d3413d28b14ad99740817315cf2c/librt-0.11.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:621db29691044bdeda22e789e482e1b0f3a985d90e3426c9c6d17606416205ea", size = 485395, upload-time = "2026-05-10T18:16:14.729Z" }, + { url = "https://files.pythonhosted.org/packages/8f/21/7f8e97a1e4dae952a5a95948f6f8507a173bc1e669f54340bba6ca1ca31b/librt-0.11.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:a9010e2ed5b3a9e158c5fd966b3ab7e834bb3d3aacc8f66c91dd4b57a3799230", size = 479383, upload-time = "2026-05-10T18:16:16.321Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6d/d8ee9c114bebf2c50e29ec2aa940826fccb62a645c3e4c18760987d0e16d/librt-0.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c39513d8b7477a2e1ed8c43fc21c524e8d5a0f8d4e8b7b074dbdbe7820a08e2", size = 513010, upload-time = "2026-05-10T18:16:17.647Z" }, + { url = "https://files.pythonhosted.org/packages/f0/43/0b5708af2bd30a46400e72ba6bdaa8f066f15fb9a688527e34220e8d6c06/librt-0.11.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7aef3cf1d5af86e770ab04bfd993dfc4ae8b8c17f66fb77dd4a7d50de7bbb1a3", size = 508433, upload-time = "2026-05-10T18:16:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/4a/50/356187247d09013490481033183b3532b58acf8028bcb34b2b56a375c9b2/librt-0.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:557183ddc36babe46b27dd60facbd5adb4492181a5be887587d57cda6e092f21", size = 522595, upload-time = "2026-05-10T18:16:20.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/c6ac4240899c7f3248079d5a9900debe0dadb3fdeaf856684c987105ba47/librt-0.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:83d3e1f72bd42f6c5c0b7daec530c3f829bd02db42c70b8ddf0c2d90a2459930", size = 527255, upload-time = "2026-05-10T18:16:22.352Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b5/a81322dbeedeeaf9c1ee6f001734d28a09d8383ac9e6779bc24bbd0743c6/librt-0.11.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:4ce1f21fbe589bc1afd7872dece84fb0e1144f794a288e58a10d2c54a55c43be", size = 516847, upload-time = "2026-05-10T18:16:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/66/6e6323787d592b55204a42595ff1102da5115601b53a7e9ddebc889a6da5/librt-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b09f7044ea2b64c9da42fd3d335666518cfd1c6e8a182c95da73d0214b41e", size = 553920, upload-time = "2026-05-10T18:16:25.025Z" }, + { url = "https://files.pythonhosted.org/packages/9c/21/623f8ca230857102066d9ca8c6c1734995908c4d0d1bee7bb2ef0021cb33/librt-0.11.0-cp313-cp313-win32.whl", hash = "sha256:78fddc31cd4d3caa897ad5d31f856b1faadc9474021ad6cb182b9018793e254e", size = 101898, upload-time = "2026-05-10T18:16:26.649Z" }, + { url = "https://files.pythonhosted.org/packages/b3/1d/b4ebd44dd723f768469007515cb92251e0ae286c94c140f374801140fa74/librt-0.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ca8aa88751a775870b764e93bad5135385f563cb8dcee399abf034ea4d3cb47", size = 119812, upload-time = "2026-05-10T18:16:27.859Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e4/b2f4ca7965ca373b491cdb4bc25cdb30c1649ca81a8782056a83850292a9/librt-0.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:96f044bb325fd9cf1a723015638c219e9143f0dfbc0ca54c565df2b7fc748b44", size = 103448, upload-time = "2026-05-10T18:16:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/29/eb/dbce197da4e227779e56b5735f2decc3eb36e55a1cdbf1bd65d6639d76c1/librt-0.11.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4a017a95e5837dc15a8c5661d60e05daa96b90908b1aa6b7acdf443cd25c8ebd", size = 143345, upload-time = "2026-05-10T18:16:30.674Z" }, + { url = "https://files.pythonhosted.org/packages/76/a3/254bebd0c11c8ba684018efb8006ff22e466abce445215cca6c778e7d9de/librt-0.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b1ecbd9819deccc39b7542bf4d2a740d8a620694d39989e58661d3763458f8d4", size = 143131, upload-time = "2026-05-10T18:16:32.037Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3f/f77d6122d21ac7bf6ae8a7dfced1bd2a7ac545d3273ebdcaf8042f6d619f/librt-0.11.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7da327dacd7be8f8ec36547373550744a3cc0e536d54665cd83f8bcd961200e8", size = 477024, upload-time = "2026-05-10T18:16:33.493Z" }, + { url = "https://files.pythonhosted.org/packages/ac/0a/2c996dadebaa7d9bbbd43ef2d4f3e66b6da545f838a41694ef6172cebec8/librt-0.11.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:0dc56b1f8d06e60db362cc3fdae206681817f86ce4725d34511473487f12a34b", size = 474221, upload-time = "2026-05-10T18:16:34.864Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7e/f5d92af8486b8272c23b3e686b46ff72d89c8169585eb61eef01a2ac7147/librt-0.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05fb8fb2ab90e21c8d12ea240d744ad514da9baf381ebfa70d91d20d21713175", size = 505174, upload-time = "2026-05-10T18:16:36.705Z" }, + { url = "https://files.pythonhosted.org/packages/af/1a/cb0734fe86398eb33193ab753b7326255c74cac5eb09e76b9b16536e7adb/librt-0.11.0-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cae74872be221df4374d10fec61f93ed1513b9546ea84f2c0bf73ab3e9bd0b03", size = 497216, upload-time = "2026-05-10T18:16:38.418Z" }, + { url = "https://files.pythonhosted.org/packages/18/06/094820f91558b66e29943c0ec41c9914f460f48dd51fc503c3101e10842d/librt-0.11.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:32bcc918c0148eb7e3d57385125bac7e5f9e4359d05f07448b09f6f778c2f31c", size = 513921, upload-time = "2026-05-10T18:16:39.848Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c2/00de9018871a282f530cacb457d5ec0428f6ac7e6fedde9aff7468d9fb04/librt-0.11.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:f9743fc99135d5f78d2454435615f6dec0473ca507c26ce9d92b10b562a280d3", size = 520850, upload-time = "2026-05-10T18:16:41.471Z" }, + { url = "https://files.pythonhosted.org/packages/51/9d/64631832348fd1834fb3a61b996434edddaaf25a31d03b0a76273159d2cf/librt-0.11.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:5ba067f4aadae8fda802d91d2124c90c42195ff32d9161d3549e6d05cfe26f96", size = 504237, upload-time = "2026-05-10T18:16:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ec/ae5525eb16edc827a044e7bb8777a455ff95d4bca9379e7e6bddd7383647/librt-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:de3bf945454d032f9e390b85c4072e0a0570bf825421c8be0e71209fa65e1abe", size = 546261, upload-time = "2026-05-10T18:16:44.408Z" }, + { url = "https://files.pythonhosted.org/packages/5a/09/adce371f27ca039411da9659f7430fcc2ba6cd0c7b3e4467a0f091be7fa9/librt-0.11.0-cp314-cp314-win32.whl", hash = "sha256:d2277a05f6dcb9fd13db9566aac4fabd68c3ea1ea46ee5567d4eef8efa495a2f", size = 96965, upload-time = "2026-05-10T18:16:46.039Z" }, + { url = "https://files.pythonhosted.org/packages/d6/ee/8ac720d98548f173c7ce2e632a7ca94673f74cacd5c8162a84af5b35958a/librt-0.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:ab73e8db5e3f564d812c1f5c3a175930a5f9bc96ccb5e3b22a34d7858b401cf7", size = 115151, upload-time = "2026-05-10T18:16:47.133Z" }, + { url = "https://files.pythonhosted.org/packages/94/20/c900cf14efeb09b6bef2b2dff20779f73464b97fd58d1c6bccc379588ae3/librt-0.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:aea3caa317752e3a466fa8af45d91ee0ea8c7fdd96e42b0a8dd9b76a7931eba1", size = 98850, upload-time = "2026-05-10T18:16:48.597Z" }, + { url = "https://files.pythonhosted.org/packages/0c/71/944bfe4b64e12abffcd3c15e1cce07f72f3d55655083786285f4dedeb532/librt-0.11.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d1b36540d7aaf9b9101b3a6f376c8d8e9f7a9aec93ed05918f2c69d493ffef72", size = 151138, upload-time = "2026-05-10T18:16:49.839Z" }, + { url = "https://files.pythonhosted.org/packages/b6/10/99e64a5c86989357fda078c8143c533389585f6473b7439172dd8f3b3b2d/librt-0.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:efbb343ab2ce3540f4ecbe6315d677ed70f37cd9a72b1e58066c918ca83acbaa", size = 151976, upload-time = "2026-05-10T18:16:51.062Z" }, + { url = "https://files.pythonhosted.org/packages/21/31/5072ad880946d83e5ea4147d6d018c78eefce85b77819b19bdd0ee229435/librt-0.11.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa0dd688aab3f7914d3e6e5e3554978e0383312fb8e771d84be008a35b9ee548", size = 557927, upload-time = "2026-05-10T18:16:52.632Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8d/70b5fb7cfbab60edbe7381614ab985da58e144fbf465c86d44c95f43cdca/librt-0.11.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:f5fb36b8c6c63fdcbb1d526d94c0d1331610d43f4118cc1beb4efef4f3faacb2", size = 539698, upload-time = "2026-05-10T18:16:53.934Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a3/ba3495a0b3edbd24a4cae0d1d3c64f39a9fc45d06e812101289b50c1a619/librt-0.11.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4a9a237d13addb93715b6fee74023d5ee3469b53fce527626c0e088aa585805f", size = 577162, upload-time = "2026-05-10T18:16:55.589Z" }, + { url = "https://files.pythonhosted.org/packages/f7/db/36e25fb81f99937ff1b96612a1dc9fd66f039cb9cc3aee12c01fac31aab9/librt-0.11.0-cp314-cp314t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5ddd17bd87b2c56ddd60e546a7984a2e64c4e8eab92fb4cf3830a48ad5469d51", size = 566494, upload-time = "2026-05-10T18:16:56.975Z" }, + { url = "https://files.pythonhosted.org/packages/33/0d/3f622b47f0b013eeb9cf4cc07ae9bfe378d832a4eec998b2b209fe84244d/librt-0.11.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bd43992b4473d42f12ff9e68326079f0696d9d4e6000e8f39a0238d482ba6ee2", size = 596858, upload-time = "2026-05-10T18:16:58.374Z" }, + { url = "https://files.pythonhosted.org/packages/a9/02/71b90bc93039c46a2000651f6ad60122b114c8f54c4ad306e0e96f5b75ad/librt-0.11.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:f8e3e8056dd674e279741485e2e512d6e9a751c7455809d0114e6ebf8d781085", size = 590318, upload-time = "2026-05-10T18:16:59.676Z" }, + { url = "https://files.pythonhosted.org/packages/04/04/418cb3f75621e2b761fb1ab0f017f4d70a1a72a6e7c74ee4f7e8d198c2f3/librt-0.11.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c1f708d8ae9c56cf38a903c44297243d2ec83fd82b396b977e0144a3e76217e3", size = 575115, upload-time = "2026-05-10T18:17:01.007Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2c/5a2183ac58dd911f26b5d7e7d7d8f1d87fcecdddd99d6c12169a258ff62c/librt-0.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0add982e0e7b9fc14cf4b33789d5f13f66581889b88c2f58099f6ce8f92617bd", size = 617918, upload-time = "2026-05-10T18:17:02.682Z" }, + { url = "https://files.pythonhosted.org/packages/15/1f/dc6771a52592a4451be6effa200cbfc9cec61e4393d3033d81a9d307961d/librt-0.11.0-cp314-cp314t-win32.whl", hash = "sha256:2b481d846ac894c4e8403c5fd0e87c5d11d6499e404b474602508a224ff531c8", size = 103562, upload-time = "2026-05-10T18:17:03.99Z" }, + { url = "https://files.pythonhosted.org/packages/62/4a/7d1415567027286a75ba1093ec4aca11f073e0f559c530cf3e0a757ad55c/librt-0.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:28edb433edde181112a908c78907af28f964eabc15f4dd16c9d66c834302677c", size = 124327, upload-time = "2026-05-10T18:17:05.465Z" }, + { url = "https://files.pythonhosted.org/packages/ce/62/b40b382fa0c66fee1478073eb8db352a4a6beda4a1adccf1df911d8c289c/librt-0.11.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dee008f20b542e3cd162ba338a7f9ec0f6d23d395f66fe8aeeec3c9d067ea253", size = 102572, upload-time = "2026-05-10T18:17:06.809Z" }, ] [[package]] name = "limits" -version = "5.6.0" +version = "5.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "deprecated" }, { name = "packaging" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/e5/c968d43a65128cd54fb685f257aafb90cd5e4e1c67d084a58f0e4cbed557/limits-5.6.0.tar.gz", hash = "sha256:807fac75755e73912e894fdd61e2838de574c5721876a19f7ab454ae1fffb4b5", size = 182984, upload-time = "2025-09-29T17:15:22.689Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/96/4fcd44aed47b8fcc457653b12915fcad192cd646510ef3f29fd216f4b0ab/limits-5.6.0-py3-none-any.whl", hash = "sha256:b585c2104274528536a5b68864ec3835602b3c4a802cd6aa0b07419798394021", size = 60604, upload-time = "2025-09-29T17:15:18.419Z" }, -] - -[[package]] -name = "lineax" -version = "0.0.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "equinox" }, - { name = "jax" }, - { name = "jaxtyping" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6f/75/6ad88863640c6213887c8928aef406713ecfa3c61808c563b9a3f2bf0673/lineax-0.0.8.tar.gz", hash = "sha256:bb2778066b8882acc88ff569d8e415bc5aa387f751b14ae262c9f9607d7f25bb", size = 45304, upload-time = "2025-03-27T17:38:54.421Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/69/826a5d1f45426c68d8f6539f8d275c0e4fcaa57f0c017ec3100986558a41/limits-5.8.0.tar.gz", hash = "sha256:c9e0d74aed837e8f6f50d1fcebcf5fd8130957287206bc3799adaee5092655da", size = 226104, upload-time = "2026-02-05T07:17:35.859Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/a9/2d8d6002eb124e79f7c9ee2311b62f35289fc7e75ee0bbfbe5a4c7295bb9/lineax-0.0.8-py3-none-any.whl", hash = "sha256:1bd21d6c41afda233769d1c1096329ee75181825c9136be65c92b41f6daa1ddb", size = 68045, upload-time = "2025-03-27T17:38:53.394Z" }, -] - -[[package]] -name = "loguru" -version = "0.7.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "win32-setctime", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload-time = "2024-12-06T11:20:54.538Z" }, -] - -[[package]] -name = "loro" -version = "1.10.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/27/ea6f3298fc87ea5f2d60ebfbca088e7d9b2ceb3993f67c83bfb81778ec01/loro-1.10.3.tar.gz", hash = "sha256:68184ab1c2ab94af6ad4aaba416d22f579cabee0b26cbb09a1f67858207bbce8", size = 68833, upload-time = "2025-12-09T10:14:06.644Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/b6/cfbf8088e8ca07d66e6c1eccde42e00bd61708f28e8ea0936f9582306323/loro-1.10.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:028948b48dcc5c2127f974dae4ad466ab69f0d1eeaf367a8145eb6501fb988f2", size = 3239592, upload-time = "2025-12-09T10:11:32.505Z" }, - { url = "https://files.pythonhosted.org/packages/78/e4/7b614260bf16c5e33c0bea6ac47ab0284efd21f89f2e5e4e15cd93bead40/loro-1.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5253b8f436d90412b373c583f22ac9539cfb495bf88f78d4bb41daafef0830b7", size = 3045107, upload-time = "2025-12-09T10:11:17.481Z" }, - { url = "https://files.pythonhosted.org/packages/ae/17/0a78ec341ca69d376629ff2a1b9b3511ee7dd54f2b018616ef03328024f7/loro-1.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14be8a5539d49468c94d65742355dbe79745123d78bf769a23e53bf9b60dd46a", size = 3292720, upload-time = "2025-12-09T10:08:14.027Z" }, - { url = "https://files.pythonhosted.org/packages/d4/9b/f36a4654508e9b8ddbe08a62a0ce8b8e7fd511a39b161821917530cffd8e/loro-1.10.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91b2b9139dfc5314a0197132a53b6673fddb63738380a522d12a05cec7ad76b4", size = 3353260, upload-time = "2025-12-09T10:08:48.251Z" }, - { url = "https://files.pythonhosted.org/packages/b4/0e/7d441ddecc7695153dbe68af4067d62e8d7607fce3747a184878456a91f6/loro-1.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:247897288911c712ee7746965573299fc23ce091e94456da8da371e6adae30f4", size = 3712354, upload-time = "2025-12-09T10:09:26.38Z" }, - { url = "https://files.pythonhosted.org/packages/1c/33/10e66bb84599e61df124f76c00c5398eb59cbb6f69755f81c40f65a18344/loro-1.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:835abc6025eb5b6a0fe22c808472affc95e9a661b212400cfd88ba186b0d304c", size = 3422926, upload-time = "2025-12-09T10:10:00.347Z" }, - { url = "https://files.pythonhosted.org/packages/b2/70/00dc4246d9f3c69ecbb9bc36d5ad1a359884464a44711c665cb0afb1e9de/loro-1.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e660853617fc29e71bb7b796e6f2c21f7722c215f593a89e95cd4d8d5a32aca0", size = 3353092, upload-time = "2025-12-09T10:10:55.786Z" }, - { url = "https://files.pythonhosted.org/packages/19/37/60cc0353c5702e1e469b5d49d1762e782af5d5bd5e7c4e8c47556335b4c6/loro-1.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8059063cab57ca521012ed315a454784c20b0a86653e9014795e804e0a333659", size = 3687798, upload-time = "2025-12-09T10:10:33.253Z" }, - { url = "https://files.pythonhosted.org/packages/88/c4/4db1887eb08dfbb305d9424fdf1004c0edf147fd53ab0aaf64a90450567a/loro-1.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9748359343b5fd7019ab3c2d1d583a0c13c633a4dd21d75e50e3815ab479f493", size = 3474451, upload-time = "2025-12-09T10:11:49.489Z" }, - { url = "https://files.pythonhosted.org/packages/d8/66/10d2e00c43b05f56e96e62100f86a1261f8bbd6422605907f118a752fe61/loro-1.10.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:def7c9c2e16ad5470c9c56f096ac649dd4cd42d5936a32bb0817509a92d82467", size = 3621647, upload-time = "2025-12-09T10:12:25.536Z" }, - { url = "https://files.pythonhosted.org/packages/47/f0/ef8cd6654b09a03684195c650b1fba00f42791fa4844ea400d94030c5615/loro-1.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:34b223fab58591a823f439d9a13d1a1ddac18dc4316866503c588ae8a9147cb1", size = 3667946, upload-time = "2025-12-09T10:13:00.711Z" }, - { url = "https://files.pythonhosted.org/packages/bb/5d/960b62bf85c38d6098ea067438f037a761958f3a17ba674db0cf316b0f60/loro-1.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d5fa4baceb248d771897b76d1426c7656176e82e770f6790940bc3e3812436d", size = 3565866, upload-time = "2025-12-09T10:13:35.401Z" }, - { url = "https://files.pythonhosted.org/packages/8f/d4/0d499a5e00df13ce497263aef2494d9de9e9d1f11d8ab68f89328203befb/loro-1.10.3-cp312-cp312-win32.whl", hash = "sha256:f25ab769b84a5fbeb1f9a1111f5d28927eaeaa8f5d2d871e237f80eaca5c684e", size = 2720785, upload-time = "2025-12-09T10:14:28.79Z" }, - { url = "https://files.pythonhosted.org/packages/1a/9b/2b5be23f1da4cf20c6ce213cfffc66bdab2ea012595abc9e3383103793d0/loro-1.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:3b73b7a3a32e60c3424fc7deaf8b127af7580948e27d8bbe749e3f43508aa0a2", size = 2954650, upload-time = "2025-12-09T10:14:10.235Z" }, - { url = "https://files.pythonhosted.org/packages/75/67/8467cc1c119149ada86903b67ce10fc4b47fb6eb2a8ca5f94c0938fd010f/loro-1.10.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:380ef692c5272e8b607be2ee6a8eef5113e65dc38e6739526c30e3db6abc3fbc", size = 3239527, upload-time = "2025-12-09T10:11:33.884Z" }, - { url = "https://files.pythonhosted.org/packages/bc/3b/d1a01af3446cb98890349215bea7e71ba49dc3e50ffbfb90c5649657a8b8/loro-1.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed966ce6ff1fb3787b3f6c4ed6dd036baa5fb738b84a466a5e764f2ab534ccc2", size = 3044767, upload-time = "2025-12-09T10:11:18.777Z" }, - { url = "https://files.pythonhosted.org/packages/6b/93/37f891fa46767001ae2518697fb01fc187497e3a5238fe28102be626055d/loro-1.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d7c8d2f3d88578fdf69845a9ae16fc5ea3ac54aa838a6bf43a24ce11908220", size = 3292648, upload-time = "2025-12-09T10:08:15.404Z" }, - { url = "https://files.pythonhosted.org/packages/6c/67/82273eeba2416b0410595071eda1eefcdf4072c014d44d2501b660aa7145/loro-1.10.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62283c345bfeedef19c8a6d029cd8830e5d2c20b5fb45975d8a70a8a30a7944b", size = 3353181, upload-time = "2025-12-09T10:08:50.144Z" }, - { url = "https://files.pythonhosted.org/packages/82/33/894dccf132bece82168dfbe61fad25a13ed89d18f20649f99e87c38f9228/loro-1.10.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1e7e6ae091179fa5f0fca1f8612fde20236ee0a678744bf51ff7d26103ea04f", size = 3712583, upload-time = "2025-12-09T10:09:27.934Z" }, - { url = "https://files.pythonhosted.org/packages/b2/b7/99292729d8b271bcc4bff5faa20b33e4c749173af4c9cb9d34880ae3b4c8/loro-1.10.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6abc6de4876aa205498cef52a002bc38662fbd8d742351ea0f535479208b8b1c", size = 3421491, upload-time = "2025-12-09T10:10:01.63Z" }, - { url = "https://files.pythonhosted.org/packages/be/fb/188b808ef1d9b6d842d53969b99a16afb1b71f04739150959c8946345d0e/loro-1.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acbbfd24cf28a71bbdad8544852e9bbba0ba8535f8221f8859b2693555fa8356", size = 3352623, upload-time = "2025-12-09T10:10:57.361Z" }, - { url = "https://files.pythonhosted.org/packages/53/cc/e2d008cc24bddcf05d1a15b8907a73b1731921ab40897f73a3385fdd274a/loro-1.10.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5faf4ebbe8ca39605024f16dbbbde354365f4e2dcfda82c753797461b504bbd3", size = 3687687, upload-time = "2025-12-09T10:10:34.453Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b6/4251822674230027103caa4fd46a1e83c4d676500074e7ab297468bf8f40/loro-1.10.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e049c21b292c4ff992b23a98812840735db84620721c10ae7f047a921202d090", size = 3474316, upload-time = "2025-12-09T10:11:51.207Z" }, - { url = "https://files.pythonhosted.org/packages/c4/54/ecff3ec08d814f3b9ec1c78a14ecf2e7ff132a71b8520f6aa6ad1ace0056/loro-1.10.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:20e8dacfb827c1f7ffb73e127029d7995a9ab2c3b7b7bc3ecc91d22ee32d78d0", size = 3622069, upload-time = "2025-12-09T10:12:27.059Z" }, - { url = "https://files.pythonhosted.org/packages/ac/84/c1b8251000f46df5f4d043af8c711bdbff9818727d26429378e0f3a5115e/loro-1.10.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1b743c1c4f93f5b4f0e12efbb352d26e9f80bcbf20f45d9c70f3d0b522f42060", size = 3667722, upload-time = "2025-12-09T10:13:02.012Z" }, - { url = "https://files.pythonhosted.org/packages/ef/13/c5c02776f4ad52c6361b95e1d7396c29071533cef45e3861a2e35745be27/loro-1.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:446d67bc9e28036a5a5e03526d28a1559ef2a47b3ccad6b07820dae123cc3697", size = 3564952, upload-time = "2025-12-09T10:13:37.227Z" }, - { url = "https://files.pythonhosted.org/packages/1e/f1/63d4bc63a1521a9b577f6d13538ec4790865584fdf87569d5af943792406/loro-1.10.3-cp313-cp313-win32.whl", hash = "sha256:45d7d8ec683599897695bb714771baccabc1b4c4a412283cc39787c7a59f7ff0", size = 2720952, upload-time = "2025-12-09T10:14:30.17Z" }, - { url = "https://files.pythonhosted.org/packages/29/3c/65c8b0b7f96c9b4fbd458867cf91f30fcd58ac25449d8ba9303586061671/loro-1.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:a42bf73b99b07fed11b65feb0a5362b33b19de098f2235848687f4c41204830e", size = 2953768, upload-time = "2025-12-09T10:14:11.965Z" }, - { url = "https://files.pythonhosted.org/packages/4e/e9/f6a242f61aa4d8b56bd11fa467be27d416401d89cc3244b58651a3a44c88/loro-1.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4866325b154aeebcd34be106c7597acf150c374481ac3c12035a1af715ac0f01", size = 3289791, upload-time = "2025-12-09T10:08:16.926Z" }, - { url = "https://files.pythonhosted.org/packages/a7/81/8f5f4d6805658c654264e99467f3f46facdbb2062cbf86743768ee4b942a/loro-1.10.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ea7b8849660a28ce8cd90a82db4f76c23453836fcbc88f5767feaaf8739045e2", size = 3348007, upload-time = "2025-12-09T10:08:53.305Z" }, - { url = "https://files.pythonhosted.org/packages/c3/15/bba0fad18ec5561a140e9781fd2b38672210b52e847d207c57ae85379efd/loro-1.10.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e82cdaf9a5892557d3167e07ed5093f87dfa31ef860a63b0eac6c0c2f435705", size = 3707937, upload-time = "2025-12-09T10:09:29.165Z" }, - { url = "https://files.pythonhosted.org/packages/7a/b2/5519c92bd4f9cde068dc60ba35d7f3e4f8cce41e7bf39febd4fb08908e97/loro-1.10.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7ee99e5dc844fb20fca830906a0d721022ad1c37aad0b1a440c4ecb98d0c02f", size = 3416744, upload-time = "2025-12-09T10:10:02.956Z" }, - { url = "https://files.pythonhosted.org/packages/81/ba/92d97c27582c0ce12bb83df19b9e080c0dfe95068966296a4fa2279c0477/loro-1.10.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:153c297672ad98d0fe6ff8985decf1e64528ad1dd01ae1452bb83bdeb31f858f", size = 3470978, upload-time = "2025-12-09T10:11:52.707Z" }, - { url = "https://files.pythonhosted.org/packages/f3/8b/acb39b0e74af1c317d3121e75a4bc5bc77d7fda5a79c60399746486f60d9/loro-1.10.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:0ed72f8c6a5f521252ee726954055339abba3fcf00404fb4b5c2da168f0cce79", size = 3615039, upload-time = "2025-12-09T10:12:28.631Z" }, - { url = "https://files.pythonhosted.org/packages/4f/c3/154e3361e5ef42012f6842dbd93f8fbace6eec06517b5a4a9f8c4a46e873/loro-1.10.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f612ab17acdac16c0139e63ff45b33175ebfb22e61a60eb7929a4583389348d6", size = 3663731, upload-time = "2025-12-09T10:13:03.557Z" }, - { url = "https://files.pythonhosted.org/packages/c6/dd/a283cf5b1c957e0bbc67503a10e17606a8f8c87f51d3cf3d83dc3a0ac88a/loro-1.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f2741db05c79f3618c954bac90f4572d28c01c243884453f379e9a8738f93d81", size = 3558807, upload-time = "2025-12-09T10:13:38.926Z" }, - { url = "https://files.pythonhosted.org/packages/8d/4a/a5340b6fdf4cd34d758bed23bd1f64063b3b1b41ff4ecc94ee39259ee9a7/loro-1.10.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:623cf7df17626aa55bc6ca54e89177dbe71a5f1c293e102d6153f43991a1a041", size = 3213589, upload-time = "2025-12-09T10:11:35.377Z" }, - { url = "https://files.pythonhosted.org/packages/00/93/5164e93a77e365a92def77c1258386daef233516a29fb674a3b9d973b8b8/loro-1.10.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d8e715d475f32a1462969aca27eeb3f998f309182978f55bc37ce5c515d92e90", size = 3029557, upload-time = "2025-12-09T10:11:20.076Z" }, - { url = "https://files.pythonhosted.org/packages/6c/30/94592d7c01f480ce99e1783b0d9203eb20ba2eab42575dabd384e3c9d1fa/loro-1.10.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e012a80e8c9fe248b9d0a76e91664c9479a72d976eaeed78f87b15b5d1d732", size = 3282335, upload-time = "2025-12-09T10:08:18.168Z" }, - { url = "https://files.pythonhosted.org/packages/e9/a8/7ae3c0b955aa638fa7dbd2d194c7759749a0d0d96a94805d5dec9b30eaea/loro-1.10.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:686ece56756acbaf80c986848915e9126a29a06d7a62209747e3ef1efc0bd8f6", size = 3333071, upload-time = "2025-12-09T10:08:55.314Z" }, - { url = "https://files.pythonhosted.org/packages/f7/10/151edebdb2bca626ad50911b761164ced16984b25b0b37b34b674ded8b29/loro-1.10.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aa821c8871deca98f4605eb0c40fb26bcf82bd29c9e7fa33b183516c5395b11", size = 3698226, upload-time = "2025-12-09T10:09:30.474Z" }, - { url = "https://files.pythonhosted.org/packages/f4/ac/02a490e38466506b1003df4910d2a8ae582265023dae9e2217c98b56ea3f/loro-1.10.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:507d34137adb4148f79e1da7f89a21a4aab18565621a5dc2b389773fe98ac25b", size = 3407322, upload-time = "2025-12-09T10:10:04.199Z" }, - { url = "https://files.pythonhosted.org/packages/81/db/da51f2bcad81ca3733bc21e83f3b6752446436b565b90f5c350ad227ad01/loro-1.10.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91d3b2e187ccfe2b14118a6e5617266fedcdf3435f6fa0a3db7b4afce8afa687", size = 3330268, upload-time = "2025-12-09T10:10:58.61Z" }, - { url = "https://files.pythonhosted.org/packages/4e/af/50d136c83d504a3a1f4ad33a6bf38b6933985a82741302255cf446a5f7ad/loro-1.10.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0016f834fd1626710081334400aed8494380b55ef131f7133d21c3bd22d892a", size = 3673582, upload-time = "2025-12-09T10:10:35.849Z" }, - { url = "https://files.pythonhosted.org/packages/63/4d/53288aae777218e05c43af9c080652bcdbbc8d97c031607eedd3fc15617d/loro-1.10.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:71c4275dca5a8a86219d60545d4f60e081b4af44b490ac912c0481906934bfc6", size = 3463731, upload-time = "2025-12-09T10:11:54.102Z" }, - { url = "https://files.pythonhosted.org/packages/75/01/2389f26ffe8bc3ffe48a0a578f610dd49c709bbcf0d5d2642c6e2b52f490/loro-1.10.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:490f12571b2ed1a8eaf1edd3a7fffc55adac5010b1875fe1bb9e9af9a3907c38", size = 3602334, upload-time = "2025-12-09T10:12:30.082Z" }, - { url = "https://files.pythonhosted.org/packages/a7/16/07b64af13f5fcea025e003ca27bbd6f748217abbd4803dad88ea0900526c/loro-1.10.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a374a43cadaa48528a5411496481df9ae52bf01e513f4509e37d6c986f199c0e", size = 3657896, upload-time = "2025-12-09T10:13:04.86Z" }, - { url = "https://files.pythonhosted.org/packages/c9/2f/4050770d7675ceced71651fe76971d5c27456b7098c0de03a4ecdbb0a02d/loro-1.10.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1a93b2ee59f1fa8d98dd552211fd5693551893b34c1dd2ba0324806d6d14022f", size = 3544339, upload-time = "2025-12-09T10:13:40.396Z" }, - { url = "https://files.pythonhosted.org/packages/c9/21/67e27cb404c968fc19a841d5c6277f13a17c69a56f49e3c15ea1c92a28eb/loro-1.10.3-cp314-cp314-win32.whl", hash = "sha256:baa863e3d869422e3320e822c0b1f87f5dc44cda903d1bd3b7a16f8413ce3d92", size = 2706731, upload-time = "2025-12-09T10:14:31.604Z" }, - { url = "https://files.pythonhosted.org/packages/08/54/6770cf36aeb994489375e9ab9c01201e70ab7cc286fa97e907aa41b1bae6/loro-1.10.3-cp314-cp314-win_amd64.whl", hash = "sha256:f10ed3ca89485f942b8b2de796ed9783edb990e7e570605232de77489e9f3548", size = 2933563, upload-time = "2025-12-09T10:14:13.805Z" }, - { url = "https://files.pythonhosted.org/packages/24/f5/eb089fd25eb428709dbe79fd4d36b82a00572aa54badd1dff62511a38fe3/loro-1.10.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b4d049efb1953aebfc16fa0b445ff5a37d4d08a1ab93f3b5a577a454b7a5ded", size = 3282369, upload-time = "2025-12-09T10:08:20.011Z" }, - { url = "https://files.pythonhosted.org/packages/30/d7/692cb87c908f6a8af6cbfc10ebab69e16780e3796e11454c2b481b5c3817/loro-1.10.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56ecad7fbac58aa8bee52bb261a764aeef6c7b39c20f0d69e8fad908ab2ca7d8", size = 3332530, upload-time = "2025-12-09T10:08:57.07Z" }, - { url = "https://files.pythonhosted.org/packages/54/46/ed3afbf749288b6f70f3b859a6762538818bf6a557ca873b07d6b036946b/loro-1.10.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d8d1be349d08b3a95592c6a17b80b1ea6aef892b1b8e2b93b540062d04e34e0", size = 3702599, upload-time = "2025-12-09T10:09:31.779Z" }, - { url = "https://files.pythonhosted.org/packages/fe/30/6cb616939c12bfe96a71a01a6e3551febf1c34bf9de114fafadbcfb65064/loro-1.10.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ec0a0b9bc4e32c46f14710062ec5b536c72110318aaf85632a4f8b37e9a470a", size = 3404412, upload-time = "2025-12-09T10:10:05.448Z" }, - { url = "https://files.pythonhosted.org/packages/02/a2/3d4006d3333589f9158ac6d403979bf5c985be8b461b18e7a2ea23b05414/loro-1.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c5d4437987f7a4a4ff5927f39d0f43ded5b34295dfb0a3c8e150687e25c3d6b8", size = 3462948, upload-time = "2025-12-09T10:11:55.405Z" }, - { url = "https://files.pythonhosted.org/packages/41/30/c640ccd3e570b08770a9f459decc2d8e7ceefdc34ac28a745418fb9cb5ba/loro-1.10.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:86d4f0c631ca274ad2fa2c0bdb8e1e141882d94339b7284a8bef5bf73fa6957d", size = 3599851, upload-time = "2025-12-09T10:12:31.759Z" }, - { url = "https://files.pythonhosted.org/packages/59/8f/062ea50554c47ae30e98b1f0442a458c0edecc6d4edc7fcfc4d901734dd0/loro-1.10.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:15e03084ff1b472e14623183ed6e1e43e0f717c2112697beda5e69b5bd0ff236", size = 3655558, upload-time = "2025-12-09T10:13:06.529Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f5/c7dd8cdbd57454b23d89799c22cd42b6d2dda283cd87d7b198dc424a462c/loro-1.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:42d6a5ce5bc518eaa682413e82d597299650eeb03e8bc39341752d6e0d22503e", size = 3541282, upload-time = "2025-12-09T10:13:42.189Z" }, + { url = "https://files.pythonhosted.org/packages/b9/98/cb5ca20618d205a09d5bec7591fbc4130369c7e6308d9a676a28ff3ab22c/limits-5.8.0-py3-none-any.whl", hash = "sha256:ae1b008a43eb43073c3c579398bd4eb4c795de60952532dc24720ab45e1ac6b8", size = 60954, upload-time = "2026-02-05T07:17:34.425Z" }, ] [[package]] name = "lxml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, - { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, - { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, - { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, - { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, - { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, - { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, - { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, - { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, - { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, - { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, - { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, - { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, - { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, - { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, - { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, - { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, - { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, - { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, - { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, - { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, - { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, - { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, - { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, - { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, - { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, - { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, - { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, - { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, - { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, - { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, - { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, - { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, - { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, - { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, - { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, - { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, - { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, - { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, - { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, - { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, - { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, - { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, - { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, - { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, - { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, - { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, - { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, - { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, - { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, - { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, - { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, - { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, - { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, - { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, - { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, - { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, - { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, - { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, - { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, - { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, +version = "6.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/3b/aab6728cae887456f409b4d75e8a01856e4f04bd510de38052a47768b680/lxml-6.1.1.tar.gz", hash = "sha256:ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40", size = 4197430, upload-time = "2026-05-18T19:19:06.424Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/6e/c4add832b6fc1e887125b96f880d7b9b70aae5248718e046b1704bcac4b9/lxml-6.1.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:104c09bda8d2a562824c0e319d0768ce26a779b7601e0931d33b09b53c392ef7", size = 8570821, upload-time = "2026-05-18T19:17:42.068Z" }, + { url = "https://files.pythonhosted.org/packages/22/00/ff3009c88e65de8011630acf8ab5a09cb2becd2aaf47fba2f3449f6224e9/lxml-6.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25c6997a9a534e016695a0ba06b2f07945de682731ff01065b6d5a4474179da1", size = 4624252, upload-time = "2026-05-18T19:17:47.897Z" }, + { url = "https://files.pythonhosted.org/packages/42/95/bb63f0fd62e554fe078e1fb3c8fe9083c14ddc7ad7fa178d10e57e071ac7/lxml-6.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c921ba5c51e4e9f63b8b00267d06566e1f63407408a0496da2d1d0bfc819c7fc", size = 4930746, upload-time = "2026-05-18T19:18:29.637Z" }, + { url = "https://files.pythonhosted.org/packages/eb/99/0013e8d9b5960f4f041cf0b73e2f80c23eb5205b1f7bfb20203243651359/lxml-6.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:54a7f95e4de5fb94e2f9f4b9055c6ba33bf3d628fd77a1d647c5923caa2cdcdc", size = 5093723, upload-time = "2026-05-18T19:18:34.168Z" }, + { url = "https://files.pythonhosted.org/packages/29/91/317b332636bfc7bddcff828d41b3307f50043f4b237e40849c333d80fa1a/lxml-6.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f2ec43df44b1f76249ee0a615334f9b5b060e1c8bd90e706dad2d14d02f383", size = 5005557, upload-time = "2026-05-18T19:18:39.798Z" }, + { url = "https://files.pythonhosted.org/packages/42/2f/cc9bf06afe70f9c9093ae60855d9759da9db601ec4080f7473319666ffd7/lxml-6.1.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:70ef8a7e102a1508f8121aae5b0867abd663f72c14f0a9c937e6554cb4587b7b", size = 5631036, upload-time = "2026-05-18T19:18:44.858Z" }, + { url = "https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebe6af670449830d6d9b752c256a983291c766a1365ba5d5460048f9e33a7818", size = 5240367, upload-time = "2026-05-18T19:18:49.217Z" }, + { url = "https://files.pythonhosted.org/packages/78/83/8555d40948b09ce86f1bd0c68a7ac31d07b1929f92cc1b074006c97ef2d2/lxml-6.1.1-cp312-cp312-manylinux_2_28_i686.whl", hash = "sha256:27acc820660aaffa4f7c087f29120e12980f7779d56d8492d263170111284740", size = 5350171, upload-time = "2026-05-18T19:18:52.779Z" }, + { url = "https://files.pythonhosted.org/packages/63/75/5d92da93729b7bad783689e6496049fa40927b45bec7bf183c981de3ca70/lxml-6.1.1-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:1db753c9115ec7100d073b744d17e25e88a8f90f5c39b2f5dd878149af59671f", size = 4694874, upload-time = "2026-05-18T19:18:55.139Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b5/3aad415a9a25b822e783f15deeb4dffccf5113030f1afa2222dd929313d9/lxml-6.1.1-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c4f469aebd783bb741c2ecb2a681008fd26bfe5c16a9a72ed5467f834e810df2", size = 5244492, upload-time = "2026-05-18T19:19:01.28Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a1/5fcf7eb9904b80086aa47dcf0027de07b1bb990afad2e6823144c368ae04/lxml-6.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:766b010012d59470072c1816b5b6c69f1d243e5db36ea5968e94accf430a4635", size = 5048232, upload-time = "2026-05-18T19:18:12.67Z" }, + { url = "https://files.pythonhosted.org/packages/77/74/1f601b63c7a69fcdf10fa9b148c81da8442204194f6c55509cc485c786b9/lxml-6.1.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b8d812c6011c08b8111a15e54dd990b8923692d80adf35488bee34026c35accf", size = 4777023, upload-time = "2026-05-18T19:18:15.928Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b9/7a78f51aec95b1bf780d78e12705a9f6533284f8693dc5c0e6724fa53d3f/lxml-6.1.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fe0306bd29505a9177aac19f1877174b0e7422c222a59f70b2cd41633448c3dc", size = 5645773, upload-time = "2026-05-18T19:18:23.223Z" }, + { url = "https://files.pythonhosted.org/packages/a5/6e/98a7b7ad54e4e74fa1f20fff776913980619d0ebe5558232d7da6580bdd8/lxml-6.1.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5ba186ad207446c65d3bb3d3e0412b032b1d9f595e59861e2354798c5703d955", size = 5233088, upload-time = "2026-05-18T19:18:31.433Z" }, + { url = "https://files.pythonhosted.org/packages/65/d1/bc0ed2427bf609f2ee10da303a6a226f9c8bce94f945dc29a32ce55de6e4/lxml-6.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aa366a1e55b8ebfe8ca8ddc3cfe75c8ebade181aeb0f661d0cb05986b647f72a", size = 5260995, upload-time = "2026-05-18T19:18:37.091Z" }, + { url = "https://files.pythonhosted.org/packages/69/8b/6772e1a4b513fc50a8d931f19edde0e13ae6918510a1e13ff67864f3e5ed/lxml-6.1.1-cp312-cp312-win32.whl", hash = "sha256:126c93f7f56f0eda92f6d8c619edc463a4f23d9252f1c9d0405a76f25fa9f11a", size = 3596382, upload-time = "2026-05-18T19:17:18.37Z" }, + { url = "https://files.pythonhosted.org/packages/1b/89/45198e9624762af2dfd2cb8782598477ceb29f6e59caab560388ae1f4ec1/lxml-6.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:26e6eda8d38c1fcab1090dd196ee87cbd13788e531937610e2589085de074e77", size = 3997255, upload-time = "2026-05-18T19:17:56.781Z" }, + { url = "https://files.pythonhosted.org/packages/90/a9/7a54b6834088d9ae528a7b780584ba6a39a9457b0ac330479f20ffbc9449/lxml-6.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:6540377fbd53fe1b629172288c464fb18db11ce1fa7dc15891da10aa9dcc3e7f", size = 3659610, upload-time = "2026-05-19T19:22:50.843Z" }, + { url = "https://files.pythonhosted.org/packages/a5/eb/7e6f37c5584ccbb2ff267f56fd0339016938c1c8684cfefab9b33ffc2f36/lxml-6.1.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:68a9198d0fc122d14bb76837de9aa80cf84caed990b5b237f532ed87d3706736", size = 8559780, upload-time = "2026-05-18T19:17:57.661Z" }, + { url = "https://files.pythonhosted.org/packages/a1/36/587c2521cf23a2cd6c9c22108aa7528f683a1f195ed7ccd23a4b1786ad36/lxml-6.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7d47866cb32fb503450b6edc9df355d10dc49836af2e89901bd6ac6b0896d9d9", size = 4618006, upload-time = "2026-05-18T19:18:04.452Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ca/ab7bfe2bf4c972af5e7878262845ead3a24a929a9b04bc11c7c1ece6c82a/lxml-6.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb7c9811bfaa8b1ed5ed319f5d370dfbcaa59d52ea64be2a5a85e18195930354", size = 4924139, upload-time = "2026-05-18T19:19:04.873Z" }, + { url = "https://files.pythonhosted.org/packages/6b/55/a0c72851dfee5ecc689f949723a73dea457758912542cb955b108eaf0d8f/lxml-6.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:762ff394d5bd56da0cf034a23dcce4e13923f15321a2adfa2ac00201dc6d3fca", size = 5082329, upload-time = "2026-05-18T19:19:09.728Z" }, + { url = "https://files.pythonhosted.org/packages/f0/b6/0608f7d61a3b96cc67e5648a3d906e31a5082093e10e7be65b3886289938/lxml-6.1.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a088f287f7d8275a33c07f2cac6c50b9319309a0200a39e7e75d80c707723099", size = 4993564, upload-time = "2026-05-18T19:19:13.608Z" }, + { url = "https://files.pythonhosted.org/packages/4c/66/ae227524b066d29d55bf0b453d93d2d793c40218657d643dcbbca13b8faf/lxml-6.1.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e902da4b04e6b52e5893900d4b8ab46068f75f3561f01bf1080957f9fd932ed6", size = 5613467, upload-time = "2026-05-18T19:19:16.228Z" }, + { url = "https://files.pythonhosted.org/packages/a6/76/dbe4a00b50385e40194231dcfe5a12c059de7cf90e89c83407d2b085b719/lxml-6.1.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1d4962d4c66bf830a7e59ed6cfc17d148149898a3aefa8ec6e59763e6e3ed085", size = 5228304, upload-time = "2026-05-18T19:19:19.354Z" }, + { url = "https://files.pythonhosted.org/packages/1c/01/00b1b8442ed2041793336868ba0b9ea4b13d7da7c085c6404c207a63bf79/lxml-6.1.1-cp313-cp313-manylinux_2_28_i686.whl", hash = "sha256:581d4c8ae690a6609e64862dd6b7c2489635c2d13907fc2b20f2bc200ff1d21e", size = 5341607, upload-time = "2026-05-18T19:19:22.297Z" }, + { url = "https://files.pythonhosted.org/packages/63/36/1ad29931e9a4638bb707869f01d423a6c815f82152138d1a40dfcfde2b95/lxml-6.1.1-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:876e1ff5930ed8bf295ec5ef9a8155e9b6b1876bbf1deed8b3a8069311875a8f", size = 4700168, upload-time = "2026-05-18T19:19:25.133Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d1/a9536cecf9be18a0dc72d32bead283a2332d1ffebd2dd3ac70ce444686e5/lxml-6.1.1-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9eb9b5a968f6e0f6d640092a567e14529ff8cea2e29d00da6f78a79fa49f013c", size = 5232487, upload-time = "2026-05-18T19:19:28.603Z" }, + { url = "https://files.pythonhosted.org/packages/0e/77/b4fb1e03bf5d130e879214d3100092e386418807fb74dd0adc4b0a48f351/lxml-6.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:aa49e06d94aba782c6a02eecb7e507969e7e7a41b267f1b359bb35585f295d5b", size = 5044231, upload-time = "2026-05-18T19:18:42.246Z" }, + { url = "https://files.pythonhosted.org/packages/26/4c/d00daeeb0a5530c4028a9232aa1b93db3ef4ed2158c116ea73c79a9765b3/lxml-6.1.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:70cdfd80589d59e43e18005dd7244e8895e93db8ab6a620b7e23df5445a4e3d2", size = 4769450, upload-time = "2026-05-18T19:18:48.013Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6a/715a3a8d156ce42f29cf014706f5410c2ff3b02267774110fc23266409fe/lxml-6.1.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:aad9aa39483ed8ec44d6d2e59e5b98a0d80676ef0d92f44bfc374836111f62f5", size = 5635874, upload-time = "2026-05-18T19:18:51.914Z" }, + { url = "https://files.pythonhosted.org/packages/45/37/0544bc21dde2a88f3a17b504e6fc79c0e01d25a33c2f6079724e9e72b9c7/lxml-6.1.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:d49514be2f28d895c38cf9d2b72d7b9a07d00314519f456c0b50b53cfcf4c785", size = 5223987, upload-time = "2026-05-18T19:18:59.715Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f8/f6a5e8185bcb28c2befae3d31f8e3df3b811cb0f47746517a81279fcafe1/lxml-6.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:47402e62c52ff5988c1e8c6c63177f5708bccf48e366dea4e3dcf1e645e04947", size = 5250276, upload-time = "2026-05-18T19:19:03.834Z" }, + { url = "https://files.pythonhosted.org/packages/c7/f2/1a2b9f1b7a49d45495369be7ef9ad05b262930f2eab3e3145706fca8083f/lxml-6.1.1-cp313-cp313-win32.whl", hash = "sha256:3483644525531e1d5762b0c44a8e18b6efba321b6dcf8a8952de10b037618bca", size = 3596903, upload-time = "2026-05-18T19:17:29.863Z" }, + { url = "https://files.pythonhosted.org/packages/e6/99/f4ffb024f238eec2131aaa09f3278fb6129cf892741bf68e1fc1afb8c100/lxml-6.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:a10bd2fd62e8ce916ececb342f348f190724a098c1faa056fdfb2a22ad5e8660", size = 3995869, upload-time = "2026-05-18T19:18:02.596Z" }, + { url = "https://files.pythonhosted.org/packages/d1/53/70eb8c5c6037f27448f1e3c54ebede9545a801ae63f0a7254afca4fe8e45/lxml-6.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:424aa57aca0897eb922aef34395bd1289b3b6f04e6bae20ea123c0c7e333cffc", size = 3658490, upload-time = "2026-05-19T19:22:53.846Z" }, + { url = "https://files.pythonhosted.org/packages/13/e2/2e325795566de01d0d7c3bb57d3c370616b2d07b01214e84eec5d3b10963/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:19b7ab10b210b0b3ad7985d9ac4eb66ab09a90b20fe6e2f7ba55d01a234345d0", size = 8577146, upload-time = "2026-05-18T19:18:17.765Z" }, + { url = "https://files.pythonhosted.org/packages/93/cf/5630b5e4be7d2e6bee8efe83865c925221103cf0221303b104ce134b01e2/lxml-6.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c08e5c694306507275f2290073350c4f32e383db15213b2c69e7ff39c1193840", size = 4623866, upload-time = "2026-05-18T19:18:30.669Z" }, + { url = "https://files.pythonhosted.org/packages/d2/51/3904907c063451cf8d4a5c9fe0cad95fa1f4ec57f4e3884fa0731bd7a305/lxml-6.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:74a9717fd0d82effef5c2854f0d917231d5324b5a3eb7275c43ac9fa32f97a14", size = 4950022, upload-time = "2026-05-18T19:19:31.958Z" }, + { url = "https://files.pythonhosted.org/packages/94/cd/9c7611a51c37a2830928405817cc5d56a97f64fab83cc3f628748b135749/lxml-6.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:efe0374196335f93b53269acd811b944f2e6bdc88e8894f214bd636455484909", size = 5086695, upload-time = "2026-05-18T19:19:34.764Z" }, + { url = "https://files.pythonhosted.org/packages/da/d6/24e3b5906abb0b674ff2ae195bc3ce59708df2bcd17cf17703b2d7dd643a/lxml-6.1.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac931cdc9442c1763b8a8f6cd62c0c938737eafc5be75eff88df55fc73bc0d00", size = 5031642, upload-time = "2026-05-18T19:19:37.771Z" }, + { url = "https://files.pythonhosted.org/packages/2d/db/6ec54f99019838bff54785c51da07f189eb4676861c5f2730962b0d8d665/lxml-6.1.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:aee395f5d0927f947758b4ec119fd5fc8ec71f07a1c5c52077b30b04c0fa6955", size = 5647338, upload-time = "2026-05-18T19:19:40.553Z" }, + { url = "https://files.pythonhosted.org/packages/42/3d/ef4dcfffd22d27a61805d8ed9f7fb888495bc6aa88648fa07c1eaa5586b6/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9395002973c827b3ed67db77e6ec09f092919a587022174554096a269378fb13", size = 5239528, upload-time = "2026-05-18T19:19:43.657Z" }, + { url = "https://files.pythonhosted.org/packages/62/bb/37fb3f0dff146bdcfa78eec47879273820b2a0bf350ec236ce14bd0b1c26/lxml-6.1.1-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:73bc2086f141224ebddb7fc5c6a36ca58b31b94b561e1dfe8e073e3270fad1e7", size = 5350730, upload-time = "2026-05-18T19:19:46.307Z" }, + { url = "https://files.pythonhosted.org/packages/90/42/43253f168388df4fae1f38c01df36ddb9bee39e2048167b54cdcbae85ea3/lxml-6.1.1-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:3779def59032b81e44a5f70096ef6bf2082f8d901937dca354474ba09782e245", size = 4697530, upload-time = "2026-05-18T19:19:49.889Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a8/c5a8504f81bbdfc8e7094c2c850cdb4ed6777fc4d5ddd9e5ab819f3b0d54/lxml-6.1.1-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:86c89b9d55ebf820ad7c90bc533410f0d098054f293351f10603c0c46ff598f5", size = 5250670, upload-time = "2026-05-18T19:19:53.199Z" }, + { url = "https://files.pythonhosted.org/packages/77/b7/c7e76ab18744d75e21f320ebf9ff9d1ceae2b54dd431ea5a64caf26c9672/lxml-6.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19607c6bbff2a44cf3fe8250abccd20942d3462473e0a721d01d379ed017e462", size = 5084485, upload-time = "2026-05-18T19:19:08.422Z" }, + { url = "https://files.pythonhosted.org/packages/31/31/b35c53f8ef7b7c31cacd23d3638652fff7bcd1deb6eedb709ab43b685908/lxml-6.1.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:c6ed5141a5c7507cf3ee76bd363b0d6f801e3321adc35b5d825a23115faa5465", size = 4737635, upload-time = "2026-05-18T19:19:12.321Z" }, + { url = "https://files.pythonhosted.org/packages/d9/06/31f23c813a7fe8e0cb1b175e915b08c9bf4e86d225b210feadbdbe519667/lxml-6.1.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:62aeb7e85b5d60320b9d77eef2e773994e2c0ce10121b277e0a19804e1654a5a", size = 5670681, upload-time = "2026-05-18T19:19:15.001Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bc/ce619bccc89b1fd9ad8a8e1330ee3f3beff9f2ff95b712d7bbcdd6e22fc3/lxml-6.1.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:b1b963fd8f5caa68e99dfae060d54de1fe9cba899b8718b44a00cdca53c3e590", size = 5238229, upload-time = "2026-05-18T19:19:18.131Z" }, + { url = "https://files.pythonhosted.org/packages/2f/5d/b329acbbedc0b619ebc2be6cf7ee9ed07e80892c88d4dfd612c33805789a/lxml-6.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:63876be28efefa04a1df615b46770e82042cce445cfdce55160522f57b231ccb", size = 5264191, upload-time = "2026-05-18T19:19:21.118Z" }, + { url = "https://files.pythonhosted.org/packages/d6/85/be36fb1425b30db3c3f9df75fe86343ebffb79e6320bd7f588e25bfeac39/lxml-6.1.1-cp314-cp314-win32.whl", hash = "sha256:7f7a92e8583f06b1fd49d01158143b8461cfcd135dcb10ec807270a3051bd603", size = 3657202, upload-time = "2026-05-18T19:17:39.509Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ce/3cf9a827342269f54d405a6202397de63f07c69cbd6ce7d183a3f0cba1e9/lxml-6.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:b2d444f2e66624d68e9c6b211e28a76e22fff5fcabcfff4deac18b529b7d4137", size = 4064497, upload-time = "2026-05-18T19:18:14.662Z" }, + { url = "https://files.pythonhosted.org/packages/d9/3e/1a957bde8f0760039e627f94699f82caa782c9d838d86c3d28245ee67212/lxml-6.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:3fd9728a2735fda14f4e8235830c86b539e9661e849665bf926d3f867943b4bf", size = 3741991, upload-time = "2026-05-19T19:22:59.111Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/00ed55b3a2efa4658fb795c38d1090ec9b3e8a6c3683d4441fa517f09c3b/lxml-6.1.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:787b2496d0dbe8cd180984e8d29e3a6f76e7ea34db781cb3bd55e4ba1ef8b4ee", size = 8827545, upload-time = "2026-05-18T19:18:41.193Z" }, + { url = "https://files.pythonhosted.org/packages/c0/73/74573db19baa618d5f266f2407898b087ff6927115b00b71e5fc1b700847/lxml-6.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2c8daa471358dc2d6fcf02165e80ec68f77871a286df95bc5cc3816153b0fd2c", size = 4735736, upload-time = "2026-05-18T19:18:46.761Z" }, + { url = "https://files.pythonhosted.org/packages/16/02/6f7061f4f95f51e545d48e87647c54791d204a4e881be4156e7a26ba5338/lxml-6.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:acd7d70b64c0aae0c7922cca83d288a16f5f6da523637697872253415269baef", size = 4970291, upload-time = "2026-05-18T19:19:56.215Z" }, + { url = "https://files.pythonhosted.org/packages/b0/02/55fc057d8283427dea7d6edb102e7a840239c77a64a983d92f62a304c0e9/lxml-6.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4f0dd2f01f9f8a89f565d000e03abcf0a13d692a346c8d22f628d49af098777a", size = 5102822, upload-time = "2026-05-18T19:19:59.223Z" }, + { url = "https://files.pythonhosted.org/packages/e4/48/8e1cf78d89d66850121d9255a2a24414c98f775da93b90cf976956c24b14/lxml-6.1.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b7e8a14c8634bf6f7a568634cb395305a6d964aeb5b7ee32248094bed3a7e2c", size = 5027923, upload-time = "2026-05-18T19:20:01.549Z" }, + { url = "https://files.pythonhosted.org/packages/ed/00/0632a0647612c8af24d26997b3b961397daa9d5b2581444805933629a4cb/lxml-6.1.1-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:86281fbdd6a8162756f8d603f37e3435bfa38043adb79c6dc6a2dfee065e7525", size = 5595843, upload-time = "2026-05-18T19:20:03.93Z" }, + { url = "https://files.pythonhosted.org/packages/bc/86/ab008a7dc360711b66858d61c80a5979a70a09f2aa2b05d9698df80b803d/lxml-6.1.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5d7152ec39ca7c402d8fb9bad86140a15b9503bd0c54484e3f1bbe3dd37ceca", size = 5224515, upload-time = "2026-05-18T19:20:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/75/c6/2702ff375e728e34f56d9a45339a9cf7e4427e917f542225242d63a05afa/lxml-6.1.1-cp314-cp314t-manylinux_2_28_i686.whl", hash = "sha256:88d8cb75b9d82858497a5393e3c63cfbf03035225e4b35a49ed7ccb151e4dc0e", size = 5312511, upload-time = "2026-05-18T19:20:09.308Z" }, + { url = "https://files.pythonhosted.org/packages/b7/57/a5807c98f87a86f10ef9ffab35516df7c0f0c4b6d5d33e9f608ab9c04a31/lxml-6.1.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f64ec5397ea6a41fc1b4af0380d79b44a755b5531dcaccd9940fb260dca93038", size = 4639206, upload-time = "2026-05-18T19:20:11.704Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e1/8a0a2c35734812395f4da4eaf33748a7e5705bfb2a58b128da764339d5ec/lxml-6.1.1-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d34bbf07dbc7ca5970671b1512e928991fb5e9d95365636c9b2d8b4f53af405e", size = 5232404, upload-time = "2026-05-18T19:20:14.064Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e2/0e6a4dd5ad84d01d99aa7bae7cfefd4a760a0e0f8176818241de17d9b6c0/lxml-6.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:17e0e18d4ad8adbd0399291bc44845b69d9dd68439a3cdebdf35ff902ec05072", size = 5083769, upload-time = "2026-05-18T19:19:23.758Z" }, + { url = "https://files.pythonhosted.org/packages/a0/7e/161f33d463f6ffc1c7679104b65086dea120080d49dde4d238f015aaee2f/lxml-6.1.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:3ab541146f1f6968c462d6c2ac495148e8cdba2f8347700b2141b6ec5a75bf52", size = 4758936, upload-time = "2026-05-18T19:19:27.256Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fb/2369825e3f6ca99305bf9f7b7085fda91c8b0922a89e54d900974aa3ef85/lxml-6.1.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2a0217714657e023ef4293500f65aa20fce6164c8fd6b08fa5bd4a859fb14b9b", size = 5620296, upload-time = "2026-05-18T19:19:29.993Z" }, + { url = "https://files.pythonhosted.org/packages/30/90/d61e383146f74c5ab683947ea14dc7b82778838ab9b95ea73a23b60d0191/lxml-6.1.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:05a82eb6e1530a64f26225b55cbd178113bd0b5af1c2b625f25e5296742c26d2", size = 5228598, upload-time = "2026-05-18T19:19:33.523Z" }, + { url = "https://files.pythonhosted.org/packages/76/2d/2dafd8149e94b05bb070690efd5bb2680720681e03ff03fc57d2b70a1105/lxml-6.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9e36f163528fc50cbef305f02a5fd66d404edf7049cdaff211dbc2cba5a7013e", size = 5247845, upload-time = "2026-05-18T19:19:36.649Z" }, + { url = "https://files.pythonhosted.org/packages/ce/68/b30e913340c380ddac9580c6e6230991fc37240ec4f64704833e4f3e2769/lxml-6.1.1-cp314-cp314t-win32.whl", hash = "sha256:649dda677cf3bd6ac9ae14007ba0c824ded8ce5808b53fc7431d9140399118c1", size = 3897345, upload-time = "2026-05-18T19:17:33.562Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4e/9eb2af5335545f9fbcd7af57bcf87c6025d31eaa31b14ec184a6c8675328/lxml-6.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:793033d6c5cdf33a573f910d9bea14ef8f5771820411d118da8e1182edb53d5e", size = 4393350, upload-time = "2026-05-18T19:18:10.076Z" }, + { url = "https://files.pythonhosted.org/packages/7f/2c/0f1e93c636720e8a3eb59af2bfda99d98b55891e1c53bc30c2e0e865f01b/lxml-6.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:58bb955caba94e467d2a96da17660d2d704e0675894cba21ab8a775b8621fd1c", size = 3817223, upload-time = "2026-05-19T19:22:56.823Z" }, ] [[package]] name = "manifold3d" -version = "3.3.2" +version = "3.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/81/9b/bad1005d27feec334705488ff4400898a46c4ae7bd75fbd141eea62caf95/manifold3d-3.3.2.tar.gz", hash = "sha256:2e947ab95f40785aa5586b0ee6ad6c4948f6912c44455a8e0520da679905bcdb", size = 268441, upload-time = "2025-11-15T09:10:16.075Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/55/44e852a9df1d8c2c02079d706c740a6e25ee09f4212bd350743d19f0add8/manifold3d-3.3.2-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:380e327962e9ab7a23287064a2972ec84cbce6032036f859f6bdbb9d8a063d42", size = 1597938, upload-time = "2025-11-15T09:09:35.917Z" }, - { url = "https://files.pythonhosted.org/packages/f0/d6/b04443dfb6731c83c7162d760b987b24fb8d5b4eeeeeee2d06c169d367fb/manifold3d-3.3.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:e801de5a53eac6de9a3d7722558d645341c01deb44e9c276fd2245015714f125", size = 889484, upload-time = "2025-11-15T09:09:38.054Z" }, - { url = "https://files.pythonhosted.org/packages/09/07/eb2ea36fe2839a3049a7e1fe5e235a9f7bc0d4719d3cd2c5843187058f73/manifold3d-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05c155beef7248e5523d6c098243cd6cfdef93fb6830e792fc41145695b1db9c", size = 755053, upload-time = "2025-11-15T09:09:39.643Z" }, - { url = "https://files.pythonhosted.org/packages/4d/b5/61065a6c7b5a6dd0c37b0d0c3106f7bd87d36b5caa3cb92a3e66ab19345d/manifold3d-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:279e6c3630a4fd719d07f0f4760d1bd0b30fb1f4d290ac06cdebf19e72d5af87", size = 1065754, upload-time = "2025-11-15T09:09:41.454Z" }, - { url = "https://files.pythonhosted.org/packages/0a/56/8c6b01ec02306cc9e896920d0fa444e753c1f1584280883b9a15eae331b4/manifold3d-3.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:faecf1018f20e7daa96c0d3abfe91f5cd867aaf6496a9f4faf1542a5ca56ee91", size = 1222883, upload-time = "2025-11-15T09:09:42.923Z" }, - { url = "https://files.pythonhosted.org/packages/cf/86/33263e9889ac5bf7db56d3cfaf400d1d4fc4c6428ea3d0c752670692f6ce/manifold3d-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:2c8ad05cc9768d269967ba68b33d32db3d34fbe00fb79895e37cfa35dba36978", size = 961604, upload-time = "2025-11-15T09:09:44.353Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b1/d0b40736112569e63249e8c14d7f4894c1c664d105ec761672bb13ad3be8/manifold3d-3.3.2-cp313-cp313-macosx_10_14_universal2.whl", hash = "sha256:93cd74fa554f8d26906bc8893a1cbd48bb879e888c3634f3d4210028fdeeed5d", size = 1597760, upload-time = "2025-11-15T09:09:45.821Z" }, - { url = "https://files.pythonhosted.org/packages/a7/f5/9ae489a466543ca8f35f2eeeed7f043f714223e0905eaf62b2fce4684a07/manifold3d-3.3.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:96133be45198c212227b2409888c7ff1d3d621c7e9aa25cf348f7f8dc75288a4", size = 889349, upload-time = "2025-11-15T09:09:47.307Z" }, - { url = "https://files.pythonhosted.org/packages/f4/1d/5c2d96b18a603cf8d121efd129c0beb1ab902115f0eda3f9ee5b349b5924/manifold3d-3.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a3852fb64d76300c11bca5ddac691dce2b5d68065021101da1be4c54ca558360", size = 754925, upload-time = "2025-11-15T09:09:48.644Z" }, - { url = "https://files.pythonhosted.org/packages/c8/b2/720e128f7f0562ec314d5b5d61af0db060e71dc5995bea0c241465bf3e90/manifold3d-3.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aef68ec33a68d156e6f7f6ff624fe0318a3cc55c8af63a0cdf21654b313c3c98", size = 1065772, upload-time = "2025-11-15T09:09:50.053Z" }, - { url = "https://files.pythonhosted.org/packages/1f/14/24ad90c7d9a6532c32b0392f1c3518bbab5e37092c99cc69bed17d30fb0c/manifold3d-3.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d8d151f14113e585190a2da762ad7ac8df24309ce49dba6c0e48bb36223a9d37", size = 1222816, upload-time = "2025-11-15T09:09:51.741Z" }, - { url = "https://files.pythonhosted.org/packages/f9/a7/deabeee1aa6bda61f2cc937ec4daca3126beb9327026b49a3dee5d09b4b5/manifold3d-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:9d5bc0d2846188060ec670e43362a98e08b6f1f951834c962885e46b6b5baa2f", size = 961402, upload-time = "2025-11-15T09:09:53.711Z" }, + { name = "numpy", marker = "python_full_version < '3.15'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/e5/b61f0ae60793e91c42f4b1e7b4fcba4aaf4b99c43552caff568f67a5e0e4/manifold3d-3.5.0.tar.gz", hash = "sha256:d43d8614dadab7db9ade5cd459cde0640f3f99a91466947aa17334b9e9369b82", size = 300919, upload-time = "2026-05-23T05:05:40.238Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/97/2d222dc50cf331937836acfc61366215ee8a00fb2b4cce0bc8be91ce4bcd/manifold3d-3.5.0-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:79ffa285df6d5ad9250c064756fe50ae7a8c6bb9a21b72bb1692d4c37a620202", size = 1848791, upload-time = "2026-05-23T05:04:41.678Z" }, + { url = "https://files.pythonhosted.org/packages/ca/8f/710b64ab447a8940368fb96ab5f592e6354328686f617ac9f0e76e03aa3d/manifold3d-3.5.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:01246fdf671baaa87a48c6006f985c0a3b75a33c9339214e1c512a937b3d471a", size = 1013105, upload-time = "2026-05-23T05:04:43.41Z" }, + { url = "https://files.pythonhosted.org/packages/cf/5a/506be337bde6e8247c5757223bd0d4179d880c2b4a24bcc466420d9ac832/manifold3d-3.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7a095c5ab0c82c3e269d1367aca13b30f4e8d3262e38129202dcf406ab5645cc", size = 884304, upload-time = "2026-05-23T05:04:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1a/83de823c8d10fb4902249004e4e50357fada7a941862409df1298f755417/manifold3d-3.5.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fed7bcbfb6b143448d5fac6b4d8b654fd185c0d0a1e18f2b1c4bacd839656c3b", size = 1329560, upload-time = "2026-05-23T05:04:47.149Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fa/63e9b1cc5261de75f885836688b14c4361c6752e7688dd04d37a1c88c0f0/manifold3d-3.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d12e817ca7751edd4978b399d21f00ac9e79a6d0fdbe8b2cd05d4f9a9ed81a08", size = 1445435, upload-time = "2026-05-23T05:04:48.868Z" }, + { url = "https://files.pythonhosted.org/packages/c4/8d/760483c6533472349c3aba95fa5984bc16a8cb3b9cab23ac0079dbfb930d/manifold3d-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:684f0daaaab66ea305d0820fcee9ac440c5fe12105797839c4e9b89afe0af89f", size = 1033565, upload-time = "2026-05-23T05:04:50.651Z" }, + { url = "https://files.pythonhosted.org/packages/0e/7e/21cc87332147a72ba80becfcab0db6fd0e4175d6a950471348cdd498e76c/manifold3d-3.5.0-cp313-cp313-macosx_10_14_universal2.whl", hash = "sha256:4514646be7f3e8feb2186bd8a7ccd6519e45e547cfc63e16494f4e25f72fbfa7", size = 1848659, upload-time = "2026-05-23T05:04:52.714Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d2/43dd997c9ad5a6909ca5eef3b56b28894dae834e3792dd704789fa6869e4/manifold3d-3.5.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:6731f071b8f7abbe523f18051cbfd0fa62ffbfadcd73592c49f30ec3499f35ad", size = 1013009, upload-time = "2026-05-23T05:04:54.381Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ae/11ac40f395f486dc87df59bcfeded8d39ac5f7ab31a48bd044699f65deb1/manifold3d-3.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6f44cccdaf5d2166b08f9e152c69a284b96c1fd9fcac16799e83fee81fba1425", size = 884304, upload-time = "2026-05-23T05:04:56.185Z" }, + { url = "https://files.pythonhosted.org/packages/f3/55/4cedb280bd1331143964609b4a6f258988418770ca4af4f580f8b3b6c197/manifold3d-3.5.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d080887a67e80ad6edc8f5e49d936fd913cb8d93a3d56aff6341dfa88f17f2a", size = 1329215, upload-time = "2026-05-23T05:04:57.865Z" }, + { url = "https://files.pythonhosted.org/packages/a4/6d/1a6caa477e84c8cf476786eb2009c9865456d8da040ee55ed7b5da103f41/manifold3d-3.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c8fb203f32525b9ef2a8badfea88b08c1d5170a864a0a23d09fe895088056fa4", size = 1445393, upload-time = "2026-05-23T05:04:59.608Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bf/50f3913b0f3902b112f44673b8c850afd9368c72365f438f2f4b0ad2cd58/manifold3d-3.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:ab2c5edfa5af8c5131753f764cf3054d309dd1c92a35f2055acab7cb24d8dd9a", size = 1033542, upload-time = "2026-05-23T05:05:02.135Z" }, + { url = "https://files.pythonhosted.org/packages/90/13/8b3f37f9bc1f053c71b1fa2e4b6231f4918a34f35e6f68d78e2630482a80/manifold3d-3.5.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6b1631de1951f6f5b89a17445a59afc33f77edbabd732b8eb887f7822ceff966", size = 1848595, upload-time = "2026-05-23T05:05:04.251Z" }, + { url = "https://files.pythonhosted.org/packages/2d/0c/0e077cdde1231e04c3b87dbb0605a99692f95948cc7a4b13f39d331413be/manifold3d-3.5.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e3a93f32729ac864ffe86964c1c371fa518af6e4cc53cf33719ff17ecff0d737", size = 1013023, upload-time = "2026-05-23T05:05:05.914Z" }, + { url = "https://files.pythonhosted.org/packages/67/e9/de6d332f6ae9a951f03dd86a04f453dc6edad9739eefdea9cd059e1820d2/manifold3d-3.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:aeeb00088b756deeacf94a84c7d7363ba3387e82f3bf9d612ac2664edb52ef3d", size = 884183, upload-time = "2026-05-23T05:05:07.84Z" }, + { url = "https://files.pythonhosted.org/packages/69/63/9af35717a8e638304885dbc5b793e441f0ba0764168161f7548fdc6b72ac/manifold3d-3.5.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cae5483d2ec631991304a4a35ad7c091705c45b33eecb80b41a7e54c94316528", size = 1330108, upload-time = "2026-05-23T05:05:09.99Z" }, + { url = "https://files.pythonhosted.org/packages/12/9e/38bc18893c5369e81ea45433abc403e9534fbeb95d7f4e6aabd618269ba7/manifold3d-3.5.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8a8d59e3f356823091034903bf62f1b8acf0d3c9b93c6b21a356f5a6050491e", size = 1445474, upload-time = "2026-05-23T05:05:12.013Z" }, + { url = "https://files.pythonhosted.org/packages/08/9d/a2c0ccefe5869819ddef73ddceea0e353d05ad2830dc0c5ce6655aa15583/manifold3d-3.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:8bd7de6a39bf430b6816a30df52461bcfb5e0427f53dcf157d7ddc07eae0b7a2", size = 1065036, upload-time = "2026-05-23T05:05:14.255Z" }, + { url = "https://files.pythonhosted.org/packages/05/05/980533da003278ea43a8cddeb8dabfec9f80a86bfb2991638e2334940231/manifold3d-3.5.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce6dbd4380c46831ba0d1958bbc6c5649b5a44528e6075ac8d7c302fa90b77fc", size = 1857612, upload-time = "2026-05-23T05:05:16.551Z" }, + { url = "https://files.pythonhosted.org/packages/ff/34/6b3738bf379786b23ae49222f44e58bc7a34455c50da08a1cf320a7a3b0f/manifold3d-3.5.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:cf08a461bcc7ff83edaf8e64a6cb32b5f13b0bf63649d18db8fd5b85ed21d6f8", size = 1016497, upload-time = "2026-05-23T05:05:18.218Z" }, + { url = "https://files.pythonhosted.org/packages/df/1b/17219c86609407973822dfba0100f05b99fb2d04abe09516b7d1d5a868e8/manifold3d-3.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d303d5ab8991a5fdfaadd722aca970acb4f7b5e0069ddd291e92df11a03b2e69", size = 888473, upload-time = "2026-05-23T05:05:19.878Z" }, + { url = "https://files.pythonhosted.org/packages/6f/92/33c79a5774efb8c7edc64cad49ed6f2a0dbf4aed662ab5cad15119e6920e/manifold3d-3.5.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:86701e3214283d14e760cbaca16c43a28cac1f45e0cad295bbfdd6ebd61bd85b", size = 1336788, upload-time = "2026-05-23T05:05:21.711Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1b/bbf7ca28806a5d81acd85d21ec223cb197f466a672184294870d2817732d/manifold3d-3.5.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6329c7034218efcae0fc7dfb789b8710d9b212dfd09eea1b8b845dd50fc71209", size = 1451571, upload-time = "2026-05-23T05:05:23.908Z" }, + { url = "https://files.pythonhosted.org/packages/e9/db/06ef9a4c34d0914d9ab27c9b5267338469a55a17e4ec2934c5080c947bd2/manifold3d-3.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:08b30f59e6af8b57f577bcb8caa5cae28d0ee5c5efe5d94c047f85deeaee0f31", size = 1076577, upload-time = "2026-05-23T05:05:25.844Z" }, ] [[package]] @@ -3319,65 +2521,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9a/89/fbdee5a56ba51df9be6098b5428636ad75aa994e98d8bec6113d5cba401e/mapbox_earcut-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6ace78e4fdba3b8cbb7768d44d77a981698305862a07f94bbb6f5cc16659adb4", size = 60833, upload-time = "2025-11-16T18:41:15.694Z" }, ] -[[package]] -name = "marimo" -version = "0.18.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "docutils" }, - { name = "itsdangerous" }, - { name = "jedi" }, - { name = "loro", marker = "python_full_version < '3.14'" }, - { name = "markdown" }, - { name = "msgspec" }, - { name = "narwhals" }, - { name = "packaging" }, - { name = "psutil" }, - { name = "pygments" }, - { name = "pymdown-extensions" }, - { name = "pyyaml" }, - { name = "starlette" }, - { name = "tomlkit" }, - { name = "uvicorn" }, - { name = "websockets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/04/dc/46cdff84f6a92847bada01ba20cfa79e3c77d1f39a7627f35855ab5451ad/marimo-0.18.4.tar.gz", hash = "sha256:30b5d8cd8f3e9054b5f7332bf0f4d11cb608712995e4f4feed7337d118eef8ab", size = 37851688, upload-time = "2025-12-09T17:42:44.82Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/c7/cd3b652650c188d7b1d7cefad8194d51f10600c84e5d1b68be8d6f0b40ba/marimo-0.18.4-py3-none-any.whl", hash = "sha256:7c1d72f37e9662e8811eff801f6c85451af685fe1cbd22c49a85e7b1f57aebec", size = 38369689, upload-time = "2025-12-09T17:42:48.972Z" }, -] - -[package.optional-dependencies] -recommended = [ - { name = "altair" }, - { name = "duckdb" }, - { name = "google-genai" }, - { name = "nbformat" }, - { name = "openai" }, - { name = "polars", extra = ["pyarrow"] }, - { name = "ruff" }, - { name = "sqlglot", extra = ["rs"] }, -] - [[package]] name = "markdown" -version = "3.10" +version = "3.10.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/ab/7dd27d9d863b3376fcf23a5a13cb5d024aed1db46f963f1b5735ae43b3be/markdown-3.10.tar.gz", hash = "sha256:37062d4f2aa4b2b6b32aefb80faa300f82cc790cb949a35b8caede34f2b68c0e", size = 364931, upload-time = "2025-11-03T19:51:15.007Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/f4/69fa6ed85ae003c2378ffa8f6d2e3234662abd02c10d216c0ba96081a238/markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950", size = 368805, upload-time = "2026-02-09T14:57:26.942Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl", hash = "sha256:b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c", size = 107678, upload-time = "2025-11-03T19:51:13.887Z" }, + { url = "https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36", size = 108180, upload-time = "2026-02-09T14:57:25.787Z" }, ] [[package]] name = "markdown-it-py" -version = "4.0.0" +version = "4.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, ] [[package]] @@ -3445,16 +2607,16 @@ wheels = [ [[package]] name = "marshmallow" -version = "4.2.0" +version = "4.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/34/55d47aab1ef03fb5aab96257a31acfc58791d274cf86c044e6e75e6d3bfe/marshmallow-4.2.0.tar.gz", hash = "sha256:908acabd5aa14741419d3678d3296bda6abe28a167b7dcd05969ceb8256943ac", size = 221225, upload-time = "2026-01-04T16:07:36.921Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/7e/1dbd4096eb7c148cd2841841916f78820bb85a4d80a0c25c02d30815a7fb/marshmallow-4.3.0.tar.gz", hash = "sha256:fb43c53b3fe240b8f6af37223d6ef1636f927ad9bea8ab323afad95dff090880", size = 224485, upload-time = "2026-04-03T21:46:32.72Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/b6/0a907f92c2158c9841da0227c7074ce1490f578f34d67cbba82ba8f9146e/marshmallow-4.2.0-py3-none-any.whl", hash = "sha256:1dc369bd13a8708a9566d6f73d1db07d50142a7580f04fd81e1c29a4d2e10af4", size = 48448, upload-time = "2026-01-04T16:07:34.269Z" }, + { url = "https://files.pythonhosted.org/packages/f4/e0/ff24e25218bb59eb6290a530cea40651b14068b6e3659b20f9c175179632/marshmallow-4.3.0-py3-none-any.whl", hash = "sha256:46c4fe6984707e3cbd485dfebbf0a59874f58d695aad05c1668d15e8c6e13b46", size = 49148, upload-time = "2026-04-03T21:46:31.241Z" }, ] [[package]] name = "matplotlib" -version = "3.10.8" +version = "3.10.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "contourpy" }, @@ -3467,55 +2629,55 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" }, - { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" }, - { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" }, - { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" }, - { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" }, - { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" }, - { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" }, - { url = "https://files.pythonhosted.org/packages/3d/b9/15fd5541ef4f5b9a17eefd379356cf12175fe577424e7b1d80676516031a/matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6", size = 8261076, upload-time = "2025-12-10T22:55:44.648Z" }, - { url = "https://files.pythonhosted.org/packages/8d/a0/2ba3473c1b66b9c74dc7107c67e9008cb1782edbe896d4c899d39ae9cf78/matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1", size = 8148794, upload-time = "2025-12-10T22:55:46.252Z" }, - { url = "https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486", size = 8718474, upload-time = "2025-12-10T22:55:47.864Z" }, - { url = "https://files.pythonhosted.org/packages/01/be/cd478f4b66f48256f42927d0acbcd63a26a893136456cd079c0cc24fbabf/matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce", size = 9549637, upload-time = "2025-12-10T22:55:50.048Z" }, - { url = "https://files.pythonhosted.org/packages/5d/7c/8dc289776eae5109e268c4fb92baf870678dc048a25d4ac903683b86d5bf/matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6", size = 9613678, upload-time = "2025-12-10T22:55:52.21Z" }, - { url = "https://files.pythonhosted.org/packages/64/40/37612487cc8a437d4dd261b32ca21fe2d79510fe74af74e1f42becb1bdb8/matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149", size = 8142686, upload-time = "2025-12-10T22:55:54.253Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/8d8a8730e968185514680c2a6625943f70269509c3dcfc0dcf7d75928cb8/matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645", size = 8012917, upload-time = "2025-12-10T22:55:56.268Z" }, - { url = "https://files.pythonhosted.org/packages/b5/27/51fe26e1062f298af5ef66343d8ef460e090a27fea73036c76c35821df04/matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077", size = 8305679, upload-time = "2025-12-10T22:55:57.856Z" }, - { url = "https://files.pythonhosted.org/packages/2c/1e/4de865bc591ac8e3062e835f42dd7fe7a93168d519557837f0e37513f629/matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22", size = 8198336, upload-time = "2025-12-10T22:55:59.371Z" }, - { url = "https://files.pythonhosted.org/packages/c6/cb/2f7b6e75fb4dce87ef91f60cac4f6e34f4c145ab036a22318ec837971300/matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39", size = 8731653, upload-time = "2025-12-10T22:56:01.032Z" }, - { url = "https://files.pythonhosted.org/packages/46/b3/bd9c57d6ba670a37ab31fb87ec3e8691b947134b201f881665b28cc039ff/matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565", size = 9561356, upload-time = "2025-12-10T22:56:02.95Z" }, - { url = "https://files.pythonhosted.org/packages/c0/3d/8b94a481456dfc9dfe6e39e93b5ab376e50998cddfd23f4ae3b431708f16/matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a", size = 9614000, upload-time = "2025-12-10T22:56:05.411Z" }, - { url = "https://files.pythonhosted.org/packages/bd/cd/bc06149fe5585ba800b189a6a654a75f1f127e8aab02fd2be10df7fa500c/matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958", size = 8220043, upload-time = "2025-12-10T22:56:07.551Z" }, - { url = "https://files.pythonhosted.org/packages/e3/de/b22cf255abec916562cc04eef457c13e58a1990048de0c0c3604d082355e/matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5", size = 8062075, upload-time = "2025-12-10T22:56:09.178Z" }, - { url = "https://files.pythonhosted.org/packages/3c/43/9c0ff7a2f11615e516c3b058e1e6e8f9614ddeca53faca06da267c48345d/matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f", size = 8262481, upload-time = "2025-12-10T22:56:10.885Z" }, - { url = "https://files.pythonhosted.org/packages/6f/ca/e8ae28649fcdf039fda5ef554b40a95f50592a3c47e6f7270c9561c12b07/matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b", size = 8151473, upload-time = "2025-12-10T22:56:12.377Z" }, - { url = "https://files.pythonhosted.org/packages/f1/6f/009d129ae70b75e88cbe7e503a12a4c0670e08ed748a902c2568909e9eb5/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d", size = 9553896, upload-time = "2025-12-10T22:56:14.432Z" }, - { url = "https://files.pythonhosted.org/packages/f5/26/4221a741eb97967bc1fd5e4c52b9aa5a91b2f4ec05b59f6def4d820f9df9/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008", size = 9824193, upload-time = "2025-12-10T22:56:16.29Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f3/3abf75f38605772cf48a9daf5821cd4f563472f38b4b828c6fba6fa6d06e/matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c", size = 9615444, upload-time = "2025-12-10T22:56:18.155Z" }, - { url = "https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11", size = 8272719, upload-time = "2025-12-10T22:56:20.366Z" }, - { url = "https://files.pythonhosted.org/packages/69/ce/b006495c19ccc0a137b48083168a37bd056392dee02f87dba0472f2797fe/matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8", size = 8144205, upload-time = "2025-12-10T22:56:22.239Z" }, - { url = "https://files.pythonhosted.org/packages/68/d9/b31116a3a855bd313c6fcdb7226926d59b041f26061c6c5b1be66a08c826/matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50", size = 8305785, upload-time = "2025-12-10T22:56:24.218Z" }, - { url = "https://files.pythonhosted.org/packages/1e/90/6effe8103f0272685767ba5f094f453784057072f49b393e3ea178fe70a5/matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908", size = 8198361, upload-time = "2025-12-10T22:56:26.787Z" }, - { url = "https://files.pythonhosted.org/packages/d7/65/a73188711bea603615fc0baecca1061429ac16940e2385433cc778a9d8e7/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a", size = 9561357, upload-time = "2025-12-10T22:56:28.953Z" }, - { url = "https://files.pythonhosted.org/packages/f4/3d/b5c5d5d5be8ce63292567f0e2c43dde9953d3ed86ac2de0a72e93c8f07a1/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1", size = 9823610, upload-time = "2025-12-10T22:56:31.455Z" }, - { url = "https://files.pythonhosted.org/packages/4d/4b/e7beb6bbd49f6bae727a12b270a2654d13c397576d25bd6786e47033300f/matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c", size = 9614011, upload-time = "2025-12-10T22:56:33.85Z" }, - { url = "https://files.pythonhosted.org/packages/7c/e6/76f2813d31f032e65f6f797e3f2f6e4aab95b65015924b1c51370395c28a/matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b", size = 8362801, upload-time = "2025-12-10T22:56:36.107Z" }, - { url = "https://files.pythonhosted.org/packages/5d/49/d651878698a0b67f23aa28e17f45a6d6dd3d3f933fa29087fa4ce5947b5a/matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f", size = 8192560, upload-time = "2025-12-10T22:56:38.008Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/63/1b/4be5be87d43d327a0cf4de1a56e86f7f84c89312452406cf122efe2839e6/matplotlib-3.10.9.tar.gz", hash = "sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358", size = 34811233, upload-time = "2026-04-24T00:14:13.539Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/c6/5581e26c72233ebb2a2a6fed2d24fb7c66b4700120b813f51b0555acf0b6/matplotlib-3.10.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1", size = 8319908, upload-time = "2026-04-24T00:12:21.323Z" }, + { url = "https://files.pythonhosted.org/packages/b7/18/4880dd762e40cd360c1bf06e890c5a97b997e91cb324602b1a19950ad5ce/matplotlib-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320", size = 8216016, upload-time = "2026-04-24T00:12:23.4Z" }, + { url = "https://files.pythonhosted.org/packages/32/91/d024616abdba99e83120e07a20658976f6a343646710760c4a51df126029/matplotlib-3.10.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae20801130378b82d647ff5047c07316295b68dc054ca6b3c13519d0ea624285", size = 8789336, upload-time = "2026-04-24T00:12:26.096Z" }, + { url = "https://files.pythonhosted.org/packages/5c/04/030a2f61ef2158f5e4c259487a92ac877732499fb33d871585d89e03c42d/matplotlib-3.10.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c63ebcd8b4b169eb2f5c200552ae6b8be8999a005b6b507ed76fb8d7d674fe2", size = 9604602, upload-time = "2026-04-24T00:12:29.052Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c2/541e4d09d87bb6b5830fc28b4c887a9a8cf4e1c6cee698a8c05552ae2003/matplotlib-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d75d11c949914165976c621b2324f9ef162af7ebf4b057ddf95dd1dba7e5edcf", size = 9670966, upload-time = "2026-04-24T00:12:32.131Z" }, + { url = "https://files.pythonhosted.org/packages/04/a1/4571fc46e7702de8d0c2dc54ad1b2f8e29328dea3ee90831181f7353d93c/matplotlib-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:d091f9d758b34aaaaa6331d13574bf01891d903b3dec59bfff458ef7551de5d6", size = 8217462, upload-time = "2026-04-24T00:12:35.226Z" }, + { url = "https://files.pythonhosted.org/packages/4b/d0/2269edb12aa30c13c8bcc9382892e39943ce1d28aab4ec296e0381798e81/matplotlib-3.10.9-cp312-cp312-win_arm64.whl", hash = "sha256:10cc5ce06d10231c36f40e875f3c7e8050362a4ee8f0ee5d29a6b3277d57bb42", size = 8136688, upload-time = "2026-04-24T00:12:37.442Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d3/8d4f6afbecb49fc04e060a57c0fce39ea51cc163a6bd87303ccd698e4fa6/matplotlib-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b580440f1ff81a0e34122051a3dfabb7e4b7f9e380629929bde0eff9af72165f", size = 8320331, upload-time = "2026-04-24T00:12:39.688Z" }, + { url = "https://files.pythonhosted.org/packages/63/d9/9e14bc7564bf92d5ffa801ae5fac819ce74b925dfb55e3ebde61a3bbad3e/matplotlib-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b1b745c489cd1a77a0dc1120a05dc87af9798faebc913601feb8c73d89bf2d1e", size = 8216461, upload-time = "2026-04-24T00:12:42.494Z" }, + { url = "https://files.pythonhosted.org/packages/8a/17/4402d0d14ccf1dfc70932600b68097fbbf9c898a4871d2cbbe79c7801a32/matplotlib-3.10.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8f3bcac1ca5ed000a6f4337d47ba67dfddf37ed6a46c15fd7f014997f7bf865f", size = 8790091, upload-time = "2026-04-24T00:12:44.789Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0b/322aeec06dd9b91411f92028b37d447342770a24392aa4813e317064dad5/matplotlib-3.10.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a8d66a55def891c33147ba3ba9bfcabf0b526a43764c818acbb4525e5ed0838", size = 9605027, upload-time = "2026-04-24T00:12:47.583Z" }, + { url = "https://files.pythonhosted.org/packages/74/88/5f13482f55e7b00bcfc09838b093c2456e1379978d2a146844aae05350ad/matplotlib-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d843374407c4017a6403b59c6c81606773d136f3259d5b6da3131bc814542cc2", size = 9671269, upload-time = "2026-04-24T00:12:50.878Z" }, + { url = "https://files.pythonhosted.org/packages/c5/e0/0840fd2f93da988ec660b8ad1984abe9f25d2aed22a5e394ff1c68c88307/matplotlib-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:f4399f64b3e94cd500195490972ae1ee81170df1636fa15364d157d5bdd7b921", size = 8217588, upload-time = "2026-04-24T00:12:53.784Z" }, + { url = "https://files.pythonhosted.org/packages/47/b9/d706d06dd605c49b9f83a2aed8c13e3e5db70697d7a80b7e3d7915de6b17/matplotlib-3.10.9-cp313-cp313-win_arm64.whl", hash = "sha256:ba7b3b8ef09eab7df0e86e9ae086faa433efbfbdb46afcb3aa16aabf779469a8", size = 8136913, upload-time = "2026-04-24T00:12:56.501Z" }, + { url = "https://files.pythonhosted.org/packages/9b/45/6e32d96978264c8ca8c4b1010adb955a1a49cfaf314e212bbc8908f04a61/matplotlib-3.10.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:09218df8a93712bd6ea133e83a153c755448cf7868316c531cffcc43f69d1cc9", size = 8368019, upload-time = "2026-04-24T00:12:58.896Z" }, + { url = "https://files.pythonhosted.org/packages/86/0a/c8e3d3bba245f0f7fc424937f8ff7ef77291a36af3edb97ccd78aa93d84f/matplotlib-3.10.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:82368699727bfb7b0182e1aa13082e3c08e092fa1a25d3e1fd92405bff96f6d4", size = 8264645, upload-time = "2026-04-24T00:13:01.406Z" }, + { url = "https://files.pythonhosted.org/packages/3d/aa/5bf5a14fe4fed73a4209a155606f8096ff797aad89c6c35179026571133e/matplotlib-3.10.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3225f4e1edcb8c86c884ddf79ebe20ecd0a67d30188f279897554ccd8fded4dc", size = 8802194, upload-time = "2026-04-24T00:13:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/dd/5e/b4be852d6bba6fd15893fadf91ff26ae49cb91aac789e95dde9d342e664f/matplotlib-3.10.9-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de2445a0c6690d21b7eb6ce071cebad6d40a2e9bdf10d039074a96ba19797b99", size = 9622684, upload-time = "2026-04-24T00:13:06.647Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/ed428c971139112ef730f62770654d609467346d09d4b62617e1afd68a5a/matplotlib-3.10.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:b2b9516251cb89ff618d757daec0e2ed1bf21248013844a853d87ef85ab3081d", size = 9680790, upload-time = "2026-04-24T00:13:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/e7/09/052e884aaf2b985c63cb79f715f1d5b6a3eaa7de78f6a52b9dbc077d5b53/matplotlib-3.10.9-cp313-cp313t-win_amd64.whl", hash = "sha256:e9fae004b941b23ff2edcf1567a857ed77bafc8086ffa258190462328434faf8", size = 8287571, upload-time = "2026-04-24T00:13:13.087Z" }, + { url = "https://files.pythonhosted.org/packages/f4/38/ae27288e788c35a4250491422f3db7750366fc8c97d6f36fbdecfc1f5518/matplotlib-3.10.9-cp313-cp313t-win_arm64.whl", hash = "sha256:6b63d9c7c769b88ab81e10dc86e4e0607cf56817b9f9e6cf24b2a5f1693b8e38", size = 8188292, upload-time = "2026-04-24T00:13:15.546Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e6/3bd8afd04949f02eabc1c17115ea5255e19cacd4d06fc5abdde4eeb0052c/matplotlib-3.10.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:172db52c9e683f5d12eaf57f0f54834190e12581fe1cc2a19595a8f5acb4e77d", size = 8321276, upload-time = "2026-04-24T00:13:18.318Z" }, + { url = "https://files.pythonhosted.org/packages/41/86/86231232fff41c9f8e4a1a7d7a597d349a02527109c3af7d618366122139/matplotlib-3.10.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:97e35e8d39ccc85859095e01a53847432ba9a53ddf7986f7a54a11b73d0e143f", size = 8218218, upload-time = "2026-04-24T00:13:20.974Z" }, + { url = "https://files.pythonhosted.org/packages/85/8f/becc9722cafc64f5d2eb0b7c1bf5f585271c618a45dbd8fabeb021f898b6/matplotlib-3.10.9-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aba1615dabe83188e19d4f75a253c6a08423e04c1425e64039f800050a69de6b", size = 9608145, upload-time = "2026-04-24T00:13:23.228Z" }, + { url = "https://files.pythonhosted.org/packages/32/5d/f7e914f7d9325abff4057cee62c0fa70263683189f774473cbfb534cd13b/matplotlib-3.10.9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34cf8167e023ad956c15f36302911d5406bd99a9862c1a8499ea6f7c0e015dc2", size = 9885085, upload-time = "2026-04-24T00:13:25.849Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fd/fa69f2221534e80cc5772ac2b7d222011a2acafc2ec7216d5dd174c864ae/matplotlib-3.10.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:59476c6d29d612b8e9bb6ce8c5b631be6ba8f9e3a2421f22a02b192c7dd28716", size = 9672358, upload-time = "2026-04-24T00:13:28.906Z" }, + { url = "https://files.pythonhosted.org/packages/ab/1a/5a4f747a8b271cbb024946d2dd3c913ab5032ba430626f8c3528ada96b4b/matplotlib-3.10.9-cp314-cp314-win_amd64.whl", hash = "sha256:336b9acc64d309063126edcdaca00db9373af3c476bb94388fe9c5a53ad13e6f", size = 8349970, upload-time = "2026-04-24T00:13:31.904Z" }, + { url = "https://files.pythonhosted.org/packages/64/dc/95d60ecaefe30680a154b52ea96ab4b0dab547f1fd6aa12f5fb655e89cae/matplotlib-3.10.9-cp314-cp314-win_arm64.whl", hash = "sha256:2dc9477819ffd78ad12a20df1d9d6a6bd4fec6aaa9072681465fddca052f1456", size = 8272785, upload-time = "2026-04-24T00:13:34.511Z" }, + { url = "https://files.pythonhosted.org/packages/70/a0/005d68bc8b8418300ce6591f18586910a8526806e2ab663933d9f20a41e9/matplotlib-3.10.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:da4e09638420548f31c354032a6250e473c68e5a4e96899b4844cf39ddea23fe", size = 8367999, upload-time = "2026-04-24T00:13:36.962Z" }, + { url = "https://files.pythonhosted.org/packages/22/05/1236cc9290be70b2498af20ca348add76e3fffe7f67b477db5133a84f3ea/matplotlib-3.10.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:345f6f68ecc8da0ca56fad2ea08fde1a115eda530079eca185d50a7bc3e146c6", size = 8264543, upload-time = "2026-04-24T00:13:39.851Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c2/071f5a5ff6c5bd63aaaf2f45c811d9bf2ced94bde188d9e1a519e21d0cba/matplotlib-3.10.9-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4edcfbd8565339aa62f1cd4012f7180926fdbe71850f7b0d3c379c175cd6b66c", size = 9622800, upload-time = "2026-04-24T00:13:42.296Z" }, + { url = "https://files.pythonhosted.org/packages/95/57/da7d1f10a85624b9e7db68e069dd94e58dc41dbf9463c5921632ecbe3661/matplotlib-3.10.9-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6be157fe17fc37cb95ac1d7374cf717ce9259616edec911a78d9d26dae8522d4", size = 9888561, upload-time = "2026-04-24T00:13:45.026Z" }, + { url = "https://files.pythonhosted.org/packages/67/b2/ef8d6bb59b0edb6c16c968b70f548aa13b54348972def5aa6ac85df67145/matplotlib-3.10.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4e42042d54db34fda4e95a7bd3e5789c2a995d2dad3eb8850232ee534092fbbf", size = 9680884, upload-time = "2026-04-24T00:13:48.066Z" }, + { url = "https://files.pythonhosted.org/packages/61/1c/d21bfeb9931881ebe96bcfcff27c7ae4b160ae0ec291a714c42641a56d75/matplotlib-3.10.9-cp314-cp314t-win_amd64.whl", hash = "sha256:c27df8b3848f32a83d1767566595e43cfaa4460380974da06f4279a7ec143c39", size = 8432333, upload-time = "2026-04-24T00:13:51.008Z" }, + { url = "https://files.pythonhosted.org/packages/78/23/92493c3e6e1b635ccfff146f7b99e674808787915420373ac399283764c2/matplotlib-3.10.9-cp314-cp314t-win_arm64.whl", hash = "sha256:a49f1eadc84ca85fd72fa4e89e70e61bf86452df6f971af04b12c60761a0772c", size = 8324785, upload-time = "2026-04-24T00:13:53.633Z" }, ] [[package]] name = "matplotlib-inline" -version = "0.2.1" +version = "0.2.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/c0/9f7c9a46090390368a4d7bcb76bb87a4a36c421e4c0792cdb53486ffac7a/matplotlib_inline-0.2.2.tar.gz", hash = "sha256:72f3fe8fce36b70d4a5b612f899090cd0401deddc4ea90e1572b9f4bfb058c79", size = 8150, upload-time = "2026-05-08T17:33:33.49Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, + { url = "https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl", hash = "sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6", size = 9534, upload-time = "2026-05-08T17:33:32.055Z" }, ] [[package]] @@ -3527,18 +2689,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] -[[package]] -name = "mdx-truly-sane-lists" -version = "1.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e6/27/16456314311abac2cedef4527679924e80ac4de19dd926699c1b261e0b9b/mdx_truly_sane_lists-1.3.tar.gz", hash = "sha256:b661022df7520a1e113af7c355c62216b384c867e4f59fb8ee7ad511e6e77f45", size = 5359, upload-time = "2022-07-19T13:42:45.153Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/9e/dcd1027f7fd193aed152e01c6651a197c36b858f2cd1425ad04cb31a34fc/mdx_truly_sane_lists-1.3-py3-none-any.whl", hash = "sha256:b9546a4c40ff8f1ab692f77cee4b6bfe8ddf9cccf23f0a24e71f3716fe290a37", size = 6071, upload-time = "2022-07-19T13:42:43.375Z" }, -] - [[package]] name = "mergedeep" version = "1.3.4" @@ -3585,186 +2735,73 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, ] -[[package]] -name = "mkdocs-api-autonav" -version = "0.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mkdocs" }, - { name = "mkdocstrings-python" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/b0/20960ee733a419a349877d09712d02e8ec2bda031672e5f0d0a15fc020b3/mkdocs_api_autonav-0.4.0.tar.gz", hash = "sha256:3527b0e5cf1b682bd374a3ce699ac12d6288f5fcaf93877f34a6b14c79740637", size = 17987, upload-time = "2025-09-09T12:42:02.216Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/37/e1413281aec69994a0ecb8baaff523b7b7da3119ae7d495b7dc659e630b0/mkdocs_api_autonav-0.4.0-py3-none-any.whl", hash = "sha256:87474e7919664fca75648a05e79de238dd5b39a0f711910d3638626b016acfe3", size = 13130, upload-time = "2025-09-09T12:42:00.731Z" }, -] - [[package]] name = "mkdocs-autorefs" -version = "1.4.3" +version = "1.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown" }, { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/fa/9124cd63d822e2bcbea1450ae68cdc3faf3655c69b455f3a7ed36ce6c628/mkdocs_autorefs-1.4.3.tar.gz", hash = "sha256:beee715b254455c4aa93b6ef3c67579c399ca092259cc41b7d9342573ff1fc75", size = 55425, upload-time = "2025-08-26T14:23:17.223Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl", hash = "sha256:469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9", size = 25034, upload-time = "2025-08-26T14:23:15.906Z" }, -] - -[[package]] -name = "mkdocs-awesome-nav" -version = "3.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mkdocs" }, - { name = "natsort" }, - { name = "pydantic" }, - { name = "wcmatch" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1f/96/d581c9ceae7d8c08c7456d1d2befbf3e9c7a52a6b03aebbe6dc1d46ffdac/mkdocs_awesome_nav-3.3.0.tar.gz", hash = "sha256:330edf4129995a7be8a9751edd8739d312fddf591c6cbd95ec80f12f4bfe8578", size = 9112, upload-time = "2025-12-02T20:10:46.11Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/c0/f641843de3f612a6b48253f39244165acff36657a91cc903633d456ae1ac/mkdocs_autorefs-1.4.4.tar.gz", hash = "sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197", size = 56588, upload-time = "2026-02-10T15:23:55.105Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/98/dc154a7f0bb25827d988dc31992917606d1ca9f5349077db045bb5cd9dbc/mkdocs_awesome_nav-3.3.0-py3-none-any.whl", hash = "sha256:bf80f14bff9571df79129bbdf103b4198589ee7616f8a29720ae2e7ac2455930", size = 12891, upload-time = "2025-12-02T20:10:45.054Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/a3e710469772c6a89595fc52816da05c1e164b4c866a89e3cb82fb1b67c5/mkdocs_autorefs-1.4.4-py3-none-any.whl", hash = "sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089", size = 25530, upload-time = "2026-02-10T15:23:53.817Z" }, ] [[package]] name = "mkdocs-get-deps" -version = "0.2.0" +version = "0.2.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mergedeep" }, { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/25/b3cccb187655b9393572bde9b09261d267c3bf2f2cdabe347673be5976a6/mkdocs_get_deps-0.2.2.tar.gz", hash = "sha256:8ee8d5f316cdbbb2834bc1df6e69c08fe769a83e040060de26d3c19fad3599a1", size = 11047, upload-time = "2026-03-10T02:46:33.632Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/88/29/744136411e785c4b0b744d5413e56555265939ab3a104c6a4b719dad33fd/mkdocs_get_deps-0.2.2-py3-none-any.whl", hash = "sha256:e7878cbeac04860b8b5e0ca31d3abad3df9411a75a32cde82f8e44b6c16ff650", size = 9555, upload-time = "2026-03-10T02:46:32.256Z" }, ] [[package]] -name = "mkdocs-git-committers-plugin-2" -version = "2.5.0" +name = "mkdocstrings" +version = "1.0.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gitpython" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, { name = "mkdocs" }, - { name = "requests" }, + { name = "mkdocs-autorefs" }, + { name = "pymdown-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b4/8a/4ca4fb7d17f66fa709b49744c597204ad03fb3b011c76919564843426f11/mkdocs_git_committers_plugin_2-2.5.0.tar.gz", hash = "sha256:a01f17369e79ca28651681cddf212770e646e6191954bad884ca3067316aae60", size = 15183, upload-time = "2025-01-30T07:30:48.667Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/5d/f888d4d3eb31359b327bc9b17a212d6ef03fe0b0682fbb3fc2cb849fb12b/mkdocstrings-1.0.4.tar.gz", hash = "sha256:3969a6515b77db65fd097b53c1b7aa4ae840bd71a2ee62a6a3e89503446d7172", size = 100088, upload-time = "2026-04-15T09:16:53.376Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/f5/768590251839a148c188d64779b809bde0e78a306295c18fc29d7fc71ce1/mkdocs_git_committers_plugin_2-2.5.0-py3-none-any.whl", hash = "sha256:1778becf98ccdc5fac809ac7b62cf01d3c67d6e8432723dffbb823307d1193c4", size = 11788, upload-time = "2025-01-30T07:30:45.748Z" }, + { url = "https://files.pythonhosted.org/packages/6e/94/be70f8ee9c45f2f62b39a1f0e9303bc20e138a8f3b8e50ffd89498e177e1/mkdocstrings-1.0.4-py3-none-any.whl", hash = "sha256:63464b4b29053514f32a1dbbf604e52876d5e638111b0c295ab7ed3cac73ca9b", size = 35560, upload-time = "2026-04-15T09:16:51.436Z" }, ] -[[package]] -name = "mkdocs-git-revision-date-localized-plugin" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "gitpython" }, - { name = "mkdocs" }, - { name = "tzdata", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0f/c5/1d3c4e6ddae6230b89d09105cb79de711655e3ebd6745f7a92efea0f5160/mkdocs_git_revision_date_localized_plugin-1.5.0.tar.gz", hash = "sha256:17345ccfdf69a1905dc96fb1070dce82d03a1eb6b0d48f958081a7589ce3c248", size = 460697, upload-time = "2025-10-31T16:11:34.44Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/51/fe0e3fdb16f6eed65c9459d12bae6a4e1f0bb4e2228cb037e7907b002678/mkdocs_git_revision_date_localized_plugin-1.5.0-py3-none-any.whl", hash = "sha256:933f9e35a8c135b113f21bb57610d82e9b7bcc71dd34fb06a029053c97e99656", size = 26153, upload-time = "2025-10-31T16:11:32.987Z" }, +[package.optional-dependencies] +python = [ + { name = "mkdocstrings-python" }, ] [[package]] -name = "mkdocs-include-markdown-plugin" -version = "7.2.0" +name = "mkdocstrings-python" +version = "2.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mkdocs" }, - { name = "wcmatch" }, + { name = "griffelib" }, + { name = "mkdocs-autorefs" }, + { name = "mkdocstrings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/90/10/b0b75ac42f4613556a808eee2dad3efe7a7d5079349aa5b9229d863e829f/mkdocs_include_markdown_plugin-7.2.0.tar.gz", hash = "sha256:4a67a91ade680dc0e15f608e5b6343bec03372ffa112c40a4254c1bfb10f42f3", size = 25509, upload-time = "2025-09-28T21:50:50.41Z" } +sdist = { url = "https://files.pythonhosted.org/packages/29/33/c225eaf898634bdda489a6766fc35d1683c640bffe0e0acd10646b13536d/mkdocstrings_python-2.0.3.tar.gz", hash = "sha256:c518632751cc869439b31c9d3177678ad2bfa5c21b79b863956ad68fc92c13b8", size = 199083, upload-time = "2026-02-20T10:38:36.368Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/f9/783338d1d7fd548c7635728b67a0f8f96d9e6c265aa61c51356c03597767/mkdocs_include_markdown_plugin-7.2.0-py3-none-any.whl", hash = "sha256:d56cdaeb2d113fb66ed0fe4fb7af1da889926b0b9872032be24e19bbb09c9f5b", size = 29548, upload-time = "2025-09-28T21:50:49.373Z" }, -] - -[package.optional-dependencies] -cache = [ - { name = "platformdirs" }, + { url = "https://files.pythonhosted.org/packages/32/28/79f0f8de97cce916d5ae88a7bee1ad724855e83e6019c0b4d5b3fabc80f3/mkdocstrings_python-2.0.3-py3-none-any.whl", hash = "sha256:0b83513478bdfd803ff05aa43e9b1fca9dd22bcd9471f09ca6257f009bc5ee12", size = 104779, upload-time = "2026-02-20T10:38:34.517Z" }, ] [[package]] -name = "mkdocs-material" -version = "9.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "backrefs" }, - { name = "colorama" }, - { name = "jinja2" }, - { name = "markdown" }, - { name = "mkdocs" }, - { name = "mkdocs-material-extensions" }, - { name = "paginate" }, - { name = "pygments" }, - { name = "pymdown-extensions" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/27/e2/2ffc356cd72f1473d07c7719d82a8f2cbd261666828614ecb95b12169f41/mkdocs_material-9.7.1.tar.gz", hash = "sha256:89601b8f2c3e6c6ee0a918cc3566cb201d40bf37c3cd3c2067e26fadb8cce2b8", size = 4094392, upload-time = "2025-12-18T09:49:00.308Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/32/ed071cb721aca8c227718cffcf7bd539620e9799bbf2619e90c757bfd030/mkdocs_material-9.7.1-py3-none-any.whl", hash = "sha256:3f6100937d7d731f87f1e3e3b021c97f7239666b9ba1151ab476cabb96c60d5c", size = 9297166, upload-time = "2025-12-18T09:48:56.664Z" }, -] - -[package.optional-dependencies] -imaging = [ - { name = "cairosvg" }, - { name = "pillow" }, -] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, -] - -[[package]] -name = "mkdocstrings" -version = "0.30.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jinja2" }, - { name = "markdown" }, - { name = "markupsafe" }, - { name = "mkdocs" }, - { name = "mkdocs-autorefs" }, - { name = "pymdown-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c5/33/2fa3243439f794e685d3e694590d28469a9b8ea733af4b48c250a3ffc9a0/mkdocstrings-0.30.1.tar.gz", hash = "sha256:84a007aae9b707fb0aebfc9da23db4b26fc9ab562eb56e335e9ec480cb19744f", size = 106350, upload-time = "2025-09-19T10:49:26.446Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/2c/f0dc4e1ee7f618f5bff7e05898d20bf8b6e7fa612038f768bfa295f136a4/mkdocstrings-0.30.1-py3-none-any.whl", hash = "sha256:41bd71f284ca4d44a668816193e4025c950b002252081e387433656ae9a70a82", size = 36704, upload-time = "2025-09-19T10:49:24.805Z" }, -] - -[package.optional-dependencies] -python = [ - { name = "mkdocstrings-python" }, -] - -[[package]] -name = "mkdocstrings-python" -version = "2.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "griffe" }, - { name = "mkdocs-autorefs" }, - { name = "mkdocstrings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/24/75/d30af27a2906f00eb90143470272376d728521997800f5dce5b340ba35bc/mkdocstrings_python-2.0.1.tar.gz", hash = "sha256:843a562221e6a471fefdd4b45cc6c22d2607ccbad632879234fa9692e9cf7732", size = 199345, upload-time = "2025-12-03T14:26:11.755Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl", hash = "sha256:66ecff45c5f8b71bf174e11d49afc845c2dfc7fc0ab17a86b6b337e0f24d8d90", size = 105055, upload-time = "2025-12-03T14:26:10.184Z" }, -] - -[[package]] -name = "ml-dtypes" -version = "0.5.4" +name = "ml-dtypes" +version = "0.5.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -3800,11 +2837,11 @@ wheels = [ [[package]] name = "more-itertools" -version = "10.8.0" +version = "11.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/1d/f4da6f02cdffe04d6362210b807146a26044c88d839208aec273bb0d9184/more_itertools-11.1.0.tar.gz", hash = "sha256:48e8f4d9e7e5878571ecf6f2b4e57634f93cd474cc8cfbd2376f2d11b396e30d", size = 145772, upload-time = "2026-05-22T14:14:29.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl", hash = "sha256:4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192", size = 72226, upload-time = "2026-05-22T14:14:28.824Z" }, ] [[package]] @@ -3818,42 +2855,42 @@ wheels = [ [[package]] name = "msgspec" -version = "0.20.0" +version = "0.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/9c/bfbd12955a49180cbd234c5d29ec6f74fe641698f0cd9df154a854fc8a15/msgspec-0.20.0.tar.gz", hash = "sha256:692349e588fde322875f8d3025ac01689fead5901e7fb18d6870a44519d62a29", size = 317862, upload-time = "2025-11-24T03:56:28.934Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/6f/1e25eee957e58e3afb2a44b94fa95e06cebc4c236193ed0de3012fff1e19/msgspec-0.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2aba22e2e302e9231e85edc24f27ba1f524d43c223ef5765bd8624c7df9ec0a5", size = 196391, upload-time = "2025-11-24T03:55:32.677Z" }, - { url = "https://files.pythonhosted.org/packages/7f/ee/af51d090ada641d4b264992a486435ba3ef5b5634bc27e6eb002f71cef7d/msgspec-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:716284f898ab2547fedd72a93bb940375de9fbfe77538f05779632dc34afdfde", size = 188644, upload-time = "2025-11-24T03:55:33.934Z" }, - { url = "https://files.pythonhosted.org/packages/49/d6/9709ee093b7742362c2934bfb1bbe791a1e09bed3ea5d8a18ce552fbfd73/msgspec-0.20.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:558ed73315efa51b1538fa8f1d3b22c8c5ff6d9a2a62eff87d25829b94fc5054", size = 218852, upload-time = "2025-11-24T03:55:35.575Z" }, - { url = "https://files.pythonhosted.org/packages/5c/a2/488517a43ccf5a4b6b6eca6dd4ede0bd82b043d1539dd6bb908a19f8efd3/msgspec-0.20.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:509ac1362a1d53aa66798c9b9fd76872d7faa30fcf89b2fba3bcbfd559d56eb0", size = 224937, upload-time = "2025-11-24T03:55:36.859Z" }, - { url = "https://files.pythonhosted.org/packages/d5/e8/49b832808aa23b85d4f090d1d2e48a4e3834871415031ed7c5fe48723156/msgspec-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1353c2c93423602e7dea1aa4c92f3391fdfc25ff40e0bacf81d34dbc68adb870", size = 222858, upload-time = "2025-11-24T03:55:38.187Z" }, - { url = "https://files.pythonhosted.org/packages/9f/56/1dc2fa53685dca9c3f243a6cbecd34e856858354e455b77f47ebd76cf5bf/msgspec-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cb33b5eb5adb3c33d749684471c6a165468395d7aa02d8867c15103b81e1da3e", size = 227248, upload-time = "2025-11-24T03:55:39.496Z" }, - { url = "https://files.pythonhosted.org/packages/5a/51/aba940212c23b32eedce752896205912c2668472ed5b205fc33da28a6509/msgspec-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:fb1d934e435dd3a2b8cf4bbf47a8757100b4a1cfdc2afdf227541199885cdacb", size = 190024, upload-time = "2025-11-24T03:55:40.829Z" }, - { url = "https://files.pythonhosted.org/packages/41/ad/3b9f259d94f183daa9764fef33fdc7010f7ecffc29af977044fa47440a83/msgspec-0.20.0-cp312-cp312-win_arm64.whl", hash = "sha256:00648b1e19cf01b2be45444ba9dc961bd4c056ffb15706651e64e5d6ec6197b7", size = 175390, upload-time = "2025-11-24T03:55:42.05Z" }, - { url = "https://files.pythonhosted.org/packages/8a/d1/b902d38b6e5ba3bdddbec469bba388d647f960aeed7b5b3623a8debe8a76/msgspec-0.20.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c1ff8db03be7598b50dd4b4a478d6fe93faae3bd54f4f17aa004d0e46c14c46", size = 196463, upload-time = "2025-11-24T03:55:43.405Z" }, - { url = "https://files.pythonhosted.org/packages/57/b6/eff0305961a1d9447ec2b02f8c73c8946f22564d302a504185b730c9a761/msgspec-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f6532369ece217fd37c5ebcfd7e981f2615628c21121b7b2df9d3adcf2fd69b8", size = 188650, upload-time = "2025-11-24T03:55:44.761Z" }, - { url = "https://files.pythonhosted.org/packages/99/93/f2ec1ae1de51d3fdee998a1ede6b2c089453a2ee82b5c1b361ed9095064a/msgspec-0.20.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9a1697da2f85a751ac3cc6a97fceb8e937fc670947183fb2268edaf4016d1ee", size = 218834, upload-time = "2025-11-24T03:55:46.441Z" }, - { url = "https://files.pythonhosted.org/packages/28/83/36557b04cfdc317ed8a525c4993b23e43a8fbcddaddd78619112ca07138c/msgspec-0.20.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7fac7e9c92eddcd24c19d9e5f6249760941485dff97802461ae7c995a2450111", size = 224917, upload-time = "2025-11-24T03:55:48.06Z" }, - { url = "https://files.pythonhosted.org/packages/8f/56/362037a1ed5be0b88aced59272442c4b40065c659700f4b195a7f4d0ac88/msgspec-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f953a66f2a3eb8d5ea64768445e2bb301d97609db052628c3e1bcb7d87192a9f", size = 222821, upload-time = "2025-11-24T03:55:49.388Z" }, - { url = "https://files.pythonhosted.org/packages/92/75/fa2370ec341cedf663731ab7042e177b3742645c5dd4f64dc96bd9f18a6b/msgspec-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:247af0313ae64a066d3aea7ba98840f6681ccbf5c90ba9c7d17f3e39dbba679c", size = 227227, upload-time = "2025-11-24T03:55:51.125Z" }, - { url = "https://files.pythonhosted.org/packages/f1/25/5e8080fe0117f799b1b68008dc29a65862077296b92550632de015128579/msgspec-0.20.0-cp313-cp313-win_amd64.whl", hash = "sha256:67d5e4dfad52832017018d30a462604c80561aa62a9d548fc2bd4e430b66a352", size = 189966, upload-time = "2025-11-24T03:55:52.458Z" }, - { url = "https://files.pythonhosted.org/packages/79/b6/63363422153937d40e1cb349c5081338401f8529a5a4e216865decd981bf/msgspec-0.20.0-cp313-cp313-win_arm64.whl", hash = "sha256:91a52578226708b63a9a13de287b1ec3ed1123e4a088b198143860c087770458", size = 175378, upload-time = "2025-11-24T03:55:53.721Z" }, - { url = "https://files.pythonhosted.org/packages/bb/18/62dc13ab0260c7d741dda8dc7f481495b93ac9168cd887dda5929880eef8/msgspec-0.20.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:eead16538db1b3f7ec6e3ed1f6f7c5dec67e90f76e76b610e1ffb5671815633a", size = 196407, upload-time = "2025-11-24T03:55:55.001Z" }, - { url = "https://files.pythonhosted.org/packages/dd/1d/b9949e4ad6953e9f9a142c7997b2f7390c81e03e93570c7c33caf65d27e1/msgspec-0.20.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:703c3bb47bf47801627fb1438f106adbfa2998fe586696d1324586a375fca238", size = 188889, upload-time = "2025-11-24T03:55:56.311Z" }, - { url = "https://files.pythonhosted.org/packages/1e/19/f8bb2dc0f1bfe46cc7d2b6b61c5e9b5a46c62298e8f4d03bbe499c926180/msgspec-0.20.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6cdb227dc585fb109305cee0fd304c2896f02af93ecf50a9c84ee54ee67dbb42", size = 219691, upload-time = "2025-11-24T03:55:57.908Z" }, - { url = "https://files.pythonhosted.org/packages/b8/8e/6b17e43f6eb9369d9858ee32c97959fcd515628a1df376af96c11606cf70/msgspec-0.20.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:27d35044dd8818ac1bd0fedb2feb4fbdff4e3508dd7c5d14316a12a2d96a0de0", size = 224918, upload-time = "2025-11-24T03:55:59.322Z" }, - { url = "https://files.pythonhosted.org/packages/1c/db/0e833a177db1a4484797adba7f429d4242585980b90882cc38709e1b62df/msgspec-0.20.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b4296393a29ee42dd25947981c65506fd4ad39beaf816f614146fa0c5a6c91ae", size = 223436, upload-time = "2025-11-24T03:56:00.716Z" }, - { url = "https://files.pythonhosted.org/packages/c3/30/d2ee787f4c918fd2b123441d49a7707ae9015e0e8e1ab51aa7967a97b90e/msgspec-0.20.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:205fbdadd0d8d861d71c8f3399fe1a82a2caf4467bc8ff9a626df34c12176980", size = 227190, upload-time = "2025-11-24T03:56:02.371Z" }, - { url = "https://files.pythonhosted.org/packages/ff/37/9c4b58ff11d890d788e700b827db2366f4d11b3313bf136780da7017278b/msgspec-0.20.0-cp314-cp314-win_amd64.whl", hash = "sha256:7dfebc94fe7d3feec6bc6c9df4f7e9eccc1160bb5b811fbf3e3a56899e398a6b", size = 193950, upload-time = "2025-11-24T03:56:03.668Z" }, - { url = "https://files.pythonhosted.org/packages/e9/4e/cab707bf2fa57408e2934e5197fc3560079db34a1e3cd2675ff2e47e07de/msgspec-0.20.0-cp314-cp314-win_arm64.whl", hash = "sha256:2ad6ae36e4a602b24b4bf4eaf8ab5a441fec03e1f1b5931beca8ebda68f53fc0", size = 179018, upload-time = "2025-11-24T03:56:05.038Z" }, - { url = "https://files.pythonhosted.org/packages/4c/06/3da3fc9aaa55618a8f43eb9052453cfe01f82930bca3af8cea63a89f3a11/msgspec-0.20.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:f84703e0e6ef025663dd1de828ca028774797b8155e070e795c548f76dde65d5", size = 200389, upload-time = "2025-11-24T03:56:06.375Z" }, - { url = "https://files.pythonhosted.org/packages/83/3b/cc4270a5ceab40dfe1d1745856951b0a24fd16ac8539a66ed3004a60c91e/msgspec-0.20.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7c83fc24dd09cf1275934ff300e3951b3adc5573f0657a643515cc16c7dee131", size = 193198, upload-time = "2025-11-24T03:56:07.742Z" }, - { url = "https://files.pythonhosted.org/packages/cd/ae/4c7905ac53830c8e3c06fdd60e3cdcfedc0bbc993872d1549b84ea21a1bd/msgspec-0.20.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f13ccb1c335a124e80c4562573b9b90f01ea9521a1a87f7576c2e281d547f56", size = 225973, upload-time = "2025-11-24T03:56:09.18Z" }, - { url = "https://files.pythonhosted.org/packages/d9/da/032abac1de4d0678d99eaeadb1323bd9d247f4711c012404ba77ed6f15ca/msgspec-0.20.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:17c2b5ca19f19306fc83c96d85e606d2cc107e0caeea85066b5389f664e04846", size = 229509, upload-time = "2025-11-24T03:56:10.898Z" }, - { url = "https://files.pythonhosted.org/packages/69/52/fdc7bdb7057a166f309e0b44929e584319e625aaba4771b60912a9321ccd/msgspec-0.20.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d931709355edabf66c2dd1a756b2d658593e79882bc81aae5964969d5a291b63", size = 230434, upload-time = "2025-11-24T03:56:12.48Z" }, - { url = "https://files.pythonhosted.org/packages/cb/fe/1dfd5f512b26b53043884e4f34710c73e294e7cc54278c3fe28380e42c37/msgspec-0.20.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:565f915d2e540e8a0c93a01ff67f50aebe1f7e22798c6a25873f9fda8d1325f8", size = 231758, upload-time = "2025-11-24T03:56:13.765Z" }, - { url = "https://files.pythonhosted.org/packages/97/f6/9ba7121b8e0c4e0beee49575d1dbc804e2e72467692f0428cf39ceba1ea5/msgspec-0.20.0-cp314-cp314t-win_amd64.whl", hash = "sha256:726f3e6c3c323f283f6021ebb6c8ccf58d7cd7baa67b93d73bfbe9a15c34ab8d", size = 206540, upload-time = "2025-11-24T03:56:15.029Z" }, - { url = "https://files.pythonhosted.org/packages/c8/3e/c5187de84bb2c2ca334ab163fcacf19a23ebb1d876c837f81a1b324a15bf/msgspec-0.20.0-cp314-cp314t-win_arm64.whl", hash = "sha256:93f23528edc51d9f686808a361728e903d6f2be55c901d6f5c92e44c6d546bfc", size = 183011, upload-time = "2025-11-24T03:56:16.442Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e3/60/f79b9b013a16fa3a58350c9295ddc6789f2e335f36ea61ed10a21b215364/msgspec-0.21.1.tar.gz", hash = "sha256:2313508e394b0d208f8f56892ca9b2799e2561329de9763b19619595a6c0f72c", size = 319193, upload-time = "2026-04-12T21:44:50.394Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/cf/317224852c00248c620a9bcf4b26e2e4ab8afd752f18d2a6ef73ebd423b6/msgspec-0.21.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d4248cf0b6129b7d230eacd493c17cc2d4f3989f3bb7f633a928a85b7dcfa251", size = 196188, upload-time = "2026-04-12T21:44:07.181Z" }, + { url = "https://files.pythonhosted.org/packages/6d/81/074612945c0666078f7366f40000013de9f6ba687491d450df699bceebc9/msgspec-0.21.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5102c7e9b3acff82178449b85006d96310e690291bb1ea0142f1b24bcb8aabcb", size = 188473, upload-time = "2026-04-12T21:44:08.736Z" }, + { url = "https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:846758412e9518252b2ac9bffd6f0e54d9ff614f5f9488df7749f81ff5c80920", size = 218871, upload-time = "2026-04-12T21:44:09.917Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21995e74b5c598c2e004110ad66ec7f1b8c20bf2bcf3b2de8fd9a3094422d3ff", size = 225025, upload-time = "2026-04-12T21:44:11.191Z" }, + { url = "https://files.pythonhosted.org/packages/24/bf/e20549e602b9edccadeeff98760345a416f9cce846a657e8b18e3396b212/msgspec-0.21.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6129f0cca52992e898fd5344187f7c8127b63d810b2fd73e36fca73b4c6475ee", size = 222672, upload-time = "2026-04-12T21:44:12.481Z" }, + { url = "https://files.pythonhosted.org/packages/b4/68/04d7a8f0f786545cf9b8c280c57aa6befb5977af6e884b8b54191cbe44b3/msgspec-0.21.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ef3ec2296248d1f8b9231acb051b6d471dfde8f21819e86c9adaaa9f42918521", size = 227303, upload-time = "2026-04-12T21:44:13.709Z" }, + { url = "https://files.pythonhosted.org/packages/cc/4d/619866af2840875be408047bf9e70ceafbae6ab50660de7134ed1b25eb86/msgspec-0.21.1-cp312-cp312-win_amd64.whl", hash = "sha256:d4ab834a054c6f0cbeef6df9e7e1b33d5f1bc7b86dea1d2fd7cad003873e783d", size = 190017, upload-time = "2026-04-12T21:44:14.977Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2e/a8f9eca8fd00e097d7a9e99ba8a4685db994494448e3d4f0b7f6e9a3c0f7/msgspec-0.21.1-cp312-cp312-win_arm64.whl", hash = "sha256:628aaa35c74950a8c59da330d7e98917e1c7188f983745782027748ee4ca573e", size = 175345, upload-time = "2026-04-12T21:44:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/7e/74/f11ede02839b19ff459f88e3145df5d711626ca84da4e23520cebf819367/msgspec-0.21.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:764173717a01743f007e9f74520ed281f24672c604514f7d76c1c3a10e8edb66", size = 196176, upload-time = "2026-04-12T21:44:17.613Z" }, + { url = "https://files.pythonhosted.org/packages/bb/40/4476c1bd341418a046c4955aff632ec769315d1e3cb94e6acf86d461f9ed/msgspec-0.21.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:344c7cd0eaed1fb81d7959f99100ef71ec9b536881a376f11b9a6c4803365697", size = 188524, upload-time = "2026-04-12T21:44:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d9/9e9d7d7e5061b47540d03d640fab9b3965ba7ae49c1b2154861c8f007518/msgspec-0.21.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48943e278b3854c2f89f955ddc6f9f430d3f0784b16e47d10604ee0463cd21f5", size = 218880, upload-time = "2026-04-12T21:44:20.028Z" }, + { url = "https://files.pythonhosted.org/packages/74/66/2bb344f34abb4b57e60c7c9c761994e0417b9718ec1460bf00c296f2a7ea/msgspec-0.21.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9aa659ebb0101b1cbc31461212b87e341d961f0ab0772aaf068a99e001ec4aa", size = 225050, upload-time = "2026-04-12T21:44:21.577Z" }, + { url = "https://files.pythonhosted.org/packages/1a/84/7c1e412f76092277bf760cef12b7979d03314d259ab5b5cafde5d0c1722d/msgspec-0.21.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7b27d1a8ead2b6f5b0c4f2d07b8be1ccfcc041c8a0e704781edebe3ae13c484", size = 222713, upload-time = "2026-04-12T21:44:22.83Z" }, + { url = "https://files.pythonhosted.org/packages/4e/27/0bba04b2b4ef05f3d068429410bc71d2cea925f1596a8f41152cccd5edb8/msgspec-0.21.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:38fe93e86b61328fe544cb7fd871fad5a27c8734bfda90f65e5dbe288ae50f61", size = 227259, upload-time = "2026-04-12T21:44:24.11Z" }, + { url = "https://files.pythonhosted.org/packages/b0/2d/09574b0eea02fed2c2c1383dbaae2c7f79dc16dcd6487a886000afb5d7c4/msgspec-0.21.1-cp313-cp313-win_amd64.whl", hash = "sha256:8bc666331c35fcce05a7cd2d6221adbe0f6058f8e750711413d22793c080ac6a", size = 189857, upload-time = "2026-04-12T21:44:25.359Z" }, + { url = "https://files.pythonhosted.org/packages/46/34/105b1576ad182879914f0c821f17ee1d13abb165cb060448f96fe2aff078/msgspec-0.21.1-cp313-cp313-win_arm64.whl", hash = "sha256:42bb1241e0750c1a4346f2aa84db26c5ffd99a4eb3a954927d9f149ff2f42898", size = 175403, upload-time = "2026-04-12T21:44:26.608Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ad/86954e987d1d6a5c579e2c2e7832b65e0fff194179fdac4f581536086024/msgspec-0.21.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fab48eb45fdbfbdb2c0edfec00ffc53b6b6085beefc6b50b61e01659f9f8757f", size = 196261, upload-time = "2026-04-12T21:44:27.807Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a1/c5e46c3e42b866199365e35d11dddfd1fbd8bba4fdb3c52f965b1607ce94/msgspec-0.21.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3cb779ea0c35bc807ff941d415875c1f69ca0be91a2e907ab99a171811d86a9a", size = 188729, upload-time = "2026-04-12T21:44:28.99Z" }, + { url = "https://files.pythonhosted.org/packages/85/7d/1e29a319d678d6cb962ae5bdf32a6858ebdf38f73bc654c0e9c742a0c2c8/msgspec-0.21.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:68604db36b3b4dd9bf160e436e12798a4738848144cea1aca1cb984011eb160f", size = 219866, upload-time = "2026-04-12T21:44:31.104Z" }, + { url = "https://files.pythonhosted.org/packages/25/1f/cca084ca2572810fff12ea9dbdcbe39eac048f40daf4a9077b49fcbe8cee/msgspec-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3d6b9dc50948eaf65df54d2fd0ff66e6d8c32f116037209ee861810eb9b676cb", size = 224993, upload-time = "2026-04-12T21:44:32.649Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/d2120fc9d419a89a3a7c13e5b7078798c4b392a96a02a6e2b3ce43a8766c/msgspec-0.21.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:52c5e21930942302394429c5a582ce7e6b62c7f983b3760834c2ce107e0dd6df", size = 223535, upload-time = "2026-04-12T21:44:33.839Z" }, + { url = "https://files.pythonhosted.org/packages/75/17/42418b66a3ad972a89bab73dd78b79cc6282bb488a25e73c853cee7443b9/msgspec-0.21.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:abbb39d65681fa24ed394e01af3d59d869068324f900c61d06062b7fb9980f2f", size = 227222, upload-time = "2026-04-12T21:44:35.093Z" }, + { url = "https://files.pythonhosted.org/packages/c4/33/265c894268cca88ff67b144ca2b4c522fc8b9a6f1966a3640c70516e78e1/msgspec-0.21.1-cp314-cp314-win_amd64.whl", hash = "sha256:5666b1b560b97b6ec2eb3fca8a502298ebac56e13bbca1f88523538ce83d01ea", size = 193810, upload-time = "2026-04-12T21:44:36.612Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8f/a6d35f25bf1fc63c492fdd88fdce01ba0875ead48c2b91f90f33653b4131/msgspec-0.21.1-cp314-cp314-win_arm64.whl", hash = "sha256:d8b8578e4c83b14ceea4cef0d0b747e31d9330fe4b03b2b2ad4063866a178f93", size = 179125, upload-time = "2026-04-12T21:44:38.198Z" }, + { url = "https://files.pythonhosted.org/packages/c6/39/74839641e64b99d87da55af0fc472854d42b46e2183b9e2a67fe1bb2a512/msgspec-0.21.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:15f523d51c00ebad412213bfe9f06f0a50ec2b93e0c19e824a2d267cabb48ea2", size = 200171, upload-time = "2026-04-12T21:44:39.414Z" }, + { url = "https://files.pythonhosted.org/packages/70/9b/ce0cca6d2d87fcd4b6ff97600790494e64f26a2c55d61507cd2755c16193/msgspec-0.21.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4e47390360583ba3d5c6cb44cf0a9f61b0a06a899d3c2c00627cedebb2e2884b", size = 192879, upload-time = "2026-04-12T21:44:40.882Z" }, + { url = "https://files.pythonhosted.org/packages/a7/08/673a7bb05e5702dc787ddd3011195b509f9867927970da59052211929987/msgspec-0.21.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f60800e6299b798142dc40b0644da77ceac5ea0568be58228417eae14135c847", size = 226281, upload-time = "2026-04-12T21:44:42.181Z" }, + { url = "https://files.pythonhosted.org/packages/7d/45/86508cf57283e9070b3c447e3ab25b792a7a0855a3ea4e0c6d111ac34c97/msgspec-0.21.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5f8e9dfcd98419cf7568808470c4317a3fb30bef0e3715b568730a2b272a20d7", size = 229863, upload-time = "2026-04-12T21:44:43.442Z" }, + { url = "https://files.pythonhosted.org/packages/2c/62/e7c9367cd08d590559faacd711edbae36840342843e669440363f33c7d36/msgspec-0.21.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:92d89dfad13bd1ea640dc3e37e724ed380da1030b272bdf5ecafb983c3ad7c75", size = 230445, upload-time = "2026-04-12T21:44:44.806Z" }, + { url = "https://files.pythonhosted.org/packages/42/b4/c0f54632103846b658a10930025f4de41c8724b5e4805a5f3b395586cb7e/msgspec-0.21.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0d03867786e5d7ba25d666df4b11320c27170f4aeafcb8e3a8b0a50a4fb742ca", size = 231822, upload-time = "2026-04-12T21:44:46.343Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1d/0d85cc79d0ccf5508e9c846cc66552a6a16bf92abd1dbd8362617f7b35cd/msgspec-0.21.1-cp314-cp314t-win_amd64.whl", hash = "sha256:740fbf1c9d59992ca3537d6fbe9ebbf9eaf726a65fbf31448e0ecbc710697a63", size = 206650, upload-time = "2026-04-12T21:44:47.601Z" }, + { url = "https://files.pythonhosted.org/packages/90/91/56c5d560f20e6c20e9e4f55bd0e458f7f162aa689ee350346c04c48eac0b/msgspec-0.21.1-cp314-cp314t-win_arm64.whl", hash = "sha256:0d2cc73df6058d811a126ac3a8ad63a4dfa210c82f9cf5a004802eaf4712de90", size = 183149, upload-time = "2026-04-12T21:44:48.833Z" }, ] [package.optional-dependencies] @@ -3865,135 +2902,56 @@ yaml = [ ] [[package]] -name = "multidict" -version = "6.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/80/1e/5492c365f222f907de1039b91f922b93fa4f764c713ee858d235495d8f50/multidict-6.7.0.tar.gz", hash = "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5", size = 101834, upload-time = "2025-10-06T14:52:30.657Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/9e/9f61ac18d9c8b475889f32ccfa91c9f59363480613fc807b6e3023d6f60b/multidict-6.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184", size = 76877, upload-time = "2025-10-06T14:49:20.884Z" }, - { url = "https://files.pythonhosted.org/packages/38/6f/614f09a04e6184f8824268fce4bc925e9849edfa654ddd59f0b64508c595/multidict-6.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:960c60b5849b9b4f9dcc9bea6e3626143c252c74113df2c1540aebce70209b45", size = 45467, upload-time = "2025-10-06T14:49:22.054Z" }, - { url = "https://files.pythonhosted.org/packages/b3/93/c4f67a436dd026f2e780c433277fff72be79152894d9fc36f44569cab1a6/multidict-6.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2049be98fb57a31b4ccf870bf377af2504d4ae35646a19037ec271e4c07998aa", size = 43834, upload-time = "2025-10-06T14:49:23.566Z" }, - { url = "https://files.pythonhosted.org/packages/7f/f5/013798161ca665e4a422afbc5e2d9e4070142a9ff8905e482139cd09e4d0/multidict-6.7.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0934f3843a1860dd465d38895c17fce1f1cb37295149ab05cd1b9a03afacb2a7", size = 250545, upload-time = "2025-10-06T14:49:24.882Z" }, - { url = "https://files.pythonhosted.org/packages/71/2f/91dbac13e0ba94669ea5119ba267c9a832f0cb65419aca75549fcf09a3dc/multidict-6.7.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b3e34f3a1b8131ba06f1a73adab24f30934d148afcd5f5de9a73565a4404384e", size = 258305, upload-time = "2025-10-06T14:49:26.778Z" }, - { url = "https://files.pythonhosted.org/packages/ef/b0/754038b26f6e04488b48ac621f779c341338d78503fb45403755af2df477/multidict-6.7.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:efbb54e98446892590dc2458c19c10344ee9a883a79b5cec4bc34d6656e8d546", size = 242363, upload-time = "2025-10-06T14:49:28.562Z" }, - { url = "https://files.pythonhosted.org/packages/87/15/9da40b9336a7c9fa606c4cf2ed80a649dffeb42b905d4f63a1d7eb17d746/multidict-6.7.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a35c5fc61d4f51eb045061e7967cfe3123d622cd500e8868e7c0c592a09fedc4", size = 268375, upload-time = "2025-10-06T14:49:29.96Z" }, - { url = "https://files.pythonhosted.org/packages/82/72/c53fcade0cc94dfaad583105fd92b3a783af2091eddcb41a6d5a52474000/multidict-6.7.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29fe6740ebccba4175af1b9b87bf553e9c15cd5868ee967e010efcf94e4fd0f1", size = 269346, upload-time = "2025-10-06T14:49:31.404Z" }, - { url = "https://files.pythonhosted.org/packages/0d/e2/9baffdae21a76f77ef8447f1a05a96ec4bc0a24dae08767abc0a2fe680b8/multidict-6.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:123e2a72e20537add2f33a79e605f6191fba2afda4cbb876e35c1a7074298a7d", size = 256107, upload-time = "2025-10-06T14:49:32.974Z" }, - { url = "https://files.pythonhosted.org/packages/3c/06/3f06f611087dc60d65ef775f1fb5aca7c6d61c6db4990e7cda0cef9b1651/multidict-6.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b284e319754366c1aee2267a2036248b24eeb17ecd5dc16022095e747f2f4304", size = 253592, upload-time = "2025-10-06T14:49:34.52Z" }, - { url = "https://files.pythonhosted.org/packages/20/24/54e804ec7945b6023b340c412ce9c3f81e91b3bf5fa5ce65558740141bee/multidict-6.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:803d685de7be4303b5a657b76e2f6d1240e7e0a8aa2968ad5811fa2285553a12", size = 251024, upload-time = "2025-10-06T14:49:35.956Z" }, - { url = "https://files.pythonhosted.org/packages/14/48/011cba467ea0b17ceb938315d219391d3e421dfd35928e5dbdc3f4ae76ef/multidict-6.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c04a328260dfd5db8c39538f999f02779012268f54614902d0afc775d44e0a62", size = 251484, upload-time = "2025-10-06T14:49:37.631Z" }, - { url = "https://files.pythonhosted.org/packages/0d/2f/919258b43bb35b99fa127435cfb2d91798eb3a943396631ef43e3720dcf4/multidict-6.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8a19cdb57cd3df4cd865849d93ee14920fb97224300c88501f16ecfa2604b4e0", size = 263579, upload-time = "2025-10-06T14:49:39.502Z" }, - { url = "https://files.pythonhosted.org/packages/31/22/a0e884d86b5242b5a74cf08e876bdf299e413016b66e55511f7a804a366e/multidict-6.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b2fd74c52accced7e75de26023b7dccee62511a600e62311b918ec5c168fc2a", size = 259654, upload-time = "2025-10-06T14:49:41.32Z" }, - { url = "https://files.pythonhosted.org/packages/b2/e5/17e10e1b5c5f5a40f2fcbb45953c9b215f8a4098003915e46a93f5fcaa8f/multidict-6.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e8bfdd0e487acf992407a140d2589fe598238eaeffa3da8448d63a63cd363f8", size = 251511, upload-time = "2025-10-06T14:49:46.021Z" }, - { url = "https://files.pythonhosted.org/packages/e3/9a/201bb1e17e7af53139597069c375e7b0dcbd47594604f65c2d5359508566/multidict-6.7.0-cp312-cp312-win32.whl", hash = "sha256:dd32a49400a2c3d52088e120ee00c1e3576cbff7e10b98467962c74fdb762ed4", size = 41895, upload-time = "2025-10-06T14:49:48.718Z" }, - { url = "https://files.pythonhosted.org/packages/46/e2/348cd32faad84eaf1d20cce80e2bb0ef8d312c55bca1f7fa9865e7770aaf/multidict-6.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:92abb658ef2d7ef22ac9f8bb88e8b6c3e571671534e029359b6d9e845923eb1b", size = 46073, upload-time = "2025-10-06T14:49:50.28Z" }, - { url = "https://files.pythonhosted.org/packages/25/ec/aad2613c1910dce907480e0c3aa306905830f25df2e54ccc9dea450cb5aa/multidict-6.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:490dab541a6a642ce1a9d61a4781656b346a55c13038f0b1244653828e3a83ec", size = 43226, upload-time = "2025-10-06T14:49:52.304Z" }, - { url = "https://files.pythonhosted.org/packages/d2/86/33272a544eeb36d66e4d9a920602d1a2f57d4ebea4ef3cdfe5a912574c95/multidict-6.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bee7c0588aa0076ce77c0ea5d19a68d76ad81fcd9fe8501003b9a24f9d4000f6", size = 76135, upload-time = "2025-10-06T14:49:54.26Z" }, - { url = "https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159", size = 45117, upload-time = "2025-10-06T14:49:55.82Z" }, - { url = "https://files.pythonhosted.org/packages/f1/d8/6c3442322e41fb1dd4de8bd67bfd11cd72352ac131f6368315617de752f1/multidict-6.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c0359b1ec12b1d6849c59f9d319610b7f20ef990a6d454ab151aa0e3b9f78ca", size = 43472, upload-time = "2025-10-06T14:49:57.048Z" }, - { url = "https://files.pythonhosted.org/packages/75/3f/e2639e80325af0b6c6febdf8e57cc07043ff15f57fa1ef808f4ccb5ac4cd/multidict-6.7.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cd240939f71c64bd658f186330603aac1a9a81bf6273f523fca63673cb7378a8", size = 249342, upload-time = "2025-10-06T14:49:58.368Z" }, - { url = "https://files.pythonhosted.org/packages/5d/cc/84e0585f805cbeaa9cbdaa95f9a3d6aed745b9d25700623ac89a6ecff400/multidict-6.7.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60a4d75718a5efa473ebd5ab685786ba0c67b8381f781d1be14da49f1a2dc60", size = 257082, upload-time = "2025-10-06T14:49:59.89Z" }, - { url = "https://files.pythonhosted.org/packages/b0/9c/ac851c107c92289acbbf5cfb485694084690c1b17e555f44952c26ddc5bd/multidict-6.7.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53a42d364f323275126aff81fb67c5ca1b7a04fda0546245730a55c8c5f24bc4", size = 240704, upload-time = "2025-10-06T14:50:01.485Z" }, - { url = "https://files.pythonhosted.org/packages/50/cc/5f93e99427248c09da95b62d64b25748a5f5c98c7c2ab09825a1d6af0e15/multidict-6.7.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3b29b980d0ddbecb736735ee5bef69bb2ddca56eff603c86f3f29a1128299b4f", size = 266355, upload-time = "2025-10-06T14:50:02.955Z" }, - { url = "https://files.pythonhosted.org/packages/ec/0c/2ec1d883ceb79c6f7f6d7ad90c919c898f5d1c6ea96d322751420211e072/multidict-6.7.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f8a93b1c0ed2d04b97a5e9336fd2d33371b9a6e29ab7dd6503d63407c20ffbaf", size = 267259, upload-time = "2025-10-06T14:50:04.446Z" }, - { url = "https://files.pythonhosted.org/packages/c6/2d/f0b184fa88d6630aa267680bdb8623fb69cb0d024b8c6f0d23f9a0f406d3/multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ff96e8815eecacc6645da76c413eb3b3d34cfca256c70b16b286a687d013c32", size = 254903, upload-time = "2025-10-06T14:50:05.98Z" }, - { url = "https://files.pythonhosted.org/packages/06/c9/11ea263ad0df7dfabcad404feb3c0dd40b131bc7f232d5537f2fb1356951/multidict-6.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7516c579652f6a6be0e266aec0acd0db80829ca305c3d771ed898538804c2036", size = 252365, upload-time = "2025-10-06T14:50:07.511Z" }, - { url = "https://files.pythonhosted.org/packages/41/88/d714b86ee2c17d6e09850c70c9d310abac3d808ab49dfa16b43aba9d53fd/multidict-6.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:040f393368e63fb0f3330e70c26bfd336656bed925e5cbe17c9da839a6ab13ec", size = 250062, upload-time = "2025-10-06T14:50:09.074Z" }, - { url = "https://files.pythonhosted.org/packages/15/fe/ad407bb9e818c2b31383f6131ca19ea7e35ce93cf1310fce69f12e89de75/multidict-6.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b3bc26a951007b1057a1c543af845f1c7e3e71cc240ed1ace7bf4484aa99196e", size = 249683, upload-time = "2025-10-06T14:50:10.714Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a4/a89abdb0229e533fb925e7c6e5c40201c2873efebc9abaf14046a4536ee6/multidict-6.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7b022717c748dd1992a83e219587aabe45980d88969f01b316e78683e6285f64", size = 261254, upload-time = "2025-10-06T14:50:12.28Z" }, - { url = "https://files.pythonhosted.org/packages/8d/aa/0e2b27bd88b40a4fb8dc53dd74eecac70edaa4c1dd0707eb2164da3675b3/multidict-6.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:9600082733859f00d79dee64effc7aef1beb26adb297416a4ad2116fd61374bd", size = 257967, upload-time = "2025-10-06T14:50:14.16Z" }, - { url = "https://files.pythonhosted.org/packages/d0/8e/0c67b7120d5d5f6d874ed85a085f9dc770a7f9d8813e80f44a9fec820bb7/multidict-6.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:94218fcec4d72bc61df51c198d098ce2b378e0ccbac41ddbed5ef44092913288", size = 250085, upload-time = "2025-10-06T14:50:15.639Z" }, - { url = "https://files.pythonhosted.org/packages/ba/55/b73e1d624ea4b8fd4dd07a3bb70f6e4c7c6c5d9d640a41c6ffe5cdbd2a55/multidict-6.7.0-cp313-cp313-win32.whl", hash = "sha256:a37bd74c3fa9d00be2d7b8eca074dc56bd8077ddd2917a839bd989612671ed17", size = 41713, upload-time = "2025-10-06T14:50:17.066Z" }, - { url = "https://files.pythonhosted.org/packages/32/31/75c59e7d3b4205075b4c183fa4ca398a2daf2303ddf616b04ae6ef55cffe/multidict-6.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:30d193c6cc6d559db42b6bcec8a5d395d34d60c9877a0b71ecd7c204fcf15390", size = 45915, upload-time = "2025-10-06T14:50:18.264Z" }, - { url = "https://files.pythonhosted.org/packages/31/2a/8987831e811f1184c22bc2e45844934385363ee61c0a2dcfa8f71b87e608/multidict-6.7.0-cp313-cp313-win_arm64.whl", hash = "sha256:ea3334cabe4d41b7ccd01e4d349828678794edbc2d3ae97fc162a3312095092e", size = 43077, upload-time = "2025-10-06T14:50:19.853Z" }, - { url = "https://files.pythonhosted.org/packages/e8/68/7b3a5170a382a340147337b300b9eb25a9ddb573bcdfff19c0fa3f31ffba/multidict-6.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ad9ce259f50abd98a1ca0aa6e490b58c316a0fce0617f609723e40804add2c00", size = 83114, upload-time = "2025-10-06T14:50:21.223Z" }, - { url = "https://files.pythonhosted.org/packages/55/5c/3fa2d07c84df4e302060f555bbf539310980362236ad49f50eeb0a1c1eb9/multidict-6.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07f5594ac6d084cbb5de2df218d78baf55ef150b91f0ff8a21cc7a2e3a5a58eb", size = 48442, upload-time = "2025-10-06T14:50:22.871Z" }, - { url = "https://files.pythonhosted.org/packages/fc/56/67212d33239797f9bd91962bb899d72bb0f4c35a8652dcdb8ed049bef878/multidict-6.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0591b48acf279821a579282444814a2d8d0af624ae0bc600aa4d1b920b6e924b", size = 46885, upload-time = "2025-10-06T14:50:24.258Z" }, - { url = "https://files.pythonhosted.org/packages/46/d1/908f896224290350721597a61a69cd19b89ad8ee0ae1f38b3f5cd12ea2ac/multidict-6.7.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:749a72584761531d2b9467cfbdfd29487ee21124c304c4b6cb760d8777b27f9c", size = 242588, upload-time = "2025-10-06T14:50:25.716Z" }, - { url = "https://files.pythonhosted.org/packages/ab/67/8604288bbd68680eee0ab568fdcb56171d8b23a01bcd5cb0c8fedf6e5d99/multidict-6.7.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b4c3d199f953acd5b446bf7c0de1fe25d94e09e79086f8dc2f48a11a129cdf1", size = 249966, upload-time = "2025-10-06T14:50:28.192Z" }, - { url = "https://files.pythonhosted.org/packages/20/33/9228d76339f1ba51e3efef7da3ebd91964d3006217aae13211653193c3ff/multidict-6.7.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9fb0211dfc3b51efea2f349ec92c114d7754dd62c01f81c3e32b765b70c45c9b", size = 228618, upload-time = "2025-10-06T14:50:29.82Z" }, - { url = "https://files.pythonhosted.org/packages/f8/2d/25d9b566d10cab1c42b3b9e5b11ef79c9111eaf4463b8c257a3bd89e0ead/multidict-6.7.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a027ec240fe73a8d6281872690b988eed307cd7d91b23998ff35ff577ca688b5", size = 257539, upload-time = "2025-10-06T14:50:31.731Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b1/8d1a965e6637fc33de3c0d8f414485c2b7e4af00f42cab3d84e7b955c222/multidict-6.7.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1d964afecdf3a8288789df2f5751dc0a8261138c3768d9af117ed384e538fad", size = 256345, upload-time = "2025-10-06T14:50:33.26Z" }, - { url = "https://files.pythonhosted.org/packages/ba/0c/06b5a8adbdeedada6f4fb8d8f193d44a347223b11939b42953eeb6530b6b/multidict-6.7.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:caf53b15b1b7df9fbd0709aa01409000a2b4dd03a5f6f5cc548183c7c8f8b63c", size = 247934, upload-time = "2025-10-06T14:50:34.808Z" }, - { url = "https://files.pythonhosted.org/packages/8f/31/b2491b5fe167ca044c6eb4b8f2c9f3b8a00b24c432c365358eadac5d7625/multidict-6.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:654030da3197d927f05a536a66186070e98765aa5142794c9904555d3a9d8fb5", size = 245243, upload-time = "2025-10-06T14:50:36.436Z" }, - { url = "https://files.pythonhosted.org/packages/61/1a/982913957cb90406c8c94f53001abd9eafc271cb3e70ff6371590bec478e/multidict-6.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:2090d3718829d1e484706a2f525e50c892237b2bf9b17a79b059cb98cddc2f10", size = 235878, upload-time = "2025-10-06T14:50:37.953Z" }, - { url = "https://files.pythonhosted.org/packages/be/c0/21435d804c1a1cf7a2608593f4d19bca5bcbd7a81a70b253fdd1c12af9c0/multidict-6.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d2cfeec3f6f45651b3d408c4acec0ebf3daa9bc8a112a084206f5db5d05b754", size = 243452, upload-time = "2025-10-06T14:50:39.574Z" }, - { url = "https://files.pythonhosted.org/packages/54/0a/4349d540d4a883863191be6eb9a928846d4ec0ea007d3dcd36323bb058ac/multidict-6.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:4ef089f985b8c194d341eb2c24ae6e7408c9a0e2e5658699c92f497437d88c3c", size = 252312, upload-time = "2025-10-06T14:50:41.612Z" }, - { url = "https://files.pythonhosted.org/packages/26/64/d5416038dbda1488daf16b676e4dbfd9674dde10a0cc8f4fc2b502d8125d/multidict-6.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e93a0617cd16998784bf4414c7e40f17a35d2350e5c6f0bd900d3a8e02bd3762", size = 246935, upload-time = "2025-10-06T14:50:43.972Z" }, - { url = "https://files.pythonhosted.org/packages/9f/8c/8290c50d14e49f35e0bd4abc25e1bc7711149ca9588ab7d04f886cdf03d9/multidict-6.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f0feece2ef8ebc42ed9e2e8c78fc4aa3cf455733b507c09ef7406364c94376c6", size = 243385, upload-time = "2025-10-06T14:50:45.648Z" }, - { url = "https://files.pythonhosted.org/packages/ef/a0/f83ae75e42d694b3fbad3e047670e511c138be747bc713cf1b10d5096416/multidict-6.7.0-cp313-cp313t-win32.whl", hash = "sha256:19a1d55338ec1be74ef62440ca9e04a2f001a04d0cc49a4983dc320ff0f3212d", size = 47777, upload-time = "2025-10-06T14:50:47.154Z" }, - { url = "https://files.pythonhosted.org/packages/dc/80/9b174a92814a3830b7357307a792300f42c9e94664b01dee8e457551fa66/multidict-6.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3da4fb467498df97e986af166b12d01f05d2e04f978a9c1c680ea1988e0bc4b6", size = 53104, upload-time = "2025-10-06T14:50:48.851Z" }, - { url = "https://files.pythonhosted.org/packages/cc/28/04baeaf0428d95bb7a7bea0e691ba2f31394338ba424fb0679a9ed0f4c09/multidict-6.7.0-cp313-cp313t-win_arm64.whl", hash = "sha256:b4121773c49a0776461f4a904cdf6264c88e42218aaa8407e803ca8025872792", size = 45503, upload-time = "2025-10-06T14:50:50.16Z" }, - { url = "https://files.pythonhosted.org/packages/e2/b1/3da6934455dd4b261d4c72f897e3a5728eba81db59959f3a639245891baa/multidict-6.7.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3bab1e4aff7adaa34410f93b1f8e57c4b36b9af0426a76003f441ee1d3c7e842", size = 75128, upload-time = "2025-10-06T14:50:51.92Z" }, - { url = "https://files.pythonhosted.org/packages/14/2c/f069cab5b51d175a1a2cb4ccdf7a2c2dabd58aa5bd933fa036a8d15e2404/multidict-6.7.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b8512bac933afc3e45fb2b18da8e59b78d4f408399a960339598374d4ae3b56b", size = 44410, upload-time = "2025-10-06T14:50:53.275Z" }, - { url = "https://files.pythonhosted.org/packages/42/e2/64bb41266427af6642b6b128e8774ed84c11b80a90702c13ac0a86bb10cc/multidict-6.7.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:79dcf9e477bc65414ebfea98ffd013cb39552b5ecd62908752e0e413d6d06e38", size = 43205, upload-time = "2025-10-06T14:50:54.911Z" }, - { url = "https://files.pythonhosted.org/packages/02/68/6b086fef8a3f1a8541b9236c594f0c9245617c29841f2e0395d979485cde/multidict-6.7.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:31bae522710064b5cbeddaf2e9f32b1abab70ac6ac91d42572502299e9953128", size = 245084, upload-time = "2025-10-06T14:50:56.369Z" }, - { url = "https://files.pythonhosted.org/packages/15/ee/f524093232007cd7a75c1d132df70f235cfd590a7c9eaccd7ff422ef4ae8/multidict-6.7.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a0df7ff02397bb63e2fd22af2c87dfa39e8c7f12947bc524dbdc528282c7e34", size = 252667, upload-time = "2025-10-06T14:50:57.991Z" }, - { url = "https://files.pythonhosted.org/packages/02/a5/eeb3f43ab45878f1895118c3ef157a480db58ede3f248e29b5354139c2c9/multidict-6.7.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a0222514e8e4c514660e182d5156a415c13ef0aabbd71682fc714e327b95e99", size = 233590, upload-time = "2025-10-06T14:50:59.589Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1e/76d02f8270b97269d7e3dbd45644b1785bda457b474315f8cf999525a193/multidict-6.7.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2397ab4daaf2698eb51a76721e98db21ce4f52339e535725de03ea962b5a3202", size = 264112, upload-time = "2025-10-06T14:51:01.183Z" }, - { url = "https://files.pythonhosted.org/packages/76/0b/c28a70ecb58963847c2a8efe334904cd254812b10e535aefb3bcce513918/multidict-6.7.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8891681594162635948a636c9fe0ff21746aeb3dd5463f6e25d9bea3a8a39ca1", size = 261194, upload-time = "2025-10-06T14:51:02.794Z" }, - { url = "https://files.pythonhosted.org/packages/b4/63/2ab26e4209773223159b83aa32721b4021ffb08102f8ac7d689c943fded1/multidict-6.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18706cc31dbf402a7945916dd5cddf160251b6dab8a2c5f3d6d5a55949f676b3", size = 248510, upload-time = "2025-10-06T14:51:04.724Z" }, - { url = "https://files.pythonhosted.org/packages/93/cd/06c1fa8282af1d1c46fd55c10a7930af652afdce43999501d4d68664170c/multidict-6.7.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f844a1bbf1d207dd311a56f383f7eda2d0e134921d45751842d8235e7778965d", size = 248395, upload-time = "2025-10-06T14:51:06.306Z" }, - { url = "https://files.pythonhosted.org/packages/99/ac/82cb419dd6b04ccf9e7e61befc00c77614fc8134362488b553402ecd55ce/multidict-6.7.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d4393e3581e84e5645506923816b9cc81f5609a778c7e7534054091acc64d1c6", size = 239520, upload-time = "2025-10-06T14:51:08.091Z" }, - { url = "https://files.pythonhosted.org/packages/fa/f3/a0f9bf09493421bd8716a362e0cd1d244f5a6550f5beffdd6b47e885b331/multidict-6.7.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:fbd18dc82d7bf274b37aa48d664534330af744e03bccf696d6f4c6042e7d19e7", size = 245479, upload-time = "2025-10-06T14:51:10.365Z" }, - { url = "https://files.pythonhosted.org/packages/8d/01/476d38fc73a212843f43c852b0eee266b6971f0e28329c2184a8df90c376/multidict-6.7.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b6234e14f9314731ec45c42fc4554b88133ad53a09092cc48a88e771c125dadb", size = 258903, upload-time = "2025-10-06T14:51:12.466Z" }, - { url = "https://files.pythonhosted.org/packages/49/6d/23faeb0868adba613b817d0e69c5f15531b24d462af8012c4f6de4fa8dc3/multidict-6.7.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:08d4379f9744d8f78d98c8673c06e202ffa88296f009c71bbafe8a6bf847d01f", size = 252333, upload-time = "2025-10-06T14:51:14.48Z" }, - { url = "https://files.pythonhosted.org/packages/1e/cc/48d02ac22b30fa247f7dad82866e4b1015431092f4ba6ebc7e77596e0b18/multidict-6.7.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9fe04da3f79387f450fd0061d4dd2e45a72749d31bf634aecc9e27f24fdc4b3f", size = 243411, upload-time = "2025-10-06T14:51:16.072Z" }, - { url = "https://files.pythonhosted.org/packages/4a/03/29a8bf5a18abf1fe34535c88adbdfa88c9fb869b5a3b120692c64abe8284/multidict-6.7.0-cp314-cp314-win32.whl", hash = "sha256:fbafe31d191dfa7c4c51f7a6149c9fb7e914dcf9ffead27dcfd9f1ae382b3885", size = 40940, upload-time = "2025-10-06T14:51:17.544Z" }, - { url = "https://files.pythonhosted.org/packages/82/16/7ed27b680791b939de138f906d5cf2b4657b0d45ca6f5dd6236fdddafb1a/multidict-6.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:2f67396ec0310764b9222a1728ced1ab638f61aadc6226f17a71dd9324f9a99c", size = 45087, upload-time = "2025-10-06T14:51:18.875Z" }, - { url = "https://files.pythonhosted.org/packages/cd/3c/e3e62eb35a1950292fe39315d3c89941e30a9d07d5d2df42965ab041da43/multidict-6.7.0-cp314-cp314-win_arm64.whl", hash = "sha256:ba672b26069957ee369cfa7fc180dde1fc6f176eaf1e6beaf61fbebbd3d9c000", size = 42368, upload-time = "2025-10-06T14:51:20.225Z" }, - { url = "https://files.pythonhosted.org/packages/8b/40/cd499bd0dbc5f1136726db3153042a735fffd0d77268e2ee20d5f33c010f/multidict-6.7.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:c1dcc7524066fa918c6a27d61444d4ee7900ec635779058571f70d042d86ed63", size = 82326, upload-time = "2025-10-06T14:51:21.588Z" }, - { url = "https://files.pythonhosted.org/packages/13/8a/18e031eca251c8df76daf0288e6790561806e439f5ce99a170b4af30676b/multidict-6.7.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:27e0b36c2d388dc7b6ced3406671b401e84ad7eb0656b8f3a2f46ed0ce483718", size = 48065, upload-time = "2025-10-06T14:51:22.93Z" }, - { url = "https://files.pythonhosted.org/packages/40/71/5e6701277470a87d234e433fb0a3a7deaf3bcd92566e421e7ae9776319de/multidict-6.7.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a7baa46a22e77f0988e3b23d4ede5513ebec1929e34ee9495be535662c0dfe2", size = 46475, upload-time = "2025-10-06T14:51:24.352Z" }, - { url = "https://files.pythonhosted.org/packages/fe/6a/bab00cbab6d9cfb57afe1663318f72ec28289ea03fd4e8236bb78429893a/multidict-6.7.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7bf77f54997a9166a2f5675d1201520586439424c2511723a7312bdb4bcc034e", size = 239324, upload-time = "2025-10-06T14:51:25.822Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5f/8de95f629fc22a7769ade8b41028e3e5a822c1f8904f618d175945a81ad3/multidict-6.7.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e011555abada53f1578d63389610ac8a5400fc70ce71156b0aa30d326f1a5064", size = 246877, upload-time = "2025-10-06T14:51:27.604Z" }, - { url = "https://files.pythonhosted.org/packages/23/b4/38881a960458f25b89e9f4a4fdcb02ac101cfa710190db6e5528841e67de/multidict-6.7.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:28b37063541b897fd6a318007373930a75ca6d6ac7c940dbe14731ffdd8d498e", size = 225824, upload-time = "2025-10-06T14:51:29.664Z" }, - { url = "https://files.pythonhosted.org/packages/1e/39/6566210c83f8a261575f18e7144736059f0c460b362e96e9cf797a24b8e7/multidict-6.7.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05047ada7a2fde2631a0ed706f1fd68b169a681dfe5e4cf0f8e4cb6618bbc2cd", size = 253558, upload-time = "2025-10-06T14:51:31.684Z" }, - { url = "https://files.pythonhosted.org/packages/00/a3/67f18315100f64c269f46e6c0319fa87ba68f0f64f2b8e7fd7c72b913a0b/multidict-6.7.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:716133f7d1d946a4e1b91b1756b23c088881e70ff180c24e864c26192ad7534a", size = 252339, upload-time = "2025-10-06T14:51:33.699Z" }, - { url = "https://files.pythonhosted.org/packages/c8/2a/1cb77266afee2458d82f50da41beba02159b1d6b1f7973afc9a1cad1499b/multidict-6.7.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1bed1b467ef657f2a0ae62844a607909ef1c6889562de5e1d505f74457d0b96", size = 244895, upload-time = "2025-10-06T14:51:36.189Z" }, - { url = "https://files.pythonhosted.org/packages/dd/72/09fa7dd487f119b2eb9524946ddd36e2067c08510576d43ff68469563b3b/multidict-6.7.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ca43bdfa5d37bd6aee89d85e1d0831fb86e25541be7e9d376ead1b28974f8e5e", size = 241862, upload-time = "2025-10-06T14:51:41.291Z" }, - { url = "https://files.pythonhosted.org/packages/65/92/bc1f8bd0853d8669300f732c801974dfc3702c3eeadae2f60cef54dc69d7/multidict-6.7.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:44b546bd3eb645fd26fb949e43c02a25a2e632e2ca21a35e2e132c8105dc8599", size = 232376, upload-time = "2025-10-06T14:51:43.55Z" }, - { url = "https://files.pythonhosted.org/packages/09/86/ac39399e5cb9d0c2ac8ef6e10a768e4d3bc933ac808d49c41f9dc23337eb/multidict-6.7.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:a6ef16328011d3f468e7ebc326f24c1445f001ca1dec335b2f8e66bed3006394", size = 240272, upload-time = "2025-10-06T14:51:45.265Z" }, - { url = "https://files.pythonhosted.org/packages/3d/b6/fed5ac6b8563ec72df6cb1ea8dac6d17f0a4a1f65045f66b6d3bf1497c02/multidict-6.7.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:5aa873cbc8e593d361ae65c68f85faadd755c3295ea2c12040ee146802f23b38", size = 248774, upload-time = "2025-10-06T14:51:46.836Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8d/b954d8c0dc132b68f760aefd45870978deec6818897389dace00fcde32ff/multidict-6.7.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:3d7b6ccce016e29df4b7ca819659f516f0bc7a4b3efa3bb2012ba06431b044f9", size = 242731, upload-time = "2025-10-06T14:51:48.541Z" }, - { url = "https://files.pythonhosted.org/packages/16/9d/a2dac7009125d3540c2f54e194829ea18ac53716c61b655d8ed300120b0f/multidict-6.7.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:171b73bd4ee683d307599b66793ac80981b06f069b62eea1c9e29c9241aa66b0", size = 240193, upload-time = "2025-10-06T14:51:50.355Z" }, - { url = "https://files.pythonhosted.org/packages/39/ca/c05f144128ea232ae2178b008d5011d4e2cea86e4ee8c85c2631b1b94802/multidict-6.7.0-cp314-cp314t-win32.whl", hash = "sha256:b2d7f80c4e1fd010b07cb26820aae86b7e73b681ee4889684fb8d2d4537aab13", size = 48023, upload-time = "2025-10-06T14:51:51.883Z" }, - { url = "https://files.pythonhosted.org/packages/ba/8f/0a60e501584145588be1af5cc829265701ba3c35a64aec8e07cbb71d39bb/multidict-6.7.0-cp314-cp314t-win_amd64.whl", hash = "sha256:09929cab6fcb68122776d575e03c6cc64ee0b8fca48d17e135474b042ce515cd", size = 53507, upload-time = "2025-10-06T14:51:53.672Z" }, - { url = "https://files.pythonhosted.org/packages/7f/ae/3148b988a9c6239903e786eac19c889fab607c31d6efa7fb2147e5680f23/multidict-6.7.0-cp314-cp314t-win_arm64.whl", hash = "sha256:cc41db090ed742f32bd2d2c721861725e6109681eddf835d0a82bd3a5c382827", size = 44804, upload-time = "2025-10-06T14:51:55.415Z" }, - { url = "https://files.pythonhosted.org/packages/b7/da/7d22601b625e241d4f23ef1ebff8acfc60da633c9e7e7922e24d10f592b3/multidict-6.7.0-py3-none-any.whl", hash = "sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3", size = 12317, upload-time = "2025-10-06T14:52:29.272Z" }, -] - -[[package]] -name = "narwhals" -version = "2.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/6d/b57c64e5038a8cf071bce391bb11551657a74558877ac961e7fa905ece27/narwhals-2.15.0.tar.gz", hash = "sha256:a9585975b99d95084268445a1fdd881311fa26ef1caa18020d959d5b2ff9a965", size = 603479, upload-time = "2026-01-06T08:10:13.27Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/2e/cf2ffeb386ac3763526151163ad7da9f1b586aac96d2b4f7de1eaebf0c61/narwhals-2.15.0-py3-none-any.whl", hash = "sha256:cbfe21ca19d260d9fd67f995ec75c44592d1f106933b03ddd375df7ac841f9d6", size = 432856, upload-time = "2026-01-06T08:10:11.511Z" }, -] - -[[package]] -name = "natsort" -version = "8.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c" }, -] - -[[package]] -name = "nbformat" -version = "5.10.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastjsonschema" }, - { name = "jsonschema" }, - { name = "jupyter-core" }, - { name = "traitlets" }, +name = "mypy" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ast-serialize" }, + { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/15/cca9d88503549ed6fedeaa1d448cdddd542ee8a490232d732e278036fbf2/mypy-2.1.0.tar.gz", hash = "sha256:81e76ad12c2d804512e9b13240d1588316531bfba07558286078bfbce9613633", size = 3898359, upload-time = "2026-05-11T18:37:36.237Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/b1/55861beb5c339b44f9a2ba92df9e2cb1eeb4ae1eee674cdf7772c797778b/mypy-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:244358bf1c0da7722230bce60683d52e8e9fd030554926f15b747a84efb5b3af", size = 14874381, upload-time = "2026-05-11T18:37:31.784Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b3/b7f770114b7d0ac92d0f76e8d93c2780844a70488a90e91821927850da86/mypy-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4ec7c57657493c7a75534df2751c8ae2cda383c16ecc55d2106c54476b1b16f6", size = 13665501, upload-time = "2026-05-11T18:34:23.063Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f3/8ae2037967e2126689a0c11d99e2b707134a565191e92c60ca2572aec60a/mypy-2.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8161b6ff4392410023224f0969d17db93e1e154bc3e4ba62598e720723ae211", size = 14045750, upload-time = "2026-05-11T18:31:48.151Z" }, + { url = "https://files.pythonhosted.org/packages/a0/32/615eb5911859e43d054941b0d0a7d06cfa2870eba86529cf385b052b111c/mypy-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf03e12003084a67395184d3eb8cbd6a489dc3655b5664b28c210a9e2403ab0b", size = 15061630, upload-time = "2026-05-11T18:37:06.898Z" }, + { url = "https://files.pythonhosted.org/packages/d4/03/4eafbfff8bfab1b87082741eae6e6a624028c984e6708b73bce2a8570c9d/mypy-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:20509760fd791c51579d573153407d226385ec1f8bcce55d730b354f3336bc22", size = 15288831, upload-time = "2026-05-11T18:31:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/919661478e5891a3c96e549c036e467e64563ab85995b10c53c8358e16a3/mypy-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:6753d0c1fdd6b1a23b9e4f283ce80b2153b724adcb2653b20b85a8a28ac6436b", size = 11135228, upload-time = "2026-05-11T18:34:31.23Z" }, + { url = "https://files.pythonhosted.org/packages/24/0a/6a12b9782ca0831a553192f351679f4548abc9d19a7cc93bb7feb02084c7/mypy-2.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:98ebb6589bb3b6d0c6f0c459d53ca55b8091fbc13d277c4041c885392e8195e8", size = 10040684, upload-time = "2026-05-11T18:36:48.199Z" }, + { url = "https://files.pythonhosted.org/packages/6e/dd/c7191469c777f07689c032a8f7326e393ea34c92d6d76eb7ce5ba57ea66d/mypy-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35aac3bb114e03888f535d5eb51b8bafbb3266586b599da1940f9b1be3ec5bd5", size = 14852174, upload-time = "2026-05-11T18:31:38.929Z" }, + { url = "https://files.pythonhosted.org/packages/55/8c/aed55408879043d72bb9135f4d0d19a02b886dd569631e113e3d2706cb8d/mypy-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8de55a8c861f2a49331f807be98d90caeceeef520bde13d43a160207f8af613e", size = 13651542, upload-time = "2026-05-11T18:36:04.636Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8e/f371a824b1f1fa8ea6e3dbb8703d232977d572be2329554a3bc4d960302f/mypy-2.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fdf2941a07434af755837d9880f7d7d25f1dacb1af9dcd4b9b66f2220a3024e", size = 14033929, upload-time = "2026-05-11T18:35:55.742Z" }, + { url = "https://files.pythonhosted.org/packages/94/21/f54be870d6dd53a82c674407e0f8eed7174b05ec78d42e5abd7b42e84fd5/mypy-2.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e195b817c13f02352a9c124301f9f30f078405444679b6753c1b96b6eed37285", size = 15039200, upload-time = "2026-05-11T18:33:10.281Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/bf21748626a40ce59fd29a39386ab46afec88b7bd2f0fa6c3a97c995523f/mypy-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5431d42af987ebd92ba2f71d45c85ed41d8e6ca9f5fd209a69f68f707d2469e5", size = 15272690, upload-time = "2026-05-11T18:32:07.205Z" }, + { url = "https://files.pythonhosted.org/packages/d6/d7/9e90d2cf47100bea550ed2bc7b0d4de3a62181d84d5e37da0003e8462637/mypy-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:767fe8c66dc3e01e19e1737d4c38ebefead16125e1b8e58ad421903b376f5c65", size = 11147435, upload-time = "2026-05-11T18:33:56.477Z" }, + { url = "https://files.pythonhosted.org/packages/ec/46/e5c449e858798e35ffc90946282a27c62a77be743fe17480e4977374eb91/mypy-2.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:ecfe70d43775ab99562ab128ce49854a362044c9f894961f68f898c23cb7429d", size = 10035052, upload-time = "2026-05-11T18:32:30.049Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ca/b279a672e874aedd5498ae25f722dacc8aa86bbffb939b3f97cbb1cf6686/mypy-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:7354c5a7f69d9345c3d6e69921d57088eea3ddeeb6b20d34c1b3855b02c36ec2", size = 14848422, upload-time = "2026-05-11T18:35:45.984Z" }, + { url = "https://files.pythonhosted.org/packages/27/e6/3efe56c631d959b9b4454e208b0ac4b7f4f58b404c89f8bec7b49efdfc21/mypy-2.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:49890d4f76ac9e06ec117f9e09f3174da70a620a0c300953d8595c926e80947f", size = 13677374, upload-time = "2026-05-11T18:36:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/84/7f/8107ea87a44fd1f1b59882442f033c9c3488c127201b1d1d15f1cbd6022e/mypy-2.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:761be68e023ef5d94678772396a8af1220030f80837a3afd8d0aef3b419666f4", size = 14055743, upload-time = "2026-05-11T18:35:18.361Z" }, + { url = "https://files.pythonhosted.org/packages/51/4d/b6d34db183133b83761b9199a82d31557cdbb70a380d8c3b3438e11882a3/mypy-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c90345fc182dc363b891350457ec69c35140858538f38b4540845afcc32b1aef", size = 15020937, upload-time = "2026-05-11T18:34:59.618Z" }, + { url = "https://files.pythonhosted.org/packages/ff/d7/f08360c691d758acb02f45022c34d98b92892f4ea756644e1000d4b9f3d8/mypy-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b84802e7b5a6daf1f5e15bc9fcd7ddae77be13981ffab037f1c67bb84d67d135", size = 15253371, upload-time = "2026-05-11T18:36:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/67/1b/09460a13719530a19bce27bd3bc8449e83569dd2ba7faf51c9c3c30c0b61/mypy-2.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:022c771234936ceac541ebaf836fe9e2abeb3f5e09aff21588fe543ff006fe21", size = 11326429, upload-time = "2026-05-11T18:34:13.526Z" }, + { url = "https://files.pythonhosted.org/packages/40/62/75dbf0f82f7b6680340efc614af29dd0b3c17b8a4f1cd09b8bd2fd6bc814/mypy-2.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:498207db725cec88829a6a5c2fc771205fd043719ef98bc49aba8fb9fc4e6d57", size = 10218799, upload-time = "2026-05-11T18:32:23.491Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/caca04ed7d972fb6eb6dd1ccd6df1de5c38fae8c5b3dc1c4e8e0d85ee6b9/mypy-2.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d5e5cad0efeba72b93cd17490cc0d69c5ac9ca132994fe3fb0314808aeeb83e", size = 15923458, upload-time = "2026-05-11T18:35:28.64Z" }, + { url = "https://files.pythonhosted.org/packages/ed/52/2d90cbe49d014b13ed7ff337930c30bad35893fe38a1e4641e756bb62191/mypy-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ff715050c127d724fd260a2e666e7747fdd83511c0c47d449d98238970aef780", size = 14757697, upload-time = "2026-05-11T18:36:14.208Z" }, + { url = "https://files.pythonhosted.org/packages/ac/37/d98f4a14e081b238992d0ed96b6d39c7cc0148c9699eb71eaa68629665ea/mypy-2.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82208da9e09414d520e912d3e462d454854bed0810b71540bb016dcbca7308fd", size = 15405638, upload-time = "2026-05-11T18:33:48.249Z" }, + { url = "https://files.pythonhosted.org/packages/a3/c2/15c46613b24a84fad2aea1248bf9619b99c2767ae9071fe224c179a0b7d4/mypy-2.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e79ebc1b904b84f0310dff7469655a9c36c7a68bddb37bdd42b67a332df61d08", size = 16215852, upload-time = "2026-05-11T18:32:50.296Z" }, + { url = "https://files.pythonhosted.org/packages/5c/90/9c16a57f482c76d25f6379762b56bbf65c711d8158cf271fb2802cfb0640/mypy-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e583edc957cfb0deb142079162ae826f58449b116c1d442f2d91c69d9fced081", size = 16452695, upload-time = "2026-05-11T18:33:38.182Z" }, + { url = "https://files.pythonhosted.org/packages/0f/4c/215a4eeb63cacc5f17f516691ea7285d11e249802b942476bff15922a314/mypy-2.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b33b6cd332695bba180d55e717a79d3038e479a2c49cc5eb3d53603409b9a5d7", size = 12866622, upload-time = "2026-05-11T18:34:39.945Z" }, + { url = "https://files.pythonhosted.org/packages/4b/50/1043e1db5f455ffe4c9ab22747cd8ca2bc492b1e4f4e21b130a44ee2b217/mypy-2.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:4f910fe825376a7b66ef7ca8c98e5a149e8cd64c19ae71d84047a74ee060d4e6", size = 10610798, upload-time = "2026-05-11T18:36:31.444Z" }, + { url = "https://files.pythonhosted.org/packages/0d/2a/13ca1f292f6db1b98ff495ef3467736b331621c5917cad984b7043e7348d/mypy-2.1.0-py3-none-any.whl", hash = "sha256:a663814603a5c563fb87a4f96fb473eeb30d1f5a4885afcf44f9db000a366289", size = 2693302, upload-time = "2026-05-11T18:31:29.246Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] [[package]] @@ -4016,96 +2974,127 @@ wheels = [ [[package]] name = "nh3" -version = "0.3.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/a5/34c26015d3a434409f4d2a1cd8821a06c05238703f49283ffeb937bef093/nh3-0.3.2.tar.gz", hash = "sha256:f394759a06df8b685a4ebfb1874fb67a9cbfd58c64fc5ed587a663c0e63ec376", size = 19288, upload-time = "2025-10-30T11:17:45.948Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/01/a1eda067c0ba823e5e2bb033864ae4854549e49fb6f3407d2da949106bfb/nh3-0.3.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d18957a90806d943d141cc5e4a0fefa1d77cf0d7a156878bf9a66eed52c9cc7d", size = 1419839, upload-time = "2025-10-30T11:17:09.956Z" }, - { url = "https://files.pythonhosted.org/packages/30/57/07826ff65d59e7e9cc789ef1dc405f660cabd7458a1864ab58aefa17411b/nh3-0.3.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45c953e57028c31d473d6b648552d9cab1efe20a42ad139d78e11d8f42a36130", size = 791183, upload-time = "2025-10-30T11:17:11.99Z" }, - { url = "https://files.pythonhosted.org/packages/af/2f/e8a86f861ad83f3bb5455f596d5c802e34fcdb8c53a489083a70fd301333/nh3-0.3.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c9850041b77a9147d6bbd6dbbf13eeec7009eb60b44e83f07fcb2910075bf9b", size = 829127, upload-time = "2025-10-30T11:17:13.192Z" }, - { url = "https://files.pythonhosted.org/packages/d8/97/77aef4daf0479754e8e90c7f8f48f3b7b8725a3b8c0df45f2258017a6895/nh3-0.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:403c11563e50b915d0efdb622866d1d9e4506bce590ef7da57789bf71dd148b5", size = 997131, upload-time = "2025-10-30T11:17:14.677Z" }, - { url = "https://files.pythonhosted.org/packages/41/ee/fd8140e4df9d52143e89951dd0d797f5546004c6043285289fbbe3112293/nh3-0.3.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0dca4365db62b2d71ff1620ee4f800c4729849906c5dd504ee1a7b2389558e31", size = 1068783, upload-time = "2025-10-30T11:17:15.861Z" }, - { url = "https://files.pythonhosted.org/packages/87/64/bdd9631779e2d588b08391f7555828f352e7f6427889daf2fa424bfc90c9/nh3-0.3.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0fe7ee035dd7b2290715baf29cb27167dddd2ff70ea7d052c958dbd80d323c99", size = 994732, upload-time = "2025-10-30T11:17:17.155Z" }, - { url = "https://files.pythonhosted.org/packages/79/66/90190033654f1f28ca98e3d76b8be1194505583f9426b0dcde782a3970a2/nh3-0.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a40202fd58e49129764f025bbaae77028e420f1d5b3c8e6f6fd3a6490d513868", size = 975997, upload-time = "2025-10-30T11:17:18.77Z" }, - { url = "https://files.pythonhosted.org/packages/34/30/ebf8e2e8d71fdb5a5d5d8836207177aed1682df819cbde7f42f16898946c/nh3-0.3.2-cp314-cp314t-win32.whl", hash = "sha256:1f9ba555a797dbdcd844b89523f29cdc90973d8bd2e836ea6b962cf567cadd93", size = 583364, upload-time = "2025-10-30T11:17:20.286Z" }, - { url = "https://files.pythonhosted.org/packages/94/ae/95c52b5a75da429f11ca8902c2128f64daafdc77758d370e4cc310ecda55/nh3-0.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:dce4248edc427c9b79261f3e6e2b3ecbdd9b88c267012168b4a7b3fc6fd41d13", size = 589982, upload-time = "2025-10-30T11:17:21.384Z" }, - { url = "https://files.pythonhosted.org/packages/b4/bd/c7d862a4381b95f2469704de32c0ad419def0f4a84b7a138a79532238114/nh3-0.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:019ecbd007536b67fdf76fab411b648fb64e2257ca3262ec80c3425c24028c80", size = 577126, upload-time = "2025-10-30T11:17:22.755Z" }, - { url = "https://files.pythonhosted.org/packages/b6/3e/f5a5cc2885c24be13e9b937441bd16a012ac34a657fe05e58927e8af8b7a/nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7064ccf5ace75825bd7bf57859daaaf16ed28660c1c6b306b649a9eda4b54b1e", size = 1431980, upload-time = "2025-10-30T11:17:25.457Z" }, - { url = "https://files.pythonhosted.org/packages/7f/f7/529a99324d7ef055de88b690858f4189379708abae92ace799365a797b7f/nh3-0.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8745454cdd28bbbc90861b80a0111a195b0e3961b9fa2e672be89eb199fa5d8", size = 820805, upload-time = "2025-10-30T11:17:26.98Z" }, - { url = "https://files.pythonhosted.org/packages/3d/62/19b7c50ccd1fa7d0764822d2cea8f2a320f2fd77474c7a1805cb22cf69b0/nh3-0.3.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72d67c25a84579f4a432c065e8b4274e53b7cf1df8f792cf846abfe2c3090866", size = 803527, upload-time = "2025-10-30T11:17:28.284Z" }, - { url = "https://files.pythonhosted.org/packages/4a/ca/f022273bab5440abff6302731a49410c5ef66b1a9502ba3fbb2df998d9ff/nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:13398e676a14d6233f372c75f52d5ae74f98210172991f7a3142a736bd92b131", size = 1051674, upload-time = "2025-10-30T11:17:29.909Z" }, - { url = "https://files.pythonhosted.org/packages/fa/f7/5728e3b32a11daf5bd21cf71d91c463f74305938bc3eb9e0ac1ce141646e/nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03d617e5c8aa7331bd2659c654e021caf9bba704b109e7b2b28b039a00949fe5", size = 1004737, upload-time = "2025-10-30T11:17:31.205Z" }, - { url = "https://files.pythonhosted.org/packages/53/7f/f17e0dba0a99cee29e6cee6d4d52340ef9cb1f8a06946d3a01eb7ec2fb01/nh3-0.3.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f55c4d2d5a207e74eefe4d828067bbb01300e06e2a7436142f915c5928de07", size = 911745, upload-time = "2025-10-30T11:17:32.945Z" }, - { url = "https://files.pythonhosted.org/packages/42/0f/c76bf3dba22c73c38e9b1113b017cf163f7696f50e003404ec5ecdb1e8a6/nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb18403f02b655a1bbe4e3a4696c2ae1d6ae8f5991f7cacb684b1ae27e6c9f7", size = 797184, upload-time = "2025-10-30T11:17:34.226Z" }, - { url = "https://files.pythonhosted.org/packages/08/a1/73d8250f888fb0ddf1b119b139c382f8903d8bb0c5bd1f64afc7e38dad1d/nh3-0.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d66f41672eb4060cf87c037f760bdbc6847852ca9ef8e9c5a5da18f090abf87", size = 838556, upload-time = "2025-10-30T11:17:35.875Z" }, - { url = "https://files.pythonhosted.org/packages/d1/09/deb57f1fb656a7a5192497f4a287b0ade5a2ff6b5d5de4736d13ef6d2c1f/nh3-0.3.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f97f8b25cb2681d25e2338148159447e4d689aafdccfcf19e61ff7db3905768a", size = 1006695, upload-time = "2025-10-30T11:17:37.071Z" }, - { url = "https://files.pythonhosted.org/packages/b6/61/8f4d41c4ccdac30e4b1a4fa7be4b0f9914d8314a5058472f84c8e101a418/nh3-0.3.2-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:2ab70e8c6c7d2ce953d2a58102eefa90c2d0a5ed7aa40c7e29a487bc5e613131", size = 1075471, upload-time = "2025-10-30T11:17:38.225Z" }, - { url = "https://files.pythonhosted.org/packages/b0/c6/966aec0cb4705e69f6c3580422c239205d5d4d0e50fac380b21e87b6cf1b/nh3-0.3.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:1710f3901cd6440ca92494ba2eb6dc260f829fa8d9196b659fa10de825610ce0", size = 1002439, upload-time = "2025-10-30T11:17:39.553Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c8/97a2d5f7a314cce2c5c49f30c6f161b7f3617960ade4bfc2fd1ee092cb20/nh3-0.3.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91e9b001101fb4500a2aafe3e7c92928d85242d38bf5ac0aba0b7480da0a4cd6", size = 987439, upload-time = "2025-10-30T11:17:40.81Z" }, - { url = "https://files.pythonhosted.org/packages/0d/95/2d6fc6461687d7a171f087995247dec33e8749a562bfadd85fb5dbf37a11/nh3-0.3.2-cp38-abi3-win32.whl", hash = "sha256:169db03df90da63286e0560ea0efa9b6f3b59844a9735514a1d47e6bb2c8c61b", size = 589826, upload-time = "2025-10-30T11:17:42.239Z" }, - { url = "https://files.pythonhosted.org/packages/64/9a/1a1c154f10a575d20dd634e5697805e589bbdb7673a0ad00e8da90044ba7/nh3-0.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:562da3dca7a17f9077593214a9781a94b8d76de4f158f8c895e62f09573945fe", size = 596406, upload-time = "2025-10-30T11:17:43.773Z" }, - { url = "https://files.pythonhosted.org/packages/9e/7e/a96255f63b7aef032cbee8fc4d6e37def72e3aaedc1f72759235e8f13cb1/nh3-0.3.2-cp38-abi3-win_arm64.whl", hash = "sha256:cf5964d54edd405e68583114a7cba929468bcd7db5e676ae38ee954de1cfc104", size = 584162, upload-time = "2025-10-30T11:17:44.96Z" }, +version = "0.3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/5f/1d19bdc7d27238e37f3672cdc02cb77c56a4a86d140cd4f4f23c90df6e16/nh3-0.3.5.tar.gz", hash = "sha256:45855e14ff056064fec77133bfcf7cd691838168e5e17bbef075394954dc9dc8", size = 20743, upload-time = "2026-04-25T10:44:16.066Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/b0/8587ac42a9627ab88e7e221601f1dfccbf4db80b2a29222ea63266dc9abc/nh3-0.3.5-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:23a312224875f72cd16bde417f49071451877e29ef646a60e50fcb69407cc18a", size = 1420126, upload-time = "2026-04-25T10:43:39.834Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1b/1dbc4d0c43f12e8c1784ede17eaee6f061d4fbe5505757c65c49b2ceab95/nh3-0.3.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:387abd011e81959d5a35151a11350a0795c6edeb53ebfa02d2e882dc01299263", size = 793943, upload-time = "2026-04-25T10:43:41.363Z" }, + { url = "https://files.pythonhosted.org/packages/47/9f/d6758d7a14ee964bf439cc35ae4fa24a763a93399c8ef6f22bd11d532d29/nh3-0.3.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48f45e3e914be93a596431aa143dedf1582557bf41a58153c296048d6e3798c9", size = 841150, upload-time = "2026-04-25T10:43:43.007Z" }, + { url = "https://files.pythonhosted.org/packages/b6/36/d5d1ae8374612c98f390e1ea7c610fa6c9716259a03bbf4d15b269f40073/nh3-0.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0a09f51806fd51b4fedbf9ea2b61fef388f19aef0d62fe51199d41648be14588", size = 1008415, upload-time = "2026-04-25T10:43:44.324Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8f/d13a9c3fd2d9c131a2a281737380e9379eb0f8c33fea24c2b923aaafbb15/nh3-0.3.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c357f1d042c67f135a5e6babb2b0e3b9d9224ff4a3543240f597767b01384ffd", size = 1092706, upload-time = "2026-04-25T10:43:45.653Z" }, + { url = "https://files.pythonhosted.org/packages/bb/57/2f3add7f8680fcc896afa6a675cb2bab09982853ee8af40bad621f6b61c4/nh3-0.3.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:38748140bf76383ab7ce2dce0ad4cb663855d8fbc9098f7f3483673d09616a17", size = 1048346, upload-time = "2026-04-25T10:43:46.974Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c3/2f9e4ffa82863074d1361bfe949bc46393d91b3411579dfbbd090b24cac5/nh3-0.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:84bdeb082544fbcb77a12c034dd77d7da0556fdc0727b787eb6214b958c15e29", size = 1029038, upload-time = "2026-04-25T10:43:48.569Z" }, + { url = "https://files.pythonhosted.org/packages/e8/10/2804deb3f3315184c9cae41702e293c87524b5a21f766b07d7fe3ffbcfbb/nh3-0.3.5-cp314-cp314t-win32.whl", hash = "sha256:c3aae321f67ae66cff2a627115f106a377d4475d10b0e13d97959a13486b9a88", size = 603263, upload-time = "2026-04-25T10:43:49.851Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/f6685248b49f7548fc9a8c335ab3a52f68610b72e8a61576447151e4e2e6/nh3-0.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c88605d8d468f7fc1b31e06129bc91d6c96f6c621776c9b504a0da9beac9df5f", size = 616866, upload-time = "2026-04-25T10:43:51.005Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/d8c9018635d4acfefde6b68470daa510eed715a350cbaa2f928ba0609f81/nh3-0.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:72c5bdedec27fa33de6a5326346ea8aa3fe54f6ac294d54c4b204fb66a9f1e79", size = 602566, upload-time = "2026-04-25T10:43:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/d162e99746a2fb1d98bb0ef23af3e201b156cf09f7de867c7390c8fe1c06/nh3-0.3.5-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3bb854485c9b33e5bb143ff3e49e577073bc6bc320f0ff8fc316dd89c0d3c101", size = 1442393, upload-time = "2026-04-25T10:43:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/25/8c/072120d506978ab053e1732d0efa7c86cb478fee0ee098fda0ac0d31cb34/nh3-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d401ab2d8e86d59e2126e3ab2a2f45840c405842b626d9a51624b3a33b6878", size = 837722, upload-time = "2026-04-25T10:43:55.073Z" }, + { url = "https://files.pythonhosted.org/packages/52/86/d4e06e28c5ad1c4b065f89737d02631bd49f1660b6ebcf17a87ffcd201da/nh3-0.3.5-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acfd354e61accbe4c74f8017c6e397a776916dfe47c48643cf7fd84ade826f93", size = 822872, upload-time = "2026-04-25T10:43:56.581Z" }, + { url = "https://files.pythonhosted.org/packages/0a/62/50659255213f241ec5797ae7427464c969397373e83b3659372b341ae869/nh3-0.3.5-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:52d877980d7ca01dc3baf3936bf844828bc6f332962227a684ed79c18cce14c3", size = 1100031, upload-time = "2026-04-25T10:43:58.098Z" }, + { url = "https://files.pythonhosted.org/packages/00/7a/a12ae77593b2fcf3be25df7bc1c01967d0de448bdb4b6c7ec80fe4f5a74f/nh3-0.3.5-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:207c01801d3e9bb8ec08f08689346bdd30ce15b8bf60013a925d08b5388962a4", size = 1057669, upload-time = "2026-04-25T10:43:59.328Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/5647dc04c0233192a3956fc91708822b21403a06508cacf78083c68e7bf0/nh3-0.3.5-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea232933394d1d58bf7c4bb348dc4660eae6604e1ae81cd2ba6d9ed80d390f3b", size = 914795, upload-time = "2026-04-25T10:44:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/1b/0e/bf298920729f216adcb002acf7ea01b90842603d2e4e2ce9b900d9ee8fab/nh3-0.3.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3a787dc76b50de6bee54ef242f26c41dfe47654428e3e94f0fae5bb6dd2cc1", size = 806976, upload-time = "2026-04-25T10:44:01.743Z" }, + { url = "https://files.pythonhosted.org/packages/85/01/26761e1dc2b848e65a62c19e5d39ad446283287cd4afddc89f364ab86bc9/nh3-0.3.5-cp38-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:488928988caad25ba14b1eb5bc74e25e21f3b5e40341d956f3ce4a8bc19460dc", size = 834904, upload-time = "2026-04-25T10:44:03.454Z" }, + { url = "https://files.pythonhosted.org/packages/33/53/0766113e679540ac1edc1b82b1295aecd321eeb75d6fead70109a838b6ee/nh3-0.3.5-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c069570b06aa848457713ad7af4a9905691291548c4466a9ad78ee95808382b", size = 857159, upload-time = "2026-04-25T10:44:05.003Z" }, + { url = "https://files.pythonhosted.org/packages/58/36/734d353dfaf292fed574b8b3092f0ef79dc6404f3879f7faaa61a4701fad/nh3-0.3.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:eeedc90ed8c42c327e8e10e621ccfa314fc6cce35d5929f4297ff1cdb89667c4", size = 1018600, upload-time = "2026-04-25T10:44:06.18Z" }, + { url = "https://files.pythonhosted.org/packages/6b/aa/d9c59c1b49669fcb7bababa55df82385f029ad5c2651f583c3a1141cfdd1/nh3-0.3.5-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:de8e8621853b6470fe928c684ee0d3f39ea8086cebafe4c416486488dea7b68d", size = 1103530, upload-time = "2026-04-25T10:44:07.68Z" }, + { url = "https://files.pythonhosted.org/packages/90/b0/cdd210bfb8d9d43fb02fc3c868336b9955934d8e15e66eb1d15a147b8af0/nh3-0.3.5-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:6ea58cc44d274c643b83547ca9654a0b1a817609b160601356f76a2b744c49ad", size = 1061754, upload-time = "2026-04-25T10:44:09.362Z" }, + { url = "https://files.pythonhosted.org/packages/ce/cb/7a39e72e668c8445bdd95e494b3e21cfdddc68329be8ea3522c8befb46c4/nh3-0.3.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e49c9b564e6bcb03ecd2f057213df9a0de15a95812ac9db9600b590db23d3ae9", size = 1040938, upload-time = "2026-04-25T10:44:10.775Z" }, + { url = "https://files.pythonhosted.org/packages/af/4c/fc2f9ed208a3801a319f59b5fea03cdc20cf3bd8af14be930d3a8de01224/nh3-0.3.5-cp38-abi3-win32.whl", hash = "sha256:559e4c73b689e9a7aa97ac9760b1bc488038d7c1a575aa4ab5a0e19ee9630c0f", size = 611445, upload-time = "2026-04-25T10:44:12.317Z" }, + { url = "https://files.pythonhosted.org/packages/db/1a/e4c9b5e2ae13e6092c9ec16d8ca30646cb01fcdea245f36c5b08fd21fbd5/nh3-0.3.5-cp38-abi3-win_amd64.whl", hash = "sha256:45e6a65dc88a300a2e3502cb9c8e6d1d6b831d6fba7470643333609c6aab1f30", size = 626502, upload-time = "2026-04-25T10:44:13.682Z" }, + { url = "https://files.pythonhosted.org/packages/80/7c/19cd0671d1ba2762fb388fc149697d20d0568ccfeef833b11280a619e526/nh3-0.3.5-cp38-abi3-win_arm64.whl", hash = "sha256:8f85285700a18e9f3fc5bff41fe573fa84f81542ef13b48a89f9fecca0474d3b", size = 611069, upload-time = "2026-04-25T10:44:14.934Z" }, +] + +[[package]] +name = "nox" +version = "2026.4.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argcomplete" }, + { name = "attrs" }, + { name = "colorlog" }, + { name = "dependency-groups" }, + { name = "humanize" }, + { name = "packaging" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/6b/e672c862a43cfca704d32359221fa3780226daa1e5db5dfc401bcc8be9c9/nox-2026.4.10.tar.gz", hash = "sha256:2d0af5374f3f37a295428c927d1b04a8182aa01762897d172446dda2f1ce9692", size = 4034839, upload-time = "2026-04-10T17:42:42.209Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/95/4df134a100b5a9a12378d5301b934366686ef6fbdaffcd21211d5654970e/nox-2026.4.10-py3-none-any.whl", hash = "sha256:082c117627590d9b90aa21f86df89b310b07c5842539524203bcb3c719f116c1", size = 75536, upload-time = "2026-04-10T17:42:40.664Z" }, ] [[package]] -name = "numpy" -version = "2.4.1" +name = "nox-uv" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/62/ae72ff66c0f1fd959925b4c11f8c2dea61f47f6acaea75a08512cdfe3fed/numpy-2.4.1.tar.gz", hash = "sha256:a1ceafc5042451a858231588a104093474c6a5c57dcc724841f5c888d237d690", size = 20721320, upload-time = "2026-01-10T06:44:59.619Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/7f/ec53e32bf10c813604edf07a3682616bd931d026fcde7b6d13195dfb684a/numpy-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d3703409aac693fa82c0aee023a1ae06a6e9d065dba10f5e8e80f642f1e9d0a2", size = 16656888, upload-time = "2026-01-10T06:42:40.913Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e0/1f9585d7dae8f14864e948fd7fa86c6cb72dee2676ca2748e63b1c5acfe0/numpy-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7211b95ca365519d3596a1d8688a95874cc94219d417504d9ecb2df99fa7bfa8", size = 12373956, upload-time = "2026-01-10T06:42:43.091Z" }, - { url = "https://files.pythonhosted.org/packages/8e/43/9762e88909ff2326f5e7536fa8cb3c49fb03a7d92705f23e6e7f553d9cb3/numpy-2.4.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5adf01965456a664fc727ed69cc71848f28d063217c63e1a0e200a118d5eec9a", size = 5202567, upload-time = "2026-01-10T06:42:45.107Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ee/34b7930eb61e79feb4478800a4b95b46566969d837546aa7c034c742ef98/numpy-2.4.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26f0bcd9c79a00e339565b303badc74d3ea2bd6d52191eeca5f95936cad107d0", size = 6549459, upload-time = "2026-01-10T06:42:48.152Z" }, - { url = "https://files.pythonhosted.org/packages/79/e3/5f115fae982565771be994867c89bcd8d7208dbfe9469185497d70de5ddf/numpy-2.4.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0093e85df2960d7e4049664b26afc58b03236e967fb942354deef3208857a04c", size = 14404859, upload-time = "2026-01-10T06:42:49.947Z" }, - { url = "https://files.pythonhosted.org/packages/d9/7d/9c8a781c88933725445a859cac5d01b5871588a15969ee6aeb618ba99eee/numpy-2.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad270f438cbdd402c364980317fb6b117d9ec5e226fff5b4148dd9aa9fc6e02", size = 16371419, upload-time = "2026-01-10T06:42:52.409Z" }, - { url = "https://files.pythonhosted.org/packages/a6/d2/8aa084818554543f17cf4162c42f162acbd3bb42688aefdba6628a859f77/numpy-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:297c72b1b98100c2e8f873d5d35fb551fce7040ade83d67dd51d38c8d42a2162", size = 16182131, upload-time = "2026-01-10T06:42:54.694Z" }, - { url = "https://files.pythonhosted.org/packages/60/db/0425216684297c58a8df35f3284ef56ec4a043e6d283f8a59c53562caf1b/numpy-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf6470d91d34bf669f61d515499859fa7a4c2f7c36434afb70e82df7217933f9", size = 18295342, upload-time = "2026-01-10T06:42:56.991Z" }, - { url = "https://files.pythonhosted.org/packages/31/4c/14cb9d86240bd8c386c881bafbe43f001284b7cce3bc01623ac9475da163/numpy-2.4.1-cp312-cp312-win32.whl", hash = "sha256:b6bcf39112e956594b3331316d90c90c90fb961e39696bda97b89462f5f3943f", size = 5959015, upload-time = "2026-01-10T06:42:59.631Z" }, - { url = "https://files.pythonhosted.org/packages/51/cf/52a703dbeb0c65807540d29699fef5fda073434ff61846a564d5c296420f/numpy-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:e1a27bb1b2dee45a2a53f5ca6ff2d1a7f135287883a1689e930d44d1ff296c87", size = 12310730, upload-time = "2026-01-10T06:43:01.627Z" }, - { url = "https://files.pythonhosted.org/packages/69/80/a828b2d0ade5e74a9fe0f4e0a17c30fdc26232ad2bc8c9f8b3197cf7cf18/numpy-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:0e6e8f9d9ecf95399982019c01223dc130542960a12edfa8edd1122dfa66a8a8", size = 10312166, upload-time = "2026-01-10T06:43:03.673Z" }, - { url = "https://files.pythonhosted.org/packages/04/68/732d4b7811c00775f3bd522a21e8dd5a23f77eb11acdeb663e4a4ebf0ef4/numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b", size = 16652495, upload-time = "2026-01-10T06:43:06.283Z" }, - { url = "https://files.pythonhosted.org/packages/20/ca/857722353421a27f1465652b2c66813eeeccea9d76d5f7b74b99f298e60e/numpy-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c55962006156aeef1629b953fd359064aa47e4d82cfc8e67f0918f7da3344f", size = 12368657, upload-time = "2026-01-10T06:43:09.094Z" }, - { url = "https://files.pythonhosted.org/packages/81/0d/2377c917513449cc6240031a79d30eb9a163d32a91e79e0da47c43f2c0c8/numpy-2.4.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:71abbea030f2cfc3092a0ff9f8c8fdefdc5e0bf7d9d9c99663538bb0ecdac0b9", size = 5197256, upload-time = "2026-01-10T06:43:13.634Z" }, - { url = "https://files.pythonhosted.org/packages/17/39/569452228de3f5de9064ac75137082c6214be1f5c532016549a7923ab4b5/numpy-2.4.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b55aa56165b17aaf15520beb9cbd33c9039810e0d9643dd4379e44294c7303e", size = 6545212, upload-time = "2026-01-10T06:43:15.661Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a4/77333f4d1e4dac4395385482557aeecf4826e6ff517e32ca48e1dafbe42a/numpy-2.4.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0faba4a331195bfa96f93dd9dfaa10b2c7aa8cda3a02b7fd635e588fe821bf5", size = 14402871, upload-time = "2026-01-10T06:43:17.324Z" }, - { url = "https://files.pythonhosted.org/packages/ba/87/d341e519956273b39d8d47969dd1eaa1af740615394fe67d06f1efa68773/numpy-2.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8", size = 16359305, upload-time = "2026-01-10T06:43:19.376Z" }, - { url = "https://files.pythonhosted.org/packages/32/91/789132c6666288eaa20ae8066bb99eba1939362e8f1a534949a215246e97/numpy-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:49e792ec351315e16da54b543db06ca8a86985ab682602d90c60ef4ff4db2a9c", size = 16181909, upload-time = "2026-01-10T06:43:21.808Z" }, - { url = "https://files.pythonhosted.org/packages/cf/b8/090b8bd27b82a844bb22ff8fdf7935cb1980b48d6e439ae116f53cdc2143/numpy-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e9e06c4c2379db47f3f6fc7a8652e7498251789bf8ff5bd43bf478ef314ca2", size = 18284380, upload-time = "2026-01-10T06:43:23.957Z" }, - { url = "https://files.pythonhosted.org/packages/67/78/722b62bd31842ff029412271556a1a27a98f45359dea78b1548a3a9996aa/numpy-2.4.1-cp313-cp313-win32.whl", hash = "sha256:3d1a100e48cb266090a031397863ff8a30050ceefd798f686ff92c67a486753d", size = 5957089, upload-time = "2026-01-10T06:43:27.535Z" }, - { url = "https://files.pythonhosted.org/packages/da/a6/cf32198b0b6e18d4fbfa9a21a992a7fca535b9bb2b0cdd217d4a3445b5ca/numpy-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:92a0e65272fd60bfa0d9278e0484c2f52fe03b97aedc02b357f33fe752c52ffb", size = 12307230, upload-time = "2026-01-10T06:43:29.298Z" }, - { url = "https://files.pythonhosted.org/packages/44/6c/534d692bfb7d0afe30611320c5fb713659dcb5104d7cc182aff2aea092f5/numpy-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:20d4649c773f66cc2fc36f663e091f57c3b7655f936a4c681b4250855d1da8f5", size = 10313125, upload-time = "2026-01-10T06:43:31.782Z" }, - { url = "https://files.pythonhosted.org/packages/da/a1/354583ac5c4caa566de6ddfbc42744409b515039e085fab6e0ff942e0df5/numpy-2.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f93bc6892fe7b0663e5ffa83b61aab510aacffd58c16e012bb9352d489d90cb7", size = 12496156, upload-time = "2026-01-10T06:43:34.237Z" }, - { url = "https://files.pythonhosted.org/packages/51/b0/42807c6e8cce58c00127b1dc24d365305189991f2a7917aa694a109c8d7d/numpy-2.4.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:178de8f87948163d98a4c9ab5bee4ce6519ca918926ec8df195af582de28544d", size = 5324663, upload-time = "2026-01-10T06:43:36.211Z" }, - { url = "https://files.pythonhosted.org/packages/fe/55/7a621694010d92375ed82f312b2f28017694ed784775269115323e37f5e2/numpy-2.4.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:98b35775e03ab7f868908b524fc0a84d38932d8daf7b7e1c3c3a1b6c7a2c9f15", size = 6645224, upload-time = "2026-01-10T06:43:37.884Z" }, - { url = "https://files.pythonhosted.org/packages/50/96/9fa8635ed9d7c847d87e30c834f7109fac5e88549d79ef3324ab5c20919f/numpy-2.4.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:941c2a93313d030f219f3a71fd3d91a728b82979a5e8034eb2e60d394a2b83f9", size = 14462352, upload-time = "2026-01-10T06:43:39.479Z" }, - { url = "https://files.pythonhosted.org/packages/03/d1/8cf62d8bb2062da4fb82dd5d49e47c923f9c0738032f054e0a75342faba7/numpy-2.4.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:529050522e983e00a6c1c6b67411083630de8b57f65e853d7b03d9281b8694d2", size = 16407279, upload-time = "2026-01-10T06:43:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/86/1c/95c86e17c6b0b31ce6ef219da00f71113b220bcb14938c8d9a05cee0ff53/numpy-2.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2302dc0224c1cbc49bb94f7064f3f923a971bfae45c33870dcbff63a2a550505", size = 16248316, upload-time = "2026-01-10T06:43:44.121Z" }, - { url = "https://files.pythonhosted.org/packages/30/b4/e7f5ff8697274c9d0fa82398b6a372a27e5cef069b37df6355ccb1f1db1a/numpy-2.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9171a42fcad32dcf3fa86f0a4faa5e9f8facefdb276f54b8b390d90447cff4e2", size = 18329884, upload-time = "2026-01-10T06:43:46.613Z" }, - { url = "https://files.pythonhosted.org/packages/37/a4/b073f3e9d77f9aec8debe8ca7f9f6a09e888ad1ba7488f0c3b36a94c03ac/numpy-2.4.1-cp313-cp313t-win32.whl", hash = "sha256:382ad67d99ef49024f11d1ce5dcb5ad8432446e4246a4b014418ba3a1175a1f4", size = 6081138, upload-time = "2026-01-10T06:43:48.854Z" }, - { url = "https://files.pythonhosted.org/packages/16/16/af42337b53844e67752a092481ab869c0523bc95c4e5c98e4dac4e9581ac/numpy-2.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:62fea415f83ad8fdb6c20840578e5fbaf5ddd65e0ec6c3c47eda0f69da172510", size = 12447478, upload-time = "2026-01-10T06:43:50.476Z" }, - { url = "https://files.pythonhosted.org/packages/6c/f8/fa85b2eac68ec631d0b631abc448552cb17d39afd17ec53dcbcc3537681a/numpy-2.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a7870e8c5fc11aef57d6fea4b4085e537a3a60ad2cdd14322ed531fdca68d261", size = 10382981, upload-time = "2026-01-10T06:43:52.575Z" }, - { url = "https://files.pythonhosted.org/packages/1b/a7/ef08d25698e0e4b4efbad8d55251d20fe2a15f6d9aa7c9b30cd03c165e6f/numpy-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3869ea1ee1a1edc16c29bbe3a2f2a4e515cc3a44d43903ad41e0cacdbaf733dc", size = 16652046, upload-time = "2026-01-10T06:43:54.797Z" }, - { url = "https://files.pythonhosted.org/packages/8f/39/e378b3e3ca13477e5ac70293ec027c438d1927f18637e396fe90b1addd72/numpy-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e867df947d427cdd7a60e3e271729090b0f0df80f5f10ab7dd436f40811699c3", size = 12378858, upload-time = "2026-01-10T06:43:57.099Z" }, - { url = "https://files.pythonhosted.org/packages/c3/74/7ec6154f0006910ed1fdbb7591cf4432307033102b8a22041599935f8969/numpy-2.4.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e3bd2cb07841166420d2fa7146c96ce00cb3410664cbc1a6be028e456c4ee220", size = 5207417, upload-time = "2026-01-10T06:43:59.037Z" }, - { url = "https://files.pythonhosted.org/packages/f7/b7/053ac11820d84e42f8feea5cb81cc4fcd1091499b45b1ed8c7415b1bf831/numpy-2.4.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:f0a90aba7d521e6954670550e561a4cb925713bd944445dbe9e729b71f6cabee", size = 6542643, upload-time = "2026-01-10T06:44:01.852Z" }, - { url = "https://files.pythonhosted.org/packages/c0/c4/2e7908915c0e32ca636b92e4e4a3bdec4cb1e7eb0f8aedf1ed3c68a0d8cd/numpy-2.4.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d558123217a83b2d1ba316b986e9248a1ed1971ad495963d555ccd75dcb1556", size = 14418963, upload-time = "2026-01-10T06:44:04.047Z" }, - { url = "https://files.pythonhosted.org/packages/eb/c0/3ed5083d94e7ffd7c404e54619c088e11f2e1939a9544f5397f4adb1b8ba/numpy-2.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f44de05659b67d20499cbc96d49f2650769afcb398b79b324bb6e297bfe3844", size = 16363811, upload-time = "2026-01-10T06:44:06.207Z" }, - { url = "https://files.pythonhosted.org/packages/0e/68/42b66f1852bf525050a67315a4fb94586ab7e9eaa541b1bef530fab0c5dd/numpy-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:69e7419c9012c4aaf695109564e3387f1259f001b4326dfa55907b098af082d3", size = 16197643, upload-time = "2026-01-10T06:44:08.33Z" }, - { url = "https://files.pythonhosted.org/packages/d2/40/e8714fc933d85f82c6bfc7b998a0649ad9769a32f3494ba86598aaf18a48/numpy-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2ffd257026eb1b34352e749d7cc1678b5eeec3e329ad8c9965a797e08ccba205", size = 18289601, upload-time = "2026-01-10T06:44:10.841Z" }, - { url = "https://files.pythonhosted.org/packages/80/9a/0d44b468cad50315127e884802351723daca7cf1c98d102929468c81d439/numpy-2.4.1-cp314-cp314-win32.whl", hash = "sha256:727c6c3275ddefa0dc078524a85e064c057b4f4e71ca5ca29a19163c607be745", size = 6005722, upload-time = "2026-01-10T06:44:13.332Z" }, - { url = "https://files.pythonhosted.org/packages/7e/bb/c6513edcce5a831810e2dddc0d3452ce84d208af92405a0c2e58fd8e7881/numpy-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:7d5d7999df434a038d75a748275cd6c0094b0ecdb0837342b332a82defc4dc4d", size = 12438590, upload-time = "2026-01-10T06:44:15.006Z" }, - { url = "https://files.pythonhosted.org/packages/e9/da/a598d5cb260780cf4d255102deba35c1d072dc028c4547832f45dd3323a8/numpy-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:ce9ce141a505053b3c7bce3216071f3bf5c182b8b28930f14cd24d43932cd2df", size = 10596180, upload-time = "2026-01-10T06:44:17.386Z" }, - { url = "https://files.pythonhosted.org/packages/de/bc/ea3f2c96fcb382311827231f911723aeff596364eb6e1b6d1d91128aa29b/numpy-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4e53170557d37ae404bf8d542ca5b7c629d6efa1117dac6a83e394142ea0a43f", size = 12498774, upload-time = "2026-01-10T06:44:19.467Z" }, - { url = "https://files.pythonhosted.org/packages/aa/ab/ef9d939fe4a812648c7a712610b2ca6140b0853c5efea361301006c02ae5/numpy-2.4.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:a73044b752f5d34d4232f25f18160a1cc418ea4507f5f11e299d8ac36875f8a0", size = 5327274, upload-time = "2026-01-10T06:44:23.189Z" }, - { url = "https://files.pythonhosted.org/packages/bd/31/d381368e2a95c3b08b8cf7faac6004849e960f4a042d920337f71cef0cae/numpy-2.4.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:fb1461c99de4d040666ca0444057b06541e5642f800b71c56e6ea92d6a853a0c", size = 6648306, upload-time = "2026-01-10T06:44:25.012Z" }, - { url = "https://files.pythonhosted.org/packages/c8/e5/0989b44ade47430be6323d05c23207636d67d7362a1796ccbccac6773dd2/numpy-2.4.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423797bdab2eeefbe608d7c1ec7b2b4fd3c58d51460f1ee26c7500a1d9c9ee93", size = 14464653, upload-time = "2026-01-10T06:44:26.706Z" }, - { url = "https://files.pythonhosted.org/packages/10/a7/cfbe475c35371cae1358e61f20c5f075badc18c4797ab4354140e1d283cf/numpy-2.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52b5f61bdb323b566b528899cc7db2ba5d1015bda7ea811a8bcf3c89c331fa42", size = 16405144, upload-time = "2026-01-10T06:44:29.378Z" }, - { url = "https://files.pythonhosted.org/packages/f8/a3/0c63fe66b534888fa5177cc7cef061541064dbe2b4b60dcc60ffaf0d2157/numpy-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42d7dd5fa36d16d52a84f821eb96031836fd405ee6955dd732f2023724d0aa01", size = 16247425, upload-time = "2026-01-10T06:44:31.721Z" }, - { url = "https://files.pythonhosted.org/packages/6b/2b/55d980cfa2c93bd40ff4c290bf824d792bd41d2fe3487b07707559071760/numpy-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7b6b5e28bbd47b7532698e5db2fe1db693d84b58c254e4389d99a27bb9b8f6b", size = 18330053, upload-time = "2026-01-10T06:44:34.617Z" }, - { url = "https://files.pythonhosted.org/packages/23/12/8b5fc6b9c487a09a7957188e0943c9ff08432c65e34567cabc1623b03a51/numpy-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:5de60946f14ebe15e713a6f22850c2372fa72f4ff9a432ab44aa90edcadaa65a", size = 6152482, upload-time = "2026-01-10T06:44:36.798Z" }, - { url = "https://files.pythonhosted.org/packages/00/a5/9f8ca5856b8940492fc24fbe13c1bc34d65ddf4079097cf9e53164d094e1/numpy-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8f085da926c0d491ffff3096f91078cc97ea67e7e6b65e490bc8dcda65663be2", size = 12627117, upload-time = "2026-01-10T06:44:38.828Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0d/eca3d962f9eef265f01a8e0d20085c6dd1f443cbffc11b6dede81fd82356/numpy-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:6436cffb4f2bf26c974344439439c95e152c9a527013f26b3577be6c2ca64295", size = 10667121, upload-time = "2026-01-10T06:44:41.644Z" }, +dependencies = [ + { name = "nox" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/b8/5a186592e002ac454450d6a43d6171b6207b0b4141db78464f7d4672ae8d/nox_uv-0.8.0.tar.gz", hash = "sha256:609595d9c4983b1c4abe8b44299b4223fb876f3794012a633c94acae697ed485", size = 5324, upload-time = "2026-05-12T02:16:55.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/94/a2dae05f049990adff252037252da412f56fadd358fb3eca474c838c3dc3/nox_uv-0.8.0-py3-none-any.whl", hash = "sha256:f62c0e016fd8403fd4352ec1e6eb06d6f9967adc44bba74524d7f74da5ac1b19", size = 5628, upload-time = "2026-05-12T02:16:57.372Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c6/50a46a6205feba2343f1d6d17438107c5dc491ed1c736e6ea68689fd906b/numpy-2.4.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f", size = 15671012, upload-time = "2026-05-18T23:34:05.485Z" }, + { url = "https://files.pythonhosted.org/packages/99/60/14115e6364fa676c5397c2ad3004e527e9aa487abf5d0706ec81bbd08529/numpy-2.4.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853", size = 16645538, upload-time = "2026-05-18T23:34:09.265Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c5/693cbe59e57db94d2231fa519ca3978dc9e19da5a8f088588f5c6e947ff2/numpy-2.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a", size = 17020706, upload-time = "2026-05-18T23:34:13.053Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fc/85b7c4eff9b4966ade25c2273cf7e7012e92366c032058653934b37de044/numpy-2.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2", size = 18368541, upload-time = "2026-05-18T23:34:17.024Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/e1b27545deedce7f4a0b348618c6b62d74e36a4dc9ccd42f3eb2f85eee32/numpy-2.4.6-cp312-cp312-win32.whl", hash = "sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45", size = 5962825, upload-time = "2026-05-18T23:34:20.3Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751", size = 12321687, upload-time = "2026-05-18T23:34:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/63/cf/5a6d34850a39d1093558564f77ee8e8e0bee5061151b8f05a55711001ec7/numpy-2.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8", size = 10221482, upload-time = "2026-05-18T23:34:25.876Z" }, + { url = "https://files.pythonhosted.org/packages/fb/82/bdab26d7438c6791ca31b7c024ca37c1eab8b726ba236129005cd4a06e45/numpy-2.4.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0", size = 16684648, upload-time = "2026-05-18T23:34:29.41Z" }, + { url = "https://files.pythonhosted.org/packages/1b/30/a80189bcc7f5e4258b3fbc3968d909d1756f54d023299ecc39ad6fdb9ef8/numpy-2.4.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb", size = 14693902, upload-time = "2026-05-18T23:34:33.013Z" }, + { url = "https://files.pythonhosted.org/packages/97/12/70b5d0d7c15e1ebb8a6a84a8caa1d19e181d84fb58bb6d70aca29099dec1/numpy-2.4.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f", size = 5198992, upload-time = "2026-05-18T23:34:36.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/ebd2a8f8a83541f8d38cc5667e8c2b69cecfd30da6e45693e8158857d44b/numpy-2.4.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3", size = 6546944, upload-time = "2026-05-18T23:34:38.484Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c5/7b863a97a91671a0338f4253bd3b5a3d3852f0692dae91711c9f4a10e787/numpy-2.4.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b", size = 15669392, upload-time = "2026-05-18T23:34:41.257Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9d/3584b9984ca4c047aea75214ce1a4c4c73d849bd71b604264b7f5653f8a8/numpy-2.4.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089", size = 16633220, upload-time = "2026-05-18T23:34:45.075Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/7c67fba23bd98caec7c99261f3a16072ade14813486b0282cb29846de832/numpy-2.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a", size = 17020800, upload-time = "2026-05-18T23:34:49.065Z" }, + { url = "https://files.pythonhosted.org/packages/d9/5d/3b6725cb31d983c5e66916f5d36f6d7e5521129e4c4404d64f918292a5b6/numpy-2.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605", size = 18357600, upload-time = "2026-05-18T23:34:52.709Z" }, + { url = "https://files.pythonhosted.org/packages/f7/da/2ccc6c2fe8898dee01d90c75c5f5f914a23daf99e3e0f59516a08760c8b5/numpy-2.4.6-cp313-cp313-win32.whl", hash = "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91", size = 5961134, upload-time = "2026-05-18T23:34:55.618Z" }, + { url = "https://files.pythonhosted.org/packages/b5/cd/9cc4dc876fb065d5c220aae4d5e14826b2715331bb7618ce1fb07a679d99/numpy-2.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359", size = 12318598, upload-time = "2026-05-18T23:34:58.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/1e/c0bcba1f8694116485fe28fd1be698c278fcda4141c5b0e53a2aed8b12a8/numpy-2.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778", size = 10222272, upload-time = "2026-05-18T23:35:02.167Z" }, + { url = "https://files.pythonhosted.org/packages/63/6d/cc5619247c8f4204e507f5883528372e4ac4bb189e579fb859a12e480b1f/numpy-2.4.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1", size = 14821197, upload-time = "2026-05-18T23:35:05.468Z" }, + { url = "https://files.pythonhosted.org/packages/00/58/f1c39161c87d9e9bed660f1ed4bafc0e403d5ec9650b6dd77aead07d489b/numpy-2.4.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe", size = 5326287, upload-time = "2026-05-18T23:35:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/af/57/3917ab0fd97f271a8694513581b8a36c655f111c446852c302f04ccdb6fc/numpy-2.4.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997", size = 6646763, upload-time = "2026-05-18T23:35:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/eb/0f/037e64c494b67581ae18193d770adef354c41f3f2c8ebf865602d949bf8f/numpy-2.4.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20", size = 15728070, upload-time = "2026-05-18T23:35:14.79Z" }, + { url = "https://files.pythonhosted.org/packages/21/a6/5d2bae9c9542eb4df16dc9c46dc79c186e9bad53805dfa5399a6023c6db0/numpy-2.4.6-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d", size = 16681752, upload-time = "2026-05-18T23:35:18.836Z" }, + { url = "https://files.pythonhosted.org/packages/92/14/23d1dfb410ae362cd59ce53e936b1513d545eb40db3949ced632e19a459e/numpy-2.4.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67", size = 17086024, upload-time = "2026-05-18T23:35:22.52Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/23595a2c642cdf3bc567877064bdd7f91c8b0038a4453cf2daf7248eafe9/numpy-2.4.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd", size = 18403398, upload-time = "2026-05-18T23:35:26.398Z" }, + { url = "https://files.pythonhosted.org/packages/8a/90/0ac3bc947217e66dec77e7cbc6a1979d1af70b6461b82f620d3bccd5e4c8/numpy-2.4.6-cp313-cp313t-win32.whl", hash = "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab", size = 6084971, upload-time = "2026-05-18T23:35:29.387Z" }, + { url = "https://files.pythonhosted.org/packages/77/71/5673e351671a1d2bd6063b91b44f70c0affea7d1516fa7a6572941ba4aa1/numpy-2.4.6-cp313-cp313t-win_amd64.whl", hash = "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75", size = 12458532, upload-time = "2026-05-18T23:35:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/3f/88/19d3503c5046e688f049274b27a3ef3d771152fa80d3ba3d01a3dff61abe/numpy-2.4.6-cp313-cp313t-win_arm64.whl", hash = "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd", size = 10291881, upload-time = "2026-05-18T23:35:35.465Z" }, + { url = "https://files.pythonhosted.org/packages/f8/91/3ab2044d05fd16d343c5ac2e69b127f1b2854040dd20b193257c78028bd3/numpy-2.4.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079", size = 16683458, upload-time = "2026-05-18T23:35:38.353Z" }, + { url = "https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7", size = 14704559, upload-time = "2026-05-18T23:35:42.14Z" }, + { url = "https://files.pythonhosted.org/packages/60/61/23f27c172f022e04025b7dc2367f4d63c1a398120607ec896228649a6f48/numpy-2.4.6-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5", size = 5209716, upload-time = "2026-05-18T23:35:45.377Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/21cf70dc6ea3e3acb95fc53a265b2fc248b981f0194ceb5b475271b8809d/numpy-2.4.6-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096", size = 6543947, upload-time = "2026-05-18T23:35:47.926Z" }, + { url = "https://files.pythonhosted.org/packages/d5/91/64288395ee1799bd2e0b04a305dce9666da90c961e1f3fe982a05ee1c036/numpy-2.4.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b", size = 15685197, upload-time = "2026-05-18T23:35:50.863Z" }, + { url = "https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8", size = 16638245, upload-time = "2026-05-18T23:35:54.752Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0b/54f9da33128d7e350fab89c7455902eeae70349ee52bddb448dc4a576f45/numpy-2.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402", size = 17036587, upload-time = "2026-05-18T23:35:58.355Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f0/fdebc1052db1cc37c64beb22072d67cd6d1c71adca1299f53dec2b5e20d3/numpy-2.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb", size = 18363226, upload-time = "2026-05-18T23:36:02.845Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b4/298628d98c72b57e57f7165ae6a481a1deaf6f3c28262a6e4c739c275930/numpy-2.4.6-cp314-cp314-win32.whl", hash = "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1", size = 6010196, upload-time = "2026-05-18T23:36:05.92Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/46de6dda46478f7942f839e094970be2d4a861e005c4b3bf07c92e291a09/numpy-2.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261", size = 12450334, upload-time = "2026-05-18T23:36:09.107Z" }, + { url = "https://files.pythonhosted.org/packages/78/92/b8b798ac784102c0da830d2257d59358e3d3d90d1e2b3f2575dad976c5cf/numpy-2.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6", size = 10495678, upload-time = "2026-05-18T23:36:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/30/34/ec28d1aa8115971537c01469ab2011ee96827930f0a124de1000cc2a7ed7/numpy-2.4.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a", size = 14823672, upload-time = "2026-05-18T23:36:16.473Z" }, + { url = "https://files.pythonhosted.org/packages/16/bd/f6d1fede4e54e8042a7ff97bb495510f3c220f94bcd9e8b228e87c92cc0d/numpy-2.4.6-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e", size = 5328731, upload-time = "2026-05-18T23:36:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f0/e105b9e2fd728a9910103884decd6951d9dd73896b914a98d9a231de02ee/numpy-2.4.6-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e", size = 6649805, upload-time = "2026-05-18T23:36:22.266Z" }, + { url = "https://files.pythonhosted.org/packages/82/dd/1206a7ca6ab15e3f02069707ca96222e202af681bb73756da7527f3cb837/numpy-2.4.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43", size = 15730496, upload-time = "2026-05-18T23:36:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/51/e7/38d3ea825dcab85a591734decb2f6c67caa7c8367d374df1a1c3842f9b07/numpy-2.4.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e", size = 16679616, upload-time = "2026-05-18T23:36:29.652Z" }, + { url = "https://files.pythonhosted.org/packages/93/b7/caabfdf53edf663e0b4eb74d7d405d83baef09eb5e83bcd32d601d72b93e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895", size = 17085145, upload-time = "2026-05-18T23:36:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/f9/45/68d7c33a6bcf3e5aa3bdbd57a367e6f615286dfd6482f97e8ffeb734306e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4", size = 18403813, upload-time = "2026-05-18T23:36:37.369Z" }, + { url = "https://files.pythonhosted.org/packages/9c/50/0753655aa844c99cd9e018aacf76f130f1bd81d881bb74bc0aef5d73a8ba/numpy-2.4.6-cp314-cp314t-win32.whl", hash = "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063", size = 6156982, upload-time = "2026-05-18T23:36:40.817Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d4/7c67becf668f973cb490cec3e98dfd799d866f9c989a54d355672cfa0db6/numpy-2.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627", size = 12638908, upload-time = "2026-05-18T23:36:43.996Z" }, + { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" }, ] [[package]] @@ -4122,70 +3111,37 @@ wheels = [ [[package]] name = "nvidia-cublas" -version = "13.2.0.9" +version = "13.1.1.3" source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/83/4cd53cce72636537652287062f7d45d2029a8c4ae4a67132011f5d24ea2e/nvidia_cublas-13.2.0.9-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:ad0d26a80789d14b2590a99109f32e8effac0d474cab9733438959c3ee77ddda", size = 540548645, upload-time = "2025-12-05T17:39:32.581Z" }, - { url = "https://files.pythonhosted.org/packages/05/10/df4c17cf3df313c80951f5f9410e178b653dd70b885092b357b461166ae3/nvidia_cublas-13.2.0.9-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:9c46d723b9a34bd69a453594be9b3ca6fd68db6e1da99095e15106d4134be0c3", size = 422488322, upload-time = "2025-12-05T17:40:01.985Z" }, -] - -[[package]] -name = "nvidia-cublas-cu12" -version = "12.9.1.4" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/6c/90d3f532f608a03a13c1d6c16c266ffa3828e8011b1549d3b61db2ad59f5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7a950dae01add3b415a5a5cdc4ec818fb5858263e9cca59004bb99fdbbd3a5d6", size = 575006342, upload-time = "2025-06-05T20:04:16.902Z" }, - { url = "https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:453611eb21a7c1f2c2156ed9f3a45b691deda0440ec550860290dc901af5b4c2", size = 581242350, upload-time = "2025-06-05T20:04:51.979Z" }, -] - -[[package]] -name = "nvidia-cuda-cccl" -version = "13.1.78" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/49/60587ce90ee6f681df7f3adceb3ea6a209aecee72dacd1caeb657e81d3c8/nvidia_cuda_cccl-13.1.78-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5b5a2177135625619822d3707ede6e6d466761d47dbd71638da156ef3b43c0a", size = 3477655, upload-time = "2025-12-05T17:33:43.947Z" }, - { url = "https://files.pythonhosted.org/packages/f2/f6/ffc31be6366411a227c50d10c822c8b34c0db80c2908c4a4d4dcb420661b/nvidia_cuda_cccl-13.1.78-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:24734b3dbb8ea7ee228ad4b19c8069ce862490513298e392641e077121e592c5", size = 3427730, upload-time = "2025-12-05T17:34:04.106Z" }, +dependencies = [ + { name = "nvidia-cuda-nvrtc" }, ] - -[[package]] -name = "nvidia-cuda-cccl-cu12" -version = "12.9.27" -source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/7e/82e49956b046bdc506c789235c587d9b3ef58b8bc1782258c1e247229647/nvidia_cuda_cccl_cu12-12.9.27-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7898b38aa68beaa234d48f0868273702342a196d6e2e9d0ef058dca2390ebea", size = 3152245, upload-time = "2025-05-01T19:32:04.802Z" }, - { url = "https://files.pythonhosted.org/packages/18/2a/d4cd8506d2044e082f8cd921be57392e6a9b5ccd3ffdf050362430a3d5d5/nvidia_cuda_cccl_cu12-12.9.27-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:37869e17ce2e1ecec6eddf1927cca0f8c34e64fd848d40453df559091e2d7117", size = 3152243, upload-time = "2025-05-01T19:32:13.955Z" }, + { url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918, upload-time = "2026-04-08T18:46:22.985Z" }, + { url = "https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:37936a16db8fe4ac1f065c2139360608a543a09275cb1a1af612e08cfa065436", size = 423138758, upload-time = "2026-04-08T18:46:58.655Z" }, ] [[package]] name = "nvidia-cuda-crt" -version = "13.1.80" +version = "13.2.78" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/3c/335c8a27a2114eac755d5bc63ce585aaa159542ad4fa4ad22f59f115f3fc/nvidia_cuda_crt-13.1.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a856aba69c31b94f755d152f70f3479413746c9229bdfb00b82929293602bb90", size = 132578, upload-time = "2025-12-05T17:34:12.265Z" }, - { url = "https://files.pythonhosted.org/packages/e9/1d/decd11b782d47074092c6af2621db712337ce33fd203f0b9b6351b527bfa/nvidia_cuda_crt-13.1.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d9c87b60d82140e07881b8b8fa197c4867d27e41cef5f2171a82fa916211eba", size = 132579, upload-time = "2025-12-05T17:34:19.92Z" }, + { url = "https://files.pythonhosted.org/packages/85/8a/3954a429bbe1dea60c7e3fa4a0cf6a4fdb7df295b2cfb49a77a73bcd3ca4/nvidia_cuda_crt-13.2.78-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f5f1d7bf8a89e98f19f45a2f18bb5df99a806433bfb6f0bc487d9e8f4b3677b", size = 133298, upload-time = "2026-04-13T09:37:06.368Z" }, + { url = "https://files.pythonhosted.org/packages/ea/78/501eee5cce9202fba2f3476529e296a7f6d003261d80b52ab0abfa09ddd6/nvidia_cuda_crt-13.2.78-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2c8615ee30ed466cb6298ecb8ffe9e6ea8b252ca833206152d155750bf831608", size = 133301, upload-time = "2026-04-13T09:37:36.922Z" }, ] [[package]] name = "nvidia-cuda-cupti" -version = "13.1.75" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/7b/e0eef2674080926850e1ac22e6230d71b648fa9c262fec46b06bd279b52a/nvidia_cuda_cupti-13.1.75-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:4aeaaacfd76740758d377d13f9fb729ca5ac88ae3a47dcfdecf5603aa29481cf", size = 10919473, upload-time = "2025-12-05T17:35:14.755Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ab/3981725609fb394fb4dbb6df8c08b217096b57f303cfacd3ea8f5e3fd0b3/nvidia_cuda_cupti-13.1.75-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:8ee6e070044ea470afcaaf766f8afa8cd37b24256c665d4f9ab2d88f4535f599", size = 11366057, upload-time = "2025-12-05T17:35:33.404Z" }, -] - -[[package]] -name = "nvidia-cuda-cupti-cu12" -version = "12.9.79" +version = "13.0.85" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/78/351b5c8cdbd9a6b4fb0d6ee73fb176dcdc1b6b6ad47c2ffff5ae8ca4a1f7/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:791853b030602c6a11d08b5578edfb957cadea06e9d3b26adbf8d036135a4afe", size = 10077166, upload-time = "2025-06-05T20:01:01.385Z" }, - { url = "https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f", size = 10814997, upload-time = "2025-06-05T20:01:10.168Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" }, + { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" }, ] [[package]] name = "nvidia-cuda-nvcc" -version = "13.1.80" +version = "13.2.78" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nvidia-cuda-crt" }, @@ -4193,223 +3149,158 @@ dependencies = [ { name = "nvidia-nvvm" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/47/68/9d5afaeac9b9f0871030481b3f760391a05bb886fb371c20a616c27ebe55/nvidia_cuda_nvcc-13.1.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:736f0f6f8859f76add11d00c19226679d64bf0b6f0ef6c277c4cd84d422d6ed8", size = 34728789, upload-time = "2025-12-05T17:36:14.918Z" }, - { url = "https://files.pythonhosted.org/packages/17/74/95be21472117aca2c8675633562411b7e305a552c3c49f5cbb6859d83dcc/nvidia_cuda_nvcc-13.1.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3bc4a530566f7083da0cfe9f637474efa173a1101ed0bc72da9a98f8a55edb77", size = 42280803, upload-time = "2025-12-05T17:36:25.59Z" }, -] - -[[package]] -name = "nvidia-cuda-nvcc-cu12" -version = "12.9.86" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/48/b54a06168a2190572a312bfe4ce443687773eb61367ced31e064953dd2f7/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:5d6a0d32fdc7ea39917c20065614ae93add6f577d840233237ff08e9a38f58f0", size = 40546229, upload-time = "2025-06-05T20:01:53.357Z" }, - { url = "https://files.pythonhosted.org/packages/d6/5c/8cc072436787104bbbcbde1f76ab4a0d89e68f7cebc758dd2ad7913a43d0/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44e1eca4d08926193a558d2434b1bf83d57b4d5743e0c431c0c83d51da1df62b", size = 39411138, upload-time = "2025-06-05T20:01:43.182Z" }, + { url = "https://files.pythonhosted.org/packages/ec/df/faf551572ae1359290afa5cb05d2c4b7e6674b07b8283b20eab4dbad15f6/nvidia_cuda_nvcc-13.2.78-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dfc76950c775cd00ce588f15192f08c9b858c0dcfa7da685acf39a3d0d8f588b", size = 38713559, upload-time = "2026-04-13T09:42:17.478Z" }, + { url = "https://files.pythonhosted.org/packages/65/0f/c7c7d538c61794130e759ad74710ab5aa8cab1f700ee1754381f8c665605/nvidia_cuda_nvcc-13.2.78-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c3bd144dd9b6b25e062589acb7bbd43d93d3120c72fad71da808f9817aba1239", size = 44040318, upload-time = "2026-04-13T09:42:50.457Z" }, ] [[package]] name = "nvidia-cuda-nvrtc" -version = "13.1.80" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/a9/9cca9907117247235afaface5dcce2dba139ab2eabb1fb37a5f4a4d867dd/nvidia_cuda_nvrtc-13.1.80-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a3c2c104fe8cabaa289643cc1c999d7b1e614316eaee15c43747b14b9c8bcaad", size = 46570803, upload-time = "2025-12-05T17:37:16.405Z" }, - { url = "https://files.pythonhosted.org/packages/a9/17/bc712515e9446eb0d3b7f4d20034beb6c176a1dcefcd98a3f4100a80b8a1/nvidia_cuda_nvrtc-13.1.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2df04c70712197e3d648d06896c13d1eb3a9af4948d94bd3fc3409368d9e8a75", size = 44318878, upload-time = "2025-12-05T17:37:05.984Z" }, -] - -[[package]] -name = "nvidia-cuda-nvrtc-cu12" -version = "12.9.86" +version = "13.0.88" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4", size = 89568129, upload-time = "2025-06-05T20:02:41.973Z" }, - { url = "https://files.pythonhosted.org/packages/64/eb/c2295044b8f3b3b08860e2f6a912b702fc92568a167259df5dddb78f325e/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:096d4de6bda726415dfaf3198d4f5c522b8e70139c97feef5cd2ca6d4cd9cead", size = 44528905, upload-time = "2025-06-05T20:02:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" }, + { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" }, ] [[package]] name = "nvidia-cuda-runtime" -version = "13.1.80" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/b7/8075a985c5a4a828d850f244266c67134f60b28d1106cd4abe6187bedcc3/nvidia_cuda_runtime-13.1.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f1aa8fd779cae1a78aa8fdbaa5e4f245300baff120099d9b5ee84e3f4506a29", size = 2317343, upload-time = "2025-12-05T17:34:27.824Z" }, - { url = "https://files.pythonhosted.org/packages/fe/60/03858bc3954b3263eedcff7626712c656b6b5a0d7d25bcb1fc1ebee9d4f1/nvidia_cuda_runtime-13.1.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dac25b52e69050e5a7a84957e6df470a85b185f8f648a99a1ab1dfce027576cf", size = 2297816, upload-time = "2025-12-05T17:34:48.703Z" }, -] - -[[package]] -name = "nvidia-cuda-runtime-cu12" -version = "12.9.79" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/e0/0279bd94539fda525e0c8538db29b72a5a8495b0c12173113471d28bce78/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83469a846206f2a733db0c42e223589ab62fd2fabac4432d2f8802de4bded0a4", size = 3515012, upload-time = "2025-06-05T20:00:35.519Z" }, - { url = "https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3", size = 3493179, upload-time = "2025-06-05T20:00:53.735Z" }, -] - -[[package]] -name = "nvidia-cudnn-cu12" -version = "9.17.1.4" +version = "13.0.96" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-cublas-cu12" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/da/55/9987152bd99746b6d5d899a3e920f72f565f5adb4835dc44899382482e2c/nvidia_cudnn_cu12-9.17.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:d18d61bdd596fca0dbe459c129f6eb7a24ed2e6de1d7988b0a37ac63184ee05d", size = 646648394, upload-time = "2025-12-22T16:42:08.8Z" }, - { url = "https://files.pythonhosted.org/packages/91/8b/b15aef578b64ff8b72f68f682b6a8254ee6aa6d3d236b4282a4d32dbdf1a/nvidia_cudnn_cu12-9.17.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b5083ced291edb2baf8eab09951c6bc58b79b2023c4ec885657a63acdf51d0bd", size = 647835891, upload-time = "2025-12-22T16:43:28.317Z" }, + { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" }, ] [[package]] name = "nvidia-cudnn-cu13" -version = "9.17.1.4" +version = "9.20.0.48" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nvidia-cublas" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/13/2e3d3d306392dc05e01a86d3c1504a4cd2ad1dae3c6784a3ace1714aa7b1/nvidia_cudnn_cu13-9.17.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:17bdc6d7268aeaff2bc0b3703774639d0b33136fc14b302329df7933285d8f98", size = 422393214, upload-time = "2025-12-22T16:42:41.475Z" }, - { url = "https://files.pythonhosted.org/packages/c3/5a/8d3dcd22d980922986667d122d108b4e5deb11940bc01f16aeddf4806d9e/nvidia_cudnn_cu13-9.17.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:6919fbd8c7bc8bdef276ab5c649c85206636aac1dceb77e650895c0fb6fb4f01", size = 358265630, upload-time = "2025-12-22T16:44:07.134Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5e/edb9c0ae051602c3ccaffe424256463636d639e27d7f302dde9975ef9e7a/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0c45dd8eeb50b603f07995b1b300c62ffe6a1980482b82b3bcf94a4ca9d49304", size = 366173588, upload-time = "2026-03-09T19:29:34.474Z" }, ] [[package]] name = "nvidia-cufft" -version = "12.1.0.31" +version = "12.0.0.61" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nvidia-nvjitlink" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/40/e3/3dd6af448545081678144323c3bf13fe39c00e53a1df1b445eb2d56ad3b0/nvidia_cufft-12.1.0.31-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2829b53ebf52d74a94303ad91fcccde06f93b7a733099af1463bc644eb743143", size = 226093349, upload-time = "2025-12-05T17:40:33.063Z" }, - { url = "https://files.pythonhosted.org/packages/60/e0/a3e555c2e86e9272d6db0fa7857ec30615150d39ee4d98d30add8790ad45/nvidia_cufft-12.1.0.31-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:64d599c31d1da10494b13687dc4373e9b00db5dbbf1fe04f25ca5ec1a8db9fc0", size = 226114368, upload-time = "2025-12-05T17:40:50.721Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" }, ] [[package]] -name = "nvidia-cufft-cu12" -version = "11.4.1.4" +name = "nvidia-cufile" +version = "1.15.1.6" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-nvjitlink-cu12" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/2b/76445b0af890da61b501fde30650a1a4bd910607261b209cccb5235d3daa/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1a28c9b12260a1aa7a8fd12f5ebd82d027963d635ba82ff39a1acfa7c4c0fbcf", size = 200822453, upload-time = "2025-06-05T20:05:27.889Z" }, - { url = "https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28", size = 200877592, upload-time = "2025-06-05T20:05:45.862Z" }, + { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" }, ] [[package]] -name = "nvidia-cusolver" -version = "12.0.7.41" +name = "nvidia-curand" +version = "10.4.0.35" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-cublas" }, - { name = "nvidia-cusparse" }, - { name = "nvidia-nvjitlink" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/19/f6dcc594b065953c79fb11a449aa3a38c83fb8b4da8b6da15e12f41f9e73/nvidia_cusolver-12.0.7.41-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e89df796f56f2aa0a61c51f016f8169e5aaf284fe56d195aac0b6321235dd938", size = 224348677, upload-time = "2025-12-05T17:42:14.301Z" }, - { url = "https://files.pythonhosted.org/packages/9d/f6/389ba88310ee08754ffa2489c7d3b8b8be3f8428f9a37280aeb88b8af289/nvidia_cusolver-12.0.7.41-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b754e53dc09368760d109737a9ca323d57332860d77691e0fb2e26929fb310f8", size = 201915919, upload-time = "2025-12-05T17:42:44.34Z" }, + { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" }, ] [[package]] -name = "nvidia-cusolver-cu12" -version = "11.7.5.82" +name = "nvidia-cusolver" +version = "12.0.4.66" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas-cu12" }, - { name = "nvidia-cusparse-cu12" }, - { name = "nvidia-nvjitlink-cu12" }, + { name = "nvidia-cublas" }, + { name = "nvidia-cusparse" }, + { name = "nvidia-nvjitlink" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/03/99/686ff9bf3a82a531c62b1a5c614476e8dfa24a9d89067aeedf3592ee4538/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:62efa83e4ace59a4c734d052bb72158e888aa7b770e1a5f601682f16fe5b4fd2", size = 337869834, upload-time = "2025-06-05T20:06:53.125Z" }, - { url = "https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88", size = 338117415, upload-time = "2025-06-05T20:07:16.809Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" }, ] [[package]] name = "nvidia-cusparse" -version = "12.7.2.19" +version = "12.6.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nvidia-nvjitlink" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/c3/b02bbb7a4793dd70d0c5007471a6b09e16ae3e6a8ebe1a13b93cd3881abd/nvidia_cusparse-12.7.2.19-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a68be3c4c059243dca0ef4812ff8df5df1034ee008690623c8f3f28fb316f675", size = 168618916, upload-time = "2025-12-05T17:43:01.195Z" }, - { url = "https://files.pythonhosted.org/packages/52/f5/5a18a36f01c883d556aef23b71b30f3a964f1b093c9b21cf93c63cf1b6bd/nvidia_cusparse-12.7.2.19-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:30980a347f8f8d534e3e1aa01003a396e818bc70449e0e20d1bb2e8c58b7a5d7", size = 151915791, upload-time = "2025-12-05T17:43:24.976Z" }, + { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" }, ] [[package]] -name = "nvidia-cusparse-cu12" -version = "12.5.10.65" +name = "nvidia-cusparselt-cu13" +version = "0.8.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-nvjitlink-cu12" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/6f/8710fbd17cdd1d0fc3fea7d36d5b65ce1933611c31e1861da330206b253a/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:221c73e7482dd93eda44e65ce567c031c07e2f93f6fa0ecd3ba876a195023e83", size = 366359408, upload-time = "2025-06-05T20:07:42.501Z" }, - { url = "https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78", size = 366465088, upload-time = "2025-06-05T20:08:20.413Z" }, + { url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344, upload-time = "2025-09-05T18:49:51.289Z" }, + { url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586, upload-time = "2025-09-05T18:50:50.248Z" }, ] [[package]] -name = "nvidia-nccl-cu12" -version = "2.29.2" +name = "nvidia-ml-py" +version = "13.595.45" source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/49/c29f6e30d8662d2e94fef17739ea7309cc76aba269922ae999e4cc07f268/nvidia_ml_py-13.595.45.tar.gz", hash = "sha256:c9f34897fe0441ff35bc8f35baf80f830a20b0f4e6ce71e0a325bc0e66acf079", size = 50780, upload-time = "2026-03-19T16:59:44.956Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/b2/e4dc7b33020645746710040cb2a6ac0de8332687d3ce902156dd3d7c351a/nvidia_nccl_cu12-2.29.2-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:0712e55c067965c6093cc793a9bbcc5f37b5b47248e9ebf8ae3af06867757587", size = 289707761, upload-time = "2026-01-07T00:21:30.514Z" }, - { url = "https://files.pythonhosted.org/packages/23/2d/609d0392d992259c6dc39881688a7fc13b1397a668bc360fbd68d1396f85/nvidia_nccl_cu12-2.29.2-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:3a9a0bf4142126e0d0ed99ec202579bef8d007601f9fab75af60b10324666b12", size = 289762233, upload-time = "2026-01-07T00:21:56.124Z" }, + { url = "https://files.pythonhosted.org/packages/8a/24/fc256107d23597fa33d319505ce77160fa1a2349c096d01901ffc7cb7fc4/nvidia_ml_py-13.595.45-py3-none-any.whl", hash = "sha256:b65a7977f503d56154b14d683710125ef93594adb63fbf7e559336e3318f1376", size = 51776, upload-time = "2026-03-19T16:59:43.603Z" }, ] [[package]] name = "nvidia-nccl-cu13" -version = "2.29.2" +version = "2.29.7" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/e8/b69bfcbf39d71b4166cf1ceb0e58dd73cc4c6ad005164b56e54acb4dbf2f/nvidia_nccl_cu13-2.29.2-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:9d4f7e24aff66309f0b71bd6a885afa214e1bac3a562c9a77be428f0a4aeb62a", size = 201038683, upload-time = "2026-01-07T00:21:18.002Z" }, - { url = "https://files.pythonhosted.org/packages/81/15/5e1d022945dd511d453ba5163fedce67d3bd0fb3dcadc021f00c0c8a491b/nvidia_nccl_cu13-2.29.2-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:86b997b315df0fb2874fd6062f2930d317bfa6434823351f287936d5ed616fc9", size = 201100704, upload-time = "2026-01-07T00:21:31.626Z" }, + { url = "https://files.pythonhosted.org/packages/72/0d/daf50d44177ee0cbc7ff0a0c91eb5ff676c82be42f9a970bc7597f440c3a/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:674a12383e3c38a1bcccae7d4f3633b37852230b6047883cb2f4c2d1b36d9bf5", size = 206014712, upload-time = "2026-03-03T05:34:20.843Z" }, + { url = "https://files.pythonhosted.org/packages/67/f4/58e4e91b6919367c7aafb8e36fce9aad1a3047e536bf7e2fd560927d3a4c/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:edd81538446786ec3b73972543e53bb43bcaf0bfc8ef76cb679fcc390ffe136d", size = 205976000, upload-time = "2026-03-03T05:36:24.472Z" }, ] [[package]] name = "nvidia-nvjitlink" -version = "13.1.80" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/c9/1c1ee01649c7bbee2c232461f5c706f0ec7d9b5098a238fcc604b2f67672/nvidia_nvjitlink-13.1.80-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:8021a5146c336dafaee111ee78a1c665bc873161f51a5ae8989135b9d4a85434", size = 40936616, upload-time = "2025-12-05T17:45:01.177Z" }, - { url = "https://files.pythonhosted.org/packages/35/4a/740252bec635d6e2d9ee40182906ea205b4b97afb169d82f4caf50bc7223/nvidia_nvjitlink-13.1.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a3b7866b52d8c959d4c8ba4e8572d9439b129caf81f6eea1410f2a9f82e6336d", size = 38857485, upload-time = "2025-12-05T17:44:50.048Z" }, -] - -[[package]] -name = "nvidia-nvjitlink-cu12" -version = "12.9.86" +version = "13.0.88" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9", size = 39748338, upload-time = "2025-06-05T20:10:25.613Z" }, - { url = "https://files.pythonhosted.org/packages/97/bc/2dcba8e70cf3115b400fef54f213bcd6715a3195eba000f8330f11e40c45/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:994a05ef08ef4b0b299829cde613a424382aff7efb08a7172c1fa616cc3af2ca", size = 39514880, upload-time = "2025-06-05T20:10:04.89Z" }, + { url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" }, ] [[package]] -name = "nvidia-nvshmem-cu12" -version = "3.5.19" +name = "nvidia-nvshmem-cu13" +version = "3.4.5" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-cuda-cccl-cu12" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/1b/06a698b584b67670e7f108381ecdf680d3a497c0567f5183644034f4212e/nvidia_nvshmem_cu12-3.5.19-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:333d91f68038539f20a591ef4d5cee25a85d440537b31809c4e42ae1700fccce", size = 152515031, upload-time = "2026-01-02T04:24:25.119Z" }, - { url = "https://files.pythonhosted.org/packages/64/b9/6ab941001c23cfb43499b5b0b7417b0bb4dfba3a29ffa2b06985422dad50/nvidia_nvshmem_cu12-3.5.19-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f29a23c5ee75461ec4342e17757f9e010369ada8eb0d441070049db787d9e51b", size = 152681200, upload-time = "2026-01-02T04:24:46.524Z" }, + { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" }, ] [[package]] -name = "nvidia-nvshmem-cu13" -version = "3.5.19" +name = "nvidia-nvtx" +version = "13.0.85" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-cuda-cccl" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/62/d0835400d6d93474ed0b4655411eed2e807b8a1a8bb1e3a0e128e5209a63/nvidia_nvshmem_cu13-3.5.19-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:53440ae98eadd3bd83fc875c793d737e2ce618632759942a32d4cfb1814c0a74", size = 72222179, upload-time = "2026-01-02T04:24:34.97Z" }, - { url = "https://files.pythonhosted.org/packages/c8/0f/28e11b20c47e8b67d108c6895f4e3eba05071df16bc5bd2e11a572918330/nvidia_nvshmem_cu13-3.5.19-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0f734285d3a04824c13e9e2c1169dbb818be9cb0819de69389aaa067b8d18c93", size = 72433982, upload-time = "2026-01-02T04:25:05.69Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" }, + { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, ] [[package]] name = "nvidia-nvvm" -version = "13.1.80" +version = "13.2.78" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/c4/050e882206afc18e409e6428403bf1b86155a8213051a4a07d2e8a0190dc/nvidia_nvvm-13.1.80-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:058519d3e290cad0ad4034addad3f72fef2782f383e33d3c5b38172ed8fdb144", size = 63386684, upload-time = "2025-12-05T17:46:32.922Z" }, - { url = "https://files.pythonhosted.org/packages/6f/3a/31ab71b86983611364cd416cce61891a231b1385774f44800a01aedc1abe/nvidia_nvvm-13.1.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a3d29e47059b6535b91172262a8fc78f4d8f15168c0090cc42b09a2393425465", size = 61001764, upload-time = "2025-12-05T17:46:20.145Z" }, - { url = "https://files.pythonhosted.org/packages/b2/8c/3f4302e50dea44870f15277b33c8d47cf6d6808c42aa0cda448e1eef0e16/nvidia_nvvm-13.1.80-py3-none-win_amd64.whl", hash = "sha256:aecefb4e9b4c6c0fb799db27ef32e7a3cf94d426c6689ff5679397a466af1769", size = 55413868, upload-time = "2025-12-05T17:53:21.251Z" }, + { url = "https://files.pythonhosted.org/packages/e8/1f/930d63ccc8adcdf27bfc051a24e3e4da2cf6ef987848d6d1d642e29d704b/nvidia_nvvm-13.2.78-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:f5aa433631109bbdec81802c5b5f319bf10bc891fe2f212e4e445845211d6f77", size = 64279462, upload-time = "2026-04-13T10:02:25.719Z" }, + { url = "https://files.pythonhosted.org/packages/8b/fd/db44b7a662a6af75a9a0683ca4580c855a3f5fcfdf1261b0ddb9fce0ee26/nvidia_nvvm-13.2.78-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88075f87a361a1dce95c799cabc028f7093af616a5702dcfb74eba4045dbbd5f", size = 61886055, upload-time = "2026-04-13T10:02:00.345Z" }, + { url = "https://files.pythonhosted.org/packages/35/b9/c3862fd1073326c61233f05e816c17a28ab86a361db1b7561c7f33ac3af4/nvidia_nvvm-13.2.78-py3-none-win_amd64.whl", hash = "sha256:cf8e91654e74285e9c574b3a45b92928c0a6d135928906cf11ce470bbec6a8ec", size = 56752219, upload-time = "2026-04-13T10:15:11.102Z" }, ] [[package]] @@ -4421,38 +3312,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/af/572825252f16f36eeecbc8e3b721913d2640d69b984fdb8907aa8b4b0975/objprint-0.3.0-py3-none-any.whl", hash = "sha256:489083bfc8baf0526f8fd6af74673799511532636f0ce4141133255ded773405", size = 41619, upload-time = "2024-11-09T00:05:14.852Z" }, ] -[[package]] -name = "omegaconf" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "antlr4-python3-runtime" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, -] - -[[package]] -name = "openai" -version = "2.15.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "jiter" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/f4/4690ecb5d70023ce6bfcfeabfe717020f654bde59a775058ec6ac4692463/openai-2.15.0.tar.gz", hash = "sha256:42eb8cbb407d84770633f31bf727d4ffb4138711c670565a41663d9439174fba", size = 627383, upload-time = "2026-01-09T22:10:08.603Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/df/c306f7375d42bafb379934c2df4c2fa3964656c8c782bac75ee10c102818/openai-2.15.0-py3-none-any.whl", hash = "sha256:6ae23b932cd7230f7244e52954daa6602716d6b9bf235401a107af731baea6c3", size = 1067879, upload-time = "2026-01-09T22:10:06.446Z" }, -] - [[package]] name = "opt-einsum" version = "3.4.0" @@ -4463,31 +3322,87 @@ wheels = [ ] [[package]] -name = "optax" -version = "0.2.6" +name = "optree" +version = "0.19.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "absl-py" }, - { name = "chex" }, - { name = "jax" }, - { name = "jaxlib" }, - { name = "numpy" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/3b/90c11f740a3538200b61cd2b7d9346959cb9e31e0bdea3d2f886b7262203/optax-0.2.6.tar.gz", hash = "sha256:ba8d1e12678eba2657484d6feeca4fb281b8066bdfd5efbfc0f41b87663109c0", size = 269660, upload-time = "2025-09-15T22:41:24.76Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/ec/19c6cc6064c7fc8f0cd6d5b37c4747849e66040c6ca98f86565efc2c227c/optax-0.2.6-py3-none-any.whl", hash = "sha256:f875251a5ab20f179d4be57478354e8e21963373b10f9c3b762b94dcb8c36d91", size = 367782, upload-time = "2025-09-15T22:41:22.825Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/44/63/92328a17ab7836562fe0129e605f685a88db35ce98427c34ff48ee4ec157/optree-0.19.1.tar.gz", hash = "sha256:4497d1c9197b8c6842e511368163d318ce536521ebdcff8bebb7551dcdfac532", size = 177531, upload-time = "2026-05-06T02:32:39.704Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/a7/cb5567029a608a296b0ca224025d03bba0365b41df19085b9b580191f6f2/optree-0.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:96e5c7c3b9144f08ae40c3d9848cfbcfa36b6bead0f8215ad071d5922ee6c4a5", size = 424023, upload-time = "2026-05-06T02:30:57.732Z" }, + { url = "https://files.pythonhosted.org/packages/b9/a1/3651fb32fa8617108204aa4056d283af742020e0987d106f41402005d800/optree-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d9d198343e1e6ced18bef0cbff84091c1877964fc4a121df33f18840e073a01", size = 394782, upload-time = "2026-05-06T02:30:59.239Z" }, + { url = "https://files.pythonhosted.org/packages/c2/1e/676470909aa64d7aba7c5edf83b171dc83b7af901d9ebb8e6d7512fe913a/optree-0.19.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a1202371d9fe3aa75f3e886b1f871aac4991a655aadb65e54f58a3ae9388ab2", size = 413157, upload-time = "2026-05-06T02:31:00.339Z" }, + { url = "https://files.pythonhosted.org/packages/f4/41/1a4c58f2af5742b9d9e21ea9e45c6c3c49463b5e2a0537e84ead1e9597ca/optree-0.19.1-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:d41ccc4c20bfeae01d1d221c057a6d026e84e32229664952eddcdbe4b9b71417", size = 476923, upload-time = "2026-05-06T02:31:01.492Z" }, + { url = "https://files.pythonhosted.org/packages/10/c1/f62167bd9d6f6c948b191a0943923404678d47100f777f4a8fb37816e6f8/optree-0.19.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7d934f240b109c6891dd06b2e30400b123b8a4b6ed31dcd0db2ae2378d30a6e8", size = 475385, upload-time = "2026-05-06T02:31:02.836Z" }, + { url = "https://files.pythonhosted.org/packages/30/5e/5323c5fa3024fdd900bdd8f14621139ed844c2247bf1a26e7cf5c1116188/optree-0.19.1-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ddeefb7ca799c09647e332ebc1a5f6c09888a5a0e51f2dff4ca55e65b42a8c14", size = 474406, upload-time = "2026-05-06T02:31:04.023Z" }, + { url = "https://files.pythonhosted.org/packages/e2/6a/54e4c47e61a51504a5224c933722e0c8a69925aacec4c08175e9675aeb81/optree-0.19.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0ce49f64f804f7f35f2f9c2a21e3ba94c090199fccdcfd40e3ded4426c5c175", size = 457596, upload-time = "2026-05-06T02:31:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/a7/12/bba07c0b769586c6bd54e81f1f734cad103dbe30abbadee940fe7d3e330e/optree-0.19.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:e0f02600832ab8d0f6c934dcb5c339e17a36938d477641a45798e02625ebe107", size = 417900, upload-time = "2026-05-06T02:31:07.251Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8f/6ae994bb47f9394b33912a14593f9247737dd6c3303811550e5a3e918107/optree-0.19.1-cp312-cp312-win32.whl", hash = "sha256:f10d58c1a17e1b32f9d9b5e1b9d1ad964d99c1113d9df0b9f62f2fe7dde19909", size = 317302, upload-time = "2026-05-06T02:31:08.627Z" }, + { url = "https://files.pythonhosted.org/packages/31/97/d7e3ec79dcdde81f785a0446acf75fea77723f5ca4b98556350d7877986f/optree-0.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:06f5c8a4cf356a1a276ce5cec1be44719ed260690f79c036d04b4d427e801258", size = 341362, upload-time = "2026-05-06T02:31:09.689Z" }, + { url = "https://files.pythonhosted.org/packages/33/97/813afb84a81fd8ae65444730907c05f0775fd6c79d3359c9e84bd3370445/optree-0.19.1-cp312-cp312-win_arm64.whl", hash = "sha256:a33bd23fc5c67ecb9ff491b75fde10cd9b53f47f8a876de842090e8c7a2437e1", size = 351838, upload-time = "2026-05-06T02:31:11.086Z" }, + { url = "https://files.pythonhosted.org/packages/c2/7b/0f2f3c9d55dda5127624daf68ff802ab624b739dd4b32aef505dac0c8e02/optree-0.19.1-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:f144cfd65fb17c6aa2c51818614eb009e6052d3d6ace91f7e570b1318cdcac4c", size = 929090, upload-time = "2026-05-06T02:31:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/15/e2/670d260dfd0532d64272dd6f7edd540a09d7040c0342b6cc6cf773568ea4/optree-0.19.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:39a006735d2a0a68751a3bc33d670184fddcd86db63b0293e1e819739e8105e4", size = 391528, upload-time = "2026-05-06T02:31:14.212Z" }, + { url = "https://files.pythonhosted.org/packages/f4/96/46c15e80b0c97e2ba6aba11339008a37cabc5ccf55c31c6c60aecdb79638/optree-0.19.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d2cb43c36638f469f5d8f4cf638e914de90c62242d8bed29f1b4487e0346ab94", size = 398231, upload-time = "2026-05-06T02:31:15.519Z" }, + { url = "https://files.pythonhosted.org/packages/7e/39/9d7d22cdaeb9a40ace2485f91c5b7c5f3a7f688575e2621e436561211cc1/optree-0.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e70faa00ab69331f49f8337d45021bed09ae2265d1db72eea9d7817af2b73c64", size = 429852, upload-time = "2026-05-06T02:31:16.992Z" }, + { url = "https://files.pythonhosted.org/packages/79/4c/1da9e8375e7b7fd9671dc5987682b042f6412c4d6fd9da03296403818d9f/optree-0.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1c5d21176b670407f4555aae40711668832599c4fb0627000c5ce3ed0d6e2dae", size = 398688, upload-time = "2026-05-06T02:31:18.113Z" }, + { url = "https://files.pythonhosted.org/packages/d3/50/cd2d178099618093f5a9fd1c9de80af2b428879922eae1e9f27f1002c8be/optree-0.19.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f658fa46305b2bdccdc5bb2cb07818aeaef88a1085499deda5be48a0a58d2971", size = 417560, upload-time = "2026-05-06T02:31:19.391Z" }, + { url = "https://files.pythonhosted.org/packages/d7/b0/f22ff5632083b5032caa80208dd202f8e963ed4aac11afa0a0f6a307fd68/optree-0.19.1-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:e757079d44a00319447f43df5c51e55bf9b62d9f05eea0e2db5ff7c7ca5ec71d", size = 482937, upload-time = "2026-05-06T02:31:20.799Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d4/7499d28be8b11eb40668262d27802119fe7e6ec4cd8816b76a1acd7b08f5/optree-0.19.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9690c132822d9dee479cf7dff8cc52a67c8af42a4f7529d21f0f4f1d99e4c84e", size = 477864, upload-time = "2026-05-06T02:31:22.077Z" }, + { url = "https://files.pythonhosted.org/packages/b1/6e/6c6fa6f1159ac68f4ee7666610127fb4c14d47a2fa7a0a48de3aecc24d4b/optree-0.19.1-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:544b70958dbd7e732bc6874e0180c609c9052115937d0ec28123bb49c1a574aa", size = 478319, upload-time = "2026-05-06T02:31:23.266Z" }, + { url = "https://files.pythonhosted.org/packages/68/b5/8a2427bbe4ee59e2ce26a14125728e3b48c7030c80984ba07d0e5d804d37/optree-0.19.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dde5b756946c1f1458aeab248a7a9b0c01bb06b5787de9f06d52ad38b745557", size = 462379, upload-time = "2026-05-06T02:31:24.543Z" }, + { url = "https://files.pythonhosted.org/packages/ee/0c/a073eeaea4d4f68e02d5883ed8268746a296e6749e3c46e0124ca45f306c/optree-0.19.1-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:f1d7838e8b1b62258abd73a5911afad1153ed76822070558c3ba7e0bb5b44192", size = 423061, upload-time = "2026-05-06T02:31:25.652Z" }, + { url = "https://files.pythonhosted.org/packages/5f/34/637b151d071ca94aea0087322f470ce84c5828ef6b9c0de7dc7b4420a1cf/optree-0.19.1-cp313-cp313-win32.whl", hash = "sha256:9870d33ec50cca0c46c2b431cea24c6247457da15fd4ad66ccb8ab78145c1490", size = 317439, upload-time = "2026-05-06T02:31:27.304Z" }, + { url = "https://files.pythonhosted.org/packages/50/52/49b8a8d9e94c57c6fa5008953f84a1c36a4119a3b90dcb7df745f1f05a00/optree-0.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:aa0845b725bcd0029e179cf9b4bc2cc016c7358e56fc7c0d2c43bf4d514c96cf", size = 343906, upload-time = "2026-05-06T02:31:28.774Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a9/1ae0a9685f5301f454f01d2490065b98df6956f90b1b2fd1cea9daa6d820/optree-0.19.1-cp313-cp313-win_arm64.whl", hash = "sha256:6f0b1efc177bed6495f78d39d5aa495ccb31cc20bcf64bb1b806ca4c919f4049", size = 353146, upload-time = "2026-05-06T02:31:29.976Z" }, + { url = "https://files.pythonhosted.org/packages/9c/77/4c8108cbce2c8ae2aa4b6adc7874082882e32cf131cb64b3a4411f50dec4/optree-0.19.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b964bcdb5cfe367cdf56447e80ba5a49123098d8c4e8e68b41c20890eec6e58e", size = 469723, upload-time = "2026-05-06T02:31:31.425Z" }, + { url = "https://files.pythonhosted.org/packages/64/33/ce9b54646ed4ab5773a9dc59767dadfe3de8bb2e97a3ed19205b995a7a31/optree-0.19.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:08ccec0ee5a565eb5aa4fe30383016a358627ea23d968ec8ab28b1f2ce4ce3d8", size = 437071, upload-time = "2026-05-06T02:31:33.027Z" }, + { url = "https://files.pythonhosted.org/packages/79/55/04260128a726e3550b49467a65bff859452897144b68bae54b2f2e5c27f1/optree-0.19.1-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:672588408906051d3e9a99aca6c0af93c6e0b638137a701418088eaa0bb6c719", size = 433503, upload-time = "2026-05-06T02:31:34.423Z" }, + { url = "https://files.pythonhosted.org/packages/d6/99/6a4cc29389667efa089a0c476b7c36b7d0a66e10dd2d8c2d19c776977566/optree-0.19.1-cp313-cp313t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:d16cef4d0555d49ce221d80249f1285a2d3faf932e451c3ce6cb8ccb6a846767", size = 496305, upload-time = "2026-05-06T02:31:35.835Z" }, + { url = "https://files.pythonhosted.org/packages/7f/46/506aa1a64abce69e2f4cec9cdac3da0cae207cf04c5e70e7f143bf8b29d8/optree-0.19.1-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc2db0b449baff53aa7e583306101de0ade5e5ae9e6fce78400eb2319bbd23dc", size = 492759, upload-time = "2026-05-06T02:31:37.265Z" }, + { url = "https://files.pythonhosted.org/packages/f5/28/2210de9a68722007fe007da3cae1a5971b92fc8113b5eecef66a04637959/optree-0.19.1-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:76b3e9e5d37e6b05ec82fff91758c8c0e27e159b35faea4b33d5eb975d720257", size = 495447, upload-time = "2026-05-06T02:31:38.505Z" }, + { url = "https://files.pythonhosted.org/packages/d9/61/40c3463e52914d552c66c760ae15e673137c4cc1d1d9f8da0d745656193a/optree-0.19.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03faa8e23fdaf3a18f9a1568c2c0eb0641a6aa05baf3a20639bd11fb34664700", size = 475564, upload-time = "2026-05-06T02:31:39.732Z" }, + { url = "https://files.pythonhosted.org/packages/0a/66/1603680fa924e68e5697c1229510c0645db0a9c633a12d1a9bfdbfc9cb74/optree-0.19.1-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:a9b9c7e9148ec470124dc4c1d1cd1485dbeb35973357b5911b181a79090426d2", size = 442414, upload-time = "2026-05-06T02:31:40.908Z" }, + { url = "https://files.pythonhosted.org/packages/a5/58/34820bab11f28ba6b03fe9e151880ad591b43f26648f058c94451fbdfc3a/optree-0.19.1-cp313-cp313t-win32.whl", hash = "sha256:ab8ad9803376d553a2958471b6bb6842b7e15888e19cc6aeb76da96c6afd948d", size = 348644, upload-time = "2026-05-06T02:31:42.038Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2b/0be3f8b9765f366e3e12d0590e9c6514de110d0c5b3b9002f49e56bf15b1/optree-0.19.1-cp313-cp313t-win_amd64.whl", hash = "sha256:afd4abeb2783b2367093287bc6268ac9af244b20c8d9b01696ccfe817483b66c", size = 382445, upload-time = "2026-05-06T02:31:43.166Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fa/8c0882cdd42e28a23c1998297c8ad1202194510cbba8b050251429c641c0/optree-0.19.1-cp313-cp313t-win_arm64.whl", hash = "sha256:b9120510d3f951e268e417a3f64f335bc1c539e1e80bff2129ddc6fb60ac7b56", size = 388040, upload-time = "2026-05-06T02:31:44.661Z" }, + { url = "https://files.pythonhosted.org/packages/e3/da/4e16e26375c56c9e40760697af4e2b72f196c2099e96cc783b63dcc862a8/optree-0.19.1-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:e1951ddc870f67430310fd17393971c30510ee9fd290525b44c12afe25f3c307", size = 927808, upload-time = "2026-05-06T02:31:45.954Z" }, + { url = "https://files.pythonhosted.org/packages/6b/87/ff1c6bb6b79a5d0b70b83f7ae8b78811a406a749b3ae4478a2122a7afb66/optree-0.19.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:ae9d42718ebf985cdad3182364b5cf829193b8fd2c6d993fbb4111d38e2bdf96", size = 390981, upload-time = "2026-05-06T02:31:47.38Z" }, + { url = "https://files.pythonhosted.org/packages/82/25/fc648710102960f87d18cd8fc8a24afe14a5ec7827c64dfb1340230c0794/optree-0.19.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:930268ebfdebca43a8808f6293910d6ade2fe7c84fa784692017d7120d285226", size = 397756, upload-time = "2026-05-06T02:31:48.76Z" }, + { url = "https://files.pythonhosted.org/packages/24/f6/a7bf5d75a6481038bbb61846d87d43124d63741385796ef7b37d326f46bd/optree-0.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:b2757c5d922aab76cfc9b870c373fb35209c2094e3c912733b326c043e85a0c6", size = 427424, upload-time = "2026-05-06T02:31:49.838Z" }, + { url = "https://files.pythonhosted.org/packages/49/cc/14dd93887295859457e507fc46a847b68ae8f20c42b2fde4d8a749c94bbc/optree-0.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b17a7b70ff8bd406c2142914c5ab0a57f8bcfb9f52181f7012e32406bbdbfdda", size = 398242, upload-time = "2026-05-06T02:31:51.262Z" }, + { url = "https://files.pythonhosted.org/packages/17/b5/ac51aa118dd918761519fbc031865b1d6f850453e9a7ac0c3da21109c4f0/optree-0.19.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:987bba55366917d9829f45b5ee86499ecc87a30e9103072db9ab8d67f9958179", size = 419568, upload-time = "2026-05-06T02:31:52.349Z" }, + { url = "https://files.pythonhosted.org/packages/ec/41/25144e61f76278b9e0a5d4189c7083fe853164c5f7328a1f5aac43d964c2/optree-0.19.1-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:d3bba2af7a5fce0c25e99024688e68dfe9be41e3d6e92720febbefdc879fba38", size = 482797, upload-time = "2026-05-06T02:31:53.471Z" }, + { url = "https://files.pythonhosted.org/packages/22/47/2c76c7ce937323988770c41126e0e380bcb73a816f68a767f23b5c33aced/optree-0.19.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dae6c247cc8751bd2f167951468769f5c98f8cfdae31c0db0f2eb4145a6ec560", size = 479794, upload-time = "2026-05-06T02:31:54.843Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ca/bd9553f94bec0bc7860f10ae177c14ca265ab19ddb463122be22fa335ee8/optree-0.19.1-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:17a986fd91ccdc18bb7b587ca1f508c1761580a93517e6db33a13b22e46acb9b", size = 481084, upload-time = "2026-05-06T02:31:56.261Z" }, + { url = "https://files.pythonhosted.org/packages/9c/1a/4834b1f2fb1847412353d7342eb7a1d001a4f3bd9d24155e057135a4aa44/optree-0.19.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3d0e1493429ae1d1a5e34855774ee604c974a8f76656bd0e562cdbf9466c9b1f", size = 462955, upload-time = "2026-05-06T02:31:57.829Z" }, + { url = "https://files.pythonhosted.org/packages/f4/88/598fb91c06fee3d8b08568779b011225dc2b66140927bd0b2b2d9b40a566/optree-0.19.1-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:f61a01ed9991193ed6f3db8e956ede05218190a32ca2ddfb71cfc40c8daba1d5", size = 423754, upload-time = "2026-05-06T02:31:59.291Z" }, + { url = "https://files.pythonhosted.org/packages/20/8a/83c64ecadc686e08310fc9c20bc0bbe6453e89b69257e08887818dac7886/optree-0.19.1-cp314-cp314-win32.whl", hash = "sha256:b0c920579bddc3b18a0e051850f017618e24efcc19ba83dcd415cf74db5fd904", size = 325214, upload-time = "2026-05-06T02:32:00.802Z" }, + { url = "https://files.pythonhosted.org/packages/96/c3/4f2f318b98465376bbb7a06a33da553c688b3ed39dafbb8307f824eef74a/optree-0.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:50d77b91a8cd01adf422472b7edf39fc445b0268816176a868a385d28f8367c2", size = 351654, upload-time = "2026-05-06T02:32:01.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ab/55d7508e87055c730fe7207cfd0c45183a07ddf1f91d9e73d017a7f8c1f4/optree-0.19.1-cp314-cp314-win_arm64.whl", hash = "sha256:c682ab6711b7a623503711fa661a2bba7886e1c21dc06c3b7febba101b458051", size = 361610, upload-time = "2026-05-06T02:32:03.003Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/4f7facd482d56079b7adb8ce3fede19f41629bc0463e8ee25907f1dba36c/optree-0.19.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:068edb89fadd94f6f57fdb51f4ad2c764b5a0bfd00903c55ffe433c2863a8037", size = 469130, upload-time = "2026-05-06T02:32:04.395Z" }, + { url = "https://files.pythonhosted.org/packages/92/60/f7539012aa8a7488c1e34f66b76eadc384c3152dd9800973f1b5fe045dfd/optree-0.19.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a609c90e4f64e4f3e2b5b3cc022210314834737e0e61a745485e33b33eae773b", size = 437286, upload-time = "2026-05-06T02:32:05.527Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3f/a5f8fb3ec3840f885de52d7a793ba57ace17990e3a9b3797218425ffe842/optree-0.19.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dfae64c4c371640a4b3e2a9e3e6aa3a3e8cdf2da5247a88fef5b632614b948a6", size = 431954, upload-time = "2026-05-06T02:32:06.83Z" }, + { url = "https://files.pythonhosted.org/packages/68/dc/6d0ef14bc82bd54046c1a066d25fa6854123a6b29fd691f1f95dec3ab45f/optree-0.19.1-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:470742544ff2d4b63843023f38dcfb83e82c3a9877c783dee0e69cbb974de6d1", size = 494631, upload-time = "2026-05-06T02:32:08.038Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9a/9e183c610c414cba581f9afda7610589d89cae229d627b14f8480425d975/optree-0.19.1-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1a74e0656ccef45b1fec07b9d964ce97f3def8bab73711f56175076c4259884f", size = 491786, upload-time = "2026-05-06T02:32:09.363Z" }, + { url = "https://files.pythonhosted.org/packages/4d/73/266b9de8eb5b16bfe7010c90c55840517d5d61ee6e0ca64901440296d97a/optree-0.19.1-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f55841132ba8a34dbbd85e0c2cf990602384eea0e4638df986cd3266482f4a17", size = 490876, upload-time = "2026-05-06T02:32:11.388Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8d/42a8ca6277ef93d47ab0986e30a25134206afe0c6e6c3425c8736b2677ba/optree-0.19.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5f8383952f18d5a4ec6b248d8ae6fe27012434ad9750aa33a821ad4846da5af", size = 475079, upload-time = "2026-05-06T02:32:12.768Z" }, + { url = "https://files.pythonhosted.org/packages/63/91/e363f4adda292f891ca0cf5748010fea955737bdf494cc11d4c3bcda6935/optree-0.19.1-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:de8acbed5965beae6f6b0456fcb8d1afaea1fe300810739e88645e22138849bc", size = 440119, upload-time = "2026-05-06T02:32:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/3f/eb/489d22ef3cadb2f5f3bbd6e6099d17b5a521ff533e086f78f005c3358017/optree-0.19.1-cp314-cp314t-win32.whl", hash = "sha256:312048e69dc88de26915674f961bf38980a765a6b48ead2f1672858a39402c41", size = 357465, upload-time = "2026-05-06T02:32:15.424Z" }, + { url = "https://files.pythonhosted.org/packages/e0/34/7f48b7034ff75d2eb3e94e2196709ddbf762798fb621f9508899fa66b44e/optree-0.19.1-cp314-cp314t-win_amd64.whl", hash = "sha256:60e9345405d7b06cafdf1b1dd2e2261ceddddce10f35729240f90e2bab845a0b", size = 397783, upload-time = "2026-05-06T02:32:16.853Z" }, + { url = "https://files.pythonhosted.org/packages/07/42/6d6f93416c66820cb8753e65b5ff43c47480af9c4911bd2b8406ff0f7f27/optree-0.19.1-cp314-cp314t-win_arm64.whl", hash = "sha256:4e103e212d1e8fe0399ed076eff80a905fb14929729bbd994d3660110a27a252", size = 396064, upload-time = "2026-05-06T02:32:18.077Z" }, ] [[package]] name = "optype" -version = "0.15.0" +version = "0.17.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/93/6b9e43138ce36fbad134bd1a50460a7bbda61105b5a964e4cf773fe4d845/optype-0.15.0.tar.gz", hash = "sha256:457d6ca9e7da19967ec16d42bdf94e240b33b5d70a56fbbf5b427e5ea39cf41e", size = 99978, upload-time = "2025-12-08T12:32:41.422Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/86/e6f1f6f3487492dfcf3b7a2d4e2534d27af6ac05b364b276706906c34865/optype-0.17.1.tar.gz", hash = "sha256:07bfa32b795dea28fba8605a6288d36370d072f25183fb9c29b5a90f4b6f5638", size = 53572, upload-time = "2026-05-17T22:13:28.725Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/8b/93f6c496fc5da062fd7e7c4745b5a8dd09b7b576c626075844fe97951a7d/optype-0.15.0-py3-none-any.whl", hash = "sha256:caba40ece9ea39b499fa76c036a82e0d452a432dd4dd3e8e0d30892be2e8c76c", size = 88716, upload-time = "2025-12-08T12:32:39.669Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d4/c6a2b043e33f0dd012486dcebe0593585588d400175d22aad42049c88321/optype-0.17.1-py3-none-any.whl", hash = "sha256:82f2508ca31cb21e53a41648482d890fe1f5c6cb153720551af41161555adaf1", size = 65954, upload-time = "2026-05-17T22:13:27.549Z" }, ] [package.optional-dependencies] @@ -4496,126 +3411,74 @@ numpy = [ { name = "numpy-typing-compat" }, ] -[[package]] -name = "orjson" -version = "3.11.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/b8/333fdb27840f3bf04022d21b654a35f58e15407183aeb16f3b41aa053446/orjson-3.11.5.tar.gz", hash = "sha256:82393ab47b4fe44ffd0a7659fa9cfaacc717eb617c93cde83795f14af5c2e9d5", size = 5972347, upload-time = "2025-12-06T15:55:39.458Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a4/8052a029029b096a78955eadd68ab594ce2197e24ec50e6b6d2ab3f4e33b/orjson-3.11.5-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:334e5b4bff9ad101237c2d799d9fd45737752929753bf4faf4b207335a416b7d", size = 245347, upload-time = "2025-12-06T15:54:22.061Z" }, - { url = "https://files.pythonhosted.org/packages/64/67/574a7732bd9d9d79ac620c8790b4cfe0717a3d5a6eb2b539e6e8995e24a0/orjson-3.11.5-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:ff770589960a86eae279f5d8aa536196ebda8273a2a07db2a54e82b93bc86626", size = 129435, upload-time = "2025-12-06T15:54:23.615Z" }, - { url = "https://files.pythonhosted.org/packages/52/8d/544e77d7a29d90cf4d9eecd0ae801c688e7f3d1adfa2ebae5e1e94d38ab9/orjson-3.11.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed24250e55efbcb0b35bed7caaec8cedf858ab2f9f2201f17b8938c618c8ca6f", size = 132074, upload-time = "2025-12-06T15:54:24.694Z" }, - { url = "https://files.pythonhosted.org/packages/6e/57/b9f5b5b6fbff9c26f77e785baf56ae8460ef74acdb3eae4931c25b8f5ba9/orjson-3.11.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a66d7769e98a08a12a139049aac2f0ca3adae989817f8c43337455fbc7669b85", size = 130520, upload-time = "2025-12-06T15:54:26.185Z" }, - { url = "https://files.pythonhosted.org/packages/f6/6d/d34970bf9eb33f9ec7c979a262cad86076814859e54eb9a059a52f6dc13d/orjson-3.11.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86cfc555bfd5794d24c6a1903e558b50644e5e68e6471d66502ce5cb5fdef3f9", size = 136209, upload-time = "2025-12-06T15:54:27.264Z" }, - { url = "https://files.pythonhosted.org/packages/e7/39/bc373b63cc0e117a105ea12e57280f83ae52fdee426890d57412432d63b3/orjson-3.11.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a230065027bc2a025e944f9d4714976a81e7ecfa940923283bca7bbc1f10f626", size = 139837, upload-time = "2025-12-06T15:54:28.75Z" }, - { url = "https://files.pythonhosted.org/packages/cb/aa/7c4818c8d7d324da220f4f1af55c343956003aa4d1ce1857bdc1d396ba69/orjson-3.11.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b29d36b60e606df01959c4b982729c8845c69d1963f88686608be9ced96dbfaa", size = 137307, upload-time = "2025-12-06T15:54:29.856Z" }, - { url = "https://files.pythonhosted.org/packages/46/bf/0993b5a056759ba65145effe3a79dd5a939d4a070eaa5da2ee3180fbb13f/orjson-3.11.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c74099c6b230d4261fdc3169d50efc09abf38ace1a42ea2f9994b1d79153d477", size = 139020, upload-time = "2025-12-06T15:54:31.024Z" }, - { url = "https://files.pythonhosted.org/packages/65/e8/83a6c95db3039e504eda60fc388f9faedbb4f6472f5aba7084e06552d9aa/orjson-3.11.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e697d06ad57dd0c7a737771d470eedc18e68dfdefcdd3b7de7f33dfda5b6212e", size = 141099, upload-time = "2025-12-06T15:54:32.196Z" }, - { url = "https://files.pythonhosted.org/packages/b9/b4/24fdc024abfce31c2f6812973b0a693688037ece5dc64b7a60c1ce69e2f2/orjson-3.11.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e08ca8a6c851e95aaecc32bc44a5aa75d0ad26af8cdac7c77e4ed93acf3d5b69", size = 413540, upload-time = "2025-12-06T15:54:33.361Z" }, - { url = "https://files.pythonhosted.org/packages/d9/37/01c0ec95d55ed0c11e4cae3e10427e479bba40c77312b63e1f9665e0737d/orjson-3.11.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e8b5f96c05fce7d0218df3fdfeb962d6b8cfff7e3e20264306b46dd8b217c0f3", size = 151530, upload-time = "2025-12-06T15:54:34.6Z" }, - { url = "https://files.pythonhosted.org/packages/f9/d4/f9ebc57182705bb4bbe63f5bbe14af43722a2533135e1d2fb7affa0c355d/orjson-3.11.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ddbfdb5099b3e6ba6d6ea818f61997bb66de14b411357d24c4612cf1ebad08ca", size = 141863, upload-time = "2025-12-06T15:54:35.801Z" }, - { url = "https://files.pythonhosted.org/packages/0d/04/02102b8d19fdcb009d72d622bb5781e8f3fae1646bf3e18c53d1bc8115b5/orjson-3.11.5-cp312-cp312-win32.whl", hash = "sha256:9172578c4eb09dbfcf1657d43198de59b6cef4054de385365060ed50c458ac98", size = 135255, upload-time = "2025-12-06T15:54:37.209Z" }, - { url = "https://files.pythonhosted.org/packages/d4/fb/f05646c43d5450492cb387de5549f6de90a71001682c17882d9f66476af5/orjson-3.11.5-cp312-cp312-win_amd64.whl", hash = "sha256:2b91126e7b470ff2e75746f6f6ee32b9ab67b7a93c8ba1d15d3a0caaf16ec875", size = 133252, upload-time = "2025-12-06T15:54:38.401Z" }, - { url = "https://files.pythonhosted.org/packages/dc/a6/7b8c0b26ba18c793533ac1cd145e131e46fcf43952aa94c109b5b913c1f0/orjson-3.11.5-cp312-cp312-win_arm64.whl", hash = "sha256:acbc5fac7e06777555b0722b8ad5f574739e99ffe99467ed63da98f97f9ca0fe", size = 126777, upload-time = "2025-12-06T15:54:39.515Z" }, - { url = "https://files.pythonhosted.org/packages/10/43/61a77040ce59f1569edf38f0b9faadc90c8cf7e9bec2e0df51d0132c6bb7/orjson-3.11.5-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:3b01799262081a4c47c035dd77c1301d40f568f77cc7ec1bb7db5d63b0a01629", size = 245271, upload-time = "2025-12-06T15:54:40.878Z" }, - { url = "https://files.pythonhosted.org/packages/55/f9/0f79be617388227866d50edd2fd320cb8fb94dc1501184bb1620981a0aba/orjson-3.11.5-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:61de247948108484779f57a9f406e4c84d636fa5a59e411e6352484985e8a7c3", size = 129422, upload-time = "2025-12-06T15:54:42.403Z" }, - { url = "https://files.pythonhosted.org/packages/77/42/f1bf1549b432d4a78bfa95735b79b5dac75b65b5bb815bba86ad406ead0a/orjson-3.11.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:894aea2e63d4f24a7f04a1908307c738d0dce992e9249e744b8f4e8dd9197f39", size = 132060, upload-time = "2025-12-06T15:54:43.531Z" }, - { url = "https://files.pythonhosted.org/packages/25/49/825aa6b929f1a6ed244c78acd7b22c1481fd7e5fda047dc8bf4c1a807eb6/orjson-3.11.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ddc21521598dbe369d83d4d40338e23d4101dad21dae0e79fa20465dbace019f", size = 130391, upload-time = "2025-12-06T15:54:45.059Z" }, - { url = "https://files.pythonhosted.org/packages/42/ec/de55391858b49e16e1aa8f0bbbb7e5997b7345d8e984a2dec3746d13065b/orjson-3.11.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7cce16ae2f5fb2c53c3eafdd1706cb7b6530a67cc1c17abe8ec747f5cd7c0c51", size = 135964, upload-time = "2025-12-06T15:54:46.576Z" }, - { url = "https://files.pythonhosted.org/packages/1c/40/820bc63121d2d28818556a2d0a09384a9f0262407cf9fa305e091a8048df/orjson-3.11.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e46c762d9f0e1cfb4ccc8515de7f349abbc95b59cb5a2bd68df5973fdef913f8", size = 139817, upload-time = "2025-12-06T15:54:48.084Z" }, - { url = "https://files.pythonhosted.org/packages/09/c7/3a445ca9a84a0d59d26365fd8898ff52bdfcdcb825bcc6519830371d2364/orjson-3.11.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d7345c759276b798ccd6d77a87136029e71e66a8bbf2d2755cbdde1d82e78706", size = 137336, upload-time = "2025-12-06T15:54:49.426Z" }, - { url = "https://files.pythonhosted.org/packages/9a/b3/dc0d3771f2e5d1f13368f56b339c6782f955c6a20b50465a91acb79fe961/orjson-3.11.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75bc2e59e6a2ac1dd28901d07115abdebc4563b5b07dd612bf64260a201b1c7f", size = 138993, upload-time = "2025-12-06T15:54:50.939Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a2/65267e959de6abe23444659b6e19c888f242bf7725ff927e2292776f6b89/orjson-3.11.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:54aae9b654554c3b4edd61896b978568c6daa16af96fa4681c9b5babd469f863", size = 141070, upload-time = "2025-12-06T15:54:52.414Z" }, - { url = "https://files.pythonhosted.org/packages/63/c9/da44a321b288727a322c6ab17e1754195708786a04f4f9d2220a5076a649/orjson-3.11.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4bdd8d164a871c4ec773f9de0f6fe8769c2d6727879c37a9666ba4183b7f8228", size = 413505, upload-time = "2025-12-06T15:54:53.67Z" }, - { url = "https://files.pythonhosted.org/packages/7f/17/68dc14fa7000eefb3d4d6d7326a190c99bb65e319f02747ef3ebf2452f12/orjson-3.11.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a261fef929bcf98a60713bf5e95ad067cea16ae345d9a35034e73c3990e927d2", size = 151342, upload-time = "2025-12-06T15:54:55.113Z" }, - { url = "https://files.pythonhosted.org/packages/c4/c5/ccee774b67225bed630a57478529fc026eda33d94fe4c0eac8fe58d4aa52/orjson-3.11.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c028a394c766693c5c9909dec76b24f37e6a1b91999e8d0c0d5feecbe93c3e05", size = 141823, upload-time = "2025-12-06T15:54:56.331Z" }, - { url = "https://files.pythonhosted.org/packages/67/80/5d00e4155d0cd7390ae2087130637671da713959bb558db9bac5e6f6b042/orjson-3.11.5-cp313-cp313-win32.whl", hash = "sha256:2cc79aaad1dfabe1bd2d50ee09814a1253164b3da4c00a78c458d82d04b3bdef", size = 135236, upload-time = "2025-12-06T15:54:57.507Z" }, - { url = "https://files.pythonhosted.org/packages/95/fe/792cc06a84808dbdc20ac6eab6811c53091b42f8e51ecebf14b540e9cfe4/orjson-3.11.5-cp313-cp313-win_amd64.whl", hash = "sha256:ff7877d376add4e16b274e35a3f58b7f37b362abf4aa31863dadacdd20e3a583", size = 133167, upload-time = "2025-12-06T15:54:58.71Z" }, - { url = "https://files.pythonhosted.org/packages/46/2c/d158bd8b50e3b1cfdcf406a7e463f6ffe3f0d167b99634717acdaf5e299f/orjson-3.11.5-cp313-cp313-win_arm64.whl", hash = "sha256:59ac72ea775c88b163ba8d21b0177628bd015c5dd060647bbab6e22da3aad287", size = 126712, upload-time = "2025-12-06T15:54:59.892Z" }, - { url = "https://files.pythonhosted.org/packages/c2/60/77d7b839e317ead7bb225d55bb50f7ea75f47afc489c81199befc5435b50/orjson-3.11.5-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e446a8ea0a4c366ceafc7d97067bfd55292969143b57e3c846d87fc701e797a0", size = 245252, upload-time = "2025-12-06T15:55:01.127Z" }, - { url = "https://files.pythonhosted.org/packages/f1/aa/d4639163b400f8044cef0fb9aa51b0337be0da3a27187a20d1166e742370/orjson-3.11.5-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:53deb5addae9c22bbe3739298f5f2196afa881ea75944e7720681c7080909a81", size = 129419, upload-time = "2025-12-06T15:55:02.723Z" }, - { url = "https://files.pythonhosted.org/packages/30/94/9eabf94f2e11c671111139edf5ec410d2f21e6feee717804f7e8872d883f/orjson-3.11.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cd00d49d6063d2b8791da5d4f9d20539c5951f965e45ccf4e96d33505ce68f", size = 132050, upload-time = "2025-12-06T15:55:03.918Z" }, - { url = "https://files.pythonhosted.org/packages/3d/c8/ca10f5c5322f341ea9a9f1097e140be17a88f88d1cfdd29df522970d9744/orjson-3.11.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3fd15f9fc8c203aeceff4fda211157fad114dde66e92e24097b3647a08f4ee9e", size = 130370, upload-time = "2025-12-06T15:55:05.173Z" }, - { url = "https://files.pythonhosted.org/packages/25/d4/e96824476d361ee2edd5c6290ceb8d7edf88d81148a6ce172fc00278ca7f/orjson-3.11.5-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df95000fbe6777bf9820ae82ab7578e8662051bb5f83d71a28992f539d2cda7", size = 136012, upload-time = "2025-12-06T15:55:06.402Z" }, - { url = "https://files.pythonhosted.org/packages/85/8e/9bc3423308c425c588903f2d103cfcfe2539e07a25d6522900645a6f257f/orjson-3.11.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a8d676748fca47ade5bc3da7430ed7767afe51b2f8100e3cd65e151c0eaceb", size = 139809, upload-time = "2025-12-06T15:55:07.656Z" }, - { url = "https://files.pythonhosted.org/packages/e9/3c/b404e94e0b02a232b957c54643ce68d0268dacb67ac33ffdee24008c8b27/orjson-3.11.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa0f513be38b40234c77975e68805506cad5d57b3dfd8fe3baa7f4f4051e15b4", size = 137332, upload-time = "2025-12-06T15:55:08.961Z" }, - { url = "https://files.pythonhosted.org/packages/51/30/cc2d69d5ce0ad9b84811cdf4a0cd5362ac27205a921da524ff42f26d65e0/orjson-3.11.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1863e75b92891f553b7922ce4ee10ed06db061e104f2b7815de80cdcb135ad", size = 138983, upload-time = "2025-12-06T15:55:10.595Z" }, - { url = "https://files.pythonhosted.org/packages/0e/87/de3223944a3e297d4707d2fe3b1ffb71437550e165eaf0ca8bbe43ccbcb1/orjson-3.11.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d4be86b58e9ea262617b8ca6251a2f0d63cc132a6da4b5fcc8e0a4128782c829", size = 141069, upload-time = "2025-12-06T15:55:11.832Z" }, - { url = "https://files.pythonhosted.org/packages/65/30/81d5087ae74be33bcae3ff2d80f5ccaa4a8fedc6d39bf65a427a95b8977f/orjson-3.11.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:b923c1c13fa02084eb38c9c065afd860a5cff58026813319a06949c3af5732ac", size = 413491, upload-time = "2025-12-06T15:55:13.314Z" }, - { url = "https://files.pythonhosted.org/packages/d0/6f/f6058c21e2fc1efaf918986dbc2da5cd38044f1a2d4b7b91ad17c4acf786/orjson-3.11.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:1b6bd351202b2cd987f35a13b5e16471cf4d952b42a73c391cc537974c43ef6d", size = 151375, upload-time = "2025-12-06T15:55:14.715Z" }, - { url = "https://files.pythonhosted.org/packages/54/92/c6921f17d45e110892899a7a563a925b2273d929959ce2ad89e2525b885b/orjson-3.11.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bb150d529637d541e6af06bbe3d02f5498d628b7f98267ff87647584293ab439", size = 141850, upload-time = "2025-12-06T15:55:15.94Z" }, - { url = "https://files.pythonhosted.org/packages/88/86/cdecb0140a05e1a477b81f24739da93b25070ee01ce7f7242f44a6437594/orjson-3.11.5-cp314-cp314-win32.whl", hash = "sha256:9cc1e55c884921434a84a0c3dd2699eb9f92e7b441d7f53f3941079ec6ce7499", size = 135278, upload-time = "2025-12-06T15:55:17.202Z" }, - { url = "https://files.pythonhosted.org/packages/e4/97/b638d69b1e947d24f6109216997e38922d54dcdcdb1b11c18d7efd2d3c59/orjson-3.11.5-cp314-cp314-win_amd64.whl", hash = "sha256:a4f3cb2d874e03bc7767c8f88adaa1a9a05cecea3712649c3b58589ec7317310", size = 133170, upload-time = "2025-12-06T15:55:18.468Z" }, - { url = "https://files.pythonhosted.org/packages/8f/dd/f4fff4a6fe601b4f8f3ba3aa6da8ac33d17d124491a3b804c662a70e1636/orjson-3.11.5-cp314-cp314-win_arm64.whl", hash = "sha256:38b22f476c351f9a1c43e5b07d8b5a02eb24a6ab8e75f700f7d479d4568346a5", size = 126713, upload-time = "2025-12-06T15:55:19.738Z" }, -] - [[package]] name = "packaging" -version = "25.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, -] - -[[package]] -name = "paginate" -version = "0.5.7" +version = "26.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, ] [[package]] name = "parso" -version = "0.8.5" +version = "0.8.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/4b/90c937815137d43ce71ba043cd3566221e9df6b9c805f24b5d138c9d40a7/parso-0.8.7.tar.gz", hash = "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1", size = 401824, upload-time = "2026-05-01T23:13:02.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, + { url = "https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl", hash = "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", size = 107025, upload-time = "2026-05-01T23:12:58.867Z" }, ] [[package]] name = "pathspec" -version = "0.12.1" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, ] [[package]] name = "pendulum" -version = "3.1.0" +version = "3.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/7c/009c12b86c7cc6c403aec80f8a4308598dfc5995e5c523a5491faaa3952e/pendulum-3.1.0.tar.gz", hash = "sha256:66f96303560f41d097bee7d2dc98ffca716fbb3a832c4b3062034c2d45865015", size = 85930, upload-time = "2025-04-19T14:30:01.675Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/d7/b1bfe15a742f2c2713acb1fdc7dc3594ff46ef9418ac6a96fcb12a6ba60b/pendulum-3.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4dfd53e7583ccae138be86d6c0a0b324c7547df2afcec1876943c4d481cf9608", size = 336209, upload-time = "2025-04-19T14:01:27.815Z" }, - { url = "https://files.pythonhosted.org/packages/eb/87/0392da0c603c828b926d9f7097fbdddaafc01388cb8a00888635d04758c3/pendulum-3.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6a6e06a28f3a7d696546347805536f6f38be458cb79de4f80754430696bea9e6", size = 323130, upload-time = "2025-04-19T14:01:29.336Z" }, - { url = "https://files.pythonhosted.org/packages/c0/61/95f1eec25796be6dddf71440ee16ec1fd0c573fc61a73bd1ef6daacd529a/pendulum-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e68d6a51880708084afd8958af42dc8c5e819a70a6c6ae903b1c4bfc61e0f25", size = 341509, upload-time = "2025-04-19T14:01:31.1Z" }, - { url = "https://files.pythonhosted.org/packages/b5/7b/eb0f5e6aa87d5e1b467a1611009dbdc92f0f72425ebf07669bfadd8885a6/pendulum-3.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e3f1e5da39a7ea7119efda1dd96b529748c1566f8a983412d0908455d606942", size = 378674, upload-time = "2025-04-19T14:01:32.974Z" }, - { url = "https://files.pythonhosted.org/packages/29/68/5a4c1b5de3e54e16cab21d2ec88f9cd3f18599e96cc90a441c0b0ab6b03f/pendulum-3.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9af1e5eeddb4ebbe1b1c9afb9fd8077d73416ade42dd61264b3f3b87742e0bb", size = 436133, upload-time = "2025-04-19T14:01:34.349Z" }, - { url = "https://files.pythonhosted.org/packages/87/5d/f7a1d693e5c0f789185117d5c1d5bee104f5b0d9fbf061d715fb61c840a8/pendulum-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f74aa8029a42e327bfc150472e0e4d2358fa5d795f70460160ba81b94b6945", size = 351232, upload-time = "2025-04-19T14:01:35.669Z" }, - { url = "https://files.pythonhosted.org/packages/30/77/c97617eb31f1d0554edb073201a294019b9e0a9bd2f73c68e6d8d048cd6b/pendulum-3.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cf6229e5ee70c2660148523f46c472e677654d0097bec010d6730f08312a4931", size = 521562, upload-time = "2025-04-19T14:01:37.05Z" }, - { url = "https://files.pythonhosted.org/packages/76/22/0d0ef3393303877e757b848ecef8a9a8c7627e17e7590af82d14633b2cd1/pendulum-3.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:350cabb23bf1aec7c7694b915d3030bff53a2ad4aeabc8c8c0d807c8194113d6", size = 523221, upload-time = "2025-04-19T14:01:38.444Z" }, - { url = "https://files.pythonhosted.org/packages/99/f3/aefb579aa3cebd6f2866b205fc7a60d33e9a696e9e629024752107dc3cf5/pendulum-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:42959341e843077c41d47420f28c3631de054abd64da83f9b956519b5c7a06a7", size = 260502, upload-time = "2025-04-19T14:01:39.814Z" }, - { url = "https://files.pythonhosted.org/packages/02/74/4332b5d6e34c63d4df8e8eab2249e74c05513b1477757463f7fdca99e9be/pendulum-3.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:006758e2125da2e624493324dfd5d7d1b02b0c44bc39358e18bf0f66d0767f5f", size = 253089, upload-time = "2025-04-19T14:01:41.171Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1f/af928ba4aa403dac9569f787adcf024005e7654433d71f7a84e608716837/pendulum-3.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:28658b0baf4b30eb31d096a375983cfed033e60c0a7bbe94fa23f06cd779b50b", size = 336209, upload-time = "2025-04-19T14:01:42.775Z" }, - { url = "https://files.pythonhosted.org/packages/b6/16/b010643007ba964c397da7fa622924423883c1bbff1a53f9d1022cd7f024/pendulum-3.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b114dcb99ce511cb8f5495c7b6f0056b2c3dba444ef1ea6e48030d7371bd531a", size = 323132, upload-time = "2025-04-19T14:01:44.577Z" }, - { url = "https://files.pythonhosted.org/packages/64/19/c3c47aeecb5d9bceb0e89faafd800d39809b696c5b7bba8ec8370ad5052c/pendulum-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2404a6a54c80252ea393291f0b7f35525a61abae3d795407f34e118a8f133a18", size = 341509, upload-time = "2025-04-19T14:01:46.084Z" }, - { url = "https://files.pythonhosted.org/packages/38/cf/c06921ff6b860ff7e62e70b8e5d4dc70e36f5abb66d168bd64d51760bc4e/pendulum-3.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d06999790d9ee9962a1627e469f98568bf7ad1085553fa3c30ed08b3944a14d7", size = 378674, upload-time = "2025-04-19T14:01:47.727Z" }, - { url = "https://files.pythonhosted.org/packages/62/0b/a43953b9eba11e82612b033ac5133f716f1b76b6108a65da6f408b3cc016/pendulum-3.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94751c52f6b7c306734d1044c2c6067a474237e1e5afa2f665d1fbcbbbcf24b3", size = 436133, upload-time = "2025-04-19T14:01:49.126Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a0/ec3d70b3b96e23ae1d039f132af35e17704c22a8250d1887aaefea4d78a6/pendulum-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5553ac27be05e997ec26d7f004cf72788f4ce11fe60bb80dda604a64055b29d0", size = 351232, upload-time = "2025-04-19T14:01:50.575Z" }, - { url = "https://files.pythonhosted.org/packages/f4/97/aba23f1716b82f6951ba2b1c9178a2d107d1e66c102762a9bf19988547ea/pendulum-3.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f8dee234ca6142bf0514368d01a72945a44685aaa2fc4c14c98d09da9437b620", size = 521563, upload-time = "2025-04-19T14:01:51.9Z" }, - { url = "https://files.pythonhosted.org/packages/01/33/2c0d5216cc53d16db0c4b3d510f141ee0a540937f8675948541190fbd48b/pendulum-3.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7378084fe54faab4ee481897a00b710876f2e901ded6221671e827a253e643f2", size = 523221, upload-time = "2025-04-19T14:01:53.275Z" }, - { url = "https://files.pythonhosted.org/packages/51/89/8de955c339c31aeae77fd86d3225509b998c81875e9dba28cb88b8cbf4b3/pendulum-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:8539db7ae2c8da430ac2515079e288948c8ebf7eb1edd3e8281b5cdf433040d6", size = 260501, upload-time = "2025-04-19T14:01:54.749Z" }, - { url = "https://files.pythonhosted.org/packages/15/c3/226a3837363e94f8722461848feec18bfdd7d5172564d53aa3c3397ff01e/pendulum-3.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:1ce26a608e1f7387cd393fba2a129507c4900958d4f47b90757ec17656856571", size = 253087, upload-time = "2025-04-19T14:01:55.998Z" }, - { url = "https://files.pythonhosted.org/packages/6e/23/e98758924d1b3aac11a626268eabf7f3cf177e7837c28d47bf84c64532d0/pendulum-3.1.0-py3-none-any.whl", hash = "sha256:f9178c2a8e291758ade1e8dd6371b1d26d08371b4c7730a6e9a3ef8b16ebae0f", size = 111799, upload-time = "2025-04-19T14:02:34.739Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/cb/72/9a51afa0a822b09e286c4cb827ed7b00bc818dac7bd11a5f161e493a217d/pendulum-3.2.0.tar.gz", hash = "sha256:e80feda2d10fa3ff8b1526715f7d33dcb7e08494b3088f2c8a3ac92d4a4331ce", size = 86912, upload-time = "2026-01-30T11:22:24.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/56/dd0ea9f97d25a0763cda09e2217563b45714786118d8c68b0b745395d6eb/pendulum-3.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:bf0b489def51202a39a2a665dcc4162d5e46934a740fe4c4fe3068979610156c", size = 337830, upload-time = "2026-01-30T11:21:08.298Z" }, + { url = "https://files.pythonhosted.org/packages/cf/98/83d62899bf7226fc12396de4bc1fb2b5da27e451c7c60790043aaf8b4731/pendulum-3.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:937a529aa302efa18dcf25e53834964a87ffb2df8f80e3669ab7757a6126beaf", size = 327574, upload-time = "2026-01-30T11:21:09.715Z" }, + { url = "https://files.pythonhosted.org/packages/76/fa/ff2aa992b23f0543c709b1a3f3f9ed760ec71fd02c8bb01f93bf008b52e4/pendulum-3.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85c7689defc65c4dc29bf257f7cca55d210fabb455de9476e1748d2ab2ae80d7", size = 339891, upload-time = "2026-01-30T11:21:11.089Z" }, + { url = "https://files.pythonhosted.org/packages/c5/4e/25b4fa11d19503d50d7b52d7ef943c0f20fd54422aaeb9e38f588c815c50/pendulum-3.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e216e5a412563ea2ecf5de467dcf3d02717947fcdabe6811d5ee360726b02b", size = 373726, upload-time = "2026-01-30T11:21:12.493Z" }, + { url = "https://files.pythonhosted.org/packages/4f/30/0acad6396c4e74e5c689aa4f0b0c49e2ecdcfce368e7b5bf35ca1c0fc61a/pendulum-3.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a2af22eeec438fbaac72bb7fba783e0950a514fba980d9a32db394b51afccec", size = 379827, upload-time = "2026-01-30T11:21:14.08Z" }, + { url = "https://files.pythonhosted.org/packages/3a/f7/e6a2fdf2a23d59b4b48b8fa89e8d4bf2dd371aea2c6ba8fcecec20a4acb9/pendulum-3.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3159cceb54f5aa8b85b141c7f0ce3fac8bdd1ffdc7c79e67dca9133eac7c4d11", size = 348921, upload-time = "2026-01-30T11:21:15.816Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f2/c15fa7f9ad4e181aa469b6040b574988bd108ccdf4ae509ad224f9e4db44/pendulum-3.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c39ea5e9ffa20ea8bae986d00e0908bd537c8468b71d6b6503ab0b4c3d76e0ea", size = 517188, upload-time = "2026-01-30T11:21:17.835Z" }, + { url = "https://files.pythonhosted.org/packages/47/c7/5f80b12ee88ec26e930c3a5a602608a63c29cf60c81a0eb066d583772550/pendulum-3.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e5afc753e570cce1f44197676371f68953f7d4f022303d141bb09f804d5fe6d7", size = 561833, upload-time = "2026-01-30T11:21:19.232Z" }, + { url = "https://files.pythonhosted.org/packages/90/15/1ac481626cb63db751f6281e294661947c1f0321ebe5d1c532a3b51a8006/pendulum-3.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:fd55c12560816d9122ca2142d9e428f32c0c083bf77719320b1767539c7a3a3b", size = 258725, upload-time = "2026-01-30T11:21:20.558Z" }, + { url = "https://files.pythonhosted.org/packages/40/ae/50b0398d7d027eb70a3e1e336de7b6e599c6b74431cb7d3863287e1292bb/pendulum-3.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:faef52a7ed99729f0838353b956f3fabf6c550c062db247e9e2fc2b48fcb9457", size = 253089, upload-time = "2026-01-30T11:21:22.497Z" }, + { url = "https://files.pythonhosted.org/packages/27/8c/400c8b8dbd7524424f3d9902ded64741e82e5e321d1aabbd68ade89e71cf/pendulum-3.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:addb0512f919fe5b70c8ee534ee71c775630d3efe567ea5763d92acff857cfc3", size = 337820, upload-time = "2026-01-30T11:21:24.305Z" }, + { url = "https://files.pythonhosted.org/packages/59/38/7c16f26cc55d9206d71da294ce6857d0da381e26bc9e0c2a069424c2b173/pendulum-3.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3aaa50342dc174acebdc21089315012e63789353957b39ac83cac9f9fc8d1075", size = 327551, upload-time = "2026-01-30T11:21:25.747Z" }, + { url = "https://files.pythonhosted.org/packages/0b/cd/f36ec5d56d55104232380fdbf84ff53cc05607574af3cbdc8a43991ac8a7/pendulum-3.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:927e9c9ab52ff68e71b76dd410e5f1cd78f5ea6e7f0a9f5eb549aea16a4d5354", size = 339894, upload-time = "2026-01-30T11:21:27.229Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/b9a1e546519c3a92d5bc17787cea925e06a20def2ae344fa136d2fc40338/pendulum-3.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:249d18f5543c9f43aba3bd77b34864ec8cf6f64edbead405f442e23c94fce63d", size = 373766, upload-time = "2026-01-30T11:21:28.642Z" }, + { url = "https://files.pythonhosted.org/packages/ea/a6/6471ab87ae2260594501f071586a765fc894817043b7d2d4b04e2eff4f31/pendulum-3.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c644cc15eec5fb02291f0f193195156780fd5a0affd7a349592403826d1a35e", size = 379837, upload-time = "2026-01-30T11:21:30.637Z" }, + { url = "https://files.pythonhosted.org/packages/0d/79/0ba0c14e862388f7b822626e6e989163c23bebe7f96de5ec4b207cbe7c3d/pendulum-3.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:063ab61af953bb56ad5bc8e131fd0431c915ed766d90ccecd7549c8090b51004", size = 348904, upload-time = "2026-01-30T11:21:32.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/34/df922c7c0b12719589d4954bfa5bdca9e02bcde220f5c5c1838a87118960/pendulum-3.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:26a3ae26c9dd70a4256f1c2f51addc43641813574c0db6ce5664f9861cd93621", size = 517173, upload-time = "2026-01-30T11:21:34.428Z" }, + { url = "https://files.pythonhosted.org/packages/87/ec/3b9e061eeee97b72a47c1434ee03f6d85f0284d9285d92b12b0fff2d19ac/pendulum-3.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:2b10d91dc00f424444a42f47c69e6b3bfd79376f330179dc06bc342184b35f9a", size = 561744, upload-time = "2026-01-30T11:21:35.861Z" }, + { url = "https://files.pythonhosted.org/packages/fd/7e/f12fdb6070b7975c1fcfa5685dbe4ab73c788878a71f4d1d7e3c87979e37/pendulum-3.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:63070ff03e30a57b16c8e793ee27da8dac4123c1d6e0cf74c460ce9ee8a64aa4", size = 258746, upload-time = "2026-01-30T11:21:37.782Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b8/5abd872056357f069ae34a9b24a75ac58e79092d16201d779a8dd31386bb/pendulum-3.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c8dde63e2796b62070a49ce813ce200aba9186130307f04ec78affcf6c2e8122", size = 253028, upload-time = "2026-01-30T11:21:39.381Z" }, + { url = "https://files.pythonhosted.org/packages/82/99/5b9cc823862450910bcb2c7cdc6884c0939b268639146d30e4a4f55eb1f1/pendulum-3.2.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:c17ac069e88c5a1e930a5ae0ef17357a14b9cc5a28abadda74eaa8106d241c8e", size = 338281, upload-time = "2026-01-30T11:21:40.812Z" }, + { url = "https://files.pythonhosted.org/packages/cd/3a/64a35260f6ac36c0ad50eeb5f1a465b98b0d7603f79a5c2077c41326d639/pendulum-3.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e1fbb540edecb21f8244aebfb05a1f2333ddc6c7819378c099d4a61cc91ae93c", size = 328030, upload-time = "2026-01-30T11:21:42.778Z" }, + { url = "https://files.pythonhosted.org/packages/da/6b/1140e09310035a2afb05bb90a2b8fbda9d3222e03b92de9533123afe6b65/pendulum-3.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8c67fb9a1fe8fc1adae2cc01b0c292b268c12475b4609ff4aed71c9dd367b4d", size = 340206, upload-time = "2026-01-30T11:21:44.148Z" }, + { url = "https://files.pythonhosted.org/packages/52/4a/a493de56cbc24a64b21ac6ba98513a9ec5c67daa3dba325e39a8e53f30d8/pendulum-3.2.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:baa9a66c980defda6cfe1275103a94b22e90d83ebd7a84cc961cee6cbd25a244", size = 373976, upload-time = "2026-01-30T11:21:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4c/f083c4fd1a161d4ab218680cc906338c541497b3098373f2241f58c429cb/pendulum-3.2.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef8f783fa7a14973b0596d8af2a5b2d90858a55030e9b4c6885eb4284b88314f", size = 380075, upload-time = "2026-01-30T11:21:46.959Z" }, + { url = "https://files.pythonhosted.org/packages/57/b6/333a0fcb33bf15eb879a46a11ce6300c1698a141e689665fe430783ff8d6/pendulum-3.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d2e9bfb065727d8676e7ada3793b47a24349500a5e9637404355e482c822be", size = 349026, upload-time = "2026-01-30T11:21:48.271Z" }, + { url = "https://files.pythonhosted.org/packages/43/1a/dfb526ec0cba1e7cd6a5e4f4dd64a6ada7428d1449c54b15f7b295f6e122/pendulum-3.2.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:55d7ba6bb74171c3ee409bf30076ee3a259a3c2bb147ac87ebb76aaa3cf5d3a2", size = 517395, upload-time = "2026-01-30T11:21:49.643Z" }, + { url = "https://files.pythonhosted.org/packages/c9/37/b4f2b5f1200351c4869b8b46ad5c21019e3dbe0417f5867ae969fad7b5fe/pendulum-3.2.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:a50d8cf42f06d3d8c3f8bb2a7ac47fa93b5145e69de6a7209be6a47afdd9cf76", size = 561926, upload-time = "2026-01-30T11:21:51.698Z" }, + { url = "https://files.pythonhosted.org/packages/a0/9e/567376582da58f5fe8e4f579db2bcfbf243cf619a5825bdf1023ad1436b3/pendulum-3.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e5bbb92b155cd5018b3cf70ee49ed3b9c94398caaaa7ed97fe41e5bb5a968418", size = 258817, upload-time = "2026-01-30T11:21:53.074Z" }, + { url = "https://files.pythonhosted.org/packages/95/67/dfffd7eb50d67fa821cd4d92cf71575ead6162930202bc40dfcedf78c38c/pendulum-3.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:d53134418e04335c3029a32e9341cccc9b085a28744fb5ee4e6a8f5039363b1a", size = 253292, upload-time = "2026-01-30T11:21:54.484Z" }, + { url = "https://files.pythonhosted.org/packages/02/fb/d65db067a67df7252f18b0cb7420dda84078b9e8bfb375215469c14a50be/pendulum-3.2.0-py3-none-any.whl", hash = "sha256:f3a9c18a89b4d9ef39c5fa6a78722aaff8d5be2597c129a3b16b9f40a561acf3", size = 114111, upload-time = "2026-01-30T11:22:22.361Z" }, ] [[package]] @@ -4632,77 +3495,80 @@ wheels = [ [[package]] name = "pillow" -version = "11.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, - { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, - { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, - { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, - { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, - { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, - { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, - { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, - { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, - { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, - { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, - { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, - { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, - { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, - { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, - { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, - { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, - { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, - { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, - { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, - { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, - { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, - { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, - { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, - { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, - { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, - { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, - { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, - { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, - { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, - { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, - { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, - { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, - { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, - { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, +version = "12.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/21/c2bcdd5906101a30244eaffc1b6e6ce71a31bd0742a01eb89e660ebfac2d/pillow-12.2.0.tar.gz", hash = "sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5", size = 46987819, upload-time = "2026-04-01T14:46:17.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5", size = 5308279, upload-time = "2026-04-01T14:43:13.246Z" }, + { url = "https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421", size = 4695490, upload-time = "2026-04-01T14:43:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/de/af/4e8e6869cbed569d43c416fad3dc4ecb944cb5d9492defaed89ddd6fe871/pillow-12.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987", size = 6284462, upload-time = "2026-04-01T14:43:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/c05e19657fd57841e476be1ab46c4d501bffbadbafdc31a6d665f8b737b6/pillow-12.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76", size = 8094744, upload-time = "2026-04-01T14:43:20.716Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/1789c455ed10176066b6e7e6da1b01e50e36f94ba584dc68d9eebfe9156d/pillow-12.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005", size = 6398371, upload-time = "2026-04-01T14:43:23.443Z" }, + { url = "https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780", size = 7087215, upload-time = "2026-04-01T14:43:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f8/2f6825e441d5b1959d2ca5adec984210f1ec086435b0ed5f52c19b3b8a6e/pillow-12.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5", size = 6509783, upload-time = "2026-04-01T14:43:29.56Z" }, + { url = "https://files.pythonhosted.org/packages/67/f9/029a27095ad20f854f9dba026b3ea6428548316e057e6fc3545409e86651/pillow-12.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5", size = 7212112, upload-time = "2026-04-01T14:43:32.091Z" }, + { url = "https://files.pythonhosted.org/packages/be/42/025cfe05d1be22dbfdb4f264fe9de1ccda83f66e4fc3aac94748e784af04/pillow-12.2.0-cp312-cp312-win32.whl", hash = "sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940", size = 6378489, upload-time = "2026-04-01T14:43:34.601Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5", size = 7084129, upload-time = "2026-04-01T14:43:37.213Z" }, + { url = "https://files.pythonhosted.org/packages/10/e1/542a474affab20fd4a0f1836cb234e8493519da6b76899e30bcc5d990b8b/pillow-12.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414", size = 2463612, upload-time = "2026-04-01T14:43:39.421Z" }, + { url = "https://files.pythonhosted.org/packages/4a/01/53d10cf0dbad820a8db274d259a37ba50b88b24768ddccec07355382d5ad/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:8297651f5b5679c19968abefd6bb84d95fe30ef712eb1b2d9b2d31ca61267f4c", size = 4100837, upload-time = "2026-04-01T14:43:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/0f/98/f3a6657ecb698c937f6c76ee564882945f29b79bad496abcba0e84659ec5/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:50d8520da2a6ce0af445fa6d648c4273c3eeefbc32d7ce049f22e8b5c3daecc2", size = 4176528, upload-time = "2026-04-01T14:43:43.773Z" }, + { url = "https://files.pythonhosted.org/packages/69/bc/8986948f05e3ea490b8442ea1c1d4d990b24a7e43d8a51b2c7d8b1dced36/pillow-12.2.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:766cef22385fa1091258ad7e6216792b156dc16d8d3fa607e7545b2b72061f1c", size = 3640401, upload-time = "2026-04-01T14:43:45.87Z" }, + { url = "https://files.pythonhosted.org/packages/34/46/6c717baadcd62bc8ed51d238d521ab651eaa74838291bda1f86fe1f864c9/pillow-12.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5d2fd0fa6b5d9d1de415060363433f28da8b1526c1c129020435e186794b3795", size = 5308094, upload-time = "2026-04-01T14:43:48.438Z" }, + { url = "https://files.pythonhosted.org/packages/71/43/905a14a8b17fdb1ccb58d282454490662d2cb89a6bfec26af6d3520da5ec/pillow-12.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b25336f502b6ed02e889f4ece894a72612fe885889a6e8c4c80239ff6e5f5f", size = 4695402, upload-time = "2026-04-01T14:43:51.292Z" }, + { url = "https://files.pythonhosted.org/packages/73/dd/42107efcb777b16fa0393317eac58f5b5cf30e8392e266e76e51cff28c3d/pillow-12.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f1c943e96e85df3d3478f7b691f229887e143f81fedab9b20205349ab04d73ed", size = 6280005, upload-time = "2026-04-01T14:43:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/a8/68/b93e09e5e8549019e61acf49f65b1a8530765a7f812c77a7461bca7e4494/pillow-12.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03f6fab9219220f041c74aeaa2939ff0062bd5c364ba9ce037197f4c6d498cd9", size = 8090669, upload-time = "2026-04-01T14:43:57.335Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/3ccb54ce8ec4ddd1accd2d89004308b7b0b21c4ac3d20fa70af4760a4330/pillow-12.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdfebd752ec52bf5bb4e35d9c64b40826bc5b40a13df7c3cda20a2c03a0f5ed", size = 6395194, upload-time = "2026-04-01T14:43:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/67/ee/21d4e8536afd1a328f01b359b4d3997b291ffd35a237c877b331c1c3b71c/pillow-12.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eedf4b74eda2b5a4b2b2fb4c006d6295df3bf29e459e198c90ea48e130dc75c3", size = 7082423, upload-time = "2026-04-01T14:44:02.74Z" }, + { url = "https://files.pythonhosted.org/packages/78/5f/e9f86ab0146464e8c133fe85df987ed9e77e08b29d8d35f9f9f4d6f917ba/pillow-12.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:00a2865911330191c0b818c59103b58a5e697cae67042366970a6b6f1b20b7f9", size = 6505667, upload-time = "2026-04-01T14:44:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1e/409007f56a2fdce61584fd3acbc2bbc259857d555196cedcadc68c015c82/pillow-12.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1e1757442ed87f4912397c6d35a0db6a7b52592156014706f17658ff58bbf795", size = 7208580, upload-time = "2026-04-01T14:44:08.39Z" }, + { url = "https://files.pythonhosted.org/packages/23/c4/7349421080b12fb35414607b8871e9534546c128a11965fd4a7002ccfbee/pillow-12.2.0-cp313-cp313-win32.whl", hash = "sha256:144748b3af2d1b358d41286056d0003f47cb339b8c43a9ea42f5fea4d8c66b6e", size = 6375896, upload-time = "2026-04-01T14:44:11.197Z" }, + { url = "https://files.pythonhosted.org/packages/3f/82/8a3739a5e470b3c6cbb1d21d315800d8e16bff503d1f16b03a4ec3212786/pillow-12.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:390ede346628ccc626e5730107cde16c42d3836b89662a115a921f28440e6a3b", size = 7081266, upload-time = "2026-04-01T14:44:13.947Z" }, + { url = "https://files.pythonhosted.org/packages/c3/25/f968f618a062574294592f668218f8af564830ccebdd1fa6200f598e65c5/pillow-12.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:8023abc91fba39036dbce14a7d6535632f99c0b857807cbbbf21ecc9f4717f06", size = 2463508, upload-time = "2026-04-01T14:44:16.312Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a4/b342930964e3cb4dce5038ae34b0eab4653334995336cd486c5a8c25a00c/pillow-12.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:042db20a421b9bafecc4b84a8b6e444686bd9d836c7fd24542db3e7df7baad9b", size = 5309927, upload-time = "2026-04-01T14:44:18.89Z" }, + { url = "https://files.pythonhosted.org/packages/9f/de/23198e0a65a9cf06123f5435a5d95cea62a635697f8f03d134d3f3a96151/pillow-12.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd025009355c926a84a612fecf58bb315a3f6814b17ead51a8e48d3823d9087f", size = 4698624, upload-time = "2026-04-01T14:44:21.115Z" }, + { url = "https://files.pythonhosted.org/packages/01/a6/1265e977f17d93ea37aa28aa81bad4fa597933879fac2520d24e021c8da3/pillow-12.2.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88ddbc66737e277852913bd1e07c150cc7bb124539f94c4e2df5344494e0a612", size = 6321252, upload-time = "2026-04-01T14:44:23.663Z" }, + { url = "https://files.pythonhosted.org/packages/3c/83/5982eb4a285967baa70340320be9f88e57665a387e3a53a7f0db8231a0cd/pillow-12.2.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d362d1878f00c142b7e1a16e6e5e780f02be8195123f164edf7eddd911eefe7c", size = 8126550, upload-time = "2026-04-01T14:44:26.772Z" }, + { url = "https://files.pythonhosted.org/packages/4e/48/6ffc514adce69f6050d0753b1a18fd920fce8cac87620d5a31231b04bfc5/pillow-12.2.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c727a6d53cb0018aadd8018c2b938376af27914a68a492f59dfcaca650d5eea", size = 6433114, upload-time = "2026-04-01T14:44:29.615Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f9a77144231fb8d40ee27107b4463e205fa4677e2ca2548e14da5cf18dce/pillow-12.2.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd8c21c98c5cc60653bcb311bef2ce0401642b7ce9d09e03a7da87c878289d4", size = 7115667, upload-time = "2026-04-01T14:44:32.773Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fc/ac4ee3041e7d5a565e1c4fd72a113f03b6394cc72ab7089d27608f8aaccb/pillow-12.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f08483a632889536b8139663db60f6724bfcb443c96f1b18855860d7d5c0fd4", size = 6538966, upload-time = "2026-04-01T14:44:35.252Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a8/27fb307055087f3668f6d0a8ccb636e7431d56ed0750e07a60547b1e083e/pillow-12.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dac8d77255a37e81a2efcbd1fc05f1c15ee82200e6c240d7e127e25e365c39ea", size = 7238241, upload-time = "2026-04-01T14:44:37.875Z" }, + { url = "https://files.pythonhosted.org/packages/ad/4b/926ab182c07fccae9fcb120043464e1ff1564775ec8864f21a0ebce6ac25/pillow-12.2.0-cp313-cp313t-win32.whl", hash = "sha256:ee3120ae9dff32f121610bb08e4313be87e03efeadfc6c0d18f89127e24d0c24", size = 6379592, upload-time = "2026-04-01T14:44:40.336Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c4/f9e476451a098181b30050cc4c9a3556b64c02cf6497ea421ac047e89e4b/pillow-12.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:325ca0528c6788d2a6c3d40e3568639398137346c3d6e66bb61db96b96511c98", size = 7085542, upload-time = "2026-04-01T14:44:43.251Z" }, + { url = "https://files.pythonhosted.org/packages/00/a4/285f12aeacbe2d6dc36c407dfbbe9e96d4a80b0fb710a337f6d2ad978c75/pillow-12.2.0-cp313-cp313t-win_arm64.whl", hash = "sha256:2e5a76d03a6c6dcef67edabda7a52494afa4035021a79c8558e14af25313d453", size = 2465765, upload-time = "2026-04-01T14:44:45.996Z" }, + { url = "https://files.pythonhosted.org/packages/bf/98/4595daa2365416a86cb0d495248a393dfc84e96d62ad080c8546256cb9c0/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:3adc9215e8be0448ed6e814966ecf3d9952f0ea40eb14e89a102b87f450660d8", size = 4100848, upload-time = "2026-04-01T14:44:48.48Z" }, + { url = "https://files.pythonhosted.org/packages/0b/79/40184d464cf89f6663e18dfcf7ca21aae2491fff1a16127681bf1fa9b8cf/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:6a9adfc6d24b10f89588096364cc726174118c62130c817c2837c60cf08a392b", size = 4176515, upload-time = "2026-04-01T14:44:51.353Z" }, + { url = "https://files.pythonhosted.org/packages/b0/63/703f86fd4c422a9cf722833670f4f71418fb116b2853ff7da722ea43f184/pillow-12.2.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:6a6e67ea2e6feda684ed370f9a1c52e7a243631c025ba42149a2cc5934dec295", size = 3640159, upload-time = "2026-04-01T14:44:53.588Z" }, + { url = "https://files.pythonhosted.org/packages/71/e0/fb22f797187d0be2270f83500aab851536101b254bfa1eae10795709d283/pillow-12.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2bb4a8d594eacdfc59d9e5ad972aa8afdd48d584ffd5f13a937a664c3e7db0ed", size = 5312185, upload-time = "2026-04-01T14:44:56.039Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae", size = 4695386, upload-time = "2026-04-01T14:44:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/70/62/98f6b7f0c88b9addd0e87c217ded307b36be024d4ff8869a812b241d1345/pillow-12.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22db17c68434de69d8ecfc2fe821569195c0c373b25cccb9cbdacf2c6e53c601", size = 6280384, upload-time = "2026-04-01T14:45:01.5Z" }, + { url = "https://files.pythonhosted.org/packages/5e/03/688747d2e91cfbe0e64f316cd2e8005698f76ada3130d0194664174fa5de/pillow-12.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7b14cc0106cd9aecda615dd6903840a058b4700fcb817687d0ee4fc8b6e389be", size = 8091599, upload-time = "2026-04-01T14:45:04.5Z" }, + { url = "https://files.pythonhosted.org/packages/f6/35/577e22b936fcdd66537329b33af0b4ccfefaeabd8aec04b266528cddb33c/pillow-12.2.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cbeb542b2ebc6fcdacabf8aca8c1a97c9b3ad3927d46b8723f9d4f033288a0f", size = 6396021, upload-time = "2026-04-01T14:45:07.117Z" }, + { url = "https://files.pythonhosted.org/packages/11/8d/d2532ad2a603ca2b93ad9f5135732124e57811d0168155852f37fbce2458/pillow-12.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4bfd07bc812fbd20395212969e41931001fd59eb55a60658b0e5710872e95286", size = 7083360, upload-time = "2026-04-01T14:45:09.763Z" }, + { url = "https://files.pythonhosted.org/packages/5e/26/d325f9f56c7e039034897e7380e9cc202b1e368bfd04d4cbe6a441f02885/pillow-12.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9aba9a17b623ef750a4d11b742cbafffeb48a869821252b30ee21b5e91392c50", size = 6507628, upload-time = "2026-04-01T14:45:12.378Z" }, + { url = "https://files.pythonhosted.org/packages/5f/f7/769d5632ffb0988f1c5e7660b3e731e30f7f8ec4318e94d0a5d674eb65a4/pillow-12.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:deede7c263feb25dba4e82ea23058a235dcc2fe1f6021025dc71f2b618e26104", size = 7209321, upload-time = "2026-04-01T14:45:15.122Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7a/c253e3c645cd47f1aceea6a8bacdba9991bf45bb7dfe927f7c893e89c93c/pillow-12.2.0-cp314-cp314-win32.whl", hash = "sha256:632ff19b2778e43162304d50da0181ce24ac5bb8180122cbe1bf4673428328c7", size = 6479723, upload-time = "2026-04-01T14:45:17.797Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8b/601e6566b957ca50e28725cb6c355c59c2c8609751efbecd980db44e0349/pillow-12.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:4e6c62e9d237e9b65fac06857d511e90d8461a32adcc1b9065ea0c0fa3a28150", size = 7217400, upload-time = "2026-04-01T14:45:20.529Z" }, + { url = "https://files.pythonhosted.org/packages/d6/94/220e46c73065c3e2951bb91c11a1fb636c8c9ad427ac3ce7d7f3359b9b2f/pillow-12.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:b1c1fbd8a5a1af3412a0810d060a78b5136ec0836c8a4ef9aa11807f2a22f4e1", size = 2554835, upload-time = "2026-04-01T14:45:23.162Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ab/1b426a3974cb0e7da5c29ccff4807871d48110933a57207b5a676cccc155/pillow-12.2.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:57850958fe9c751670e49b2cecf6294acc99e562531f4bd317fa5ddee2068463", size = 5314225, upload-time = "2026-04-01T14:45:25.637Z" }, + { url = "https://files.pythonhosted.org/packages/19/1e/dce46f371be2438eecfee2a1960ee2a243bbe5e961890146d2dee1ff0f12/pillow-12.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d5d38f1411c0ed9f97bcb49b7bd59b6b7c314e0e27420e34d99d844b9ce3b6f3", size = 4698541, upload-time = "2026-04-01T14:45:28.355Z" }, + { url = "https://files.pythonhosted.org/packages/55/c3/7fbecf70adb3a0c33b77a300dc52e424dc22ad8cdc06557a2e49523b703d/pillow-12.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c0a9f29ca8e79f09de89293f82fc9b0270bb4af1d58bc98f540cc4aedf03166", size = 6322251, upload-time = "2026-04-01T14:45:30.924Z" }, + { url = "https://files.pythonhosted.org/packages/1c/3c/7fbc17cfb7e4fe0ef1642e0abc17fc6c94c9f7a16be41498e12e2ba60408/pillow-12.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1610dd6c61621ae1cf811bef44d77e149ce3f7b95afe66a4512f8c59f25d9ebe", size = 8127807, upload-time = "2026-04-01T14:45:33.908Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c3/a8ae14d6defd2e448493ff512fae903b1e9bd40b72efb6ec55ce0048c8ce/pillow-12.2.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a34329707af4f73cf1782a36cd2289c0368880654a2c11f027bcee9052d35dd", size = 6433935, upload-time = "2026-04-01T14:45:36.623Z" }, + { url = "https://files.pythonhosted.org/packages/6e/32/2880fb3a074847ac159d8f902cb43278a61e85f681661e7419e6596803ed/pillow-12.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e9c4f5b3c546fa3458a29ab22646c1c6c787ea8f5ef51300e5a60300736905e", size = 7116720, upload-time = "2026-04-01T14:45:39.258Z" }, + { url = "https://files.pythonhosted.org/packages/46/87/495cc9c30e0129501643f24d320076f4cc54f718341df18cc70ec94c44e1/pillow-12.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fb043ee2f06b41473269765c2feae53fc2e2fbf96e5e22ca94fb5ad677856f06", size = 6540498, upload-time = "2026-04-01T14:45:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/18/53/773f5edca692009d883a72211b60fdaf8871cbef075eaa9d577f0a2f989e/pillow-12.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f278f034eb75b4e8a13a54a876cc4a5ab39173d2cdd93a638e1b467fc545ac43", size = 7239413, upload-time = "2026-04-01T14:45:44.705Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e4/4b64a97d71b2a83158134abbb2f5bd3f8a2ea691361282f010998f339ec7/pillow-12.2.0-cp314-cp314t-win32.whl", hash = "sha256:6bb77b2dcb06b20f9f4b4a8454caa581cd4dd0643a08bacf821216a16d9c8354", size = 6482084, upload-time = "2026-04-01T14:45:47.568Z" }, + { url = "https://files.pythonhosted.org/packages/ba/13/306d275efd3a3453f72114b7431c877d10b1154014c1ebbedd067770d629/pillow-12.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6562ace0d3fb5f20ed7290f1f929cae41b25ae29528f2af1722966a0a02e2aa1", size = 7225152, upload-time = "2026-04-01T14:45:50.032Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6e/cf826fae916b8658848d7b9f38d88da6396895c676e8086fc0988073aaf8/pillow-12.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb", size = 2556579, upload-time = "2026-04-01T14:45:52.529Z" }, ] [[package]] name = "platformdirs" -version = "4.5.1" +version = "4.9.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/4a/0883b8e3802965322523f0b200ecf33d31f10991d0401162f4b23c698b42/platformdirs-4.9.6.tar.gz", hash = "sha256:3bfa75b0ad0db84096ae777218481852c0ebc6c727b3168c1b9e0118e458cf0a", size = 29400, upload-time = "2026-04-09T00:04:10.812Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, + { url = "https://files.pythonhosted.org/packages/75/a6/a0a304dc33b49145b21f4808d763822111e67d1c3a32b524a1baf947b6e1/platformdirs-4.9.6-py3-none-any.whl", hash = "sha256:e61adb1d5e5cb3441b4b7710bea7e4c12250ca49439228cc1021c00dcfac0917", size = 21348, upload-time = "2026-04-09T00:04:09.463Z" }, ] [[package]] @@ -4716,77 +3582,88 @@ wheels = [ [[package]] name = "polars" -version = "1.37.1" +version = "1.41.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars-runtime-32" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/ae/dfebf31b9988c20998140b54d5b521f64ce08879f2c13d9b4d44d7c87e32/polars-1.37.1.tar.gz", hash = "sha256:0309e2a4633e712513401964b4d95452f124ceabf7aec6db50affb9ced4a274e", size = 715572, upload-time = "2026-01-12T23:27:03.267Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/13/fe30b3e2f9ab54a27d82af04fb2edc51c7342cbaa88815e175769a9f5901/polars-1.41.0.tar.gz", hash = "sha256:7cb5465eb66eb868fde779bf5c41c9f2f244481d72c52133e8ed10ba64372e4f", size = 737530, upload-time = "2026-05-22T20:20:56.209Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/75/ec73e38812bca7c2240aff481b9ddff20d1ad2f10dee4b3353f5eeaacdab/polars-1.37.1-py3-none-any.whl", hash = "sha256:377fed8939a2f1223c1563cfabdc7b4a3d6ff846efa1f2ddeb8644fafd9b1aff", size = 805749, upload-time = "2026-01-12T23:25:48.595Z" }, -] - -[package.optional-dependencies] -pyarrow = [ - { name = "pyarrow" }, + { url = "https://files.pythonhosted.org/packages/c3/c8/5807714256c5f3de08593113df17f14f99417a451cb2d91530ad94785003/polars-1.41.0-py3-none-any.whl", hash = "sha256:35dcd24de88a198dc50929924f064ba12a0a0a4a3e77e116689491b4b3ab58ac", size = 832953, upload-time = "2026-05-22T20:19:30.958Z" }, ] [[package]] name = "polars-runtime-32" -version = "1.37.1" +version = "1.41.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/40/0b/addabe5e8d28a5a4c9887a08907be7ddc3fce892dc38f37d14b055438a57/polars_runtime_32-1.37.1.tar.gz", hash = "sha256:68779d4a691da20a5eb767d74165a8f80a2bdfbde4b54acf59af43f7fa028d8f", size = 2818945, upload-time = "2026-01-12T23:27:04.653Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/8f/30dc715ea1135b4b80397edf33fe7b1bb124850e96e38d9918e2b3d6d0b0/polars_runtime_32-1.41.0.tar.gz", hash = "sha256:37ffbe5414f14bf43bcc8e08a0386c97c692e3fd4e87af74529d7f14b1b2d1cb", size = 2985826, upload-time = "2026-05-22T20:20:57.622Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/a2/e828ea9f845796de02d923edb790e408ca0b560cd68dbd74bb99a1b3c461/polars_runtime_32-1.37.1-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:0b8d4d73ea9977d3731927740e59d814647c5198bdbe359bcf6a8bfce2e79771", size = 43499912, upload-time = "2026-01-12T23:25:51.182Z" }, - { url = "https://files.pythonhosted.org/packages/7e/46/81b71b7aa9e3703ee6e4ef1f69a87e40f58ea7c99212bf49a95071e99c8c/polars_runtime_32-1.37.1-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c682bf83f5f352e5e02f5c16c652c48ca40442f07b236f30662b22217320ce76", size = 39695707, upload-time = "2026-01-12T23:25:54.289Z" }, - { url = "https://files.pythonhosted.org/packages/81/2e/20009d1fde7ee919e24040f5c87cb9d0e4f8e3f109b74ba06bc10c02459c/polars_runtime_32-1.37.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc82b5bbe70ca1a4b764eed1419f6336752d6ba9fc1245388d7f8b12438afa2c", size = 41467034, upload-time = "2026-01-12T23:25:56.925Z" }, - { url = "https://files.pythonhosted.org/packages/eb/21/9b55bea940524324625b1e8fd96233290303eb1bf2c23b54573487bbbc25/polars_runtime_32-1.37.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8362d11ac5193b994c7e9048ffe22ccfb976699cfbf6e128ce0302e06728894", size = 45142711, upload-time = "2026-01-12T23:26:00.817Z" }, - { url = "https://files.pythonhosted.org/packages/8c/25/c5f64461aeccdac6834a89f826d051ccd3b4ce204075e562c87a06ed2619/polars_runtime_32-1.37.1-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:04f5d5a2f013dca7391b7d8e7672fa6d37573a87f1d45d3dd5f0d9b5565a4b0f", size = 41638564, upload-time = "2026-01-12T23:26:04.186Z" }, - { url = "https://files.pythonhosted.org/packages/35/af/509d3cf6c45e764ccf856beaae26fc34352f16f10f94a7839b1042920a73/polars_runtime_32-1.37.1-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fbfde7c0ca8209eeaed546e4a32cca1319189aa61c5f0f9a2b4494262bd0c689", size = 44721136, upload-time = "2026-01-12T23:26:07.088Z" }, - { url = "https://files.pythonhosted.org/packages/af/d1/5c0a83a625f72beef59394bebc57d12637997632a4f9d3ab2ffc2cc62bbf/polars_runtime_32-1.37.1-cp310-abi3-win_amd64.whl", hash = "sha256:da3d3642ae944e18dd17109d2a3036cb94ce50e5495c5023c77b1599d4c861bc", size = 44948288, upload-time = "2026-01-12T23:26:10.214Z" }, - { url = "https://files.pythonhosted.org/packages/10/f3/061bb702465904b6502f7c9081daee34b09ccbaa4f8c94cf43a2a3b6dd6f/polars_runtime_32-1.37.1-cp310-abi3-win_arm64.whl", hash = "sha256:55f2c4847a8d2e267612f564de7b753a4bde3902eaabe7b436a0a4abf75949a0", size = 41001914, upload-time = "2026-01-12T23:26:12.997Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e7/9d1630d666eca6a67e2096c0ed2c0e18f1355fe440043fd0830de1b71ab6/polars_runtime_32-1.41.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:766b60c74550382731b604ed62a385a8403b341bf18282d3fd2f746fa3c4cafd", size = 52163350, upload-time = "2026-05-22T20:19:34.431Z" }, + { url = "https://files.pythonhosted.org/packages/11/b3/01538d51cd2790729ae13c23db44bc787bdfe20867faeb1087afc390c53b/polars_runtime_32-1.41.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:bee0d294daca79cedd5749e1bf3373c2d4107eb849fe544a60df6c08abc972ce", size = 46474331, upload-time = "2026-05-22T20:19:37.936Z" }, + { url = "https://files.pythonhosted.org/packages/79/29/efa82e1b3e6711f254df3793f3d3fd99f26ef1bcaffa6533266fa6522de4/polars_runtime_32-1.41.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08b3f915468bf00d327b4a1236935a4ec3174dcb163785fcd98185ad1319a503", size = 50358997, upload-time = "2026-05-22T20:19:42.209Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/5a04b06b773047cbf43912ab802eef3c1d50ef7e66d51a41b16726f9bc62/polars_runtime_32-1.41.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72269f768c57229190dba0cb5abb8a1b228e96cc6331273a77a7957576885bd", size = 56332032, upload-time = "2026-05-22T20:19:45.928Z" }, + { url = "https://files.pythonhosted.org/packages/2b/d5/d728ce7a39ea925555db7d2c9f7b5df3ca17568e483db6501783f653e0b9/polars_runtime_32-1.41.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1532c7560a5c0fd06943080ee42aade721f186becdfbb1baafa622e3199c3b62", size = 50529017, upload-time = "2026-05-22T20:19:49.489Z" }, + { url = "https://files.pythonhosted.org/packages/0b/92/6b2092dfed4278f636499217767204fce19ed72695690e2c4eba99e2892e/polars_runtime_32-1.41.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:43368d8a754ee274f1e1099a7c09aae59cd69d22b8a6f83c0f782a00cd3a6662", size = 54244707, upload-time = "2026-05-22T20:19:52.852Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/46b43be0f5becbef65843f438de3950ac6f8d0fa0008d7de0025eed00097/polars_runtime_32-1.41.0-cp310-abi3-win_amd64.whl", hash = "sha256:a9bd6095ecadc6799d166b9e8f7183a7ca8ba0a5aef8a426ec41df8ed8b09df7", size = 51918379, upload-time = "2026-05-22T20:19:55.832Z" }, + { url = "https://files.pythonhosted.org/packages/a3/da/30f15f0c3959b70e7a6583eccd37140a30b5c643ca374792d150b3a357df/polars_runtime_32-1.41.0-cp310-abi3-win_arm64.whl", hash = "sha256:ed922400f0eb393345fd7b6874b150eb943af2b816297a3dde03735cb5f3de08", size = 45921961, upload-time = "2026-05-22T20:19:59.525Z" }, ] [[package]] name = "pooch" -version = "1.8.2" +version = "1.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, { name = "platformdirs" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353, upload-time = "2024-06-06T16:53:46.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/83/43/85ef45e8b36c6a48546af7b266592dc32d7f67837a6514d111bced6d7d75/pooch-1.9.0.tar.gz", hash = "sha256:de46729579b9857ffd3e741987a2f6d5e0e03219892c167c6578c0091fb511ed", size = 61788, upload-time = "2026-01-30T19:15:09.649Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574, upload-time = "2024-06-06T16:53:44.343Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl", hash = "sha256:f265597baa9f760d25ceb29d0beb8186c243d6607b0f60b83ecf14078dbc703b", size = 67175, upload-time = "2026-01-30T19:15:08.36Z" }, ] [[package]] name = "potpourri3d" -version = "1.3" +version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "scipy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b0/f8/52b8973fef56c0a0f725d4d9734a1cfa8596bc3c105c22368be97deb0b05/potpourri3d-1.3.tar.gz", hash = "sha256:5a8d3578ea1013fbb990520297acb7afd25c2231870537757541980b6cea3a5e", size = 30453485, upload-time = "2025-07-02T07:32:27.844Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/62/eab2d234e895ea908defbec1e084c470aa4208a5ae77c6c0d2fe7580469a/potpourri3d-1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eea341833e1cc97c39151df2937693cee407f42450159ae9b8dc0992d0ecb236", size = 3694646, upload-time = "2025-07-02T07:30:52.055Z" }, - { url = "https://files.pythonhosted.org/packages/92/5b/af66ee208ba07ca13765dbebf42cb4144ceac4d997493c364a5fbb71e3db/potpourri3d-1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a8c72e02d8e3f88c40309333cef5e4e14f6b9194ced112474c2f545698d543ab", size = 3254479, upload-time = "2025-07-02T07:30:53.91Z" }, - { url = "https://files.pythonhosted.org/packages/53/b6/bb772fbb05f919c18e1673739fe52e1d020e7cbcab1e7062d3888b031478/potpourri3d-1.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebe3d1976a1926d0c12b91f35c048c893fd8722f4d7a6ab9cc2f2cb678b5129f", size = 3668347, upload-time = "2025-07-02T07:30:55.315Z" }, - { url = "https://files.pythonhosted.org/packages/79/fe/7949083d98f8c8382c84eba53761db71124f94f19d0edc25779325849332/potpourri3d-1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6a8c59294fb357ff88474c8191f60bb04e2c2fbffcf407499297d8c1d23a192", size = 3450974, upload-time = "2025-07-02T07:30:56.69Z" }, - { url = "https://files.pythonhosted.org/packages/90/01/0cb5ef4b5459388861ff377de52e64fbf0e12de16037e7580916fc63f2f6/potpourri3d-1.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2305d6268dd648a0f2211ea0debf6bdf46e3c26d9b6cc57b95e1c6c98f686c85", size = 4902693, upload-time = "2025-07-02T07:30:58.19Z" }, - { url = "https://files.pythonhosted.org/packages/75/88/a144db85192b82be5563eefdf07ca5f5072a006124051d78febea1607ecd/potpourri3d-1.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f1aa84ec7efd514450d45dcb9ced2ff427f88cccabf844a46724a6b84a3430a1", size = 4634662, upload-time = "2025-07-02T07:30:59.6Z" }, - { url = "https://files.pythonhosted.org/packages/8a/c8/21179725ddfb794477eaa990b4fe8121b316053cea123f7b7e71a83e6bc0/potpourri3d-1.3-cp312-cp312-win32.whl", hash = "sha256:c5cb3b753c2a786ae2be95ae498b49ef999465621507390b55ebec33749570a5", size = 4451481, upload-time = "2025-07-02T07:31:01.515Z" }, - { url = "https://files.pythonhosted.org/packages/7e/47/685eafc91a5242c30f82c752b51b44aa7b2d8e199db2d8e357b4bc87326d/potpourri3d-1.3-cp312-cp312-win_amd64.whl", hash = "sha256:34aa1280f527b436a047fb42ea8c74fb597e5a314bcb1b11204cac5babd8dce7", size = 6112862, upload-time = "2025-07-02T07:31:03.92Z" }, - { url = "https://files.pythonhosted.org/packages/04/1e/c70dfd006395ca34170373e32535d7fc7e9b493ac53b2cbecf8ebb501538/potpourri3d-1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d6f03c83a9843984e602ccd4f7ca6ba41c2f8ca003adf9142207efce8f11610d", size = 3694624, upload-time = "2025-07-02T07:31:05.484Z" }, - { url = "https://files.pythonhosted.org/packages/8f/39/1dafc02cc51896fee15b2a1ed9dab474531dfaf2b7d37d4282583b123965/potpourri3d-1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:43f23c908d8aa6f82a2f00d43a9e4ff0af9d3d357402f672bcef4174d4b537bf", size = 3254609, upload-time = "2025-07-02T07:31:06.899Z" }, - { url = "https://files.pythonhosted.org/packages/de/b4/f2f8cc6af9520292b8018a917c6b71e7c269abf4af72c73550df81c78803/potpourri3d-1.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:add7f889b08dd47a7a1bc6d27221ca0ff836f01fb90e41c421a22f1984cc0574", size = 3668167, upload-time = "2025-07-02T07:31:08.801Z" }, - { url = "https://files.pythonhosted.org/packages/50/b7/dce291a0172e58cfd219aab80f2d4650d342418e3d68292cb20221bcad78/potpourri3d-1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50296cd3f2897d7b63d3f639379f1b7bf0c092242cabe94178df6747aa0d2d8c", size = 3451083, upload-time = "2025-07-02T07:31:10.574Z" }, - { url = "https://files.pythonhosted.org/packages/84/e9/ec4984b209600b9af856638fa647ab487b6b893eb36313c2b57b69f839ba/potpourri3d-1.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:abe9fa4552525ef73383cb9c919d28ce8c8aeef23c94b0a18dd946cb9e59ed3a", size = 4902471, upload-time = "2025-07-02T07:31:12.068Z" }, - { url = "https://files.pythonhosted.org/packages/58/a2/59d8fb65b9b7b3d3c497cf924ab3914a6376b5646d4d6b83f2aac925ebdd/potpourri3d-1.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3e1d8fed8654a6b054d07265bf499b9da756912d2f8f1d720e62a94aaacf1f38", size = 4634551, upload-time = "2025-07-02T07:31:13.575Z" }, - { url = "https://files.pythonhosted.org/packages/d3/81/71ae8674a00a7ce3178d5fb68f3af449d3decafa600c37ecf202ba49c233/potpourri3d-1.3-cp313-cp313-win32.whl", hash = "sha256:745e05a80309d5fc053316fbb662e46bac925e2a095792af5159f488279edac3", size = 4451446, upload-time = "2025-07-02T07:31:15.014Z" }, - { url = "https://files.pythonhosted.org/packages/39/18/61f85875356fdac2b213db9adcce2aa2380fcfb7d03c11334a4bb9c8b473/potpourri3d-1.3-cp313-cp313-win_amd64.whl", hash = "sha256:f7eafd4270c9a65439120e39f626ba82d2a770e93c49af96297e7fa29c10200c", size = 6112930, upload-time = "2025-07-02T07:31:16.44Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/62/ab/1385878462411b548a909b66f8e925dbefa6faab1ca704dd43a098905ed3/potpourri3d-1.4.0.tar.gz", hash = "sha256:83c31ac4ee69b90cc0f3af1139f91ec952077defcc9166056cc4434712679292", size = 30618500, upload-time = "2026-03-25T05:52:51.022Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/2e/487d59d1be46ea9724534325c96ef172ed16aff610ace62d427758084404/potpourri3d-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a448a72232ca43ffc392fd13408ad4f77a69b6c43578f82a4b3cef7bd012516d", size = 3542611, upload-time = "2026-03-25T05:51:44.16Z" }, + { url = "https://files.pythonhosted.org/packages/35/b3/f53e111fa7fb194fe928d4dbdae97f67c301282863ca3e3fda93609e3c40/potpourri3d-1.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f401f0da41b075a5206af276c3c24fe03114b142aaea8608be08ecfecd806dfc", size = 3147602, upload-time = "2026-03-25T05:51:45.919Z" }, + { url = "https://files.pythonhosted.org/packages/10/fe/46ff1b577bdb1c3b536c406256a155e5f628b5caee1f99669dd54b1ebcd2/potpourri3d-1.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e84d78a1758a821b42fdf54304d1d14aa2609579600c1b26a03134dbc367a4bb", size = 3387591, upload-time = "2026-03-25T05:51:48.032Z" }, + { url = "https://files.pythonhosted.org/packages/2c/58/5500f7e6a5ec66b8df50d84cf908041c8fa0344b15a1ad705e2e56c8b8fd/potpourri3d-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:33310bd58527ff1e19d975d9ba53150b258a3886f32b4ab7fb250188acaba175", size = 3585869, upload-time = "2026-03-25T05:51:49.687Z" }, + { url = "https://files.pythonhosted.org/packages/cb/64/b7ac23e7a3c194df9e9eff3792fceaf9b289e2d9dfbcc691c631f25b3505/potpourri3d-1.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15120a5b948a23b67613658db9dcbdaef71ce002c6b82dddfea313f0bef71180", size = 4639939, upload-time = "2026-03-25T05:51:51.292Z" }, + { url = "https://files.pythonhosted.org/packages/60/d0/6d896897cd8a64949c8511ef37eedc9e593e1c339a6466a330619fd43c6d/potpourri3d-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:948bc691012d689871056dffed52c18b100654eac3fada092c37cf457278c0f9", size = 4787902, upload-time = "2026-03-25T05:51:52.816Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f1/e207cebd6ceb6cfdeee811076a6b9eeea4d10cb29025e79375196ad64982/potpourri3d-1.4.0-cp312-cp312-win32.whl", hash = "sha256:664334a2ad80db717adb338f766ea2cbbf1ae8933b34402edc94d74a7c41b1b5", size = 4473626, upload-time = "2026-03-25T05:51:54.187Z" }, + { url = "https://files.pythonhosted.org/packages/01/a9/19d538c2d58b5834086e28b9f1962fbdb9412998d1c7ff51ad9b45ccf7b1/potpourri3d-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:771c1795f2542c92789fadbd699d23d470948997cf3202846ec8a55d9a44f7a5", size = 6137810, upload-time = "2026-03-25T05:51:55.796Z" }, + { url = "https://files.pythonhosted.org/packages/58/e6/b5299cc75fc5335b1e2cb61943bdb5bdb322be86b4703f967495ce0fa052/potpourri3d-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84a2996dd78de8e9a58a572e8649fcc1b1d068989c987b721d8ce20657db5f2e", size = 3542705, upload-time = "2026-03-25T05:51:57.195Z" }, + { url = "https://files.pythonhosted.org/packages/63/90/62691ec8ac8ba32eafd1e003170a68bb4bb436d96a14e1cea287e4a80c86/potpourri3d-1.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c575f50fe3b146ac4954ce7dd5793a8f28acb94561dfca62952092a982ba5949", size = 3147726, upload-time = "2026-03-25T05:51:58.659Z" }, + { url = "https://files.pythonhosted.org/packages/c1/60/21a94518a95686bee922c5113d230be653238e9ee6985ef0eba9b251ccd9/potpourri3d-1.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c24c4203a475a255d0731f8b45f530a49d9c577e865479ef4c55dbcb44f7ee4", size = 3387611, upload-time = "2026-03-25T05:52:00.039Z" }, + { url = "https://files.pythonhosted.org/packages/28/fb/12afb909150af89dd199c9360fa759701cf97a682cb84c7c60a9fb7d8cf8/potpourri3d-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c09d55f65f92010ce8d745bbba7d18c034d539afb209de6f8e129f2c40424978", size = 3585538, upload-time = "2026-03-25T05:52:02.087Z" }, + { url = "https://files.pythonhosted.org/packages/5d/61/50d601a2e7c4c9e768f2617dfbe54c6d320c3e5f9cf91fa0f5799e15abd8/potpourri3d-1.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:25defb1c9d205852e061c260999f35e8d86f9fc99022cf8d86070515685cb0e0", size = 4639773, upload-time = "2026-03-25T05:52:03.95Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ec/cf8cd2b32a4bf030852a4b534192233500bf31860041f64be26e39997db1/potpourri3d-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a245ff2212768a8764799078664ebf2f7e5f80c7b384650d2af2996d3fabb1e2", size = 4787781, upload-time = "2026-03-25T05:52:05.742Z" }, + { url = "https://files.pythonhosted.org/packages/fb/56/98bc09f6aa3cc2637046b09f3a9f92bc0f4f89a6b60786f05959e71a8783/potpourri3d-1.4.0-cp313-cp313-win32.whl", hash = "sha256:99ffee489c34d77af103e895241d2a34a4fc36c03fabe7462256885b71ff29fb", size = 4473719, upload-time = "2026-03-25T05:52:07.692Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6e/3ca6cf54f907e2b9a73efa35b29f5fb5fbc5963f958fff8642b6413cd10c/potpourri3d-1.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:a17ade63286b3a54f11458c504f48e97059af1a6c128afae88c87a0fa3de2d7e", size = 6137822, upload-time = "2026-03-25T05:52:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/d2/75/e482ad0cc361c6ba4cca005558ca6cc231bcfbb72127b46f090ed368773c/potpourri3d-1.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a812d6dac19b6759ecec86f9f50d8fb81f9235d9ab481519e0fa681cd1715c0a", size = 3545267, upload-time = "2026-03-25T05:52:11.232Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ab/eece1e1847af56541d991ea9afa9d56a080247756bbb0e638d6f342c3b31/potpourri3d-1.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:44aab06ca9dc0a7c40204351ee130d00d89c200e52946caf58e32a3f517c7abd", size = 3148040, upload-time = "2026-03-25T05:52:12.752Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b9/e3cdce27d3dfc43e146bd2ac984749e8ed2c41180ebb01218ee78010a599/potpourri3d-1.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0844aac607ac9d17b1a949392a67b0901524d01af330d201428a42e2c48ee022", size = 3388360, upload-time = "2026-03-25T05:52:14.246Z" }, + { url = "https://files.pythonhosted.org/packages/55/1b/b99e7c3b1289a39c9f9e8c6d659fa2ebadd5935153b6c612f64af231967d/potpourri3d-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:79805619ca9aaf0c2faa999b6fab9809a8ec50488bd02b38d8855563d9714171", size = 3585784, upload-time = "2026-03-25T05:52:15.676Z" }, + { url = "https://files.pythonhosted.org/packages/1b/99/1959528d4a48a7773adaad9e2d7557ec1c737d3ec1c276eed60406ea2e8f/potpourri3d-1.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d6391ee9fe405e60322599df567930e8062e1a861667642f19060e1baf63586e", size = 4640603, upload-time = "2026-03-25T05:52:17.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/77/48b406d37d0b6810fb06903305b3f77c5983b85076173cb1b868b1ed7e0e/potpourri3d-1.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0c466061ac34d9b6dd1e6b26290b99a26c18d4a76b1803e34ecf7146301522e1", size = 4788065, upload-time = "2026-03-25T05:52:19.064Z" }, + { url = "https://files.pythonhosted.org/packages/a1/21/9b379ad0fa86e9fbe4c208fcd228ed01770df3b4825e942e3d56500bd476/potpourri3d-1.4.0-cp314-cp314-win32.whl", hash = "sha256:eaf9feb59feac3d79f4ba78a97e64d10f1975fd9267cda29ae4ca5e6526208e9", size = 4546780, upload-time = "2026-03-25T05:52:20.6Z" }, + { url = "https://files.pythonhosted.org/packages/4b/12/7fa0b11826304bc14edd84adf4ca7d62b8225b20d0d69e53c39b37c24e17/potpourri3d-1.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:175ac38372d857f88b64f211834de9eb19b7c7258823c82568473dd0c7e7119d", size = 6259790, upload-time = "2026-03-25T05:52:22.48Z" }, + { url = "https://files.pythonhosted.org/packages/1d/38/8c0b9233887c4b8fdd8b5a88ece711f95250532dfffe70819957c7017cea/potpourri3d-1.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:37c416d5b903ebf9fe41c7a8b19e1051bf244faabfffeeee5e78b094e3e86ce3", size = 3553756, upload-time = "2026-03-25T05:52:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e7/61/f3da1db6e2a502a5577fb8cb14d32bea02d0a0ebd441a3094550b0f7c866/potpourri3d-1.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:040202b00acaddc474dbfbed04a7786f3366f2c94233ae31dc80381e8b23cebd", size = 3161572, upload-time = "2026-03-25T05:52:25.956Z" }, + { url = "https://files.pythonhosted.org/packages/c0/29/4ca84d40842ec1eb2a03944628cc66fb010b5f1fdc8a702377773e39062e/potpourri3d-1.4.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:493b0566e19e51a16c20189a6643d55525b7da85a3a02104e3a1860ebe539b4e", size = 3391295, upload-time = "2026-03-25T05:52:27.509Z" }, + { url = "https://files.pythonhosted.org/packages/35/bb/78b6c615dc6655365077e43cd30673f28dbc064bc4c32437b545a03fbed8/potpourri3d-1.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5244afc1f66191c0048d4822586de007c8acb2616caf1bf71e488188a794024b", size = 3589125, upload-time = "2026-03-25T05:52:29.114Z" }, + { url = "https://files.pythonhosted.org/packages/9c/04/669769db8de168c94b5a0b7a3b6d209c88768df4d01e885fbfc4d656e191/potpourri3d-1.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:48394a731d87cab21b007146cf14df9ee1fa050185eeaf04246586f58c7526c7", size = 4642350, upload-time = "2026-03-25T05:52:30.953Z" }, + { url = "https://files.pythonhosted.org/packages/09/a6/8c379d3e47f68462d16dc4112378855f3324ab962eed9a907ad10de8b630/potpourri3d-1.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:51c18c6faf7587119eb589d10395b7d4132ceb0ca3ded7d0b27d3df4251e5268", size = 4791000, upload-time = "2026-03-25T05:52:32.523Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1e/e895305f05d87129ce0ee3f6124f58d64270d59a4f42115a3045a47f2fe8/potpourri3d-1.4.0-cp314-cp314t-win32.whl", hash = "sha256:aaa02ed42a4295e9e32bdc1a043203b629337603111b9916c63e072405bc4d3b", size = 4558065, upload-time = "2026-03-25T05:52:34.071Z" }, + { url = "https://files.pythonhosted.org/packages/84/57/b6f8f5aba4d2bd80588a094f65bd5f1ec7542d1ffd81fb6f9587cff9aa57/potpourri3d-1.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:792bbbd67af0d251345bb94ed436946e6344fb45db508e54034061060dcf628b", size = 6275645, upload-time = "2026-03-25T05:52:35.493Z" }, ] [[package]] @@ -4801,116 +3678,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, ] -[[package]] -name = "propcache" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, - { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload-time = "2025-10-08T19:46:47.23Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload-time = "2025-10-08T19:46:48.384Z" }, - { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload-time = "2025-10-08T19:46:50.055Z" }, - { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload-time = "2025-10-08T19:46:51.815Z" }, - { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload-time = "2025-10-08T19:46:53.208Z" }, - { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload-time = "2025-10-08T19:46:54.511Z" }, - { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload-time = "2025-10-08T19:46:56.212Z" }, - { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload-time = "2025-10-08T19:46:57.595Z" }, - { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload-time = "2025-10-08T19:46:59.067Z" }, - { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload-time = "2025-10-08T19:47:00.544Z" }, - { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload-time = "2025-10-08T19:47:01.968Z" }, - { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload-time = "2025-10-08T19:47:03.503Z" }, - { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload-time = "2025-10-08T19:47:04.973Z" }, - { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload-time = "2025-10-08T19:47:06.077Z" }, - { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750, upload-time = "2025-10-08T19:47:07.648Z" }, - { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780, upload-time = "2025-10-08T19:47:08.851Z" }, - { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308, upload-time = "2025-10-08T19:47:09.982Z" }, - { url = "https://files.pythonhosted.org/packages/2d/48/c5ac64dee5262044348d1d78a5f85dd1a57464a60d30daee946699963eb3/propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", size = 208182, upload-time = "2025-10-08T19:47:11.319Z" }, - { url = "https://files.pythonhosted.org/packages/c6/0c/cd762dd011a9287389a6a3eb43aa30207bde253610cca06824aeabfe9653/propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", size = 211215, upload-time = "2025-10-08T19:47:13.146Z" }, - { url = "https://files.pythonhosted.org/packages/30/3e/49861e90233ba36890ae0ca4c660e95df565b2cd15d4a68556ab5865974e/propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", size = 218112, upload-time = "2025-10-08T19:47:14.913Z" }, - { url = "https://files.pythonhosted.org/packages/f1/8b/544bc867e24e1bd48f3118cecd3b05c694e160a168478fa28770f22fd094/propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", size = 204442, upload-time = "2025-10-08T19:47:16.277Z" }, - { url = "https://files.pythonhosted.org/packages/50/a6/4282772fd016a76d3e5c0df58380a5ea64900afd836cec2c2f662d1b9bb3/propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", size = 199398, upload-time = "2025-10-08T19:47:17.962Z" }, - { url = "https://files.pythonhosted.org/packages/3e/ec/d8a7cd406ee1ddb705db2139f8a10a8a427100347bd698e7014351c7af09/propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", size = 196920, upload-time = "2025-10-08T19:47:19.355Z" }, - { url = "https://files.pythonhosted.org/packages/f6/6c/f38ab64af3764f431e359f8baf9e0a21013e24329e8b85d2da32e8ed07ca/propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", size = 203748, upload-time = "2025-10-08T19:47:21.338Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e3/fa846bd70f6534d647886621388f0a265254d30e3ce47e5c8e6e27dbf153/propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", size = 205877, upload-time = "2025-10-08T19:47:23.059Z" }, - { url = "https://files.pythonhosted.org/packages/e2/39/8163fc6f3133fea7b5f2827e8eba2029a0277ab2c5beee6c1db7b10fc23d/propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", size = 199437, upload-time = "2025-10-08T19:47:24.445Z" }, - { url = "https://files.pythonhosted.org/packages/93/89/caa9089970ca49c7c01662bd0eeedfe85494e863e8043565aeb6472ce8fe/propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", size = 37586, upload-time = "2025-10-08T19:47:25.736Z" }, - { url = "https://files.pythonhosted.org/packages/f5/ab/f76ec3c3627c883215b5c8080debb4394ef5a7a29be811f786415fc1e6fd/propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", size = 40790, upload-time = "2025-10-08T19:47:26.847Z" }, - { url = "https://files.pythonhosted.org/packages/59/1b/e71ae98235f8e2ba5004d8cb19765a74877abf189bc53fc0c80d799e56c3/propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", size = 37158, upload-time = "2025-10-08T19:47:27.961Z" }, - { url = "https://files.pythonhosted.org/packages/83/ce/a31bbdfc24ee0dcbba458c8175ed26089cf109a55bbe7b7640ed2470cfe9/propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", size = 81451, upload-time = "2025-10-08T19:47:29.445Z" }, - { url = "https://files.pythonhosted.org/packages/25/9c/442a45a470a68456e710d96cacd3573ef26a1d0a60067e6a7d5e655621ed/propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", size = 46374, upload-time = "2025-10-08T19:47:30.579Z" }, - { url = "https://files.pythonhosted.org/packages/f4/bf/b1d5e21dbc3b2e889ea4327044fb16312a736d97640fb8b6aa3f9c7b3b65/propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", size = 48396, upload-time = "2025-10-08T19:47:31.79Z" }, - { url = "https://files.pythonhosted.org/packages/f4/04/5b4c54a103d480e978d3c8a76073502b18db0c4bc17ab91b3cb5092ad949/propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", size = 275950, upload-time = "2025-10-08T19:47:33.481Z" }, - { url = "https://files.pythonhosted.org/packages/b4/c1/86f846827fb969c4b78b0af79bba1d1ea2156492e1b83dea8b8a6ae27395/propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", size = 273856, upload-time = "2025-10-08T19:47:34.906Z" }, - { url = "https://files.pythonhosted.org/packages/36/1d/fc272a63c8d3bbad6878c336c7a7dea15e8f2d23a544bda43205dfa83ada/propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", size = 280420, upload-time = "2025-10-08T19:47:36.338Z" }, - { url = "https://files.pythonhosted.org/packages/07/0c/01f2219d39f7e53d52e5173bcb09c976609ba30209912a0680adfb8c593a/propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", size = 263254, upload-time = "2025-10-08T19:47:37.692Z" }, - { url = "https://files.pythonhosted.org/packages/2d/18/cd28081658ce597898f0c4d174d4d0f3c5b6d4dc27ffafeef835c95eb359/propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", size = 261205, upload-time = "2025-10-08T19:47:39.659Z" }, - { url = "https://files.pythonhosted.org/packages/7a/71/1f9e22eb8b8316701c2a19fa1f388c8a3185082607da8e406a803c9b954e/propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", size = 247873, upload-time = "2025-10-08T19:47:41.084Z" }, - { url = "https://files.pythonhosted.org/packages/4a/65/3d4b61f36af2b4eddba9def857959f1016a51066b4f1ce348e0cf7881f58/propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", size = 262739, upload-time = "2025-10-08T19:47:42.51Z" }, - { url = "https://files.pythonhosted.org/packages/2a/42/26746ab087faa77c1c68079b228810436ccd9a5ce9ac85e2b7307195fd06/propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", size = 263514, upload-time = "2025-10-08T19:47:43.927Z" }, - { url = "https://files.pythonhosted.org/packages/94/13/630690fe201f5502d2403dd3cfd451ed8858fe3c738ee88d095ad2ff407b/propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", size = 257781, upload-time = "2025-10-08T19:47:45.448Z" }, - { url = "https://files.pythonhosted.org/packages/92/f7/1d4ec5841505f423469efbfc381d64b7b467438cd5a4bbcbb063f3b73d27/propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", size = 41396, upload-time = "2025-10-08T19:47:47.202Z" }, - { url = "https://files.pythonhosted.org/packages/48/f0/615c30622316496d2cbbc29f5985f7777d3ada70f23370608c1d3e081c1f/propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", size = 44897, upload-time = "2025-10-08T19:47:48.336Z" }, - { url = "https://files.pythonhosted.org/packages/fd/ca/6002e46eccbe0e33dcd4069ef32f7f1c9e243736e07adca37ae8c4830ec3/propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", size = 39789, upload-time = "2025-10-08T19:47:49.876Z" }, - { url = "https://files.pythonhosted.org/packages/8e/5c/bca52d654a896f831b8256683457ceddd490ec18d9ec50e97dfd8fc726a8/propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12", size = 78152, upload-time = "2025-10-08T19:47:51.051Z" }, - { url = "https://files.pythonhosted.org/packages/65/9b/03b04e7d82a5f54fb16113d839f5ea1ede58a61e90edf515f6577c66fa8f/propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c", size = 44869, upload-time = "2025-10-08T19:47:52.594Z" }, - { url = "https://files.pythonhosted.org/packages/b2/fa/89a8ef0468d5833a23fff277b143d0573897cf75bd56670a6d28126c7d68/propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded", size = 46596, upload-time = "2025-10-08T19:47:54.073Z" }, - { url = "https://files.pythonhosted.org/packages/86/bd/47816020d337f4a746edc42fe8d53669965138f39ee117414c7d7a340cfe/propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641", size = 206981, upload-time = "2025-10-08T19:47:55.715Z" }, - { url = "https://files.pythonhosted.org/packages/df/f6/c5fa1357cc9748510ee55f37173eb31bfde6d94e98ccd9e6f033f2fc06e1/propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4", size = 211490, upload-time = "2025-10-08T19:47:57.499Z" }, - { url = "https://files.pythonhosted.org/packages/80/1e/e5889652a7c4a3846683401a48f0f2e5083ce0ec1a8a5221d8058fbd1adf/propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44", size = 215371, upload-time = "2025-10-08T19:47:59.317Z" }, - { url = "https://files.pythonhosted.org/packages/b2/f2/889ad4b2408f72fe1a4f6a19491177b30ea7bf1a0fd5f17050ca08cfc882/propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d", size = 201424, upload-time = "2025-10-08T19:48:00.67Z" }, - { url = "https://files.pythonhosted.org/packages/27/73/033d63069b57b0812c8bd19f311faebeceb6ba31b8f32b73432d12a0b826/propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b", size = 197566, upload-time = "2025-10-08T19:48:02.604Z" }, - { url = "https://files.pythonhosted.org/packages/dc/89/ce24f3dc182630b4e07aa6d15f0ff4b14ed4b9955fae95a0b54c58d66c05/propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e", size = 193130, upload-time = "2025-10-08T19:48:04.499Z" }, - { url = "https://files.pythonhosted.org/packages/a9/24/ef0d5fd1a811fb5c609278d0209c9f10c35f20581fcc16f818da959fc5b4/propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f", size = 202625, upload-time = "2025-10-08T19:48:06.213Z" }, - { url = "https://files.pythonhosted.org/packages/f5/02/98ec20ff5546f68d673df2f7a69e8c0d076b5abd05ca882dc7ee3a83653d/propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49", size = 204209, upload-time = "2025-10-08T19:48:08.432Z" }, - { url = "https://files.pythonhosted.org/packages/a0/87/492694f76759b15f0467a2a93ab68d32859672b646aa8a04ce4864e7932d/propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144", size = 197797, upload-time = "2025-10-08T19:48:09.968Z" }, - { url = "https://files.pythonhosted.org/packages/ee/36/66367de3575db1d2d3f3d177432bd14ee577a39d3f5d1b3d5df8afe3b6e2/propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f", size = 38140, upload-time = "2025-10-08T19:48:11.232Z" }, - { url = "https://files.pythonhosted.org/packages/0c/2a/a758b47de253636e1b8aef181c0b4f4f204bf0dd964914fb2af90a95b49b/propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153", size = 41257, upload-time = "2025-10-08T19:48:12.707Z" }, - { url = "https://files.pythonhosted.org/packages/34/5e/63bd5896c3fec12edcbd6f12508d4890d23c265df28c74b175e1ef9f4f3b/propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992", size = 38097, upload-time = "2025-10-08T19:48:13.923Z" }, - { url = "https://files.pythonhosted.org/packages/99/85/9ff785d787ccf9bbb3f3106f79884a130951436f58392000231b4c737c80/propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f", size = 81455, upload-time = "2025-10-08T19:48:15.16Z" }, - { url = "https://files.pythonhosted.org/packages/90/85/2431c10c8e7ddb1445c1f7c4b54d886e8ad20e3c6307e7218f05922cad67/propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393", size = 46372, upload-time = "2025-10-08T19:48:16.424Z" }, - { url = "https://files.pythonhosted.org/packages/01/20/b0972d902472da9bcb683fa595099911f4d2e86e5683bcc45de60dd05dc3/propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0", size = 48411, upload-time = "2025-10-08T19:48:17.577Z" }, - { url = "https://files.pythonhosted.org/packages/e2/e3/7dc89f4f21e8f99bad3d5ddb3a3389afcf9da4ac69e3deb2dcdc96e74169/propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a", size = 275712, upload-time = "2025-10-08T19:48:18.901Z" }, - { url = "https://files.pythonhosted.org/packages/20/67/89800c8352489b21a8047c773067644e3897f02ecbbd610f4d46b7f08612/propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be", size = 273557, upload-time = "2025-10-08T19:48:20.762Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a1/b52b055c766a54ce6d9c16d9aca0cad8059acd9637cdf8aa0222f4a026ef/propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc", size = 280015, upload-time = "2025-10-08T19:48:22.592Z" }, - { url = "https://files.pythonhosted.org/packages/48/c8/33cee30bd890672c63743049f3c9e4be087e6780906bfc3ec58528be59c1/propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a", size = 262880, upload-time = "2025-10-08T19:48:23.947Z" }, - { url = "https://files.pythonhosted.org/packages/0c/b1/8f08a143b204b418285c88b83d00edbd61afbc2c6415ffafc8905da7038b/propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89", size = 260938, upload-time = "2025-10-08T19:48:25.656Z" }, - { url = "https://files.pythonhosted.org/packages/cf/12/96e4664c82ca2f31e1c8dff86afb867348979eb78d3cb8546a680287a1e9/propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726", size = 247641, upload-time = "2025-10-08T19:48:27.207Z" }, - { url = "https://files.pythonhosted.org/packages/18/ed/e7a9cfca28133386ba52278136d42209d3125db08d0a6395f0cba0c0285c/propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367", size = 262510, upload-time = "2025-10-08T19:48:28.65Z" }, - { url = "https://files.pythonhosted.org/packages/f5/76/16d8bf65e8845dd62b4e2b57444ab81f07f40caa5652b8969b87ddcf2ef6/propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36", size = 263161, upload-time = "2025-10-08T19:48:30.133Z" }, - { url = "https://files.pythonhosted.org/packages/e7/70/c99e9edb5d91d5ad8a49fa3c1e8285ba64f1476782fed10ab251ff413ba1/propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455", size = 257393, upload-time = "2025-10-08T19:48:31.567Z" }, - { url = "https://files.pythonhosted.org/packages/08/02/87b25304249a35c0915d236575bc3574a323f60b47939a2262b77632a3ee/propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85", size = 42546, upload-time = "2025-10-08T19:48:32.872Z" }, - { url = "https://files.pythonhosted.org/packages/cb/ef/3c6ecf8b317aa982f309835e8f96987466123c6e596646d4e6a1dfcd080f/propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1", size = 46259, upload-time = "2025-10-08T19:48:34.226Z" }, - { url = "https://files.pythonhosted.org/packages/c4/2d/346e946d4951f37eca1e4f55be0f0174c52cd70720f84029b02f296f4a38/propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9", size = 40428, upload-time = "2025-10-08T19:48:35.441Z" }, - { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, -] - [[package]] name = "psutil" -version = "7.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/73/cb/09e5184fb5fc0358d110fc3ca7f6b1d033800734d34cac10f4136cfac10e/psutil-7.2.1.tar.gz", hash = "sha256:f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3", size = 490253, upload-time = "2025-12-29T08:26:00.169Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/8e/f0c242053a368c2aa89584ecd1b054a18683f13d6e5a318fc9ec36582c94/psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d", size = 129624, upload-time = "2025-12-29T08:26:04.255Z" }, - { url = "https://files.pythonhosted.org/packages/26/97/a58a4968f8990617decee234258a2b4fc7cd9e35668387646c1963e69f26/psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49", size = 130132, upload-time = "2025-12-29T08:26:06.228Z" }, - { url = "https://files.pythonhosted.org/packages/db/6d/ed44901e830739af5f72a85fa7ec5ff1edea7f81bfbf4875e409007149bd/psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc", size = 180612, upload-time = "2025-12-29T08:26:08.276Z" }, - { url = "https://files.pythonhosted.org/packages/c7/65/b628f8459bca4efbfae50d4bf3feaab803de9a160b9d5f3bd9295a33f0c2/psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf", size = 183201, upload-time = "2025-12-29T08:26:10.622Z" }, - { url = "https://files.pythonhosted.org/packages/fb/23/851cadc9764edcc18f0effe7d0bf69f727d4cf2442deb4a9f78d4e4f30f2/psutil-7.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f", size = 139081, upload-time = "2025-12-29T08:26:12.483Z" }, - { url = "https://files.pythonhosted.org/packages/59/82/d63e8494ec5758029f31c6cb06d7d161175d8281e91d011a4a441c8a43b5/psutil-7.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672", size = 134767, upload-time = "2025-12-29T08:26:14.528Z" }, - { url = "https://files.pythonhosted.org/packages/05/c2/5fb764bd61e40e1fe756a44bd4c21827228394c17414ade348e28f83cd79/psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679", size = 129716, upload-time = "2025-12-29T08:26:16.017Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d2/935039c20e06f615d9ca6ca0ab756cf8408a19d298ffaa08666bc18dc805/psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f", size = 130133, upload-time = "2025-12-29T08:26:18.009Z" }, - { url = "https://files.pythonhosted.org/packages/77/69/19f1eb0e01d24c2b3eacbc2f78d3b5add8a89bf0bb69465bc8d563cc33de/psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129", size = 181518, upload-time = "2025-12-29T08:26:20.241Z" }, - { url = "https://files.pythonhosted.org/packages/e1/6d/7e18b1b4fa13ad370787626c95887b027656ad4829c156bb6569d02f3262/psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a", size = 184348, upload-time = "2025-12-29T08:26:22.215Z" }, - { url = "https://files.pythonhosted.org/packages/98/60/1672114392dd879586d60dd97896325df47d9a130ac7401318005aab28ec/psutil-7.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79", size = 140400, upload-time = "2025-12-29T08:26:23.993Z" }, - { url = "https://files.pythonhosted.org/packages/fb/7b/d0e9d4513c46e46897b46bcfc410d51fc65735837ea57a25170f298326e6/psutil-7.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266", size = 135430, upload-time = "2025-12-29T08:26:25.999Z" }, - { url = "https://files.pythonhosted.org/packages/c5/cf/5180eb8c8bdf6a503c6919f1da28328bd1e6b3b1b5b9d5b01ae64f019616/psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42", size = 128137, upload-time = "2025-12-29T08:26:27.759Z" }, - { url = "https://files.pythonhosted.org/packages/c5/2c/78e4a789306a92ade5000da4f5de3255202c534acdadc3aac7b5458fadef/psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1", size = 128947, upload-time = "2025-12-29T08:26:29.548Z" }, - { url = "https://files.pythonhosted.org/packages/29/f8/40e01c350ad9a2b3cb4e6adbcc8a83b17ee50dd5792102b6142385937db5/psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8", size = 154694, upload-time = "2025-12-29T08:26:32.147Z" }, - { url = "https://files.pythonhosted.org/packages/06/e4/b751cdf839c011a9714a783f120e6a86b7494eb70044d7d81a25a5cd295f/psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6", size = 156136, upload-time = "2025-12-29T08:26:34.079Z" }, - { url = "https://files.pythonhosted.org/packages/44/ad/bbf6595a8134ee1e94a4487af3f132cef7fce43aef4a93b49912a48c3af7/psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8", size = 148108, upload-time = "2025-12-29T08:26:36.225Z" }, - { url = "https://files.pythonhosted.org/packages/1c/15/dd6fd869753ce82ff64dcbc18356093471a5a5adf4f77ed1f805d473d859/psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67", size = 147402, upload-time = "2025-12-29T08:26:39.21Z" }, - { url = "https://files.pythonhosted.org/packages/34/68/d9317542e3f2b180c4306e3f45d3c922d7e86d8ce39f941bb9e2e9d8599e/psutil-7.2.1-cp37-abi3-win_amd64.whl", hash = "sha256:b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17", size = 136938, upload-time = "2025-12-29T08:26:41.036Z" }, - { url = "https://files.pythonhosted.org/packages/3e/73/2ce007f4198c80fcf2cb24c169884f833fe93fbc03d55d302627b094ee91/psutil-7.2.1-cp37-abi3-win_arm64.whl", hash = "sha256:0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442", size = 133836, upload-time = "2025-12-29T08:26:43.086Z" }, +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, ] [[package]] @@ -4932,94 +3725,39 @@ wheels = [ ] [[package]] -name = "pyarrow" -version = "22.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151, upload-time = "2025-10-24T12:30:00.762Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578, upload-time = "2025-10-24T10:05:21.583Z" }, - { url = "https://files.pythonhosted.org/packages/b1/d0/f9ad86fe809efd2bcc8be32032fa72e8b0d112b01ae56a053006376c5930/pyarrow-22.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", size = 35989906, upload-time = "2025-10-24T10:05:29.485Z" }, - { url = "https://files.pythonhosted.org/packages/b4/a8/f910afcb14630e64d673f15904ec27dd31f1e009b77033c365c84e8c1e1d/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", size = 45021677, upload-time = "2025-10-24T10:05:38.274Z" }, - { url = "https://files.pythonhosted.org/packages/13/95/aec81f781c75cd10554dc17a25849c720d54feafb6f7847690478dcf5ef8/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", size = 47726315, upload-time = "2025-10-24T10:05:47.314Z" }, - { url = "https://files.pythonhosted.org/packages/bb/d4/74ac9f7a54cfde12ee42734ea25d5a3c9a45db78f9def949307a92720d37/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", size = 47990906, upload-time = "2025-10-24T10:05:58.254Z" }, - { url = "https://files.pythonhosted.org/packages/2e/71/fedf2499bf7a95062eafc989ace56572f3343432570e1c54e6599d5b88da/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", size = 50306783, upload-time = "2025-10-24T10:06:08.08Z" }, - { url = "https://files.pythonhosted.org/packages/68/ed/b202abd5a5b78f519722f3d29063dda03c114711093c1995a33b8e2e0f4b/pyarrow-22.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", size = 27972883, upload-time = "2025-10-24T10:06:14.204Z" }, - { url = "https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", size = 34204629, upload-time = "2025-10-24T10:06:20.274Z" }, - { url = "https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", size = 35985783, upload-time = "2025-10-24T10:06:27.301Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", size = 45020999, upload-time = "2025-10-24T10:06:35.387Z" }, - { url = "https://files.pythonhosted.org/packages/1b/8b/5362443737a5307a7b67c1017c42cd104213189b4970bf607e05faf9c525/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", size = 47724601, upload-time = "2025-10-24T10:06:43.551Z" }, - { url = "https://files.pythonhosted.org/packages/69/4d/76e567a4fc2e190ee6072967cb4672b7d9249ac59ae65af2d7e3047afa3b/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", size = 48001050, upload-time = "2025-10-24T10:06:52.284Z" }, - { url = "https://files.pythonhosted.org/packages/01/5e/5653f0535d2a1aef8223cee9d92944cb6bccfee5cf1cd3f462d7cb022790/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", size = 50307877, upload-time = "2025-10-24T10:07:02.405Z" }, - { url = "https://files.pythonhosted.org/packages/2d/f8/1d0bd75bf9328a3b826e24a16e5517cd7f9fbf8d34a3184a4566ef5a7f29/pyarrow-22.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", size = 27977099, upload-time = "2025-10-24T10:08:07.259Z" }, - { url = "https://files.pythonhosted.org/packages/90/81/db56870c997805bf2b0f6eeeb2d68458bf4654652dccdcf1bf7a42d80903/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", size = 34336685, upload-time = "2025-10-24T10:07:11.47Z" }, - { url = "https://files.pythonhosted.org/packages/1c/98/0727947f199aba8a120f47dfc229eeb05df15bcd7a6f1b669e9f882afc58/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", size = 36032158, upload-time = "2025-10-24T10:07:18.626Z" }, - { url = "https://files.pythonhosted.org/packages/96/b4/9babdef9c01720a0785945c7cf550e4acd0ebcd7bdd2e6f0aa7981fa85e2/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", size = 44892060, upload-time = "2025-10-24T10:07:26.002Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ca/2f8804edd6279f78a37062d813de3f16f29183874447ef6d1aadbb4efa0f/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", size = 47504395, upload-time = "2025-10-24T10:07:34.09Z" }, - { url = "https://files.pythonhosted.org/packages/b9/f0/77aa5198fd3943682b2e4faaf179a674f0edea0d55d326d83cb2277d9363/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", size = 48066216, upload-time = "2025-10-24T10:07:43.528Z" }, - { url = "https://files.pythonhosted.org/packages/79/87/a1937b6e78b2aff18b706d738c9e46ade5bfcf11b294e39c87706a0089ac/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", size = 50288552, upload-time = "2025-10-24T10:07:53.519Z" }, - { url = "https://files.pythonhosted.org/packages/60/ae/b5a5811e11f25788ccfdaa8f26b6791c9807119dffcf80514505527c384c/pyarrow-22.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", size = 28262504, upload-time = "2025-10-24T10:08:00.932Z" }, - { url = "https://files.pythonhosted.org/packages/bd/b0/0fa4d28a8edb42b0a7144edd20befd04173ac79819547216f8a9f36f9e50/pyarrow-22.0.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", size = 34224062, upload-time = "2025-10-24T10:08:14.101Z" }, - { url = "https://files.pythonhosted.org/packages/0f/a8/7a719076b3c1be0acef56a07220c586f25cd24de0e3f3102b438d18ae5df/pyarrow-22.0.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", size = 35990057, upload-time = "2025-10-24T10:08:21.842Z" }, - { url = "https://files.pythonhosted.org/packages/89/3c/359ed54c93b47fb6fe30ed16cdf50e3f0e8b9ccfb11b86218c3619ae50a8/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", size = 45068002, upload-time = "2025-10-24T10:08:29.034Z" }, - { url = "https://files.pythonhosted.org/packages/55/fc/4945896cc8638536ee787a3bd6ce7cec8ec9acf452d78ec39ab328efa0a1/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", size = 47737765, upload-time = "2025-10-24T10:08:38.559Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5e/7cb7edeb2abfaa1f79b5d5eb89432356155c8426f75d3753cbcb9592c0fd/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", size = 48048139, upload-time = "2025-10-24T10:08:46.784Z" }, - { url = "https://files.pythonhosted.org/packages/88/c6/546baa7c48185f5e9d6e59277c4b19f30f48c94d9dd938c2a80d4d6b067c/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", size = 50314244, upload-time = "2025-10-24T10:08:55.771Z" }, - { url = "https://files.pythonhosted.org/packages/3c/79/755ff2d145aafec8d347bf18f95e4e81c00127f06d080135dfc86aea417c/pyarrow-22.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", size = 28757501, upload-time = "2025-10-24T10:09:59.891Z" }, - { url = "https://files.pythonhosted.org/packages/0e/d2/237d75ac28ced3147912954e3c1a174df43a95f4f88e467809118a8165e0/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", size = 34355506, upload-time = "2025-10-24T10:09:02.953Z" }, - { url = "https://files.pythonhosted.org/packages/1e/2c/733dfffe6d3069740f98e57ff81007809067d68626c5faef293434d11bd6/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", size = 36047312, upload-time = "2025-10-24T10:09:10.334Z" }, - { url = "https://files.pythonhosted.org/packages/7c/2b/29d6e3782dc1f299727462c1543af357a0f2c1d3c160ce199950d9ca51eb/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", size = 45081609, upload-time = "2025-10-24T10:09:18.61Z" }, - { url = "https://files.pythonhosted.org/packages/8d/42/aa9355ecc05997915af1b7b947a7f66c02dcaa927f3203b87871c114ba10/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", size = 47703663, upload-time = "2025-10-24T10:09:27.369Z" }, - { url = "https://files.pythonhosted.org/packages/ee/62/45abedde480168e83a1de005b7b7043fd553321c1e8c5a9a114425f64842/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", size = 48066543, upload-time = "2025-10-24T10:09:34.908Z" }, - { url = "https://files.pythonhosted.org/packages/84/e9/7878940a5b072e4f3bf998770acafeae13b267f9893af5f6d4ab3904b67e/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", size = 50288838, upload-time = "2025-10-24T10:09:44.394Z" }, - { url = "https://files.pythonhosted.org/packages/7b/03/f335d6c52b4a4761bcc83499789a1e2e16d9d201a58c327a9b5cc9a41bd9/pyarrow-22.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", size = 29185594, upload-time = "2025-10-24T10:09:53.111Z" }, -] - -[[package]] -name = "pyasn1" -version = "0.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, -] - -[[package]] -name = "pyasn1-modules" -version = "0.4.2" +name = "pybind11-stubgen" +version = "2.5.5" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/81/81900180501a51056572dd01aa852cc2d162478d4676ecebbfaad5cc20d1/pybind11_stubgen-2.5.5.tar.gz", hash = "sha256:758d6d6bbeefc62ad7f78d5e5bbf357ccf6af83cd4504f5f549403f452942708", size = 25031, upload-time = "2025-08-09T01:22:44.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e4/4f2d41881fae547f06ffa4c9748fa8ed13c4db5c830ff268b84175546b3c/pybind11_stubgen-2.5.5-py3-none-any.whl", hash = "sha256:10824cd2fc5cbbee032b8fb39e6f6c08de232deb309bc66d786a6c6e8a4601bd", size = 30210, upload-time = "2025-08-09T01:22:43.135Z" }, ] [[package]] name = "pycollada" -version = "0.9.2" +version = "0.9.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/13/21debba42c0c255acba29f42af8785ecad656948d30fde5302d5e4494d1c/pycollada-0.9.2.tar.gz", hash = "sha256:7ca12267be0a2b93e495d6036e6b274023a9457ded641954eb0c470efe153d6e", size = 109972, upload-time = "2025-06-30T16:23:48.254Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/8d/52a5364a17eb96129962cae8d3ee7658775e085ad0ba38388684ad5944e9/pycollada-0.9.3.tar.gz", hash = "sha256:c34d6dcf0fe2eba5896f71c96d37a1c0fe1a61f08440fa0cfcec3dc2895d3302", size = 110826, upload-time = "2026-01-24T15:45:23.625Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/75/04e83be415fc67fa29d2447eb3248ea3bb79c2243be3f2fdfcca3699ce8b/pycollada-0.9.2-py3-none-any.whl", hash = "sha256:12fbeef6461688b6b3775c50196a2bb5f8813c0d39923a5a49681a75eb4622c9", size = 128399, upload-time = "2025-06-30T16:23:47.327Z" }, + { url = "https://files.pythonhosted.org/packages/07/86/f1f61b7a0701f9d1299e5293d083318019f91021a4d449f94d59dbe024e4/pycollada-0.9.3-py3-none-any.whl", hash = "sha256:636e6496f60987586db82455ea7bbd9ade775e8181c6590c83b698b6cd53a9f5", size = 129206, upload-time = "2026-01-24T15:45:22.182Z" }, ] [[package]] name = "pycparser" -version = "2.23" +version = "3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] name = "pydantic" -version = "2.12.5" +version = "2.13.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -5027,2928 +3765,194 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, ] [[package]] name = "pydantic-core" -version = "2.41.5" +version = "2.46.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, - { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, - { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, - { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, - { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, - { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, - { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, - { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, - { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, - { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, - { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, - { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, - { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, - { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, - { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, - { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, - { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, - { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, - { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, - { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, - { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, - { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, - { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, - { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, - { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, - { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, - { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, - { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, - { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, - { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, - { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, - { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, - { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, - { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, - { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, - { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, - { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, - { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, - { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, - { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, - { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, - { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, - { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, - { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, - { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, - { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, -] - -[[package]] -name = "pydantic-settings" -version = "2.12.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "python-dotenv" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184, upload-time = "2025-11-10T14:25:47.013Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880, upload-time = "2025-11-10T14:25:45.546Z" }, -] - -[[package]] -name = "pydicom" -version = "3.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/6f/55ea163b344c91df2e03c007bebf94781f0817656e2c037d7c5bf86c3bfc/pydicom-3.0.1.tar.gz", hash = "sha256:7b8be344b5b62493c9452ba6f5a299f78f8a6ab79786c729b0613698209603ec", size = 2884731, upload-time = "2024-09-22T02:02:43.202Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/a6/98651e752a49f341aa99aa3f6c8ba361728dfc064242884355419df63669/pydicom-3.0.1-py3-none-any.whl", hash = "sha256:db32f78b2641bd7972096b8289111ddab01fb221610de8d7afa835eb938adb41", size = 2376126, upload-time = "2024-09-22T02:02:41.616Z" }, -] - -[[package]] -name = "pydot" -version = "4.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyparsing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/35/b17cb89ff865484c6a20ef46bf9d95a5f07328292578de0b295f4a6beec2/pydot-4.0.1.tar.gz", hash = "sha256:c2148f681c4a33e08bf0e26a9e5f8e4099a82e0e2a068098f32ce86577364ad5", size = 162594, upload-time = "2025-06-17T20:09:56.454Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl", hash = "sha256:869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6", size = 37087, upload-time = "2025-06-17T20:09:55.25Z" }, -] - -[[package]] -name = "pygit2" -version = "1.19.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/49/cf8350817de19f4cafe4ae47881e38f56d9bbebaa9e5ef31a5458af4bcf8/pygit2-1.19.1.tar.gz", hash = "sha256:3165f784aae56a309a27d8eeae7923d53da2e8f6094308c7f5b428deec925cf9", size = 800869, upload-time = "2025-12-29T11:47:48.618Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/36/0784870218794d6069bf8ebae55679964edc44b8e59279f4526aa1220569/pygit2-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8e6a4f4a711750c286a13cea0007b40f7466c4d741c3d9b223ffbc3bbfbafe7", size = 5700218, upload-time = "2025-12-29T11:46:44.537Z" }, - { url = "https://files.pythonhosted.org/packages/56/65/47206823900ddca606022025369ba3e136de9d2310585acac10d8cef81fd/pygit2-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3f2340a668eb3e2d8927dcbeb1a043d3a65d2dd39a913995b34fc437da5e73af", size = 5692231, upload-time = "2025-12-29T11:46:45.821Z" }, - { url = "https://files.pythonhosted.org/packages/19/27/c6b52f53ee16b9d7eaacc575f08add3c336f53b5561cf94fe41ceeab1589/pygit2-1.19.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe41f09b1e334c43def6636b1133d2f4c91a20d9a6691bb4e7558e42a31bcb4e", size = 6022217, upload-time = "2025-12-29T11:46:47.086Z" }, - { url = "https://files.pythonhosted.org/packages/dc/ac/41d7a1ed69e117e9cd99b2f40f63898f9725ac6c4245b2b531ae0b7e59da/pygit2-1.19.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:527e57133d30ff6ea96634da6bf428f7d551958207fa73f9e9a18582b885e192", size = 4622846, upload-time = "2025-12-29T11:46:48.679Z" }, - { url = "https://files.pythonhosted.org/packages/09/22/f8fc7860b7b7ba15f7bf802ae3bce52b3e765b48846db115cb1c8372f971/pygit2-1.19.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a9340cb85b7be40080186a9d4dbf712a6be8a842556acbbfb305baebfb854f3", size = 5785236, upload-time = "2025-12-29T11:46:50.24Z" }, - { url = "https://files.pythonhosted.org/packages/ec/62/ee9275c48ecc119a7f5c48209aaa06d5f71d8476703c7700182c49c8a7a8/pygit2-1.19.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:66ecfa69f2287f50ec95dfc04821219c2f664c4cd292c7b33c10ed9afe975132", size = 6028266, upload-time = "2025-12-29T11:46:51.5Z" }, - { url = "https://files.pythonhosted.org/packages/7c/98/311112a50e6e319921f06c20ff237360c10bb2e8a1f959361567e48835f3/pygit2-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:14c76ec968ae20a6689c7b6fa833ef546c7bc176127d71e7b67cb2345a9813fb", size = 5755041, upload-time = "2025-12-29T11:46:53.337Z" }, - { url = "https://files.pythonhosted.org/packages/e1/45/f6a24326fb94e56ddae9906e21d4e4a006a36131a3a73819be1177e30e93/pygit2-1.19.1-cp312-cp312-win32.whl", hash = "sha256:ffe94118d39f6969fda594224b2b6df1ae79306adaf090ede65bcaf1a41b3a81", size = 942948, upload-time = "2025-12-29T11:46:54.465Z" }, - { url = "https://files.pythonhosted.org/packages/a3/1a/912ee3a33ba665f82cf8ed0087e7446f1f8e117aba1627e0c4ccc9b2a8c5/pygit2-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:c2ee3f2e91b0a5674ab7cb373234c23cf5f1cf6d84e56e6d12ff3db21414cf47", size = 1159880, upload-time = "2025-12-29T11:46:55.523Z" }, - { url = "https://files.pythonhosted.org/packages/24/fc/784eeceab43c2b4978aa46f03c267409f2502331fa18d0a8e58116d143d0/pygit2-1.19.1-cp312-cp312-win_arm64.whl", hash = "sha256:c8747d968d8d6b9d390263907f014d38a0f67bd26d8243e5bc3384cb252ec3d3", size = 966904, upload-time = "2025-12-29T11:46:56.888Z" }, - { url = "https://files.pythonhosted.org/packages/a0/2b/b3c8661e710ec49f7f38f992b913d6fef21e21ef6b9b327111b85bf1460c/pygit2-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:39af62f3e18dfdfb15c347c12b51231fdb3db3c9d5105d9046847ead14b42fce", size = 5700202, upload-time = "2025-12-29T11:46:58.294Z" }, - { url = "https://files.pythonhosted.org/packages/e2/1f/f67ec7f78a34ed14dbd3acf05ed23c4c8c2336ba6f3ca78d6b9962878435/pygit2-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed39106f1d9560709191093ed5251471dfb6b9e4aa35299dde45f4b91f7c984e", size = 5692171, upload-time = "2025-12-29T11:46:59.535Z" }, - { url = "https://files.pythonhosted.org/packages/a7/02/02f0f56b9b0b044018d9047adf68ba842ebda662ba43ace942ed904f8e9d/pygit2-1.19.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb4da746c92e23281890e865887d83f24e662fc3e1c481420e4993c5a13203fe", size = 6023018, upload-time = "2025-12-29T11:47:00.984Z" }, - { url = "https://files.pythonhosted.org/packages/da/a6/5ec78c14ca00fbffe6aa32eb6f5fbeb7fb06eb39e6929b06f7635f501a45/pygit2-1.19.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:93ccfab2340d38374f91ecf6cae6658bebc73883c376eb81eeb293781f6aef94", size = 4623392, upload-time = "2025-12-29T11:47:02.598Z" }, - { url = "https://files.pythonhosted.org/packages/d5/80/1a87f6e043e04cfa125380a73ef9f87a8c58292b7d4a6ed2e6203b4cd534/pygit2-1.19.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef18f1208422d3cac1c109417a5fc6143704cfff8e5de4e1665fa4a89ffe3902", size = 5786360, upload-time = "2025-12-29T11:47:03.898Z" }, - { url = "https://files.pythonhosted.org/packages/f7/6e/f5e38a4645d7fbba40083f94278814b9863b0afd14e905ebbd7ef31a27ec/pygit2-1.19.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:344f4c1e84eaa2434fbb43d96a1dd79796ab9559587a8533331fef92eab0ec7d", size = 6029576, upload-time = "2025-12-29T11:47:05.109Z" }, - { url = "https://files.pythonhosted.org/packages/53/cc/e5ff546f003c3fa635495105e3e039de3a863da66c82289b7a8baf6d5b48/pygit2-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1ae2f408206c67d395e8dc77425f8ab457cad59faaa58c700164398a62823e82", size = 5756457, upload-time = "2025-12-29T11:47:06.483Z" }, - { url = "https://files.pythonhosted.org/packages/da/dd/1331e3bdabd811992f511ebfa96f56c7b13d5f16837d74ac34dac93ce999/pygit2-1.19.1-cp313-cp313-win32.whl", hash = "sha256:9d6cf97c2da5c589b65371a8115be920cf417c46a80a2b12edb26e54a5238190", size = 942919, upload-time = "2025-12-29T11:47:07.833Z" }, - { url = "https://files.pythonhosted.org/packages/6d/01/98f74ecbe92f042d27e4de3cd7f093422d523cc67fdc74e6a65dbe4efbb8/pygit2-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:6d73aedffad280f6b655394e303533fcff15545d4d8f322011179c9474bb1b13", size = 1159846, upload-time = "2025-12-29T11:47:09.228Z" }, - { url = "https://files.pythonhosted.org/packages/27/4e/df8fa9a9f4e4e9aec417f8a674466d613985efb67453aa206f0455003738/pygit2-1.19.1-cp313-cp313-win_arm64.whl", hash = "sha256:8b067241c03a29440507e78637e233998fe1a11d2082169bd8177694ec4ee747", size = 966896, upload-time = "2025-12-29T11:47:10.233Z" }, - { url = "https://files.pythonhosted.org/packages/dd/45/1284c7714070b51e3413e66b677fa4ecf8c840d2f86d1bebc77d2390fe3d/pygit2-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d10a46285b9ae39b9de2d9f44ac7f933993aecfab189c2932320b3df596311c8", size = 5702338, upload-time = "2025-12-29T11:47:12.807Z" }, - { url = "https://files.pythonhosted.org/packages/a3/9f/7a39d4c612e12966130504e1610f500b397d7968feb6d25e1353614dab74/pygit2-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d0f3924d8d0d54a7fe186761c76dc1b6e5fcf41794a6daba1630db3bc216b9ba", size = 5692261, upload-time = "2025-12-29T11:47:14.276Z" }, - { url = "https://files.pythonhosted.org/packages/0b/7c/7806cf0ae9200bd773628be6d8c345d277b8f0161de950b572a4ce200105/pygit2-1.19.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4fcc301cfe9c29f3e29f0f80d81ae65c0bee368672b23566467dc91b5edae4b", size = 6025106, upload-time = "2025-12-29T11:47:15.904Z" }, - { url = "https://files.pythonhosted.org/packages/dc/30/7f1b67711705eb0220dcc4581a97b4aebad4ffde2f6f6b94314690e1cfa1/pygit2-1.19.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3c6eacf82f15e001121dc0f60057f462627045447d8bd8587b33b13159ae5155", size = 4627355, upload-time = "2025-12-29T11:47:17.365Z" }, - { url = "https://files.pythonhosted.org/packages/14/88/25f1e65ff6ed678e1be9aaeabeedcb26531d17b6b86c4b1d50d8f0c50825/pygit2-1.19.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:074b0b14c6f3c7e2c6ea0b01a90832407a71520c920918aa07f509c91f1691f9", size = 5788548, upload-time = "2025-12-29T11:47:18.98Z" }, - { url = "https://files.pythonhosted.org/packages/e7/5d/ff1b12d3682918ac6c3c6629a6c6272db1b4041994d38045d3c334034570/pygit2-1.19.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ada5d3e813e21918e004a33c66aba4a2b829cd5c0c0e85b92dd70f84cf95ac56", size = 6030078, upload-time = "2025-12-29T11:47:20.324Z" }, - { url = "https://files.pythonhosted.org/packages/1c/c5/c078ed6f1f5d7f3feba4b86d53e464c8358112ec32943e11e36557009818/pygit2-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:19ebe25fd8e95ed8a0be0a9dd4cecc1233db4f2a44a2a73984620909e98e907f", size = 5757154, upload-time = "2025-12-29T11:47:21.971Z" }, - { url = "https://files.pythonhosted.org/packages/76/90/1722d7c2db5d563becb59a54b2f49b44964ff699826629f96594064d972a/pygit2-1.19.1-cp314-cp314-win32.whl", hash = "sha256:5bc0738a49cceb76f0fba7cdb24532857a980e4a36b9a0da025c359dfe3676b4", size = 964159, upload-time = "2025-12-29T11:47:23.508Z" }, - { url = "https://files.pythonhosted.org/packages/74/72/80558b71ed780a732c9ff10003c3a73b68fbf320c3125ae11bb664a8076c/pygit2-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:527d40925bb85b86da0e96ecc90e9ca74d0a0273ab645bac0787b95923d93160", size = 1190612, upload-time = "2025-12-29T11:47:24.889Z" }, - { url = "https://files.pythonhosted.org/packages/28/68/c60ff9ae38543a520ca93c0d52a52c2e375ac44b9a5c5da99044cca8c5c5/pygit2-1.19.1-cp314-cp314-win_arm64.whl", hash = "sha256:21c7c8b5aa2f48cefdb8521185f0cd3c110a340e2d9f62a46a94db01a907db73", size = 994766, upload-time = "2025-12-29T11:47:25.902Z" }, - { url = "https://files.pythonhosted.org/packages/ee/42/4da546bf55183877e7da4327594ab138db92aa00921d46d513626bcad19f/pygit2-1.19.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9c5e4eb975b664b6821fe6a05b03bbc51052d1fb22f20652e1d4349ae24ed7ac", size = 5705642, upload-time = "2025-12-29T11:47:27.034Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b7/74a9cf3d2e6cd6bd2fa6a7bc3530054c2f720fc59e3b731251bbdebd8983/pygit2-1.19.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8752eae5780ee51edae326cac394868917704624b63d03a5217c5e94a532a0e3", size = 5695192, upload-time = "2025-12-29T11:47:28.98Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b9/bde02249c2c5deecc8e483ee9132f86f67114eec154ee10219d23a1ce9f9/pygit2-1.19.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:457f5a2e6d8527b5ad7a8bd16586c72ad2ce0aa218a37380f16d07520569ceaf", size = 6085318, upload-time = "2025-12-29T11:47:30.268Z" }, - { url = "https://files.pythonhosted.org/packages/d2/ae/b3a14edaa579700aee33a25a788f5f4fe67713a6e2273a897635e6742b35/pygit2-1.19.1-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3c8a9d53c84724c97d7e298f6628655c19f9911a90b88c362cb7d5daa645464f", size = 4684691, upload-time = "2025-12-29T11:47:31.829Z" }, - { url = "https://files.pythonhosted.org/packages/00/8d/5f557be149931ef7d692b66296a44263a1769070466eb1e63d6d1b3b97c1/pygit2-1.19.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d8442ad863be83be86baff006a6e11de3cddf17c7ee77eac2d389765987b554", size = 5841500, upload-time = "2025-12-29T11:47:33.636Z" }, - { url = "https://files.pythonhosted.org/packages/ce/f7/0101b3058e64df334c48193dfd6f1493a24b0c7813382c6b2e4db7a09ffa/pygit2-1.19.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ae9c775be518c7f20bf340091d329d3b9203cbd4273bf1b5505dc82dccf08147", size = 6087805, upload-time = "2025-12-29T11:47:34.926Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/7d3fa88362b1703cd5b9bde411f37cded3b1f99dc83b720fc0c65ac8f37b/pygit2-1.19.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d5a45d466a4bc5d9eb0619ffc26b17e4018285e35ba9e2fe39576f13480b63bc", size = 5809156, upload-time = "2025-12-29T11:47:36.396Z" }, - { url = "https://files.pythonhosted.org/packages/90/38/f1952af3f61b3a7a49c417ffb67a5140c1183e6b04ec714c8941937860bf/pygit2-1.19.1-cp314-cp314t-win32.whl", hash = "sha256:6621acaaf2670e8fd0727c15271e5209a99769b127300ef7fc56b49babc8b1c1", size = 969317, upload-time = "2025-12-29T11:47:38.01Z" }, - { url = "https://files.pythonhosted.org/packages/31/02/205a4d10cb1195f6abf0a509883ede90caddefca6d9c3b54ef96e79e8e8a/pygit2-1.19.1-cp314-cp314t-win_amd64.whl", hash = "sha256:4418dea6936fe3c1a9375d7cd31a69e72997e645e588ed31c40d785c71adde35", size = 1197068, upload-time = "2025-12-29T11:47:39.065Z" }, - { url = "https://files.pythonhosted.org/packages/00/20/4571edf9bebc9d60dcf5d5c3cd0a12e55a79b91b02ef960c44e4ffc24c70/pygit2-1.19.1-cp314-cp314t-win_arm64.whl", hash = "sha256:3cbb8ab952224c0b305aa56f8759bcad5d9a9de885b00fe0ff8bed9ac365472e", size = 995635, upload-time = "2025-12-29T11:47:40.327Z" }, -] - -[[package]] -name = "pygments" -version = "2.19.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, -] - -[[package]] -name = "pygtrie" -version = "2.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/13/55deec25bf09383216fa7f1dfcdbfca40a04aa00b6d15a5cbf25af8fce5f/pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2", size = 39266, upload-time = "2022-07-16T14:29:47.459Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/cd/bd196b2cf014afb1009de8b0f05ecd54011d881944e62763f3c1b1e8ef37/pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16", size = 25099, upload-time = "2022-09-23T20:30:05.12Z" }, -] - -[[package]] -name = "pylops" -version = "2.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "scipy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/81/e0/28d300177adf19f28fef2b95b3aabe01d39cedd79a739a3139dfb63c04be/pylops-2.6.0.tar.gz", hash = "sha256:4fd0fd66fa2eb0270a3c044a04b113d4636be029888066dabb6f403fc98ac40f", size = 269730, upload-time = "2025-11-24T20:34:07.709Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/2d/efada7f1c48577c33392b05bf6479e890fc968d5ca158ed185fd4bc9e34b/pylops-2.6.0-py3-none-any.whl", hash = "sha256:d918764249d819924b7802abfdcaae972b4a1c077c26ed1f93e2b5f214440c72", size = 348607, upload-time = "2025-11-24T20:34:06.351Z" }, -] - -[[package]] -name = "pymdown-extensions" -version = "10.20" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/35/e3814a5b7df295df69d035cfb8aab78b2967cdf11fcfae7faed726b66664/pymdown_extensions-10.20.tar.gz", hash = "sha256:5c73566ab0cf38c6ba084cb7c5ea64a119ae0500cce754ccb682761dfea13a52", size = 852774, upload-time = "2025-12-31T19:59:42.211Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/10/47caf89cbb52e5bb764696fd52a8c591a2f0e851a93270c05a17f36000b5/pymdown_extensions-10.20-py3-none-any.whl", hash = "sha256:ea9e62add865da80a271d00bfa1c0fa085b20d133fb3fc97afdc88e682f60b2f", size = 268733, upload-time = "2025-12-31T19:59:40.652Z" }, -] - -[[package]] -name = "pymeshfix" -version = "0.17.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "pyvista" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6a/08/4c2f6391fe3ed013aa0ceefae0bd729cde7bad3095b729bdf93f7d2d2aad/pymeshfix-0.17.2.tar.gz", hash = "sha256:d87c8bc51f85d9f45353a434d52f5041c5b8e65b533b338d7e04889254da6543", size = 1514469, upload-time = "2025-12-13T17:01:29.269Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/f8/10f2296bf7fb529a02da4e4ee70202d43d5f75fb85e948dc9205d21de7ae/pymeshfix-0.17.2-cp311-abi3-macosx_10_9_x86_64.whl", hash = "sha256:703c25043ec43732f0fbf490e6d95ec9c63267cd9e2ccf8b4e0754e5c0cd8420", size = 1438607, upload-time = "2025-12-13T17:01:15.9Z" }, - { url = "https://files.pythonhosted.org/packages/67/19/135387044bac9381954aac8028aec8e780ec500de19875c22bfa1b05fe69/pymeshfix-0.17.2-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:150d2a7161d424de17ae66631759f670351c3dc879f2737a0c3cab5d434a77af", size = 1428856, upload-time = "2025-12-13T17:01:17.714Z" }, - { url = "https://files.pythonhosted.org/packages/48/04/86735a7e4e6d8ebddbd66ad383ea147efcac4477a2c6c224ceea3506e41d/pymeshfix-0.17.2-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4942c78addd1ded91f577e30443b25aa6898bd7f638f4e0a4faac004bb3c52b", size = 2459899, upload-time = "2025-12-13T17:01:18.949Z" }, - { url = "https://files.pythonhosted.org/packages/af/15/896c602c95330c19f58daf3d49d99586957912a88036362e9003da60c833/pymeshfix-0.17.2-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad53f1d21e4611c4f430e1127331e875e296a5c22b5278d12ff3379e840d9490", size = 2527244, upload-time = "2025-12-13T17:01:20.156Z" }, - { url = "https://files.pythonhosted.org/packages/e4/af/85b7c477cbdc094cb3d77787351af1baf7e37db5cd07d5dfeb6bffbf6453/pymeshfix-0.17.2-cp311-abi3-win_amd64.whl", hash = "sha256:40cc8003f1d422dfc8f640b6934a21c4d80a6761f168b16367db582ab3f6efd5", size = 1538881, upload-time = "2025-12-13T17:01:21.429Z" }, -] - -[[package]] -name = "pyobjc" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-accessibility", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-accounts", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-addressbook" }, - { name = "pyobjc-framework-adservices", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-adsupport", marker = "platform_release >= '18.0'" }, - { name = "pyobjc-framework-applescriptkit" }, - { name = "pyobjc-framework-applescriptobjc", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-applicationservices" }, - { name = "pyobjc-framework-apptrackingtransparency", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-arkit", marker = "platform_release >= '25.0'" }, - { name = "pyobjc-framework-audiovideobridging", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-authenticationservices", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-automaticassessmentconfiguration", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-automator" }, - { name = "pyobjc-framework-avfoundation", marker = "platform_release >= '11.0'" }, - { name = "pyobjc-framework-avkit", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-avrouting", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-backgroundassets", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-browserenginekit", marker = "platform_release >= '23.4'" }, - { name = "pyobjc-framework-businesschat", marker = "platform_release >= '18.0'" }, - { name = "pyobjc-framework-calendarstore", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-callkit", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-carbon" }, - { name = "pyobjc-framework-cfnetwork" }, - { name = "pyobjc-framework-cinematic", marker = "platform_release >= '23.0'" }, - { name = "pyobjc-framework-classkit", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-cloudkit", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-collaboration", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-colorsync", marker = "platform_release >= '17.0'" }, - { name = "pyobjc-framework-compositorservices", marker = "platform_release >= '25.0'" }, - { name = "pyobjc-framework-contacts", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-contactsui", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-coreaudio" }, - { name = "pyobjc-framework-coreaudiokit" }, - { name = "pyobjc-framework-corebluetooth", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-coredata" }, - { name = "pyobjc-framework-corehaptics", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-corelocation", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-coremedia", marker = "platform_release >= '11.0'" }, - { name = "pyobjc-framework-coremediaio", marker = "platform_release >= '11.0'" }, - { name = "pyobjc-framework-coremidi" }, - { name = "pyobjc-framework-coreml", marker = "platform_release >= '17.0'" }, - { name = "pyobjc-framework-coremotion", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-coreservices" }, - { name = "pyobjc-framework-corespotlight", marker = "platform_release >= '17.0'" }, - { name = "pyobjc-framework-coretext" }, - { name = "pyobjc-framework-corewlan", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-cryptotokenkit", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-datadetection", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-devicecheck", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-devicediscoveryextension", marker = "platform_release >= '24.0'" }, - { name = "pyobjc-framework-dictionaryservices", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-discrecording" }, - { name = "pyobjc-framework-discrecordingui" }, - { name = "pyobjc-framework-diskarbitration" }, - { name = "pyobjc-framework-dvdplayback" }, - { name = "pyobjc-framework-eventkit", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-exceptionhandling" }, - { name = "pyobjc-framework-executionpolicy", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-extensionkit", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-externalaccessory", marker = "platform_release >= '17.0'" }, - { name = "pyobjc-framework-fileprovider", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-fileproviderui", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-findersync", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-fsevents", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-fskit", marker = "platform_release >= '24.4'" }, - { name = "pyobjc-framework-gamecenter", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-gamecontroller", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-gamekit", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-gameplaykit", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-gamesave", marker = "platform_release >= '25.0'" }, - { name = "pyobjc-framework-healthkit", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-imagecapturecore", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-inputmethodkit", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-installerplugins" }, - { name = "pyobjc-framework-instantmessage", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-intents", marker = "platform_release >= '16.0'" }, - { name = "pyobjc-framework-intentsui", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-iobluetooth" }, - { name = "pyobjc-framework-iobluetoothui" }, - { name = "pyobjc-framework-iosurface", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-ituneslibrary", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-kernelmanagement", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-latentsemanticmapping" }, - { name = "pyobjc-framework-launchservices" }, - { name = "pyobjc-framework-libdispatch", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-libxpc", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-linkpresentation", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-localauthentication", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-localauthenticationembeddedui", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-mailkit", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-mapkit", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-mediaaccessibility", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-mediaextension", marker = "platform_release >= '24.0'" }, - { name = "pyobjc-framework-medialibrary", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-mediaplayer", marker = "platform_release >= '16.0'" }, - { name = "pyobjc-framework-mediatoolbox", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-metal", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-metalfx", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-metalkit", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-metalperformanceshaders", marker = "platform_release >= '17.0'" }, - { name = "pyobjc-framework-metalperformanceshadersgraph", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-metrickit", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-mlcompute", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-modelio", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-multipeerconnectivity", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-naturallanguage", marker = "platform_release >= '18.0'" }, - { name = "pyobjc-framework-netfs", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-network", marker = "platform_release >= '18.0'" }, - { name = "pyobjc-framework-networkextension", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-notificationcenter", marker = "platform_release >= '14.0'" }, - { name = "pyobjc-framework-opendirectory", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-osakit" }, - { name = "pyobjc-framework-oslog", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-passkit", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-pencilkit", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-phase", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-photos", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-photosui", marker = "platform_release >= '15.0'" }, - { name = "pyobjc-framework-preferencepanes" }, - { name = "pyobjc-framework-pushkit", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-quartz" }, - { name = "pyobjc-framework-quicklookthumbnailing", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-replaykit", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-safariservices", marker = "platform_release >= '16.0'" }, - { name = "pyobjc-framework-safetykit", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-scenekit", marker = "platform_release >= '11.0'" }, - { name = "pyobjc-framework-screencapturekit", marker = "platform_release >= '21.4'" }, - { name = "pyobjc-framework-screensaver" }, - { name = "pyobjc-framework-screentime", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-scriptingbridge", marker = "platform_release >= '9.0'" }, - { name = "pyobjc-framework-searchkit" }, - { name = "pyobjc-framework-security" }, - { name = "pyobjc-framework-securityfoundation" }, - { name = "pyobjc-framework-securityinterface" }, - { name = "pyobjc-framework-securityui", marker = "platform_release >= '24.4'" }, - { name = "pyobjc-framework-sensitivecontentanalysis", marker = "platform_release >= '23.0'" }, - { name = "pyobjc-framework-servicemanagement", marker = "platform_release >= '10.0'" }, - { name = "pyobjc-framework-sharedwithyou", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-sharedwithyoucore", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-shazamkit", marker = "platform_release >= '21.0'" }, - { name = "pyobjc-framework-social", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-soundanalysis", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-speech", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-spritekit", marker = "platform_release >= '13.0'" }, - { name = "pyobjc-framework-storekit", marker = "platform_release >= '11.0'" }, - { name = "pyobjc-framework-symbols", marker = "platform_release >= '23.0'" }, - { name = "pyobjc-framework-syncservices" }, - { name = "pyobjc-framework-systemconfiguration" }, - { name = "pyobjc-framework-systemextensions", marker = "platform_release >= '19.0'" }, - { name = "pyobjc-framework-threadnetwork", marker = "platform_release >= '22.0'" }, - { name = "pyobjc-framework-uniformtypeidentifiers", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-usernotifications", marker = "platform_release >= '18.0'" }, - { name = "pyobjc-framework-usernotificationsui", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-videosubscriberaccount", marker = "platform_release >= '18.0'" }, - { name = "pyobjc-framework-videotoolbox", marker = "platform_release >= '12.0'" }, - { name = "pyobjc-framework-virtualization", marker = "platform_release >= '20.0'" }, - { name = "pyobjc-framework-vision", marker = "platform_release >= '17.0'" }, - { name = "pyobjc-framework-webkit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/06/d77639ba166cc09aed2d32ae204811b47bc5d40e035cdc9bff7fff72ec5f/pyobjc-12.1.tar.gz", hash = "sha256:686d6db3eb3182fac9846b8ce3eedf4c7d2680b21b8b8d6e6df054a17e92a12d", size = 11345, upload-time = "2025-11-14T10:07:28.155Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/00/1085de7b73abf37ec27ad59f7a1d7a406e6e6da45720bced2e198fdf1ddf/pyobjc-12.1-py3-none-any.whl", hash = "sha256:6f8c36cf87b1159d2ca1aa387ffc3efcd51cc3da13ef47c65f45e6d9fbccc729", size = 4226, upload-time = "2025-11-14T09:30:25.185Z" }, -] - -[[package]] -name = "pyobjc-core" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b8/b6/d5612eb40be4fd5ef88c259339e6313f46ba67577a95d86c3470b951fce0/pyobjc_core-12.1.tar.gz", hash = "sha256:2bb3903f5387f72422145e1466b3ac3f7f0ef2e9960afa9bcd8961c5cbf8bd21", size = 1000532, upload-time = "2025-11-14T10:08:28.292Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/5a/6b15e499de73050f4a2c88fff664ae154307d25dc04da8fb38998a428358/pyobjc_core-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:818bcc6723561f207e5b5453efe9703f34bc8781d11ce9b8be286bb415eb4962", size = 678335, upload-time = "2025-11-14T09:32:20.107Z" }, - { url = "https://files.pythonhosted.org/packages/f4/d2/29e5e536adc07bc3d33dd09f3f7cf844bf7b4981820dc2a91dd810f3c782/pyobjc_core-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:01c0cf500596f03e21c23aef9b5f326b9fb1f8f118cf0d8b66749b6cf4cbb37a", size = 677370, upload-time = "2025-11-14T09:33:05.273Z" }, - { url = "https://files.pythonhosted.org/packages/1b/f0/4b4ed8924cd04e425f2a07269943018d43949afad1c348c3ed4d9d032787/pyobjc_core-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:177aaca84bb369a483e4961186704f64b2697708046745f8167e818d968c88fc", size = 719586, upload-time = "2025-11-14T09:33:53.302Z" }, - { url = "https://files.pythonhosted.org/packages/25/98/9f4ed07162de69603144ff480be35cd021808faa7f730d082b92f7ebf2b5/pyobjc_core-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:844515f5d86395b979d02152576e7dee9cc679acc0b32dc626ef5bda315eaa43", size = 670164, upload-time = "2025-11-14T09:34:37.458Z" }, - { url = "https://files.pythonhosted.org/packages/62/50/dc076965c96c7f0de25c0a32b7f8aa98133ed244deaeeacfc758783f1f30/pyobjc_core-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:453b191df1a4b80e756445b935491b974714456ae2cbae816840bd96f86db882", size = 712204, upload-time = "2025-11-14T09:35:24.148Z" }, -] - -[[package]] -name = "pyobjc-framework-accessibility" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2d/87/8ca40428d05a668fecc638f2f47dba86054dbdc35351d247f039749de955/pyobjc_framework_accessibility-12.1.tar.gz", hash = "sha256:5ff362c3425edc242d49deec11f5f3e26e565cefb6a2872eda59ab7362149772", size = 29800, upload-time = "2025-11-14T10:08:31.949Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/95/9ea0d1c16316b4b5babf4b0515e9a133ac64269d3ec031f15ee9c7c2a8c1/pyobjc_framework_accessibility-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:537691a0b28fedb8385cd093df069a6e5d7e027629671fc47b50210404eca20b", size = 11335, upload-time = "2025-11-14T09:35:30.81Z" }, - { url = "https://files.pythonhosted.org/packages/40/71/aa9625b1b064f7d3e1bbc0b6b40cf92d1d46c7f798e0b345594d626f5510/pyobjc_framework_accessibility-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:44d872d8a1f9d1569da0590c5a9185d2c02dc2e08e410c84a03aa54ca6e05c2c", size = 11352, upload-time = "2025-11-14T09:35:32.967Z" }, - { url = "https://files.pythonhosted.org/packages/e9/d8/ff4c720d6140f7a20eaed15d5430af1fc8be372998674b82931993177261/pyobjc_framework_accessibility-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4b9e2079ad0da736ba32a10e63698ff1db9667b5f6342a81220aa86cfa0de8c8", size = 11521, upload-time = "2025-11-14T09:35:35.112Z" }, - { url = "https://files.pythonhosted.org/packages/98/ce/21a076746ada1c03015ce23ee87aa3a3f052885ec386296d4d90c4fb0eb2/pyobjc_framework_accessibility-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:0a14c794af7f38d8b59f6d7b03f708e61473a42d4a43663e7a2a6355121d11f7", size = 11414, upload-time = "2025-11-14T09:35:36.92Z" }, - { url = "https://files.pythonhosted.org/packages/22/f0/a195f213d7bbcd765d216a90904a2104199da734bae81c10da9736ebd55d/pyobjc_framework_accessibility-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:bc517a0eff3989ea98197858fbe4bbb4c673e171f4acbb94dc8cf94415b11e0b", size = 11594, upload-time = "2025-11-14T09:35:38.763Z" }, -] - -[[package]] -name = "pyobjc-framework-accounts" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/65/10/f6fe336c7624d6753c1f6edac102310ce4434d49b548c479e8e6420d4024/pyobjc_framework_accounts-12.1.tar.gz", hash = "sha256:76d62c5e7b831eb8f4c9ca6abaf79d9ed961dfffe24d89a041fb1de97fe56a3e", size = 15202, upload-time = "2025-11-14T10:08:33.995Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/70/5f9214250f92fbe2e07f35778875d2771d612f313af2a0e4bacba80af28e/pyobjc_framework_accounts-12.1-py2.py3-none-any.whl", hash = "sha256:e1544ad11a2f889a7aaed649188d0e76d58595a27eec07ca663847a7adb21ae5", size = 5104, upload-time = "2025-11-14T09:35:40.246Z" }, -] - -[[package]] -name = "pyobjc-framework-addressbook" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/18/28/0404af2a1c6fa8fd266df26fb6196a8f3fb500d6fe3dab94701949247bea/pyobjc_framework_addressbook-12.1.tar.gz", hash = "sha256:c48b740cf981103cef1743d0804a226d86481fcb839bd84b80e9a586187e8000", size = 44359, upload-time = "2025-11-14T10:08:37.687Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/33/da709c69cbb60df9522cd614d5c23c15b649b72e5d62fed1048e75c70e7b/pyobjc_framework_addressbook-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7893dd784322f4674299fb3ca40cb03385e5eddb78defd38f08c0b730813b56c", size = 12894, upload-time = "2025-11-14T09:35:47.498Z" }, - { url = "https://files.pythonhosted.org/packages/62/eb/de0d539bbf31685050dd9fe8894bd2dbc1632bf5311fc74c2c3c46ce61d0/pyobjc_framework_addressbook-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f03312faeb3c381e040f965b288379468d567b1449c1cfe66d150885b48510a3", size = 12910, upload-time = "2025-11-14T09:35:49.694Z" }, - { url = "https://files.pythonhosted.org/packages/e7/59/720da201349f67bca9e6b577fea1a8a3344e88a6527c48933be898c9559d/pyobjc_framework_addressbook-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:3b6931f78e01a215df3d9a27d1a10aab04659e636b0836ac448f8dd7fc56a581", size = 13064, upload-time = "2025-11-14T09:35:51.664Z" }, - { url = "https://files.pythonhosted.org/packages/1c/bc/7a0648f3b56f16eab76e349e873f21cc5d33864d9915bb33ade9a100d1c0/pyobjc_framework_addressbook-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:e4e24094fa293f158ed21fcd57414b759dc1220c23efec4ee8a7672d726b3576", size = 12968, upload-time = "2025-11-14T09:35:53.639Z" }, - { url = "https://files.pythonhosted.org/packages/4c/e1/96093b6180e6af5f98b04de159f30d2d0cdde4caac1967f371ccbea662f2/pyobjc_framework_addressbook-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:184bc73e38bd062dce1eb97eb2f14be322f2421daf78efe2747aedb886d93eb0", size = 13132, upload-time = "2025-11-14T09:35:55.947Z" }, -] - -[[package]] -name = "pyobjc-framework-adservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/04/1c3d3e0a1ac981664f30b33407dcdf8956046ecde6abc88832cf2aa535f4/pyobjc_framework_adservices-12.1.tar.gz", hash = "sha256:7a31fc8d5c6fd58f012db87c89ba581361fc905114bfb912e0a3a87475c02183", size = 11793, upload-time = "2025-11-14T10:08:39.56Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/13/f7796469b25f50750299c4b0e95dc2f75c7c7fc4c93ef2c644f947f10529/pyobjc_framework_adservices-12.1-py2.py3-none-any.whl", hash = "sha256:9ca3c55e35b2abb3149a0bce5de9a1f7e8ee4f8642036910ca8586ab2e161538", size = 3492, upload-time = "2025-11-14T09:35:57.344Z" }, -] - -[[package]] -name = "pyobjc-framework-adsupport" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/43/77/f26a2e9994d4df32e9b3680c8014e350b0f1c78d7673b3eba9de2e04816f/pyobjc_framework_adsupport-12.1.tar.gz", hash = "sha256:9a68480e76de567c339dca29a8c739d6d7b5cad30e1cd585ff6e49ec2fc283dd", size = 11645, upload-time = "2025-11-14T10:08:41.439Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/1a/3e90d5a09953bde7b60946cd09cca1411aed05dea855cb88cb9e944c7006/pyobjc_framework_adsupport-12.1-py2.py3-none-any.whl", hash = "sha256:97dcd8799dd61f047bb2eb788bbde81f86e95241b5e5173a3a61cfc05b5598b1", size = 3401, upload-time = "2025-11-14T09:35:59.039Z" }, -] - -[[package]] -name = "pyobjc-framework-applescriptkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/f1/e0c07b2a9eb98f1a2050f153d287a52a92f873eeddb41b74c52c144d8767/pyobjc_framework_applescriptkit-12.1.tar.gz", hash = "sha256:cb09f88cf0ad9753dedc02720065818f854b50e33eb4194f0ea34de6d7a3eb33", size = 11451, upload-time = "2025-11-14T10:08:43.328Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/70/6c399c6ebc37a4e48acf63967e0a916878aedfe420531f6d739215184c0c/pyobjc_framework_applescriptkit-12.1-py2.py3-none-any.whl", hash = "sha256:b955fc017b524027f635d92a8a45a5fd9fbae898f3e03de16ecd94aa4c4db987", size = 4352, upload-time = "2025-11-14T09:36:00.705Z" }, -] - -[[package]] -name = "pyobjc-framework-applescriptobjc" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/4b/e4d1592207cbe17355e01828bdd11dd58f31356108f6a49f5e0484a5df50/pyobjc_framework_applescriptobjc-12.1.tar.gz", hash = "sha256:dce080ed07409b0dda2fee75d559bd312ea1ef0243a4338606440f282a6a0f5f", size = 11588, upload-time = "2025-11-14T10:08:45.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/5f/9ce6706399706930eb29c5308037109c30cfb36f943a6df66fdf38cc842a/pyobjc_framework_applescriptobjc-12.1-py2.py3-none-any.whl", hash = "sha256:79068f982cc22471712ce808c0a8fd5deea11258fc8d8c61968a84b1962a3d10", size = 4454, upload-time = "2025-11-14T09:36:02.276Z" }, -] - -[[package]] -name = "pyobjc-framework-applicationservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coretext" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/be/6a/d4e613c8e926a5744fc47a9e9fea08384a510dc4f27d844f7ad7a2d793bd/pyobjc_framework_applicationservices-12.1.tar.gz", hash = "sha256:c06abb74f119bc27aeb41bf1aef8102c0ae1288aec1ac8665ea186a067a8945b", size = 103247, upload-time = "2025-11-14T10:08:52.18Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/a7/55fa88def5c02732c4b747606ff1cbce6e1f890734bbd00f5596b21eaa02/pyobjc_framework_applicationservices-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c8f6e2fb3b3e9214ab4864ef04eee18f592b46a986c86ea0113448b310520532", size = 32835, upload-time = "2025-11-14T09:36:11.855Z" }, - { url = "https://files.pythonhosted.org/packages/fc/21/79e42ee836f1010f5fe9e97d2817a006736bd287c15a3674c399190a2e77/pyobjc_framework_applicationservices-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bd1f4dbb38234a24ae6819f5e22485cf7dd3dd4074ff3bf9a9fdb4c01a3b4a38", size = 32859, upload-time = "2025-11-14T09:36:15.208Z" }, - { url = "https://files.pythonhosted.org/packages/66/3a/0f1d4dcf2345e875e5ea9761d5a70969e241d24089133d21f008dde596f5/pyobjc_framework_applicationservices-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:8a5d2845249b6a85ba9e320a9848468c3f8cd6f59605a9a43f406a7810eaa830", size = 33115, upload-time = "2025-11-14T09:36:18.384Z" }, - { url = "https://files.pythonhosted.org/packages/40/44/3196b40fec68b4413c92875311f17ccf4c3ff7d2e53676f8fc18ad29bd18/pyobjc_framework_applicationservices-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:f43c9a24ad97a9121276d4d571aa04a924282c80d7291cfb3b29839c3e2013a8", size = 32997, upload-time = "2025-11-14T09:36:21.58Z" }, - { url = "https://files.pythonhosted.org/packages/fd/bb/dab21d2210d3ef7dd0616df7e8ea89b5d8d62444133a25f76e649a947168/pyobjc_framework_applicationservices-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1f72e20009a4ebfd5ed5b23dc11c1528ad6b55cc63ee71952ddb2a5e5f1cb7da", size = 33238, upload-time = "2025-11-14T09:36:24.751Z" }, -] - -[[package]] -name = "pyobjc-framework-apptrackingtransparency" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0d/de/f24348982ecab0cb13067c348fc5fbc882c60d704ca290bada9a2b3e594b/pyobjc_framework_apptrackingtransparency-12.1.tar.gz", hash = "sha256:e25bf4e4dfa2d929993ee8e852b28fdf332fa6cde0a33328fdc3b2f502fa50ec", size = 12407, upload-time = "2025-11-14T10:08:54.118Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/b2/90120b93ecfb099b6af21696c26356ad0f2182bdef72b6cba28aa6472ca6/pyobjc_framework_apptrackingtransparency-12.1-py2.py3-none-any.whl", hash = "sha256:23a98ade55495f2f992ecf62c3cbd8f648cbd68ba5539c3f795bf66de82e37ca", size = 3879, upload-time = "2025-11-14T09:36:26.425Z" }, -] - -[[package]] -name = "pyobjc-framework-arkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/8b/843fe08e696bca8e7fc129344965ab6280f8336f64f01ba0a8862d219c3f/pyobjc_framework_arkit-12.1.tar.gz", hash = "sha256:0c5c6b702926179700b68ba29b8247464c3b609fd002a07a3308e72cfa953adf", size = 35814, upload-time = "2025-11-14T10:08:57.55Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/1e/64c55b409243b3eb9abc7a99e7b27ad4e16b9e74bc4b507fb7e7b81fd41a/pyobjc_framework_arkit-12.1-py2.py3-none-any.whl", hash = "sha256:f6d39e28d858ee03f052d6780a552247e682204382dbc090f1d3192fa1b21493", size = 8302, upload-time = "2025-11-14T09:36:28.127Z" }, -] - -[[package]] -name = "pyobjc-framework-audiovideobridging" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9f/51/f81581e7a3c5cb6c9254c6f1e1ee1d614930493761dec491b5b0d49544b9/pyobjc_framework_audiovideobridging-12.1.tar.gz", hash = "sha256:6230ace6bec1f38e8a727c35d054a7be54e039b3053f98e6dd8d08d6baee2625", size = 38457, upload-time = "2025-11-14T10:09:01.122Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/8e/a28badfcc6c731696e3d3a8a83927bd844d992f9152f903c2fee355702ca/pyobjc_framework_audiovideobridging-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:010021502649e2cca4e999a7c09358d48c6b0ed83530bbc0b85bba6834340e4b", size = 11052, upload-time = "2025-11-14T09:36:34.475Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e7/d6436115ebb623dbc14283f5e76577245fa6460995e9f7981e79e97003d3/pyobjc_framework_audiovideobridging-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a9901a88b6c8dbc982d8605c6b1ff0330ff80647a0a96a8187b6784249eb42dc", size = 11065, upload-time = "2025-11-14T09:36:36.69Z" }, - { url = "https://files.pythonhosted.org/packages/97/ca/d6740b0f666dca9fc28d4e08358a7a2fffaf879cf9c49d2c99c470b83ef8/pyobjc_framework_audiovideobridging-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0c57fdf1762f616d10549c0eddf84e59c193800f4a7932aaa7d5f13c123609c0", size = 11239, upload-time = "2025-11-14T09:36:38.992Z" }, - { url = "https://files.pythonhosted.org/packages/98/9a/f4b435523c297cdf25bfe0d0a8bb25ae0d3fa19813c2365cf1e93f462948/pyobjc_framework_audiovideobridging-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:88f97bf62cba0d07f623650a7b2a58f73aedcc03b523e2bcd5653042dd50c152", size = 11130, upload-time = "2025-11-14T09:36:40.918Z" }, - { url = "https://files.pythonhosted.org/packages/da/96/33c5aec0940ff3f81ad11b3a154d3cae94803d48376f1436392c4484b6ff/pyobjc_framework_audiovideobridging-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:84d466e0c2fbf466fd5ca9209139e321ddf3f96bbd987308c73bb4a243ab80b2", size = 11302, upload-time = "2025-11-14T09:36:42.734Z" }, -] - -[[package]] -name = "pyobjc-framework-authenticationservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6c/18/86218de3bf67fc1d810065f353d9df70c740de567ebee8550d476cb23862/pyobjc_framework_authenticationservices-12.1.tar.gz", hash = "sha256:cef71faeae2559f5c0ff9a81c9ceea1c81108e2f4ec7de52a98c269feff7a4b6", size = 58683, upload-time = "2025-11-14T10:09:06.003Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/1d/e9f296fe1ee9a074ff6c45ce9eb109fc3b45696de000f373265c8e42fd47/pyobjc_framework_authenticationservices-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6fd5ce10fe5359cbbfe03eb12cab3e01992b32ab65653c579b00ac93cf674985", size = 20738, upload-time = "2025-11-14T09:36:51.094Z" }, - { url = "https://files.pythonhosted.org/packages/23/2f/7016b3ca344b079932abe56d7d6216c88cac715d81ca687753aed4b749f7/pyobjc_framework_authenticationservices-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:4491a2352cd53a38c7d057d674b1aa40d05eddb8dd7a1a2f415d9f2858b52d40", size = 20746, upload-time = "2025-11-14T09:36:53.762Z" }, - { url = "https://files.pythonhosted.org/packages/5b/63/f2d1137e542b2badb5803e01628a61e9df8853b773513a6a066524c77903/pyobjc_framework_authenticationservices-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a3957039eae3a82ada418ee475a347619e42ba10c45a57cd6ca83b1a0e61c2ad", size = 20994, upload-time = "2025-11-14T09:36:56.153Z" }, - { url = "https://files.pythonhosted.org/packages/a2/93/13232a82318153ec392a46c0f674baeb64ce0aaab05683d4c129ac0fafec/pyobjc_framework_authenticationservices-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:3ee69de818ce91c3bea6f87deba59ab8392a2c17c48f3d6fce0639c0e548bb0c", size = 20753, upload-time = "2025-11-14T09:36:59.075Z" }, - { url = "https://files.pythonhosted.org/packages/d3/95/c941a19224a132b206948e1d329a1e708e41e013ef0d316162af7cfc54c6/pyobjc_framework_authenticationservices-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:b14997d96887127f393434d42e3e108eeca2116ca935dd7e37e91c709a93b422", size = 21032, upload-time = "2025-11-14T09:37:01.358Z" }, -] - -[[package]] -name = "pyobjc-framework-automaticassessmentconfiguration" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e4/24/080afe8189c47c4bb3daa191ccfd962400ca31a67c14b0f7c2d002c2e249/pyobjc_framework_automaticassessmentconfiguration-12.1.tar.gz", hash = "sha256:2b732c02d9097682ca16e48f5d3b10056b740bc091e217ee4d5715194c8970b1", size = 21895, upload-time = "2025-11-14T10:09:08.779Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/b2/fbec3d649bf275d7a9604e5f56015be02ef8dcf002f4ae4d760436b8e222/pyobjc_framework_automaticassessmentconfiguration-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c2e22ea67d7e6d6a84d968169f83d92b59857a49ab12132de07345adbfea8a62", size = 9332, upload-time = "2025-11-14T09:37:07.083Z" }, - { url = "https://files.pythonhosted.org/packages/52/85/42cf8718bbfef47e67228a39d4f25b86b6fa9676f5ca5904af21ae42ad43/pyobjc_framework_automaticassessmentconfiguration-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:467739e70ddbc259bf453056cc9ce4ed96de8e6aad8122fa4035d2e6ecf9fc9c", size = 9344, upload-time = "2025-11-14T09:37:09.02Z" }, - { url = "https://files.pythonhosted.org/packages/09/ec/a889dd812adfa446238853cf3cf6a7a2691e3096247a7ef75970d135e5bb/pyobjc_framework_automaticassessmentconfiguration-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b4ea4b00f70bf242a5d8ce9c420987239dbc74285588c141ac1e0d6bd71fcd4c", size = 9501, upload-time = "2025-11-14T09:37:10.684Z" }, - { url = "https://files.pythonhosted.org/packages/dd/36/b7a59d77cf0f3dfe8676ecd0ab22dca215df11a0f1623cb0dbac29bb30d2/pyobjc_framework_automaticassessmentconfiguration-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:f5f1818c6f77daf64d954878bbbda6b3f5e41e23b599210da08fefed1f1d5981", size = 9392, upload-time = "2025-11-14T09:37:12.35Z" }, - { url = "https://files.pythonhosted.org/packages/f8/b4/bc5de9b5cce1d243823b283e0942bb353f72998c01688fb3b3da9061a731/pyobjc_framework_automaticassessmentconfiguration-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:2e84dee31c3cb7dda4cded047f8b2080378da5c13e8682e45852be5e34b647ed", size = 9541, upload-time = "2025-11-14T09:37:14.358Z" }, -] - -[[package]] -name = "pyobjc-framework-automator" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7e/08/362bf6ac2bba393c46cf56078d4578b692b56857c385e47690637a72f0dd/pyobjc_framework_automator-12.1.tar.gz", hash = "sha256:7491a99347bb30da3a3f744052a03434ee29bee3e2ae520576f7e796740e4ba7", size = 186068, upload-time = "2025-11-14T10:09:20.82Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/36/2e8c36ddf20d501f9d344ed694e39021190faffc44b596f3a430bf437174/pyobjc_framework_automator-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4df9aec77f0fbca66cd3534d1b8398fe6f3e3c2748c0fc12fec2546c7f2e3ffd", size = 10034, upload-time = "2025-11-14T09:37:20.293Z" }, - { url = "https://files.pythonhosted.org/packages/1f/cd/666e44c8deb41e5c9dc5930abf8379edd80bff14eb4d0a56380cdbbbbf9a/pyobjc_framework_automator-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cdda7b8c48c0f8e15cbb97600ac848fd76cf9837ca3353286a7c02281e9c17a3", size = 10045, upload-time = "2025-11-14T09:37:22.179Z" }, - { url = "https://files.pythonhosted.org/packages/08/92/75fa03ad8673336689bd663ba153b378e070f159122d8478deb0940039c0/pyobjc_framework_automator-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e9962ea45875fda6a648449015ccc26cc1229fdbd0166556a7271c60ba6d9011", size = 10192, upload-time = "2025-11-14T09:37:24.836Z" }, - { url = "https://files.pythonhosted.org/packages/c6/be/97fcdb60072f443ec360d2aa07e45469125eed57e0158d50f00ef5431240/pyobjc_framework_automator-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fb6a177cac056f2ecacaae1d4815f4e10529025cb13184fdee297989b55846f7", size = 10092, upload-time = "2025-11-14T09:37:26.574Z" }, - { url = "https://files.pythonhosted.org/packages/06/7b/af089d11c6bdc9773e4e0f68b1beabe523d663290080e6ec2e853226a8bb/pyobjc_framework_automator-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:275ed04d339c5a5849a4be8ef82c2035be07ab92ccbf69007f544bcfabe060ad", size = 10240, upload-time = "2025-11-14T09:37:28.232Z" }, -] - -[[package]] -name = "pyobjc-framework-avfoundation" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coreaudio" }, - { name = "pyobjc-framework-coremedia" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/42/c026ab308edc2ed5582d8b4b93da6b15d1b6557c0086914a4aabedd1f032/pyobjc_framework_avfoundation-12.1.tar.gz", hash = "sha256:eda0bb60be380f9ba2344600c4231dd58a3efafa99fdc65d3673ecfbb83f6fcb", size = 310047, upload-time = "2025-11-14T10:09:40.069Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/00/ca471e5dd33f040f69320832e45415d00440260bf7f8221a9df4c4662659/pyobjc_framework_avfoundation-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bf634f89265b4d93126153200d885b6de4859ed6b3bc65e69ff75540bc398406", size = 83375, upload-time = "2025-11-14T09:37:47.262Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d4/ade88067deff45858b457648dd82c9363977eb1915efd257232cd06bdac1/pyobjc_framework_avfoundation-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f8ac7f7e0884ac8f12009cdb9d4fefc2f269294ab2ccfd84520a560859b69cec", size = 83413, upload-time = "2025-11-14T09:37:53.759Z" }, - { url = "https://files.pythonhosted.org/packages/a7/3a/fa699d748d6351fa0aeca656ea2f9eacc36e31203dfa56bc13c8a3d26d7d/pyobjc_framework_avfoundation-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:51aba2c6816badfb1fb5a2de1b68b33a23f065bf9e3b99d46ede0c8c774ac7a4", size = 83860, upload-time = "2025-11-14T09:38:00.051Z" }, - { url = "https://files.pythonhosted.org/packages/0c/65/a79cf3b8935a78329ac1107056b91868a581096a90ab6ddff5fd28db4947/pyobjc_framework_avfoundation-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9a3ffd1ae90bd72dbcf2875aa9254369e805b904140362a7338ebf1af54201a6", size = 83629, upload-time = "2025-11-14T09:38:06.697Z" }, - { url = "https://files.pythonhosted.org/packages/8a/03/4125204a17cd7b4de1fdfc38b280a47d0d8f8691a4ee306ebb41b58ff030/pyobjc_framework_avfoundation-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:394c99876b9a38db4851ddf8146db363556895c12e9c711ccd3c3f907ac8e273", size = 83962, upload-time = "2025-11-14T09:38:13.153Z" }, -] - -[[package]] -name = "pyobjc-framework-avkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/34/a9/e44db1a1f26e2882c140f1d502d508b1f240af9048909dcf1e1a687375b4/pyobjc_framework_avkit-12.1.tar.gz", hash = "sha256:a5c0ddb0cb700f9b09c8afeca2c58952d554139e9bb078236d2355b1fddfb588", size = 28473, upload-time = "2025-11-14T10:09:43.105Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/75/34/e77b18f7ed0bd707afd388702e910bdf2d0acee39d1139e8619c916d3eb4/pyobjc_framework_avkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eef2c0a51465de025a4509db05ef18ca2b678bb00ee0a8fbad7fd470edfd58f9", size = 11613, upload-time = "2025-11-14T09:38:19.78Z" }, - { url = "https://files.pythonhosted.org/packages/11/f2/4a55fdc8baca23dd315dab39479203396db54468a4c5a3e2480748ac68af/pyobjc_framework_avkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c0241548fc7ca3fcd335da05c3dd15d7314fe58debd792317a725d8ae9cf90fa", size = 11620, upload-time = "2025-11-14T09:38:21.904Z" }, - { url = "https://files.pythonhosted.org/packages/d7/37/76d67c86db80f13f0746b493ae025482cb407b875f3138fc6a6e1fd3d5e3/pyobjc_framework_avkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:869fd54ccdac097abe36d7d4ef8945c80b9c886d881173f590b382f6c743ff12", size = 11824, upload-time = "2025-11-14T09:38:23.777Z" }, - { url = "https://files.pythonhosted.org/packages/29/4e/bd28968f538f5b4f806431c782556aaa5c17567c83edb6df0ef83c7a26ca/pyobjc_framework_avkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:f49ee90e4f8737ae5dea7579016cdf344b64092810bf5b5acf0cb9c1c6a0d328", size = 11614, upload-time = "2025-11-14T09:38:25.919Z" }, - { url = "https://files.pythonhosted.org/packages/ea/e7/3efb6c782d09abedb74fdecdb374c0b16ccdb43b8da55f47953a4cacf3a6/pyobjc_framework_avkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:19d46d8da214d8fad03f0a8edd384762dea55933c0c094425a34ac6e53eacb71", size = 11827, upload-time = "2025-11-14T09:38:27.716Z" }, -] - -[[package]] -name = "pyobjc-framework-avrouting" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/83/15bf6c28ec100dae7f92d37c9e117b3b4ee6b4873db062833e16f1cfd6c4/pyobjc_framework_avrouting-12.1.tar.gz", hash = "sha256:6a6c5e583d14f6501df530a9d0559a32269a821fc8140e3646015f097155cd1c", size = 20031, upload-time = "2025-11-14T10:09:45.701Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/54/fa24f666525c1332a11b2de959c9877b0fe08f00f29ecf96964b24246c13/pyobjc_framework_avrouting-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4c0fb0d3d260527320377a70c87688ca5e4a208b09fddcae2b4257d7fe9b1e18", size = 8450, upload-time = "2025-11-14T09:38:34.941Z" }, - { url = "https://files.pythonhosted.org/packages/3b/a4/cdbbe5745a49c9c5f5503dbbdd1b90084d4be83bd8503c998db160bb378e/pyobjc_framework_avrouting-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:18c62af1ce9ac99b04c36f66959ca64530d51b62aa0e6f00400dea600112e370", size = 8465, upload-time = "2025-11-14T09:38:37.638Z" }, - { url = "https://files.pythonhosted.org/packages/29/d7/c709d277e872495f452fe797c619d9b202cd388b655ccf7196724dbbb600/pyobjc_framework_avrouting-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e5a1d2e4e431aae815e38b75dbe644aa1fd495f8ec1e2194fc175132d7cfc1d3", size = 8630, upload-time = "2025-11-14T09:38:39.284Z" }, - { url = "https://files.pythonhosted.org/packages/b0/0a/9e9bf48c70f129c1fa42e84e091901b6aa6d11074365d93aa22a42d13ba6/pyobjc_framework_avrouting-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:defaad8e98793dfaceb7e36eba3da9bf92d0840207d39e39b018ce6eb41d80f8", size = 8525, upload-time = "2025-11-14T09:38:41.001Z" }, - { url = "https://files.pythonhosted.org/packages/33/75/56ab32b061b4a51f661998ef96ca91a34aee86527e6a4d5f4f10db906066/pyobjc_framework_avrouting-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c5f80ba96f5f874193fc0d9656aa6b4ed0df43c7c88ecfbf6cd4760d75776157", size = 8687, upload-time = "2025-11-14T09:38:43.215Z" }, -] - -[[package]] -name = "pyobjc-framework-backgroundassets" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/34/d1/e917fba82790495152fd3508c5053827658881cf7e9887ba60def5e3f221/pyobjc_framework_backgroundassets-12.1.tar.gz", hash = "sha256:8da34df9ae4519c360c429415477fdaf3fbba5addbc647b3340b8783454eb419", size = 26210, upload-time = "2025-11-14T10:09:48.792Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/34/bbba61f0e8ecb0fe0da7aa2c9ea15f7cb0dca2fb2914fcdcd77b782b5c11/pyobjc_framework_backgroundassets-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2c11cb98650c1a4bc68eeb4b040541ba96613434c5957e98e9bb363413b23c91", size = 10786, upload-time = "2025-11-14T09:38:48.341Z" }, - { url = "https://files.pythonhosted.org/packages/04/9b/872f9ff0593ffb9dbc029dc775390b0e45fe3278068b28aade8060503003/pyobjc_framework_backgroundassets-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a089a71b2db471f5af703e35f7a61060164d61eb60a3f482076826dfa5697c7c", size = 10803, upload-time = "2025-11-14T09:38:49.996Z" }, - { url = "https://files.pythonhosted.org/packages/cc/44/4afc2e8bcf16919b1ab82eaf88067469ea255b0a3390d353fec1002dbd0a/pyobjc_framework_backgroundassets-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e8c560f1aaa7a4bf6e336806749ce0a20f2a792ab924d9424714e299a59b3edf", size = 11058, upload-time = "2025-11-14T09:38:51.743Z" }, - { url = "https://files.pythonhosted.org/packages/f1/8b/80cd655122c20fd29edd3b2b609e6be006cef4bdc830d71944399c6abcd5/pyobjc_framework_backgroundassets-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:57d77b1babd450b18e32e852a47dd1095329323e1bed9f258b46c43e20e6d0fc", size = 10854, upload-time = "2025-11-14T09:38:53.386Z" }, - { url = "https://files.pythonhosted.org/packages/11/24/4048476f84c0566c1e146dbbd20a637bda14df5c1e52dc907e23b0329ab2/pyobjc_framework_backgroundassets-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:acaa091ff12acb24536745803af95e10d535b22e2e123fd2dd5920f3d47338ee", size = 11061, upload-time = "2025-11-14T09:38:55.043Z" }, -] - -[[package]] -name = "pyobjc-framework-browserenginekit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coreaudio" }, - { name = "pyobjc-framework-coremedia" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5d/b9/39f9de1730e6f8e73be0e4f0c6087cd9439cbe11645b8052d22e1fb8e69b/pyobjc_framework_browserenginekit-12.1.tar.gz", hash = "sha256:6a1a34a155778ab55ab5f463e885f2a3b4680231264e1fe078e62ddeccce49ed", size = 29120, upload-time = "2025-11-14T10:09:51.582Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/e0/8d2cebbfcfd6aacb805ae0ae7ba931f6a39140540b2e1e96719e7be28359/pyobjc_framework_browserenginekit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d15766bb841b081447015c9626e2a766febfe651f487893d29c5d72bef976b94", size = 11545, upload-time = "2025-11-14T09:39:00.988Z" }, - { url = "https://files.pythonhosted.org/packages/5b/2c/d39ab696b0316e1faf112a3aee24ef3bcb5fb42eb5db18ba2d74264a41a8/pyobjc_framework_browserenginekit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1aa2da131bbdf81748894c18d253cd2711dc535f1711263c6c604e20cdc094a6", size = 11567, upload-time = "2025-11-14T09:39:02.811Z" }, - { url = "https://files.pythonhosted.org/packages/0e/dd/624d273beea036ec20e16f8bdaaca6b062da647b785dedf90fa2a92a8cc0/pyobjc_framework_browserenginekit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:657d78bb5c1a51097560cb3219692321640d0d5c8e57e9160765e1ecfb3fe7ef", size = 11738, upload-time = "2025-11-14T09:39:04.651Z" }, - { url = "https://files.pythonhosted.org/packages/13/4d/a340f75fc6daa482d9d3470fe449da0d8e1263a6f77803f2b1185b3a69af/pyobjc_framework_browserenginekit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:ad7896751accf7a6f866e64e8155f97b6cf0fc0e6efd64e9940346d8fbf0ec66", size = 11620, upload-time = "2025-11-14T09:39:06.752Z" }, - { url = "https://files.pythonhosted.org/packages/3d/fa/5c0278bfebee573d97fd78ee0f41c9e8cb8f7a79ed7e4bd6a8f8ee00abe4/pyobjc_framework_browserenginekit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c52a3b0000e67fbaa51eef0b455d90b1140e3f6a0014945227cedf242fa57dcc", size = 11805, upload-time = "2025-11-14T09:39:09.033Z" }, -] - -[[package]] -name = "pyobjc-framework-businesschat" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4d/da/bc09b6ed19e9ea38ecca9387c291ca11fa680a8132d82b27030f82551c23/pyobjc_framework_businesschat-12.1.tar.gz", hash = "sha256:f6fa3a8369a1a51363e1757530128741d9d09ed90692a1d6777a4c0fbad25868", size = 12055, upload-time = "2025-11-14T10:09:53.436Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/88/4c727424b05efa33ed7f6c45e40333e5a8a8dc5bb238e34695addd68463b/pyobjc_framework_businesschat-12.1-py2.py3-none-any.whl", hash = "sha256:f66ce741507b324de3c301d72ba0cfa6aaf7093d7235972332807645c118cc29", size = 3474, upload-time = "2025-11-14T09:39:10.771Z" }, -] - -[[package]] -name = "pyobjc-framework-calendarstore" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/41/ae955d1c44dcc18b5b9df45c679e9a08311a0f853b9d981bca760cf1eef2/pyobjc_framework_calendarstore-12.1.tar.gz", hash = "sha256:f9a798d560a3c99ad4c0d2af68767bc5695d8b1aabef04d8377861cd1d6d1670", size = 52272, upload-time = "2025-11-14T10:09:58.48Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/70/f68aebdb7d3fa2dec2e9da9e9cdaa76d370de326a495917dbcde7bb7711e/pyobjc_framework_calendarstore-12.1-py2.py3-none-any.whl", hash = "sha256:18533e0fcbcdd29ee5884dfbd30606710f65df9b688bf47daee1438ee22e50cc", size = 5285, upload-time = "2025-11-14T09:39:12.473Z" }, -] - -[[package]] -name = "pyobjc-framework-callkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1a/c0/1859d4532d39254df085309aff55b85323576f00a883626325af40da4653/pyobjc_framework_callkit-12.1.tar.gz", hash = "sha256:fd6dc9688b785aab360139d683be56f0844bf68bf5e45d0eb770cb68221083cc", size = 29171, upload-time = "2025-11-14T10:10:01.336Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/b7/b3a498b14751b4be6af5272c9be9ded718aa850ebf769b052c7d610a142a/pyobjc_framework_callkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:12adc0ace464a057f8908187698e1d417c6c53619797a69d096f4329bffb1089", size = 11334, upload-time = "2025-11-14T09:39:18.622Z" }, - { url = "https://files.pythonhosted.org/packages/37/30/f434921c17a59d8db06783189ca98ccf291d5366be364f96439e987c1b13/pyobjc_framework_callkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b8909402f8690ea2fe8fa7c0256b5c491435f20881832808b86433f526ff28f8", size = 11347, upload-time = "2025-11-14T09:39:20.412Z" }, - { url = "https://files.pythonhosted.org/packages/f0/b8/c6a52c3c2e1e0bd23a84fef0d2cb089c456d62add59f87d8510ffe871068/pyobjc_framework_callkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9ec6635b6a6fecde6e5252ceff76c71d699ed8e0f3ebc6fd220a351dc653040b", size = 11558, upload-time = "2025-11-14T09:39:22.266Z" }, - { url = "https://files.pythonhosted.org/packages/e3/db/e8bcdde2b9cf109ebdf389e730900de7acf792664aa0a7fbc630cd61a82a/pyobjc_framework_callkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a2438a252ff428bca1c1d1db2fca921d2cc572ee5c582f000a713fb61b29324f", size = 11333, upload-time = "2025-11-14T09:39:24.326Z" }, - { url = "https://files.pythonhosted.org/packages/2b/14/4bb4718a4dab3040c23d91c01283ae46cbfd4b709692ef98dae92e4a3247/pyobjc_framework_callkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:b6a1767e7391652ef75eb46d12d49f31f591063da45357aad2c4e0d40f8fe702", size = 11556, upload-time = "2025-11-14T09:39:26.174Z" }, -] - -[[package]] -name = "pyobjc-framework-carbon" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0c/0f/9ab8e518a4e5ac4a1e2fdde38a054c32aef82787ff7f30927345c18b7765/pyobjc_framework_carbon-12.1.tar.gz", hash = "sha256:57a72807db252d5746caccc46da4bd20ff8ea9e82109af9f72735579645ff4f0", size = 37293, upload-time = "2025-11-14T10:10:04.464Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/9e/91853c8f98b9d5bccf464113908620c94cc12c2a3e4625f3ce172e3ea4bc/pyobjc_framework_carbon-12.1-py2.py3-none-any.whl", hash = "sha256:f8b719b3c7c5cf1d61ac7c45a8a70b5e5e5a83fa02f5194c2a48a7e81a3d1b7f", size = 4625, upload-time = "2025-11-14T09:39:27.937Z" }, -] - -[[package]] -name = "pyobjc-framework-cfnetwork" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d2/6a/f5f0f191956e187db85312cbffcc41bf863670d121b9190b4a35f0d36403/pyobjc_framework_cfnetwork-12.1.tar.gz", hash = "sha256:2d16e820f2d43522c793f55833fda89888139d7a84ca5758548ba1f3a325a88d", size = 44383, upload-time = "2025-11-14T10:10:08.428Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/0b/28034e63f3a25b30ede814469c3f57d44268cbced19664c84a8664200f9d/pyobjc_framework_cfnetwork-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:92760da248c757085fc39bce4388a0f6f0b67540e51edf60a92ad60ca907d071", size = 19135, upload-time = "2025-11-14T09:39:36.382Z" }, - { url = "https://files.pythonhosted.org/packages/f4/36/d6b95a5b156de5e2c071ecb7f7056f0badb3a0d09e0dbcf0d8d35743f822/pyobjc_framework_cfnetwork-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:86cc3f650d3169cd8ce4a1438219aa750accac0efc29539920ab0a7e75e25ab4", size = 19135, upload-time = "2025-11-14T09:39:39.95Z" }, - { url = "https://files.pythonhosted.org/packages/4b/23/ff66133af4592e123320337f443aa6e36993cc48d6c10f6e7436e01678b1/pyobjc_framework_cfnetwork-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5ff3e246e5186b9bad23b2e4e856ca87eaa9329f5904643c5484510059a07e24", size = 19412, upload-time = "2025-11-14T09:39:42.412Z" }, - { url = "https://files.pythonhosted.org/packages/6e/63/931cda003b627cc04c8e5bf9efecc391006305462192414b3d29eb16b5fd/pyobjc_framework_cfnetwork-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b94c190bdfdf0c8f3f6f7bf8e19ccc2847ecb67adab0068f8d12a25ab7df3c1a", size = 19185, upload-time = "2025-11-14T09:39:45.245Z" }, - { url = "https://files.pythonhosted.org/packages/ac/92/5843dd96da7711e72dae489bf91441d91c4dc15f17f34b89b04f2c22aee2/pyobjc_framework_cfnetwork-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:8c5313e146d436de05afae2ab203cfa1966f56d34661939629e2b932efd8da1a", size = 19402, upload-time = "2025-11-14T09:39:47.497Z" }, -] - -[[package]] -name = "pyobjc-framework-cinematic" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-avfoundation" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coremedia" }, - { name = "pyobjc-framework-metal" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/67/4e/f4cc7f9f7f66df0290c90fe445f1ff5aa514c6634f5203fe049161053716/pyobjc_framework_cinematic-12.1.tar.gz", hash = "sha256:795068c30447548c0e8614e9c432d4b288b13d5614622ef2f9e3246132329b06", size = 21215, upload-time = "2025-11-14T10:10:10.795Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/a0/cd85c827ce5535c08d936e5723c16ee49f7ff633f2e9881f4f58bf83e4ce/pyobjc_framework_cinematic-12.1-py2.py3-none-any.whl", hash = "sha256:c003543bb6908379680a93dfd77a44228686b86c118cf3bc930f60241d0cd141", size = 5031, upload-time = "2025-11-14T09:39:49.003Z" }, -] - -[[package]] -name = "pyobjc-framework-classkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ac/ef/67815278023b344a79c7e95f748f647245d6f5305136fc80615254ad447c/pyobjc_framework_classkit-12.1.tar.gz", hash = "sha256:8d1e9dd75c3d14938ff533d88b72bca2d34918e4461f418ea323bfb2498473b4", size = 26298, upload-time = "2025-11-14T10:10:13.406Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/87/5e/cf43c647af872499fc8e80cc6ac6e9ad77d9c77861dc2e62bdd9b01473ce/pyobjc_framework_classkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c027a3cd9be5fee3f605589118b8b278297c384a271f224c1a98b224e0c087e6", size = 8877, upload-time = "2025-11-14T09:39:54.979Z" }, - { url = "https://files.pythonhosted.org/packages/a5/47/f89917b4683a8f61c64d5d30d64ed0a5c1cfd9f0dd9dfb099b3465c73bcf/pyobjc_framework_classkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0ac959a4e91a40865f12f041c083fa8862672f13e596c983f2b99afc8c67bc4e", size = 8890, upload-time = "2025-11-14T09:39:56.65Z" }, - { url = "https://files.pythonhosted.org/packages/b4/9b/8a0dc753e73001026663fe8556895b23fbf6c238a705bfc86d8ce191eee3/pyobjc_framework_classkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:61fdac9e3bad384b47725587b77f932dbed71d0ae63b749eddfa390791eed4a2", size = 9043, upload-time = "2025-11-14T09:39:58.684Z" }, - { url = "https://files.pythonhosted.org/packages/2e/0b/7f25a43b0820a220a00c4a334d93c36cfa9e4248764054d6f9901eacbbd4/pyobjc_framework_classkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5d0a5cd026c51a22d13eb75404f8317089aabb3faef723aeafc4ca9a0c17e66e", size = 8952, upload-time = "2025-11-14T09:40:00.405Z" }, - { url = "https://files.pythonhosted.org/packages/1a/be/d33b868da5c646e8251521f3e523510eb85b34f329bb9267506d306acbd5/pyobjc_framework_classkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c95cd6a4f598e877197a93cc202d40d0d830bf09be5a2b15942e5a1b03e29cd4", size = 9115, upload-time = "2025-11-14T09:40:02.088Z" }, -] - -[[package]] -name = "pyobjc-framework-cloudkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-accounts" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coredata" }, - { name = "pyobjc-framework-corelocation" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2d/09/762ee4f3ae8568b8e0e5392c705bc4aa1929aa454646c124ca470f1bf9fc/pyobjc_framework_cloudkit-12.1.tar.gz", hash = "sha256:1dddd38e60863f88adb3d1d37d3b4ccb9cbff48c4ef02ab50e36fa40c2379d2f", size = 53730, upload-time = "2025-11-14T10:10:17.831Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/71/cbef7179bf1a594558ea27f1e5ad18f5c17ef71a8a24192aae16127bc849/pyobjc_framework_cloudkit-12.1-py2.py3-none-any.whl", hash = "sha256:875e37bf1a2ce3d05c2492692650104f2d908b56b71a0aedf6620bc517c6c9ca", size = 11090, upload-time = "2025-11-14T09:40:04.207Z" }, -] - -[[package]] -name = "pyobjc-framework-cocoa" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/02/a3/16ca9a15e77c061a9250afbae2eae26f2e1579eb8ca9462ae2d2c71e1169/pyobjc_framework_cocoa-12.1.tar.gz", hash = "sha256:5556c87db95711b985d5efdaaf01c917ddd41d148b1e52a0c66b1a2e2c5c1640", size = 2772191, upload-time = "2025-11-14T10:13:02.069Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/bf/ee4f27ec3920d5c6fc63c63e797c5b2cc4e20fe439217085d01ea5b63856/pyobjc_framework_cocoa-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:547c182837214b7ec4796dac5aee3aa25abc665757b75d7f44f83c994bcb0858", size = 384590, upload-time = "2025-11-14T09:41:17.336Z" }, - { url = "https://files.pythonhosted.org/packages/ad/31/0c2e734165abb46215797bd830c4bdcb780b699854b15f2b6240515edcc6/pyobjc_framework_cocoa-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5a3dcd491cacc2f5a197142b3c556d8aafa3963011110102a093349017705118", size = 384689, upload-time = "2025-11-14T09:41:41.478Z" }, - { url = "https://files.pythonhosted.org/packages/23/3b/b9f61be7b9f9b4e0a6db18b3c35c4c4d589f2d04e963e2174d38c6555a92/pyobjc_framework_cocoa-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:914b74328c22d8ca261d78c23ef2befc29776e0b85555973927b338c5734ca44", size = 388843, upload-time = "2025-11-14T09:42:05.719Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/f777cc9e775fc7dae77b569254570fe46eb842516b3e4fe383ab49eab598/pyobjc_framework_cocoa-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:03342a60fc0015bcdf9b93ac0b4f457d3938e9ef761b28df9564c91a14f0129a", size = 384932, upload-time = "2025-11-14T09:42:29.771Z" }, - { url = "https://files.pythonhosted.org/packages/58/27/b457b7b37089cad692c8aada90119162dfb4c4a16f513b79a8b2b022b33b/pyobjc_framework_cocoa-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6ba1dc1bfa4da42d04e93d2363491275fb2e2be5c20790e561c8a9e09b8cf2cc", size = 388970, upload-time = "2025-11-14T09:42:53.964Z" }, -] - -[[package]] -name = "pyobjc-framework-collaboration" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/64/21/77fe64b39eae98412de1a0d33e9c735aa9949d53fff6b2d81403572b410b/pyobjc_framework_collaboration-12.1.tar.gz", hash = "sha256:2afa264d3233fc0a03a56789c6fefe655ffd81a2da4ba1dc79ea0c45931ad47b", size = 14299, upload-time = "2025-11-14T10:13:04.631Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/66/1507de01f1e2b309f8e11553a52769e4e2e9939ed770b5b560ef5bc27bc1/pyobjc_framework_collaboration-12.1-py2.py3-none-any.whl", hash = "sha256:182d6e6080833b97f9bef61738ae7bacb509714538f0d7281e5f0814c804b315", size = 4907, upload-time = "2025-11-14T09:42:55.781Z" }, -] - -[[package]] -name = "pyobjc-framework-colorsync" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/b4/706e4cc9db25b400201fc90f3edfaa1ab2d51b400b19437b043a68532078/pyobjc_framework_colorsync-12.1.tar.gz", hash = "sha256:d69dab7df01245a8c1bd536b9231c97993a5d1a2765d77692ce40ebbe6c1b8e9", size = 25269, upload-time = "2025-11-14T10:13:07.522Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/e1/82e45c712f43905ee1e6d585180764e8fa6b6f1377feb872f9f03c8c1fb8/pyobjc_framework_colorsync-12.1-py2.py3-none-any.whl", hash = "sha256:41e08d5b9a7af4b380c9adab24c7ff59dfd607b3073ae466693a3e791d8ffdc9", size = 6020, upload-time = "2025-11-14T09:42:57.504Z" }, -] - -[[package]] -name = "pyobjc-framework-compositorservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-metal" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/c5/0ba31d7af7e464b7f7ece8c2bd09112bdb0b7260848402e79ba6aacc622c/pyobjc_framework_compositorservices-12.1.tar.gz", hash = "sha256:028e357bbee7fbd3723339a321bbe14e6da5a772708a661a13eea5f17c89e4ab", size = 23292, upload-time = "2025-11-14T10:13:10.392Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/34/5a2de8d531dbb88023898e0b5d2ce8edee14751af6c70e6103f6aa31a669/pyobjc_framework_compositorservices-12.1-py2.py3-none-any.whl", hash = "sha256:9ef22d4eacd492e13099b9b8936db892cdbbef1e3d23c3484e0ed749f83c4984", size = 5910, upload-time = "2025-11-14T09:42:59.154Z" }, -] - -[[package]] -name = "pyobjc-framework-contacts" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4b/a0/ce0542d211d4ea02f5cbcf72ee0a16b66b0d477a4ba5c32e00117703f2f0/pyobjc_framework_contacts-12.1.tar.gz", hash = "sha256:89bca3c5cf31404b714abaa1673577e1aaad6f2ef49d4141c6dbcc0643a789ad", size = 42378, upload-time = "2025-11-14T10:13:14.203Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/c8/2c4638c0d06447886a34070eebb9ba57407d4dd5f0fcb7ab642568272b88/pyobjc_framework_contacts-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2e5ce33b686eb9c0a39351938a756442ea8dea88f6ae2f16bff5494a8569c687", size = 12165, upload-time = "2025-11-14T09:43:05.119Z" }, - { url = "https://files.pythonhosted.org/packages/25/43/e322dd14c77eada5a4f327f5bc094061c90efabc774b30396d1155a69c44/pyobjc_framework_contacts-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:62d985098aa86a86d23bff408aac47389680da4edc61f6acf10b2197efcbd0e0", size = 12177, upload-time = "2025-11-14T09:43:06.957Z" }, - { url = "https://files.pythonhosted.org/packages/0a/37/53eba15f2e31950056c63b78732b73379ddbf946c5e6681f3b2773dcf282/pyobjc_framework_contacts-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ab1d78f363dfede16bd5d951327332564bae86f68834d1e657dd18fe4dc12082", size = 12346, upload-time = "2025-11-14T09:43:08.865Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8b/3200f69b77ea85fe69caa1afea444387b5e41bf44ceff11e772954d8a0d5/pyobjc_framework_contacts-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:65576c359eb31c5a5ef95e0c6714686a94bb154a508d791885ff7c33dbc8afa3", size = 12259, upload-time = "2025-11-14T09:43:10.705Z" }, - { url = "https://files.pythonhosted.org/packages/a2/81/0da71a88273aa73841cd3669431c30be627600162ec89cd170759dbffeaf/pyobjc_framework_contacts-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1fac7feca7428047abf3f094fab678c4d0413296f34c30085119850509bc2905", size = 12410, upload-time = "2025-11-14T09:43:12.667Z" }, -] - -[[package]] -name = "pyobjc-framework-contactsui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-contacts" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/0c/7bb7f898456a81d88d06a1084a42e374519d2e40a668a872b69b11f8c1f9/pyobjc_framework_contactsui-12.1.tar.gz", hash = "sha256:aaeca7c9e0c9c4e224d73636f9a558f9368c2c7422155a41fd4d7a13613a77c1", size = 18769, upload-time = "2025-11-14T10:13:16.301Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/ab/319aa52dfe6f836f4dc542282c2c13996222d4f5c9ea7ff8f391b12dac83/pyobjc_framework_contactsui-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:057f40d2f6eb1b169a300675ec75cc7a747cddcbcee8ece133e652a7086c5ab5", size = 7888, upload-time = "2025-11-14T09:43:18.502Z" }, - { url = "https://files.pythonhosted.org/packages/fd/9c/c9a71681e2ad8695222dbdbbe740af22cc354e9130df6108f9bfe90a4100/pyobjc_framework_contactsui-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2ee2eccb633bc772ecb49dba7199546154efc2db5727992229cdf84b3f6ac84f", size = 7907, upload-time = "2025-11-14T09:43:20.409Z" }, - { url = "https://files.pythonhosted.org/packages/a0/54/abdb4c5f53323edc1e02bd0916133c4e6b82ad268eded668ef7b40a1e6c9/pyobjc_framework_contactsui-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c9d64bbc4cfae0f082627b57f7e29e71b924af970f344b106b17fb68e13f7da0", size = 8056, upload-time = "2025-11-14T09:43:22Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d4/fe84efe4301a4367a2ab427214f20e13bfb3a64dc5e29649acc15022c0ad/pyobjc_framework_contactsui-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:eb06b422ce8d422dce2c9af49a2bd093f78761e5aa3f1c866582a4c60cf31f79", size = 7961, upload-time = "2025-11-14T09:43:23.819Z" }, - { url = "https://files.pythonhosted.org/packages/39/c1/3ed9be7e479b13e4fd483c704c4833008ff8e63ee3acd66922f2f7a60292/pyobjc_framework_contactsui-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1bbb9bee9535505398771886ac43399400ffc9a84836e845e6d9708ac88e2d5d", size = 8120, upload-time = "2025-11-14T09:43:25.362Z" }, -] - -[[package]] -name = "pyobjc-framework-coreaudio" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/84/d1/0b884c5564ab952ff5daa949128c64815300556019c1bba0cf2ca752a1a0/pyobjc_framework_coreaudio-12.1.tar.gz", hash = "sha256:a9e72925fcc1795430496ce0bffd4ddaa92c22460a10308a7283ade830089fe1", size = 75077, upload-time = "2025-11-14T10:13:22.345Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/48/05b5192122e23140cf583eac99ccc5bf615591d6ff76483ba986c38ee750/pyobjc_framework_coreaudio-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a5ad6309779663f846ab36fe6c49647e470b7e08473c3e48b4f004017bdb68a4", size = 36908, upload-time = "2025-11-14T09:43:36.108Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ce/45808618fefc760e2948c363e0a3402ff77690c8934609cd07b19bc5b15f/pyobjc_framework_coreaudio-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3d8ef424850c8ae2146f963afaec6c4f5bf0c2e412871e68fb6ecfb209b8376f", size = 36935, upload-time = "2025-11-14T09:43:39.414Z" }, - { url = "https://files.pythonhosted.org/packages/bf/f6/0d74d9464bfb4f39451abf745174ec0c4d5c5ebf1c2fcb7556263ae3f75a/pyobjc_framework_coreaudio-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6552624df39dbc68ff9328f244ba56f59234ecbde8455db1e617a71bc4f3dd3a", size = 38390, upload-time = "2025-11-14T09:43:43.194Z" }, - { url = "https://files.pythonhosted.org/packages/cf/f2/c5ca32d01c9d892bf189cfe9b17deaf996db3b4013f8a8ba9b0d22730d70/pyobjc_framework_coreaudio-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:78ea67483a5deb21625c189328152008d278fe1da4304da9fcc1babd12627038", size = 37012, upload-time = "2025-11-14T09:43:46.54Z" }, - { url = "https://files.pythonhosted.org/packages/00/be/c3d660cef1ef874f42057a74931a7a05f581f6a647f5209bef96b372db86/pyobjc_framework_coreaudio-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:8d81b0d0296ab4571a4ff302e5cdb52386e486eb8749e99b95b9141438558ca2", size = 38485, upload-time = "2025-11-14T09:43:49.883Z" }, -] - -[[package]] -name = "pyobjc-framework-coreaudiokit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coreaudio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/41/1c/5c7e39b9361d4eec99b9115b593edd9825388acd594cb3b4519f8f1ac12c/pyobjc_framework_coreaudiokit-12.1.tar.gz", hash = "sha256:b83624f8de3068ab2ca279f786be0804da5cf904ff9979d96007b69ef4869e1e", size = 20137, upload-time = "2025-11-14T10:13:24.611Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/d7/f171c04c6496afeaad2ab658b0c810682c8407127edc94d4b3f3b90c2bb1/pyobjc_framework_coreaudiokit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:97d5dd857e73d5b597cfc980972b021314b760e2f5bdde7bbba0334fbf404722", size = 7273, upload-time = "2025-11-14T09:43:55.411Z" }, - { url = "https://files.pythonhosted.org/packages/81/9a/6cb91461b07c38b2db7918ee756f05fd704120b75ddc1a759e04af50351b/pyobjc_framework_coreaudiokit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dc1589cda7a4ae0560bf73e1a0623bb710de09ef030d585035f8a428a3e8d6a1", size = 7284, upload-time = "2025-11-14T09:43:57.109Z" }, - { url = "https://files.pythonhosted.org/packages/21/d8/1418fb222c6502ce2a99c415982895b510f6c48bdf60ca0dbed9897d96df/pyobjc_framework_coreaudiokit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6ec70b69d21925e02602cc22c5e0132daedc15ce65b7e3cc863fdb5f13cc23e3", size = 7446, upload-time = "2025-11-14T09:43:58.714Z" }, - { url = "https://files.pythonhosted.org/packages/92/65/36f017784df7ca5ad7741f1624c89410d62d0ebdeb437be32f7a1286a6df/pyobjc_framework_coreaudiokit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a2f9839a4bd05db2e7d12659af4cab32ec17dfee89fff83bbe9faee558e77a08", size = 7349, upload-time = "2025-11-14T09:44:00.625Z" }, - { url = "https://files.pythonhosted.org/packages/f1/fe/f012a1e3b92991819ae3319408cd77b2e7019be14d2b751d6ff613a8fe83/pyobjc_framework_coreaudiokit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0bf793729bf95bb2c667eba315ba4a6ab359f930efd1a5ea686392478abb687f", size = 7503, upload-time = "2025-11-14T09:44:02.166Z" }, -] - -[[package]] -name = "pyobjc-framework-corebluetooth" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4b/25/d21d6cb3fd249c2c2aa96ee54279f40876a0c93e7161b3304bf21cbd0bfe/pyobjc_framework_corebluetooth-12.1.tar.gz", hash = "sha256:8060c1466d90bbb9100741a1091bb79975d9ba43911c9841599879fc45c2bbe0", size = 33157, upload-time = "2025-11-14T10:13:28.064Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/56/01fef62a479cdd6ff9ee40b6e062a205408ff386ce5ba56d7e14a71fcf73/pyobjc_framework_corebluetooth-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe72c9732ee6c5c793b9543f08c1f5bdd98cd95dfc9d96efd5708ec9d6eeb213", size = 13209, upload-time = "2025-11-14T09:44:08.203Z" }, - { url = "https://files.pythonhosted.org/packages/e0/6c/831139ebf6a811aed36abfdfad846bc380dcdf4e6fb751a310ce719ddcfd/pyobjc_framework_corebluetooth-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5a894f695e6c672f0260327103a31ad8b98f8d4fb9516a0383db79a82a7e58dc", size = 13229, upload-time = "2025-11-14T09:44:10.463Z" }, - { url = "https://files.pythonhosted.org/packages/09/3c/3a6fe259a9e0745aa4612dee86b61b4fd7041c44b62642814e146b654463/pyobjc_framework_corebluetooth-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:1daf07a0047c3ed89fab84ad5f6769537306733b6a6e92e631581a0f419e3f32", size = 13409, upload-time = "2025-11-14T09:44:12.438Z" }, - { url = "https://files.pythonhosted.org/packages/2f/41/90640a4db62f0bf0611cf8a161129c798242116e2a6a44995668b017b106/pyobjc_framework_corebluetooth-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:15ba5207ca626dffe57ccb7c1beaf01f93930159564211cb97d744eaf0d812aa", size = 13222, upload-time = "2025-11-14T09:44:14.345Z" }, - { url = "https://files.pythonhosted.org/packages/86/99/8ed2f0ca02b9abe204966142bd8c4501cf6da94234cc320c4c0562c467e8/pyobjc_framework_corebluetooth-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e5385195bd365a49ce70e2fb29953681eefbe68a7b15ecc2493981d2fb4a02b1", size = 13408, upload-time = "2025-11-14T09:44:16.558Z" }, -] - -[[package]] -name = "pyobjc-framework-coredata" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/c5/8cd46cd4f1b7cf88bdeed3848f830ea9cdcc4e55cd0287a968a2838033fb/pyobjc_framework_coredata-12.1.tar.gz", hash = "sha256:1e47d3c5e51fdc87a90da62b97cae1bc49931a2bb064db1305827028e1fc0ffa", size = 124348, upload-time = "2025-11-14T10:13:36.435Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/29/fe24dc81e0f154805534923a56fe572c3b296092f086cf5a239fccc2d46a/pyobjc_framework_coredata-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a3ee3581ca23ead0b152257e98622fe0bf7e7948f30a62a25a17cafe28fe015e", size = 16409, upload-time = "2025-11-14T09:44:23.582Z" }, - { url = "https://files.pythonhosted.org/packages/f8/12/a22773c3a590d4923c74990d6714c4463bd1e183daaa67d6b00c9f325b33/pyobjc_framework_coredata-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:79f68577a7e96c57559ec844a129a5edce6827cdfafe49bf31524a488d715a37", size = 16420, upload-time = "2025-11-14T09:44:26.179Z" }, - { url = "https://files.pythonhosted.org/packages/a6/32/9595f0c8727d6ac312d18d23fc4a327c34c6ab873d2b760bbc40cf063726/pyobjc_framework_coredata-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:279b39bdb2a9c5e4d0377c1e81263b7d137bf2be37e15d6b5b2403598596f0e3", size = 16576, upload-time = "2025-11-14T09:44:28.266Z" }, - { url = "https://files.pythonhosted.org/packages/66/2e/238dedc9499b4cccb963dccdfbbc420ace33a01fb9e1221a79c3044fecce/pyobjc_framework_coredata-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:07d19e7db06e1ad21708cf01fc8014d5f1b73efd373a99af6ff882c1bfb8497b", size = 16479, upload-time = "2025-11-14T09:44:30.814Z" }, - { url = "https://files.pythonhosted.org/packages/e1/55/a044857da51644bce6d1914156db5190443653ab9ce6806864728d06d017/pyobjc_framework_coredata-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ac49d45b372f768bd577a26b503dd04e553ffebd3aa96c653b1c88a3f2733552", size = 16636, upload-time = "2025-11-14T09:44:32.952Z" }, -] - -[[package]] -name = "pyobjc-framework-corehaptics" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/2f/74a3da79d9188b05dd4be4428a819ea6992d4dfaedf7d629027cf1f57bfc/pyobjc_framework_corehaptics-12.1.tar.gz", hash = "sha256:521dd2986c8a4266d583dd9ed9ae42053b11ae7d3aa89bf53fbee88307d8db10", size = 22164, upload-time = "2025-11-14T10:13:38.941Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/f4/f469d6a9cac7c195f3d08fa65f94c32dd1dcf97a54b481be648fb3a7a5f3/pyobjc_framework_corehaptics-12.1-py2.py3-none-any.whl", hash = "sha256:a3b07d36ddf5c86a9cdaa411ab53d09553d26ea04fc7d4f82d21a84f0fc05fc0", size = 5382, upload-time = "2025-11-14T09:44:34.725Z" }, -] - -[[package]] -name = "pyobjc-framework-corelocation" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cc/79/b75885e0d75397dc2fe1ed9ca80be2b64c18b817f5fb924277cb1bf7b163/pyobjc_framework_corelocation-12.1.tar.gz", hash = "sha256:3674e9353f949d91dde6230ad68f6d5748a7f0424751e08a2c09d06050d66231", size = 53511, upload-time = "2025-11-14T10:13:43.384Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/57/1b670890fbf650f1a00afe5ee897ea3856a4a1417c2304c633ee2e978ed0/pyobjc_framework_corelocation-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8c35ad29a062fea7d417fd8997a9309660ba7963f2847c004e670efbe6bb5b00", size = 12721, upload-time = "2025-11-14T09:44:41.185Z" }, - { url = "https://files.pythonhosted.org/packages/9f/09/3da1947a5908d70461596eda5a0dc486ae807dc1c5a1ce2bf98567b474be/pyobjc_framework_corelocation-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:616eec0ccfcdcff7696bccf88c1aa39935387e595b22dd4c14842567aa0986a6", size = 12736, upload-time = "2025-11-14T09:44:42.977Z" }, - { url = "https://files.pythonhosted.org/packages/5d/9a/e5e11ec90500ce2c809a46113d3ebd70dd4b4ce450072db9a85f86e9a30f/pyobjc_framework_corelocation-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0a80ba8e8d9120eb80486235c483a0c734cb451265e5aa81bcf315f0e644eb00", size = 12867, upload-time = "2025-11-14T09:44:44.89Z" }, - { url = "https://files.pythonhosted.org/packages/38/ef/cd24f05a406c4f8478117f7bf54a9a7753b6485b3fc645a5d0530b1fa34b/pyobjc_framework_corelocation-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:3ed12521c457e484944fd91b1d19643d00596d3b0ea3455984c9e918a9c65138", size = 12720, upload-time = "2025-11-14T09:44:46.846Z" }, - { url = "https://files.pythonhosted.org/packages/72/f5/f08ea0a1eacc0e45260a4395412af2f501f93aa91c7efc0cadd39ee75717/pyobjc_framework_corelocation-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:43aa6d5c273c5efa0960dbb05ae7165948f12a889cb0fdcba2e0099d98f4c78d", size = 12862, upload-time = "2025-11-14T09:44:48.688Z" }, -] - -[[package]] -name = "pyobjc-framework-coremedia" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/7d/5ad600ff7aedfef8ba8f51b11d9aaacdf247b870bd14045d6e6f232e3df9/pyobjc_framework_coremedia-12.1.tar.gz", hash = "sha256:166c66a9c01e7a70103f3ca44c571431d124b9070612ef63a1511a4e6d9d84a7", size = 89566, upload-time = "2025-11-14T10:13:49.788Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/ae/f773cdc33c34a3f9ce6db829dbf72661b65c28ea9efaec8940364185b977/pyobjc_framework_coremedia-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:161a627f5c8cd30a5ebb935189f740e21e6cd94871a9afd463efdb5d51e255fa", size = 29396, upload-time = "2025-11-14T09:44:57.563Z" }, - { url = "https://files.pythonhosted.org/packages/a5/ea/aee26a475b4af8ed4152d3c50b1b8955241b8e95ae789aa9ee296953bc6a/pyobjc_framework_coremedia-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:98e885b7a092083fceaef0a7fc406a01ba7bcd3318fb927e59e055931c99cac8", size = 29414, upload-time = "2025-11-14T09:45:01.336Z" }, - { url = "https://files.pythonhosted.org/packages/db/9d/5ff10ee0ff539e125c96b8cff005457558766f942919814c968c3367cc32/pyobjc_framework_coremedia-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:d2b84149c1b3e65ec9050a3e5b617e6c0b4cdad2ab622c2d8c5747a20f013e16", size = 29477, upload-time = "2025-11-14T09:45:04.218Z" }, - { url = "https://files.pythonhosted.org/packages/08/e2/b890658face1290c8b6b6b53a1159c822bece248f883e42302548bef38da/pyobjc_framework_coremedia-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:737ec6e0b63414f42f7188030c85975d6d2124fbf6b15b52c99b6cc20250af4d", size = 29447, upload-time = "2025-11-14T09:45:07.17Z" }, - { url = "https://files.pythonhosted.org/packages/a4/9e/16981d0ee04b182481ce1e497b5e0326bad6d698fe0265bb7db72b1b26b5/pyobjc_framework_coremedia-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6a9419e0d143df16a1562520a13a389417386e2a53031530af6da60c34058ced", size = 29500, upload-time = "2025-11-14T09:45:10.506Z" }, -] - -[[package]] -name = "pyobjc-framework-coremediaio" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/08/8e/23baee53ccd6c011c965cff62eb55638b4088c3df27d2bf05004105d6190/pyobjc_framework_coremediaio-12.1.tar.gz", hash = "sha256:880b313b28f00b27775d630174d09e0b53d1cdbadb74216618c9dd5b3eb6806a", size = 51100, upload-time = "2025-11-14T10:13:54.277Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/0c/9425c53c9a8c26e468e065ba12ef076bab20197ff7c82052a6dddd46d42b/pyobjc_framework_coremediaio-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1108f8a278928fbca465f95123ea4a56456bd6571c1dc8b91793e6c61d624517", size = 17277, upload-time = "2025-11-14T09:45:17.457Z" }, - { url = "https://files.pythonhosted.org/packages/6d/d1/0267ec27841ee96458e6b669ce5b0c67d040ef3d5de90fa4e945ff989c48/pyobjc_framework_coremediaio-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:85ae768294ec307d5b502c075aeae1c53a731afc2f7f0307c9bef785775e26a6", size = 17249, upload-time = "2025-11-14T09:45:20.42Z" }, - { url = "https://files.pythonhosted.org/packages/ca/4e/bd0114aa052aaffc250b0c00567b42df8c7cb35517488c3238bcc964d016/pyobjc_framework_coremediaio-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6136a600a1435b9e798427984088a7bd5e68778e1bcf48a23a0eb9bc946a06f0", size = 17573, upload-time = "2025-11-14T09:45:22.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/fd/cdf26be5b15ee2f2a73c320a62393e03ab15966ee8262540f918f0c7b181/pyobjc_framework_coremediaio-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a5ca5763f185f48fedafec82f794dca53c55d2e52058d1b11baa43dd4ab0cd16", size = 17266, upload-time = "2025-11-14T09:45:24.719Z" }, - { url = "https://files.pythonhosted.org/packages/18/75/be0bfb86497f98915c7d015e3c21d199a1be8780ed08c171832b27593eac/pyobjc_framework_coremediaio-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:8aaeb44fdf9382dda30ff5f53ba6e291c1b514b7ab651f7b31d7fb4c27bfd309", size = 17561, upload-time = "2025-11-14T09:45:26.897Z" }, -] - -[[package]] -name = "pyobjc-framework-coremidi" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/75/96/2d583060a71a73c8a7e6d92f2a02675621b63c1f489f2639e020fae34792/pyobjc_framework_coremidi-12.1.tar.gz", hash = "sha256:3c6f1fd03997c3b0f20ab8545126b1ce5f0cddcc1587dffacad876c161da8c54", size = 55587, upload-time = "2025-11-14T10:13:58.903Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/2d/99520f6f1685e4cad816e55cbf6d85f8ce6ea908107950e2d37dc17219d8/pyobjc_framework_coremidi-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e84ffc1de59691c04201b0872e184fe55b5589f3a14876bd14460f3b5f3cd109", size = 24317, upload-time = "2025-11-14T09:45:34.92Z" }, - { url = "https://files.pythonhosted.org/packages/a9/2a/093ec8366d5f9e6c45e750310121ea572b8696518c51c4bbcf1623c01cf1/pyobjc_framework_coremidi-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:69720f38cfeea4299f31cb3e15d07e5d43e55127605f95e001794c7850c1c637", size = 24333, upload-time = "2025-11-14T09:45:37.577Z" }, - { url = "https://files.pythonhosted.org/packages/0e/cf/f03a0b44d1cfcfa9837cdfd6385c1e7d1e42301076d376329a44b6cbec03/pyobjc_framework_coremidi-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:06e5bce0a28bac21f09bcfedda46d93b2152c138764380314d99f2370a8c00f2", size = 24493, upload-time = "2025-11-14T09:45:40.591Z" }, - { url = "https://files.pythonhosted.org/packages/29/4d/7d8d6ee42a2c6ebc89fb78fa6a2924de255f76ba7907656c26cc5847fc92/pyobjc_framework_coremidi-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b49442cf533923952f56049be407edbe2ab2ece04ae1c94ca1e28d500f9f5754", size = 24371, upload-time = "2025-11-14T09:45:43.514Z" }, - { url = "https://files.pythonhosted.org/packages/6c/e5/56239a9e05fe62ad7cf00844c9a89db249281dc6b72238dfdcaa783896b0/pyobjc_framework_coremidi-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:194bc4da148ace8b71117c227562cad39a2708d296f569839f56d83e8801b25b", size = 24536, upload-time = "2025-11-14T09:45:46.504Z" }, -] - -[[package]] -name = "pyobjc-framework-coreml" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/30/2d/baa9ea02cbb1c200683cb7273b69b4bee5070e86f2060b77e6a27c2a9d7e/pyobjc_framework_coreml-12.1.tar.gz", hash = "sha256:0d1a4216891a18775c9e0170d908714c18e4f53f9dc79fb0f5263b2aa81609ba", size = 40465, upload-time = "2025-11-14T10:14:02.265Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/39/4defef0deb25c5d7e3b7826d301e71ac5b54ef901b7dac4db1adc00f172d/pyobjc_framework_coreml-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:10dc8e8db53d7631ebc712cad146e3a9a9a443f4e1a037e844149a24c3c42669", size = 11356, upload-time = "2025-11-14T09:45:52.271Z" }, - { url = "https://files.pythonhosted.org/packages/ae/3f/3749964aa3583f8c30d9996f0d15541120b78d307bb3070f5e47154ef38d/pyobjc_framework_coreml-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:48fa3bb4a03fa23e0e36c93936dca2969598e4102f4b441e1663f535fc99cd31", size = 11371, upload-time = "2025-11-14T09:45:54.105Z" }, - { url = "https://files.pythonhosted.org/packages/9c/c8/cf20ea91ae33f05f3b92dec648c6f44a65f86d1a64c1d6375c95b85ccb7c/pyobjc_framework_coreml-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:71de5b37e6a017e3ed16645c5d6533138f24708da5b56c35c818ae49d0253ee1", size = 11600, upload-time = "2025-11-14T09:45:55.976Z" }, - { url = "https://files.pythonhosted.org/packages/bc/5c/510ae8e3663238d32e653ed6a09ac65611dd045a7241f12633c1ab48bb9b/pyobjc_framework_coreml-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a04a96e512ecf6999aa9e1f60ad5635cb9d1cd839be470341d8d1541797baef6", size = 11418, upload-time = "2025-11-14T09:45:57.75Z" }, - { url = "https://files.pythonhosted.org/packages/d3/1a/b7367819381b07c440fa5797d2b0487e31f09aa72079a693ceab6875fa0a/pyobjc_framework_coreml-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:7762b3dd2de01565b7cf3049ce1e4c27341ba179d97016b0b7607448e1c39865", size = 11593, upload-time = "2025-11-14T09:45:59.623Z" }, -] - -[[package]] -name = "pyobjc-framework-coremotion" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2c/eb/abef7d405670cf9c844befc2330a46ee59f6ff7bac6f199bf249561a2ca6/pyobjc_framework_coremotion-12.1.tar.gz", hash = "sha256:8e1b094d34084cc8cf07bedc0630b4ee7f32b0215011f79c9e3cd09d205a27c7", size = 33851, upload-time = "2025-11-14T10:14:05.619Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/75/89fa4aab818aeca21ac0a60b7ceb89a9e685df0ddd3828d36a6f84a0cff0/pyobjc_framework_coremotion-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a77908ab83c422030f913a2a761d196359ab47f6d1e7c76f21de2c6c05ea2f5f", size = 10406, upload-time = "2025-11-14T09:46:05.076Z" }, - { url = "https://files.pythonhosted.org/packages/4d/dd/9a4cc56c55f7ffece2e100664503cb27b4f4265d57656d050a3af1c71d94/pyobjc_framework_coremotion-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b7b0d47b5889ca0b6e3a687bd1f83a13d3bb59c07a1c4c37dcca380ede5d6e81", size = 10423, upload-time = "2025-11-14T09:46:07.051Z" }, - { url = "https://files.pythonhosted.org/packages/0d/4d/660b47e9e0bc10ae87f85bede39e3f922b8382e0f6ac273058183d0bdc2f/pyobjc_framework_coremotion-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:531ea82945266d78e23d1f35de0cae2391e18677ed54120b90a4b9dd19f32596", size = 10570, upload-time = "2025-11-14T09:46:09.047Z" }, - { url = "https://files.pythonhosted.org/packages/21/b0/a1809fc3eea18db15d20bd2225f4d5e1cfc74f38b252e0cb1e3f2563bcfa/pyobjc_framework_coremotion-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:e7ce95dfa7e33b5762e0a800d76ef9c6a34b827c700d7e80c3740b7cd05168a5", size = 10484, upload-time = "2025-11-14T09:46:10.751Z" }, - { url = "https://files.pythonhosted.org/packages/1c/c4/167729d032e27985d1a6ba5e60c8045c43b9392624e8c605a24f2e22cf14/pyobjc_framework_coremotion-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d0aedcf8157c1428c7d2df8edae159b9de226d4df719c5bac8a96b648950b63e", size = 10629, upload-time = "2025-11-14T09:46:12.782Z" }, -] - -[[package]] -name = "pyobjc-framework-coreservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-fsevents" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4c/b3/52338a3ff41713f7d7bccaf63bef4ba4a8f2ce0c7eaff39a3629d022a79a/pyobjc_framework_coreservices-12.1.tar.gz", hash = "sha256:fc6a9f18fc6da64c166fe95f2defeb7ac8a9836b3b03bb6a891d36035260dbaa", size = 366150, upload-time = "2025-11-14T10:14:28.133Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/6c/33984caaf497fc5a6f86350d7ca4fac8abeb2bc33203edc96955a21e8c05/pyobjc_framework_coreservices-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8751dc2edcb7cfa248bf8a274c4d6493e8d53ef28a843827a4fc9a0a8b04b8be", size = 30206, upload-time = "2025-11-14T09:46:22.732Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6f/4a6eb2f2bbdbf66a1b35f272d8504ce6f098947f9343df474f0d15a2b507/pyobjc_framework_coreservices-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:96574fb24d2b8b507901ef7be7fcb70b7f49e110bd050a411b90874cc18c7c7b", size = 30226, upload-time = "2025-11-14T09:46:25.565Z" }, - { url = "https://files.pythonhosted.org/packages/60/6e/78a831834dc7f84a2d61efb47d212239f3ae3d16aa5512f1265a8f6c0162/pyobjc_framework_coreservices-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:227fb4144a87c6c97a5f737fb0c666293b33e54f0ffb500f2c420da6c110ba2d", size = 30229, upload-time = "2025-11-14T09:46:28.51Z" }, - { url = "https://files.pythonhosted.org/packages/d8/b6/c4100905d92f1187f74701ab520da95a235c09e94a71e5872462660ac022/pyobjc_framework_coreservices-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c650e1083fb313b9c8df4be8d582c266aa1b99c75ed5d7e45e3a91a7b8a128b2", size = 30255, upload-time = "2025-11-14T09:46:31.492Z" }, - { url = "https://files.pythonhosted.org/packages/d2/79/df730603028dbd34aa61dbe0396cc23715520195726686bb5e5832429f56/pyobjc_framework_coreservices-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:dff0cb6ccbd39ea45b01a50955d757172567de5c164f6e8e241bf4e7639b0946", size = 30269, upload-time = "2025-11-14T09:46:34.469Z" }, -] - -[[package]] -name = "pyobjc-framework-corespotlight" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/99/d0/88ca73b0cf23847af463334989dd8f98e44f801b811e7e1d8a5627ec20b4/pyobjc_framework_corespotlight-12.1.tar.gz", hash = "sha256:57add47380cd0bbb9793f50a4a4b435a90d4ebd2a33698e058cb353ddfb0d068", size = 38002, upload-time = "2025-11-14T10:14:31.948Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/3b/d3031eddff8029859de6d92b1f741625b1c233748889141a6a5a89b96f0e/pyobjc_framework_corespotlight-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bfcea64ab3250e2886d202b8731be3817b5ac0c8c9f43e77d0d5a0b6602e71a7", size = 9996, upload-time = "2025-11-14T09:46:47.157Z" }, - { url = "https://files.pythonhosted.org/packages/7b/ed/419ae27bdd17701404301ede1969daadeef6ef6dd8b4a8110a90a1d77df1/pyobjc_framework_corespotlight-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:37003bfea415ff21859d44403c3a13ac55f90b6dca92c69b81b61d96cee0c7be", size = 10012, upload-time = "2025-11-14T09:46:48.826Z" }, - { url = "https://files.pythonhosted.org/packages/a8/84/ebe1acb365958604465f83710772c1a08854f472896e607f7eedb5944e1b/pyobjc_framework_corespotlight-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ede26027cfa577e6748b7dd0615e8a1bb379e48ad2324489b2c8d242cdf6fce8", size = 10152, upload-time = "2025-11-14T09:46:51.025Z" }, - { url = "https://files.pythonhosted.org/packages/21/cf/11cafe42bc7209bd96d71323beb60d6d1cdb069eb651f120323b3ef9c8d4/pyobjc_framework_corespotlight-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:986ac40755e15aa3a562aac687b22c882de2b4b0fa58fbd419cc3487a0df1507", size = 10069, upload-time = "2025-11-14T09:46:53Z" }, - { url = "https://files.pythonhosted.org/packages/10/95/a64f847413834ced69c29d63b60aeb084174d81d57f748475be03fbfcdc2/pyobjc_framework_corespotlight-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0041b9a10d7f6c4a8d05f2ed281194a3d8bc5b2d0ceca4f4a9d9a8ce064fd68e", size = 10215, upload-time = "2025-11-14T09:46:54.703Z" }, -] - -[[package]] -name = "pyobjc-framework-coretext" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/29/da/682c9c92a39f713bd3c56e7375fa8f1b10ad558ecb075258ab6f1cdd4a6d/pyobjc_framework_coretext-12.1.tar.gz", hash = "sha256:e0adb717738fae395dc645c9e8a10bb5f6a4277e73cba8fa2a57f3b518e71da5", size = 90124, upload-time = "2025-11-14T10:14:38.596Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/0f/ddf45bf0e3ba4fbdc7772de4728fd97ffc34a0b5a15e1ab1115b202fe4ae/pyobjc_framework_coretext-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d246fa654bdbf43bae3969887d58f0b336c29b795ad55a54eb76397d0e62b93c", size = 30108, upload-time = "2025-11-14T09:47:04.228Z" }, - { url = "https://files.pythonhosted.org/packages/20/a2/a3974e3e807c68e23a9d7db66fc38ac54f7ecd2b7a9237042006699a76e1/pyobjc_framework_coretext-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7cbb2c28580e6704ce10b9a991ccd9563a22b3a75f67c36cf612544bd8b21b5f", size = 30110, upload-time = "2025-11-14T09:47:07.518Z" }, - { url = "https://files.pythonhosted.org/packages/0f/5d/85e059349e9cfbd57269a1f11f56747b3ff5799a3bcbd95485f363c623d8/pyobjc_framework_coretext-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:14100d1e39efb30f57869671fb6fce8d668f80c82e25e7930fb364866e5c0dab", size = 30697, upload-time = "2025-11-14T09:47:10.932Z" }, - { url = "https://files.pythonhosted.org/packages/ef/c3/adf9d306e9ead108167ab7a974ab7d171dbacf31c72fad63e12585f58023/pyobjc_framework_coretext-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:782a1a9617ea267c05226e9cd81a8dec529969a607fe1e037541ee1feb9524e9", size = 30095, upload-time = "2025-11-14T09:47:13.893Z" }, - { url = "https://files.pythonhosted.org/packages/bd/ca/6321295f47a47b0fca7de7e751ddc0ddc360413f4e506335fe9b0f0fb085/pyobjc_framework_coretext-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:7afe379c5a870fa3e66e6f65231c3c1732d9ccd2cd2a4904b2cd5178c9e3c562", size = 30702, upload-time = "2025-11-14T09:47:17.292Z" }, -] - -[[package]] -name = "pyobjc-framework-corewlan" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/71/739a5d023566b506b3fd3d2412983faa95a8c16226c0dcd0f67a9294a342/pyobjc_framework_corewlan-12.1.tar.gz", hash = "sha256:a9d82ec71ef61f37e1d611caf51a4203f3dbd8caf827e98128a1afaa0fd2feb5", size = 32417, upload-time = "2025-11-14T10:14:41.921Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/31/3e9cf2c0ac3c979062958eae7a275b602515c9c76fd30680e1ee0fea82ae/pyobjc_framework_corewlan-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:5cba04c0550fc777767cd3a5471e4ed837406ab182d7d5c273bc5ce6ea237bfe", size = 9958, upload-time = "2025-11-14T09:47:22.474Z" }, - { url = "https://files.pythonhosted.org/packages/c0/a4/b691e4d1730c16f8ea2f883712054961a3e45f40e1471c0edfc30f061c07/pyobjc_framework_corewlan-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aac949646953effdd36d2d21bc0ab645e58bb25deafe86c6e600b3cdcfc2228b", size = 9968, upload-time = "2025-11-14T09:47:24.454Z" }, - { url = "https://files.pythonhosted.org/packages/88/2e/dbba1674e1629839f479c9d14b90c37ed3b5f76d3b6b3ad56af48951c45b/pyobjc_framework_corewlan-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:dae63c36affcc933c9161980e4fe7333e0c59c968174a00a75cb5f6e4ede10c6", size = 10115, upload-time = "2025-11-14T09:47:26.152Z" }, - { url = "https://files.pythonhosted.org/packages/e8/e2/e89ea1ee92de17ec53087868d0466f6fd8174488b613a46528a3642aa41d/pyobjc_framework_corewlan-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:336536ecfd503118f79c8337cc983bbf0768e3ba4ac142e0cf8db1408c644965", size = 10010, upload-time = "2025-11-14T09:47:27.827Z" }, - { url = "https://files.pythonhosted.org/packages/15/df/e695f432dbfcd0fbfa416db21471091e94e921094a795b87cb9ebea423e5/pyobjc_framework_corewlan-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:fe6373e83e12be6854f7c1f054e2f68b41847fd739aa578d3c5478bd3fd4014f", size = 10162, upload-time = "2025-11-14T09:47:29.82Z" }, -] - -[[package]] -name = "pyobjc-framework-cryptotokenkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6b/7c/d03ff4f74054578577296f33bc669fce16c7827eb1a553bb372b5aab30ca/pyobjc_framework_cryptotokenkit-12.1.tar.gz", hash = "sha256:c95116b4b7a41bf5b54aff823a4ef6f4d9da4d0441996d6d2c115026a42d82f5", size = 32716, upload-time = "2025-11-14T10:14:45.024Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/c7/aecba253cf21303b2c9f3ce03fc0e987523609d7839ea8e0a688ae816c96/pyobjc_framework_cryptotokenkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ef51a86c1d0125fabdfad0b3efa51098fb03660d8dad2787d82e8b71c9f189de", size = 12633, upload-time = "2025-11-14T09:47:35.707Z" }, - { url = "https://files.pythonhosted.org/packages/15/8d/3e24abc92a8ee8ee11386d4d9dfb2d6961d10814474053a8ebccfaff0d97/pyobjc_framework_cryptotokenkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e65a8e4558e6cf1e46a9b4a52fcbf7b2ddd17958d675e9047d8a9f131d0a4d33", size = 12650, upload-time = "2025-11-14T09:47:37.633Z" }, - { url = "https://files.pythonhosted.org/packages/e9/eb/418afc27429922e73a05bd22198c71e1f6b3badebd73cad208eb9e922f64/pyobjc_framework_cryptotokenkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:cc9aa75e418376e92b1540d1edfa0c8097a027a1a241717983d0223cdad8e9ca", size = 12834, upload-time = "2025-11-14T09:47:40.27Z" }, - { url = "https://files.pythonhosted.org/packages/6d/cc/32c8e34c6c54e487b993eaabe70d997096fcc1d82176207f967858f2987b/pyobjc_framework_cryptotokenkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:94fa4b3903a1a39fe1d5874a5ae5b67471f488925c485a7e9c3575fbf9eba43e", size = 12632, upload-time = "2025-11-14T09:47:42.195Z" }, - { url = "https://files.pythonhosted.org/packages/a9/7e/57c569f4f71dfcb65b049fbb0aace19da0ed756eef7f440950098f8de498/pyobjc_framework_cryptotokenkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:05d40859a40ba4ed3dd8befabefc02aa224336c660b2f33ebf14d5397a30ffb3", size = 12839, upload-time = "2025-11-14T09:47:44.133Z" }, -] - -[[package]] -name = "pyobjc-framework-datadetection" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/db/97/9b03832695ec4d3008e6150ddfdc581b0fda559d9709a98b62815581259a/pyobjc_framework_datadetection-12.1.tar.gz", hash = "sha256:95539e46d3bc970ce890aa4a97515db10b2690597c5dd362996794572e5d5de0", size = 12323, upload-time = "2025-11-14T10:14:46.769Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/70/1c/5d2f941501e84da8fef8ef3fd378b5c083f063f083f97dd3e8a07f0404b3/pyobjc_framework_datadetection-12.1-py2.py3-none-any.whl", hash = "sha256:4dc8e1d386d655b44b2681a4a2341fb2fc9addbf3dda14cb1553cd22be6a5387", size = 3497, upload-time = "2025-11-14T09:47:45.826Z" }, -] - -[[package]] -name = "pyobjc-framework-devicecheck" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/af/c676107c40d51f55d0a42043865d7246db821d01241b518ea1d3b3ef1394/pyobjc_framework_devicecheck-12.1.tar.gz", hash = "sha256:567e85fc1f567b3fe64ac1cdc323d989509331f64ee54fbcbde2001aec5adbdb", size = 12885, upload-time = "2025-11-14T10:14:48.804Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/d8/1f1b13fa4775b6474c9ad0f4b823953eaeb6c11bd6f03fa8479429b36577/pyobjc_framework_devicecheck-12.1-py2.py3-none-any.whl", hash = "sha256:ffd58148bdef4a1ee8548b243861b7d97a686e73808ca0efac5bef3c430e4a15", size = 3684, upload-time = "2025-11-14T09:47:47.25Z" }, -] - -[[package]] -name = "pyobjc-framework-devicediscoveryextension" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/91/b0/e6e2ed6a7f4b689746818000a003ff7ab9c10945df66398ae8d323ae9579/pyobjc_framework_devicediscoveryextension-12.1.tar.gz", hash = "sha256:60e12445fad97ff1f83472255c943685a8f3a9d95b3126d887cfe769b7261044", size = 14718, upload-time = "2025-11-14T10:14:50.723Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/0c/005fe8db1e19135f493a3de8c8d38031e1ad2d626de4ef89f282acf4aff7/pyobjc_framework_devicediscoveryextension-12.1-py2.py3-none-any.whl", hash = "sha256:d6d6b606d27d4d88efc0bed4727c375e749149b360290c3ad2afc52337739a1b", size = 4321, upload-time = "2025-11-14T09:47:48.78Z" }, -] - -[[package]] -name = "pyobjc-framework-dictionaryservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-coreservices" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7a/c0/daf03cdaf6d4e04e0cf164db358378c07facd21e4e3f8622505d72573e2c/pyobjc_framework_dictionaryservices-12.1.tar.gz", hash = "sha256:354158f3c55d66681fa903c7b3cb05a435b717fa78d0cef44d258d61156454a7", size = 10573, upload-time = "2025-11-14T10:14:53.961Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/13/ab308e934146cfd54691ddad87e572cd1edb6659d795903c4c75904e2d7d/pyobjc_framework_dictionaryservices-12.1-py2.py3-none-any.whl", hash = "sha256:578854eec17fa473ac17ab30050a7bbb2ab69f17c5c49b673695254c3e88ad4b", size = 3930, upload-time = "2025-11-14T09:47:50.782Z" }, -] - -[[package]] -name = "pyobjc-framework-discrecording" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/87/8bd4544793bfcdf507174abddd02b1f077b48fab0004b3db9a63142ce7e9/pyobjc_framework_discrecording-12.1.tar.gz", hash = "sha256:6defc8ea97fb33b4d43870c673710c04c3dc48be30cdf78ba28191a922094990", size = 55607, upload-time = "2025-11-14T10:14:58.276Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/70/14a5aa348a5eba16e8773bb56698575cf114aa55aa303037b7000fc53959/pyobjc_framework_discrecording-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:865f1551e58459da6073360afc8f2cc452472c676ba83dcaa9b0c44e7775e4b5", size = 14566, upload-time = "2025-11-14T09:47:57.503Z" }, - { url = "https://files.pythonhosted.org/packages/aa/29/0064a48b24694597890cb065f5d33f719eed2cfff2878f43f310f27485cc/pyobjc_framework_discrecording-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c682c458622db9b4ea8363335ee38f5dd98db6691680041a3fda73e26714346", size = 14567, upload-time = "2025-11-14T09:47:59.78Z" }, - { url = "https://files.pythonhosted.org/packages/de/78/b8b3f063ecda49d600548eeee0c29b47a0b7635623a68609038326bfa7e7/pyobjc_framework_discrecording-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:36e1ba4d37fe310bad2fbfeadd43c8ef001cfae9a2a0484d7318504c5dbefa3f", size = 14745, upload-time = "2025-11-14T09:48:02.271Z" }, - { url = "https://files.pythonhosted.org/packages/d1/f1/61b7d8a35fb654ece97b539912452334665abf0a1fa9e83cda809c674c9e/pyobjc_framework_discrecording-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a60e2cab88fdf923f2017effb248f7c32819fbe494a6d17acfa71754b44ff68c", size = 14632, upload-time = "2025-11-14T09:48:04.41Z" }, - { url = "https://files.pythonhosted.org/packages/59/f5/e3db465b3087a3d3550dc9b4a90b33fa281d19da24dd0a5b591eeddbbe64/pyobjc_framework_discrecording-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:3345fcb139f1646c2aef41be6344c5b944817ea4df85d7f61db27781a90d77a6", size = 14808, upload-time = "2025-11-14T09:48:06.496Z" }, -] - -[[package]] -name = "pyobjc-framework-discrecordingui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-discrecording" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/30/63/8667f5bb1ecb556add04e86b278cb358dc1f2f03862705cae6f09097464c/pyobjc_framework_discrecordingui-12.1.tar.gz", hash = "sha256:6793d4a1a7f3219d063f39d87f1d4ebbbb3347e35d09194a193cfe16cba718a8", size = 16450, upload-time = "2025-11-14T10:15:00.254Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/4e/76016130c27b98943c5758a05beab3ba1bc9349ee881e1dfc509ea954233/pyobjc_framework_discrecordingui-12.1-py2.py3-none-any.whl", hash = "sha256:6544ef99cad3dee95716c83cb207088768b6ecd3de178f7e1b17df5997689dfd", size = 4702, upload-time = "2025-11-14T09:48:08.01Z" }, -] - -[[package]] -name = "pyobjc-framework-diskarbitration" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/42/f75fcabec1a0033e4c5235cc8225773f610321d565b63bf982c10c6bbee4/pyobjc_framework_diskarbitration-12.1.tar.gz", hash = "sha256:6703bc5a09b38a720c9ffca356b58f7e99fa76fc988c9ec4d87112344e63dfc2", size = 17121, upload-time = "2025-11-14T10:15:02.223Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/65/c1f54c47af17cb6b923eab85e95f22396c52f90ee8f5b387acffad9a99ea/pyobjc_framework_diskarbitration-12.1-py2.py3-none-any.whl", hash = "sha256:54caf3079fe4ae5ac14466a9b68923ee260a1a88a8290686b4a2015ba14c2db6", size = 4877, upload-time = "2025-11-14T09:48:09.945Z" }, -] - -[[package]] -name = "pyobjc-framework-dvdplayback" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cf/dd/7859a58e8dd336c77f83feb76d502e9623c394ea09322e29a03f5bc04d32/pyobjc_framework_dvdplayback-12.1.tar.gz", hash = "sha256:279345d4b5fb2c47dd8e5c2fd289e644b6648b74f5c25079805eeb61bfc4a9cd", size = 32332, upload-time = "2025-11-14T10:15:05.257Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/7d/22c07c28fab1f15f0d364806e39a6ca63c737c645fe7e98e157878b5998c/pyobjc_framework_dvdplayback-12.1-py2.py3-none-any.whl", hash = "sha256:af911cc222272a55b46a1a02a46a355279aecfd8132231d8d1b279e252b8ad4c", size = 8243, upload-time = "2025-11-14T09:48:11.824Z" }, -] - -[[package]] -name = "pyobjc-framework-eventkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b6/42/4ec97e641fdcf30896fe76476181622954cb017117b1429f634d24816711/pyobjc_framework_eventkit-12.1.tar.gz", hash = "sha256:7c1882be2f444b1d0f71e9a0cd1e9c04ad98e0261292ab741fc9de0b8bbbbae9", size = 28538, upload-time = "2025-11-14T10:15:07.878Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/35/142f43227627d6324993869d354b9e57eb1e88c4e229e2271592254daf25/pyobjc_framework_eventkit-12.1-py2.py3-none-any.whl", hash = "sha256:3d2d36d5bd9e0a13887a6ac7cdd36675985ebe2a9cb3cdf8cec0725670c92c60", size = 6820, upload-time = "2025-11-14T09:48:14.035Z" }, -] - -[[package]] -name = "pyobjc-framework-exceptionhandling" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/17/5c9d4164f7ccf6b9100be0ad597a7857395dd58ea492cba4f0e9c0b77049/pyobjc_framework_exceptionhandling-12.1.tar.gz", hash = "sha256:7f0719eeea6695197fce0e7042342daa462683dc466eb6a442aad897032ab00d", size = 16694, upload-time = "2025-11-14T10:15:10.173Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/ad/8e05acf3635f20ea7d878be30d58a484c8b901a8552c501feb7893472f86/pyobjc_framework_exceptionhandling-12.1-py2.py3-none-any.whl", hash = "sha256:2f1eae14cf0162e53a0888d9ffe63f047501fe583a23cdc9c966e89f48cf4713", size = 7113, upload-time = "2025-11-14T09:48:15.685Z" }, -] - -[[package]] -name = "pyobjc-framework-executionpolicy" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/11/db765e76e7b00e1521d7bb3a61ae49b59e7573ac108da174720e5d96b61b/pyobjc_framework_executionpolicy-12.1.tar.gz", hash = "sha256:682866589365cd01d3a724d8a2781794b5cba1e152411a58825ea52d7b972941", size = 12594, upload-time = "2025-11-14T10:15:12.077Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/2c/f10352398f10f244401ab8f53cabd127dc3f5dbbfc8de83464661d716671/pyobjc_framework_executionpolicy-12.1-py2.py3-none-any.whl", hash = "sha256:c3a9eca3bd143cf202787dd5e3f40d954c198f18a5e0b8b3e2fcdd317bf33a52", size = 3739, upload-time = "2025-11-14T09:48:17.35Z" }, -] - -[[package]] -name = "pyobjc-framework-extensionkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9a/d4/e9b1f74d29ad9dea3d60468d59b80e14ed3a19f9f7a25afcbc10d29c8a1e/pyobjc_framework_extensionkit-12.1.tar.gz", hash = "sha256:773987353e8aba04223dbba3149253db944abfb090c35318b3a770195b75da6d", size = 18694, upload-time = "2025-11-14T10:15:14.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9c/d9/8064dad6114a489e5439cc20d9fb0dd64cfc406d875b4a3c87015b3f6266/pyobjc_framework_extensionkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7e01d705c7ac6d080ae34a81db6d9b81875eabefa63fd6eafbfa30f676dd780b", size = 7932, upload-time = "2025-11-14T09:48:23.653Z" }, - { url = "https://files.pythonhosted.org/packages/f5/75/63c304543fc3c5c0755521ab0535e3f81f6ab8de656a02598e23f687cb6c/pyobjc_framework_extensionkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8f2a87bd4fbb8d14900bbe9c979b23b7532b23685c0f5022671b26db4fa3e515", size = 7946, upload-time = "2025-11-14T09:48:25.803Z" }, - { url = "https://files.pythonhosted.org/packages/bd/40/2dab02d8726abf586f253fbddc2d0d9b2abd5dbb4b24272eb48c886741fc/pyobjc_framework_extensionkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:570e8a89116380a27dd8df7ce28cd5f7296eb785aea4cb7dc6447954005360c2", size = 8086, upload-time = "2025-11-14T09:48:27.715Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ec/a02ddac5ea7439dc4deb488ba551e27565920b8864c2f71611159794a1b5/pyobjc_framework_extensionkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b002bd4ee7aa951298f8bdd41e2a59d172050975499f94a26caff263b5fadca4", size = 8004, upload-time = "2025-11-14T09:48:29.454Z" }, - { url = "https://files.pythonhosted.org/packages/15/21/2fad7badad0bb25c22bff840563041a3f9e10aee4da7232bdbbff1b48138/pyobjc_framework_extensionkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d14ebebffe05d33d189bf2bec5b676721790cf041b7ee628bfd05bcda4c148cc", size = 8141, upload-time = "2025-11-14T09:48:31.37Z" }, -] - -[[package]] -name = "pyobjc-framework-externalaccessory" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8e/35/86c097ae2fdf912c61c1276e80f3e090a3fc898c75effdf51d86afec456b/pyobjc_framework_externalaccessory-12.1.tar.gz", hash = "sha256:079f770a115d517a6ab87db1b8a62ca6cdf6c35ae65f45eecc21b491e78776c0", size = 20958, upload-time = "2025-11-14T10:15:16.419Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/52/984034396089766b6e5ff3be0f93470e721c420fa9d1076398557532234f/pyobjc_framework_externalaccessory-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dedbf7a09375ac19668156c1417bd7829565b164a246b714e225b9cbb6a351ad", size = 8932, upload-time = "2025-11-14T09:48:37.393Z" }, - { url = "https://files.pythonhosted.org/packages/2d/bf/9e368e16edb94d9507c1034542379b943e0d9c3bcc0ce8062ac330216317/pyobjc_framework_externalaccessory-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:34858f06cd75fe4e358555961a6898eb8778fd2931058fd660fcd5d6cf31b162", size = 8944, upload-time = "2025-11-14T09:48:39.07Z" }, - { url = "https://files.pythonhosted.org/packages/71/5b/643a00fe334485b4100d7a68330b6c6c349fe27434e0dc0fdf2065984555/pyobjc_framework_externalaccessory-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5551915fa82ff1eea8e5810f74c1298e5327aefe4ac90abeb9a7abd69ff33a22", size = 9100, upload-time = "2025-11-14T09:48:41.57Z" }, - { url = "https://files.pythonhosted.org/packages/7b/e4/b7f1c8b977e64b495a5f268f9f6d82ed71152268542a7e676c26c647a6b0/pyobjc_framework_externalaccessory-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:22efc5bf68f5f0ef39f4308ef06403c42544f5fc75f6eeb137a87af99357dda1", size = 8999, upload-time = "2025-11-14T09:48:43.386Z" }, - { url = "https://files.pythonhosted.org/packages/02/23/c038dd6c9dee7067dd51e430f5019a39f68102aade47ae9a89f64eb913d6/pyobjc_framework_externalaccessory-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:3a0f21fe660ee89b98d357ce3df9ff546f19161b6f569cc93888e6bcbd1d7f22", size = 9178, upload-time = "2025-11-14T09:48:45.398Z" }, -] - -[[package]] -name = "pyobjc-framework-fileprovider" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cc/9a/724b1fae5709f8860f06a6a2a46de568f9bb8bdb2e2aae45b4e010368f51/pyobjc_framework_fileprovider-12.1.tar.gz", hash = "sha256:45034e0d00ae153c991aa01cb1fd41874650a30093e77ba73401dcce5534c8ad", size = 43071, upload-time = "2025-11-14T10:15:19.989Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/f5/56f0751a2988b2caca89d6800c8f29246828d1a7498bb676ef1ab28000b7/pyobjc_framework_fileprovider-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:89b140ea8369512ddf4164b007cbe35b4d97d1dcb8affa12a7264c0ab8d56e45", size = 21003, upload-time = "2025-11-14T09:48:53.128Z" }, - { url = "https://files.pythonhosted.org/packages/31/92/23deb9d12690a69599dd7a66f3f5a5a3c09824147d148759a33c5c2933fc/pyobjc_framework_fileprovider-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a1a7a6ac3af1e93d23f5644b4c7140dc7edf5ff79419cc0bd25ce7001afc1cf6", size = 21018, upload-time = "2025-11-14T09:48:55.504Z" }, - { url = "https://files.pythonhosted.org/packages/a4/99/cec0a13ca8da9283d1a1bbaeeabdff7903be5c85cfb27a2bb7cc121cb529/pyobjc_framework_fileprovider-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6d6744c8c4f915b6193a982365d947b63286cea605f990a2aaa3bb37069471f2", size = 21300, upload-time = "2025-11-14T09:48:57.948Z" }, - { url = "https://files.pythonhosted.org/packages/4f/8d/b1c6e0927d22d0c125c8a62cd2342c4613e3aabf13cb0e66ea62fe85fff1/pyobjc_framework_fileprovider-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:520b8c83b1ce63e0f668ea1683e3843f2e5379c0af76dceb19d5d540d584ff54", size = 21062, upload-time = "2025-11-14T09:49:00.305Z" }, - { url = "https://files.pythonhosted.org/packages/25/14/1a05c99849e6abb778f601eeb93e27f2fbbbb8f4ffaab42c8aa02ff62406/pyobjc_framework_fileprovider-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:de9aaea1308e37f7537dd2a8e89f151d4eaee2b0db5d248dc85cc1fd521adaaa", size = 21331, upload-time = "2025-11-14T09:49:02.803Z" }, -] - -[[package]] -name = "pyobjc-framework-fileproviderui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-fileprovider" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/00/234f9b93f75255845df81d9d5ea20cb83ecb5c0a4e59147168b622dd0b9d/pyobjc_framework_fileproviderui-12.1.tar.gz", hash = "sha256:15296429d9db0955abc3242b2920b7a810509a85118dbc185f3ac8234e5a6165", size = 12437, upload-time = "2025-11-14T10:15:22.044Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/65/cc4397511bd0af91993d6302a2aed205296a9ad626146eefdfc8a9624219/pyobjc_framework_fileproviderui-12.1-py2.py3-none-any.whl", hash = "sha256:521a914055089e28631018bd78df4c4f7416e98b4150f861d4a5bc97d5b1ffe4", size = 3715, upload-time = "2025-11-14T09:49:04.213Z" }, -] - -[[package]] -name = "pyobjc-framework-findersync" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e4/63/c8da472e0910238a905bc48620e005a1b8ae7921701408ca13e5fb0bfb4b/pyobjc_framework_findersync-12.1.tar.gz", hash = "sha256:c513104cef0013c233bf8655b527df665ce6f840c8bc0b3781e996933d4dcfa6", size = 13507, upload-time = "2025-11-14T10:15:24.161Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9f/ec7f393e3e2fd11cbdf930d884a0ba81078bdb61920b3cba4f264de8b446/pyobjc_framework_findersync-12.1-py2.py3-none-any.whl", hash = "sha256:e07abeca52c486cf14927f617afc27afa7a3828b99fab3ad02355105fb29203e", size = 4889, upload-time = "2025-11-14T09:49:05.763Z" }, -] - -[[package]] -name = "pyobjc-framework-fsevents" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/43/17/21f45d2bca2efc72b975f2dfeae7a163dbeabb1236c1f188578403fd4f09/pyobjc_framework_fsevents-12.1.tar.gz", hash = "sha256:a22350e2aa789dec59b62da869c1b494a429f8c618854b1383d6473f4c065a02", size = 26487, upload-time = "2025-11-14T10:15:26.796Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/e3/2c5eeea390c0b053e2d73b223af3ec87a3e99a8106e8d3ee79942edb0822/pyobjc_framework_fsevents-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a2949358513fd7bc622fb362b5c4af4fc24fc6307320070ca410885e5e13d975", size = 13141, upload-time = "2025-11-14T09:49:11.947Z" }, - { url = "https://files.pythonhosted.org/packages/19/41/f06d14020eb9ec10c0e36f5e3f836f8541b989dcde9f53ea172852a7c864/pyobjc_framework_fsevents-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b30c72239a9ced4e4604fcf265a1efee788cb47850982dd80fcbaafa7ee64f9", size = 13143, upload-time = "2025-11-14T09:49:14.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/3a/10c1576da38f7e39d6adb592f54fa1b058c859c7d38d03b0cdaf25e12f8d/pyobjc_framework_fsevents-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:05220368b0685783e0ae00c885e167169d47ff5cf66de7172ca8074682dfc330", size = 13511, upload-time = "2025-11-14T09:49:16.423Z" }, - { url = "https://files.pythonhosted.org/packages/90/f6/d6ea1ce944adb3e2c77abc84470a825854428c72e71efe5742bad1c1b1cd/pyobjc_framework_fsevents-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:90819f2fe0516443f679273b128c212d9e6802570f2f1c8a1e190fed76e2dc48", size = 13033, upload-time = "2025-11-14T09:49:18.658Z" }, - { url = "https://files.pythonhosted.org/packages/be/73/62129609d6ef33987351297d052d25ff042d2d9a3876767915e8dc75d183/pyobjc_framework_fsevents-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:028f6a3195c6a00ca29baef31019cb2ca0c54e799072f0f0246b391dc6c4c1d3", size = 13495, upload-time = "2025-11-14T09:49:20.545Z" }, -] - -[[package]] -name = "pyobjc-framework-fskit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/55/d00246d6e6d9756e129e1d94bc131c99eece2daa84b2696f6442b8a22177/pyobjc_framework_fskit-12.1.tar.gz", hash = "sha256:ec54e941cdb0b7d800616c06ca76a93685bd7119b8aa6eb4e7a3ee27658fc7ba", size = 42372, upload-time = "2025-11-14T10:15:30.411Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/a9/0c47469fe80fa14bc698bb0a5b772b44283cc3aca0f67e7f70ab45e09b24/pyobjc_framework_fskit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:50972897adea86508cfee33ec4c23aa91dede97e9da1640ea2fe74702b065be1", size = 20250, upload-time = "2025-11-14T09:49:28.065Z" }, - { url = "https://files.pythonhosted.org/packages/ce/99/eb30b8b99a4d62ff90b8aa66c6074bf6e2732705a3a8f086ba623fcc642f/pyobjc_framework_fskit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:528b988ea6af1274c81ff698f802bb55a12e32633862919dd4b303ec3b941fae", size = 20258, upload-time = "2025-11-14T09:49:30.893Z" }, - { url = "https://files.pythonhosted.org/packages/50/b6/0579127ff0ad03f6b8f26a7e856e5c9998c9b0efb7ac944b27e23136acf7/pyobjc_framework_fskit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:55e3e00e51bc33d43ed57efb9ceb252abfceba0bd563dae07c7b462da7add849", size = 20491, upload-time = "2025-11-14T09:49:33.249Z" }, - { url = "https://files.pythonhosted.org/packages/7f/4a/10a5d0a35ab18129289e0dfa2ab56469af2f1a9b2c8eeccd814d9c171e63/pyobjc_framework_fskit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:d856df1b12ef79803e11904571411ffe5720ceb8840f489ca7ec977c1d789e57", size = 20291, upload-time = "2025-11-14T09:49:35.636Z" }, - { url = "https://files.pythonhosted.org/packages/35/0b/cd618c1ea92f2bc8450bc3caa9c3f01ab54536a8d437b4df22f075b9d654/pyobjc_framework_fskit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1fc9ccf7a0f483ce98274ed89bc91226c3f1aaa32cb380b4fdd8b258317cc8fb", size = 20538, upload-time = "2025-11-14T09:49:37.962Z" }, -] - -[[package]] -name = "pyobjc-framework-gamecenter" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d2/f8/b5fd86f6b722d4259228922e125b50e0a6975120a1c4d957e990fb84e42c/pyobjc_framework_gamecenter-12.1.tar.gz", hash = "sha256:de4118f14c9cf93eb0316d49da410faded3609ce9cd63425e9ef878cebb7ea72", size = 31473, upload-time = "2025-11-14T10:15:33.38Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/ee/b496cc4248c5b901e159d6d9a437da9b86a3105fc3999a66744ba2b2c884/pyobjc_framework_gamecenter-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e8d6d10b868be7c00c2d5a0944cc79315945735dcf17eaa3fec1a7986d26be9b", size = 18868, upload-time = "2025-11-14T09:49:44.767Z" }, - { url = "https://files.pythonhosted.org/packages/cd/b4/d89eaeae9057e5fc6264ad47247739160650dfd02b1e85a84d45036f25f9/pyobjc_framework_gamecenter-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:16c885eae6ad29abb8d3ad17a9068c920f778622bff5401df31842fdbcebdd84", size = 18873, upload-time = "2025-11-14T09:49:47.072Z" }, - { url = "https://files.pythonhosted.org/packages/20/17/e5fe5a8f80288e61d70b6f9ccf05cffe6f1809736c11f172570af24216f6/pyobjc_framework_gamecenter-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9112d7aa8807d4b18a3f7190f310d60380640faaf405a1d0a9fd066c6420ae5b", size = 19154, upload-time = "2025-11-14T09:49:49.26Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fb/5b4f1bd82e324f2fb598d3131f626744b6fbc9f87feda894bc854058de66/pyobjc_framework_gamecenter-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c452f65aaa102c11196193f44d41061ce33a66be2e9cf79d890d8eb611f84aa9", size = 18923, upload-time = "2025-11-14T09:49:51.474Z" }, - { url = "https://files.pythonhosted.org/packages/22/93/96305e0e96610a489604d15746a14f648b70dad44a8a7ca8a89ec31e12f4/pyobjc_framework_gamecenter-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:55352b0b4cf6803b3489a9dc63b6c177df462fbc4fee7902a4576af067e41714", size = 19214, upload-time = "2025-11-14T09:49:53.675Z" }, -] - -[[package]] -name = "pyobjc-framework-gamecontroller" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/21/14/353bb1fe448cd833839fd199ab26426c0248088753e63c22fe19dc07530f/pyobjc_framework_gamecontroller-12.1.tar.gz", hash = "sha256:64ed3cc4844b67f1faeb540c7cc8d512c84f70b3a4bafdb33d4663a2b2a2b1d8", size = 54554, upload-time = "2025-11-14T10:15:37.591Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/28/9f03d0ef7c78340441f78b19fb2d2c952af04a240da5ed30c7cf2d0d0f4e/pyobjc_framework_gamecontroller-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:878aa6590c1510e91bfc8710d6c880e7a8f3656a7b7b6f4f3af487a6f677ccd5", size = 20949, upload-time = "2025-11-14T09:50:01.608Z" }, - { url = "https://files.pythonhosted.org/packages/9d/7c/4553f7c37eedef4cd2e6f0d9b6c63da556ed2fbe7dd2a79735654e082932/pyobjc_framework_gamecontroller-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2105b4309222e538b9bccf906d24f083c3cbf1cd1c18b3ae6876e842e84d2163", size = 20956, upload-time = "2025-11-14T09:50:04.123Z" }, - { url = "https://files.pythonhosted.org/packages/ad/ed/19e27404ce87256642431a60914ef2cb0578142727981714d494970e21c3/pyobjc_framework_gamecontroller-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a772cc9fbe09bcc601abcc36855a70cbad4640bd3349c1d611c09fcc7e45b73b", size = 21226, upload-time = "2025-11-14T09:50:06.462Z" }, - { url = "https://files.pythonhosted.org/packages/38/0a/4386a2436b7ae4df62c30b8a96d89be15c6c9e302b89fc7e7cd19ba3429c/pyobjc_framework_gamecontroller-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:3404a6488bb498989304aa87ce6217c973505a627b6eb9ae7884fd804569b8e4", size = 21005, upload-time = "2025-11-14T09:50:08.894Z" }, - { url = "https://files.pythonhosted.org/packages/c1/94/7e45309ddb873b7ea4ac172e947021a9ecdb7dc0b58415d1574abcd87cce/pyobjc_framework_gamecontroller-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:f4a16cd469aec142ec8e199d52a797f771441b3ea7198d21f6d75c2cc218b4e6", size = 21266, upload-time = "2025-11-14T09:50:11.271Z" }, -] - -[[package]] -name = "pyobjc-framework-gamekit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/7b/d625c0937557f7e2e64200fdbeb867d2f6f86b2f148b8d6bfe085e32d872/pyobjc_framework_gamekit-12.1.tar.gz", hash = "sha256:014d032c3484093f1409f8f631ba8a0fd2ff7a3ae23fd9d14235340889854c16", size = 63833, upload-time = "2025-11-14T10:15:42.842Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/05/1c49e1030dc9f2812fa8049442158be76c32f271075f4571f94e4389ea86/pyobjc_framework_gamekit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2eee796d5781157f2c5684f7ef4c2a7ace9d9b408a26a9e7e92e8adf5a3f63d7", size = 22493, upload-time = "2025-11-14T09:50:19.129Z" }, - { url = "https://files.pythonhosted.org/packages/8a/7d/65b16b18dc15283d6f56df5ebf30ae765eaf1f8e67e6eb30539581fe9749/pyobjc_framework_gamekit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ad14393ac496a4cb8008b6172d536f5c07fc11bb7b00fb541b044681cf9e4a34", size = 22505, upload-time = "2025-11-14T09:50:21.989Z" }, - { url = "https://files.pythonhosted.org/packages/98/19/433595ff873684e0df73067b32aba6fc4b360d3ed552444115285a5d969a/pyobjc_framework_gamekit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:97e41b4800be30cb3e6a88007b6f741cb18935467d1631537ac23b918659900e", size = 22798, upload-time = "2025-11-14T09:50:24.583Z" }, - { url = "https://files.pythonhosted.org/packages/05/39/4a9a51cae1ced9d0f74ca6c68e7304b9b1c2d184fed11b736947535ba59f/pyobjc_framework_gamekit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:14080fdea98ec01c3e06260f1f5b31aaf59c78c2872fe8b843e17fd0ce151fa4", size = 22536, upload-time = "2025-11-14T09:50:27.675Z" }, - { url = "https://files.pythonhosted.org/packages/0e/0f/282f10f5ebd427ec1774ef639a467e5b26c5174f473e8da24ac084139a7c/pyobjc_framework_gamekit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9867991539dfc70b52f0ee8ce19bc661d0706c7f64c35417e97ca7c90e3158c0", size = 22845, upload-time = "2025-11-14T09:50:30.287Z" }, -] - -[[package]] -name = "pyobjc-framework-gameplaykit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-spritekit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e2/11/c310bbc2526f95cce662cc1f1359bb11e2458eab0689737b4850d0f6acb7/pyobjc_framework_gameplaykit-12.1.tar.gz", hash = "sha256:935ebd806d802888969357946245d35a304c530c86f1ffe584e2cf21f0a608a8", size = 41511, upload-time = "2025-11-14T10:15:46.529Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/1f/e5fe404f92ec0f9c8c37b00d6cb3ba96ee396c7f91b0a41a39b64bfc2743/pyobjc_framework_gameplaykit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:309b0d7479f702830c9be92dbe5855ac2557a9d23f05f063caf9d9fdb85ff5f0", size = 13150, upload-time = "2025-11-14T09:50:36.884Z" }, - { url = "https://files.pythonhosted.org/packages/08/c9/d90505bed51b487d7a8eff54a51dda0d9b8e2d76740a99924b5067b58062/pyobjc_framework_gameplaykit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:947911902e0caf1d82dedae8842025891d57e91504714a7732dc7c4f80d486a1", size = 13164, upload-time = "2025-11-14T09:50:39.251Z" }, - { url = "https://files.pythonhosted.org/packages/ad/42/9d5ac9a4398f1d1566ce83f16f68aeaa174137de78bec4515ed927c24530/pyobjc_framework_gameplaykit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:3218de7a56ac63a47ab7c50ce30592d626759196c937d20426a0ea74091e0614", size = 13383, upload-time = "2025-11-14T09:50:41.227Z" }, - { url = "https://files.pythonhosted.org/packages/38/a5/e10365b7287eb4a8e83275f04942d085f8e87da0a65c375df14a78df23c8/pyobjc_framework_gameplaykit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:786036bdf266faf196b29b23e123faf76df5f3e90f113e2a7cdd4d04af071dc2", size = 13170, upload-time = "2025-11-14T09:50:43.238Z" }, - { url = "https://files.pythonhosted.org/packages/a3/65/eb00ab56a00f048d1638bb819f61d3e8221d72088947070ac9367bc17efa/pyobjc_framework_gameplaykit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d58c0cc671ac8b80a4bf702efabbb9c0a42020999b87efed162b71830db005a9", size = 13363, upload-time = "2025-11-14T09:50:45.394Z" }, -] - -[[package]] -name = "pyobjc-framework-gamesave" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1b/1f/8d05585c844535e75dbc242dd6bdfecfc613d074dcb700362d1c908fb403/pyobjc_framework_gamesave-12.1.tar.gz", hash = "sha256:eb731c97aa644e78a87838ed56d0e5bdbaae125bdc8854a7772394877312cc2e", size = 12654, upload-time = "2025-11-14T10:15:48.344Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/59/ec/93d48cb048a1b35cea559cc9261b07f0d410078b3af029121302faa410d0/pyobjc_framework_gamesave-12.1-py2.py3-none-any.whl", hash = "sha256:432e69f8404be9290d42c89caba241a3156ed52013947978ac54f0f032a14ffd", size = 3689, upload-time = "2025-11-14T09:50:47.263Z" }, -] - -[[package]] -name = "pyobjc-framework-healthkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/af/67/436630d00ba1028ea33cc9df2fc28e081481433e5075600f2ea1ff00f45e/pyobjc_framework_healthkit-12.1.tar.gz", hash = "sha256:29c5e5de54b41080b7a4b0207698ac6f600dcb9149becc9c6b3a69957e200e5c", size = 91802, upload-time = "2025-11-14T10:15:54.661Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/65/87/bb1c438de51c4fa733a99ce4d3301e585f14d7efd94031a97707c0be2b46/pyobjc_framework_healthkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:15b6fc958ff5de42888b18dffdec839cb36d2dd8b82076ed2f21a51db5271109", size = 20799, upload-time = "2025-11-14T09:50:54.531Z" }, - { url = "https://files.pythonhosted.org/packages/40/f8/4bbaf71a11a99649a4aa9f4ac28d94a2bf357cd4c88fba91439000301cf0/pyobjc_framework_healthkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c57ba8e3cce620665236d9f6b77482c9cfb16fe3372c8b6bbabc50222fb1b790", size = 20812, upload-time = "2025-11-14T09:50:57.238Z" }, - { url = "https://files.pythonhosted.org/packages/e9/ef/4461f34f42e8f78b941161df7045d27e48d73d203847a21921b5a36ffe68/pyobjc_framework_healthkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b2a0890d920015b40afe8ecda6c541840d20b4ae6c7f2daaa9efbaafae8cc1bc", size = 20980, upload-time = "2025-11-14T09:50:59.644Z" }, - { url = "https://files.pythonhosted.org/packages/f2/6f/99933449e0cb8d6424de8e709fe423427efc634f75930885a723debcce11/pyobjc_framework_healthkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:1f10a3abf6d5a326192e96343e7e1d9d16efa0cf4b39266335e385455680bc69", size = 20867, upload-time = "2025-11-14T09:51:02.359Z" }, - { url = "https://files.pythonhosted.org/packages/63/ad/7ea9a3bc54c092efb5dbf9b571dd6a1a064712ce434e80c42e2830f88bb5/pyobjc_framework_healthkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:54f02b673b2ea8ec8cfa17cac0c377435cbf89a15d5539d4699fa8b12abc42de", size = 21039, upload-time = "2025-11-14T09:51:04.699Z" }, -] - -[[package]] -name = "pyobjc-framework-imagecapturecore" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/a1/39347381fc7d3cd5ab942d86af347b25c73f0ddf6f5227d8b4d8f5328016/pyobjc_framework_imagecapturecore-12.1.tar.gz", hash = "sha256:c4776c59f4db57727389d17e1ffd9c567b854b8db52198b3ccc11281711074e5", size = 46397, upload-time = "2025-11-14T10:15:58.541Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/13/632957b284dec3743d73fb30dbdf03793b3cf1b4c62e61e6484d870f3879/pyobjc_framework_imagecapturecore-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a2777e17ff71fb5a327a897e48c5c7b5a561723a80f990d26e6ed5a1b8748816", size = 16012, upload-time = "2025-11-14T09:51:12.058Z" }, - { url = "https://files.pythonhosted.org/packages/f9/32/2d936320147f299d83c14af4eb8e28821d226f2920d2df3f7a3b3daf61dc/pyobjc_framework_imagecapturecore-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2ae57b54e7b92e2efb40b7346e12d7767f42ed2bcf8f050cd9a88a9926a1e387", size = 16025, upload-time = "2025-11-14T09:51:14.387Z" }, - { url = "https://files.pythonhosted.org/packages/09/5a/7bfa64b0561c7eb858dac9b2e0e3a50000e9dc50416451e8ae40b316eb8f/pyobjc_framework_imagecapturecore-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:08f8ed5434ee5cc7605e71227c284c0c3fa0a32a6d83e1862e7870543a65a630", size = 16213, upload-time = "2025-11-14T09:51:16.531Z" }, - { url = "https://files.pythonhosted.org/packages/50/fc/feb035f2866050737f8315958e31cfe2bf5d6d4d046a7268d28b94cd8155/pyobjc_framework_imagecapturecore-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b7a7feeb0b53f5b0e0305c5c41f6b722d5f8cfca506c49678902244cd339ac10", size = 16028, upload-time = "2025-11-14T09:51:18.573Z" }, - { url = "https://files.pythonhosted.org/packages/38/58/58c3d369d90077eff896c234755ac6814b3fa9f00caeca2ec391555b1a22/pyobjc_framework_imagecapturecore-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1fcfcc907673331cc4be3ea63fce6e1346620ac74661a19566dfcdf855bb8eee", size = 16207, upload-time = "2025-11-14T09:51:20.616Z" }, -] - -[[package]] -name = "pyobjc-framework-inputmethodkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5d/b8/d33dd8b7306029bbbd80525bf833fc547e6a223c494bf69a534487283a28/pyobjc_framework_inputmethodkit-12.1.tar.gz", hash = "sha256:f63b6fe2fa7f1412eae63baea1e120e7865e3b68ccfb7d8b0a4aadb309f2b278", size = 23054, upload-time = "2025-11-14T10:16:01.464Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/c2/59bea66405784b25f5d4e821467ba534a0b92dfc98e07257c971e2a8ed73/pyobjc_framework_inputmethodkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0b7d813d46a060572fc0c14ef832e4fe538ebf64e5cab80ee955191792ce0110", size = 9506, upload-time = "2025-11-14T09:51:26.924Z" }, - { url = "https://files.pythonhosted.org/packages/9e/ec/502019d314729e7e82a7fa187dd52b6f99a6097ac0ab6dc675ccd60b5677/pyobjc_framework_inputmethodkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b5c7458082e3f7e8bb115ed10074ad862cc6566da7357540205d3cd1e24e2b9f", size = 9523, upload-time = "2025-11-14T09:51:30.751Z" }, - { url = "https://files.pythonhosted.org/packages/47/68/76a75461de5b9c195a6b5081179578fef7136f19ffc4990f6591cabae591/pyobjc_framework_inputmethodkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a4e782edd8e59b1ea81ea688d27edbf98cc5c8262e081cb772cf8c36c74733df", size = 9694, upload-time = "2025-11-14T09:51:32.616Z" }, - { url = "https://files.pythonhosted.org/packages/76/f8/6915cc42826e1178c18cc9232edda15ef5d1f57950eef8fd6f8752853b9c/pyobjc_framework_inputmethodkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:3b27c166574ad08d196129c979c5eec891cd630d249c75a970e26f3949578cb9", size = 9574, upload-time = "2025-11-14T09:51:34.366Z" }, - { url = "https://files.pythonhosted.org/packages/97/36/6d3debe09cf1fbcb40b15cc29e7cdc04b07a2f14815d0ffcdcb4a3823ead/pyobjc_framework_inputmethodkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1f065cb44041821a1812861e13ee1eca4aee37b57c8de0ce7ffd7e55f7af8907", size = 9746, upload-time = "2025-11-14T09:51:36.034Z" }, -] - -[[package]] -name = "pyobjc-framework-installerplugins" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/60/ca4ab04eafa388a97a521db7d60a812e2f81a3c21c2372587872e6b074f9/pyobjc_framework_installerplugins-12.1.tar.gz", hash = "sha256:1329a193bd2e92a2320a981a9a421a9b99749bade3e5914358923e94fe995795", size = 25277, upload-time = "2025-11-14T10:16:04.379Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/99/1f/31dca45db3342882a628aa1b27707a283d4dc7ef558fddd2533175a0661a/pyobjc_framework_installerplugins-12.1-py2.py3-none-any.whl", hash = "sha256:d2201c81b05bdbe0abf0af25db58dc230802573463bea322f8b2863e37b511d5", size = 4813, upload-time = "2025-11-14T09:51:37.836Z" }, -] - -[[package]] -name = "pyobjc-framework-instantmessage" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d4/67/66754e0d26320ba24a33608ca94d3f38e60ee6b2d2e094cb6269b346fdd4/pyobjc_framework_instantmessage-12.1.tar.gz", hash = "sha256:f453118d5693dc3c94554791bd2aaafe32a8b03b0e3d8ec3934b44b7fdd1f7e7", size = 31217, upload-time = "2025-11-14T10:16:07.693Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/38/6ae95b5c87d887c075bd5f4f7cca3d21dafd0a77cfdde870e87ca17579eb/pyobjc_framework_instantmessage-12.1-py2.py3-none-any.whl", hash = "sha256:cd91d38e8f356afd726b6ea8c235699316ea90edfd3472965c251efbf4150bc9", size = 5436, upload-time = "2025-11-14T09:51:39.557Z" }, -] - -[[package]] -name = "pyobjc-framework-intents" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/a1/3bab6139e94b97eca098e1562f5d6840e3ff10ea1f7fd704a17111a97d5b/pyobjc_framework_intents-12.1.tar.gz", hash = "sha256:bd688c3ab34a18412f56e459e9dae29e1f4152d3c2048fcacdef5fc49dfb9765", size = 132262, upload-time = "2025-11-14T10:16:16.428Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/90/e9489492ae90b4c1ffd02c1221c0432b8768d475787e7887f79032c2487a/pyobjc_framework_intents-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0ea9f3e79bf4baf6c7b0fd2d2797184ed51a372bf7f32974b4424f9bd067ef50", size = 32156, upload-time = "2025-11-14T09:51:49.438Z" }, - { url = "https://files.pythonhosted.org/packages/74/83/6b03ac6d5663be41d76ab69412a21f94eff69c67ffa13516a91e4b946890/pyobjc_framework_intents-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1da8d1501c8c85198dfbc4623ea18db96077f9947f6e1fe5ffa2ed06935e8a3b", size = 32168, upload-time = "2025-11-14T09:51:52.888Z" }, - { url = "https://files.pythonhosted.org/packages/d9/f8/1fd0a75de415d335a1aa43e9c86e468960b3a4d969a87aa4a70084452277/pyobjc_framework_intents-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:50ab244f2a9ad4c94bbc1dd81421f8553f59121d4e0ad0c894a927a878319843", size = 32413, upload-time = "2025-11-14T09:51:56.057Z" }, - { url = "https://files.pythonhosted.org/packages/42/8a/d319b1a014dcf52cd46c2c956bed0e66f7c80253acaebd1ec5920b01bf41/pyobjc_framework_intents-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5c50c336418a3ba8fdfa5b5d12e46dca290e4321fb9844245af4a32b11cf6563", size = 32191, upload-time = "2025-11-14T09:51:59.097Z" }, - { url = "https://files.pythonhosted.org/packages/38/cd/b5ce5d389a3ca767b3d0ce70daf35c52cb35775e4a285ed4bedaa89ab75e/pyobjc_framework_intents-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:03cbccec0380a431bc291725af0fcbaf61ea1bb1301a70cb267c8ecf2d04d608", size = 32481, upload-time = "2025-11-14T09:52:02.16Z" }, -] - -[[package]] -name = "pyobjc-framework-intentsui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-intents" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/cf/f0e385b9cfbf153d68efe8d19e5ae672b59acbbfc1f9b58faaefc5ec8c9e/pyobjc_framework_intentsui-12.1.tar.gz", hash = "sha256:16bdf4b7b91c0d1ec9d5513a1182861f1b5b7af95d4f4218ff7cf03032d57f99", size = 19784, upload-time = "2025-11-14T10:16:18.716Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/17/06812542a9028f5b2dcce56f52f25633c08b638faacd43bad862aad1b41d/pyobjc_framework_intentsui-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:cb894fcc4c9ea613a424dcf6fb48142d51174559b82cfdafac8cb47555c842cf", size = 8983, upload-time = "2025-11-14T09:52:07.667Z" }, - { url = "https://files.pythonhosted.org/packages/57/af/4dc8b6f714ba1bd9cf0218da98c49ece5dcee4e0593b59196ec5aa85e07c/pyobjc_framework_intentsui-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:369a88db1ff3647e4d8cf38d315f1e9b381fc7732d765b08994036f9d330f57d", size = 9004, upload-time = "2025-11-14T09:52:09.625Z" }, - { url = "https://files.pythonhosted.org/packages/18/ab/794ed92dcf955dc2d0a0dcfbc384e087864f2dacd330d59d1185f8403353/pyobjc_framework_intentsui-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:8742e9237ef2df8dbb1566cdc77e4d747b2693202f438d49435e0c3c91eaa709", size = 9177, upload-time = "2025-11-14T09:52:11.26Z" }, - { url = "https://files.pythonhosted.org/packages/68/07/61dc855f6eeaf75d274ad4b66006e05b0bef2138a6a559c60f0bc59d32ea/pyobjc_framework_intentsui-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:d01222760005421324c3892b6b98c5b4295828a6b157a1fc410f63eb336b2d97", size = 9054, upload-time = "2025-11-14T09:52:12.896Z" }, - { url = "https://files.pythonhosted.org/packages/76/fa/d6dabff68951b66f2d7d8c8aa651f2a139a1ca0be556e1e64c6bdd7be18b/pyobjc_framework_intentsui-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:547aef7233b6c7495b3c679aa779f01368fc992883732ade065523235f07fa3b", size = 9248, upload-time = "2025-11-14T09:52:14.936Z" }, -] - -[[package]] -name = "pyobjc-framework-iobluetooth" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e4/aa/ca3944bbdfead4201b4ae6b51510942c5a7d8e5e2dc3139a071c74061fdf/pyobjc_framework_iobluetooth-12.1.tar.gz", hash = "sha256:8a434118812f4c01dfc64339d41fe8229516864a59d2803e9094ee4cbe2b7edd", size = 155241, upload-time = "2025-11-14T10:16:28.896Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/b6/933b56afb5e84c3c35c074c9e30d7b701c6038989d4867867bdaa7ab618b/pyobjc_framework_iobluetooth-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:111a6e54be9e9dcf77fa2bf84fdac09fae339aa33087d8647ea7ffbd34765d4c", size = 40439, upload-time = "2025-11-14T09:52:26.071Z" }, - { url = "https://files.pythonhosted.org/packages/15/6f/5e165daaf3b637d37fee50f42beda62ab3d5e6e99b1d84c4af4700d39d01/pyobjc_framework_iobluetooth-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2ee0d4fdddf871fb89c49033495ae49973cc8b0e8de50c2e60c92355ce3bea86", size = 40452, upload-time = "2025-11-14T09:52:29.68Z" }, - { url = "https://files.pythonhosted.org/packages/37/bd/7cc5f01fbf573112059766c94535ae3f9c044d6e0cf49c599e490224db58/pyobjc_framework_iobluetooth-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0cd2ea9384e93913703bf40641196a930af83c2f6f62f59f8606b7162fe1caa3", size = 40659, upload-time = "2025-11-14T09:52:33.299Z" }, - { url = "https://files.pythonhosted.org/packages/ef/58/4553d846513840622cd56ef715543f922d7d5ddfbe38316dbc7e43f23832/pyobjc_framework_iobluetooth-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a14506046ad9403ea95c75c1dd248167f41aef4aed62f50b567bf2482056ebf5", size = 40443, upload-time = "2025-11-14T09:52:37.21Z" }, - { url = "https://files.pythonhosted.org/packages/8a/da/4846a76bd9cb73fb1e562d1fb7044bd3df15a289ab986bcaf053a65dbb88/pyobjc_framework_iobluetooth-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:42ec9a40e7234a00f434489c8b18458bc5deb6ea6938daba50b9527100e21f0c", size = 40649, upload-time = "2025-11-14T09:52:40.793Z" }, -] - -[[package]] -name = "pyobjc-framework-iobluetoothui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-iobluetooth" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/39/31d9a4e8565a4b1ec0a9ad81480dc0879f3df28799eae3bc22d1dd53705d/pyobjc_framework_iobluetoothui-12.1.tar.gz", hash = "sha256:81f8158bdfb2966a574b6988eb346114d6a4c277300c8c0a978c272018184e6f", size = 16495, upload-time = "2025-11-14T10:16:31.212Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/c9/69aeda0cdb5d25d30dc4596a1c5b464fc81b5c0c4e28efc54b7e11bde51c/pyobjc_framework_iobluetoothui-12.1-py2.py3-none-any.whl", hash = "sha256:a6d8ab98efa3029130577a57ee96b183c35c39b0f1c53a7534f8838260fab993", size = 4045, upload-time = "2025-11-14T09:52:42.201Z" }, -] - -[[package]] -name = "pyobjc-framework-iosurface" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/07/61/0f12ad67a72d434e1c84b229ec760b5be71f53671ee9018593961c8bfeb7/pyobjc_framework_iosurface-12.1.tar.gz", hash = "sha256:4b9d0c66431aa296f3ca7c4f84c00dc5fc961194830ad7682fdbbc358fa0db55", size = 17690, upload-time = "2025-11-14T10:16:33.282Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ad/793d98a7ed9b775dc8cce54144cdab0df1808a1960ee017e46189291a8f3/pyobjc_framework_iosurface-12.1-py2.py3-none-any.whl", hash = "sha256:e784e248397cfebef4655d2c0025766d3eaa4a70474e363d084fc5ce2a4f2a3f", size = 4902, upload-time = "2025-11-14T09:52:43.899Z" }, -] - -[[package]] -name = "pyobjc-framework-ituneslibrary" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/46/d9bcec88675bf4ee887b9707bd245e2a793e7cb916cf310f286741d54b1f/pyobjc_framework_ituneslibrary-12.1.tar.gz", hash = "sha256:7f3aa76c4d05f6fa6015056b88986cacbda107c3f29520dd35ef0936c7367a6e", size = 23730, upload-time = "2025-11-14T10:16:36.127Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/92/b598694a1713ee46f45c4bfb1a0425082253cbd2b1caf9f8fd50f292b017/pyobjc_framework_ituneslibrary-12.1-py2.py3-none-any.whl", hash = "sha256:fb678d7c3ff14c81672e09c015e25880dac278aa819971f4d5f75d46465932ef", size = 5205, upload-time = "2025-11-14T09:52:45.733Z" }, -] - -[[package]] -name = "pyobjc-framework-kernelmanagement" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0a/7e/ecbac119866e8ac2cce700d7a48a4297946412ac7cbc243a7084a6582fb1/pyobjc_framework_kernelmanagement-12.1.tar.gz", hash = "sha256:488062893ac2074e0c8178667bf864a21f7909c11111de2f6a10d9bc579df59d", size = 11773, upload-time = "2025-11-14T10:16:38.216Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/32/04325a20f39d88d6d712437e536961a9e6a4ec19f204f241de6ed54d1d84/pyobjc_framework_kernelmanagement-12.1-py2.py3-none-any.whl", hash = "sha256:926381bfbfbc985c3e6dfcb7004af21bb16ff66ecbc08912b925989a705944ff", size = 3704, upload-time = "2025-11-14T09:52:47.268Z" }, -] - -[[package]] -name = "pyobjc-framework-latentsemanticmapping" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/3c/b621dac54ae8e77ac25ee75dd93e310e2d6e0faaf15b8da13513258d6657/pyobjc_framework_latentsemanticmapping-12.1.tar.gz", hash = "sha256:f0b1fa823313eefecbf1539b4ed4b32461534b7a35826c2cd9f6024411dc9284", size = 15526, upload-time = "2025-11-14T10:16:40.149Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/8e/74a7eb29b545f294485cd3cf70557b4a35616555fe63021edbb3e0ea4c20/pyobjc_framework_latentsemanticmapping-12.1-py2.py3-none-any.whl", hash = "sha256:7d760213b42bc8b1bc1472e1873c0f78ee80f987225978837b1fecdceddbdbf4", size = 5471, upload-time = "2025-11-14T09:52:48.939Z" }, -] - -[[package]] -name = "pyobjc-framework-launchservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-coreservices" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/37/d0/24673625922b0ad21546be5cf49e5ec1afaa4553ae92f222adacdc915907/pyobjc_framework_launchservices-12.1.tar.gz", hash = "sha256:4d2d34c9bd6fb7f77566155b539a2c70283d1f0326e1695da234a93ef48352dc", size = 20470, upload-time = "2025-11-14T10:16:42.499Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/af/9a0aebaab4c15632dc8fcb3669c68fa541a3278d99541d9c5f966fbc0909/pyobjc_framework_launchservices-12.1-py2.py3-none-any.whl", hash = "sha256:e63e78fceeed4d4dc807f9dabd5cf90407e4f552fab6a0d75a8d0af63094ad3c", size = 3905, upload-time = "2025-11-14T09:52:50.71Z" }, -] - -[[package]] -name = "pyobjc-framework-libdispatch" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/26/e8/75b6b9b3c88b37723c237e5a7600384ea2d84874548671139db02e76652b/pyobjc_framework_libdispatch-12.1.tar.gz", hash = "sha256:4035535b4fae1b5e976f3e0e38b6e3442ffea1b8aa178d0ca89faa9b8ecdea41", size = 38277, upload-time = "2025-11-14T10:16:46.235Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/6f/96e15c7b2f7b51fc53252216cd0bed0c3541bc0f0aeb32756fefd31bed7d/pyobjc_framework_libdispatch-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0e9570d7a9a3136f54b0b834683bf3f206acd5df0e421c30f8fd4f8b9b556789", size = 15650, upload-time = "2025-11-14T09:52:59.284Z" }, - { url = "https://files.pythonhosted.org/packages/38/3a/d85a74606c89b6b293782adfb18711026ff79159db20fc543740f2ac0bc7/pyobjc_framework_libdispatch-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:58ffce5e6bcd7456b4311009480b195b9f22107b7682fb0835d4908af5a68ad0", size = 15668, upload-time = "2025-11-14T09:53:01.354Z" }, - { url = "https://files.pythonhosted.org/packages/cc/40/49b1c1702114ee972678597393320d7b33f477e9d24f2a62f93d77f23dfb/pyobjc_framework_libdispatch-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e9f49517e253716e40a0009412151f527005eec0b9a2311ac63ecac1bdf02332", size = 15938, upload-time = "2025-11-14T09:53:03.461Z" }, - { url = "https://files.pythonhosted.org/packages/59/d8/7d60a70fc1a546c6cb482fe0595cb4bd1368d75c48d49e76d0bc6c0a2d0f/pyobjc_framework_libdispatch-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:0ebfd9e4446ab6528126bff25cfb09e4213ddf992b3208978911cfd3152e45f5", size = 15693, upload-time = "2025-11-14T09:53:05.531Z" }, - { url = "https://files.pythonhosted.org/packages/99/32/15e08a0c4bb536303e1568e2ba5cae1ce39a2e026a03aea46173af4c7a2d/pyobjc_framework_libdispatch-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:23fc9915cba328216b6a736c7a48438a16213f16dfb467f69506300b95938cc7", size = 15976, upload-time = "2025-11-14T09:53:07.936Z" }, -] - -[[package]] -name = "pyobjc-framework-libxpc" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/16/e4/364db7dc26f235e3d7eaab2f92057f460b39800bffdec3128f113388ac9f/pyobjc_framework_libxpc-12.1.tar.gz", hash = "sha256:e46363a735f3ecc9a2f91637750623f90ee74f9938a4e7c833e01233174af44d", size = 35186, upload-time = "2025-11-14T10:16:49.503Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/7f/fdec72430f90921b154517a6f9bbeefa7bacfb16b91320742eb16a5955c5/pyobjc_framework_libxpc-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ba93e91e9ca79603dd265382e9f80e9bd32309cd09c8ac3e6489fc5b233676c8", size = 19730, upload-time = "2025-11-14T09:53:17.113Z" }, - { url = "https://files.pythonhosted.org/packages/0a/64/c4e2f9a4f92f4d2b84c0e213b4a9410968b5f181f15a764eeb43f92c4eb2/pyobjc_framework_libxpc-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:635520187a6456ad259e40dd04829caeef08561d0a1a0cfd09787ebd281d47b3", size = 19729, upload-time = "2025-11-14T09:53:19.038Z" }, - { url = "https://files.pythonhosted.org/packages/51/c2/654dd2a22b6f505ff706a66117c522029df9449a9a19ca4827af0d16b5b3/pyobjc_framework_libxpc-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:1c36e3e109a95275f90b319161265a7f6a5e0e674938ce49babdf3a64d9fc892", size = 20309, upload-time = "2025-11-14T09:53:22.657Z" }, - { url = "https://files.pythonhosted.org/packages/fc/9d/d66559d9183dae383962c79ca67eaabf7fe9f8bb9f65cf5a4369fbdcdd0e/pyobjc_framework_libxpc-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:bc5eaed7871fab8971631e99151ea0271f64d4059790c9f41a30ae4841f4fd89", size = 19451, upload-time = "2025-11-14T09:53:24.418Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f6/cb5d5e6f83d94cff706dff533423fdf676249ee392dc9ae4acdd0e02d451/pyobjc_framework_libxpc-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c862ed4f79c82e7a246fe49a8fae9e9684a7163512265f1c01790899dc730551", size = 20022, upload-time = "2025-11-14T09:53:26.605Z" }, -] - -[[package]] -name = "pyobjc-framework-linkpresentation" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e3/58/c0c5919d883485ccdb6dccd8ecfe50271d2f6e6ab7c9b624789235ccec5a/pyobjc_framework_linkpresentation-12.1.tar.gz", hash = "sha256:84df6779591bb93217aa8bd82c10e16643441678547d2d73ba895475a02ade94", size = 13330, upload-time = "2025-11-14T10:16:52.169Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/51/226eb45f196f3bf93374713571aae6c8a4760389e1d9435c4a4cc3f38ea4/pyobjc_framework_linkpresentation-12.1-py2.py3-none-any.whl", hash = "sha256:853a84c7b525b77b114a7a8d798aef83f528ed3a6803bda12184fe5af4e79a47", size = 3865, upload-time = "2025-11-14T09:53:28.386Z" }, -] - -[[package]] -name = "pyobjc-framework-localauthentication" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-security" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8d/0e/7e5d9a58bb3d5b79a75d925557ef68084171526191b1c0929a887a553d4f/pyobjc_framework_localauthentication-12.1.tar.gz", hash = "sha256:2284f587d8e1206166e4495b33f420c1de486c36c28c4921d09eec858a699d05", size = 29947, upload-time = "2025-11-14T10:16:54.923Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/93/91761ad4e5fa1c3ec25819865d1ccfbee033987147087bff4fcce67a4dc4/pyobjc_framework_localauthentication-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3af1acd287d830cc7f912f46cde0dab054952bde0adaf66c8e8524311a68d279", size = 10773, upload-time = "2025-11-14T09:53:34.074Z" }, - { url = "https://files.pythonhosted.org/packages/e4/f5/a12c76525e4839c7fc902c6b0f0c441414a4dd9bc9a2d89ae697f6cd8850/pyobjc_framework_localauthentication-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e26e746717f4774cce0568debec711f1d8effc430559ad634ff6b06fefd0a0bf", size = 10792, upload-time = "2025-11-14T09:53:35.876Z" }, - { url = "https://files.pythonhosted.org/packages/5c/ed/2714934b027afc6a99d0d817e42bf482d08c711422795fe777e3cd9ad8be/pyobjc_framework_localauthentication-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02357cddc979aa169782bf09f380aab1c3af475c9eb6ffb07c77084ed10f6a6a", size = 10931, upload-time = "2025-11-14T09:53:37.672Z" }, - { url = "https://files.pythonhosted.org/packages/e6/58/6dfb304103b4cdaee44acd7f5093c07f3053df0cc9648c87876f1e5fc690/pyobjc_framework_localauthentication-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:f8d525ed2ad5cd56e420436187b534454d1f7d1fae6e585df82397d6d92c6e54", size = 10841, upload-time = "2025-11-14T09:53:39.337Z" }, - { url = "https://files.pythonhosted.org/packages/17/af/1c7ce26b46cc978852895017212cf3637d5334274213265234149e0937d4/pyobjc_framework_localauthentication-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:93c5470a9d60b53afa0faf31d95dc8d6fc3a7ff85c425ab157ea491b6dc3af39", size = 10975, upload-time = "2025-11-14T09:53:41.177Z" }, -] - -[[package]] -name = "pyobjc-framework-localauthenticationembeddedui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-localauthentication" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/31/20/83ab4180e29b9a4a44d735c7f88909296c6adbe6250e8e00a156aff753e1/pyobjc_framework_localauthenticationembeddedui-12.1.tar.gz", hash = "sha256:a15ec44bf2769c872e86c6b550b6dd4f58d4eda40ad9ff00272a67d279d1d4e9", size = 13611, upload-time = "2025-11-14T10:16:57.145Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/30/7d/0d46639c7a26b6af928ab4c822cd28b733791e02ac28cc84c3014bcf7dc7/pyobjc_framework_localauthenticationembeddedui-12.1-py2.py3-none-any.whl", hash = "sha256:a7ce7b56346597b9f4768be61938cbc8fc5b1292137225b6c7f631b9cde97cd7", size = 3991, upload-time = "2025-11-14T09:53:42.958Z" }, -] - -[[package]] -name = "pyobjc-framework-mailkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2a/98/3d9028620c1cd32ff4fb031155aba3b5511e980cdd114dd51383be9cb51b/pyobjc_framework_mailkit-12.1.tar.gz", hash = "sha256:d5574b7259baec17096410efcaacf5d45c7bb5f893d4c25cbb7072369799b652", size = 20996, upload-time = "2025-11-14T10:16:59.449Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/70/8d/3c968b736a3a8bd9d8e870b39b1c772a013eea1b81b89fc4efad9021a6cb/pyobjc_framework_mailkit-12.1-py2.py3-none-any.whl", hash = "sha256:536ac0c4ea3560364cd159a6512c3c18a744a12e4e0883c07df0f8a2ff21e3fe", size = 4871, upload-time = "2025-11-14T09:53:44.697Z" }, -] - -[[package]] -name = "pyobjc-framework-mapkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-corelocation" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/36/bb/2a668203c20e509a648c35e803d79d0c7f7816dacba74eb5ad8acb186790/pyobjc_framework_mapkit-12.1.tar.gz", hash = "sha256:dbc32dc48e821aaa9b4294402c240adbc1c6834e658a07677b7c19b7990533c5", size = 63520, upload-time = "2025-11-14T10:17:04.221Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/00/a3de41cdf3e6cd7a144e38999fe1ea9777ad19e19d863f2da862e7affe7b/pyobjc_framework_mapkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84ad7766271c114bdc423e4e2ff5433e5fc6771a3338b5f8e4b54d0340775800", size = 22518, upload-time = "2025-11-14T09:53:52.727Z" }, - { url = "https://files.pythonhosted.org/packages/5e/f1/db2aa9fa44669b9c060a3ae02d5661052a05868ccba1674543565818fdaf/pyobjc_framework_mapkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ea210ba88bef2468adb5c8303071d86118d630bf37a29d28cf236c13c3bb85ad", size = 22539, upload-time = "2025-11-14T09:53:55.543Z" }, - { url = "https://files.pythonhosted.org/packages/c1/e4/7dd9f7333eea7f4666274f568cac03e4687b442c9b20622f244497700177/pyobjc_framework_mapkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:dfee615b73bb687101f08e7fd839eea2aa8b241563ad4cabbcb075d12f598266", size = 22712, upload-time = "2025-11-14T09:53:58.159Z" }, - { url = "https://files.pythonhosted.org/packages/06/ef/f802b9f0a620039b277374ba36702a0e359fe54e8526dcd90d2b061d2594/pyobjc_framework_mapkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c2f47e813e81cb13e48343108ea3185a856c13bab1cb17e76d0d87568e18459b", size = 22562, upload-time = "2025-11-14T09:54:00.735Z" }, - { url = "https://files.pythonhosted.org/packages/fd/6b/aae01ed3322326e034113140d41a6d7529d2a298d9da3ce1f89184fbeb95/pyobjc_framework_mapkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:59a746ac2d4bb32fca301325430b37cde7959213ce1b6c3e30fa40d6085bf75a", size = 22775, upload-time = "2025-11-14T09:54:03.354Z" }, -] - -[[package]] -name = "pyobjc-framework-mediaaccessibility" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e0/10/dc1007e56944ed2e981e69e7b2fed2b2202c79b0d5b742b29b1081d1cbdd/pyobjc_framework_mediaaccessibility-12.1.tar.gz", hash = "sha256:cc4e3b1d45e84133d240318d53424eff55968f5c6873c2c53267598853445a3f", size = 16325, upload-time = "2025-11-14T10:17:07.454Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/0c/7fb5462561f59d739192c6d02ba0fd36ad7841efac5a8398a85a030ef7fc/pyobjc_framework_mediaaccessibility-12.1-py2.py3-none-any.whl", hash = "sha256:2ff8845c97dd52b0e5cf53990291e6d77c8a73a7aac0e9235d62d9a4256916d1", size = 4800, upload-time = "2025-11-14T09:54:05.04Z" }, -] - -[[package]] -name = "pyobjc-framework-mediaextension" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-avfoundation" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coremedia" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d6/aa/1e8015711df1cdb5e4a0aa0ed4721409d39971ae6e1e71915e3ab72423a3/pyobjc_framework_mediaextension-12.1.tar.gz", hash = "sha256:44409d63cc7d74e5724a68e3f9252cb62fd0fd3ccf0ca94c6a33e5c990149953", size = 39425, upload-time = "2025-11-14T10:17:11.486Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/ed/99038bcf72ec68e452709af10a087c1377c2d595ba4e66d7a2b0775145d2/pyobjc_framework_mediaextension-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:442bc3a759efb5c154cb75d643a5e182297093533fcdd1c24be6f64f68b93371", size = 38973, upload-time = "2025-11-14T09:54:16.701Z" }, - { url = "https://files.pythonhosted.org/packages/01/df/7ecdbac430d2d2844fb2145e26f3e87a8a7692fa669d0629d90f32575991/pyobjc_framework_mediaextension-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0f3bdca0eb11923efc1e3b95beb1e6e01c675fd7809ed7ef0b475334e3562931", size = 38991, upload-time = "2025-11-14T09:54:20.316Z" }, - { url = "https://files.pythonhosted.org/packages/fc/98/88ac2edeb69bde3708ef3f7b6434f810ba89321d8375914ad642c9a575b0/pyobjc_framework_mediaextension-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0101b8495051bac9791a0488530386eefe9c722477a5239c5bd208967d0eaa67", size = 39198, upload-time = "2025-11-14T09:54:23.806Z" }, - { url = "https://files.pythonhosted.org/packages/4a/f0/fcff5206bb1a7ce89b9923ceb3215af767fd3c91dafc9d176ba08d6a3f30/pyobjc_framework_mediaextension-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:4f66719c97f508c619368377d768266c58cc783cf5fc51bd9d8e5e0cad0c824c", size = 38980, upload-time = "2025-11-14T09:54:27.413Z" }, - { url = "https://files.pythonhosted.org/packages/26/30/bdea26fe2ca33260edcbd93f212e0141c6e145586d53c58fac4416e0135f/pyobjc_framework_mediaextension-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:eef6ab5104fdfb257e17a73c2e7c11b0db09a94ced24f2a4948e1d593ec6200e", size = 39191, upload-time = "2025-11-14T09:54:30.798Z" }, -] - -[[package]] -name = "pyobjc-framework-medialibrary" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/34/e9/848ebd02456f8fdb41b42298ec585bfed5899dbd30306ea5b0a7e4c4b341/pyobjc_framework_medialibrary-12.1.tar.gz", hash = "sha256:690dcca09b62511df18f58e8566cb33d9652aae09fe63a83f594bd018b5edfcd", size = 15995, upload-time = "2025-11-14T10:17:15.45Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/cd/eeaf8585a343fda5b8cf3b8f144c872d1057c845202098b9441a39b76cb0/pyobjc_framework_medialibrary-12.1-py2.py3-none-any.whl", hash = "sha256:1f03ad6802a5c6e19ee3208b065689d3ec79defe1052cb80e00f54e1eff5f2a0", size = 4361, upload-time = "2025-11-14T09:54:32.259Z" }, -] - -[[package]] -name = "pyobjc-framework-mediaplayer" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-avfoundation" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/f0/851f6f47e11acbd62d5f5dcb8274afc969135e30018591f75bf3cbf6417f/pyobjc_framework_mediaplayer-12.1.tar.gz", hash = "sha256:5ef3f669bdf837d87cdb5a486ec34831542360d14bcba099c7c2e0383380794c", size = 35402, upload-time = "2025-11-14T10:17:18.97Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/58/c0/038ee3efd286c0fbc89c1e0cb688f4670ed0e5803aa36e739e79ffc91331/pyobjc_framework_mediaplayer-12.1-py2.py3-none-any.whl", hash = "sha256:85d9baec131807bfdf0f4c24d4b943e83cce806ab31c95c7e19c78e3fb7eefc8", size = 7120, upload-time = "2025-11-14T09:54:33.901Z" }, -] - -[[package]] -name = "pyobjc-framework-mediatoolbox" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/71/be5879380a161f98212a336b432256f307d1dcbaaaeb8ec988aea2ada2cd/pyobjc_framework_mediatoolbox-12.1.tar.gz", hash = "sha256:385b48746a5f08756ee87afc14037e552954c427ed5745d7ece31a21a7bad5ab", size = 22305, upload-time = "2025-11-14T10:17:22.501Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9c/94/d5ee221f2afbc64b2a7074efe25387cd8700e8116518904b28091ea6ad74/pyobjc_framework_mediatoolbox-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d7bcfeeff3fbf7e9e556ecafd8eaed2411df15c52baf134efa7480494e6faf6d", size = 12818, upload-time = "2025-11-14T09:54:41.251Z" }, - { url = "https://files.pythonhosted.org/packages/ca/30/79aa0010b30f3c54c68673d00f06f45ef28f5093ff1e927d68b5376ea097/pyobjc_framework_mediatoolbox-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1529a754cdb5b32797d297c0bf6279c7c14a3f7088f2dfbded09edcbfda19838", size = 12830, upload-time = "2025-11-14T09:54:43.191Z" }, - { url = "https://files.pythonhosted.org/packages/da/26/ae890f8ecce3fdda3e3a518426665467d36945c7c2729da1b073b1c44ff6/pyobjc_framework_mediatoolbox-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:13afec7d9f094ca5642e32b98680d1ee59aaa11a3d694cb1a6e454f72003f51c", size = 13420, upload-time = "2025-11-14T09:54:45.133Z" }, - { url = "https://files.pythonhosted.org/packages/bb/42/f0354b949f1eda6a57722a7450c77ff6689e53f9b2a933c4911e4385c2c8/pyobjc_framework_mediatoolbox-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:59921d4155a88d4acd04e80497707ac0208af3ff41574acba68214376e9fca23", size = 12808, upload-time = "2025-11-14T09:54:47.029Z" }, - { url = "https://files.pythonhosted.org/packages/74/1e/7d9ffccd2053cd540e45e24aec03b70ac3d93d8bd99c8005b468a260c8a2/pyobjc_framework_mediatoolbox-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d99bf31c46b382f466888d1d80f738309916cbb83be0b4f1ccab5200de8f06c9", size = 13411, upload-time = "2025-11-14T09:54:49.228Z" }, -] - -[[package]] -name = "pyobjc-framework-metal" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/06/a84f7eb8561d5631954b9458cfca04b690b80b5b85ce70642bc89335f52a/pyobjc_framework_metal-12.1.tar.gz", hash = "sha256:bb554877d5ee2bf3f340ad88e8fe1b85baab7b5ec4bd6ae0f4f7604147e3eae7", size = 181847, upload-time = "2025-11-14T10:17:34.157Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/48/9286d06e1b14c11b65d3fea1555edc0061d9ebe11898dff8a14089e3a4c9/pyobjc_framework_metal-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:38ab566b5a2979a43e13593d3eb12000a45e574576fe76996a5e1eb75ad7ac78", size = 75841, upload-time = "2025-11-14T09:55:06.801Z" }, - { url = "https://files.pythonhosted.org/packages/1c/aa/caa900c1fdb9a3b7e48946c5206171a7adcf3b5189bcdb535cf899220909/pyobjc_framework_metal-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2f04a1a687cc346d23f3baf1ec56e3f42206709b590058d9778b52d45ca1c8ab", size = 75871, upload-time = "2025-11-14T09:55:13.008Z" }, - { url = "https://files.pythonhosted.org/packages/9c/a9/a42a173ea2d94071bc0f3112006a5d6ba7eaf0df9c48424f99b3e867e02d/pyobjc_framework_metal-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:3f3aa0848f4da46773952408b4814a440b210dc3f67f5ec5cfc0156ca2c8c0b6", size = 76420, upload-time = "2025-11-14T09:55:18.985Z" }, - { url = "https://files.pythonhosted.org/packages/88/8a/890dbc66bdae2ec839e28a15f16696ed1ab34b3cf32d58ed4dcd76183f25/pyobjc_framework_metal-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:2440db9b7057b6bafbabe8a2c5dde044865569176058ee34a7d138df0fc96c8c", size = 75876, upload-time = "2025-11-14T09:55:24.905Z" }, - { url = "https://files.pythonhosted.org/packages/4d/73/df12913fa33b52ff0e2c3cb7d578849a198b2a141d6e07e8930856a40851/pyobjc_framework_metal-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:476eeba3bebc2b3010e352b6bd28e3732432a3d5a8d5c3fb1cebd257dc7ea41e", size = 76483, upload-time = "2025-11-14T09:55:30.656Z" }, -] - -[[package]] -name = "pyobjc-framework-metalfx" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-metal" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/09/ce5c74565677fde66de3b9d35389066b19e5d1bfef9d9a4ad80f0c858c0c/pyobjc_framework_metalfx-12.1.tar.gz", hash = "sha256:1551b686fb80083a97879ce0331bdb1d4c9b94557570b7ecc35ebf40ff65c90b", size = 29470, upload-time = "2025-11-14T10:17:37.16Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/0b/508e3af499694f4eec74cc3ab0530e38db76e43a27db9ecb98c50c68f5f9/pyobjc_framework_metalfx-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a4418ae5c2eb77ec00695fa720a547638dc252dfd77ecb6feb88f713f5a948fd", size = 15062, upload-time = "2025-11-14T09:55:37.352Z" }, - { url = "https://files.pythonhosted.org/packages/02/b6/baa6071a36962e11c8834d8d13833509ce7ecb63e5c79fe2718d153a8312/pyobjc_framework_metalfx-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d443b0ee06de1b21a3ec5adab315840e71d52a74f8585090200228ab2fa1e59d", size = 15073, upload-time = "2025-11-14T09:55:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/42/d1/b4ea7e6c0c66710db81f315c48dca0252ed81bbde4a41de21b8d54ff2241/pyobjc_framework_metalfx-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:dcd334b42c5c50ec88e049f1b0bf43544b52e3ac09fd57b712fec8f63507190e", size = 15286, upload-time = "2025-11-14T09:55:41.642Z" }, - { url = "https://files.pythonhosted.org/packages/ae/a6/fe7108290f798f79f2efbcf511fdb605b834f3616496fae8bec0c719ba65/pyobjc_framework_metalfx-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b5c4d81ebe71be69db838041ec93c12fb0458fe68a06f61f87a4d892135953dc", size = 16349, upload-time = "2025-11-14T09:55:44.009Z" }, - { url = "https://files.pythonhosted.org/packages/cd/4b/2c782b429baed0cc545154c9b4f866eb86aa2d74977452e2c9c2157daef8/pyobjc_framework_metalfx-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:795f081c558312f51079de2d739412d286229f421282cfab36e195fef557f2ca", size = 16588, upload-time = "2025-11-14T09:55:46.128Z" }, -] - -[[package]] -name = "pyobjc-framework-metalkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-metal" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/14/15/5091147aae12d4011a788b93971c3376aaaf9bf32aa935a2c9a06a71e18b/pyobjc_framework_metalkit-12.1.tar.gz", hash = "sha256:14cc5c256f0e3471b412a5b3582cb2a0d36d3d57401a8aa09e433252d1c34824", size = 25473, upload-time = "2025-11-14T10:17:39.721Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/c0/c8b5b060895cd51493afe3f09909b7e34893b1161cf4d93bc8e3cd306129/pyobjc_framework_metalkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1c4869076571d94788fe539fabfdd568a5c8e340936c7726d2551196640bd152", size = 8755, upload-time = "2025-11-14T09:55:51.683Z" }, - { url = "https://files.pythonhosted.org/packages/2b/cd/f04e991f4db4512e64ea7611796141c316506e733d75c468512df0e8fda4/pyobjc_framework_metalkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:4dec94431ee888682115fe88ae72fca8bffc5df0957e3c006777c1d8267f65c3", size = 8769, upload-time = "2025-11-14T09:55:53.318Z" }, - { url = "https://files.pythonhosted.org/packages/b7/b8/6f2fc56b6f8aee222d584edbdef4cf300e90782813e315418eba6d395533/pyobjc_framework_metalkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:d16958c0d4e2a75e1ea973de8951c775da1e39e378a7a7762fbce1837bf3179c", size = 8922, upload-time = "2025-11-14T09:55:55.016Z" }, - { url = "https://files.pythonhosted.org/packages/d4/52/84c2829df343322025d3ad474153359c850c3189555c0819155044b8777d/pyobjc_framework_metalkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a1b8ac9582b65d2711836b56dd24ce450aa740b0c478da9ee0621cc4c64e64cb", size = 8824, upload-time = "2025-11-14T09:55:56.672Z" }, - { url = "https://files.pythonhosted.org/packages/09/e9/ca6433dbdee520b8e3be3383b2b350692af4366f03842f6d79510a87c33c/pyobjc_framework_metalkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:3d41ab59184d1a79981c5fb15d042750047a1a73574efa26179d7e174ddeaca6", size = 8972, upload-time = "2025-11-14T09:55:58.662Z" }, -] - -[[package]] -name = "pyobjc-framework-metalperformanceshaders" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-metal" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c5/68/58da38e54aa0d8c19f0d3084d8c84e92d54cc8c9254041f07119d86aa073/pyobjc_framework_metalperformanceshaders-12.1.tar.gz", hash = "sha256:b198e755b95a1de1525e63c3b14327ae93ef1d88359e6be1ce554a3493755b50", size = 137301, upload-time = "2025-11-14T10:17:49.554Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/62/84/d505496fca9341e0cb11258ace7640cd986fe3e831f8b4749035e9f82109/pyobjc_framework_metalperformanceshaders-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c00e786c352b3ff5d86cf0cf3a830dc9f6fc32a03ae1a7539d20d11324adb2e8", size = 33242, upload-time = "2025-11-14T09:56:09.354Z" }, - { url = "https://files.pythonhosted.org/packages/e9/6c/8f3d81905ce6b0613fe364a6dd77bf4ed85a6350f867b40a5e99b69e8d07/pyobjc_framework_metalperformanceshaders-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:240321f2fad1555b5ede3aed938c9f37da40a57fc3e7e9c96a45658dc12c3771", size = 33269, upload-time = "2025-11-14T09:56:12.527Z" }, - { url = "https://files.pythonhosted.org/packages/58/44/4813f8606a91a88f67a0b0c02ed9e2449cbfd5b701f7ca61cf9ce3fe0769/pyobjc_framework_metalperformanceshaders-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0aa287ee357fe5bd5660b3d0688f947a768cda8565dbbca3b876307b9876639e", size = 33457, upload-time = "2025-11-14T09:56:15.72Z" }, - { url = "https://files.pythonhosted.org/packages/b4/d7/1177d8815549c90d8ddb0764b62c17bdaca6d6e03b8b54f3e7137167d8f3/pyobjc_framework_metalperformanceshaders-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5d5a0a5c859c5493d597842f3d011c59bf7c10d04a29852016298364fca9e16e", size = 33324, upload-time = "2025-11-14T09:56:18.802Z" }, - { url = "https://files.pythonhosted.org/packages/4b/35/35302a62ae81e3b31c84bc1a2fc6fd0ad80a43b7edee9ef9bca482d55edd/pyobjc_framework_metalperformanceshaders-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c23b3a0f869c730e50851468a082014f1b0b3d4433d5d15ac28d6a736084026c", size = 33534, upload-time = "2025-11-14T09:56:21.984Z" }, -] - -[[package]] -name = "pyobjc-framework-metalperformanceshadersgraph" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-metalperformanceshaders" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a7/56/7ad0cd085532f7bdea9a8d4e9a2dfde376d26dd21e5eabdf1a366040eff8/pyobjc_framework_metalperformanceshadersgraph-12.1.tar.gz", hash = "sha256:b8fd017b47698037d7b172d41bed7a4835f4c4f2a288235819d200005f89ee35", size = 42992, upload-time = "2025-11-14T10:17:53.502Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/c9/5e7fd0d4bc9bdf7b442f36e020677c721ba9b4c1dc1fa3180085f22a4ef9/pyobjc_framework_metalperformanceshadersgraph-12.1-py2.py3-none-any.whl", hash = "sha256:85a1c7a6114ada05c7924b3235a1a98c45359410d148097488f15aee5ebb6ab9", size = 6481, upload-time = "2025-11-14T09:56:23.66Z" }, -] - -[[package]] -name = "pyobjc-framework-metrickit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ba/13/5576ddfbc0b174810a49171e2dbe610bdafd3b701011c6ecd9b3a461de8a/pyobjc_framework_metrickit-12.1.tar.gz", hash = "sha256:77841daf6b36ba0c19df88545fd910c0516acf279e6b7b4fa0a712a046eaa9f1", size = 27627, upload-time = "2025-11-14T10:17:56.353Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/04/8da5126e47306438c99750f1dfed430d7cc388f6b7f420ae748f3060ab96/pyobjc_framework_metrickit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3ec96e9ec7dc37fbce57dae277f0d89c66ffe1c3fa2feaca1b7125f8b2b29d87", size = 8120, upload-time = "2025-11-14T09:56:28.73Z" }, - { url = "https://files.pythonhosted.org/packages/f1/e0/8b379325acb39e0966f818106b3c3c8e3966bf87a7ab5c2d0e89753b0d1f/pyobjc_framework_metrickit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:884afb6ec863883318975fda38db9d741b8da5f64a2b8c34bf8edc5ff56019d4", size = 8131, upload-time = "2025-11-14T09:56:30.524Z" }, - { url = "https://files.pythonhosted.org/packages/86/67/dcd2b18a787d3fec89e372aadb83c01879dda24fe1ed2a333a5e1d388591/pyobjc_framework_metrickit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:37674b0e049035d8b32d0221d0afbfedd3f643e4a2ee74b9a0e4e6d1b94fcd69", size = 8273, upload-time = "2025-11-14T09:56:32.128Z" }, - { url = "https://files.pythonhosted.org/packages/d6/8b/a97a1463fc4453e5b1c157816a8356d800c4d66d5624154dc6dbdd7f52c0/pyobjc_framework_metrickit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:f6cde78ba1a401660fe0e3a945d1941efef255c1021a8772a838aceb31bd74e6", size = 8190, upload-time = "2025-11-14T09:56:33.911Z" }, - { url = "https://files.pythonhosted.org/packages/ec/8b/a61b0fb889a2833b23fe2d4439d910a3d24a7eab83abc15c82f1fa1541a7/pyobjc_framework_metrickit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:8f407172e1ecc8ee63afadda477a0f1c633c09be761edcadab8a9d1eebddd27c", size = 8333, upload-time = "2025-11-14T09:56:35.511Z" }, -] - -[[package]] -name = "pyobjc-framework-mlcompute" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/69/15f8ce96c14383aa783c8e4bc1e6d936a489343bb197b8e71abb3ddc1cb8/pyobjc_framework_mlcompute-12.1.tar.gz", hash = "sha256:3281db120273dcc56e97becffd5cedf9c62042788289f7be6ea067a863164f1e", size = 40698, upload-time = "2025-11-14T10:17:59.792Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/f7/4614b9ccd0151795e328b9ed881fbcbb13e577a8ec4ae3507edb1a462731/pyobjc_framework_mlcompute-12.1-py2.py3-none-any.whl", hash = "sha256:4f0fc19551d710a03dfc4c7129299897544ff8ea76db6c7539ecc2f9b2571bde", size = 6744, upload-time = "2025-11-14T09:56:36.973Z" }, -] - -[[package]] -name = "pyobjc-framework-modelio" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b4/11/32c358111b623b4a0af9e90470b198fffc068b45acac74e1ba711aee7199/pyobjc_framework_modelio-12.1.tar.gz", hash = "sha256:d041d7bca7c2a4526344d3e593347225b7a2e51a499b3aa548895ba516d1bdbb", size = 66482, upload-time = "2025-11-14T10:18:04.92Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/0e/b8331100f0d658ecb3e87e75c108e2ae8ac7c78b521fd5ad0205b60a2584/pyobjc_framework_modelio-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:68d971917c289fdddf69094c74915d2ccb746b42b150e0bdc16d8161e6164022", size = 20193, upload-time = "2025-11-14T09:56:44.296Z" }, - { url = "https://files.pythonhosted.org/packages/db/fa/f111717fd64015fc3906b7c36dcfca4dda1d31916251c9640a8c70ff611a/pyobjc_framework_modelio-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dad6e914b6efe8ea3d2cd10029c4eb838f1ad6a12344787e8db70c4149df8cfc", size = 20208, upload-time = "2025-11-14T09:56:46.627Z" }, - { url = "https://files.pythonhosted.org/packages/58/d3/6f3131a16694684f3dfa6b2845054941dfb69a63f18980eea02a25c06f6d/pyobjc_framework_modelio-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f00b739f9333d611e7124acf95491bdf025dd32ba7c48b7521f6845b92e2dcce", size = 20448, upload-time = "2025-11-14T09:56:49.184Z" }, - { url = "https://files.pythonhosted.org/packages/14/14/52b19e6ba86de2d38aed69a091c5d0c436c007ddf73441cbcc0a217db1d4/pyobjc_framework_modelio-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5250e7f58cc71ca8928b33a00ac0dc56ca0eead97507f4bfcf777582a4b05e39", size = 20183, upload-time = "2025-11-14T09:56:51.861Z" }, - { url = "https://files.pythonhosted.org/packages/e9/2c/13a22d22ffb1c175db9c23bea5f26dc3002c72056b68a362c04697778914/pyobjc_framework_modelio-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:aa76942301b2115c8904bcb10c73b19d10d7731ea35e6155cbfd6934d7c91e4b", size = 20426, upload-time = "2025-11-14T09:56:54.191Z" }, -] - -[[package]] -name = "pyobjc-framework-multipeerconnectivity" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/35/0d0bb6881004cb238cfd7bf74f4b2e42601a1accdf27b2189ec61cf3a2dc/pyobjc_framework_multipeerconnectivity-12.1.tar.gz", hash = "sha256:7123f734b7174cacbe92a51a62b4645cc9033f6b462ff945b504b62e1b9e6c1c", size = 22816, upload-time = "2025-11-14T10:18:07.363Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/33/8d/0646ff7db36942829f0e84be18ba44bc5cd96d6a81651f8e7dc0974821c1/pyobjc_framework_multipeerconnectivity-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1c3bd254a16debed321debf4858f9c9b7d41572ddf1058a4bacf6a5bcfedeeff", size = 12001, upload-time = "2025-11-14T09:57:01.027Z" }, - { url = "https://files.pythonhosted.org/packages/93/65/589cf3abaec888878d9b86162e5e622d4d467fd88a5f55320f555484dd54/pyobjc_framework_multipeerconnectivity-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:25169a2fded90d13431db03787ac238b4ed551c44f7656996f8dfb6b6986b997", size = 12019, upload-time = "2025-11-14T09:57:02.86Z" }, - { url = "https://files.pythonhosted.org/packages/0e/77/c184a36ba61d803d482029021410568b0a2155b5bf0dd2def4256ab58a1e/pyobjc_framework_multipeerconnectivity-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:3a6c2d233ecda3127bd6b6ded289ef0d1fa6ddc3acbab7f8af996c96090f7bfc", size = 12194, upload-time = "2025-11-14T09:57:04.63Z" }, - { url = "https://files.pythonhosted.org/packages/d6/64/fd5932ab32bec0e340b60ca87f57c07a9d963b56ab5f857787efcec236e4/pyobjc_framework_multipeerconnectivity-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:014f92d7e176154531c3173cf7113b6be374c041646c4b86d93afb84d2ea334c", size = 11989, upload-time = "2025-11-14T09:57:06.451Z" }, - { url = "https://files.pythonhosted.org/packages/99/1d/a7d2d26a081d5b9328a99865424078d9f9981e35c8e38a71321252e529f5/pyobjc_framework_multipeerconnectivity-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6490651224d1403d96e52ca3aed041b79b5456e3261abd9cb225c1fbc1893a69", size = 12210, upload-time = "2025-11-14T09:57:08.244Z" }, -] - -[[package]] -name = "pyobjc-framework-naturallanguage" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/d1/c81c0cdbb198d498edc9bc5fbb17e79b796450c17bb7541adbf502f9ad65/pyobjc_framework_naturallanguage-12.1.tar.gz", hash = "sha256:cb27a1e1e5b2913d308c49fcd2fd04ab5ea87cb60cac4a576a91ebf6a50e52f6", size = 23524, upload-time = "2025-11-14T10:18:09.883Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/d8/715a11111f76c80769cb267a19ecf2a4ac76152a6410debb5a4790422256/pyobjc_framework_naturallanguage-12.1-py2.py3-none-any.whl", hash = "sha256:a02ef383ec88948ca28f03ab8995523726b3bc75c49f593b5c89c218bcbce7ce", size = 5320, upload-time = "2025-11-14T09:57:10.294Z" }, -] - -[[package]] -name = "pyobjc-framework-netfs" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/46/68/4bf0e5b8cc0780cf7acf0aec54def58c8bcf8d733db0bd38f5a264d1af06/pyobjc_framework_netfs-12.1.tar.gz", hash = "sha256:e8d0c25f41d7d9ced1aa2483238d0a80536df21f4b588640a72e1bdb87e75c1e", size = 14799, upload-time = "2025-11-14T10:18:11.85Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/6b/8c2f223879edd3e3f030d0a9c9ba812775519c6d0c257e3e7255785ca6e7/pyobjc_framework_netfs-12.1-py2.py3-none-any.whl", hash = "sha256:0021f8b141e693d3821524c170e9c645090eb320e80c2935ddb978a6e8b8da81", size = 4163, upload-time = "2025-11-14T09:57:11.845Z" }, -] - -[[package]] -name = "pyobjc-framework-network" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/13/a71270a1b0a9ec979e68b8ec84b0f960e908b17b51cb3cac246a74d52b6b/pyobjc_framework_network-12.1.tar.gz", hash = "sha256:dbf736ff84d1caa41224e86ff84d34b4e9eb6918ae4e373a44d3cb597648a16a", size = 56990, upload-time = "2025-11-14T10:18:16.714Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/ef/a53f04f43e93932817f2ea71689dcc8afe3b908d631c21d11ec30c7b2e87/pyobjc_framework_network-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:5e53aad64eae2933fe12d49185d66aca62fb817abf8a46f86b01e436ce1b79e4", size = 19613, upload-time = "2025-11-14T09:57:19.571Z" }, - { url = "https://files.pythonhosted.org/packages/d1/f5/612539c2c0c7ce1160bd348325747f3a94ea367901965b217af877a556a1/pyobjc_framework_network-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e341beb32c7f95ed3e38f00cfed0a9fe7f89b8d80679bf2bd97c1a8d2280180a", size = 19632, upload-time = "2025-11-14T09:57:21.762Z" }, - { url = "https://files.pythonhosted.org/packages/c6/ff/6a1909206f6d840ebcf40c9ea5de9a9ee07e7bb1ffa4fe573da7f90fac12/pyobjc_framework_network-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:8344e3b57afccc762983e4629ec5eff72a3d7292afa8169a3e2aada3348848a8", size = 19696, upload-time = "2025-11-14T09:57:23.948Z" }, - { url = "https://files.pythonhosted.org/packages/e0/6d/a7fb29708f2797fa96bfa6ae740b8154ac719e150939393453073121b7c9/pyobjc_framework_network-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:25e20ec81e23699e1182808384b8e426cb3ae9adaf639684232fc205edb48183", size = 19361, upload-time = "2025-11-14T09:57:26.565Z" }, - { url = "https://files.pythonhosted.org/packages/40/54/9cb89d6fac3e2e8d34107fa6de36ab7890844428b3d4fb4a9692f3cc4926/pyobjc_framework_network-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:39be2f25b13d2d530e893f06ddd3f277b83233020a0ab58413554fe8e0496624", size = 19406, upload-time = "2025-11-14T09:57:28.765Z" }, -] - -[[package]] -name = "pyobjc-framework-networkextension" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/3e/ac51dbb2efa16903e6af01f3c1f5a854c558661a7a5375c3e8767ac668e8/pyobjc_framework_networkextension-12.1.tar.gz", hash = "sha256:36abc339a7f214ab6a05cb2384a9df912f247163710741e118662bd049acfa2e", size = 62796, upload-time = "2025-11-14T10:18:21.769Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/14/4934b10ade5ad0518001bfc25260d926816b9c7d08d85ef45e8a61fdef1b/pyobjc_framework_networkextension-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:adc9baacfc532944d67018e381c7645f66a9fa0064939a5a841476d81422cdcc", size = 14376, upload-time = "2025-11-14T09:57:36.132Z" }, - { url = "https://files.pythonhosted.org/packages/cb/a8/5d847dd3ffea913597342982614eb17bad4c29c07fac3447b56c9c5136ab/pyobjc_framework_networkextension-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:63453b38e5a795f9ff950397e5a564071c2b4fd3360d79169ab017755bbb932a", size = 14399, upload-time = "2025-11-14T09:57:38.178Z" }, - { url = "https://files.pythonhosted.org/packages/b4/a8/8d56c6ca7826633f856924256761338094eeab1ae40783c29c14b9746bc9/pyobjc_framework_networkextension-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e21d8ec762ded95afaff41b68425219df55ca8c3f777b810238441a4f7c221e3", size = 14539, upload-time = "2025-11-14T09:57:40.222Z" }, - { url = "https://files.pythonhosted.org/packages/b6/00/460b9ef440663299153ac0c165a56916620016435d402e4cf4cfdc74b521/pyobjc_framework_networkextension-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:21076ec44790023b579f21f6b88e13388d353de98658dbb50369df53e6a9c967", size = 14453, upload-time = "2025-11-14T09:57:42.556Z" }, - { url = "https://files.pythonhosted.org/packages/4d/ee/c9ea9e426b169d3ae54ddcad46828a6236168cfadbab37abc892d07a75ce/pyobjc_framework_networkextension-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:06d78bab27d4a7c51c9787b1f4cfcfed4d85488fcd96d93bac400bb2690ddceb", size = 14589, upload-time = "2025-11-14T09:57:45.012Z" }, -] - -[[package]] -name = "pyobjc-framework-notificationcenter" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c6/12/ae0fe82fb1e02365c9fe9531c9de46322f7af09e3659882212c6bf24d75e/pyobjc_framework_notificationcenter-12.1.tar.gz", hash = "sha256:2d09f5ab9dc39770bae4fa0c7cfe961e6c440c8fc465191d403633dccc941094", size = 21282, upload-time = "2025-11-14T10:18:24.51Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/05/3168637dd425257df5693c2ceafecf92d2e6833c0aaa6594d894a528d797/pyobjc_framework_notificationcenter-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:82a735bd63f315f0a56abd206373917b7d09a0ae35fd99f1639a0fac4c525c0a", size = 9895, upload-time = "2025-11-14T09:57:51.151Z" }, - { url = "https://files.pythonhosted.org/packages/44/9a/f2b627dd4631a0756ee3e99b57de1e78447081d11f10313ed198e7521a31/pyobjc_framework_notificationcenter-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:06470683f568803f55f1646accfbf5eaa3fda56d15f27fca31bdbff4eaa8796c", size = 9917, upload-time = "2025-11-14T09:57:53.001Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f5/5fff664571dc48eea9246d31530fc564c654af827bfca1ddab47b72dc344/pyobjc_framework_notificationcenter-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:bdf87e5f027bec727b24bb1764a9933af9728862f6a0e9a7f4a1835061f283dd", size = 10110, upload-time = "2025-11-14T09:57:55.015Z" }, - { url = "https://files.pythonhosted.org/packages/da/0a/621ed53aa7521d534275b8069c0f0d5e6517d772808a49add8476ad5c86d/pyobjc_framework_notificationcenter-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9495b1b0820a3e82bfcd0331b92bc29e4e4ca3a4e58d6ec0e1eda6c301ec4460", size = 9980, upload-time = "2025-11-14T09:57:56.666Z" }, - { url = "https://files.pythonhosted.org/packages/78/1a/b427a2316fb783a7dc58b12ce4d58de3263927614a9ff04934aeb10d8b8a/pyobjc_framework_notificationcenter-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1aca78efbf3ceab878758ec11dacef0c85629f844eee9e21645319dd98fd3673", size = 10186, upload-time = "2025-11-14T09:57:58.317Z" }, -] - -[[package]] -name = "pyobjc-framework-opendirectory" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5b/11/bc2f71d3077b3bd078dccad5c0c5c57ec807fefe3d90c97b97dd0ed3d04b/pyobjc_framework_opendirectory-12.1.tar.gz", hash = "sha256:2c63ce5dd179828ef2d8f9e3961da3bfa971a57db07a6c34eedc296548a928bb", size = 61049, upload-time = "2025-11-14T10:18:29.336Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/e7/3c2dece9c5b28af28a44d72a27b35ea5ffac31fed7cbd8d696ea75dc4a81/pyobjc_framework_opendirectory-12.1-py2.py3-none-any.whl", hash = "sha256:b5b5a5cf3cc2fb25147b16b79f046b90e3982bf3ded1b210a993d8cfdba737c4", size = 11845, upload-time = "2025-11-14T09:58:00.175Z" }, -] - -[[package]] -name = "pyobjc-framework-osakit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cb/b9/bf52c555c75a83aa45782122432fa06066bb76469047f13d06fb31e585c4/pyobjc_framework_osakit-12.1.tar.gz", hash = "sha256:36ea6acf03483dc1e4344a0cce7250a9656f44277d12bc265fa86d4cbde01f23", size = 17102, upload-time = "2025-11-14T10:18:31.354Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/99/10/30a15d7b23e6fcfa63d41ca4c7356c39ff81300249de89c3ff28216a9790/pyobjc_framework_osakit-12.1-py2.py3-none-any.whl", hash = "sha256:c49165336856fd75113d2e264a98c6deb235f1bd033eae48f661d4d832d85e6b", size = 4162, upload-time = "2025-11-14T09:58:01.953Z" }, -] - -[[package]] -name = "pyobjc-framework-oslog" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coremedia" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/12/42/805c9b4ac6ad25deb4215989d8fc41533d01e07ffd23f31b65620bade546/pyobjc_framework_oslog-12.1.tar.gz", hash = "sha256:d0ec6f4e3d1689d5e4341bc1130c6f24cb4ad619939f6c14d11a7e80c0ac4553", size = 21193, upload-time = "2025-11-14T10:18:33.645Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/60/0b742347d484068e9d6867cd95dedd1810c790b6aca45f6ef1d0f089f1f5/pyobjc_framework_oslog-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:072a41d36fcf780a070f13ac2569f8bafbb5ae4792fab4136b1a4d602dd9f5b4", size = 7813, upload-time = "2025-11-14T09:58:07.768Z" }, - { url = "https://files.pythonhosted.org/packages/89/ad/719d65e7202623da7a3f22225e7f2b736f38cd6d3e0d87253b7f74f5b9c0/pyobjc_framework_oslog-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d26ce39be2394695cf4c4c699e47f9b85479cf1ccb0472614bb88027803a8986", size = 7834, upload-time = "2025-11-14T09:58:09.586Z" }, - { url = "https://files.pythonhosted.org/packages/86/f0/a042b06f47d11bdad58d5c0cec9fe3dc4dc12ed9e476031cd4c0f08c6f18/pyobjc_framework_oslog-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6925e6764c6f293b69fbd4f5fd32a9810fca07d63e782c41cb4ebf05dc42977", size = 8016, upload-time = "2025-11-14T09:58:11.431Z" }, - { url = "https://files.pythonhosted.org/packages/f4/c1/7a7742fc81708c53a0f736ce883069b3c1797440d691a7ed7b8e29e8dbbd/pyobjc_framework_oslog-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:16d98c49698da839b79904a2c63fee658fd4a8c4fa9223e5694270533127e8d4", size = 7875, upload-time = "2025-11-14T09:58:13.202Z" }, - { url = "https://files.pythonhosted.org/packages/09/d2/c5703c03d6b57a3c729e211556c88e44ca4bfbe45bcbf5d6f4843095fdeb/pyobjc_framework_oslog-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:302956914b0d28dc9d8e27c2428d46c89cde8e2c64a426cda241d4b0c64315fd", size = 8075, upload-time = "2025-11-14T09:58:14.723Z" }, -] - -[[package]] -name = "pyobjc-framework-passkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6c/d4/2afb59fb0f99eb2f03888850887e536f1ef64b303fd756283679471a5189/pyobjc_framework_passkit-12.1.tar.gz", hash = "sha256:d8c27c352e86a3549bf696504e6b25af5f2134b173d9dd60d66c6d3da53bb078", size = 53835, upload-time = "2025-11-14T10:18:37.906Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/dc/9cb27e8b7b00649af5e802815ffa8928bd8a619f2984a1bea7dabd28f741/pyobjc_framework_passkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7e95a484ec529dbf1d44f5f7f1406502a77bda733511e117856e3dca9fa29c5c", size = 14102, upload-time = "2025-11-14T09:58:20.903Z" }, - { url = "https://files.pythonhosted.org/packages/7c/e2/6135402be2151042b234ea241e89f4b8984f6494fd11d9f56b4a56a9d7d4/pyobjc_framework_passkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:64287e6dc54ab4c0aa8ba80a7a51762e36591602c77c6a803aee690e7464b6b2", size = 14110, upload-time = "2025-11-14T09:58:23.107Z" }, - { url = "https://files.pythonhosted.org/packages/23/f3/ff6f81206eca1e1fb49c5a516d5eb15f143b38c5adee5b0c24076be02be9/pyobjc_framework_passkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a360e98b29eee8642f3e7d973c636284c24fb2ec2c3ee56022eeae6270943be", size = 14277, upload-time = "2025-11-14T09:58:25.338Z" }, - { url = "https://files.pythonhosted.org/packages/dc/71/bde73bb39a836fb07c10fbdc60f38a3bd436c0aada1de0f4140737813930/pyobjc_framework_passkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:e28dcf1074cddd82c2bd3ee5c3800952ac59850578b1135b38871ff584ea9d41", size = 14118, upload-time = "2025-11-14T09:58:27.353Z" }, - { url = "https://files.pythonhosted.org/packages/c1/13/f2a4fe4fb6ce91689f16c577089fe19748b3be322a28099543a89ee6c0fb/pyobjc_framework_passkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a8782f31254016a9b152a9d1dc7ea18187729221f6ca175927be99a65b97640e", size = 14280, upload-time = "2025-11-14T09:58:29.374Z" }, -] - -[[package]] -name = "pyobjc-framework-pencilkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7e/43/859068016bcbe7d80597d5c579de0b84b0da62c5c55cdf9cc940e9f9c0f8/pyobjc_framework_pencilkit-12.1.tar.gz", hash = "sha256:d404982d1f7a474369f3e7fea3fbd6290326143fa4138d64b6753005a6263dc4", size = 17664, upload-time = "2025-11-14T10:18:40.045Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/26/daf47dcfced8f7326218dced5c68ed2f3b522ec113329218ce1305809535/pyobjc_framework_pencilkit-12.1-py2.py3-none-any.whl", hash = "sha256:33b88e5ed15724a12fd8bf27a68614b654ff739d227e81161298bc0d03acca4f", size = 4206, upload-time = "2025-11-14T09:58:30.814Z" }, -] - -[[package]] -name = "pyobjc-framework-phase" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-avfoundation" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/96/51/3b25eaf7ca85f38ceef892fdf066b7faa0fec716f35ea928c6ffec6ae311/pyobjc_framework_phase-12.1.tar.gz", hash = "sha256:3a69005c572f6fd777276a835115eb8359a33673d4a87e754209f99583534475", size = 32730, upload-time = "2025-11-14T10:18:43.102Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/9f/1ae45db731e8d6dd3e0b408c3accd0cf3236849e671f95c7c8cf95687240/pyobjc_framework_phase-12.1-py2.py3-none-any.whl", hash = "sha256:99a1c1efc6644f5312cce3693117d4e4482538f65ad08fe59e41e2579b67ab17", size = 6902, upload-time = "2025-11-14T09:58:32.436Z" }, -] - -[[package]] -name = "pyobjc-framework-photos" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b8/53/f8a3dc7f711034d2283e289cd966fb7486028ea132a24260290ff32d3525/pyobjc_framework_photos-12.1.tar.gz", hash = "sha256:adb68aaa29e186832d3c36a0b60b0592a834e24c5263e9d78c956b2b77dce563", size = 47034, upload-time = "2025-11-14T10:18:47.27Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/38/e6f25aec46a1a9d0a310795606cc43f9823d41c3e152114b814b597835a8/pyobjc_framework_photos-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eda8a584a851506a1ebbb2ee8de2cb1ed9e3431e6a642ef6a9543e32117d17b9", size = 12358, upload-time = "2025-11-14T09:58:38.131Z" }, - { url = "https://files.pythonhosted.org/packages/71/5a/3c4e2af8d17e62ecf26e066fbb9209aacccfaf691f5faa42e3fd64b2b9f2/pyobjc_framework_photos-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bd7906d8662af29f91c71892ae0b0cab4682a3a7ef5be1a2277d881d7b8d37d3", size = 12367, upload-time = "2025-11-14T09:58:42.328Z" }, - { url = "https://files.pythonhosted.org/packages/fb/24/566de3200d4aa05ca75b0150e5d031d2384a388f9126a4fef62a8f53818f/pyobjc_framework_photos-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c822d81c778dd2a789f15d0f329cee633391c5ad766482ffbaf40d3dc57584a3", size = 12552, upload-time = "2025-11-14T09:58:44.134Z" }, - { url = "https://files.pythonhosted.org/packages/c2/5c/47b9e1f6ac61a80b6544091dffe42dc883217d6e670ddc188968988ba7f6/pyobjc_framework_photos-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:95d5036bdaf1c50559adfa60fd715b57c68577d2574241ed1890e359849f923f", size = 12422, upload-time = "2025-11-14T09:58:46.072Z" }, - { url = "https://files.pythonhosted.org/packages/b4/33/48cc5ca364e62d08296de459e86daa538291b895b5d1abb670053263e0c4/pyobjc_framework_photos-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:77f181d3cb3fde9c04301c9a96693d02a139d478891e49ed76573dedf0437f49", size = 12607, upload-time = "2025-11-14T09:58:48.084Z" }, -] - -[[package]] -name = "pyobjc-framework-photosui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/40/a5/14c538828ed1a420e047388aedc4a2d7d9292030d81bf6b1ced2ec27b6e9/pyobjc_framework_photosui-12.1.tar.gz", hash = "sha256:9141234bb9d17687f1e8b66303158eccdd45132341fbe5e892174910035f029a", size = 29886, upload-time = "2025-11-14T10:18:50.238Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/a2/b5afca8039b1a659a2a979bb1bdbdddfdf9b1d2724a2cc4633dca2573d5f/pyobjc_framework_photosui-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:713e3bb25feb5ea891e67260c2c0769cab44a7f11b252023bfcf9f8c29dd1206", size = 11714, upload-time = "2025-11-14T09:58:53.674Z" }, - { url = "https://files.pythonhosted.org/packages/d6/cd/204298e136ff22d3502f0b66cda1d36df89346fa2b20f4a3a681c2c96fee/pyobjc_framework_photosui-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5fa3ca2bc4c8609dee46e3c8fb5f3fbfb615f39fa3d710a213febec38e227758", size = 11725, upload-time = "2025-11-14T09:58:56.694Z" }, - { url = "https://files.pythonhosted.org/packages/f6/5e/492007c629844666e8334e535471c5492e93715965fdffe4f75227f47fac/pyobjc_framework_photosui-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:713ec72b13d8399229d285ccd1e94e5ea2627cf88858977a2a91cc94d1affcd6", size = 11921, upload-time = "2025-11-14T09:58:58.477Z" }, - { url = "https://files.pythonhosted.org/packages/33/4e/d45cae151b0b46ab4110b6ea7d689af9480a07ced3dbf5f0860b201a542a/pyobjc_framework_photosui-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a8e0320908f497d1e548336569f435afd27ed964e65b2aefa3a2d2ea4c041da2", size = 11722, upload-time = "2025-11-14T09:59:00.326Z" }, - { url = "https://files.pythonhosted.org/packages/5c/a3/c46998d5e96d38c04af9465808dba035fe3338d49092d8b887cc3f1c9f3d/pyobjc_framework_photosui-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1b3e9226601533843d6764a7006c2f218123a9c22ac935345c6fb88691b9f78b", size = 11908, upload-time = "2025-11-14T09:59:02.103Z" }, -] - -[[package]] -name = "pyobjc-framework-preferencepanes" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/90/bc/e87df041d4f7f6b7721bf7996fa02aa0255939fb0fac0ecb294229765f92/pyobjc_framework_preferencepanes-12.1.tar.gz", hash = "sha256:b2a02f9049f136bdeca7642b3307637b190850e5853b74b5c372bc7d88ef9744", size = 24543, upload-time = "2025-11-14T10:18:53.259Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/7b/8ceec1ab0446224d685e243e2770c5a5c92285bcab0b9324dbe7a893ae5a/pyobjc_framework_preferencepanes-12.1-py2.py3-none-any.whl", hash = "sha256:1b3af9db9e0cfed8db28c260b2cf9a22c15fda5f0ff4c26157b17f99a0e29bbf", size = 4797, upload-time = "2025-11-14T09:59:03.998Z" }, -] - -[[package]] -name = "pyobjc-framework-pushkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a9/45/de756b62709add6d0615f86e48291ee2bee40223e7dde7bbe68a952593f0/pyobjc_framework_pushkit-12.1.tar.gz", hash = "sha256:829a2fc8f4780e75fc2a41217290ee0ff92d4ade43c42def4d7e5af436d8ae82", size = 19465, upload-time = "2025-11-14T10:18:57.727Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/01/74cf1dd0764c590de05dc1e87d168031e424f834721940b7bb02c67fe821/pyobjc_framework_pushkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7bdf472a55ac65154e03f54ae0bcad64c4cf45e9b1acba62f15107f2bc994d69", size = 8177, upload-time = "2025-11-14T09:59:11.155Z" }, - { url = "https://files.pythonhosted.org/packages/1b/79/00368a140fe4a14e92393da25ef5a3037a09bb0024d984d7813e7e3fa11c/pyobjc_framework_pushkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f3751276cb595a9f886ed6094e06004fd11932443e345760eade09119f8e0181", size = 8193, upload-time = "2025-11-14T09:59:13.23Z" }, - { url = "https://files.pythonhosted.org/packages/57/29/dccede214ef1835662066c74138978629d92b6a9f723e28670cfb04f3ce7/pyobjc_framework_pushkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:64955af6441635449c2af6c6f468c9ba5e413e1494b87617bc1e9fbd8be7e5bf", size = 8339, upload-time = "2025-11-14T09:59:14.754Z" }, - { url = "https://files.pythonhosted.org/packages/16/09/9ba944e1146308460bf7474cdc2a0844682862f9850576494035a7653f4a/pyobjc_framework_pushkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:de82e1f6e01444582ad2ca6a76aeee1524c23695f0e4f56596f9db3e9d635623", size = 8254, upload-time = "2025-11-14T09:59:16.672Z" }, - { url = "https://files.pythonhosted.org/packages/79/be/9220099adb71ec5ae374d2b5b6c3b34e8c505e42fcd090c73e53035a414f/pyobjc_framework_pushkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:69c7a03a706bc7fb24ca69a9f79d030927be1e5166c0d2a5a9afc1c5d82a07ec", size = 8388, upload-time = "2025-11-14T09:59:18.707Z" }, -] - -[[package]] -name = "pyobjc-framework-quartz" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/18/cc59f3d4355c9456fc945eae7fe8797003c4da99212dd531ad1b0de8a0c6/pyobjc_framework_quartz-12.1.tar.gz", hash = "sha256:27f782f3513ac88ec9b6c82d9767eef95a5cf4175ce88a1e5a65875fee799608", size = 3159099, upload-time = "2025-11-14T10:21:24.31Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/9b/780f057e5962f690f23fdff1083a4cfda5a96d5b4d3bb49505cac4f624f2/pyobjc_framework_quartz-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7730cdce46c7e985535b5a42c31381af4aa6556e5642dc55b5e6597595e57a16", size = 218798, upload-time = "2025-11-14T10:00:01.236Z" }, - { url = "https://files.pythonhosted.org/packages/ba/2d/e8f495328101898c16c32ac10e7b14b08ff2c443a756a76fd1271915f097/pyobjc_framework_quartz-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:629b7971b1b43a11617f1460cd218bd308dfea247cd4ee3842eb40ca6f588860", size = 219206, upload-time = "2025-11-14T10:00:15.623Z" }, - { url = "https://files.pythonhosted.org/packages/67/43/b1f0ad3b842ab150a7e6b7d97f6257eab6af241b4c7d14cb8e7fde9214b8/pyobjc_framework_quartz-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:53b84e880c358ba1ddcd7e8d5ea0407d760eca58b96f0d344829162cda5f37b3", size = 224317, upload-time = "2025-11-14T10:00:30.703Z" }, - { url = "https://files.pythonhosted.org/packages/4a/00/96249c5c7e5aaca5f688ca18b8d8ad05cd7886ebd639b3c71a6a4cadbe75/pyobjc_framework_quartz-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:42d306b07f05ae7d155984503e0fb1b701fecd31dcc5c79fe8ab9790ff7e0de0", size = 219558, upload-time = "2025-11-14T10:00:45.476Z" }, - { url = "https://files.pythonhosted.org/packages/4d/a6/708a55f3ff7a18c403b30a29a11dccfed0410485a7548c60a4b6d4cc0676/pyobjc_framework_quartz-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0cc08fddb339b2760df60dea1057453557588908e42bdc62184b6396ce2d6e9a", size = 224580, upload-time = "2025-11-14T10:01:00.091Z" }, -] - -[[package]] -name = "pyobjc-framework-quicklookthumbnailing" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/97/1a/b90539500e9a27c2049c388d85a824fc0704009b11e33b05009f52a6dc67/pyobjc_framework_quicklookthumbnailing-12.1.tar.gz", hash = "sha256:4f7e09e873e9bda236dce6e2f238cab571baeb75eca2e0bc0961d5fcd85f3c8f", size = 14790, upload-time = "2025-11-14T10:21:26.442Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/22/7bd07b5b44bf8540514a9f24bc46da68812c1fd6c63bb2d3496e5ea44bf0/pyobjc_framework_quicklookthumbnailing-12.1-py2.py3-none-any.whl", hash = "sha256:5efe50b0318188b3a4147681788b47fce64709f6fe0e1b5d020e408ef40ab08e", size = 4234, upload-time = "2025-11-14T10:01:02.209Z" }, -] - -[[package]] -name = "pyobjc-framework-replaykit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/35/f8/b92af879734d91c1726227e7a03b9e68ab8d9d2bb1716d1a5c29254087f2/pyobjc_framework_replaykit-12.1.tar.gz", hash = "sha256:95801fd35c329d7302b2541f2754e6574bf36547ab869fbbf41e408dfa07268a", size = 23312, upload-time = "2025-11-14T10:21:29.18Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/fc/c68d2111b2655148d88574959d3d8b21d3a003573013301d4d2a7254c1af/pyobjc_framework_replaykit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b0528c2a6188440fdc2017f0924c0a0f15d0a2f6aa295f1d1c2d6b3894c22f1d", size = 10120, upload-time = "2025-11-14T10:01:08.397Z" }, - { url = "https://files.pythonhosted.org/packages/22/f1/95d3cf08a5b747e15dfb45f4ad23aeae566e75e6c54f3c58caf59b99f4d9/pyobjc_framework_replaykit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:18af5ab59574102978790ce9ccc89fe24be9fa57579f24ed8cfc2b44ea28d839", size = 10141, upload-time = "2025-11-14T10:01:10.366Z" }, - { url = "https://files.pythonhosted.org/packages/4e/78/fac397700f62fdb73161e04affd608678883e9476553fd99e9d65db51f79/pyobjc_framework_replaykit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:31c826a71b76cd7d12c3f30956c202116b0c985a19eb420e91fc1f51bedd2f72", size = 10319, upload-time = "2025-11-14T10:01:12.058Z" }, - { url = "https://files.pythonhosted.org/packages/f7/e7/e3efd189fbaf349962a98db3d63b3ba30fd5f27e249cc933993478421ebc/pyobjc_framework_replaykit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:d6d8046825149f7f2627987a1b48ac7e4c9747a15e263054de0dfde1926a0f42", size = 10194, upload-time = "2025-11-14T10:01:13.754Z" }, - { url = "https://files.pythonhosted.org/packages/2b/52/7564ac0133033853432f3a3abf30fb98f820461c147c904cc8ed6c779d85/pyobjc_framework_replaykit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9f77dc914d5aabcd9273c39777a3372175aa839a3bd7f673a0ead4b7f2cf4211", size = 10383, upload-time = "2025-11-14T10:01:15.673Z" }, -] - -[[package]] -name = "pyobjc-framework-safariservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/4b/8f896bafbdbfa180a5ba1e21a6f5dc63150c09cba69d85f68708e02866ae/pyobjc_framework_safariservices-12.1.tar.gz", hash = "sha256:6a56f71c1e692bca1f48fe7c40e4c5a41e148b4e3c6cfb185fd80a4d4a951897", size = 25165, upload-time = "2025-11-14T10:21:32.041Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/3a/8c525562fd782c88bc44e8c07fc2c073919f98dead08fffd50f280ef1afa/pyobjc_framework_safariservices-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b475abc82504fc1c0801096a639562d6a6d37370193e8e4a406de9199a7cea13", size = 7281, upload-time = "2025-11-14T10:01:21.238Z" }, - { url = "https://files.pythonhosted.org/packages/b6/e7/fc984cf2471597e71378b4f82be4a1923855a4c4a56486cc8d97fdaf1694/pyobjc_framework_safariservices-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:592cf5080a9e7f104d6a8d338ebf2523a961f38068f238f11783e86dc105f9c7", size = 7304, upload-time = "2025-11-14T10:01:22.786Z" }, - { url = "https://files.pythonhosted.org/packages/6e/99/3d3062808a64422f39586519d38a52e73304ed60f45500b2c75b97fdd667/pyobjc_framework_safariservices-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:097a2166f79c60633e963913722a087a13b1c5849f3173655b24a8be47039ac4", size = 7308, upload-time = "2025-11-14T10:01:24.299Z" }, - { url = "https://files.pythonhosted.org/packages/99/c3/766dd0e14d61ed05d416bccc4435a977169d5256828ab31ba5939b2f953d/pyobjc_framework_safariservices-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:090afa066820de497d2479a1c5bd4c8ed381eb36a615e4644e12e347ec9d9a3e", size = 7333, upload-time = "2025-11-14T10:01:25.874Z" }, - { url = "https://files.pythonhosted.org/packages/80/8c/93bd8887d83c7f7f6d920495a185f2e4f7d2c41bad7b93652a664913b94d/pyobjc_framework_safariservices-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:3fc553396c51a7fd60c0a2e2b1cdb3fecab135881115adf2f1bbaeb64f801863", size = 7340, upload-time = "2025-11-14T10:01:27.726Z" }, -] - -[[package]] -name = "pyobjc-framework-safetykit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f4/bf/ad6bf60ceb61614c9c9f5758190971e9b90c45b1c7a244e45db64138b6c2/pyobjc_framework_safetykit-12.1.tar.gz", hash = "sha256:0cd4850659fb9b5632fd8ad21f2de6863e8303ff0d51c5cc9c0034aac5db08d8", size = 20086, upload-time = "2025-11-14T10:21:34.212Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/0c/08a20fb7516405186c0fe7299530edd4aa22c24f73290198312447f26c8c/pyobjc_framework_safetykit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e4977f7069a23252053d1a42b1a053aefc19b85c960a5214b05daf3c037a6f16", size = 8550, upload-time = "2025-11-14T10:01:32.885Z" }, - { url = "https://files.pythonhosted.org/packages/02/c5/0e8961e48a2e5942f3f4fad46be5a7b47e17792d89f4c2405b065c1241b5/pyobjc_framework_safetykit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:20170b4869c4ee5485f750ad02bbfcb25c53bbfe86892e5328096dc3c6478b83", size = 8564, upload-time = "2025-11-14T10:01:34.934Z" }, - { url = "https://files.pythonhosted.org/packages/48/3f/fdadc2b992cb3e08269fc75dec3128f8153dd833715b9fbfb975c193c4d2/pyobjc_framework_safetykit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a935c55ae8e731a44c3cb74324da7517634bfc0eca678b6d4b2f9fe04ff53d8", size = 8720, upload-time = "2025-11-14T10:01:36.564Z" }, - { url = "https://files.pythonhosted.org/packages/d9/ec/759117239a3edbd8994069f1f595e4fbc72fa60fa7ebb4aeb4fd47265e7c/pyobjc_framework_safetykit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:1b0e8761fd53e6a83a48dbd93961434b05fe17658478b9001c65627da46ba02b", size = 8616, upload-time = "2025-11-14T10:01:38.616Z" }, - { url = "https://files.pythonhosted.org/packages/43/fd/72e9d6703a0281ffc086b3655c63ca2502ddaff52b3b82e9eb1c9a206493/pyobjc_framework_safetykit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:b3ea88d1de4be84f630e25856abb417f3b19c242038ac061cca85a9a9e3dc61b", size = 8778, upload-time = "2025-11-14T10:01:40.968Z" }, -] - -[[package]] -name = "pyobjc-framework-scenekit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/8c/1f4005cf0cb68f84dd98b93bbc0974ee7851bb33d976791c85e042dc2278/pyobjc_framework_scenekit-12.1.tar.gz", hash = "sha256:1bd5b866f31fd829f26feac52e807ed942254fd248115c7c742cfad41d949426", size = 101212, upload-time = "2025-11-14T10:21:41.265Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/f1/4986bd96e0ba0f60bff482a6b135b9d6db65d56578d535751f18f88190f0/pyobjc_framework_scenekit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:40aea10098893f0b06191f1e79d7b25e12e36a9265549d324238bdb25c7e6df0", size = 33597, upload-time = "2025-11-14T10:01:51.297Z" }, - { url = "https://files.pythonhosted.org/packages/4a/82/c728a025fd09cd259870d43b68ce8e7cffb639112033693ffa02d3d1eac0/pyobjc_framework_scenekit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a032377a7374320131768b6c8bf84589e45819d9e0fe187bd3f8d985207016b9", size = 33623, upload-time = "2025-11-14T10:01:54.878Z" }, - { url = "https://files.pythonhosted.org/packages/5e/ef/9cea4cc4ac7f43fa6fb60d0690d25b2da1d8e1cf42266316014d1bb43a11/pyobjc_framework_scenekit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:633909adff9b505b49c34307f507f4bd926b88a1482d8143655d5703481cbbf5", size = 33934, upload-time = "2025-11-14T10:01:57.994Z" }, - { url = "https://files.pythonhosted.org/packages/5a/0c/eb436dda11b6f950bff7f7d9af108970058f2fa9822a946a6982d74a64f8/pyobjc_framework_scenekit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:d4c8512c9186f12602ac19558072cdeec3a607d628c269317d5965341a14372c", size = 33728, upload-time = "2025-11-14T10:02:01.639Z" }, - { url = "https://files.pythonhosted.org/packages/52/20/2adb296dd6ac1619bf4e2e8a878be7e13b8ed362d9d649c88734998a5cf7/pyobjc_framework_scenekit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:b99a99edf37c8fe4194a9c0ab2092f57e564e07adb1ad54ef82b7213184be668", size = 34009, upload-time = "2025-11-14T10:02:05.107Z" }, -] - -[[package]] -name = "pyobjc-framework-screencapturekit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coremedia" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2d/7f/73458db1361d2cb408f43821a1e3819318a0f81885f833d78d93bdc698e0/pyobjc_framework_screencapturekit-12.1.tar.gz", hash = "sha256:50992c6128b35ab45d9e336f0993ddd112f58b8c8c8f0892a9cb42d61bd1f4c9", size = 32573, upload-time = "2025-11-14T10:21:44.497Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/a8/533acdbf26e0a908ff640d3a445481f3c948682ca887be6711b5fcf82682/pyobjc_framework_screencapturekit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:27df138ce2dfa9d4aae5106d4877e9ed694b5a174643c058f1c48678ffc7001a", size = 11504, upload-time = "2025-11-14T10:02:11.36Z" }, - { url = "https://files.pythonhosted.org/packages/45/f9/ff713b8c4659f9ef1c4dbb8ca4b59c4b22d9df48471230979d620709e3b4/pyobjc_framework_screencapturekit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:168125388fb35c6909bec93b259508156e89b9e30fec5748d4a04fd0157f0e0d", size = 11523, upload-time = "2025-11-14T10:02:13.494Z" }, - { url = "https://files.pythonhosted.org/packages/f0/26/8bf1bacdb2892cf26d043c7f6e8788a613bbb2ccb313a5ea0634612cfc24/pyobjc_framework_screencapturekit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4fc2fe72c1da5ac1b8898a7b2082ed69803e6d9c11f414bb5a5ec94422a5f74f", size = 11701, upload-time = "2025-11-14T10:02:15.634Z" }, - { url = "https://files.pythonhosted.org/packages/be/b4/881e2ff0e11e7d705716f01f1bfd10232f7d21bda38d630c3fbe409b13a9/pyobjc_framework_screencapturekit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:be210ea5df36c1392425c026c59c5e0797b0d6e07ee9551d032e40bed95d2833", size = 11581, upload-time = "2025-11-14T10:02:17.467Z" }, - { url = "https://files.pythonhosted.org/packages/24/d0/69f295412d5dfacb6e6890ee128b9c80c8f4f584c20842c576ee154bfc0b/pyobjc_framework_screencapturekit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:534f3a433edf6417c3dd58ac52a69360e5a19c924d1cb389495c4d6cc13a875d", size = 11783, upload-time = "2025-11-14T10:02:19.257Z" }, -] - -[[package]] -name = "pyobjc-framework-screensaver" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7d/99/7cfbce880cea61253a44eed594dce66c2b2fbf29e37eaedcd40cffa949e9/pyobjc_framework_screensaver-12.1.tar.gz", hash = "sha256:c4ca111317c5a3883b7eace0a9e7dd72bc6ffaa2ca954bdec918c3ab7c65c96f", size = 22229, upload-time = "2025-11-14T10:21:47.299Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/a4/2481711f2e9557b90bac74fa8bf821162cf7b65835732ae560fd52e9037e/pyobjc_framework_screensaver-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a3c90c2299eac6d01add81427ae2f90d7724f15d676261e838d7a7750f812322", size = 8422, upload-time = "2025-11-14T10:02:24.49Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8a/2e0cb958e872896b67ae6d5877070867f4a845ea1010984ff887ad418396/pyobjc_framework_screensaver-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2a865b6dbb39fb92cdb67b13f68d594ab84d08a984cc3e9a39fab3386f431649", size = 8442, upload-time = "2025-11-14T10:02:26.135Z" }, - { url = "https://files.pythonhosted.org/packages/35/45/3eb9984119be3dcd90f4628ecc3964c1a394b702a71034af6d932f98de3a/pyobjc_framework_screensaver-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c249dffcb95d55fc6be626bf17f70b477e320c33d94e234597bc0074e302cfcd", size = 8450, upload-time = "2025-11-14T10:02:27.782Z" }, - { url = "https://files.pythonhosted.org/packages/c6/97/2fab7dfb449ccc49fb617ade97bfa35689572c71fff5885ea25705479a30/pyobjc_framework_screensaver-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:4744a01043a9c6b464f6a2230948812bf88bdd68f084b6f05b475b93093c3ea9", size = 8477, upload-time = "2025-11-14T10:02:29.424Z" }, - { url = "https://files.pythonhosted.org/packages/59/e1/605137cc679dbeddc08470397d05dfd7c20e4c626924d33030c3aa45c39a/pyobjc_framework_screensaver-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c02ec9dccf49463056a438b7f8a6374dc2416d4a0672003382d50603aed9ab5d", size = 8501, upload-time = "2025-11-14T10:02:31.09Z" }, -] - -[[package]] -name = "pyobjc-framework-screentime" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/10/11/ba18f905321895715dac3cae2071c2789745ae13605b283b8114b41e0459/pyobjc_framework_screentime-12.1.tar.gz", hash = "sha256:583de46b365543bbbcf27cd70eedd375d397441d64a2cf43c65286fd9c91af55", size = 13413, upload-time = "2025-11-14T10:21:49.17Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/06/904174de6170e11b53673cc5844e5f13394eeeed486e0bcdf5288c1b0853/pyobjc_framework_screentime-12.1-py2.py3-none-any.whl", hash = "sha256:d34a068ec8ba2704987fcd05c37c9a9392de61d92933e6e71c8e4eaa4dfce029", size = 3963, upload-time = "2025-11-14T10:02:32.577Z" }, -] - -[[package]] -name = "pyobjc-framework-scriptingbridge" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0c/cb/adc0a09e8c4755c2281bd12803a87f36e0832a8fc853a2d663433dbb72ce/pyobjc_framework_scriptingbridge-12.1.tar.gz", hash = "sha256:0e90f866a7e6a8aeaf723d04c826657dd528c8c1b91e7a605f8bb947c74ad082", size = 20339, upload-time = "2025-11-14T10:21:51.769Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/46/e0b07d2b3ff9effb8b1179a6cc681a953d3dfbf0eb8b1d6a0e54cef2e922/pyobjc_framework_scriptingbridge-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8083cd68c559c55a3787b2e74fc983c8665e5078571475aaeabf4f34add36b62", size = 8356, upload-time = "2025-11-14T10:02:38.559Z" }, - { url = "https://files.pythonhosted.org/packages/1a/da/b11568f21924a994aa59272e2752e742f8380ab2cf88d111326ba7baede0/pyobjc_framework_scriptingbridge-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bddbd3a13bfaeaa38ab66e44f10446d5bc7d1110dbc02e59b80bcd9c3a60548a", size = 8371, upload-time = "2025-11-14T10:02:40.603Z" }, - { url = "https://files.pythonhosted.org/packages/77/eb/9bc3e6e9611d757fc80b4423cc28128750a72eae8241be8ae43e1d76c4cd/pyobjc_framework_scriptingbridge-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:148191010b4e10c3938cdb2dcecad43fa0884cefb5a78499a21bdaf5a78318b3", size = 8526, upload-time = "2025-11-14T10:02:42.298Z" }, - { url = "https://files.pythonhosted.org/packages/b1/bc/5f1d372bb1efa9cf1e3218e1831136f5548b9f5b12a4a6676bf8b37cca63/pyobjc_framework_scriptingbridge-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:48f4bc33b2cab6634f58f37549096bda9ec7d3ec664b4b40e7d3248d9f481f69", size = 8406, upload-time = "2025-11-14T10:02:43.979Z" }, - { url = "https://files.pythonhosted.org/packages/42/c2/c223ac13c69e99787301ad8e4be32fc192e067e4e2798e0e5cceabf1abbe/pyobjc_framework_scriptingbridge-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:81bf8b19cd7fd1db055530007bc724901fd61160823324ec2df0daa8e25b94f7", size = 8564, upload-time = "2025-11-14T10:02:45.629Z" }, -] - -[[package]] -name = "pyobjc-framework-searchkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-coreservices" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/60/a38523198430e14fdef21ebe62a93c43aedd08f1f3a07ea3d96d9997db5d/pyobjc_framework_searchkit-12.1.tar.gz", hash = "sha256:ddd94131dabbbc2d7c3f17db3da87c1a712c431310eef16f07187771e7e85226", size = 30942, upload-time = "2025-11-14T10:21:55.483Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/46/4f9cd3011f47b43b21b2924ab3770303c3f0a4d16f05550d38c5fcb42e78/pyobjc_framework_searchkit-12.1-py2.py3-none-any.whl", hash = "sha256:844ce62b7296b19da8db7dedd539d07f7b3fb3bb8b029c261f7bcf0e01a97758", size = 3733, upload-time = "2025-11-14T10:02:47.026Z" }, -] - -[[package]] -name = "pyobjc-framework-security" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/80/aa/796e09a3e3d5cee32ebeebb7dcf421b48ea86e28c387924608a05e3f668b/pyobjc_framework_security-12.1.tar.gz", hash = "sha256:7fecb982bd2f7c4354513faf90ba4c53c190b7e88167984c2d0da99741de6da9", size = 168044, upload-time = "2025-11-14T10:22:06.334Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/66/5160c0f938fc0515fe8d9af146aac1b093f7ef285ce797fedae161b6c0e8/pyobjc_framework_security-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab42e55f5b782332be5442750fcd9637ee33247d57c7b1d5801bc0e24ee13278", size = 41280, upload-time = "2025-11-14T10:02:58.097Z" }, - { url = "https://files.pythonhosted.org/packages/32/48/b294ed75247c5cfa00d51925a10237337d24f54961d49a179b20a4307642/pyobjc_framework_security-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:afc36661cc6eb98cd794bed1d6668791e96557d6f72d9ac70aa49022d26af1d4", size = 41284, upload-time = "2025-11-14T10:03:01.722Z" }, - { url = "https://files.pythonhosted.org/packages/ef/57/0d3ef78779cf5c3bba878b2f824137e50978ad4a21dabe65d8b5ae0fc0d1/pyobjc_framework_security-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9510c98ab56921d1d416437372605cc1c1f6c1ad8d3061ee56b17bf423dd5427", size = 42162, upload-time = "2025-11-14T10:03:05.337Z" }, - { url = "https://files.pythonhosted.org/packages/66/4d/63c15f9449c191e7448a05ff8af4a82c39a51bb627bc96dc9697586c0f79/pyobjc_framework_security-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6319a34508fd87ab6ca3cda6f54e707196197a65b792b292705af967e225438a", size = 41348, upload-time = "2025-11-14T10:03:08.926Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d8/5aaa2a8124ed04a9d6ca7053dc0fa64e42be51497ed8263a24b744a95598/pyobjc_framework_security-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:03d166371cefdef24908825148eb848f99ee2c0b865870a09dcbb94334dd3e0a", size = 42908, upload-time = "2025-11-14T10:03:13.01Z" }, -] - -[[package]] -name = "pyobjc-framework-securityfoundation" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-security" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/57/d5/c2b77e83c1585ba43e5f00c917273ba4bf7ed548c1b691f6766eb0418d52/pyobjc_framework_securityfoundation-12.1.tar.gz", hash = "sha256:1f39f4b3db6e3bd3a420aaf4923228b88e48c90692cf3612b0f6f1573302a75d", size = 12669, upload-time = "2025-11-14T10:22:09.256Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/1e/349fb71a413b37b1b41e712c7ca180df82144478f8a9a59497d66d0f2ea2/pyobjc_framework_securityfoundation-12.1-py2.py3-none-any.whl", hash = "sha256:579cf23e63434226f78ffe0afb8426e971009588e4ad812c478d47dfd558201c", size = 3792, upload-time = "2025-11-14T10:03:14.459Z" }, -] - -[[package]] -name = "pyobjc-framework-securityinterface" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-security" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f9/64/bf5b5d82655112a2314422ee649f1e1e73d4381afa87e1651ce7e8444694/pyobjc_framework_securityinterface-12.1.tar.gz", hash = "sha256:deef11ad03be8d9ff77db6e7ac40f6b641ee2d72eaafcf91040537942472e88b", size = 25552, upload-time = "2025-11-14T10:22:12.098Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/59/3e/17889a6de03dc813606bb97887dc2c4c2d4e7c8f266bc439548bae756e90/pyobjc_framework_securityinterface-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:5cb5e79a73ea17663ebd29e350401162d93e42343da7d96c77efb38ae64ff01f", size = 10783, upload-time = "2025-11-14T10:03:20.202Z" }, - { url = "https://files.pythonhosted.org/packages/78/c0/b286689fca6dd23f1ad5185eb429a12fba60d157d7d53f6188c19475b331/pyobjc_framework_securityinterface-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:af5db06d53c92f05446600d241afab5aec6fec7ab10941b4eeb27a452c543b64", size = 10799, upload-time = "2025-11-14T10:03:22.296Z" }, - { url = "https://files.pythonhosted.org/packages/72/52/d378f25bb15f0d34e610f6cba50cedb0b99fdbae9bae9c0f0e715340f338/pyobjc_framework_securityinterface-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:08516c01954233fecb9bd203778b1bf559d427ccea26444ae1fa93691e751ddd", size = 11139, upload-time = "2025-11-14T10:03:24.17Z" }, - { url = "https://files.pythonhosted.org/packages/8e/df/c6b30b5eb671755d6d59baa34c406d38524eef309886b6a7d9b7a05eb00a/pyobjc_framework_securityinterface-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:153632d23b0235faa56d26d5641e585542dac6b13b0d7b152cca27655405dec4", size = 10836, upload-time = "2025-11-14T10:03:26.179Z" }, - { url = "https://files.pythonhosted.org/packages/aa/11/0e439fe86d93afd43587640e2904e73ff6d9c9401537b1e142cb623d95f6/pyobjc_framework_securityinterface-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:b9eb42c5d4c62af83d69adeff3608af9cd4cfe5b7c9885a6a399be74fcc3d0f0", size = 11182, upload-time = "2025-11-14T10:03:27.948Z" }, -] - -[[package]] -name = "pyobjc-framework-securityui" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-security" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/83/3f/d870305f5dec58cd02966ca06ac29b69fb045d8b46dfb64e2da31f295345/pyobjc_framework_securityui-12.1.tar.gz", hash = "sha256:f1435fed85edc57533c334a4efc8032170424b759da184cb7a7a950ceea0e0b6", size = 12184, upload-time = "2025-11-14T10:22:14.323Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/7f/eff9ffdd34511cc95a60e5bd62f1cfbcbcec1a5012ef1168161506628c87/pyobjc_framework_securityui-12.1-py2.py3-none-any.whl", hash = "sha256:3e988b83c9a2bb0393207eaa030fc023a8708a975ac5b8ea0508cdafc2b60705", size = 3594, upload-time = "2025-11-14T10:03:29.628Z" }, -] - -[[package]] -name = "pyobjc-framework-sensitivecontentanalysis" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/ce/17bf31753e14cb4d64fffaaba2377453c4977c2c5d3cf2ff0a3db30026c7/pyobjc_framework_sensitivecontentanalysis-12.1.tar.gz", hash = "sha256:2c615ac10e93eb547b32b214cd45092056bee0e79696426fd09978dc3e670f25", size = 13745, upload-time = "2025-11-14T10:22:16.447Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/23/c99568a0d4e38bd8337d52e4ae25a0b0bd540577f2e06f3430c951d73209/pyobjc_framework_sensitivecontentanalysis-12.1-py2.py3-none-any.whl", hash = "sha256:faf19d32d4599ac2b18fb1ccdc3e33b2b242bdf34c02e69978bd62d3643ad068", size = 4230, upload-time = "2025-11-14T10:03:31.26Z" }, -] - -[[package]] -name = "pyobjc-framework-servicemanagement" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/31/d0/b26c83ae96ab55013df5fedf89337d4d62311b56ce3f520fc7597d223d82/pyobjc_framework_servicemanagement-12.1.tar.gz", hash = "sha256:08120981749a698033a1d7a6ab99dbbe412c5c0d40f2b4154014b52113511c1d", size = 14585, upload-time = "2025-11-14T10:22:18.735Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/5d/1009c32189f9cb26da0124b4a60640ed26dd8ad453810594f0cbfab0ff70/pyobjc_framework_servicemanagement-12.1-py2.py3-none-any.whl", hash = "sha256:9a2941f16eeb71e55e1cd94f50197f91520778c7f48ad896761f5e78725cc08f", size = 5357, upload-time = "2025-11-14T10:03:32.928Z" }, -] - -[[package]] -name = "pyobjc-framework-sharedwithyou" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-sharedwithyoucore" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0f/8b/8ab209a143c11575a857e2111acc5427fb4986b84708b21324cbcbf5591b/pyobjc_framework_sharedwithyou-12.1.tar.gz", hash = "sha256:167d84794a48f408ee51f885210c616fda1ec4bff3dd8617a4b5547f61b05caf", size = 24791, upload-time = "2025-11-14T10:22:21.248Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/ee/e5113ce985a480d13a0fa3d41a242c8068dc09b3c13210557cf5cc6a544a/pyobjc_framework_sharedwithyou-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a99a6ebc6b6de7bc8663b1f07332fab9560b984a57ce344dc5703f25258f258d", size = 8763, upload-time = "2025-11-14T10:03:38.467Z" }, - { url = "https://files.pythonhosted.org/packages/2e/51/e833c41cb6578f51623da361f6ded50b5b91331f9339b125ea50b4e62f8b/pyobjc_framework_sharedwithyou-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:491b35cdb3a0bc11e730c96d4109944c77ab153573a28220ff12d41d34dd9c0f", size = 8781, upload-time = "2025-11-14T10:03:40.14Z" }, - { url = "https://files.pythonhosted.org/packages/59/c4/b843dc3b7bd1385634df7f0bb8b557d8d09df3a384c7b2df0bc85af5bd4e/pyobjc_framework_sharedwithyou-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:50f0b32e2bf6f7ceb3af4422b015f674dc20a8cb1afa72d78f7e4186eb3710b9", size = 8917, upload-time = "2025-11-14T10:03:41.824Z" }, - { url = "https://files.pythonhosted.org/packages/1e/b0/eca22cf9ba67c8ba04a98f8a26af0a5ca16b40e05a8100b8209a153046b1/pyobjc_framework_sharedwithyou-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5a38bc6e3e0c9a36fe86e331eb16b680bab0024c897d252af1e611f0cd1087ef", size = 8824, upload-time = "2025-11-14T10:03:43.492Z" }, - { url = "https://files.pythonhosted.org/packages/b3/e9/4cc7420c7356b1a25b4c9a4544454e99c3da8d50ee4b4d9b55a82eb5a836/pyobjc_framework_sharedwithyou-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1b65c51a8f6f5baf382e419cda74896d196625f1468710660a1a87a8b02b34dc", size = 8970, upload-time = "2025-11-14T10:03:45.19Z" }, -] - -[[package]] -name = "pyobjc-framework-sharedwithyoucore" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/55/ef/84059c5774fd5435551ab7ab40b51271cfb9997b0d21f491c6b429fe57a8/pyobjc_framework_sharedwithyoucore-12.1.tar.gz", hash = "sha256:0813149eeb755d718b146ec9365eb4ca3262b6af9ff9ba7db2f7b6f4fd104518", size = 22350, upload-time = "2025-11-14T10:22:23.611Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/0e/0c2b0591ebc72d437dccca7a1e7164c5f11dde2189d4f4c707a132bab740/pyobjc_framework_sharedwithyoucore-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed928266ae9d577ff73de72a03bebc66a751918eb59ca660a9eca157392f17be", size = 8530, upload-time = "2025-11-14T10:03:50.839Z" }, - { url = "https://files.pythonhosted.org/packages/5e/23/2446cb158efe0f55d983ae7b4729b3b24c52a1370b5d22bc134f046cdb34/pyobjc_framework_sharedwithyoucore-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:13eebca21722556449e47b0eda3339165b5afbb455ae00b34aabe03988affd7a", size = 8547, upload-time = "2025-11-14T10:03:52.459Z" }, - { url = "https://files.pythonhosted.org/packages/8e/42/6c5de4e508a0c0f4715e3466c0035e23b5875d2a43525a6ed81e4770ad3c/pyobjc_framework_sharedwithyoucore-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:d9aa525cdff75005a8f0ca2f7afdd1535b9e34ccafb6a92a932f3ded4b6d64d4", size = 8677, upload-time = "2025-11-14T10:03:54.15Z" }, - { url = "https://files.pythonhosted.org/packages/94/a1/24ffb35098a239a8804e469fcd7430eaee5e47bf0756c59cd77a66c3edff/pyobjc_framework_sharedwithyoucore-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:2ceb4c3ad7bc1c93b4cbbbab6404d3e32714c12c36fab2932c170946af83c548", size = 8591, upload-time = "2025-11-14T10:03:56.543Z" }, - { url = "https://files.pythonhosted.org/packages/9f/5e/2460f60a931f11933ea6d5d1f7c73b6f4ade7980360cfcf327cb785b7bf8/pyobjc_framework_sharedwithyoucore-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0a55c843bd4cfdefa4a4566ccb64782466341715ecab3956c3566dbfbad0d1e5", size = 8739, upload-time = "2025-11-14T10:03:58.23Z" }, -] - -[[package]] -name = "pyobjc-framework-shazamkit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/2c/8d82c5066cc376de68ad8c1454b7c722c7a62215e5c2f9dac5b33a6c3d42/pyobjc_framework_shazamkit-12.1.tar.gz", hash = "sha256:71db2addd016874639a224ed32b2000b858802b0370c595a283cce27f76883fe", size = 22518, upload-time = "2025-11-14T10:22:25.996Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/5e/7d60d8e7b036b20d0e94cd7c4563e7414653344482e85fbc7facffabc95f/pyobjc_framework_shazamkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e184dd0f61a604b1cfcf44418eb95b943e7b8f536058a29e4b81acadd27a9420", size = 8577, upload-time = "2025-11-14T10:04:04.182Z" }, - { url = "https://files.pythonhosted.org/packages/a9/fa/476cf0eb6f70e434056276b1a52bb47419e4b91d80e0c8e1190ce84f888f/pyobjc_framework_shazamkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:957c5e31b2b275c822ea43d7c4435fa1455c6dc5469ad4b86b29455571794027", size = 8587, upload-time = "2025-11-14T10:04:06.351Z" }, - { url = "https://files.pythonhosted.org/packages/9a/69/105fccda6c5ca32d35edc5e055d4cffc9aefe6a40fdd00bb21ec5d21e0ce/pyobjc_framework_shazamkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:eb2875ddf18d3cd2dc2b1327f58e142b9bd86fafd32078387ed867ec5a6c5571", size = 8734, upload-time = "2025-11-14T10:04:08.33Z" }, - { url = "https://files.pythonhosted.org/packages/8d/79/09d4b2c121d3d3a662e19d67328904fd62a3303b7a169698d654a3493140/pyobjc_framework_shazamkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:951b989997a7c19d0c0d91a477d3d221ddb890085f3538ae3c520177c2322caa", size = 8647, upload-time = "2025-11-14T10:04:09.972Z" }, - { url = "https://files.pythonhosted.org/packages/74/37/859660e654ebcf6b0b4a7f3016a0473629642cf387419be2052f363a6001/pyobjc_framework_shazamkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:70f203ffe3e4c130b3a9c699d9a2081884bd7b3bd1ce08c7402b6d60fc755d75", size = 8790, upload-time = "2025-11-14T10:04:11.957Z" }, -] - -[[package]] -name = "pyobjc-framework-social" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/31/21/afc6f37dfdd2cafcba0227e15240b5b0f1f4ad57621aeefda2985ac9560e/pyobjc_framework_social-12.1.tar.gz", hash = "sha256:1963db6939e92ae40dd9d68852e8f88111cbfd37a83a9fdbc9a0c08993ca7e60", size = 13184, upload-time = "2025-11-14T10:22:28.048Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/fb/090867e332d49a1e492e4b8972ac6034d1c7d17cf39f546077f35be58c46/pyobjc_framework_social-12.1-py2.py3-none-any.whl", hash = "sha256:2f3b36ba5769503b1bc945f85fd7b255d42d7f6e417d78567507816502ff2b44", size = 4462, upload-time = "2025-11-14T10:04:14.578Z" }, -] - -[[package]] -name = "pyobjc-framework-soundanalysis" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6b/d6/5039b61edc310083425f87ce2363304d3a87617e941c1d07968c63b5638d/pyobjc_framework_soundanalysis-12.1.tar.gz", hash = "sha256:e2deead8b9a1c4513dbdcf703b21650dcb234b60a32d08afcec4895582b040b1", size = 14804, upload-time = "2025-11-14T10:22:29.998Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/d3/8df5183d52d20d459225d3f5d24f55e01b8cd9fe587ed972e3f20dd18709/pyobjc_framework_soundanalysis-12.1-py2.py3-none-any.whl", hash = "sha256:8b2029ab48c1a9772f247f0aea995e8c3ff4706909002a9c1551722769343a52", size = 4188, upload-time = "2025-11-14T10:04:16.12Z" }, -] - -[[package]] -name = "pyobjc-framework-speech" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8d/3d/194cf19fe7a56c2be5dfc28f42b3b597a62ebb1e1f52a7dd9c55b917ac6c/pyobjc_framework_speech-12.1.tar.gz", hash = "sha256:2a2a546ba6c52d5dd35ddcfee3fd9226a428043d1719597e8701851a6566afdd", size = 25218, upload-time = "2025-11-14T10:22:32.505Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/1b/224cb98c9c32a6d5e68072f89d26444095be54c6f461efe4fefe9d1330a5/pyobjc_framework_speech-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:cae4b88ef9563157a6c9e66b37778fc4022ee44dd1a2a53081c2adbb69698945", size = 9254, upload-time = "2025-11-14T10:04:21.361Z" }, - { url = "https://files.pythonhosted.org/packages/21/98/9ae05ebe183f35ac4bb769070f90533405d886fb9216e868e30a0e58d1ad/pyobjc_framework_speech-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:49df0ac39ae6fb44a83b2f4d7f500e0fa074ff58fbc53106d8f626d325079c23", size = 9274, upload-time = "2025-11-14T10:04:23.399Z" }, - { url = "https://files.pythonhosted.org/packages/ec/9d/41581c58ea8f8962189bcf6a15944f9a0bf36b46c5fce611a9632b3344a2/pyobjc_framework_speech-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ed5455f6d9e473c08ebf904ae280ad5fd0d00a073448bf4f0a01fee5887c5537", size = 9430, upload-time = "2025-11-14T10:04:25.026Z" }, - { url = "https://files.pythonhosted.org/packages/00/df/2af011d05b4ab008b1e9e4b8c71b730926ef8e9599aeb8220a898603580b/pyobjc_framework_speech-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a958b3ace1425cf9319f5d8ace920c2f3dac95a5a6d1bd8742d5b64d24671e30", size = 9336, upload-time = "2025-11-14T10:04:26.764Z" }, - { url = "https://files.pythonhosted.org/packages/6f/2e/51599acce043228164355f073b218253d57c06a2927c5dbebc300c5a4cf8/pyobjc_framework_speech-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:893052631198c5447453f81e4ed4af8077038666a7893fbe2d6a2f72b9c44b7e", size = 9496, upload-time = "2025-11-14T10:04:28.403Z" }, -] - -[[package]] -name = "pyobjc-framework-spritekit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b6/78/d683ebe0afb49f46d2d21d38c870646e7cb3c2e83251f264e79d357b1b74/pyobjc_framework_spritekit-12.1.tar.gz", hash = "sha256:a851f4ef5aa65cc9e08008644a528e83cb31021a1c0f17ebfce4de343764d403", size = 64470, upload-time = "2025-11-14T10:22:37.569Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/38/97c3b6c3437e3e9267fb4e1cd86e0da4eff07e0abe7cd6923644d2dfc878/pyobjc_framework_spritekit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1649e57c25145795d04bb6a1ec44c20ef7cf0af7c60a9f6f5bc7998dd269db1e", size = 17802, upload-time = "2025-11-14T10:04:35.346Z" }, - { url = "https://files.pythonhosted.org/packages/1f/c6/0e62700fbc90ab57170931fb5056d964202d49efd4d07a610fdaa28ffcfa/pyobjc_framework_spritekit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd6847cb7a287c42492ffd7c30bc08165f4fbb51b2602290e001c0d27e0aa0f0", size = 17818, upload-time = "2025-11-14T10:04:37.804Z" }, - { url = "https://files.pythonhosted.org/packages/a6/22/26b19fc487913d9324cbba824841c9ac921aa9bdd6e340ed46b9968547bc/pyobjc_framework_spritekit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:dd6e309aa284fa9b434aa7bf8ab9ab23fe52e7a372e2db3869586a74471f3419", size = 18088, upload-time = "2025-11-14T10:04:39.973Z" }, - { url = "https://files.pythonhosted.org/packages/13/df/453d5885c79a1341e947c7654aa2c4c0cd6bed5cef4d1c16b26c58051d91/pyobjc_framework_spritekit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5c9cb8f23436fc7bd0a8149f1271b307131a4c5669dfbb8302beef56cdca057f", size = 17787, upload-time = "2025-11-14T10:04:42.166Z" }, - { url = "https://files.pythonhosted.org/packages/6d/96/4cf353ee49e92f7df02b069eb8eeb6cc36ac09d40a016cf48d1b462dd4c4/pyobjc_framework_spritekit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9ebe7740c124ea7f8fb765e86df39f331f137be575ddb6d0d81bfb2258ee72d7", size = 18069, upload-time = "2025-11-14T10:04:44.348Z" }, -] - -[[package]] -name = "pyobjc-framework-storekit" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/87/8a66a145feb026819775d44975c71c1c64df4e5e9ea20338f01456a61208/pyobjc_framework_storekit-12.1.tar.gz", hash = "sha256:818452e67e937a10b5c8451758274faa44ad5d4329df0fa85735115fb0608da9", size = 34574, upload-time = "2025-11-14T10:22:40.73Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/9f/938985e506de0cc3a543e44e1f9990e9e2fb8980b8f3bcfc8f7921d09061/pyobjc_framework_storekit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9fe2d65a2b644bb6b4fdd3002292cba153560917de3dd6cf969431fa32d21dd0", size = 12819, upload-time = "2025-11-14T10:04:50.945Z" }, - { url = "https://files.pythonhosted.org/packages/5a/84/d354fd6f50952148614597dd4ebd52ed1d6a3e38cbd5d88e930bd549983d/pyobjc_framework_storekit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:556c3dc187646ab8bda714a7e5630201b931956b81b0162ba420c64f55e5faaf", size = 12835, upload-time = "2025-11-14T10:04:52.866Z" }, - { url = "https://files.pythonhosted.org/packages/4f/24/f8a8d2f1c1107a0a0f85bd830b9e0ff7016d4530924b17787cb8c7bf4f4c/pyobjc_framework_storekit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:15d4643bc4de4aa62f72efcb7a4930bd7e15280867be225bd2c582b3367d75ae", size = 13028, upload-time = "2025-11-14T10:04:55.605Z" }, - { url = "https://files.pythonhosted.org/packages/6d/9b/3d510cc03d5aeef298356578aa8077e4ddebea0a0cd2f50a13bf4f98f9e8/pyobjc_framework_storekit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:5e9354f2373b243066358bf32988d07d8a2da6718563ee6946a40c981a37c7c1", size = 12828, upload-time = "2025-11-14T10:04:57.557Z" }, - { url = "https://files.pythonhosted.org/packages/1a/0c/760f3d4e4deedc11c4144fa3fdf2a697ea7e2f7eef492f6662687b872085/pyobjc_framework_storekit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d11ffe3f8e638ebe7c156c5bf2919115c7562f44f44be8067521b7c5f6e50553", size = 13013, upload-time = "2025-11-14T10:04:59.517Z" }, -] - -[[package]] -name = "pyobjc-framework-symbols" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9a/ce/a48819eb8524fa2dc11fb3dd40bb9c4dcad0596fe538f5004923396c2c6c/pyobjc_framework_symbols-12.1.tar.gz", hash = "sha256:7d8e999b8a59c97d38d1d343b6253b1b7d04bf50b665700957d89c8ac43b9110", size = 12782, upload-time = "2025-11-14T10:22:42.609Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/ea/6e9af9c750d68109ac54fbffb5463e33a7b54ffe8b9901a5b6b603b7884b/pyobjc_framework_symbols-12.1-py2.py3-none-any.whl", hash = "sha256:c72eecbc25f6bfcd39c733067276270057c5aca684be20fdc56def645f2b6446", size = 3331, upload-time = "2025-11-14T10:05:01.333Z" }, -] - -[[package]] -name = "pyobjc-framework-syncservices" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coredata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/21/91/6d03a988831ddb0fb001b13573560e9a5bcccde575b99350f98fe56a2dd4/pyobjc_framework_syncservices-12.1.tar.gz", hash = "sha256:6a213e93d9ce15128810987e4c5de8c73cfab1564ac8d273e6b437a49965e976", size = 31032, upload-time = "2025-11-14T10:22:45.902Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/ac/a83cdd120e279ee905e9085afda90992159ed30c6a728b2c56fa2d36b6ea/pyobjc_framework_syncservices-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0cd629bea95692aad2d26196657cde2fbadedae252c7846964228661a600b900", size = 13411, upload-time = "2025-11-14T10:05:07.741Z" }, - { url = "https://files.pythonhosted.org/packages/5b/e3/9a6bd76529feffe08a3f6b2962c9a96d75febc02453881ec81389ff9ac13/pyobjc_framework_syncservices-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:606afac9255b5bf828f1dcf7b0d7bdc7726021b686ad4f5743978eb4086902d9", size = 13425, upload-time = "2025-11-14T10:05:09.692Z" }, - { url = "https://files.pythonhosted.org/packages/3b/5d/338850a31968b94417ba95a7b94db9fcd40b16011eaf82f757de7c1eba6c/pyobjc_framework_syncservices-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9d1ebe60e92efd08455be209a265879cf297feda831aadf36431f38229b1dd52", size = 13599, upload-time = "2025-11-14T10:05:11.732Z" }, - { url = "https://files.pythonhosted.org/packages/88/fa/f27f1a706a72c7a87a2aa37e49ae5f5e7445e02323218638e6ff5897c5c9/pyobjc_framework_syncservices-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:2af99db7c23f0368300e8bd428ecfb75b14449d3467e883ff544dbc5ae9e1351", size = 13404, upload-time = "2025-11-14T10:05:13.677Z" }, - { url = "https://files.pythonhosted.org/packages/0c/51/0b135d4af853fabc9a794e78647100503457f9e42e8c0289f745c558c105/pyobjc_framework_syncservices-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c27754af8cb86bd445e1182a184617229fa70cf3a716e740a93b0622f44ceb27", size = 13585, upload-time = "2025-11-14T10:05:16.03Z" }, -] - -[[package]] -name = "pyobjc-framework-systemconfiguration" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/90/7d/50848df8e1c6b5e13967dee9fb91d3391fe1f2399d2d0797d2fc5edb32ba/pyobjc_framework_systemconfiguration-12.1.tar.gz", hash = "sha256:90fe04aa059876a21626931c71eaff742a27c79798a46347fd053d7008ec496e", size = 59158, upload-time = "2025-11-14T10:22:53.056Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/d3/bb935c3d4bae9e6ce4a52638e30eea7039c480dd96bc4f0777c9fabda21b/pyobjc_framework_systemconfiguration-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0e5bb9103d39483964431db7125195c59001b7bff2961869cfe157b4c861e52d", size = 21578, upload-time = "2025-11-14T10:05:25.572Z" }, - { url = "https://files.pythonhosted.org/packages/64/26/22f031c99fd7012dffa41455951004a758aaf9a25216b3a4ee83496bc44f/pyobjc_framework_systemconfiguration-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:359b35c00f52f57834169c1057522279201ac5a64ac5b4d90dbafa40ad6c54b4", size = 21575, upload-time = "2025-11-14T10:05:28.396Z" }, - { url = "https://files.pythonhosted.org/packages/f2/58/648803bdf3d2ebd3221ef43deb008c77aefe0bec231af2aa67e5b29a78e2/pyobjc_framework_systemconfiguration-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f4ff57defb4dcd933db392eb8ea9e5a46005cb7a6f2b46c27ab2dd5e13a459ab", size = 21990, upload-time = "2025-11-14T10:05:30.875Z" }, - { url = "https://files.pythonhosted.org/packages/05/95/9fbb2ab26f03142b84ff577dcd2dcd3ca8b0c13c2f6193ceecd20544b7a5/pyobjc_framework_systemconfiguration-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:e9c597c13b9815dce7e1fccdfae7c66b9df98e8c688b7afdf4af39de26d917b3", size = 21612, upload-time = "2025-11-14T10:05:33.387Z" }, - { url = "https://files.pythonhosted.org/packages/0a/67/c1d5ea1089c41f0d1563ab42d6ff6ed320e195646008c8fdaa3e31d354cd/pyobjc_framework_systemconfiguration-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:10ad47ec2bee4f567e78369359b8c75a23097c6d89b11aa37840c22cc79229f1", size = 21997, upload-time = "2025-11-14T10:05:36.211Z" }, -] - -[[package]] -name = "pyobjc-framework-systemextensions" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/12/01/8a706cd3f7dfcb9a5017831f2e6f9e5538298e90052db3bb8163230cbc4f/pyobjc_framework_systemextensions-12.1.tar.gz", hash = "sha256:243e043e2daee4b5c46cd90af5fff46b34596aac25011bab8ba8a37099685eeb", size = 20701, upload-time = "2025-11-14T10:22:58.257Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/cc/a42883d6ad0ae257a7fa62660b4dd13be15f8fa657922f9a5b6697f26e28/pyobjc_framework_systemextensions-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:01fac4f8d88c0956d9fc714d24811cd070e67200ba811904317d91e849e38233", size = 9166, upload-time = "2025-11-14T10:05:41.479Z" }, - { url = "https://files.pythonhosted.org/packages/dd/ef/fd34784added1dff088bd18cc2694049b0893b01e835587eab1735fd68f3/pyobjc_framework_systemextensions-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:038032801d46cc7b1ea69400f43d5c17b25d7a16efa7a7d9727b25789387a8cf", size = 9185, upload-time = "2025-11-14T10:05:43.136Z" }, - { url = "https://files.pythonhosted.org/packages/72/76/fd6f06e54299998677548bacd21105450bc6435df215a6620422a31b0099/pyobjc_framework_systemextensions-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:2aea4e823d915abca463b1c091ff969cef09108c88b71b68569485dec6f3651d", size = 9345, upload-time = "2025-11-14T10:05:44.814Z" }, - { url = "https://files.pythonhosted.org/packages/af/c8/4e9669b6b43af7f50df43cb76af84805ee3a9b32881d69b4e7685edd3017/pyobjc_framework_systemextensions-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:51f0a4488fa245695c7e8c1c83909c86bf27b34519807437c753602ff6d7e9af", size = 9253, upload-time = "2025-11-14T10:05:46.508Z" }, - { url = "https://files.pythonhosted.org/packages/18/6e/91e55fa71bd402acbf06ecfc342e4f56dbc0f7d622be1e5dd22d13508d0e/pyobjc_framework_systemextensions-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:b393e3bf85ccb9321f134405eac6fd16a8e7f048286301b67f0cf8d99588bf29", size = 9412, upload-time = "2025-11-14T10:05:48.256Z" }, -] - -[[package]] -name = "pyobjc-framework-threadnetwork" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/62/7e/f1816c3461e4121186f2f7750c58af083d1826bbd73f72728da3edcf4915/pyobjc_framework_threadnetwork-12.1.tar.gz", hash = "sha256:e071eedb41bfc1b205111deb54783ec5a035ccd6929e6e0076336107fdd046ee", size = 12788, upload-time = "2025-11-14T10:23:00.329Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/b8/94b37dd353302c051a76f1a698cf55b5ad50ca061db7f0f332aa9e195766/pyobjc_framework_threadnetwork-12.1-py2.py3-none-any.whl", hash = "sha256:07d937748fc54199f5ec04d5a408e8691a870481c11b641785c2adc279dd8e4b", size = 3771, upload-time = "2025-11-14T10:05:49.899Z" }, -] - -[[package]] -name = "pyobjc-framework-uniformtypeidentifiers" -version = "12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/65/b8/dd9d2a94509a6c16d965a7b0155e78edf520056313a80f0cd352413f0d0b/pyobjc_framework_uniformtypeidentifiers-12.1.tar.gz", hash = "sha256:64510a6df78336579e9c39b873cfcd03371c4b4be2cec8af75a8a3d07dff607d", size = 17030, upload-time = "2025-11-14T10:23:02.222Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/5f/1f10f5275b06d213c9897850f1fca9c881c741c1f9190cea6db982b71824/pyobjc_framework_uniformtypeidentifiers-12.1-py2.py3-none-any.whl", hash = "sha256:ec5411e39152304d2a7e0e426c3058fa37a00860af64e164794e0bcffee813f2", size = 4901, upload-time = "2025-11-14T10:05:51.532Z" }, -] - -[[package]] -name = "pyobjc-framework-usernotifications" -version = "12.1" +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, +] + +[[package]] +name = "pydantic-extra-types" +version = "2.11.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, + { name = "pydantic" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/90/cd/e0253072f221fa89a42fe53f1a2650cc9bf415eb94ae455235bd010ee12e/pyobjc_framework_usernotifications-12.1.tar.gz", hash = "sha256:019ccdf2d400f9a428769df7dba4ea97c02453372bc5f8b75ce7ae54dfe130f9", size = 29749, upload-time = "2025-11-14T10:23:05.364Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/71/dba38ee2651f84f7842206adbd2233d8bbdb59fb85e9fa14232486a8c471/pydantic_extra_types-2.11.1.tar.gz", hash = "sha256:46792d2307383859e923d8fcefa82108b1a141f8a9c0198982b3832ab5ef1049", size = 172002, upload-time = "2026-03-16T08:08:03.92Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/c95053a475246464cba686e16269b0973821601910d1947d088b855a8dac/pyobjc_framework_usernotifications-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:412afb2bf5fe0049f9c4e732e81a8a35d5ebf97c30a5a6abd276259d020c82ac", size = 9644, upload-time = "2025-11-14T10:05:56.801Z" }, - { url = "https://files.pythonhosted.org/packages/b1/cc/4c6efe6a65b1742ea238734f81509ceba5346b45f605baa809ca63f30692/pyobjc_framework_usernotifications-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:40a5457f4157ca007f80f0644413f44f0dc141f7864b28e1728623baf56a8539", size = 9659, upload-time = "2025-11-14T10:05:58.763Z" }, - { url = "https://files.pythonhosted.org/packages/06/4e/02ff6975567974f360cf0e1e358236026e35f7ba7795511bc4dcbaa13f62/pyobjc_framework_usernotifications-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:58c09bd1bd7a8cd29613d0d0e6096eda6c8465dc5a7a733675e1b8d0406f7adc", size = 9811, upload-time = "2025-11-14T10:06:00.775Z" }, - { url = "https://files.pythonhosted.org/packages/cd/1a/caa96066b36c2c20ba6f033857fc24ff8e6b5811cf1bc112818928d27216/pyobjc_framework_usernotifications-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:cc69e2aed9b55296a447f2fb69cc52a1a026c50e46253dbf482f5807bce3ae7c", size = 9720, upload-time = "2025-11-14T10:06:02.409Z" }, - { url = "https://files.pythonhosted.org/packages/95/f7/8def35e9e7b2a7a7d4e61923b0f29fcdca70df5ac6b91cddb418a1d5ffed/pyobjc_framework_usernotifications-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0746d2a67ca05ae907b7551ccd3a534e9d6e76115882ab962365f9ad259c4032", size = 9876, upload-time = "2025-11-14T10:06:04.07Z" }, + { url = "https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl", hash = "sha256:1722ea2bddae5628ace25f2aa685b69978ef533123e5638cfbddb999e0100ec1", size = 79526, upload-time = "2026-03-16T08:08:02.533Z" }, +] + +[package.optional-dependencies] +pendulum = [ + { name = "pendulum" }, ] [[package]] -name = "pyobjc-framework-usernotificationsui" -version = "12.1" +name = "pydantic-settings" +version = "2.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-usernotifications" }, + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0e/03/73e29fd5e5973cb3800c9d56107c1062547ef7524cbcc757c3cbbd5465c6/pyobjc_framework_usernotificationsui-12.1.tar.gz", hash = "sha256:51381c97c7344099377870e49ed0871fea85ba50efe50ab05ccffc06b43ec02e", size = 13125, upload-time = "2025-11-14T10:23:07.259Z" } +sdist = { url = "https://files.pythonhosted.org/packages/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa", size = 235551, upload-time = "2026-05-08T13:40:06.542Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/c8/52ac8a879079c1fbf25de8335ff506f7db87ff61e64838b20426f817f5d5/pyobjc_framework_usernotificationsui-12.1-py2.py3-none-any.whl", hash = "sha256:11af59dc5abfcb72c08769ab4d7ca32a628527a8ba341786431a0d2dacf31605", size = 3933, upload-time = "2025-11-14T10:06:05.478Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de", size = 60964, upload-time = "2026-05-08T13:40:04.958Z" }, ] [[package]] -name = "pyobjc-framework-videosubscriberaccount" -version = "12.1" +name = "pydicom" +version = "3.0.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/10/f8/27927a9c125c622656ee5aada4596ccb8e5679da0260742360f193df6dcf/pyobjc_framework_videosubscriberaccount-12.1.tar.gz", hash = "sha256:750459fa88220ab83416f769f2d5d210a1f77b8938fa4d119aad0002fc32846b", size = 18793, upload-time = "2025-11-14T10:23:09.33Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/de/52aaf905f1f0ae7aba85996e2592ea2c1fe49157f3cfbcd1871965bdb51d/pydicom-3.0.2.tar.gz", hash = "sha256:5942bfc2d72c6fa4b3b5b62c527f54b7f2355f21d6f5d296df6bb30188df6a4f", size = 2886792, upload-time = "2026-03-19T21:46:20.935Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/ca/e2f982916267508c1594f1e50d27bf223a24f55a5e175ab7d7822a00997c/pyobjc_framework_videosubscriberaccount-12.1-py2.py3-none-any.whl", hash = "sha256:381a5e8a3016676e52b88e38b706559fa09391d33474d8a8a52f20a883104a7b", size = 4825, upload-time = "2025-11-14T10:06:07.027Z" }, + { url = "https://files.pythonhosted.org/packages/46/e0/60466c6d712dad2cf807df315e39863e91609ffd1064ecb835994460bbda/pydicom-3.0.2-py3-none-any.whl", hash = "sha256:abf971a5440f84dbaf42c4b6758e30e62480902584f8b270b9a5d146e278a07b", size = 2376822, upload-time = "2026-03-19T21:46:19.042Z" }, ] [[package]] -name = "pyobjc-framework-videotoolbox" -version = "12.1" +name = "pygame" +version = "2.6.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coremedia" }, - { name = "pyobjc-framework-quartz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b3/5f/6995ee40dc0d1a3460ee183f696e5254c0ad14a25b5bc5fd9bd7266c077b/pyobjc_framework_videotoolbox-12.1.tar.gz", hash = "sha256:7adc8670f3b94b086aed6e86c3199b388892edab4f02933c2e2d9b1657561bef", size = 57825, upload-time = "2025-11-14T10:23:13.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/49/cc/08bba60f00541f62aaa252ce0cfbd60aebd04616c0b9574f755b583e45ae/pygame-2.6.1.tar.gz", hash = "sha256:56fb02ead529cee00d415c3e007f75e0780c655909aaa8e8bf616ee09c9feb1f", size = 14808125, upload-time = "2024-09-29T13:41:34.698Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/a5/91c6c95416f41c412c2079950527cb746c0712ec319c51a6c728c8d6b231/pyobjc_framework_videotoolbox-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eb6ce6837344ee319122066c16ada4beb913e7bfd62188a8d14b1ecbb5a89234", size = 18908, upload-time = "2025-11-14T10:06:14.087Z" }, - { url = "https://files.pythonhosted.org/packages/f0/59/7fc3d67df437f3e263b477dd181eef3ac3430cb7eb1acc951f5f1e84cc4d/pyobjc_framework_videotoolbox-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca28b39e22016eb5f81f540102a575ee6e6114074d09e17e22eb3b5647976d93", size = 18929, upload-time = "2025-11-14T10:06:16.418Z" }, - { url = "https://files.pythonhosted.org/packages/f4/41/08b526d2f228271994f8216651d2e5c8e76415224daa012e67c53c90fc7a/pyobjc_framework_videotoolbox-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:dba7e078df01432331ee75a90c2c147264bfdb9e31998b4e4fc28913b93b832e", size = 19139, upload-time = "2025-11-14T10:06:18.602Z" }, - { url = "https://files.pythonhosted.org/packages/00/a9/581edc658e3ae242a55d463092a237cf9f744ba5a91d91c769af7d3f2ac6/pyobjc_framework_videotoolbox-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:e67a3890916346b7c15c9270d247e191c3899e4698fee79d460a476145715401", size = 18927, upload-time = "2025-11-14T10:06:20.834Z" }, - { url = "https://files.pythonhosted.org/packages/91/17/97f3e4704246b0496c90bf4c604005f426f62c75e616e68d2e3f8833affb/pyobjc_framework_videotoolbox-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:67227431c340e308c4ecdce743b5d1d27757994663c983f179f2e934acdacb99", size = 19121, upload-time = "2025-11-14T10:06:23.072Z" }, + { url = "https://files.pythonhosted.org/packages/92/16/2c602c332f45ff9526d61f6bd764db5096ff9035433e2172e2d2cadae8db/pygame-2.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4ee7f2771f588c966fa2fa8b829be26698c9b4836f82ede5e4edc1a68594942e", size = 13118279, upload-time = "2024-09-29T14:26:30.427Z" }, + { url = "https://files.pythonhosted.org/packages/cd/53/77ccbc384b251c6e34bfd2e734c638233922449a7844e3c7a11ef91cee39/pygame-2.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c8040ea2ab18c6b255af706ec01355c8a6b08dc48d77fd4ee783f8fc46a843bf", size = 12384524, upload-time = "2024-09-29T14:26:49.996Z" }, + { url = "https://files.pythonhosted.org/packages/06/be/3ed337583f010696c3b3435e89a74fb29d0c74d0931e8f33c0a4246307a9/pygame-2.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47a6938de93fa610accd4969e638c2aebcb29b2fca518a84c3a39d91ab47116", size = 13587123, upload-time = "2024-09-29T11:10:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ca/b015586a450db59313535662991b34d24c1f0c0dc149cc5f496573900f4e/pygame-2.6.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33006f784e1c7d7e466fcb61d5489da59cc5f7eb098712f792a225df1d4e229d", size = 14275532, upload-time = "2024-09-29T11:39:59.356Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f2/d31e6ad42d657af07be2ffd779190353f759a07b51232b9e1d724f2cda46/pygame-2.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1206125f14cae22c44565c9d333607f1d9f59487b1f1432945dfc809aeaa3e88", size = 13952653, upload-time = "2024-09-29T11:40:01.781Z" }, + { url = "https://files.pythonhosted.org/packages/f3/42/8ea2a6979e6fa971702fece1747e862e2256d4a8558fe0da6364dd946c53/pygame-2.6.1-cp312-cp312-win32.whl", hash = "sha256:84fc4054e25262140d09d39e094f6880d730199710829902f0d8ceae0213379e", size = 10252421, upload-time = "2024-09-29T11:14:26.877Z" }, + { url = "https://files.pythonhosted.org/packages/5f/90/7d766d54bb95939725e9a9361f9c06b0cfbe3fe100aa35400f0a461a278a/pygame-2.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:3a9e7396be0d9633831c3f8d5d82dd63ba373ad65599628294b7a4f8a5a01a65", size = 10624591, upload-time = "2024-09-29T11:52:54.489Z" }, + { url = "https://files.pythonhosted.org/packages/e1/91/718acf3e2a9d08a6ddcc96bd02a6f63c99ee7ba14afeaff2a51c987df0b9/pygame-2.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae6039f3a55d800db80e8010f387557b528d34d534435e0871326804df2a62f2", size = 13090765, upload-time = "2024-09-29T14:27:02.377Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c6/9cb315de851a7682d9c7568a41ea042ee98d668cb8deadc1dafcab6116f0/pygame-2.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2a3a1288e2e9b1e5834e425bedd5ba01a3cd4902b5c2bff8ed4a740ccfe98171", size = 12381704, upload-time = "2024-09-29T14:27:10.228Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8f/617a1196e31ae3b46be6949fbaa95b8c93ce15e0544266198c2266cc1b4d/pygame-2.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27eb17e3dc9640e4b4683074f1890e2e879827447770470c2aba9f125f74510b", size = 13581091, upload-time = "2024-09-29T11:30:27.653Z" }, + { url = "https://files.pythonhosted.org/packages/3b/87/2851a564e40a2dad353f1c6e143465d445dab18a95281f9ea458b94f3608/pygame-2.6.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c1623180e70a03c4a734deb9bac50fc9c82942ae84a3a220779062128e75f3b", size = 14273844, upload-time = "2024-09-29T11:40:04.138Z" }, + { url = "https://files.pythonhosted.org/packages/85/b5/aa23aa2e70bcba42c989c02e7228273c30f3b44b9b264abb93eaeff43ad7/pygame-2.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef07c0103d79492c21fced9ad68c11c32efa6801ca1920ebfd0f15fb46c78b1c", size = 13951197, upload-time = "2024-09-29T11:40:06.785Z" }, + { url = "https://files.pythonhosted.org/packages/a6/06/29e939b34d3f1354738c7d201c51c250ad7abefefaf6f8332d962ff67c4b/pygame-2.6.1-cp313-cp313-win32.whl", hash = "sha256:3acd8c009317190c2bfd81db681ecef47d5eb108c2151d09596d9c7ea9df5c0e", size = 10249309, upload-time = "2024-09-29T11:10:23.329Z" }, + { url = "https://files.pythonhosted.org/packages/7e/11/17f7f319ca91824b86557e9303e3b7a71991ef17fd45286bf47d7f0a38e6/pygame-2.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:813af4fba5d0b2cb8e58f5d95f7910295c34067dcc290d34f1be59c48bd1ea6a", size = 10620084, upload-time = "2024-09-29T11:48:51.587Z" }, ] [[package]] -name = "pyobjc-framework-virtualization" -version = "12.1" +name = "pygments" +version = "2.20.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3b/6a/9d110b5521d9b898fad10928818c9f55d66a4af9ac097426c65a9878b095/pyobjc_framework_virtualization-12.1.tar.gz", hash = "sha256:e96afd8e801e92c6863da0921e40a3b68f724804f888bce43791330658abdb0f", size = 40682, upload-time = "2025-11-14T10:23:17.456Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/f2/0da47e91f3f8eeda9a8b4bb0d3a0c54a18925009e99b66a8226b9e06ce1e/pyobjc_framework_virtualization-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7d5724b38e64b39ab5ec3b45993afa29fc88b307d99ee2c7a1c0fd770e9b4b21", size = 13131, upload-time = "2025-11-14T10:06:29.337Z" }, - { url = "https://files.pythonhosted.org/packages/76/ca/228fffccbeafecbe7599fc2cdaa64bf2a8e42fd8fe619c5b670c92b263c3/pyobjc_framework_virtualization-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:232956de8a0c3086a58c96621e0a2148497d1750ebb1bb6bea9f7f34ec3c83c6", size = 13147, upload-time = "2025-11-14T10:06:31.294Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2f/4e56147bc9963bb7f96886fda376004a66c5abe579dc029180952fd872fa/pyobjc_framework_virtualization-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a9552e49b967fb520e5be1cfce510e0b68c2ba314a28ac90aad36fe33218d430", size = 13351, upload-time = "2025-11-14T10:06:33.189Z" }, - { url = "https://files.pythonhosted.org/packages/72/4f/ed32bb177edca9feedd518aa2f98c75e86365497f086af21d807785d264c/pyobjc_framework_virtualization-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:e40bff972adfefbe8a02e508571b32c58e90e4d974d65470eab75c53fe47006d", size = 13137, upload-time = "2025-11-14T10:06:35.426Z" }, - { url = "https://files.pythonhosted.org/packages/3b/01/fc9a7714bd3d9d43085c7c027c395b9c0205a330956f200bfa3c41b09a82/pyobjc_framework_virtualization-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:8d53e81f1928c4e90cbebebd39b965aa679f7fadda1fd075e18991872c4cb56b", size = 13343, upload-time = "2025-11-14T10:06:37.219Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, ] [[package]] -name = "pyobjc-framework-vision" -version = "12.1" +name = "pymdown-extensions" +version = "10.21.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coreml" }, - { name = "pyobjc-framework-quartz" }, + { name = "markdown" }, + { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c2/5a/08bb3e278f870443d226c141af14205ff41c0274da1e053b72b11dfc9fb2/pyobjc_framework_vision-12.1.tar.gz", hash = "sha256:a30959100e85dcede3a786c544e621ad6eb65ff6abf85721f805822b8c5fe9b0", size = 59538, upload-time = "2025-11-14T10:23:21.979Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/26/d1015444da4d952a1ca487a236b522eb979766f0295a0bd0c5fc089989a9/pymdown_extensions-10.21.3.tar.gz", hash = "sha256:72cfcf55f07aea0d4af2c4f11dd4e52466ddfb1bb819673146398e0bd3a77354", size = 854140, upload-time = "2026-05-13T12:57:32.267Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/5a/23502935b3fc877d7573e743fc3e6c28748f33a45c43851d503bde52cde7/pyobjc_framework_vision-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6b3211d84f3a12aad0cde752cfd43a80d0218960ac9e6b46b141c730e7d655bd", size = 16625, upload-time = "2025-11-14T10:06:44.422Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e4/e87361a31b82b22f8c0a59652d6e17625870dd002e8da75cb2343a84f2f9/pyobjc_framework_vision-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7273e2508db4c2e88523b4b7ff38ac54808756e7ba01d78e6c08ea68f32577d2", size = 16640, upload-time = "2025-11-14T10:06:46.653Z" }, - { url = "https://files.pythonhosted.org/packages/b1/dd/def55d8a80b0817f486f2712fc6243482c3264d373dc5ff75037b3aeb7ea/pyobjc_framework_vision-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:04296f0848cc8cdead66c76df6063720885cbdf24fdfd1900749a6e2297313db", size = 16782, upload-time = "2025-11-14T10:06:48.816Z" }, - { url = "https://files.pythonhosted.org/packages/a7/a4/ee1ef14d6e1df6617e64dbaaa0ecf8ecb9e0af1425613fa633f6a94049c1/pyobjc_framework_vision-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:631add775ed1dafb221a6116137cdcd78432addc16200ca434571c2a039c0e03", size = 16614, upload-time = "2025-11-14T10:06:50.852Z" }, - { url = "https://files.pythonhosted.org/packages/af/53/187743d9244becd4499a77f8ee699ae286e2f6ade7c0c7ad2975ae60f187/pyobjc_framework_vision-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:fe41a1a70cc91068aee7b5293fa09dc66d1c666a8da79fdf948900988b439df6", size = 16771, upload-time = "2025-11-14T10:06:53.04Z" }, + { url = "https://files.pythonhosted.org/packages/7e/85/545a951eecc270fcd688288c600017e2050a1aacb56c711d208586d3e470/pymdown_extensions-10.21.3-py3-none-any.whl", hash = "sha256:d7a5d08014fc571e80ca21dd6f854e31f94c489800350564d55d15b3c41e76b6", size = 269002, upload-time = "2026-05-13T12:57:30.296Z" }, ] [[package]] -name = "pyobjc-framework-webkit" -version = "12.1" +name = "pymeshfix" +version = "0.18.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, + { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/14/10/110a50e8e6670765d25190ca7f7bfeecc47ec4a8c018cb928f4f82c56e04/pyobjc_framework_webkit-12.1.tar.gz", hash = "sha256:97a54dd05ab5266bd4f614e41add517ae62cdd5a30328eabb06792474b37d82a", size = 284531, upload-time = "2025-11-14T10:23:40.287Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d8/c5124ee26c10bd2d77333eb5a8cddc89cb45ced9f1b173235e13ecfa6ebd/pymeshfix-0.18.1.tar.gz", hash = "sha256:c3386a123e3ecfcff59f229a4fc620ae0e03fa9c7fec025fbd2885349fa8fa3f", size = 1409525, upload-time = "2026-04-23T22:06:26.622Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/67/64920c8d201a7fc27962f467c636c4e763b43845baba2e091a50a97a5d52/pyobjc_framework_webkit-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:af2c7197447638b92aafbe4847c063b6dd5e1ed83b44d3ce7e71e4c9b042ab5a", size = 50084, upload-time = "2025-11-14T10:07:05.868Z" }, - { url = "https://files.pythonhosted.org/packages/7a/3d/80d36280164c69220ce99372f7736a028617c207e42cb587716009eecb88/pyobjc_framework_webkit-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1da0c428c9d9891c93e0de51c9f272bfeb96d34356cdf3136cb4ad56ce32ec2d", size = 50096, upload-time = "2025-11-14T10:07:10.027Z" }, - { url = "https://files.pythonhosted.org/packages/8a/7a/03c29c46866e266b0c705811c55c22625c349b0a80f5cf4776454b13dc4c/pyobjc_framework_webkit-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:1a29e334d5a7dd4a4f0b5647481b6ccf8a107b92e67b2b3c6b368c899f571965", size = 50572, upload-time = "2025-11-14T10:07:14.232Z" }, - { url = "https://files.pythonhosted.org/packages/3b/ac/924878f239c167ffe3bfc643aee4d6dd5b357e25f6b28db227e40e9e6df3/pyobjc_framework_webkit-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:99d0d28542a266a95ee2585f51765c0331794bca461aaf4d1f5091489d475179", size = 50210, upload-time = "2025-11-14T10:07:18.926Z" }, - { url = "https://files.pythonhosted.org/packages/2d/86/637cda4983dc0936b73a385f3906256953ac434537b812814cb0b6d231a2/pyobjc_framework_webkit-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1aaa3bf12c7b68e1a36c0b294d2728e06f2cc220775e6dc4541d5046290e4dc8", size = 50680, upload-time = "2025-11-14T10:07:23.331Z" }, + { url = "https://files.pythonhosted.org/packages/27/3f/c0acb23cb004270b6bd27116306bd2b775ce2c865f452b6451f168ee78d6/pymeshfix-0.18.1-cp312-abi3-macosx_10_13_x86_64.whl", hash = "sha256:365a937ce9ff3888ed994d158bdf9b9069db8d0b9684c32d3dd1056526f04980", size = 1327223, upload-time = "2026-04-23T22:06:16.984Z" }, + { url = "https://files.pythonhosted.org/packages/5e/11/49d95279878c6f2f9297229db4663e94af1b6c2dc6c2140764739b023e57/pymeshfix-0.18.1-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:e451cade1c29974467a73eb5c1a216dce07114a27783eb83f681d572316dcbde", size = 1318217, upload-time = "2026-04-23T22:06:18.803Z" }, + { url = "https://files.pythonhosted.org/packages/9d/61/110d7a502290bcc317ebd6acfe3f2fc1064cd23175989022189ef8d5df68/pymeshfix-0.18.1-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:829fbb193dbcca117ab45fda72dfe95f18f27c09f85a21a42f33f88ace40f52a", size = 1340315, upload-time = "2026-04-23T22:06:20.718Z" }, + { url = "https://files.pythonhosted.org/packages/ef/2d/31c8fcd0dea754f4b9272be0984d6669a7d60b43db5ca33c4757b2adb262/pymeshfix-0.18.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:109956a0a3e0ac81ae7c76322c0224ac5a641e914a83a1a9904c75b40c916f74", size = 1351825, upload-time = "2026-04-23T22:06:22.778Z" }, + { url = "https://files.pythonhosted.org/packages/11/79/07d46f90f6244edd872d95f94ae550c6af3870733fe6fd9c2a9808b02f2c/pymeshfix-0.18.1-cp312-abi3-win_amd64.whl", hash = "sha256:e926773ff90131884b26b9f925fd6f6f6d2f35c53828b8abc49512dcef00bd47", size = 1508118, upload-time = "2026-04-23T22:06:24.866Z" }, ] [[package]] name = "pyparsing" -version = "3.3.1" +version = "3.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/33/c1/1d9de9aeaa1b89b0186e5fe23294ff6517fce1bc69149185577cd31016b2/pyparsing-3.3.1.tar.gz", hash = "sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c", size = 1550512, upload-time = "2025-12-23T03:14:04.391Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/40/2614036cdd416452f5bf98ec037f38a1afb17f327cb8e6b652d4729e0af8/pyparsing-3.3.1-py3-none-any.whl", hash = "sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82", size = 121793, upload-time = "2025-12-23T03:14:02.103Z" }, + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, ] [[package]] @@ -7962,7 +3966,7 @@ wheels = [ [[package]] name = "pytest" -version = "9.0.2" +version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -7971,70 +3975,66 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, ] [[package]] name = "pytest-codspeed" -version = "4.2.0" +version = "5.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi" }, { name = "pytest" }, { name = "rich" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/e8/27fcbe6516a1c956614a4b61a7fccbf3791ea0b992e07416e8948184327d/pytest_codspeed-4.2.0.tar.gz", hash = "sha256:04b5d0bc5a1851ba1504d46bf9d7dbb355222a69f2cd440d54295db721b331f7", size = 113263, upload-time = "2025-10-24T09:02:55.704Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/04/479905bd6653bc981c0554fcce6df52d7ae1594e1eefd53e6cf31810ec7f/pytest_codspeed-4.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d4fefbd4ae401e2c60f6be920a0be50eef0c3e4a1f0a1c83962efd45be38b39", size = 262084, upload-time = "2025-10-24T09:02:43.155Z" }, - { url = "https://files.pythonhosted.org/packages/d2/46/d6f345d7907bac6cbb6224bd697ecbc11cf7427acc9e843c3618f19e3476/pytest_codspeed-4.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:309b4227f57fcbb9df21e889ea1ae191d0d1cd8b903b698fdb9ea0461dbf1dfe", size = 251100, upload-time = "2025-10-24T09:02:44.168Z" }, - { url = "https://files.pythonhosted.org/packages/de/dc/e864f45e994a50390ff49792256f1bdcbf42f170e3bc0470ee1a7d2403f3/pytest_codspeed-4.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72aab8278452a6d020798b9e4f82780966adb00f80d27a25d1274272c54630d5", size = 262057, upload-time = "2025-10-24T09:02:45.791Z" }, - { url = "https://files.pythonhosted.org/packages/1d/1c/f1d2599784486879cf6579d8d94a3e22108f0e1f130033dab8feefd29249/pytest_codspeed-4.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:684fcd9491d810ded653a8d38de4835daa2d001645f4a23942862950664273f8", size = 251013, upload-time = "2025-10-24T09:02:46.937Z" }, - { url = "https://files.pythonhosted.org/packages/0c/fd/eafd24db5652a94b4d00fe9b309b607de81add0f55f073afb68a378a24b6/pytest_codspeed-4.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50794dabea6ec90d4288904452051e2febace93e7edf4ca9f2bce8019dd8cd37", size = 262065, upload-time = "2025-10-24T09:02:48.018Z" }, - { url = "https://files.pythonhosted.org/packages/f9/14/8d9340d7dc0ae647991b28a396e16b3403e10def883cde90d6b663d3f7ec/pytest_codspeed-4.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0ebd87f2a99467a1cfd8e83492c4712976e43d353ee0b5f71cbb057f1393aca", size = 251057, upload-time = "2025-10-24T09:02:49.102Z" }, - { url = "https://files.pythonhosted.org/packages/4b/39/48cf6afbca55bc7c8c93c3d4ae926a1068bcce3f0241709db19b078d5418/pytest_codspeed-4.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbbb2d61b85bef8fc7e2193f723f9ac2db388a48259d981bbce96319043e9830", size = 267983, upload-time = "2025-10-24T09:02:50.558Z" }, - { url = "https://files.pythonhosted.org/packages/33/86/4407341efb5dceb3e389635749ce1d670542d6ca148bd34f9d5334295faf/pytest_codspeed-4.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:748411c832147bfc85f805af78a1ab1684f52d08e14aabe22932bbe46c079a5f", size = 256732, upload-time = "2025-10-24T09:02:51.603Z" }, - { url = "https://files.pythonhosted.org/packages/25/0e/8cb71fd3ed4ed08c07aec1245aea7bc1b661ba55fd9c392db76f1978d453/pytest_codspeed-4.2.0-py3-none-any.whl", hash = "sha256:e81bbb45c130874ef99aca97929d72682733527a49f84239ba575b5cb843bab0", size = 113726, upload-time = "2025-10-24T09:02:54.785Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e1/b4/cf932fcd1960a2fd6d9b09eb403253a8709aeee975961afa6299239a830e/pytest_codspeed-5.0.3.tar.gz", hash = "sha256:91afef90e6a96b013495e4702ef5d6358614a449e71008cdc194ef668778b92f", size = 324571, upload-time = "2026-05-22T16:20:49.231Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/22/456c48160b761d5028c8afa119f085a9fc42855a783a13d73918078969f0/pytest_codspeed-5.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2eeb25fb1ac3f73c4de50e739e78fea396b89782bdb740bf2a7cd2df21f8d4ee", size = 366255, upload-time = "2026-05-22T16:20:56.214Z" }, + { url = "https://files.pythonhosted.org/packages/74/33/ac7441fa937c9d9f158083a8c46920a5a5c81ed3c5f96240fc8d650db5c2/pytest_codspeed-5.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73c5c9d98a3372a42611989ccfa437cce3842431ac6d6b9ab42c4f0e59c070f7", size = 932325, upload-time = "2026-05-22T16:21:08.814Z" }, + { url = "https://files.pythonhosted.org/packages/77/bc/8b994adcb9e9016e7d9a808056a3dd9cca21441e432ef456eae2b697d7fe/pytest_codspeed-5.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2e0ab65df73e837666d12357280ca50ff6d6ac03ea5266703be518b68170edf", size = 934885, upload-time = "2026-05-22T16:21:01.444Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8e/e032451e9e0a06b0c4bff53105f62b693d9a54595dd8c024693741ce3380/pytest_codspeed-5.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6524c57fec279a22ffef6112af404036afc71b4704758ae9f0abda429b8478d4", size = 366253, upload-time = "2026-05-22T16:20:46.192Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7b/ae76fd8ac656b9695806a6aafd5f22ec32e6ce20e266a58f9112e01d3cd8/pytest_codspeed-5.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c383c9121deb58a69f174188e9e4488ffc0daced0ed276abf87747182511901", size = 932360, upload-time = "2026-05-22T16:20:30.589Z" }, + { url = "https://files.pythonhosted.org/packages/a6/4a/dfd43d943fdb143be4fd62f34c2793ba349dc27aa188e521d19d629aa7ab/pytest_codspeed-5.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a4bcdb4b6522738152885ef067e0c8524d5699828d780fb6f464cdb3db44369c", size = 934928, upload-time = "2026-05-22T16:20:38.62Z" }, + { url = "https://files.pythonhosted.org/packages/04/6a/fdcec19c7f267c195f147c51d3fd2245f6b8d09b80495ed0a90c008e0842/pytest_codspeed-5.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:25464363c7f9b9bd5022e969c0addba616fa40ac9b8f0fc9e030c4538863b32d", size = 366259, upload-time = "2026-05-22T16:21:06.039Z" }, + { url = "https://files.pythonhosted.org/packages/6a/96/c6b03b81dcd21ae3d6b32cca0b3c10149fa378eb21b338d4b63c9eb8050b/pytest_codspeed-5.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:efd43f82ea03ced8488a767ded9473f050791ab7783ea8654107e1e0ac66af40", size = 932395, upload-time = "2026-05-22T16:21:04.804Z" }, + { url = "https://files.pythonhosted.org/packages/96/08/56ad8f1cc7d6962f8a680141b361e93467a2abc53d976cd9d5e1edd740e3/pytest_codspeed-5.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:782f9985b6f6b45b8bc20152d206d3a52b56dd088ba81cb70a71f0b39841be9e", size = 934994, upload-time = "2026-05-22T16:20:28.809Z" }, + { url = "https://files.pythonhosted.org/packages/0b/54/9096c4545f09da94b1b00f3be2fe4952949e86c9bcafca9a29b26aed1a75/pytest_codspeed-5.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9aa0815b90196f3c20d736ea8691381e97f12bbe8c7d87af10a351e434b452cb", size = 366311, upload-time = "2026-05-22T16:20:41.791Z" }, + { url = "https://files.pythonhosted.org/packages/a7/3c/24c53f67a38ad48cb087105ac30a8aa0923223ee274ea9bf2dc705edaa59/pytest_codspeed-5.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:85505c96a3477c346ec2d2b7dced8478f4c651e2b1666ee102d53a832b511853", size = 933169, upload-time = "2026-05-22T16:20:43.178Z" }, + { url = "https://files.pythonhosted.org/packages/d1/de/2213f868fa7694f743f96cccbc07e757f45c920c523cccc2da97bc8652df/pytest_codspeed-5.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20eba63765be9d1b6cacbbfad84b87d49eb04b357a7045a0899880da181f81e3", size = 935522, upload-time = "2026-05-22T16:21:03.398Z" }, + { url = "https://files.pythonhosted.org/packages/df/85/5dfea1c031d6cccc11653464828edf205c30f798caf5b2a85375aacd914a/pytest_codspeed-5.0.3-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:ec9fa6f0af0a9feb0e0bd517fb59ef28f806fbd50c0c6900ac26cbb4d080eba5", size = 366275, upload-time = "2026-05-22T16:20:59.463Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2b/af4d1b612f03b98a6cf3c7d5f62678917a60110a8bf380d49ab408b31137/pytest_codspeed-5.0.3-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8df77b3409f54f4a268f77f3ff74992fe1d995cdbaf2cecf8ad74d32db217ce7", size = 932537, upload-time = "2026-05-22T16:20:54.945Z" }, + { url = "https://files.pythonhosted.org/packages/f5/a2/c7ec45e36a61b418efb2a3cccaa67a0c2fcf1f21d5880f64c33114f0c249/pytest_codspeed-5.0.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5d8695a227ea1c3a41d25db5b3fe720bf1b4808bd38862be811a4efd902c792", size = 934153, upload-time = "2026-05-22T16:21:07.494Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c7/d5bada9618a0af56a5c8065fc61280849cab8e7c1e24025807a51c3157ce/pytest_codspeed-5.0.3-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:bf4cc4178cbace8f4d2bd240408276bc4da3850ac5fcb5fb5f8a74ab417615bb", size = 366339, upload-time = "2026-05-22T16:20:51.968Z" }, + { url = "https://files.pythonhosted.org/packages/a8/37/fb27aeb40a81320e7349553b877a21333c897b27c8dfe215630452908f36/pytest_codspeed-5.0.3-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abe793da40f87295d33988673d34f06ea569848b44490b847552cd416816258a", size = 933055, upload-time = "2026-05-22T16:20:44.861Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d9/6f2d69e96deaf0475a695fc9195af59e7a3b5fab50782855e65c63a7bc28/pytest_codspeed-5.0.3-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c3a9ed38dfa776443b86f4b49a982e8443d0953db4974bd2673d63cc904ae1ad", size = 934481, upload-time = "2026-05-22T16:20:58.264Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b2/1d2a993c532146dce9eca5b5942d51898021c3579ce18b2454f932a915f8/pytest_codspeed-5.0.3-py3-none-any.whl", hash = "sha256:fe2ea83c924c2250675b75686c3ee456b8cf0208d83d552e182a195fdf467378", size = 74033, upload-time = "2026-05-22T16:20:26.814Z" }, ] [[package]] name = "pytest-cov" -version = "7.0.0" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage" }, { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", hash = "sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2", size = 55592, upload-time = "2026-03-21T20:11:16.284Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678", size = 22876, upload-time = "2026-03-21T20:11:14.438Z" }, ] [[package]] name = "pytest-randomly" -version = "4.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/1d/258a4bf1109258c00c35043f40433be5c16647387b6e7cd5582d638c116b/pytest_randomly-4.0.1.tar.gz", hash = "sha256:174e57bb12ac2c26f3578188490bd333f0e80620c3f47340158a86eca0593cd8", size = 14130, upload-time = "2025-09-12T15:23:00.085Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/33/3e/a4a9227807b56869790aad3e24472a554b585974fe7e551ea350f50897ae/pytest_randomly-4.0.1-py3-none-any.whl", hash = "sha256:e0dfad2fd4f35e07beff1e47c17fbafcf98f9bf4531fd369d9260e2f858bfcb7", size = 8304, upload-time = "2025-09-12T15:22:58.946Z" }, -] - -[[package]] -name = "pytest-xdist" -version = "3.8.0" +version = "4.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "execnet" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload-time = "2025-07-01T13:30:59.346Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/b3/36192dacc0f470ac2cc516f73e01739c9a48a8224f76beada4f85e1c8a89/pytest_randomly-4.1.0.tar.gz", hash = "sha256:47f1d9746c3bc3efabd53ae1ebfb8bb385cf3d4df4b505b6d58d9c97a3dfe70f", size = 14302, upload-time = "2026-04-20T13:01:51.831Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload-time = "2025-07-01T13:30:56.632Z" }, + { url = "https://files.pythonhosted.org/packages/9a/db/2df9a1fca597a273f957a559c20c2d95d629928384507b2afa43ba6909d1/pytest_randomly-4.1.0-py3-none-any.whl", hash = "sha256:f55e89e53367b090c0c053697d7f9d77595543d0e0516c93978b50c0f6b252f9", size = 8353, upload-time = "2026-04-20T13:01:50.382Z" }, ] [[package]] @@ -8058,20 +4058,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "python-discovery" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/60/e88788207d81e46362cfbef0d4aaf4c0f49efc3c12d4c3fa3f542c34ebec/python_discovery-1.3.1.tar.gz", hash = "sha256:62f6db28064c9613e7ca76cb3f00c38c839a07c31c00dfe7ed0986493d2150a6", size = 68011, upload-time = "2026-05-12T20:53:36.336Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/6f/a05a317a66fee0aad270011461f1a63a453ed12471249f172f7d2e2bc7b4/python_discovery-1.3.1-py3-none-any.whl", hash = "sha256:ed188687ebb3b82c01a17cd5ac62fc94d9f6487a7f1a0f9dfe89753fec91039c", size = 33185, upload-time = "2026-05-12T20:53:34.969Z" }, +] + [[package]] name = "python-dotenv" -version = "1.2.1" +version = "1.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, ] [[package]] name = "pyvista" -version = "0.46.4" +version = "0.48.4" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "cyclopts" }, { name = "matplotlib" }, { name = "numpy" }, { name = "pillow" }, @@ -8080,25 +4094,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "vtk" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/3f/701daab844e6f0570d02931b3e4b0b7e04b38f97b9c95d12403645445b23/pyvista-0.46.4.tar.gz", hash = "sha256:37ddd2783a45b552623df293e77ce93ed015244e8d89d1de179d2df594d7c571", size = 2398029, upload-time = "2025-10-30T15:24:13.144Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/e5/41a88ce247c606a12498a9297ef323b441b2be811599033a06ea62af0724/pyvista-0.46.4-py3-none-any.whl", hash = "sha256:f113a8db2f49ae1b2f9eeb477c51a4038a4dfdd02ac097900aa49bf1d77f7b2e", size = 2448669, upload-time = "2025-10-30T15:24:11.112Z" }, -] - -[[package]] -name = "pywin32" -version = "311" -source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/11/554ae45f79d45039c733d93acb36a433b71e8c63a79bbf2f414b3685de18/pyvista-0.48.4.tar.gz", hash = "sha256:c639dad1bddff5e366d77371f66f783f6e6a0581446810a66439902222d8db07", size = 2581423, upload-time = "2026-05-18T02:25:51.828Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, - { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, - { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, - { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, - { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, - { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, - { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, - { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, + { url = "https://files.pythonhosted.org/packages/4d/91/696d869e4df2e25a5b201a69ce69a2204d37fad3e90c2b731f7b3f1d7c68/pyvista-0.48.4-py3-none-any.whl", hash = "sha256:a46eda178e10e279afda550c341676a82dcee607c86db74565fa455ac0bd23e2", size = 2629373, upload-time = "2026-05-18T02:25:49.919Z" }, ] [[package]] @@ -8211,6 +4209,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, ] +[[package]] +name = "quantiphy" +version = "2.21" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/26/5a14317a74bdd3311963fa45aff8553592117e988a697ccf0d0adfc5be5c/quantiphy-2.21.tar.gz", hash = "sha256:bf8d06ffa7150f69a5c7e3fb4a7a0a535109df85e7c0ab0f39fb317c5c9cafe0", size = 43514, upload-time = "2025-12-26T05:22:52.237Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/55/d979f5c13dfd3418c650befc045ada747facb2393be2f39a2744c23032de/quantiphy-2.21-py3-none-any.whl", hash = "sha256:7d145d89a908de38d63c8dc0a8883bc668c85d84ed37fe6535d26cf7c077f69f", size = 43299, upload-time = "2025-12-26T05:22:50.82Z" }, +] + [[package]] name = "readme-renderer" version = "44.0" @@ -8241,7 +4248,7 @@ wheels = [ [[package]] name = "requests" -version = "2.32.5" +version = "2.34.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -8249,9 +4256,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, ] [[package]] @@ -8277,28 +4284,28 @@ wheels = [ [[package]] name = "rich" -version = "14.2.0" +version = "15.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, ] [[package]] name = "rich-rst" -version = "1.3.2" +version = "2.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "docutils" }, + { name = "pygments" }, { name = "rich" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/6d/a506aaa4a9eaa945ed8ab2b7347859f53593864289853c5d6d62b77246e0/rich_rst-1.3.2.tar.gz", hash = "sha256:a1196fdddf1e364b02ec68a05e8ff8f6914fee10fbca2e6b6735f166bb0da8d4", size = 14936, upload-time = "2025-10-14T16:49:45.332Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/56/3191bae66b08ccc637ea8120426068bcb361cc323c96404c310886937067/rich_rst-2.0.1.tar.gz", hash = "sha256:cbe236ed0901d1ec8427cc6a50bf0a34353ba28ad014dc24def68bfe7f3b9e68", size = 300570, upload-time = "2026-05-16T00:47:57.362Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/2f/b4530fbf948867702d0a3f27de4a6aab1d156f406d72852ab902c4d04de9/rich_rst-1.3.2-py3-none-any.whl", hash = "sha256:a99b4907cbe118cf9d18b0b44de272efa61f15117c61e39ebdc431baf5df722a", size = 12567, upload-time = "2025-10-14T16:49:42.953Z" }, + { url = "https://files.pythonhosted.org/packages/a0/3d/55c17d3ebdf3cd81356002afe5bef9bb8af631db2819785b6eac845b925b/rich_rst-2.0.1-py3-none-any.whl", hash = "sha256:7ee15f345ce25fa02b582c272a6cdbaf0c21243e38061cea273cff659bf3ef61", size = 272922, upload-time = "2026-05-16T00:47:55.508Z" }, ] [[package]] @@ -8382,18 +4389,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, ] -[[package]] -name = "rsa" -version = "4.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, -] - [[package]] name = "rtree" version = "1.4.1" @@ -8410,141 +4405,111 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3f/50/0a9e7e7afe7339bd5e36911f0ceb15fed51945836ed803ae5afd661057fd/rtree-1.4.1-py3-none-win_arm64.whl", hash = "sha256:3d46f55729b28138e897ffef32f7ce93ac335cb67f9120125ad3742a220800f0", size = 355253, upload-time = "2025-08-13T19:32:00.296Z" }, ] -[[package]] -name = "ruamel-yaml" -version = "0.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/3b/ebda527b56beb90cb7652cb1c7e4f91f48649fbcd8d2eb2fb6e77cd3329b/ruamel_yaml-0.19.1.tar.gz", hash = "sha256:53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993", size = 142709, upload-time = "2026-01-02T16:50:31.84Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl", hash = "sha256:27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93", size = 118102, upload-time = "2026-01-02T16:50:29.201Z" }, -] - [[package]] name = "ruff" -version = "0.14.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/77/9a7fe084d268f8855d493e5031ea03fa0af8cc05887f638bf1c4e3363eb8/ruff-0.14.11.tar.gz", hash = "sha256:f6dc463bfa5c07a59b1ff2c3b9767373e541346ea105503b4c0369c520a66958", size = 5993417, upload-time = "2026-01-08T19:11:58.322Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/a6/a4c40a5aaa7e331f245d2dc1ac8ece306681f52b636b40ef87c88b9f7afd/ruff-0.14.11-py3-none-linux_armv6l.whl", hash = "sha256:f6ff2d95cbd335841a7217bdfd9c1d2e44eac2c584197ab1385579d55ff8830e", size = 12951208, upload-time = "2026-01-08T19:12:09.218Z" }, - { url = "https://files.pythonhosted.org/packages/5c/5c/360a35cb7204b328b685d3129c08aca24765ff92b5a7efedbdd6c150d555/ruff-0.14.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f6eb5c1c8033680f4172ea9c8d3706c156223010b8b97b05e82c59bdc774ee6", size = 13330075, upload-time = "2026-01-08T19:12:02.549Z" }, - { url = "https://files.pythonhosted.org/packages/1b/9e/0cc2f1be7a7d33cae541824cf3f95b4ff40d03557b575912b5b70273c9ec/ruff-0.14.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f2fc34cc896f90080fca01259f96c566f74069a04b25b6205d55379d12a6855e", size = 12257809, upload-time = "2026-01-08T19:12:00.366Z" }, - { url = "https://files.pythonhosted.org/packages/a7/e5/5faab97c15bb75228d9f74637e775d26ac703cc2b4898564c01ab3637c02/ruff-0.14.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53386375001773ae812b43205d6064dae49ff0968774e6befe16a994fc233caa", size = 12678447, upload-time = "2026-01-08T19:12:13.899Z" }, - { url = "https://files.pythonhosted.org/packages/1b/33/e9767f60a2bef779fb5855cab0af76c488e0ce90f7bb7b8a45c8a2ba4178/ruff-0.14.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a697737dce1ca97a0a55b5ff0434ee7205943d4874d638fe3ae66166ff46edbe", size = 12758560, upload-time = "2026-01-08T19:11:42.55Z" }, - { url = "https://files.pythonhosted.org/packages/eb/84/4c6cf627a21462bb5102f7be2a320b084228ff26e105510cd2255ea868e5/ruff-0.14.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6845ca1da8ab81ab1dce755a32ad13f1db72e7fba27c486d5d90d65e04d17b8f", size = 13599296, upload-time = "2026-01-08T19:11:30.371Z" }, - { url = "https://files.pythonhosted.org/packages/88/e1/92b5ed7ea66d849f6157e695dc23d5d6d982bd6aa8d077895652c38a7cae/ruff-0.14.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e36ce2fd31b54065ec6f76cb08d60159e1b32bdf08507862e32f47e6dde8bcbf", size = 15048981, upload-time = "2026-01-08T19:12:04.742Z" }, - { url = "https://files.pythonhosted.org/packages/61/df/c1bd30992615ac17c2fb64b8a7376ca22c04a70555b5d05b8f717163cf9f/ruff-0.14.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590bcc0e2097ecf74e62a5c10a6b71f008ad82eb97b0a0079e85defe19fe74d9", size = 14633183, upload-time = "2026-01-08T19:11:40.069Z" }, - { url = "https://files.pythonhosted.org/packages/04/e9/fe552902f25013dd28a5428a42347d9ad20c4b534834a325a28305747d64/ruff-0.14.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53fe71125fc158210d57fe4da26e622c9c294022988d08d9347ec1cf782adafe", size = 14050453, upload-time = "2026-01-08T19:11:37.555Z" }, - { url = "https://files.pythonhosted.org/packages/ae/93/f36d89fa021543187f98991609ce6e47e24f35f008dfe1af01379d248a41/ruff-0.14.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a35c9da08562f1598ded8470fcfef2afb5cf881996e6c0a502ceb61f4bc9c8a3", size = 13757889, upload-time = "2026-01-08T19:12:07.094Z" }, - { url = "https://files.pythonhosted.org/packages/b7/9f/c7fb6ecf554f28709a6a1f2a7f74750d400979e8cd47ed29feeaa1bd4db8/ruff-0.14.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0f3727189a52179393ecf92ec7057c2210203e6af2676f08d92140d3e1ee72c1", size = 13955832, upload-time = "2026-01-08T19:11:55.064Z" }, - { url = "https://files.pythonhosted.org/packages/db/a0/153315310f250f76900a98278cf878c64dfb6d044e184491dd3289796734/ruff-0.14.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:eb09f849bd37147a789b85995ff734a6c4a095bed5fd1608c4f56afc3634cde2", size = 12586522, upload-time = "2026-01-08T19:11:35.356Z" }, - { url = "https://files.pythonhosted.org/packages/2f/2b/a73a2b6e6d2df1d74bf2b78098be1572191e54bec0e59e29382d13c3adc5/ruff-0.14.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:c61782543c1231bf71041461c1f28c64b961d457d0f238ac388e2ab173d7ecb7", size = 12724637, upload-time = "2026-01-08T19:11:47.796Z" }, - { url = "https://files.pythonhosted.org/packages/f0/41/09100590320394401cd3c48fc718a8ba71c7ddb1ffd07e0ad6576b3a3df2/ruff-0.14.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:82ff352ea68fb6766140381748e1f67f83c39860b6446966cff48a315c3e2491", size = 13145837, upload-time = "2026-01-08T19:11:32.87Z" }, - { url = "https://files.pythonhosted.org/packages/3b/d8/e035db859d1d3edf909381eb8ff3e89a672d6572e9454093538fe6f164b0/ruff-0.14.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:728e56879df4ca5b62a9dde2dd0eb0edda2a55160c0ea28c4025f18c03f86984", size = 13850469, upload-time = "2026-01-08T19:12:11.694Z" }, - { url = "https://files.pythonhosted.org/packages/4e/02/bb3ff8b6e6d02ce9e3740f4c17dfbbfb55f34c789c139e9cd91985f356c7/ruff-0.14.11-py3-none-win32.whl", hash = "sha256:337c5dd11f16ee52ae217757d9b82a26400be7efac883e9e852646f1557ed841", size = 12851094, upload-time = "2026-01-08T19:11:45.163Z" }, - { url = "https://files.pythonhosted.org/packages/58/f1/90ddc533918d3a2ad628bc3044cdfc094949e6d4b929220c3f0eb8a1c998/ruff-0.14.11-py3-none-win_amd64.whl", hash = "sha256:f981cea63d08456b2c070e64b79cb62f951aa1305282974d4d5216e6e0178ae6", size = 14001379, upload-time = "2026-01-08T19:11:52.591Z" }, - { url = "https://files.pythonhosted.org/packages/c4/1c/1dbe51782c0e1e9cfce1d1004752672d2d4629ea46945d19d731ad772b3b/ruff-0.14.11-py3-none-win_arm64.whl", hash = "sha256:649fb6c9edd7f751db276ef42df1f3df41c38d67d199570ae2a7bd6cbc3590f0", size = 12938644, upload-time = "2026-01-08T19:11:50.027Z" }, +version = "0.15.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/8a/8bce2894573e9dae6ff4d77fe34ad727d79b9e6238ad288c5638990d90f6/ruff-0.15.14.tar.gz", hash = "sha256:48e866b165be4a9bdbf310f7d3c9a07edef2fe8cd63ffeb4e00bb590506ebf9f", size = 4700910, upload-time = "2026-05-21T14:34:55.177Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/c8/74a92c6ff9fcfb4f1f947126d3ebee8389276e161ecc85de5bda7cda51bd/ruff-0.15.14-py3-none-linux_armv6l.whl", hash = "sha256:8dd2db9416e487c8d4b01fa7056bb02c4d05969d4f8d17a08c229c2f4ff3c108", size = 10739177, upload-time = "2026-05-21T14:34:37.332Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/254a35c20acc38a7223c9d2d594af12e794432464f2cdeb52af1dc4a892d/ruff-0.15.14-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:be4ff55af755bd71a00ab3dc6bd7ffc467bd76e0df6881e286c2e3d23e8fb43b", size = 11144969, upload-time = "2026-05-21T14:34:43.978Z" }, + { url = "https://files.pythonhosted.org/packages/56/9e/d13e40f83b8d0a94430e6778ce1d94a43b38cf2efe63278bdd2b4c65abbf/ruff-0.15.14-py3-none-macosx_11_0_arm64.whl", hash = "sha256:48d5909d7d06276ce7dde6d32bfa4b0d4cb2651145cd8ee4b440722cbc77832f", size = 10478207, upload-time = "2026-05-21T14:34:48.378Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f1/b15a7839fa4f332f8acec78e20564f26bb2d866e3d21710b877fd0263000/ruff-0.15.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca8cbfa94c4f90984a67561978602746d4cd27103568f745fa90eee3f0d4107d", size = 10818459, upload-time = "2026-05-21T14:34:22.318Z" }, + { url = "https://files.pythonhosted.org/packages/45/33/53d651177f84f94b400a0e27f8824eeada3dddc9d5ee8aeb048f4352a520/ruff-0.15.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a6bbc0333f1ab053423bcbf6226477d266ca7cec7738c4c8e3f55647803f3c4", size = 10541800, upload-time = "2026-05-21T14:34:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a6/868f87e0bf9786ed24b5d0d0ad8676b8a94fd1912f42cddf9cfc7857818a/ruff-0.15.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a24a4f7605d7003a6674d4387651effd939dead3fddd0f36561eb77a9a2e542", size = 11342149, upload-time = "2026-05-21T14:34:46.365Z" }, + { url = "https://files.pythonhosted.org/packages/a7/8b/38cd5c19faffdcc05a408d2b78edccc69492ab9720eadb49ea15ef80d768/ruff-0.15.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:049b5326e53ed80978f2fc041a280603f69dd6b0c95464342a2bb4572d9d9e2f", size = 12212563, upload-time = "2026-05-21T14:34:28.579Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4d/a3c5b874a556d5731e3e657aaf04311bb76f0a5c3ec220ed43051be6b64b/ruff-0.15.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4ed42e6696c8dfa5f06728e6441993901f548eb92d73bc472cb5a38d1395fbf", size = 11493299, upload-time = "2026-05-21T14:34:41.836Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c0/56472c251d09858a53e51efbd485b09e1995d8731668b76d52e5dd6ee0f1/ruff-0.15.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:715c543cf450c4888251f91c52f1942a800541d9bddd7ac060aa4e6b77ae7cba", size = 11455931, upload-time = "2026-05-21T14:34:57.276Z" }, + { url = "https://files.pythonhosted.org/packages/2c/4a/e2e7b4d8dbf233d4eace59c75bc3435fa6d8bd3bae82d351d4e4300c0fd1/ruff-0.15.14-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:72ebab6013ec887d439d8b7593737a0a4ffb06d45d209d4e4bf2e92813082d3f", size = 11400794, upload-time = "2026-05-21T14:34:39.773Z" }, + { url = "https://files.pythonhosted.org/packages/97/c7/83c0539fe34c3e09136204d1e75d6052492364e0b3cb05e9465423f567d7/ruff-0.15.14-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:49072d36abdbe97a8dd7f480afe9c675699c0c495d4c84076e2c1203c4550581", size = 10804759, upload-time = "2026-05-21T14:34:31.045Z" }, + { url = "https://files.pythonhosted.org/packages/86/a6/18f2bfc095a2ab4a78745644e428205532ce6653a5d0fa8501572891534d/ruff-0.15.14-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:958522aee105068640c2c2ceae08f413ae44d922f52a1374ac13d6a96032fc93", size = 10539517, upload-time = "2026-05-21T14:34:53.064Z" }, + { url = "https://files.pythonhosted.org/packages/54/3a/5a8b3b69c654d4e4bf1d246ac5b49cbcdac6eaab6905925f8915f31e3b80/ruff-0.15.14-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f3707da619a143a2e8830e2abab8224478d69ace2d28cb6c20543ae97c36bf61", size = 11065169, upload-time = "2026-05-21T14:34:24.484Z" }, + { url = "https://files.pythonhosted.org/packages/ed/c5/8864e4e7925b836ea354b31d57641ec03830564e281a8b6f061f8c3e0ec1/ruff-0.15.14-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:bb01d645694e3ec0102105d07ef2d53703970407d59c04e59d3ba0b7a1d53553", size = 11560214, upload-time = "2026-05-21T14:34:50.975Z" }, + { url = "https://files.pythonhosted.org/packages/36/38/012bf76752e1f89ed50b77b99532d90f3a3e287bc7918e1fc0948ac866ac/ruff-0.15.14-py3-none-win32.whl", hash = "sha256:6d0c1ad2a0ab718d39b6d8fd2217981ce4d625cd96a720095f798fb47d8b13e6", size = 10805548, upload-time = "2026-05-21T14:34:33.453Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/4ea2c170f10ad760fff2a5250beb18897719dc8b52b53a24cddbb9dd3f19/ruff-0.15.14-py3-none-win_amd64.whl", hash = "sha256:802342981e056db3851a7836e5b070f8f15f67d4a685ae2a6160939d364b2902", size = 11939523, upload-time = "2026-05-21T14:34:18.077Z" }, + { url = "https://files.pythonhosted.org/packages/62/d5/bc97ff895ec35cf3925d4bd60f3b39d822f377a446906ec9bcc87405e59b/ruff-0.15.14-py3-none-win_arm64.whl", hash = "sha256:ff47b90a9ef6a40c9e2f3b479c1fb78531adf055b94c1eba0a7ba04b31951826", size = 11208607, upload-time = "2026-05-21T14:34:26.525Z" }, ] [[package]] name = "scipy" -version = "1.17.0" +version = "1.17.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload-time = "2026-01-10T21:34:23.009Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload-time = "2026-01-10T21:25:25.717Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload-time = "2026-01-10T21:25:30.921Z" }, - { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload-time = "2026-01-10T21:25:34.802Z" }, - { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload-time = "2026-01-10T21:25:39.277Z" }, - { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload-time = "2026-01-10T21:25:44.084Z" }, - { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload-time = "2026-01-10T21:25:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload-time = "2026-01-10T21:25:59.41Z" }, - { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload-time = "2026-01-10T21:26:07.75Z" }, - { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload-time = "2026-01-10T21:26:16.509Z" }, - { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload-time = "2026-01-10T21:26:23.087Z" }, - { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload-time = "2026-01-10T21:26:30.25Z" }, - { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload-time = "2026-01-10T21:26:36.801Z" }, - { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload-time = "2026-01-10T21:26:42.107Z" }, - { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload-time = "2026-01-10T21:26:48.029Z" }, - { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload-time = "2026-01-10T21:26:55.521Z" }, - { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload-time = "2026-01-10T21:27:03.501Z" }, - { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload-time = "2026-01-10T21:27:11.423Z" }, - { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload-time = "2026-01-10T21:27:20.171Z" }, - { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload-time = "2026-01-10T21:28:43.122Z" }, - { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload-time = "2026-01-10T21:28:49.893Z" }, - { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload-time = "2026-01-10T21:27:27.454Z" }, - { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload-time = "2026-01-10T21:27:34.26Z" }, - { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload-time = "2026-01-10T21:27:40.306Z" }, - { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload-time = "2026-01-10T21:27:46.539Z" }, - { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload-time = "2026-01-10T21:27:54.389Z" }, - { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload-time = "2026-01-10T21:28:03.012Z" }, - { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload-time = "2026-01-10T21:28:10.832Z" }, - { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload-time = "2026-01-10T21:28:19.684Z" }, - { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload-time = "2026-01-10T21:28:28.007Z" }, - { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload-time = "2026-01-10T21:28:35.188Z" }, - { url = "https://files.pythonhosted.org/packages/1a/2d/51006cd369b8e7879e1c630999a19d1fbf6f8b5ed3e33374f29dc87e53b3/scipy-1.17.0-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a", size = 31346803, upload-time = "2026-01-10T21:28:57.24Z" }, - { url = "https://files.pythonhosted.org/packages/d6/2e/2349458c3ce445f53a6c93d4386b1c4c5c0c540917304c01222ff95ff317/scipy-1.17.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2", size = 27967182, upload-time = "2026-01-10T21:29:04.107Z" }, - { url = "https://files.pythonhosted.org/packages/5e/7c/df525fbfa77b878d1cfe625249529514dc02f4fd5f45f0f6295676a76528/scipy-1.17.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467", size = 20139125, upload-time = "2026-01-10T21:29:10.179Z" }, - { url = "https://files.pythonhosted.org/packages/33/11/fcf9d43a7ed1234d31765ec643b0515a85a30b58eddccc5d5a4d12b5f194/scipy-1.17.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e", size = 22443554, upload-time = "2026-01-10T21:29:15.888Z" }, - { url = "https://files.pythonhosted.org/packages/80/5c/ea5d239cda2dd3d31399424967a24d556cf409fbea7b5b21412b0fd0a44f/scipy-1.17.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67", size = 32757834, upload-time = "2026-01-10T21:29:23.406Z" }, - { url = "https://files.pythonhosted.org/packages/b8/7e/8c917cc573310e5dc91cbeead76f1b600d3fb17cf0969db02c9cf92e3cfa/scipy-1.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73", size = 34995775, upload-time = "2026-01-10T21:29:31.915Z" }, - { url = "https://files.pythonhosted.org/packages/c5/43/176c0c3c07b3f7df324e7cdd933d3e2c4898ca202b090bd5ba122f9fe270/scipy-1.17.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b", size = 34841240, upload-time = "2026-01-10T21:29:39.995Z" }, - { url = "https://files.pythonhosted.org/packages/44/8c/d1f5f4b491160592e7f084d997de53a8e896a3ac01cd07e59f43ca222744/scipy-1.17.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b", size = 37394463, upload-time = "2026-01-10T21:29:48.723Z" }, - { url = "https://files.pythonhosted.org/packages/9f/ec/42a6657f8d2d087e750e9a5dde0b481fd135657f09eaf1cf5688bb23c338/scipy-1.17.0-cp314-cp314-win_amd64.whl", hash = "sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061", size = 37053015, upload-time = "2026-01-10T21:30:51.418Z" }, - { url = "https://files.pythonhosted.org/packages/27/58/6b89a6afd132787d89a362d443a7bddd511b8f41336a1ae47f9e4f000dc4/scipy-1.17.0-cp314-cp314-win_arm64.whl", hash = "sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb", size = 24951312, upload-time = "2026-01-10T21:30:56.771Z" }, - { url = "https://files.pythonhosted.org/packages/e9/01/f58916b9d9ae0112b86d7c3b10b9e685625ce6e8248df139d0fcb17f7397/scipy-1.17.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1", size = 31706502, upload-time = "2026-01-10T21:29:56.326Z" }, - { url = "https://files.pythonhosted.org/packages/59/8e/2912a87f94a7d1f8b38aabc0faf74b82d3b6c9e22be991c49979f0eceed8/scipy-1.17.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1", size = 28380854, upload-time = "2026-01-10T21:30:01.554Z" }, - { url = "https://files.pythonhosted.org/packages/bd/1c/874137a52dddab7d5d595c1887089a2125d27d0601fce8c0026a24a92a0b/scipy-1.17.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232", size = 20552752, upload-time = "2026-01-10T21:30:05.93Z" }, - { url = "https://files.pythonhosted.org/packages/3f/f0/7518d171cb735f6400f4576cf70f756d5b419a07fe1867da34e2c2c9c11b/scipy-1.17.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d", size = 22803972, upload-time = "2026-01-10T21:30:10.651Z" }, - { url = "https://files.pythonhosted.org/packages/7c/74/3498563a2c619e8a3ebb4d75457486c249b19b5b04a30600dfd9af06bea5/scipy-1.17.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba", size = 32829770, upload-time = "2026-01-10T21:30:16.359Z" }, - { url = "https://files.pythonhosted.org/packages/48/d1/7b50cedd8c6c9d6f706b4b36fa8544d829c712a75e370f763b318e9638c1/scipy-1.17.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db", size = 35051093, upload-time = "2026-01-10T21:30:22.987Z" }, - { url = "https://files.pythonhosted.org/packages/e2/82/a2d684dfddb87ba1b3ea325df7c3293496ee9accb3a19abe9429bce94755/scipy-1.17.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf", size = 34909905, upload-time = "2026-01-10T21:30:28.704Z" }, - { url = "https://files.pythonhosted.org/packages/ef/5e/e565bd73991d42023eb82bb99e51c5b3d9e2c588ca9d4b3e2cc1d3ca62a6/scipy-1.17.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f", size = 37457743, upload-time = "2026-01-10T21:30:34.819Z" }, - { url = "https://files.pythonhosted.org/packages/58/a8/a66a75c3d8f1fb2b83f66007d6455a06a6f6cf5618c3dc35bc9b69dd096e/scipy-1.17.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088", size = 37098574, upload-time = "2026-01-10T21:30:40.782Z" }, - { url = "https://files.pythonhosted.org/packages/56/a5/df8f46ef7da168f1bc52cd86e09a9de5c6f19cc1da04454d51b7d4f43408/scipy-1.17.0-cp314-cp314t-win_arm64.whl", hash = "sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff", size = 25246266, upload-time = "2026-01-10T21:30:45.923Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/48/b992b488d6f299dbe3f11a20b24d3dda3d46f1a635ede1c46b5b17a7b163/scipy-1.17.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:35c3a56d2ef83efc372eaec584314bd0ef2e2f0d2adb21c55e6ad5b344c0dcb8", size = 31610954, upload-time = "2026-02-23T00:17:49.855Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/cf107b01494c19dc100f1d0b7ac3cc08666e96ba2d64db7626066cee895e/scipy-1.17.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:fcb310ddb270a06114bb64bbe53c94926b943f5b7f0842194d585c65eb4edd76", size = 28172662, upload-time = "2026-02-23T00:18:01.64Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a9/599c28631bad314d219cf9ffd40e985b24d603fc8a2f4ccc5ae8419a535b/scipy-1.17.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:cc90d2e9c7e5c7f1a482c9875007c095c3194b1cfedca3c2f3291cdc2bc7c086", size = 20344366, upload-time = "2026-02-23T00:18:12.015Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:c80be5ede8f3f8eded4eff73cc99a25c388ce98e555b17d31da05287015ffa5b", size = 22704017, upload-time = "2026-02-23T00:18:21.502Z" }, + { url = "https://files.pythonhosted.org/packages/da/34/16f10e3042d2f1d6b66e0428308ab52224b6a23049cb2f5c1756f713815f/scipy-1.17.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e19ebea31758fac5893a2ac360fedd00116cbb7628e650842a6691ba7ca28a21", size = 32927842, upload-time = "2026-02-23T00:18:35.367Z" }, + { url = "https://files.pythonhosted.org/packages/01/8e/1e35281b8ab6d5d72ebe9911edcdffa3f36b04ed9d51dec6dd140396e220/scipy-1.17.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02ae3b274fde71c5e92ac4d54bc06c42d80e399fec704383dcd99b301df37458", size = 35235890, upload-time = "2026-02-23T00:18:49.188Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/9d7f4c88bea6e0d5a4f1bc0506a53a00e9fcb198de372bfe4d3652cef482/scipy-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a604bae87c6195d8b1045eddece0514d041604b14f2727bbc2b3020172045eb", size = 35003557, upload-time = "2026-02-23T00:18:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/65/94/7698add8f276dbab7a9de9fb6b0e02fc13ee61d51c7c3f85ac28b65e1239/scipy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f590cd684941912d10becc07325a3eeb77886fe981415660d9265c4c418d0bea", size = 37625856, upload-time = "2026-02-23T00:19:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:41b71f4a3a4cab9d366cd9065b288efc4d4f3c0b37a91a8e0947fb5bd7f31d87", size = 36549682, upload-time = "2026-02-23T00:19:07.67Z" }, + { url = "https://files.pythonhosted.org/packages/bc/98/fe9ae9ffb3b54b62559f52dedaebe204b408db8109a8c66fdd04869e6424/scipy-1.17.1-cp312-cp312-win_arm64.whl", hash = "sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3", size = 24547340, upload-time = "2026-02-23T00:19:12.024Z" }, + { url = "https://files.pythonhosted.org/packages/76/27/07ee1b57b65e92645f219b37148a7e7928b82e2b5dbeccecb4dff7c64f0b/scipy-1.17.1-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:5e3c5c011904115f88a39308379c17f91546f77c1667cea98739fe0fccea804c", size = 31590199, upload-time = "2026-02-23T00:19:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ae/db19f8ab842e9b724bf5dbb7db29302a91f1e55bc4d04b1025d6d605a2c5/scipy-1.17.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:6fac755ca3d2c3edcb22f479fceaa241704111414831ddd3bc6056e18516892f", size = 28154001, upload-time = "2026-02-23T00:19:22.241Z" }, + { url = "https://files.pythonhosted.org/packages/5b/58/3ce96251560107b381cbd6e8413c483bbb1228a6b919fa8652b0d4090e7f/scipy-1.17.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:7ff200bf9d24f2e4d5dc6ee8c3ac64d739d3a89e2326ba68aaf6c4a2b838fd7d", size = 20325719, upload-time = "2026-02-23T00:19:26.329Z" }, + { url = "https://files.pythonhosted.org/packages/b2/83/15087d945e0e4d48ce2377498abf5ad171ae013232ae31d06f336e64c999/scipy-1.17.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4b400bdc6f79fa02a4d86640310dde87a21fba0c979efff5248908c6f15fad1b", size = 22683595, upload-time = "2026-02-23T00:19:30.304Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e0/e58fbde4a1a594c8be8114eb4aac1a55bcd6587047efc18a61eb1f5c0d30/scipy-1.17.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b64ca7d4aee0102a97f3ba22124052b4bd2152522355073580bf4845e2550b6", size = 32896429, upload-time = "2026-02-23T00:19:35.536Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5f/f17563f28ff03c7b6799c50d01d5d856a1d55f2676f537ca8d28c7f627cd/scipy-1.17.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:581b2264fc0aa555f3f435a5944da7504ea3a065d7029ad60e7c3d1ae09c5464", size = 35203952, upload-time = "2026-02-23T00:19:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a5/9afd17de24f657fdfe4df9a3f1ea049b39aef7c06000c13db1530d81ccca/scipy-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:beeda3d4ae615106d7094f7e7cef6218392e4465cc95d25f900bebabfded0950", size = 34979063, upload-time = "2026-02-23T00:19:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/8b/13/88b1d2384b424bf7c924f2038c1c409f8d88bb2a8d49d097861dd64a57b2/scipy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6609bc224e9568f65064cfa72edc0f24ee6655b47575954ec6339534b2798369", size = 37598449, upload-time = "2026-02-23T00:19:53.238Z" }, + { url = "https://files.pythonhosted.org/packages/35/e5/d6d0e51fc888f692a35134336866341c08655d92614f492c6860dc45bb2c/scipy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:37425bc9175607b0268f493d79a292c39f9d001a357bebb6b88fdfaff13f6448", size = 36510943, upload-time = "2026-02-23T00:20:50.89Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fd/3be73c564e2a01e690e19cc618811540ba5354c67c8680dce3281123fb79/scipy-1.17.1-cp313-cp313-win_arm64.whl", hash = "sha256:5cf36e801231b6a2059bf354720274b7558746f3b1a4efb43fcf557ccd484a87", size = 24545621, upload-time = "2026-02-23T00:20:55.871Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6b/17787db8b8114933a66f9dcc479a8272e4b4da75fe03b0c282f7b0ade8cd/scipy-1.17.1-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:d59c30000a16d8edc7e64152e30220bfbd724c9bbb08368c054e24c651314f0a", size = 31936708, upload-time = "2026-02-23T00:19:58.694Z" }, + { url = "https://files.pythonhosted.org/packages/38/2e/524405c2b6392765ab1e2b722a41d5da33dc5c7b7278184a8ad29b6cb206/scipy-1.17.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:010f4333c96c9bb1a4516269e33cb5917b08ef2166d5556ca2fd9f082a9e6ea0", size = 28570135, upload-time = "2026-02-23T00:20:03.934Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c3/5bd7199f4ea8556c0c8e39f04ccb014ac37d1468e6cfa6a95c6b3562b76e/scipy-1.17.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2ceb2d3e01c5f1d83c4189737a42d9cb2fc38a6eeed225e7515eef71ad301dce", size = 20741977, upload-time = "2026-02-23T00:20:07.935Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b8/8ccd9b766ad14c78386599708eb745f6b44f08400a5fd0ade7cf89b6fc93/scipy-1.17.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:844e165636711ef41f80b4103ed234181646b98a53c8f05da12ca5ca289134f6", size = 23029601, upload-time = "2026-02-23T00:20:12.161Z" }, + { url = "https://files.pythonhosted.org/packages/6d/a0/3cb6f4d2fb3e17428ad2880333cac878909ad1a89f678527b5328b93c1d4/scipy-1.17.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:158dd96d2207e21c966063e1635b1063cd7787b627b6f07305315dd73d9c679e", size = 33019667, upload-time = "2026-02-23T00:20:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c3/2d834a5ac7bf3a0c806ad1508efc02dda3c8c61472a56132d7894c312dea/scipy-1.17.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74cbb80d93260fe2ffa334efa24cb8f2f0f622a9b9febf8b483c0b865bfb3475", size = 35264159, upload-time = "2026-02-23T00:20:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/4d/77/d3ed4becfdbd217c52062fafe35a72388d1bd82c2d0ba5ca19d6fcc93e11/scipy-1.17.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dbc12c9f3d185f5c737d801da555fb74b3dcfa1a50b66a1a93e09190f41fab50", size = 35102771, upload-time = "2026-02-23T00:20:28.636Z" }, + { url = "https://files.pythonhosted.org/packages/bd/12/d19da97efde68ca1ee5538bb261d5d2c062f0c055575128f11a2730e3ac1/scipy-1.17.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94055a11dfebe37c656e70317e1996dc197e1a15bbcc351bcdd4610e128fe1ca", size = 37665910, upload-time = "2026-02-23T00:20:34.743Z" }, + { url = "https://files.pythonhosted.org/packages/06/1c/1172a88d507a4baaf72c5a09bb6c018fe2ae0ab622e5830b703a46cc9e44/scipy-1.17.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e30bdeaa5deed6bc27b4cc490823cd0347d7dae09119b8803ae576ea0ce52e4c", size = 36562980, upload-time = "2026-02-23T00:20:40.575Z" }, + { url = "https://files.pythonhosted.org/packages/70/b0/eb757336e5a76dfa7911f63252e3b7d1de00935d7705cf772db5b45ec238/scipy-1.17.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a720477885a9d2411f94a93d16f9d89bad0f28ca23c3f8daa521e2dcc3f44d49", size = 24856543, upload-time = "2026-02-23T00:20:45.313Z" }, + { url = "https://files.pythonhosted.org/packages/cf/83/333afb452af6f0fd70414dc04f898647ee1423979ce02efa75c3b0f2c28e/scipy-1.17.1-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:a48a72c77a310327f6a3a920092fa2b8fd03d7deaa60f093038f22d98e096717", size = 31584510, upload-time = "2026-02-23T00:21:01.015Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a6/d05a85fd51daeb2e4ea71d102f15b34fedca8e931af02594193ae4fd25f7/scipy-1.17.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:45abad819184f07240d8a696117a7aacd39787af9e0b719d00285549ed19a1e9", size = 28170131, upload-time = "2026-02-23T00:21:05.888Z" }, + { url = "https://files.pythonhosted.org/packages/db/7b/8624a203326675d7746a254083a187398090a179335b2e4a20e2ddc46e83/scipy-1.17.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3fd1fcdab3ea951b610dc4cef356d416d5802991e7e32b5254828d342f7b7e0b", size = 20342032, upload-time = "2026-02-23T00:21:09.904Z" }, + { url = "https://files.pythonhosted.org/packages/c9/35/2c342897c00775d688d8ff3987aced3426858fd89d5a0e26e020b660b301/scipy-1.17.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7bdf2da170b67fdf10bca777614b1c7d96ae3ca5794fd9587dce41eb2966e866", size = 22678766, upload-time = "2026-02-23T00:21:14.313Z" }, + { url = "https://files.pythonhosted.org/packages/ef/f2/7cdb8eb308a1a6ae1e19f945913c82c23c0c442a462a46480ce487fdc0ac/scipy-1.17.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:adb2642e060a6549c343603a3851ba76ef0b74cc8c079a9a58121c7ec9fe2350", size = 32957007, upload-time = "2026-02-23T00:21:19.663Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2e/7eea398450457ecb54e18e9d10110993fa65561c4f3add5e8eccd2b9cd41/scipy-1.17.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eee2cfda04c00a857206a4330f0c5e3e56535494e30ca445eb19ec624ae75118", size = 35221333, upload-time = "2026-02-23T00:21:25.278Z" }, + { url = "https://files.pythonhosted.org/packages/d9/77/5b8509d03b77f093a0d52e606d3c4f79e8b06d1d38c441dacb1e26cacf46/scipy-1.17.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d2650c1fb97e184d12d8ba010493ee7b322864f7d3d00d3f9bb97d9c21de4068", size = 35042066, upload-time = "2026-02-23T00:21:31.358Z" }, + { url = "https://files.pythonhosted.org/packages/f9/df/18f80fb99df40b4070328d5ae5c596f2f00fffb50167e31439e932f29e7d/scipy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:08b900519463543aa604a06bec02461558a6e1cef8fdbb8098f77a48a83c8118", size = 37612763, upload-time = "2026-02-23T00:21:37.247Z" }, + { url = "https://files.pythonhosted.org/packages/4b/39/f0e8ea762a764a9dc52aa7dabcfad51a354819de1f0d4652b6a1122424d6/scipy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:3877ac408e14da24a6196de0ddcace62092bfc12a83823e92e49e40747e52c19", size = 37290984, upload-time = "2026-02-23T00:22:35.023Z" }, + { url = "https://files.pythonhosted.org/packages/7c/56/fe201e3b0f93d1a8bcf75d3379affd228a63d7e2d80ab45467a74b494947/scipy-1.17.1-cp314-cp314-win_arm64.whl", hash = "sha256:f8885db0bc2bffa59d5c1b72fad7a6a92d3e80e7257f967dd81abb553a90d293", size = 25192877, upload-time = "2026-02-23T00:22:39.798Z" }, + { url = "https://files.pythonhosted.org/packages/96/ad/f8c414e121f82e02d76f310f16db9899c4fcde36710329502a6b2a3c0392/scipy-1.17.1-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:1cc682cea2ae55524432f3cdff9e9a3be743d52a7443d0cba9017c23c87ae2f6", size = 31949750, upload-time = "2026-02-23T00:21:42.289Z" }, + { url = "https://files.pythonhosted.org/packages/7c/b0/c741e8865d61b67c81e255f4f0a832846c064e426636cd7de84e74d209be/scipy-1.17.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:2040ad4d1795a0ae89bfc7e8429677f365d45aa9fd5e4587cf1ea737f927b4a1", size = 28585858, upload-time = "2026-02-23T00:21:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1b/3985219c6177866628fa7c2595bfd23f193ceebbe472c98a08824b9466ff/scipy-1.17.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:131f5aaea57602008f9822e2115029b55d4b5f7c070287699fe45c661d051e39", size = 20757723, upload-time = "2026-02-23T00:21:52.039Z" }, + { url = "https://files.pythonhosted.org/packages/c0/19/2a04aa25050d656d6f7b9e7b685cc83d6957fb101665bfd9369ca6534563/scipy-1.17.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:9cdc1a2fcfd5c52cfb3045feb399f7b3ce822abdde3a193a6b9a60b3cb5854ca", size = 23043098, upload-time = "2026-02-23T00:21:56.185Z" }, + { url = "https://files.pythonhosted.org/packages/86/f1/3383beb9b5d0dbddd030335bf8a8b32d4317185efe495374f134d8be6cce/scipy-1.17.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e3dcd57ab780c741fde8dc68619de988b966db759a3c3152e8e9142c26295ad", size = 33030397, upload-time = "2026-02-23T00:22:01.404Z" }, + { url = "https://files.pythonhosted.org/packages/41/68/8f21e8a65a5a03f25a79165ec9d2b28c00e66dc80546cf5eb803aeeff35b/scipy-1.17.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9956e4d4f4a301ebf6cde39850333a6b6110799d470dbbb1e25326ac447f52a", size = 35281163, upload-time = "2026-02-23T00:22:07.024Z" }, + { url = "https://files.pythonhosted.org/packages/84/8d/c8a5e19479554007a5632ed7529e665c315ae7492b4f946b0deb39870e39/scipy-1.17.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a4328d245944d09fd639771de275701ccadf5f781ba0ff092ad141e017eccda4", size = 35116291, upload-time = "2026-02-23T00:22:12.585Z" }, + { url = "https://files.pythonhosted.org/packages/52/52/e57eceff0e342a1f50e274264ed47497b59e6a4e3118808ee58ddda7b74a/scipy-1.17.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a77cbd07b940d326d39a1d1b37817e2ee4d79cb30e7338f3d0cddffae70fcaa2", size = 37682317, upload-time = "2026-02-23T00:22:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/11/2f/b29eafe4a3fbc3d6de9662b36e028d5f039e72d345e05c250e121a230dd4/scipy-1.17.1-cp314-cp314t-win_amd64.whl", hash = "sha256:eb092099205ef62cd1782b006658db09e2fed75bffcae7cc0d44052d8aa0f484", size = 37345327, upload-time = "2026-02-23T00:22:24.442Z" }, + { url = "https://files.pythonhosted.org/packages/07/39/338d9219c4e87f3e708f18857ecd24d22a0c3094752393319553096b98af/scipy-1.17.1-cp314-cp314t-win_arm64.whl", hash = "sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21", size = 25489165, upload-time = "2026-02-23T00:22:29.563Z" }, ] [[package]] name = "scipy-stubs" -version = "1.17.0.0" +version = "1.17.1.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "optype", extra = ["numpy"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/12/4c/ae02bab2da86641edb086e1ac72281b208282a4dc0a9713fba4b823d22d9/scipy_stubs-1.17.0.0.tar.gz", hash = "sha256:01953f1c7967876be942afa21c1cc864c92714d01b1970ef8bdd468b4468d4b7", size = 367603, upload-time = "2025-12-31T18:58:25.911Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/53/bc0ad50243638982c572894c9dd5205e690d34fda7ec6cadf1c1ce157e14/scipy_stubs-1.17.0.0-py3-none-any.whl", hash = "sha256:17b336fa6c56afb0cf47e426e3cb36a7eb8b73351ee0a52d1e5cef7634b5e936", size = 572744, upload-time = "2025-12-31T18:58:24.297Z" }, -] - -[[package]] -name = "scmrepo" -version = "3.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp-retry" }, - { name = "asyncssh" }, - { name = "dulwich" }, - { name = "fsspec", extra = ["tqdm"] }, - { name = "gitpython" }, - { name = "pathspec" }, - { name = "pygit2" }, - { name = "pygtrie" }, - { name = "tqdm" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/35/ae/0b8533280cfeda22a58b32e71ddb09a84bbfa7d94ca81b624c3833a9cae7/scmrepo-3.6.1.tar.gz", hash = "sha256:73af4f3e652d565fd09cf9917e59de4df6dca2f5ff7625b91f0942e759915e33", size = 97365, upload-time = "2026-01-06T06:55:57.62Z" } +sdist = { url = "https://files.pythonhosted.org/packages/02/30/7a2e621918d1317ab972f797161131f2635648ad5d92baf0695dd009e4f9/scipy_stubs-1.17.1.5.tar.gz", hash = "sha256:284b1dd1dd46107a614971d170030d310cd88b2ac6b483f85285ee0ff87720bd", size = 399933, upload-time = "2026-05-25T21:34:33.6Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/74/6f70b285d172f1e3fac435e4f10d1413dbe0a14810388e352a0e392e3188/scmrepo-3.6.1-py3-none-any.whl", hash = "sha256:c87e5802fca28fae9466d78315c03461ba388a6e8cefbf071ae8b06c372c89f9", size = 74074, upload-time = "2026-01-06T06:55:55.729Z" }, + { url = "https://files.pythonhosted.org/packages/e1/26/d4bc2ba3427a623f79a6c10c8f427c7a55b56eb8b3eddc369319d97f741b/scipy_stubs-1.17.1.5-py3-none-any.whl", hash = "sha256:58ebf054a86c000c72e8982e121c4ead0d3d9ba7a6c38aa5fa71b07f96a427fd", size = 607388, upload-time = "2026-05-25T21:34:32.073Z" }, ] [[package]] name = "scooby" -version = "0.11.0" +version = "0.11.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d1/d1/a28f3be1503a9c474a4878424bbeb93a55a2ec7d0cb66559aa258e690aea/scooby-0.11.0.tar.gz", hash = "sha256:3dfacc6becf2d6558efa4b625bae3b844ced5d256f3143ebf774e005367e712a", size = 22102, upload-time = "2025-11-01T19:22:53.894Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/06/9a8600207fd72a29ee965e9a4c61b750cc3fa106768f14a7b3ee3e36cb61/scooby-0.11.2.tar.gz", hash = "sha256:0575c73636ec4c2587bea1f8a038798ddcb249e02067fae897dac3bf4f4e444d", size = 242928, upload-time = "2026-04-22T23:13:12.307Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/bb/bbae36d06c0fd670e8373da67096cd57058b57c9bad7d92969b5e3b730af/scooby-0.11.0-py3-none-any.whl", hash = "sha256:a79663d1a7711eb104e4b2935988ea1ed5f7be6b7288fad23b4fba7462832f9d", size = 19877, upload-time = "2025-11-01T19:22:53.046Z" }, + { url = "https://files.pythonhosted.org/packages/99/bc/1173f502f1870e3bae81c148326c5cbcc19ec77df79a9aaf17a59911355c/scooby-0.11.2-py3-none-any.whl", hash = "sha256:f34c36bbee749b2c55816a080521f216d88304e635017e911c12249607d38c49", size = 20142, upload-time = "2026-04-22T23:13:10.705Z" }, ] [[package]] @@ -8569,35 +4534,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" }, ] -[[package]] -name = "semver" -version = "3.0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload-time = "2025-01-24T13:19:27.617Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload-time = "2025-01-24T13:19:24.949Z" }, -] - [[package]] name = "sentry-sdk" -version = "2.49.0" +version = "2.60.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/02/94/23ac26616a883f492428d9ee9ad6eee391612125326b784dbfc30e1e7bab/sentry_sdk-2.49.0.tar.gz", hash = "sha256:c1878599cde410d481c04ef50ee3aedd4f600e4d0d253f4763041e468b332c30", size = 387228, upload-time = "2026-01-08T09:56:25.642Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/a2/2e6c090db384cc515069f4f85542bd5baf6786852073020ea73d4a76d3ea/sentry_sdk-2.60.0.tar.gz", hash = "sha256:0bd25e54e78ca02d0be512529fa644bbbf9e8470d7b26371294012d4ca93c978", size = 452946, upload-time = "2026-05-13T13:34:52.516Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/43/1c586f9f413765201234541857cb82fda076f4b0f7bad4a0ec248da39cf3/sentry_sdk-2.49.0-py2.py3-none-any.whl", hash = "sha256:6ea78499133874445a20fe9c826c9e960070abeb7ae0cdf930314ab16bb97aa0", size = 415693, upload-time = "2026-01-08T09:56:21.872Z" }, + { url = "https://files.pythonhosted.org/packages/29/41/f2b800b7f12a05dd48c2a6280d4dd812d1425fc66ed3fe3fd99420c41d1a/sentry_sdk-2.60.0-py3-none-any.whl", hash = "sha256:28a536c03291c8bcb363cf35c611b32738ec118ff64d8d6383b096448ac4c803", size = 475616, upload-time = "2026-05-13T13:34:50.259Z" }, ] [[package]] name = "setuptools" -version = "80.9.0" +version = "81.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, ] [[package]] @@ -8660,57 +4616,57 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] -[[package]] -name = "shortuuid" -version = "1.0.13" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/e2/bcf761f3bff95856203f9559baf3741c416071dd200c0fc19fad7f078f86/shortuuid-1.0.13.tar.gz", hash = "sha256:3bb9cf07f606260584b1df46399c0b87dd84773e7b25912b7e391e30797c5e72", size = 9662, upload-time = "2024-03-11T20:11:06.879Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/44/21d6bf170bf40b41396480d8d49ad640bca3f2b02139cd52aa1e272830a5/shortuuid-1.0.13-py3-none-any.whl", hash = "sha256:a482a497300b49b4953e15108a7913244e1bb0d41f9d332f5e9925dba33a3c5a", size = 10529, upload-time = "2024-03-11T20:11:04.807Z" }, -] - -[[package]] -name = "shtab" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/7a/7f131b6082d8b592c32e4312d0a6da3d0b28b8f0d305ddd93e49c9d89929/shtab-1.8.0.tar.gz", hash = "sha256:75f16d42178882b7f7126a0c2cb3c848daed2f4f5a276dd1ded75921cc4d073a", size = 46062, upload-time = "2025-11-18T10:57:47.601Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/e1/202a31727b0d096a04380f78e809074d7a1d0a22d9d5a39fea1d2353fd02/shtab-1.8.0-py3-none-any.whl", hash = "sha256:f0922a82174b4007e06ac0bac4f79abd826c5cca88e201bfd927f889803c571d", size = 14457, upload-time = "2025-11-18T10:57:45.906Z" }, -] - [[package]] name = "simplejson" -version = "3.20.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/f4/a1ac5ed32f7ed9a088d62a59d410d4c204b3b3815722e2ccfb491fa8251b/simplejson-3.20.2.tar.gz", hash = "sha256:5fe7a6ce14d1c300d80d08695b7f7e633de6cd72c80644021874d985b3393649", size = 85784, upload-time = "2025-09-26T16:29:36.64Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/9e/1a91e7614db0416885eab4136d49b7303de20528860ffdd798ce04d054db/simplejson-3.20.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4376d5acae0d1e91e78baeba4ee3cf22fbf6509d81539d01b94e0951d28ec2b6", size = 93523, upload-time = "2025-09-26T16:28:00.356Z" }, - { url = "https://files.pythonhosted.org/packages/5e/2b/d2413f5218fc25608739e3d63fe321dfa85c5f097aa6648dbe72513a5f12/simplejson-3.20.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f8fe6de652fcddae6dec8f281cc1e77e4e8f3575249e1800090aab48f73b4259", size = 75844, upload-time = "2025-09-26T16:28:01.756Z" }, - { url = "https://files.pythonhosted.org/packages/ad/f1/efd09efcc1e26629e120fef59be059ce7841cc6e1f949a4db94f1ae8a918/simplejson-3.20.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25ca2663d99328d51e5a138f22018e54c9162438d831e26cfc3458688616eca8", size = 75655, upload-time = "2025-09-26T16:28:03.037Z" }, - { url = "https://files.pythonhosted.org/packages/97/ec/5c6db08e42f380f005d03944be1af1a6bd501cc641175429a1cbe7fb23b9/simplejson-3.20.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12a6b2816b6cab6c3fd273d43b1948bc9acf708272074c8858f579c394f4cbc9", size = 150335, upload-time = "2025-09-26T16:28:05.027Z" }, - { url = "https://files.pythonhosted.org/packages/81/f5/808a907485876a9242ec67054da7cbebefe0ee1522ef1c0be3bfc90f96f6/simplejson-3.20.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac20dc3fcdfc7b8415bfc3d7d51beccd8695c3f4acb7f74e3a3b538e76672868", size = 158519, upload-time = "2025-09-26T16:28:06.5Z" }, - { url = "https://files.pythonhosted.org/packages/66/af/b8a158246834645ea890c36136584b0cc1c0e4b83a73b11ebd9c2a12877c/simplejson-3.20.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db0804d04564e70862ef807f3e1ace2cc212ef0e22deb1b3d6f80c45e5882c6b", size = 148571, upload-time = "2025-09-26T16:28:07.715Z" }, - { url = "https://files.pythonhosted.org/packages/20/05/ed9b2571bbf38f1a2425391f18e3ac11cb1e91482c22d644a1640dea9da7/simplejson-3.20.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:979ce23ea663895ae39106946ef3d78527822d918a136dbc77b9e2b7f006237e", size = 152367, upload-time = "2025-09-26T16:28:08.921Z" }, - { url = "https://files.pythonhosted.org/packages/81/2c/bad68b05dd43e93f77994b920505634d31ed239418eb6a88997d06599983/simplejson-3.20.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a2ba921b047bb029805726800819675249ef25d2f65fd0edb90639c5b1c3033c", size = 150205, upload-time = "2025-09-26T16:28:10.086Z" }, - { url = "https://files.pythonhosted.org/packages/69/46/90c7fc878061adafcf298ce60cecdee17a027486e9dce507e87396d68255/simplejson-3.20.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:12d3d4dc33770069b780cc8f5abef909fe4a3f071f18f55f6d896a370fd0f970", size = 151823, upload-time = "2025-09-26T16:28:11.329Z" }, - { url = "https://files.pythonhosted.org/packages/ab/27/b85b03349f825ae0f5d4f780cdde0bbccd4f06c3d8433f6a3882df887481/simplejson-3.20.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:aff032a59a201b3683a34be1169e71ddda683d9c3b43b261599c12055349251e", size = 158997, upload-time = "2025-09-26T16:28:12.917Z" }, - { url = "https://files.pythonhosted.org/packages/71/ad/d7f3c331fb930638420ac6d236db68e9f4c28dab9c03164c3cd0e7967e15/simplejson-3.20.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:30e590e133b06773f0dc9c3f82e567463df40598b660b5adf53eb1c488202544", size = 154367, upload-time = "2025-09-26T16:28:14.393Z" }, - { url = "https://files.pythonhosted.org/packages/f0/46/5c67324addd40fa2966f6e886cacbbe0407c03a500db94fb8bb40333fcdf/simplejson-3.20.2-cp312-cp312-win32.whl", hash = "sha256:8d7be7c99939cc58e7c5bcf6bb52a842a58e6c65e1e9cdd2a94b697b24cddb54", size = 74285, upload-time = "2025-09-26T16:28:15.931Z" }, - { url = "https://files.pythonhosted.org/packages/fa/c9/5cc2189f4acd3a6e30ffa9775bf09b354302dbebab713ca914d7134d0f29/simplejson-3.20.2-cp312-cp312-win_amd64.whl", hash = "sha256:2c0b4a67e75b945489052af6590e7dca0ed473ead5d0f3aad61fa584afe814ab", size = 75969, upload-time = "2025-09-26T16:28:17.017Z" }, - { url = "https://files.pythonhosted.org/packages/5e/9e/f326d43f6bf47f4e7704a4426c36e044c6bedfd24e072fb8e27589a373a5/simplejson-3.20.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90d311ba8fcd733a3677e0be21804827226a57144130ba01c3c6a325e887dd86", size = 93530, upload-time = "2025-09-26T16:28:18.07Z" }, - { url = "https://files.pythonhosted.org/packages/35/28/5a4b8f3483fbfb68f3f460bc002cef3a5735ef30950e7c4adce9c8da15c7/simplejson-3.20.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:feed6806f614bdf7f5cb6d0123cb0c1c5f40407ef103aa935cffaa694e2e0c74", size = 75846, upload-time = "2025-09-26T16:28:19.12Z" }, - { url = "https://files.pythonhosted.org/packages/7a/4d/30dfef83b9ac48afae1cf1ab19c2867e27b8d22b5d9f8ca7ce5a0a157d8c/simplejson-3.20.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6b1d8d7c3e1a205c49e1aee6ba907dcb8ccea83651e6c3e2cb2062f1e52b0726", size = 75661, upload-time = "2025-09-26T16:28:20.219Z" }, - { url = "https://files.pythonhosted.org/packages/09/1d/171009bd35c7099d72ef6afd4bb13527bab469965c968a17d69a203d62a6/simplejson-3.20.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:552f55745044a24c3cb7ec67e54234be56d5d6d0e054f2e4cf4fb3e297429be5", size = 150579, upload-time = "2025-09-26T16:28:21.337Z" }, - { url = "https://files.pythonhosted.org/packages/61/ae/229bbcf90a702adc6bfa476e9f0a37e21d8c58e1059043038797cbe75b8c/simplejson-3.20.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2da97ac65165d66b0570c9e545786f0ac7b5de5854d3711a16cacbcaa8c472d", size = 158797, upload-time = "2025-09-26T16:28:22.53Z" }, - { url = "https://files.pythonhosted.org/packages/90/c5/fefc0ac6b86b9108e302e0af1cf57518f46da0baedd60a12170791d56959/simplejson-3.20.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f59a12966daa356bf68927fca5a67bebac0033cd18b96de9c2d426cd11756cd0", size = 148851, upload-time = "2025-09-26T16:28:23.733Z" }, - { url = "https://files.pythonhosted.org/packages/43/f1/b392952200f3393bb06fbc4dd975fc63a6843261705839355560b7264eb2/simplejson-3.20.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133ae2098a8e162c71da97cdab1f383afdd91373b7ff5fe65169b04167da976b", size = 152598, upload-time = "2025-09-26T16:28:24.962Z" }, - { url = "https://files.pythonhosted.org/packages/f4/b4/d6b7279e52a3e9c0fa8c032ce6164e593e8d9cf390698ee981ed0864291b/simplejson-3.20.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7977640af7b7d5e6a852d26622057d428706a550f7f5083e7c4dd010a84d941f", size = 150498, upload-time = "2025-09-26T16:28:26.114Z" }, - { url = "https://files.pythonhosted.org/packages/62/22/ec2490dd859224326d10c2fac1353e8ad5c84121be4837a6dd6638ba4345/simplejson-3.20.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b530ad6d55e71fa9e93e1109cf8182f427a6355848a4ffa09f69cc44e1512522", size = 152129, upload-time = "2025-09-26T16:28:27.552Z" }, - { url = "https://files.pythonhosted.org/packages/33/ce/b60214d013e93dd9e5a705dcb2b88b6c72bada442a97f79828332217f3eb/simplejson-3.20.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bd96a7d981bf64f0e42345584768da4435c05b24fd3c364663f5fbc8fabf82e3", size = 159359, upload-time = "2025-09-26T16:28:28.667Z" }, - { url = "https://files.pythonhosted.org/packages/99/21/603709455827cdf5b9d83abe726343f542491ca8dc6a2528eb08de0cf034/simplejson-3.20.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f28ee755fadb426ba2e464d6fcf25d3f152a05eb6b38e0b4f790352f5540c769", size = 154717, upload-time = "2025-09-26T16:28:30.288Z" }, - { url = "https://files.pythonhosted.org/packages/3c/f9/dc7f7a4bac16cf7eb55a4df03ad93190e11826d2a8950052949d3dfc11e2/simplejson-3.20.2-cp313-cp313-win32.whl", hash = "sha256:472785b52e48e3eed9b78b95e26a256f59bb1ee38339be3075dad799e2e1e661", size = 74289, upload-time = "2025-09-26T16:28:31.809Z" }, - { url = "https://files.pythonhosted.org/packages/87/10/d42ad61230436735c68af1120622b28a782877146a83d714da7b6a2a1c4e/simplejson-3.20.2-cp313-cp313-win_amd64.whl", hash = "sha256:a1a85013eb33e4820286139540accbe2c98d2da894b2dcefd280209db508e608", size = 75972, upload-time = "2025-09-26T16:28:32.883Z" }, - { url = "https://files.pythonhosted.org/packages/05/5b/83e1ff87eb60ca706972f7e02e15c0b33396e7bdbd080069a5d1b53cf0d8/simplejson-3.20.2-py3-none-any.whl", hash = "sha256:3b6bb7fb96efd673eac2e4235200bfffdc2353ad12c54117e1e4e2fc485ac017", size = 57309, upload-time = "2025-09-26T16:29:35.312Z" }, +version = "4.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0e/2a/54837395a3487c725669428d513293612a48d82b95a0642c936932e5d898/simplejson-4.1.1.tar.gz", hash = "sha256:c08eb9f7a90f77ae470e19a07472e9a79ebc0d1c2315d86a72767665bd5ba79f", size = 118860, upload-time = "2026-04-24T19:24:59.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/25/e90998fe8e480eb43b966c09e835379887d427567ebd496563d3b1e16b19/simplejson-4.1.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:19040a17154dc03d289bab68d73ce0a6a0be01de30c584bbdd93490bead14b22", size = 112414, upload-time = "2026-04-24T19:23:06.084Z" }, + { url = "https://files.pythonhosted.org/packages/9c/a0/abd4785f36c3400f1fbb21f517be39295a750a714f04b7ee175adf6ef580/simplejson-4.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a94ebaecdbaa80d9551a3ec6bf0c9302fc8b53ab6c1b2bfd498a1df4cb28158d", size = 91120, upload-time = "2026-04-24T19:23:07.877Z" }, + { url = "https://files.pythonhosted.org/packages/b8/78/fc060d2e3b13c6ec59288574b8efac64075e316b2afba4396a56b2422f78/simplejson-4.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:67341c95c0a168ab4a6d1e807e50463f1c8da932c3286d81e201266c427061fa", size = 91055, upload-time = "2026-04-24T19:23:09.264Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b6/156a8de1e1b47694f0e7de6675866936608d45dc68388fd017d36f8693be/simplejson-4.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:45ec18e337fec538b7e902d489505c450b2454653d1290f3f50385e6fd8aa607", size = 190297, upload-time = "2026-04-24T19:23:11.226Z" }, + { url = "https://files.pythonhosted.org/packages/86/1c/e4d0eab695be3eb21d0f46bce820752031f03e7113f9c80a9b3c73ee7157/simplejson-4.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:820c69a4710400e9b248d5670647d60be58824369282d3925e516b3ff1a7cd82", size = 187002, upload-time = "2026-04-24T19:23:12.982Z" }, + { url = "https://files.pythonhosted.org/packages/76/0e/7f5a59d29426b062d5928fb88b403c3f797129d53be7102f955dbe51aa44/simplejson-4.1.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e708d373a10e4378ef2d59f8361850c7150fd907ed49efe49bc5492160476d1", size = 195146, upload-time = "2026-04-24T19:23:14.517Z" }, + { url = "https://files.pythonhosted.org/packages/78/18/9943db224dd4d5fa3c090c3e56a94c37b254338c83995ec5680285111c40/simplejson-4.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:980fc33353f81fd12d8c49d44f8c2760d1dc8192285e627c5180d141035b228a", size = 183931, upload-time = "2026-04-24T19:23:16.742Z" }, + { url = "https://files.pythonhosted.org/packages/c2/08/9a690da9a766161c06c627d805362cf159f1abe480969372b2897649b955/simplejson-4.1.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:de2ed102fff88dacf543699f53ee3a533cc11539a39baa176b7e09dd783069d6", size = 192228, upload-time = "2026-04-24T19:23:18.33Z" }, + { url = "https://files.pythonhosted.org/packages/05/88/bd8aad36b451ffb0e0a3f721d695a88befa6d1ac7d1e02ae788ca7ff4029/simplejson-4.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2785ff8edc0e28bf773a32543a6bbed46351453c997b3f6709c744e3c2f7eabb", size = 187808, upload-time = "2026-04-24T19:23:21.165Z" }, + { url = "https://files.pythonhosted.org/packages/04/ee/14f91db0d1f481533b651dafbf8cd0da088d9817f7af30c68f7f19f9c847/simplejson-4.1.1-cp312-cp312-win32.whl", hash = "sha256:2e0d5ead6d14610467ec356ec1f6b5d8a56aa216abaad8d41c8b873b16cf313f", size = 88512, upload-time = "2026-04-24T19:23:22.764Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c4/90de06b2d8737c68c05ff9274113f854dbf6a5f28b7a955212111672cb57/simplejson-4.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:63a5451f557d6be48a231bae932458655c620902b868170b2f1c8afed496f6b4", size = 90748, upload-time = "2026-04-24T19:23:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/37/a9/47b445eeb559c9593453a0648e0fd6d08e8adff64dd5e5ced66726da8a09/simplejson-4.1.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dff52fc7af272e84fc21cc5a06c927c823ca6ae00af14f3b0d7707b42775ed98", size = 113160, upload-time = "2026-04-24T19:23:26.033Z" }, + { url = "https://files.pythonhosted.org/packages/4c/65/cb72db31523c164dea5dc55b02dad065a40c478856bc7534b279d2b51906/simplejson-4.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:971aed0647ad6e840a3943bec812fcda5f2d26a5497a4981d1fb49aa4f9a396c", size = 91521, upload-time = "2026-04-24T19:23:27.572Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e5/54cb7c50ad5fdc1e0a86b7df4b135c2cbd5c4623605aa94466659098e8da/simplejson-4.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:249e2e220aa6d9b9d936bde84eb7bf79d5b6c5a8273c6e411f8b1635a9073f2d", size = 91407, upload-time = "2026-04-24T19:23:28.991Z" }, + { url = "https://files.pythonhosted.org/packages/38/2e/21a3ede87f0bf82d6c7bcb90480d50a6490eb974c6ab20881188e440957c/simplejson-4.1.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e5cdd6a5d52299f345c15ab5678cc4249e24f383f361d986afbc3c7072a6b6b", size = 192451, upload-time = "2026-04-24T19:23:30.56Z" }, + { url = "https://files.pythonhosted.org/packages/59/df/9903edd3102bf0b5984edfcb90c88612330996efa3b4fbf8a971d6e17839/simplejson-4.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:642cec364e0676e2d5a73fa4d31d0c7c55886997caa2fde24e8292ca44d32728", size = 189015, upload-time = "2026-04-24T19:23:32.647Z" }, + { url = "https://files.pythonhosted.org/packages/98/cd/33230927a780e1398b857e3944abb914556994d252b1d765ae40d112cb25/simplejson-4.1.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:76fe296ca1df23d290033f10aaacf534fd1b3e3007e7f9ff8aa68b21413aaa78", size = 196658, upload-time = "2026-04-24T19:23:34.563Z" }, + { url = "https://files.pythonhosted.org/packages/cd/84/2c5a7444eb53e9a86d3738299bffddd9f53aeed799ded2f45368221fdb19/simplejson-4.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f0ad25b7dc4e0fb23858355819f2e994f1a5badcdcde8737eac7921c2f1ed2a", size = 185967, upload-time = "2026-04-24T19:23:36.191Z" }, + { url = "https://files.pythonhosted.org/packages/d3/68/454378e06d059cd412a7ed5d87fb6d29fd5b60f13a4d89fc1f764ff434df/simplejson-4.1.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a59ebd0533f03fd06ff0c42ba0f02d93cbcdd7944922bf3b93911327a95b901f", size = 193940, upload-time = "2026-04-24T19:23:38.151Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d5/a15bf915f623a2c5a079d6e3be8256fdb8ef06f110669493a09b9d6933e0/simplejson-4.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bccbf4419676b517939852e5aeff2af6aee4dc046881c67a1581fa6f1cb01abd", size = 189795, upload-time = "2026-04-24T19:23:40.139Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c9/37212ae7dc4b607f0978c408e8633f05c810884e054c33113184c6c2c8a2/simplejson-4.1.1-cp313-cp313-win32.whl", hash = "sha256:6c845363eb5fd166fb7c72243da38f4fcfde666ede7fdf2cc6fd7762894626f7", size = 88773, upload-time = "2026-04-24T19:23:41.754Z" }, + { url = "https://files.pythonhosted.org/packages/fe/a5/c7a0a47883a9015b54c9d8a4b62f2aba17bd4335b1787b9b8a0fc2fa6d52/simplejson-4.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:104d8324c34f25b4b90800bc5fa363780cbc3d8496aef061cba7ce1af9162270", size = 90888, upload-time = "2026-04-24T19:23:43.11Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/4a118a6a92eb33bb08c8e2fe7ec85cb96f0673491bb2b829930831ee4fbe/simplejson-4.1.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:ed7473602b6625de793b6acba49aa949f144a475f538792067e4cf2fda2071f5", size = 110492, upload-time = "2026-04-24T19:23:44.957Z" }, + { url = "https://files.pythonhosted.org/packages/07/f4/84d160e9fa8cada1e0a9381cae4fa81eecd573577a5b34366d8ced59bdf7/simplejson-4.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:225c9caa324c5b554d009fb9cac22aee7711e71bd96f487938c659af467e828e", size = 90152, upload-time = "2026-04-24T19:23:46.355Z" }, + { url = "https://files.pythonhosted.org/packages/68/31/9a5432c433a7671107182cdc9a20ea78a70f99c4e5334aa54b6d4d0d79ed/simplejson-4.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:95407269340c7f22f09776ea7b717a52cf56cfcf119b5e45f66faa4a26445bea", size = 90115, upload-time = "2026-04-24T19:23:47.743Z" }, + { url = "https://files.pythonhosted.org/packages/78/91/3635cdb13318cb0a328abaa69e2b91251caad39d6779aa308098f341f6cb/simplejson-4.1.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3851658d642c1184d2023f0e6c9ce44a21eb1629e74e7c84ef956b128841fe12", size = 184036, upload-time = "2026-04-24T19:23:49.472Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ba/149b6ec5393f6849d98c59cadba888b710a8ef4b805ab91e11a566960d40/simplejson-4.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:95a3bb0f78e85f4937f99092239f2011ce06f0f2d803df5c299cc05abbeae008", size = 180543, upload-time = "2026-04-24T19:23:51.023Z" }, + { url = "https://files.pythonhosted.org/packages/df/7c/a5d968d0b527a748b667e62bea94309ccbcb1e2b108e8f0cf8547efaa12b/simplejson-4.1.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bbfdaa7c0603f75b7b14b211b7f2be44696d4e26833ad2d91d5c87bf5fb9a920", size = 188725, upload-time = "2026-04-24T19:23:52.995Z" }, + { url = "https://files.pythonhosted.org/packages/db/e3/6a8d11181d587ef00e2db9112357e6832111e56dd56b01b5c11758a1965d/simplejson-4.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:39e3c584071dced8c21b4689f0254303521daeb9b5bc1f4289755d71fa3cb0d3", size = 177492, upload-time = "2026-04-24T19:23:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/67/e3/8b0eb8b06e8198cfbd1270487da163d0093df05cc4f557350cd65e2f7e79/simplejson-4.1.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:036a27bd0469b9d79557cbddb392969f876cd7f278cfbd0fba81534927a06575", size = 185281, upload-time = "2026-04-24T19:23:56.13Z" }, + { url = "https://files.pythonhosted.org/packages/dc/5f/64990f07ec9e2cb1a814c674e2e21b5693207f74ac70eb72151b847ea4e6/simplejson-4.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b70bfd2f67f3351baba08aa3ae9233c83f21fd95ae5e6b3d0ecb8c647929112f", size = 181848, upload-time = "2026-04-24T19:23:57.92Z" }, + { url = "https://files.pythonhosted.org/packages/61/a5/bbc1bc0447f339f79f99ab8c37f7f037cb2f1f93af75d6a4d553096bb0c3/simplejson-4.1.1-cp314-cp314-win32.whl", hash = "sha256:37233c72ce88d06acb92747347742b3c07871eba6789f060c179c9302dde8efe", size = 88761, upload-time = "2026-04-24T19:23:59.397Z" }, + { url = "https://files.pythonhosted.org/packages/18/72/ec1b5cbdcb140c132e6c7bdf99bd73e4f675439e77126c88f472fcffa09c/simplejson-4.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:cc0442dea71cd9cbf30a0b8b9929ab5aa6c02c0443a3d977351e6ec5bada4388", size = 91018, upload-time = "2026-04-24T19:24:00.85Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/4fa437f68ff72219bac3bf3d050de9c6265691f3a170e16954bd69d7cddd/simplejson-4.1.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:c996a4d38290c515af347740659ce095b425449c164a5c9fa3977caa6eff5dbe", size = 113919, upload-time = "2026-04-24T19:24:02.287Z" }, + { url = "https://files.pythonhosted.org/packages/c2/83/59de041d09eb4a9577f7015d7263c32095dfb7fde49717dff62145d89809/simplejson-4.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c65c763fb20d7ca113c1c14dce2fc04a0fc3a57aceff533d6fdac707c7bffb40", size = 91904, upload-time = "2026-04-24T19:24:03.812Z" }, + { url = "https://files.pythonhosted.org/packages/03/8e/46bb345d540f6eb31427d984a4e518cdb182d0621814fee4fee045e8815b/simplejson-4.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0da5c9f57206ee7ef280ff7f1d924937b0a64f9a271a5ef371a2ecdbebba7421", size = 91752, upload-time = "2026-04-24T19:24:05.622Z" }, + { url = "https://files.pythonhosted.org/packages/83/e2/1b2ce97f068835eb3d253c116a4df7a3f436b7bf2fb5ff1ba29287e8b0ec/simplejson-4.1.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ea3426e786425d10e9e82f8a6eda74a7d6eb10d99165ac3d0d3bbcb65c0ea343", size = 214021, upload-time = "2026-04-24T19:24:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/48/70/d93e556df6a0786298644a7c08304fcbeddc248325f23f38acbebeb21165/simplejson-4.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d75cea7a1025edd7e439b2966b3d977c45b5b899e2adaf422811b3ac702ed9fb", size = 213530, upload-time = "2026-04-24T19:24:09.289Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a5/c93bf305b9f00d7259e09e713d60e75bd0f7f53da970f716ab90491770e7/simplejson-4.1.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:63c2ada8e58f266491f19eed2eeeb7c25c6141e52f8f9e820f6bb94156cf8dbc", size = 218282, upload-time = "2026-04-24T19:24:10.991Z" }, + { url = "https://files.pythonhosted.org/packages/0c/20/a9b5d2e27ec44b069ee251bd55544fc76929a067107b1050001566ba86f3/simplejson-4.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d1fffb56305c5b475ee746cf9e04f97423ba5aaacd292dc1255bd75b1d3b124b", size = 209249, upload-time = "2026-04-24T19:24:12.662Z" }, + { url = "https://files.pythonhosted.org/packages/97/e4/e06ee682ed5df67592181f5ecb062e35878967e27f5b6e087237d4548d95/simplejson-4.1.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a6525ec733f43d0541206cffa64fd2aad5a7ae3eb76566aff49cd4db6382209a", size = 213963, upload-time = "2026-04-24T19:24:14.302Z" }, + { url = "https://files.pythonhosted.org/packages/9c/9f/1e160e4cd8cdbf062bf6a454cdf814dc7a48eb47e566fdb8f80ccb202605/simplejson-4.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:861e393260508efa64d8805a8e49c416c3484907e3f146ce966c69552b49b9a3", size = 210474, upload-time = "2026-04-24T19:24:15.917Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e6/cecd913df322df5bbe7ebb8ba39e0708e505a165553900da8a7761026d6f/simplejson-4.1.1-cp314-cp314t-win32.whl", hash = "sha256:d083b89d30948a751d3d97476c2ed91e4caaa24a1a1459bdbadb8876242c71fe", size = 91134, upload-time = "2026-04-24T19:24:17.635Z" }, + { url = "https://files.pythonhosted.org/packages/97/73/f540dde99cc1d393bd062ab3b5735b777561a5d8f8a5f2e241164444d77a/simplejson-4.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:4cbb299d0528ec0447fe366d8c9641860e28f997a62730690fef905f1f41046e", size = 94467, upload-time = "2026-04-24T19:24:19.109Z" }, + { url = "https://files.pythonhosted.org/packages/ce/6a/8b74c52ffd33dbbde00fe7251fee6a0acdc8cea33f7a43805aed258fb79b/simplejson-4.1.1-py3-none-any.whl", hash = "sha256:2ce92b3748f02423e26d2bfb636fb9d7a8f67c8f5854dcae69d350d123b2eee2", size = 69195, upload-time = "2026-04-24T19:24:57.962Z" }, ] [[package]] @@ -8724,20 +4680,11 @@ wheels = [ [[package]] name = "smmap" -version = "5.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload-time = "2025-01-02T07:14:40.909Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload-time = "2025-01-02T07:14:38.724Z" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" +version = "5.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/ea/49c993d6dfdd7338c9b1000a0f36817ed7ec84577ae2e52f890d1a4ff909/smmap-5.0.3.tar.gz", hash = "sha256:4d9debb8b99007ae47165abc08670bd74cb74b5227dda7f643eccc4e9eb5642c", size = 22506, upload-time = "2026-03-09T03:43:26.1Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl", hash = "sha256:c106e05d5a61449cf6ba9a1e650227ecfb141590d2a98412103ff35d89fc7b2f", size = 24390, upload-time = "2026-03-09T03:43:24.361Z" }, ] [[package]] @@ -8749,90 +4696,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, ] -[[package]] -name = "sqlglot" -version = "28.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bf/8c/a4d24b6103305467506c1dea9c3ca8dc92773a91bae246c2517c256a0cf9/sqlglot-28.5.0.tar.gz", hash = "sha256:b3213b3e867dcc306074f1c90480aeee89a0e635cf0dfe70eb4a3af7b61972e6", size = 5652688, upload-time = "2025-12-17T23:38:00.121Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/f7/6a7effd2526f64bcb0d2264c0dbebc7f8508add3f2c0748540d1448a24a3/sqlglot-28.5.0-py3-none-any.whl", hash = "sha256:5798bfdb6e9bc36c964e6c64d7222624d98b2631cc20f44628a82eba7cf7b4bf", size = 561086, upload-time = "2025-12-17T23:37:57.972Z" }, -] - -[package.optional-dependencies] -rs = [ - { name = "sqlglotrs" }, -] - -[[package]] -name = "sqlglotrs" -version = "0.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/4f/650badfe6eb4db4ecf982faf9b8deefebc6ddbddf1760ea227a2bee5d01d/sqlglotrs-0.10.0.tar.gz", hash = "sha256:dbf91b9547db4f9594e4897afe72cd39e2aa73b8728531fede8861cb2be9aea0", size = 15827, upload-time = "2025-12-16T22:25:34.115Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/7d/9fa1559555fb2528b84322f77f7846e63716adfb1e4814a41089c30d182c/sqlglotrs-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:115a4b6155b0e76534c443ed046a36fe5d0ba33cc8204e364a085e719683f798", size = 315369, upload-time = "2025-12-16T22:25:29.917Z" }, - { url = "https://files.pythonhosted.org/packages/91/3d/0c53f5d4b792aa034894dfa86d8a6c1d12fbe69db2b8553ac575c394e071/sqlglotrs-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00db32b5f86dfce7ae164fb880c754884a3183c17fcd7c864ecdd9835f9cac00", size = 304075, upload-time = "2025-12-16T22:25:22.008Z" }, - { url = "https://files.pythonhosted.org/packages/6e/d1/c80e21bc95bde8d6df42d58b0c0218a4855de7a17c0f9e038cf464b1187b/sqlglotrs-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c61be110aaf4af6196ba08fa4f3f17633204f9c03cae58965f1fd72f10a5ea8", size = 341174, upload-time = "2025-12-16T22:24:40.614Z" }, - { url = "https://files.pythonhosted.org/packages/e1/8f/eae992e6aed2e47affe7267698085b1d7a8e0473218f3be686510c2f0e29/sqlglotrs-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2e3fc92db4ca1db2f1600cb8005e0e704ffc8304f959fe8e12c5c48b60fde3ed", size = 347213, upload-time = "2025-12-16T22:24:47.4Z" }, - { url = "https://files.pythonhosted.org/packages/d6/52/86d9e5795bd0139dd83a59d59c783e4bce78515baa08797b077e18730721/sqlglotrs-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65cb3f754701a4d2a2ee49452212b8c7ab00bc443c724ca6d3ee73dc2c9ce32a", size = 475971, upload-time = "2025-12-16T22:25:00.629Z" }, - { url = "https://files.pythonhosted.org/packages/23/91/c7eb9500d67102ec779beb76307b7702658021f4ba22ee9964658b67b0d8/sqlglotrs-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c46aed5ded19ef4aad5083fae56dc8ced57d8025e2afbdb2ecda08d2fa6549", size = 364759, upload-time = "2025-12-16T22:25:07.535Z" }, - { url = "https://files.pythonhosted.org/packages/15/60/82a8563b4863d8c4a026cff9c51881c347fab463cb18da074f62a175eac0/sqlglotrs-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:819b5f92bf3510117c736a5403cc17480db49f26c9e4a2b33d2cbb8cd32eabe1", size = 346939, upload-time = "2025-12-16T22:25:14.075Z" }, - { url = "https://files.pythonhosted.org/packages/4c/3a/42c97bd48d595e16301e1707ef72a02ffc436dc245cfee5eff2b09837fa3/sqlglotrs-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c6fee56676233df4e564c0d4c6025d0a48d66f83bc2504bfbf3833c11f5ef78e", size = 368593, upload-time = "2025-12-16T22:24:54.142Z" }, - { url = "https://files.pythonhosted.org/packages/28/c4/63504a7ee342630f7ad1aa542e72035ba4085653edeffb24543bc83ffbfb/sqlglotrs-0.10.0-cp312-cp312-win32.whl", hash = "sha256:00990e8a4b1b1242819173e2ca225cee0b08bb41d8d4f2f8729481700ca13894", size = 188788, upload-time = "2025-12-16T22:25:36.787Z" }, - { url = "https://files.pythonhosted.org/packages/18/13/bb0f226d5844958685e8a0dc074929a6340fa93cf2b705cae1e9f74fade9/sqlglotrs-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:747168975eb4ae28da13e97e669fb0d868a72be700f09b462caf4ff4e0ef2f34", size = 202014, upload-time = "2025-12-16T22:25:45.507Z" }, - { url = "https://files.pythonhosted.org/packages/26/4a/dac5eab350541de818adb169bd8bf5a81bc827688e58c49ba67ff9d2d49e/sqlglotrs-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5fdc5537689a503c4e6e18534f6b4a56a0c0490d176e5741e78dabd922bec7ae", size = 315374, upload-time = "2025-12-16T22:25:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/a9/a1/3edb9770fece72a8a332f8af3e94eae2eb9f58a125d2f01a29d1122e149b/sqlglotrs-0.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e0f348eceb609bd0c43bb7b68e5def501d94ffa3f4d130e31b3246813e320231", size = 303827, upload-time = "2025-12-16T22:25:23.343Z" }, - { url = "https://files.pythonhosted.org/packages/f2/fb/034891b3d8be0244d7bdc4b37e697290a460fcf61ea45ae0c720deeb2ad5/sqlglotrs-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:514f7d0cec1eacf8fca39dca1bbb517e9a5897aebaad9f60c03726df0398d9d1", size = 340902, upload-time = "2025-12-16T22:24:41.749Z" }, - { url = "https://files.pythonhosted.org/packages/a3/e2/6b9cf26c3060ca9e53957e769527eac86b64d289694337020a1fa341cbdc/sqlglotrs-0.10.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d8a6304d967dc36bab2bc8393d4a10514a4edb632091566d2b67c9dc8a720c8a", size = 346786, upload-time = "2025-12-16T22:24:48.48Z" }, - { url = "https://files.pythonhosted.org/packages/c8/f1/6ee4a068e61a4790385f67d85a6a1cb67ddf59f03990b586dee21d01487f/sqlglotrs-0.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2882a37a4f01eea9873a471578bafd236dd81b0b4a4a76f1af52302ac999a366", size = 476322, upload-time = "2025-12-16T22:25:01.894Z" }, - { url = "https://files.pythonhosted.org/packages/1e/98/5289ac91561f73c1edf1f37494df2cb2d6c69473e4cb1c1f35e3a12aaa0d/sqlglotrs-0.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2716384469feac4a3004105e82e80069d8e77f8b98794b349ae0309077488924", size = 364960, upload-time = "2025-12-16T22:25:08.527Z" }, - { url = "https://files.pythonhosted.org/packages/46/cb/b881cbf5699955b5e6af689aa0bfd8f3f78809c6b14ccf9f27f581c0d0e4/sqlglotrs-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0267fa4b67435967b65d0244c1684540b24157c2fa5bea430e18dfa11bf3288f", size = 346713, upload-time = "2025-12-16T22:25:15.785Z" }, - { url = "https://files.pythonhosted.org/packages/5c/85/a9faa10392f0558a7ef68642d0b18960a5ed3d9a5e3816d4c45c8f676e6e/sqlglotrs-0.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:90d1f12c1432fb9b237d49b4d259c2be3d62bf262b432e98935ce4b8672d6fdf", size = 368373, upload-time = "2025-12-16T22:24:55.162Z" }, - { url = "https://files.pythonhosted.org/packages/01/50/2577fff23efb72677e366bcd0a91be11a4d9538ee01ae71563464cd5e7ba/sqlglotrs-0.10.0-cp313-cp313-win32.whl", hash = "sha256:acb3d62d379339e9715918d18cf82c781292c583ff8861491167c67b2d021cdb", size = 188464, upload-time = "2025-12-16T22:25:39.354Z" }, - { url = "https://files.pythonhosted.org/packages/e1/a0/a1a36d970cc39b86013d22383e993b804394bde495b39a64564156ed8823/sqlglotrs-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:f31a7acca8f6fbe93ce236ffc98f15fe391d78267bff590236af69d9544bbb67", size = 201664, upload-time = "2025-12-16T22:25:46.537Z" }, - { url = "https://files.pythonhosted.org/packages/71/ad/0acf0f6be7c10263ea2b45ea3adb9cc90339907067bc3c9f24812ecb4dd6/sqlglotrs-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:0766027adcc59c89f6881737b94c8c742808b383714aefed4a2966f43416a3ad", size = 315819, upload-time = "2025-12-16T22:25:32.189Z" }, - { url = "https://files.pythonhosted.org/packages/ad/b8/4baadaf8db49d74490ec2f3cfaa2a0ac2074fe10eaaaa8cfd6e446df81dd/sqlglotrs-0.10.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b2e8b83bdf9cd300ce64367bd65d63ece68da094329ffc4787d23981955cc9e3", size = 304341, upload-time = "2025-12-16T22:25:24.733Z" }, - { url = "https://files.pythonhosted.org/packages/aa/0b/c184767621d957c127b893f0da32e60cf226fd4142f4a8cefebaef71c9df/sqlglotrs-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a384c93b0f9fb5156953e49345bd2064dfb42eb7bb7321e8b9f44577f886471", size = 341082, upload-time = "2025-12-16T22:24:42.856Z" }, - { url = "https://files.pythonhosted.org/packages/6a/44/de94ce9597a50e3f41b9804cf96d008c67ddccbdcd9e9cbaa8a9a67a7bc1/sqlglotrs-0.10.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4397d28fbd4589e1281898ff8491ff4bc88d5f6629489e9263f72ef7041303d8", size = 346965, upload-time = "2025-12-16T22:24:49.524Z" }, - { url = "https://files.pythonhosted.org/packages/16/d4/95c274fa5c736b1407152c6a0754da3d3e15ab966520d33648527cc15ec3/sqlglotrs-0.10.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40fa0c6330d35e7c2fb19dc4b9ec6a4cab1d466fde9c2a28b87fad99cf648378", size = 476052, upload-time = "2025-12-16T22:25:03.069Z" }, - { url = "https://files.pythonhosted.org/packages/01/53/547efecba7335461ffe04a657acb1cf49cffa1a2fec90088426042d18038/sqlglotrs-0.10.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b23d2222765383b004c9b44d95096557428f3ef7f11c3a70a50eec2261e3586", size = 365222, upload-time = "2025-12-16T22:25:09.711Z" }, - { url = "https://files.pythonhosted.org/packages/3f/65/d09949cba2b13f5a5bd8c6132e9e78485d5438da2692a637eb94ff55a52f/sqlglotrs-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77920e1d00c16d923592ca6f14e210a5ee0f77ffb34aca3f2fe3ae7d92356909", size = 346937, upload-time = "2025-12-16T22:25:16.889Z" }, - { url = "https://files.pythonhosted.org/packages/1a/db/0166cffc28d0d4a112094508d4db203e15abbb16e740cb19a2621823a18f/sqlglotrs-0.10.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5f08d15bc821d3ab87e62dbadc7b4ddcc6b27a1e87299934730a4de15a9b1a03", size = 368945, upload-time = "2025-12-16T22:24:56.134Z" }, - { url = "https://files.pythonhosted.org/packages/45/58/d82e2bb5f6aaf774136aa29c41c5d6c729f6439865e14d7cd47acbfd20a6/sqlglotrs-0.10.0-cp314-cp314-win32.whl", hash = "sha256:db992968dc4d3137eb2b6604c170ee7c54de9ea9b91fca66a1831573db536f4b", size = 189396, upload-time = "2025-12-16T22:25:40.392Z" }, - { url = "https://files.pythonhosted.org/packages/52/83/56b01b927eb96b6c724aa9ea5b2e9f1dceb618492ca8ed1c2498e696de10/sqlglotrs-0.10.0-cp314-cp314-win_amd64.whl", hash = "sha256:443689adbe66a76a992fa8993e7aae717e5142c478bf6c1842d7612f7e0a4863", size = 202225, upload-time = "2025-12-16T22:25:47.772Z" }, -] - -[[package]] -name = "sqltrie" -version = "0.11.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "orjson", marker = "implementation_name == 'cpython'" }, - { name = "pygtrie" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/e6/f3832264bcd98b9e71c93c579ab6b39eb1db659cab305e59f8f7c1adc777/sqltrie-0.11.2.tar.gz", hash = "sha256:4df47089b3abfe347bcf81044e633b8c7737ebda4ce1fec8b636a85954ac36da", size = 23551, upload-time = "2025-02-19T15:11:35.474Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/a7/96dd20ed6c4008ca57aa14bd89588eff1dfc163f45067cf715df290dc211/sqltrie-0.11.2-py3-none-any.whl", hash = "sha256:4afb1390bbe8a6900a53709b76213a436fbaf352de0b99ba9b0d395d4a0ca6b6", size = 17140, upload-time = "2025-02-19T15:11:34.044Z" }, -] - -[[package]] -name = "sshfs" -version = "2025.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "asyncssh" }, - { name = "fsspec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7c/a4/4d445a859a58d3d2ee1e52b0376164a87de63d42304287b7ccd5f6b54d5b/sshfs-2025.11.0.tar.gz", hash = "sha256:f5bad75e16229112a8a13d6d4a2faeffd72e4141907d8d999a978bef599e4847", size = 24755, upload-time = "2025-12-05T05:07:23.126Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/a7/29935d7b8572ba378514864bd3d99dfb01518a5c20366b794b6cdb283356/sshfs-2025.11.0-py3-none-any.whl", hash = "sha256:90a3a2e815d28a0e8475f10fe8ef0127a507b60f77df17c3473c1a28e78c7f4b", size = 16420, upload-time = "2025-12-05T05:07:21.935Z" }, -] - -[package.optional-dependencies] -bcrypt = [ - { name = "asyncssh", extra = ["bcrypt"] }, -] - [[package]] name = "stack-data" version = "0.6.3" @@ -8849,15 +4712,15 @@ wheels = [ [[package]] name = "starlette" -version = "0.51.0" +version = "1.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/65/5a1fadcc40c5fdc7df421a7506b79633af8f5d5e3a95c3e72acacec644b9/starlette-0.51.0.tar.gz", hash = "sha256:4c4fda9b1bc67f84037d3d14a5112e523509c369d9d47b111b2f984b0cc5ba6c", size = 2647658, upload-time = "2026-01-10T20:23:15.043Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/66/4d20cdf39a8d6a51e663b7038e3b828ff211d3891a43a713fe7e4643f3a8/starlette-1.1.0.tar.gz", hash = "sha256:e83c7fe0ddecd8719c5b840080325aec0260acec86e9832899e377b91d65e90f", size = 2660060, upload-time = "2026-05-23T16:55:41.376Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/c4/09985a03dba389d4fe16a9014147a7b02fa76ef3519bf5846462a485876d/starlette-0.51.0-py3-none-any.whl", hash = "sha256:fb460a3d6fd3c958d729fdd96aee297f89a51b0181f16401fe8fd4cb6129165d", size = 74133, upload-time = "2026-01-10T20:23:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/93/79/920b8e0a8b20f793e8d64855095cb8febabf6175b8550b6f7a547d813891/starlette-1.1.0-py3-none-any.whl", hash = "sha256:7f0dfd38e428aad5cb6f9f667f0ca1d2d8ca3f3385dccac8305f79ec98458382", size = 72899, upload-time = "2026-05-23T16:55:39.201Z" }, ] [[package]] @@ -8882,33 +4745,48 @@ wheels = [ ] [[package]] -name = "tabulate" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, -] - -[[package]] -name = "tenacity" -version = "9.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, -] - -[[package]] -name = "tinycss2" -version = "1.5.1" +name = "tomli" +version = "2.4.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/ae/2ca4913e5c0f09781d75482874c3a95db9105462a92ddd303c7d285d3df2/tinycss2-1.5.1.tar.gz", hash = "sha256:d339d2b616ba90ccce58da8495a78f46e55d4d25f9fd71dfd526f07e7d53f957", size = 88195, upload-time = "2025-11-23T10:29:10.082Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/45/c7b5c3168458db837e8ceab06dc77824e18202679d0463f0e8f002143a97/tinycss2-1.5.1-py3-none-any.whl", hash = "sha256:3415ba0f5839c062696996998176c4a3751d18b7edaaeeb658c9ce21ec150661", size = 28404, upload-time = "2025-11-23T10:29:08.676Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, + { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, + { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, ] [[package]] @@ -8922,11 +4800,11 @@ wheels = [ [[package]] name = "tomlkit" -version = "0.14.0" +version = "0.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/af/14b24e41977adb296d6bd1fb59402cf7d60ce364f90c890bd2ec65c43b5a/tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064", size = 187167, upload-time = "2026-01-13T01:14:53.304Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/db/03eaf4331631ef6b27d6e3c9b68c54dc6f0d63d87201fed600cc409307fd/tomlkit-0.15.0.tar.gz", hash = "sha256:7d1a9ecba3086638211b13814ea79c90dd54dd11993564376f3aa92271f5c7a3", size = 161875, upload-time = "2026-05-10T07:38:22.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680", size = 39310, upload-time = "2026-01-13T01:14:51.965Z" }, + { url = "https://files.pythonhosted.org/packages/6a/43/8bd850ee71a191bf072e31302c73a66be413fecdd98fdcd111ecbcce13ca/tomlkit-0.15.0-py3-none-any.whl", hash = "sha256:4dbc8f0fc024412b57ced8757ac7461305126a648ff8c2c807fcb8e133a78738", size = 41328, upload-time = "2026-05-10T07:38:23.517Z" }, ] [[package]] @@ -8939,75 +4817,92 @@ wheels = [ ] [[package]] -name = "toolz-stubs" -version = "0.2.2" +name = "torch" +version = "2.12.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "toolz" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "cuda-bindings", marker = "sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "nvidia-cublas", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "triton", marker = "sys_platform == 'linux'" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/14/3d/16268d92ca5a40db2484a3178a83ca3eab3ddda5a50ba15f2b9ea9b69201/toolz_stubs-0.2.2.tar.gz", hash = "sha256:79f215db2f841f00c1b060b3755c904a35a5270dd97e3973d795287dbc204a2d", size = 59253, upload-time = "2025-12-09T09:26:28.071Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/26/b9fcd9f41608e8f3fc541ce9589b70172a513a05b43d53335136780d1c8e/toolz_stubs-0.2.2-py3-none-any.whl", hash = "sha256:c3a80e724bcf60852b4ebb9441123ca059a9fb4db4a852b04adfe4ceb3a008bb", size = 65107, upload-time = "2025-12-09T09:26:27.003Z" }, + { url = "https://files.pythonhosted.org/packages/ef/bb/285d643f254731294c9b595a007eac39db4600a98682d7bca688f42ca164/torch-2.12.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b41339df93d491435e790ff8bcbae1c0ce777175889bfd1281d119862793e6a2", size = 88010197, upload-time = "2026-05-13T14:55:35.414Z" }, + { url = "https://files.pythonhosted.org/packages/79/81/76debf1db1343bd929bbb5d74c89fb437c2ed88eb144712557e7bd3eea45/torch-2.12.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8fbef9f108a863e7722a73740998967e3b074742a834fc5be3a535a2befa7057", size = 426376751, upload-time = "2026-05-13T14:55:03.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/f0/80026028b603c4650ff270fc3785bdef4bd6738765a9cc5a0f5a637d65a2/torch-2.12.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4b4f64c2c2b11f7510d93dd6412b87025ff6eddd6bb61c3b5a3d892ea20c4756", size = 532261691, upload-time = "2026-05-13T14:52:54.453Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c2/64b06cbb7830fb3cd9be13e1158b31a3f36b68e6a209105ee3c9d9480be0/torch-2.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:8b958caff4a14d3a3b0b2dfc6a378f64dda9728a9dad28c08a0db9ce4dafb549", size = 122988114, upload-time = "2026-05-13T14:54:42.153Z" }, + { url = "https://files.pythonhosted.org/packages/86/ca/01896c80ba921676aa45886b2c5b8d774912de2a1f719de48169c6f755cd/torch-2.12.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:90dd587a5f61bfe1307148b581e2084fc5bc4a06e2b90a20e9a36b81087ff16b", size = 88009511, upload-time = "2026-05-13T14:54:47.411Z" }, + { url = "https://files.pythonhosted.org/packages/a5/04/52bdaf4787eab6ac7d7f5851dff934e4def0bc8ead9c8fd2b69b3e529699/torch-2.12.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:864392c73b7654f4d2b3ae712f607937d0dbb1101c4555fbb41848106b297f39", size = 426383231, upload-time = "2026-05-13T14:53:32.129Z" }, + { url = "https://files.pythonhosted.org/packages/49/8a/94bdecd13f5aaa90d45920b89789d9fe7c6f4af8c3cdd7ce01fcb59908fc/torch-2.12.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5d6b560dfa7d56291c07d615c3bb73e8d9943d9b6d87f76cd0d9d570c4797fa6", size = 532269288, upload-time = "2026-05-13T14:53:49.423Z" }, + { url = "https://files.pythonhosted.org/packages/3e/2f/bdbaaa267de519ef1b73054bf590d8c93c37a266c9a4e24a01bd38b6918f/torch-2.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:3fee918902090ade827643e758e98363278815de583c75d111fdd665ebffde9f", size = 122987706, upload-time = "2026-05-13T14:54:00.335Z" }, + { url = "https://files.pythonhosted.org/packages/9b/ad/e95e822f3538171e22640a7fbe839a1fdb666600bf6487025de2ff03b11a/torch-2.12.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:10ee1448a9f304d3b987eb4656f664ba6e4d7b410ca7a5a7c642199777a2cf88", size = 88319556, upload-time = "2026-05-13T14:54:05.574Z" }, + { url = "https://files.pythonhosted.org/packages/b7/07/055d06d985b445d67422d25b033c11cf55bbb81785d4c4e68e28bca5820e/torch-2.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:af68dbf403439cae9ceaeaaf92f8352b460787dcd27b92aa05c40dd4a19c0f1e", size = 426397656, upload-time = "2026-05-13T14:52:38.84Z" }, + { url = "https://files.pythonhosted.org/packages/43/94/b0b4fdc3014122e0a7302fb90086d352aa48f2576f0b252561ebb38c01a8/torch-2.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:a6a2eebb237d3b1d9ad3b378e86d9b9e0782afdea8b1e0eba6a13646b9b49c07", size = 532183124, upload-time = "2026-05-13T14:53:16.178Z" }, + { url = "https://files.pythonhosted.org/packages/d8/c8/052405e6ad05d3237bfe5a4df78f917773956f8e17813a2d44c059068b74/torch-2.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2140e373e9a51a3e22ef62e8d14366d0b470d18f0adf19fdc757368077133a34", size = 123232462, upload-time = "2026-05-13T14:52:27.26Z" }, + { url = "https://files.pythonhosted.org/packages/67/dc/ac069f8d6e8be701535921141055293b0d4819d3d7f224a4612cf157c7f9/torch-2.12.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7dfae4a519197dfa050e98d8e36378a0fb5899625a875c2b54445005a2e404e", size = 88027282, upload-time = "2026-05-13T14:53:05.258Z" }, + { url = "https://files.pythonhosted.org/packages/33/c3/1c1eb00e34555b536dddf792676026a988d710ed36981aa00499b36b0620/torch-2.12.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:891c769072637c74e9a5a77a3bc782894696d8ffec83b938df8536dee7f0ba78", size = 426386961, upload-time = "2026-05-13T14:51:28.406Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d4/7e730dba0c7032a4154dc9056b76cf9625515e030e269cfbf8098fcfee7d/torch-2.12.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:e2ad3eb85d39c3cab62dfa93ed5a73516e6a53c6713cb97d004004fe089f0f1f", size = 532272265, upload-time = "2026-05-13T14:51:59.308Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b4/92c80d1bbfee1c0036c06d1d2155a3065bd2423134c83bf8a47e65cd6b9b/torch-2.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:c66696857e987efb8bc1777a37357ec4f60ab5e8af6250b83d6034437fa2d8f3", size = 122987138, upload-time = "2026-05-13T14:51:45.942Z" }, + { url = "https://files.pythonhosted.org/packages/7b/78/2e12b37ce50a19a037d7bc62d652a5a8f27385a7b05859d6bc9204f20cfe/torch-2.12.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b4556715c8572758625d62b6e0ae3b1f76c440221913a6fb5e100f321fb4fb02", size = 88320100, upload-time = "2026-05-13T14:51:39.955Z" }, + { url = "https://files.pythonhosted.org/packages/56/5e/83c450ec7b0bb40a7b74611c1b5440f9260e33c54c90d556fd4a1f0fd955/torch-2.12.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:a43ac605a5e13116c72b64c359644cce0229f213dde48d2ae0ae5eb5becf7feb", size = 426391871, upload-time = "2026-05-13T14:52:14.989Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e9/1a0b575d98d0afedd8f157d23fa3d2759421483660448e60d0a4b10b6daa/torch-2.12.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6a7512adfdd7f6732e40de1c620831e3c75b39b98cef60b11d0c5f0a76473ec5", size = 532192241, upload-time = "2026-05-13T14:51:07.795Z" }, + { url = "https://files.pythonhosted.org/packages/88/21/afadd25ecd81b3cea1e11c73cf1ab41a983a50271548c3ec7ec3b9efc3e9/torch-2.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:5f96b63f8287f66a005dd1b5a6abba2920f11156c5e5c4d815f3e2050fd1aa16", size = 123231092, upload-time = "2026-05-13T14:51:18.854Z" }, ] [[package]] name = "tornado" -version = "6.5.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/1d/0a336abf618272d53f62ebe274f712e213f5a03c0b2339575430b8362ef2/tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7", size = 513632, upload-time = "2025-12-15T19:21:03.836Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/a9/e94a9d5224107d7ce3cc1fab8d5dc97f5ea351ccc6322ee4fb661da94e35/tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9", size = 443909, upload-time = "2025-12-15T19:20:48.382Z" }, - { url = "https://files.pythonhosted.org/packages/db/7e/f7b8d8c4453f305a51f80dbb49014257bb7d28ccb4bbb8dd328ea995ecad/tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843", size = 442163, upload-time = "2025-12-15T19:20:49.791Z" }, - { url = "https://files.pythonhosted.org/packages/ba/b5/206f82d51e1bfa940ba366a8d2f83904b15942c45a78dd978b599870ab44/tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17", size = 445746, upload-time = "2025-12-15T19:20:51.491Z" }, - { url = "https://files.pythonhosted.org/packages/8e/9d/1a3338e0bd30ada6ad4356c13a0a6c35fbc859063fa7eddb309183364ac1/tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335", size = 445083, upload-time = "2025-12-15T19:20:52.778Z" }, - { url = "https://files.pythonhosted.org/packages/50/d4/e51d52047e7eb9a582da59f32125d17c0482d065afd5d3bc435ff2120dc5/tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f", size = 445315, upload-time = "2025-12-15T19:20:53.996Z" }, - { url = "https://files.pythonhosted.org/packages/27/07/2273972f69ca63dbc139694a3fc4684edec3ea3f9efabf77ed32483b875c/tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84", size = 446003, upload-time = "2025-12-15T19:20:56.101Z" }, - { url = "https://files.pythonhosted.org/packages/d1/83/41c52e47502bf7260044413b6770d1a48dda2f0246f95ee1384a3cd9c44a/tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f", size = 445412, upload-time = "2025-12-15T19:20:57.398Z" }, - { url = "https://files.pythonhosted.org/packages/10/c7/bc96917f06cbee182d44735d4ecde9c432e25b84f4c2086143013e7b9e52/tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8", size = 445392, upload-time = "2025-12-15T19:20:58.692Z" }, - { url = "https://files.pythonhosted.org/packages/0c/1a/d7592328d037d36f2d2462f4bc1fbb383eec9278bc786c1b111cbbd44cfa/tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1", size = 446481, upload-time = "2025-12-15T19:21:00.008Z" }, - { url = "https://files.pythonhosted.org/packages/d6/6d/c69be695a0a64fd37a97db12355a035a6d90f79067a3cf936ec2b1dc38cd/tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc", size = 446886, upload-time = "2025-12-15T19:21:01.287Z" }, - { url = "https://files.pythonhosted.org/packages/50/49/8dc3fd90902f70084bd2cd059d576ddb4f8bb44c2c7c0e33a11422acb17e/tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1", size = 445910, upload-time = "2025-12-15T19:21:02.571Z" }, -] - -[[package]] -name = "tqdm" -version = "4.67.1" +version = "6.5.5" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/f1/3173dfa4a18db4a9b03e5d55325559dab51ee653763bb8745a75af491286/tornado-6.5.5.tar.gz", hash = "sha256:192b8f3ea91bd7f1f50c06955416ed76c6b72f96779b962f07f911b91e8d30e9", size = 516006, upload-time = "2026-03-10T21:31:02.067Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/77f5097695f4dd8255ecbd08b2a1ed8ba8b953d337804dd7080f199e12bf/tornado-6.5.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:487dc9cc380e29f58c7ab88f9e27cdeef04b2140862e5076a66fb6bb68bb1bfa", size = 445983, upload-time = "2026-03-10T21:30:44.28Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5e/7625b76cd10f98f1516c36ce0346de62061156352353ef2da44e5c21523c/tornado-6.5.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:65a7f1d46d4bb41df1ac99f5fcb685fb25c7e61613742d5108b010975a9a6521", size = 444246, upload-time = "2026-03-10T21:30:46.571Z" }, + { url = "https://files.pythonhosted.org/packages/b2/04/7b5705d5b3c0fab088f434f9c83edac1573830ca49ccf29fb83bf7178eec/tornado-6.5.5-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e74c92e8e65086b338fd56333fb9a68b9f6f2fe7ad532645a290a464bcf46be5", size = 447229, upload-time = "2026-03-10T21:30:48.273Z" }, + { url = "https://files.pythonhosted.org/packages/34/01/74e034a30ef59afb4097ef8659515e96a39d910b712a89af76f5e4e1f93c/tornado-6.5.5-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:435319e9e340276428bbdb4e7fa732c2d399386d1de5686cb331ec8eee754f07", size = 448192, upload-time = "2026-03-10T21:30:51.22Z" }, + { url = "https://files.pythonhosted.org/packages/be/00/fe9e02c5a96429fce1a1d15a517f5d8444f9c412e0bb9eadfbe3b0fc55bf/tornado-6.5.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3f54aa540bdbfee7b9eb268ead60e7d199de5021facd276819c193c0fb28ea4e", size = 448039, upload-time = "2026-03-10T21:30:53.52Z" }, + { url = "https://files.pythonhosted.org/packages/82/9e/656ee4cec0398b1d18d0f1eb6372c41c6b889722641d84948351ae19556d/tornado-6.5.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:36abed1754faeb80fbd6e64db2758091e1320f6bba74a4cf8c09cd18ccce8aca", size = 447445, upload-time = "2026-03-10T21:30:55.541Z" }, + { url = "https://files.pythonhosted.org/packages/5a/76/4921c00511f88af86a33de770d64141170f1cfd9c00311aea689949e274e/tornado-6.5.5-cp39-abi3-win32.whl", hash = "sha256:dd3eafaaeec1c7f2f8fdcd5f964e8907ad788fe8a5a32c4426fbbdda621223b7", size = 448582, upload-time = "2026-03-10T21:30:57.142Z" }, + { url = "https://files.pythonhosted.org/packages/2c/23/f6c6112a04d28eed765e374435fb1a9198f73e1ec4b4024184f21faeb1ad/tornado-6.5.5-cp39-abi3-win_amd64.whl", hash = "sha256:6443a794ba961a9f619b1ae926a2e900ac20c34483eea67be4ed8f1e58d3ef7b", size = 448990, upload-time = "2026-03-10T21:30:58.857Z" }, + { url = "https://files.pythonhosted.org/packages/b7/c8/876602cbc96469911f0939f703453c1157b0c826ecb05bdd32e023397d4e/tornado-6.5.5-cp39-abi3-win_arm64.whl", hash = "sha256:2c9a876e094109333f888539ddb2de4361743e5d21eece20688e3e351e4990a6", size = 448016, upload-time = "2026-03-10T21:31:00.43Z" }, ] [[package]] name = "traitlets" -version = "5.14.3" +version = "5.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/22/40f55b26baeab80c2d7b3f1db0682f8954e4617fee7d90ce634022ef05c6/traitlets-5.15.0.tar.gz", hash = "sha256:4fead733f81cf1c4c938e06f8ca4633896833c9d89eff878159457f4d4392971", size = 163197, upload-time = "2026-05-06T08:05:58.016Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/da/98/a9937a969d018a23badfea0b381f66783649d48e0ea6c41923265c3cbeb3/traitlets-5.15.0-py3-none-any.whl", hash = "sha256:fb36a18867a6803deab09f3c5e0fa81bb7b26a5c9e82501c9933f759166eff40", size = 85877, upload-time = "2026-05-06T08:05:55.853Z" }, ] [[package]] name = "trimesh" -version = "4.11.0" +version = "4.12.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/da/47/f618103c076b06ac79f1ba71e26ca7df0292c3e2b83535d4873e7f127f95/trimesh-4.11.0.tar.gz", hash = "sha256:0b4acdcf28f21013385ccf81619a9dce703af348f69b198180a2212b1bc67821", size = 834847, upload-time = "2026-01-07T19:51:53.043Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/37/5cb90f04990260d2caceb6093560c6cefafca1ec522c1e43be01ca658244/trimesh-4.12.2.tar.gz", hash = "sha256:c8ca31571ac00b112e4e160e66a2d4c3491df321f056bd33806be0485d1af9d9", size = 842220, upload-time = "2026-05-01T00:57:43.333Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/cc/5056718bf473be51712ecf74800093a13d69c576f1ca0e0f3cf4684567cf/trimesh-4.11.0-py3-none-any.whl", hash = "sha256:6237019fed3bdc8d68acc45a47a4ea62db1483c3fab5c87d587a48a0e69bbff3", size = 740342, upload-time = "2026-01-07T19:51:50.993Z" }, + { url = "https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl", hash = "sha256:b5b5afa63c5272345f2858f7676bc8c217dc8a89f4fadf6193fe10a81b5ff2aa", size = 741043, upload-time = "2026-05-01T00:57:40.763Z" }, ] [package.optional-dependencies] easy = [ { name = "charset-normalizer" }, { name = "colorlog" }, - { name = "embreex", marker = "platform_machine == 'x86_64'" }, + { name = "embreex" }, { name = "httpx" }, { name = "jsonschema" }, { name = "lxml" }, @@ -9024,13 +4919,30 @@ easy = [ { name = "xxhash" }, ] +[[package]] +name = "triton" +version = "3.7.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/13/ec05adfcd87311d532ba61e3af143e8be59fcd26675884c4682841406a20/triton-3.7.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4bf49b00a7a377a68a6da603a876e797614e6455a80e9021669c476a953ad9a", size = 188505104, upload-time = "2026-05-07T19:05:09.843Z" }, + { url = "https://files.pythonhosted.org/packages/62/7b/468a576e35beef1426e0828e28e9ba9e65f5474d496f16ee126c15646324/triton-3.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f111161d49bf903c0eaedde3962353a3d841c08a836839b7cc1025b8426efcf", size = 201457567, upload-time = "2026-05-07T18:46:13.505Z" }, + { url = "https://files.pythonhosted.org/packages/01/e1/a59a583de59b8f62c495d67c80ee3ea97d09e91ac80c4c6e76456ed8d8ac/triton-3.7.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abdf6beaa89b1bcfb9a43cd990536ce66091a997841a4814b260b7bee4c88c3c", size = 188503209, upload-time = "2026-05-07T19:05:17.935Z" }, + { url = "https://files.pythonhosted.org/packages/30/b1/b7507bb9815d403927c8dd51d4158ed2e11751a92dbc118a044f247b6848/triton-3.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a35d7afe3f3f058e7ec49fcce09794049e0ffc5c59019ac25ec3413741b8c4e7", size = 201453566, upload-time = "2026-05-07T18:46:20.427Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8f/0bea7a6a0c989315c9135a1d7fb37e41905cfb3a17cbc1f10044ebd4cc3a/triton-3.7.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc1d61c172d257db80ddf42595131fb196ad2e9bdd751e90fe2ef13531734e8b", size = 188612899, upload-time = "2026-05-07T19:05:24.955Z" }, + { url = "https://files.pythonhosted.org/packages/e1/02/d96f57828d0912aec733b9bc7e0e7dbfd2c6f079a8fa433ac25cb93d1a30/triton-3.7.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70fb9bbdc9f400afc54bbf6eb2670af28829a6ae3996863317964783141daf56", size = 201553816, upload-time = "2026-05-07T18:46:27.49Z" }, + { url = "https://files.pythonhosted.org/packages/40/fb/82a802dac4689f2a2fb2e69302e6a138eecc3e175bbe976ba3cfc717683a/triton-3.7.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a44a8476d0d3571eac4e4d1048e1ff75aad81a09ff4602ccfc56c6dea1672e", size = 188507879, upload-time = "2026-05-07T19:05:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/8f/af/9904ec6d3c93d9b24e5ec360445bbdf758b7f00bfbeedb89cb0eb64eb8bb/triton-3.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9b85e72968a9d8bba5ddb24e9b64aaabaf48affb042f2755cb7cfa92b7531ce", size = 201460637, upload-time = "2026-05-07T18:46:34.749Z" }, + { url = "https://files.pythonhosted.org/packages/a1/f9/4835a8ea746b88727d8899f4e3ccce4f9cacb38abfc3bb0a638266c53111/triton-3.7.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18a160de426fd99f92b0baf509045360afbd3bfaa0b4a5171dde800ec9f09684", size = 188608706, upload-time = "2026-05-07T19:05:39.218Z" }, + { url = "https://files.pythonhosted.org/packages/c1/68/fa86e5a39608000f645535b2c124920126327ab731f8c4fafd5b07ff8d4b/triton-3.7.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce061073102714b725f3660ec6939d94a1da7984b3aa99c921417cae273672f5", size = 201546766, upload-time = "2026-05-07T18:46:42.088Z" }, +] + [[package]] name = "trove-classifiers" -version = "2026.1.12.15" +version = "2026.5.22.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/600fa0e35b353a66d1134a233d67feee4d934b7878aef10a21f39b17c6ab/trove_classifiers-2026.1.12.15.tar.gz", hash = "sha256:832a7e89ccc43b64b89f8f9d9150c069ebcd17d2dc68279bc00bb53f2a9ae112", size = 16978, upload-time = "2026-01-12T15:15:10.479Z" } +sdist = { url = "https://files.pythonhosted.org/packages/86/b6/1c41aa221b157b624ea1a72e975404ef228724d249011ee411ac211a615e/trove_classifiers-2026.5.22.10.tar.gz", hash = "sha256:5477e9974e91904fb2cfa4a7581ab6e2f30c2c38d847fd00ed866080748101d5", size = 17061, upload-time = "2026-05-22T10:17:28.99Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/c3/4b74a82b58dbfb0a4dafa8149fc60f20ce5228be5d133ca0c3f2e90f6e7d/trove_classifiers-2026.1.12.15-py3-none-any.whl", hash = "sha256:8832dfbc226fc4df986666b9cb3a018818b1498aeb79f5f66a31a918b47a98f1", size = 14192, upload-time = "2026-01-12T15:15:09.413Z" }, + { url = "https://files.pythonhosted.org/packages/c9/02/9a14d3048ffa4f45b7c60956a9b22688dd925d6de50f6baf7e55f3664942/trove_classifiers-2026.5.22.10-py3-none-any.whl", hash = "sha256:01fe864225726e03efb843827ecabfe319fc4dee8dd66d65b8996cb09be46e2c", size = 14225, upload-time = "2026-05-22T10:17:27.569Z" }, ] [[package]] @@ -9053,21 +4965,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl", hash = "sha256:418ebf08ccda9a8caaebe414433b0ba5e25eb5e4a927667122fbe8f829f985d8", size = 42727, upload-time = "2025-09-04T15:43:15.994Z" }, ] -[[package]] -name = "typer" -version = "0.21.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "rich" }, - { name = "shellingham" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/36/bf/8825b5929afd84d0dabd606c67cd57b8388cb3ec385f7ef19c5cc2202069/typer-0.21.1.tar.gz", hash = "sha256:ea835607cd752343b6b2b7ce676893e5a0324082268b48f27aa058bdb7d2145d", size = 110371, upload-time = "2026-01-06T11:21:10.989Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl", hash = "sha256:7985e89081c636b88d172c2ee0cfe33c253160994d47bdfdc302defd7d1f1d01", size = 47381, upload-time = "2026-01-06T11:21:09.824Z" }, -] - [[package]] name = "typing-extensions" version = "4.15.0" @@ -9091,32 +4988,20 @@ wheels = [ [[package]] name = "tzdata" -version = "2025.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, -] - -[[package]] -name = "tzlocal" -version = "5.3.1" +version = "2026.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "tzdata", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 198254, upload-time = "2026-04-24T15:22:08.651Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026, upload-time = "2025-03-05T21:17:39.857Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, ] [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] [[package]] @@ -9133,41 +5018,41 @@ wheels = [ [[package]] name = "uv" -version = "0.9.24" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/7f/6692596de7775b3059a55539aed2eec16a0642a2d6d3510baa5878287ce4/uv-0.9.24.tar.gz", hash = "sha256:d59d31c25fc530c68db9164174efac511a25fc882cec49cd48f75a18e7ebd6d5", size = 3852673, upload-time = "2026-01-09T22:34:31.635Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/51/10bb9541c40a5b4672527c357997a30fdf38b75e7bbaad0c37ed70889efa/uv-0.9.24-py3-none-linux_armv6l.whl", hash = "sha256:75a000f529ec92235b10fb5e16ca41f23f46c643308fd6c5b0d7b73ca056c5b9", size = 21395664, upload-time = "2026-01-09T22:34:05.887Z" }, - { url = "https://files.pythonhosted.org/packages/ec/dd/d7df524cb764ebc652e0c8bf9abe55fc34391adc2e4ab1d47375222b38a9/uv-0.9.24-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:207c8a2d4c4d55589feb63b4be74f6ff6ab92fa81b14a6515007ccec5a868ae0", size = 20547988, upload-time = "2026-01-09T22:34:16.21Z" }, - { url = "https://files.pythonhosted.org/packages/49/e4/7ca5e7eaed4b2b9d407aa5aeeb8f71cace7db77f30a63139bbbfdfe4770c/uv-0.9.24-py3-none-macosx_11_0_arm64.whl", hash = "sha256:44c0b8a78724e4cfa8e9c0266023c70fc792d0b39a5da17f5f847af2b530796b", size = 19033208, upload-time = "2026-01-09T22:33:50.91Z" }, - { url = "https://files.pythonhosted.org/packages/27/05/b7bab99541056537747bfdc55fdc97a4ba998e2b53cf855411ef176c412b/uv-0.9.24-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:841ede01d6dcf1676a21dce05f3647ba171c1d92768a03e8b8b6b7354b34a6d2", size = 20872212, upload-time = "2026-01-09T22:33:58.007Z" }, - { url = "https://files.pythonhosted.org/packages/d3/93/3a69cf481175766ee6018afb281666de12ccc04367d20a41dc070be8b422/uv-0.9.24-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:69531d9a8772afb2dff68fef2469f666e4f8a0132b2109e36541c423415835da", size = 21017966, upload-time = "2026-01-09T22:34:29.354Z" }, - { url = "https://files.pythonhosted.org/packages/17/40/7aec2d428e57a3ec992efc49bbc71e4a0ceece5a726751c661ddc3f41315/uv-0.9.24-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6720c9939cca7daff3cccc35dd896bbe139d7d463c62cba8dbbc474ff8eb93d1", size = 21943358, upload-time = "2026-01-09T22:34:08.63Z" }, - { url = "https://files.pythonhosted.org/packages/c8/f4/2aa5b275aa8e5edb659036e94bae13ae294377384cf2a93a8d742a38050f/uv-0.9.24-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d7d1333d9c21088c89cb284ef29fdf48dc2015fe993174a823a3e7c991db90f9", size = 23672949, upload-time = "2026-01-09T22:34:03.113Z" }, - { url = "https://files.pythonhosted.org/packages/8e/24/2589bed4b39394c799472f841e0580318a8b7e69ef103a0ab50cf1c39dff/uv-0.9.24-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b610d89d6025000d08cd9bd458c6e264003a0ecfdaa8e4eba28938130cd1837", size = 23270210, upload-time = "2026-01-09T22:34:13.94Z" }, - { url = "https://files.pythonhosted.org/packages/80/3a/034494492a1ad1f95371c6fd735e4b7d180b8c1712c88b0f32a34d6352fd/uv-0.9.24-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38c59e18fe5fa42f7baeb4f08c94914cee6d87ff8faa6fc95c994dbc0de26c90", size = 22282247, upload-time = "2026-01-09T22:33:53.362Z" }, - { url = "https://files.pythonhosted.org/packages/be/0e/d8ab2c4fa6c9410a8a37fa6608d460b0126cee2efed9eecf516cdec72a1a/uv-0.9.24-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009cc82cdfc48add6ec13a0c4ffbb788ae2cab53573b4218069ca626721a404b", size = 22348801, upload-time = "2026-01-09T22:34:00.46Z" }, - { url = "https://files.pythonhosted.org/packages/50/fa/7217764e4936d6fda1944d956452bf94f790ae8a02cb3e5aa496d23fcb25/uv-0.9.24-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:1914d33e526167dc202ec4a59119c68467b31f7c71dcf8b1077571d091ca3e7c", size = 21000825, upload-time = "2026-01-09T22:34:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/94/8f/533db58a36895142b0c11eedf8bfe11c4724fb37deaa417bfb0c689d40b8/uv-0.9.24-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:aafe7dd9b633672054cf27f1a8e4127506324631f1af5edd051728f4f8085351", size = 22149066, upload-time = "2026-01-09T22:33:45.722Z" }, - { url = "https://files.pythonhosted.org/packages/cf/c7/e6eccd96341a548f0405bffdf55e7f30b5c0757cd1b8f7578e0972a66002/uv-0.9.24-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:63a0a46693098cf8446e41bd5d9ce7d3bc9b775a63fe0c8405ab6ee328424d46", size = 20993489, upload-time = "2026-01-09T22:34:27.007Z" }, - { url = "https://files.pythonhosted.org/packages/46/07/32d852d2d40c003b52601c44202c9d9e655c485fae5d84e42f326814b0be/uv-0.9.24-py3-none-musllinux_1_1_i686.whl", hash = "sha256:15d3955bfb03a7b78aaf5afb639cedefdf0fc35ff844c92e3fe6e8700b94b84f", size = 21400775, upload-time = "2026-01-09T22:34:24.278Z" }, - { url = "https://files.pythonhosted.org/packages/b0/58/f8e94226126011ba2e2e9d59c6190dc7fe9e61fa7ef4ca720d7226c1482b/uv-0.9.24-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:488a07e59fb417bf86de5630197223b7a0223229e626afc124c26827db78cff8", size = 22554194, upload-time = "2026-01-09T22:34:18.504Z" }, - { url = "https://files.pythonhosted.org/packages/da/8e/b540c304039a6561ba8e9a673009cfe1451f989d2269fe40690901ddb233/uv-0.9.24-py3-none-win32.whl", hash = "sha256:68a3186074c03876ee06b68730d5ff69a430296760d917ebbbb8e3fb54fb4091", size = 20203184, upload-time = "2026-01-09T22:34:11.02Z" }, - { url = "https://files.pythonhosted.org/packages/16/59/dba7c5feec1f694183578435eaae0d759b8c459c5e4f91237a166841a116/uv-0.9.24-py3-none-win_amd64.whl", hash = "sha256:8cd626306b415491f839b1a9100da6795c82c44d4cf278dd7ace7a774af89df4", size = 22294050, upload-time = "2026-01-09T22:33:48.228Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ef/e58fb288bafb5a8b5d4994e73fa6e062e408680e5a20d0427d5f4f66d8b1/uv-0.9.24-py3-none-win_arm64.whl", hash = "sha256:8d3c0fec7aa17f936a5b258816e856647b21f978a81bcfb2dc8caf2892a4965e", size = 20620004, upload-time = "2026-01-09T22:33:55.62Z" }, +version = "0.11.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/99/025154611a4bd97a23851574c15d73bb71ada09d35f092d6972f9ac87f70/uv-0.11.16.tar.gz", hash = "sha256:4b435fcb0af8f34833dcc1903a8a223856437efd0d515c2160a2871def221238", size = 4177038, upload-time = "2026-05-21T22:10:01.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/e3/8b8cfc802bc476c67e31a39725538193265cf3a19585b4a60c232659f919/uv-0.11.16-py3-none-linux_armv6l.whl", hash = "sha256:c9e9d9cb73ee8cd2ad696dbf1bc3232abaac363270557684b6b85a2bdb8eb276", size = 23508087, upload-time = "2026-05-21T22:10:06.227Z" }, + { url = "https://files.pythonhosted.org/packages/45/78/d5ca91c636ac88e902b6b3ff31ad32d2d02663232d844aff871467a323d2/uv-0.11.16-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:01172238a75e42a5a55d12555cd9ec98bee24249f3645b98a4b32eb5f1ff5e43", size = 23028989, upload-time = "2026-05-21T22:09:50.127Z" }, + { url = "https://files.pythonhosted.org/packages/c7/26/c84580dfec5a87c36fb1218eac17c5194fa3e58e2a9232cf085d69eb6bed/uv-0.11.16-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c75f9b5bac49b97131973910c220feac60fe47b10a333941b237ff0ae4b36721", size = 21572023, upload-time = "2026-05-21T22:09:58.703Z" }, + { url = "https://files.pythonhosted.org/packages/84/68/ba2bdc64fea96ef8c9796a991f244541b65bb9d31c661b322cc724857a4e/uv-0.11.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:a801484f4507b6c2133e557350f3143b61b8f8b61dddb01ff7b84a74cdfab1fb", size = 23289936, upload-time = "2026-05-21T22:10:15.423Z" }, + { url = "https://files.pythonhosted.org/packages/c9/81/74922f693d5804a77d009338ca8dc709eff871fb60d9f2c263dede8d77d1/uv-0.11.16-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:eb538069e768b042cf870be700a210518ce628e36d99d9a83b85acaf484d7f6a", size = 23020906, upload-time = "2026-05-21T22:10:24.242Z" }, + { url = "https://files.pythonhosted.org/packages/60/81/cda8886f5df4dd28854a9b97bcc3ee6a7d1b5b5b23aaaccfbf1ed3e5e2bf/uv-0.11.16-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7cdb23457a4d1bc76bf1016638ea1d1ada0e8e032f656168e933d4d17c47e72", size = 23004220, upload-time = "2026-05-21T22:10:32.847Z" }, + { url = "https://files.pythonhosted.org/packages/98/7c/65837e07de23f0a40ab860bc6601f7c022d4bcf4b97ca79b6c35a2e72e65/uv-0.11.16-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:451327388d59ac3041cbda474296f3ceeafac5b1f645476198e7b95f504fcfd5", size = 24319651, upload-time = "2026-05-21T22:10:21.492Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/9d364542bf118433b60ed71422e47d2c8c470aca7d3aef0df9449a5f726a/uv-0.11.16-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7992b8276149b3ffaf35ce9434702d3e16bae6ec393e99df209b870a7e19eb0", size = 25359517, upload-time = "2026-05-21T22:09:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/99/b4/650896e8cff5a3289cee860c41fd9876da83ca628c5871f9a61d5fc75c72/uv-0.11.16-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a8db9b3314d900e7a240105afce43f806c9e04c59ea10a40bdbdca84c6d0c5", size = 24563421, upload-time = "2026-05-21T22:10:35.82Z" }, + { url = "https://files.pythonhosted.org/packages/b1/7d/184711a8c02466e1486d57efdc9394ce09cbf43ee2c5794da70bd25db3fb/uv-0.11.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b10086165189c39c53142a0e2f34e0b8889ef681886f589ed17be45a1a774c7", size = 24676607, upload-time = "2026-05-21T22:10:39.784Z" }, + { url = "https://files.pythonhosted.org/packages/ee/3f/5b338df6505f77f73c20eae38cb29f57d14dba56dac835386e3dc6e2a5d6/uv-0.11.16-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:cfe1f06fb8f135a735a961065d5ee90f99cccf41749fb1f964edb5b3c3dae19b", size = 23401615, upload-time = "2026-05-21T22:10:30.124Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f9/54bbcbc77443dc76468f09a49cc9f4f92ca49b4159a011c6010d223de4ea/uv-0.11.16-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:2454f80d8b548fb2e246151578809b14ad4395b3f357d738bae1af11918e91af", size = 24104468, upload-time = "2026-05-21T22:09:53.323Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0a/b5f105514fddea5110fe3947cd18a9f199ff93dbad78e5e5a08e1b5d0ea2/uv-0.11.16-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:4249d57a563165d368050680deeb722f9c0053a0dbf3244b11cca3e6d85a3c7d", size = 24164861, upload-time = "2026-05-21T22:10:09.458Z" }, + { url = "https://files.pythonhosted.org/packages/f6/01/15d4ca2be7257862b077a9077ac31ce81c419f35ef7994e76356a317716b/uv-0.11.16-py3-none-musllinux_1_1_i686.whl", hash = "sha256:374c30126483ce95675c5de49e54c2454ddedb01c17b8321417fe4eb9da83406", size = 23644919, upload-time = "2026-05-21T22:10:03.129Z" }, + { url = "https://files.pythonhosted.org/packages/49/bf/9de3e262e6ff93aec2e0a4c238857293fd2c616dd79f25bb440f126bf32c/uv-0.11.16-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:746edfc9d1d8cd03dd58739989f634d3580648048d09f81a9c68da74c4eb9d62", size = 24973746, upload-time = "2026-05-21T22:10:18.413Z" }, + { url = "https://files.pythonhosted.org/packages/f6/7d/f4126dce104f1b5d0b451ce3ca41c4db69b963c2e78c3465fcda6440de31/uv-0.11.16-py3-none-win32.whl", hash = "sha256:50299b20aab2d28c05ff27d781ce2af3f5af2102bc304dc07a4ad54b05e2af8a", size = 22400991, upload-time = "2026-05-21T22:10:27.119Z" }, + { url = "https://files.pythonhosted.org/packages/8f/38/99627cb995a03389b227ce4b12b08e770565d0aa7850cd0420973194a638/uv-0.11.16-py3-none-win_amd64.whl", hash = "sha256:e901aafa5007beffafe57bfa44e5e248d99fb5d97036a3718fd65cf9723c5cd3", size = 25067163, upload-time = "2026-05-21T22:10:12.317Z" }, + { url = "https://files.pythonhosted.org/packages/b6/68/3ed1c0bdfb4bec501e5cde73419b4f39c8a125ef905a85fc0f239f19eb9b/uv-0.11.16-py3-none-win_arm64.whl", hash = "sha256:d777cb29661cdfa7f90dae77406c85fb5b729bf8bc13941dc237958a1ea1ba00", size = 23502015, upload-time = "2026-05-21T22:09:56.014Z" }, ] [[package]] name = "uvicorn" -version = "0.40.0" +version = "0.48.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c3/d1/8f3c683c9561a4e6689dd3b1d345c815f10f86acd044ee1fb9a4dcd0b8c5/uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea", size = 81761, upload-time = "2025-12-21T14:16:22.45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/bf/f6544ba992ddb9a6077343a576f9844f7f8f06ab819aefd00206e9255f18/uvicorn-0.48.0.tar.gz", hash = "sha256:a5504207195d08c2511bf9125ede5ac4a4b71725d519e758d01dcf0bc2d31c37", size = 91074, upload-time = "2026-05-24T12:08:41.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/d8/2083a1daa7439a66f3a48589a57d576aa117726762618f6bb09fe3798796/uvicorn-0.40.0-py3-none-any.whl", hash = "sha256:c6c8f55bc8bf13eb6fa9ff87ad62308bbbc33d0b67f84293151efe87e0d5f2ee", size = 68502, upload-time = "2025-12-21T14:16:21.041Z" }, + { url = "https://files.pythonhosted.org/packages/01/be/72532be3da7acc5fdfbccdb95215cd04f995a0886532a5b423f929cda4cc/uvicorn-0.48.0-py3-none-any.whl", hash = "sha256:48097851328b87ec36117d3d575234519eb58c2b22d79666e9bbc6c49a761dad", size = 71410, upload-time = "2026-05-24T12:08:40.258Z" }, ] [[package]] @@ -9209,27 +5094,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0c/d1/b30dec954a24b41358297a3fbe7c30d8e2e818831f552cb34c904baa04e4/vhacdx-0.0.10-cp314-cp314t-win_amd64.whl", hash = "sha256:fc6a613082ec522a020e4f6a09f39ed42546de9aebe99548aa84938b1440871c", size = 204896, upload-time = "2025-12-02T20:58:25.825Z" }, ] -[[package]] -name = "vine" -version = "5.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0", size = 48980, upload-time = "2023-11-05T08:46:53.857Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636, upload-time = "2023-11-05T08:46:51.205Z" }, -] - [[package]] name = "virtualenv" -version = "20.36.1" +version = "21.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, + { name = "python-discovery" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/aa/a3/4d310fa5f00863544e1d0f4de93bddec248499ccf97d4791bc3122c9d4f3/virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba", size = 6032239, upload-time = "2026-01-09T18:21:01.296Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/ba/1f6e8c957e4932be060dcdc482d339c12e0216351478add3645cdaa53c05/virtualenv-21.3.3.tar.gz", hash = "sha256:f5bda277e553b1c2b3c1a8debfc30496e1288cc93ce6b7b71b3280047e317328", size = 7613784, upload-time = "2026-05-13T18:01:30.19Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f", size = 6008258, upload-time = "2026-01-09T18:20:59.425Z" }, + { url = "https://files.pythonhosted.org/packages/f4/34/a9dbe051de88a63eb7408ea66630bac38e72f7f6077d4be58737106860d9/virtualenv-21.3.3-py3-none-any.whl", hash = "sha256:7d5987d8369e098e41406efb780a3d4ca79280097293899e351a6407ee153ab3", size = 7594554, upload-time = "2026-05-13T18:01:27.815Z" }, ] [[package]] @@ -9273,33 +5150,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5e/69/4f45a175fa8437ffff8115452e5b89131b8e4702927aa16f52f115fea992/viztracer-1.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:f9c3d6c7a1f0c3c84a9b34ee6695dc5c3609e69118afce5f45f291b0ed3597eb", size = 16030505, upload-time = "2025-11-11T00:03:15.447Z" }, ] -[[package]] -name = "voluptuous" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/92/f4/0738e6849858deae22218be3bbb8207ba83a96e9d0ec7e8e8cd67b30e5ca/voluptuous-0.16.0.tar.gz", hash = "sha256:006535e22fed944aec17bef6e8725472476194743c87bd233e912eb463f8ff05", size = 54238, upload-time = "2025-12-18T23:18:46.08Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/00/0e0da784245c93cf346150ab67634177bf277f93b7a162bb56c928c39c04/voluptuous-0.16.0-py3-none-any.whl", hash = "sha256:ee342095263e1b5afbd4d418cb5adc92810eebfd07696bb033a261210df33db4", size = 31931, upload-time = "2025-12-18T23:18:44.694Z" }, -] - [[package]] name = "vtk" -version = "9.5.2" +version = "9.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "matplotlib" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/23/43/58f4d2d127fc8e8aa26e4793cf80e901b395de44fb6ac69acd7c7b8856ce/vtk-9.5.2-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:cf5dbc93b6806b08799204430a4fc4bea74290c1c101fa64f1a4703144087fa3", size = 87057834, upload-time = "2025-09-18T00:56:57.737Z" }, - { url = "https://files.pythonhosted.org/packages/e5/1a/a5d5ef2a5a55512158cad83524bab7a4a451f917aee342f117144d53c6eb/vtk-9.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cce212b911d13fb0ca36d339f658c9db1ff27a5a730cdddd5d0c6b2ec24c15b1", size = 80607226, upload-time = "2025-09-18T00:57:01.782Z" }, - { url = "https://files.pythonhosted.org/packages/c5/6c/e5544c77b568bfbcc3592fb5e23a5dee8e84df9ee316230509362fb6d432/vtk-9.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:454711c51038824ddc75f955e1064c4e214b452c2e67083f01a8b43fc0ed62cb", size = 112292112, upload-time = "2025-09-18T00:57:07.554Z" }, - { url = "https://files.pythonhosted.org/packages/e4/44/55f7832950cde2d3e5e70d3640e26f3f6c97640769ed5079b4db91189e38/vtk-9.5.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9fce9688f0dede00dc6f3b046037c5fa8378479fa8303a353fd69afae4078d9a", size = 103797602, upload-time = "2025-09-18T00:57:17.783Z" }, - { url = "https://files.pythonhosted.org/packages/78/c2/a292e122cb038c1c2bbc44f3e0588f2ece2bcd44b889631a5c8d82a5f8bd/vtk-9.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:5357bccdf8629373195cab871e45c50383d052d316192aa48f45bd9f87bafccb", size = 64002205, upload-time = "2025-09-18T00:57:23.5Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e0/c1d4baa2d9c32fbf7d36bfa49347168b24136232b6536de433e094482e55/vtk-9.5.2-cp313-cp313-macosx_10_10_x86_64.whl", hash = "sha256:1eae5016620a5fd78f4918256ea65dbe100a7c3ce68f763b64523f06aaaeafbc", size = 87078130, upload-time = "2025-09-18T00:57:31.183Z" }, - { url = "https://files.pythonhosted.org/packages/95/e9/02af96275fd3c4cdf0d55964427c5f70c4a2106c1b6c357726d62e3e6da0/vtk-9.5.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:29ad766e308dcaa23b36261180cd9960215f48815b31c7ac2aa52edc88e21ef7", size = 80618932, upload-time = "2025-09-18T00:57:38.197Z" }, - { url = "https://files.pythonhosted.org/packages/20/d1/c8c4c9b4ff2044fadf4f0d0230a933cc1962e7ba8bca6013737e5773c5c2/vtk-9.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:11cf870c05539e9f82f4a5adf450384e0be4ee6cc80274f9502715a4139e2777", size = 112292475, upload-time = "2025-09-18T00:57:46.196Z" }, - { url = "https://files.pythonhosted.org/packages/87/6d/b0d404822329d3b7eeccd66cf61480cbb66bf1bf6bd2ef8eabedcec8428f/vtk-9.5.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:3c4b658d61815cb87177f4e94281396c9be5a28798464a2c6fa0897b1bba282f", size = 103798352, upload-time = "2025-09-18T00:57:52.993Z" }, - { url = "https://files.pythonhosted.org/packages/07/8f/400d4e4270bd5da3a19ce465aa288c03435e1f38b0344ac2540615ec5b0b/vtk-9.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:974783b8865e2ddc2818d3090705b6bc6bf8ae40346d67f9a43485fabcfb3a99", size = 64000682, upload-time = "2025-09-18T00:57:57.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/d3/344f3664586f1f8bb5f7950db73c257439f5c796e0978e7a53e91d0fe2aa/vtk-9.6.2-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:2adcaed1cc4d3411a6b19834d6ed7d480f9ad9252e56546ea9930e66beae84e8", size = 114881278, upload-time = "2026-05-19T04:47:12.045Z" }, + { url = "https://files.pythonhosted.org/packages/cd/b1/754bd95da3d216e852014758c9ad626601482e2e0b1da98fa83adc5fe1b8/vtk-9.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d1eb5368039dd6a88e8102bee1db50e6f1e5a12945887ea1025069a99fb8088e", size = 106960169, upload-time = "2026-05-19T04:47:17.187Z" }, + { url = "https://files.pythonhosted.org/packages/96/f8/b392298c74aa7b88c731a43253ccd50b388bf42a1a29b50fa735c4f22f41/vtk-9.6.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8c9f31430d15afbf46c2076cf3e30b4d6136512a5faabee8318552ccea907323", size = 146027355, upload-time = "2026-05-19T04:47:22.412Z" }, + { url = "https://files.pythonhosted.org/packages/71/35/67a7760852100c98a8fb6f1221e7eb359ad4d0b1b9edd8beea42c79e16c4/vtk-9.6.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:91e1962c93217cf91ca4fe50762dd26dfc22290b74b8b0de77576f93f7c17abb", size = 135789817, upload-time = "2026-05-19T04:47:27.551Z" }, + { url = "https://files.pythonhosted.org/packages/b4/61/58e162d9cdbf02a3578ef4e68f4003b8cb9f351b7aa409960da3cc383017/vtk-9.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:83b4af00b31395a13acb20e26a42ee097b85e41a0a087be2340d3749cb58250f", size = 81305902, upload-time = "2026-05-19T04:47:32.305Z" }, + { url = "https://files.pythonhosted.org/packages/89/b8/2eb42db93ac200180ca1a6ffe6f95d010181528e9490464621c31628e35f/vtk-9.6.2-cp313-cp313-macosx_10_10_x86_64.whl", hash = "sha256:155a09485a9efcbb0afb0214159bb920cf437fe4d897a6f945f6d66a533d863c", size = 114899285, upload-time = "2026-05-19T04:47:37.237Z" }, + { url = "https://files.pythonhosted.org/packages/00/51/5abfa4dc321b864e57bde87be8a328ee97b3aa33cc5e8f736c162fac63cb/vtk-9.6.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f7055447d36914ed8b39c5738defe467566ef2d7a75ca92a3023aefc269e1f06", size = 106962262, upload-time = "2026-05-19T04:47:41.886Z" }, + { url = "https://files.pythonhosted.org/packages/bd/75/4a1fe360256b99779d534b2387d0efa70952167d53d716f60ff39d62994d/vtk-9.6.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fb85c7fbad59209a08e428479defbdf96f974a9f39d4212960fb1a24a919613c", size = 146027814, upload-time = "2026-05-19T04:47:47.238Z" }, + { url = "https://files.pythonhosted.org/packages/e8/30/90ea11e053d7e0571d70a7f301cebe04cc83874b533ddeaedb5258b0f9e6/vtk-9.6.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:35e1e9ffb6457f16c37d0e025f7db8619961dffc3e9a85a8e5d358d5099c277c", size = 135792045, upload-time = "2026-05-19T04:47:53.848Z" }, + { url = "https://files.pythonhosted.org/packages/da/5b/e03640322971339899f982691396038d793ecfde8adbc208a97d501d6b8e/vtk-9.6.2-cp313-cp313-win_amd64.whl", hash = "sha256:4e9ad047a2b658550d5099dc808b26e331a9c94c3226c28453873035b8b48b41", size = 81307827, upload-time = "2026-05-19T04:47:58.76Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a4/615178228ec84e3793332fbdd62f85965e246366727ef31b20670ce4877d/vtk-9.6.2-cp314-cp314-macosx_10_10_x86_64.whl", hash = "sha256:8a3edd56b63d1ab4ff022e70dac50dd54a66019462c37734e288c9e222809624", size = 114534790, upload-time = "2026-05-19T04:48:04.011Z" }, + { url = "https://files.pythonhosted.org/packages/8e/63/19f6f3f4520595e28b425fe7cae220fa8f4fb963ba9d0c0c4001f54ba8ae/vtk-9.6.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:da01ec70cdfef3fddf659fd35a0258e820065d5331b3c43d5f7e3548351118ea", size = 106971615, upload-time = "2026-05-19T04:48:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/bb/84/80465e452292a219e4b72bded477cee155f9ec44b856e3a877e0f95eba54/vtk-9.6.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5f64288a71b313251300bc798458848aabbfd241230546ce75af90b8e099f14b", size = 146043416, upload-time = "2026-05-19T04:48:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/c2/00/16e9faacb40cdcf487f8f5cb39d4304e71ebfafe38eb38a2c8f74527ca83/vtk-9.6.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:1c3c050668eacb73db20fd07f844321a05dc3d7c60221db7137bd0b8f93a4d82", size = 135816286, upload-time = "2026-05-19T04:48:21.241Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/11594ed6bb95393f5656c96945ae22e297dfc3ccc5d7cd816973aaf9fc0d/vtk-9.6.2-cp314-cp314-win_amd64.whl", hash = "sha256:7b99aad09f712442345bb1c2a5529ad46da3a26fdc12cce54408ff800ccfbb19", size = 83246191, upload-time = "2026-05-19T04:48:26.1Z" }, + { url = "https://files.pythonhosted.org/packages/73/f2/a71b05850acbfb99e0de63c940ae874b665a393adb186a0e9c64cf6c9d64/vtk-9.6.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:691e3a9ae1b62784cf2e9b7d87696bdeac14e1b9905bf020f4c86fab5b756626", size = 145665062, upload-time = "2026-05-19T04:48:31.223Z" }, + { url = "https://files.pythonhosted.org/packages/4a/57/6410098435a3976cc749c151c4e09bff4bcf4af0ebeb13b3e47fbd5871e5/vtk-9.6.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b06725993112097f43daefca0f3637a73a63c67b61a9c124455d881bc05cc9a4", size = 135630292, upload-time = "2026-05-19T04:48:37.053Z" }, ] [[package]] @@ -9313,16 +5188,16 @@ wheels = [ [[package]] name = "warp-lang" -version = "1.11.0" +version = "1.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/0e/aa6c2a57d987d18d6463a30a358f5454599ae5d03bbfe889a6330e0b9931/warp_lang-1.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3a4f1c9a6e721d7de7d6dad6b242c54afaf20c6e14a767c0da03e5e963fcc13c", size = 24025392, upload-time = "2026-01-02T13:18:13.517Z" }, - { url = "https://files.pythonhosted.org/packages/0b/56/935b926526075149fdf8851e7593ea63880458c5303798852d9c99c30382/warp_lang-1.11.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:524dce20de6162ba25333552168ebf430973050e00d9f8116b8df41a60d25d6e", size = 134812535, upload-time = "2026-01-02T13:13:23.908Z" }, - { url = "https://files.pythonhosted.org/packages/65/b7/8915e42cb10bbe7d2ff1b32554b52d4c90234119aab4de48476ebf700147/warp_lang-1.11.0-py3-none-manylinux_2_34_aarch64.whl", hash = "sha256:1ae6cfc226107f96e4d495b41a3dab32488e8ee8f074b0e1bcaf22e7fb8c904d", size = 136105356, upload-time = "2026-01-02T13:15:37.795Z" }, - { url = "https://files.pythonhosted.org/packages/e4/cc/6261315e43fa879d30b1bd79904ce8075a8a7d42fc49dd235de337f2ac02/warp_lang-1.11.0-py3-none-win_amd64.whl", hash = "sha256:80d8493cbe243a3510134f3af289646d7bd7484217a30ecf565d676466ef8a5e", size = 118919958, upload-time = "2026-01-02T13:17:20.067Z" }, + { url = "https://files.pythonhosted.org/packages/94/be/b79000cb5b551803416bc10c4fa43a37d31b48062683662a6c134d7452bc/warp_lang-1.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4375f572301991fe0fbf0af29fc84d76cd27d531432d6df8452b25088c21ea5a", size = 24584304, upload-time = "2026-05-04T04:30:03.621Z" }, + { url = "https://files.pythonhosted.org/packages/58/8e/b42f0ddeaca25251e5bbf7db6a89351a0722432ce075ebcdece9118e955a/warp_lang-1.13.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:ac2479c70ad410d58deb088c2a64168792be588efc1bec22dc51f92238e8c8c3", size = 138337580, upload-time = "2026-05-04T04:30:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/53/19/87b3a3a1a5e07ad34a3886ec38e96b6865359fd17a2511e78e5430c6bace/warp_lang-1.13.0-py3-none-manylinux_2_34_aarch64.whl", hash = "sha256:476b54f0dcf6767f23305a328660a9a74d01e371b6b7c3d77e03e18b4a1bb1a5", size = 139812627, upload-time = "2026-05-04T04:31:03.731Z" }, + { url = "https://files.pythonhosted.org/packages/1e/79/e4117177b88df67d7967c993a2234a3888d0e388076652e1f2a50551f95a/warp_lang-1.13.0-py3-none-win_amd64.whl", hash = "sha256:47975ea07252d45a4d09d2d1a6cffc55002fa7fbde771c8dceb1baf4b32d4fb8", size = 121601324, upload-time = "2026-05-04T04:31:37.814Z" }, ] [[package]] @@ -9349,65 +5224,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] -[[package]] -name = "wcmatch" -version = "10.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "bracex" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/79/3e/c0bdc27cf06f4e47680bd5803a07cb3dfd17de84cde92dd217dcb9e05253/wcmatch-10.1.tar.gz", hash = "sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af", size = 117421, upload-time = "2025-06-22T19:14:02.49Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/d8/0d1d2e9d3fabcf5d6840362adcf05f8cf3cd06a73358140c3a97189238ae/wcmatch-10.1-py3-none-any.whl", hash = "sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a", size = 39854, upload-time = "2025-06-22T19:14:00.978Z" }, -] - [[package]] name = "wcwidth" -version = "0.2.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" +version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/ee/afaf0f85a9a18fe47a67f1e4422ed6cf1fe642f0ae0a2f81166231303c52/wcwidth-0.7.0.tar.gz", hash = "sha256:90e3a7ea092341c44b99562e75d09e4d5160fe7a3974c6fb842a101a95e7eed0", size = 182132, upload-time = "2026-05-02T16:04:12.653Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, -] - -[[package]] -name = "websockets" -version = "15.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, - { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, - { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, - { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, - { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, - { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, - { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, - { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, - { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, - { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, - { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, - { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, - { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, - { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, - { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, - { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, - { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, - { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, - { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, - { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, + { url = "https://files.pythonhosted.org/packages/41/52/e465037f5375f43533d1a80b6923955201596a99142ed524d77b571a1418/wcwidth-0.7.0-py3-none-any.whl", hash = "sha256:5d69154c429a82910e241c738cd0e2976fac8a2dd47a1a805f4afed1c0f136f2", size = 110825, upload-time = "2026-05-02T16:04:11.033Z" }, ] [[package]] @@ -9419,82 +5242,68 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/0f/6e97a3bc38cdde32e3ec49f8c0903fe3559ec9ec9db181782f0bb4417717/wheel_filename-1.4.2-py3-none-any.whl", hash = "sha256:3fa599046443d4ca830d06e3d180cd0a675d5871af0a68daa5623318bb4d17e3", size = 6195, upload-time = "2024-12-01T13:03:00.536Z" }, ] -[[package]] -name = "win32-setctime" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" }, -] - [[package]] name = "wrapt" -version = "2.0.1" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/49/2a/6de8a50cb435b7f42c46126cf1a54b2aab81784e74c8595c8e025e8f36d3/wrapt-2.0.1.tar.gz", hash = "sha256:9c9c635e78497cacb81e84f8b11b23e0aacac7a136e73b8e5b2109a1d9fc468f", size = 82040, upload-time = "2025-11-07T00:45:33.312Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/73/8cb252858dc8254baa0ce58ce382858e3a1cf616acebc497cb13374c95c6/wrapt-2.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1fdbb34da15450f2b1d735a0e969c24bdb8d8924892380126e2a293d9902078c", size = 78129, upload-time = "2025-11-07T00:43:48.852Z" }, - { url = "https://files.pythonhosted.org/packages/19/42/44a0db2108526ee6e17a5ab72478061158f34b08b793df251d9fbb9a7eb4/wrapt-2.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3d32794fe940b7000f0519904e247f902f0149edbe6316c710a8562fb6738841", size = 61205, upload-time = "2025-11-07T00:43:50.402Z" }, - { url = "https://files.pythonhosted.org/packages/4d/8a/5b4b1e44b791c22046e90d9b175f9a7581a8cc7a0debbb930f81e6ae8e25/wrapt-2.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:386fb54d9cd903ee0012c09291336469eb7b244f7183d40dc3e86a16a4bace62", size = 61692, upload-time = "2025-11-07T00:43:51.678Z" }, - { url = "https://files.pythonhosted.org/packages/11/53/3e794346c39f462bcf1f58ac0487ff9bdad02f9b6d5ee2dc84c72e0243b2/wrapt-2.0.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7b219cb2182f230676308cdcacd428fa837987b89e4b7c5c9025088b8a6c9faf", size = 121492, upload-time = "2025-11-07T00:43:55.017Z" }, - { url = "https://files.pythonhosted.org/packages/c6/7e/10b7b0e8841e684c8ca76b462a9091c45d62e8f2de9c4b1390b690eadf16/wrapt-2.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:641e94e789b5f6b4822bb8d8ebbdfc10f4e4eae7756d648b717d980f657a9eb9", size = 123064, upload-time = "2025-11-07T00:43:56.323Z" }, - { url = "https://files.pythonhosted.org/packages/0e/d1/3c1e4321fc2f5ee7fd866b2d822aa89b84495f28676fd976c47327c5b6aa/wrapt-2.0.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe21b118b9f58859b5ebaa4b130dee18669df4bd111daad082b7beb8799ad16b", size = 117403, upload-time = "2025-11-07T00:43:53.258Z" }, - { url = "https://files.pythonhosted.org/packages/a4/b0/d2f0a413cf201c8c2466de08414a15420a25aa83f53e647b7255cc2fab5d/wrapt-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:17fb85fa4abc26a5184d93b3efd2dcc14deb4b09edcdb3535a536ad34f0b4dba", size = 121500, upload-time = "2025-11-07T00:43:57.468Z" }, - { url = "https://files.pythonhosted.org/packages/bd/45/bddb11d28ca39970a41ed48a26d210505120f925918592283369219f83cc/wrapt-2.0.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:b89ef9223d665ab255ae42cc282d27d69704d94be0deffc8b9d919179a609684", size = 116299, upload-time = "2025-11-07T00:43:58.877Z" }, - { url = "https://files.pythonhosted.org/packages/81/af/34ba6dd570ef7a534e7eec0c25e2615c355602c52aba59413411c025a0cb/wrapt-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a453257f19c31b31ba593c30d997d6e5be39e3b5ad9148c2af5a7314061c63eb", size = 120622, upload-time = "2025-11-07T00:43:59.962Z" }, - { url = "https://files.pythonhosted.org/packages/e2/3e/693a13b4146646fb03254636f8bafd20c621955d27d65b15de07ab886187/wrapt-2.0.1-cp312-cp312-win32.whl", hash = "sha256:3e271346f01e9c8b1130a6a3b0e11908049fe5be2d365a5f402778049147e7e9", size = 58246, upload-time = "2025-11-07T00:44:03.169Z" }, - { url = "https://files.pythonhosted.org/packages/a7/36/715ec5076f925a6be95f37917b66ebbeaa1372d1862c2ccd7a751574b068/wrapt-2.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:2da620b31a90cdefa9cd0c2b661882329e2e19d1d7b9b920189956b76c564d75", size = 60492, upload-time = "2025-11-07T00:44:01.027Z" }, - { url = "https://files.pythonhosted.org/packages/ef/3e/62451cd7d80f65cc125f2b426b25fbb6c514bf6f7011a0c3904fc8c8df90/wrapt-2.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:aea9c7224c302bc8bfc892b908537f56c430802560e827b75ecbde81b604598b", size = 58987, upload-time = "2025-11-07T00:44:02.095Z" }, - { url = "https://files.pythonhosted.org/packages/ad/fe/41af4c46b5e498c90fc87981ab2972fbd9f0bccda597adb99d3d3441b94b/wrapt-2.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:47b0f8bafe90f7736151f61482c583c86b0693d80f075a58701dd1549b0010a9", size = 78132, upload-time = "2025-11-07T00:44:04.628Z" }, - { url = "https://files.pythonhosted.org/packages/1c/92/d68895a984a5ebbbfb175512b0c0aad872354a4a2484fbd5552e9f275316/wrapt-2.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cbeb0971e13b4bd81d34169ed57a6dda017328d1a22b62fda45e1d21dd06148f", size = 61211, upload-time = "2025-11-07T00:44:05.626Z" }, - { url = "https://files.pythonhosted.org/packages/e8/26/ba83dc5ae7cf5aa2b02364a3d9cf74374b86169906a1f3ade9a2d03cf21c/wrapt-2.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb7cffe572ad0a141a7886a1d2efa5bef0bf7fe021deeea76b3ab334d2c38218", size = 61689, upload-time = "2025-11-07T00:44:06.719Z" }, - { url = "https://files.pythonhosted.org/packages/cf/67/d7a7c276d874e5d26738c22444d466a3a64ed541f6ef35f740dbd865bab4/wrapt-2.0.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c8d60527d1ecfc131426b10d93ab5d53e08a09c5fa0175f6b21b3252080c70a9", size = 121502, upload-time = "2025-11-07T00:44:09.557Z" }, - { url = "https://files.pythonhosted.org/packages/0f/6b/806dbf6dd9579556aab22fc92908a876636e250f063f71548a8660382184/wrapt-2.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c654eafb01afac55246053d67a4b9a984a3567c3808bb7df2f8de1c1caba2e1c", size = 123110, upload-time = "2025-11-07T00:44:10.64Z" }, - { url = "https://files.pythonhosted.org/packages/e5/08/cdbb965fbe4c02c5233d185d070cabed2ecc1f1e47662854f95d77613f57/wrapt-2.0.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:98d873ed6c8b4ee2418f7afce666751854d6d03e3c0ec2a399bb039cd2ae89db", size = 117434, upload-time = "2025-11-07T00:44:08.138Z" }, - { url = "https://files.pythonhosted.org/packages/2d/d1/6aae2ce39db4cb5216302fa2e9577ad74424dfbe315bd6669725569e048c/wrapt-2.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9e850f5b7fc67af856ff054c71690d54fa940c3ef74209ad9f935b4f66a0233", size = 121533, upload-time = "2025-11-07T00:44:12.142Z" }, - { url = "https://files.pythonhosted.org/packages/79/35/565abf57559fbe0a9155c29879ff43ce8bd28d2ca61033a3a3dd67b70794/wrapt-2.0.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e505629359cb5f751e16e30cf3f91a1d3ddb4552480c205947da415d597f7ac2", size = 116324, upload-time = "2025-11-07T00:44:13.28Z" }, - { url = "https://files.pythonhosted.org/packages/e1/e0/53ff5e76587822ee33e560ad55876d858e384158272cd9947abdd4ad42ca/wrapt-2.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2879af909312d0baf35f08edeea918ee3af7ab57c37fe47cb6a373c9f2749c7b", size = 120627, upload-time = "2025-11-07T00:44:14.431Z" }, - { url = "https://files.pythonhosted.org/packages/7c/7b/38df30fd629fbd7612c407643c63e80e1c60bcc982e30ceeae163a9800e7/wrapt-2.0.1-cp313-cp313-win32.whl", hash = "sha256:d67956c676be5a24102c7407a71f4126d30de2a569a1c7871c9f3cabc94225d7", size = 58252, upload-time = "2025-11-07T00:44:17.814Z" }, - { url = "https://files.pythonhosted.org/packages/85/64/d3954e836ea67c4d3ad5285e5c8fd9d362fd0a189a2db622df457b0f4f6a/wrapt-2.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9ca66b38dd642bf90c59b6738af8070747b610115a39af2498535f62b5cdc1c3", size = 60500, upload-time = "2025-11-07T00:44:15.561Z" }, - { url = "https://files.pythonhosted.org/packages/89/4e/3c8b99ac93527cfab7f116089db120fef16aac96e5f6cdb724ddf286086d/wrapt-2.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:5a4939eae35db6b6cec8e7aa0e833dcca0acad8231672c26c2a9ab7a0f8ac9c8", size = 58993, upload-time = "2025-11-07T00:44:16.65Z" }, - { url = "https://files.pythonhosted.org/packages/f9/f4/eff2b7d711cae20d220780b9300faa05558660afb93f2ff5db61fe725b9a/wrapt-2.0.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a52f93d95c8d38fed0669da2ebdb0b0376e895d84596a976c15a9eb45e3eccb3", size = 82028, upload-time = "2025-11-07T00:44:18.944Z" }, - { url = "https://files.pythonhosted.org/packages/0c/67/cb945563f66fd0f61a999339460d950f4735c69f18f0a87ca586319b1778/wrapt-2.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4e54bbf554ee29fcceee24fa41c4d091398b911da6e7f5d7bffda963c9aed2e1", size = 62949, upload-time = "2025-11-07T00:44:20.074Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ca/f63e177f0bbe1e5cf5e8d9b74a286537cd709724384ff20860f8f6065904/wrapt-2.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:908f8c6c71557f4deaa280f55d0728c3bca0960e8c3dd5ceeeafb3c19942719d", size = 63681, upload-time = "2025-11-07T00:44:21.345Z" }, - { url = "https://files.pythonhosted.org/packages/39/a1/1b88fcd21fd835dca48b556daef750952e917a2794fa20c025489e2e1f0f/wrapt-2.0.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e2f84e9af2060e3904a32cea9bb6db23ce3f91cfd90c6b426757cf7cc01c45c7", size = 152696, upload-time = "2025-11-07T00:44:24.318Z" }, - { url = "https://files.pythonhosted.org/packages/62/1c/d9185500c1960d9f5f77b9c0b890b7fc62282b53af7ad1b6bd779157f714/wrapt-2.0.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3612dc06b436968dfb9142c62e5dfa9eb5924f91120b3c8ff501ad878f90eb3", size = 158859, upload-time = "2025-11-07T00:44:25.494Z" }, - { url = "https://files.pythonhosted.org/packages/91/60/5d796ed0f481ec003220c7878a1d6894652efe089853a208ea0838c13086/wrapt-2.0.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d2d947d266d99a1477cd005b23cbd09465276e302515e122df56bb9511aca1b", size = 146068, upload-time = "2025-11-07T00:44:22.81Z" }, - { url = "https://files.pythonhosted.org/packages/04/f8/75282dd72f102ddbfba137e1e15ecba47b40acff32c08ae97edbf53f469e/wrapt-2.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:7d539241e87b650cbc4c3ac9f32c8d1ac8a54e510f6dca3f6ab60dcfd48c9b10", size = 155724, upload-time = "2025-11-07T00:44:26.634Z" }, - { url = "https://files.pythonhosted.org/packages/5a/27/fe39c51d1b344caebb4a6a9372157bdb8d25b194b3561b52c8ffc40ac7d1/wrapt-2.0.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:4811e15d88ee62dbf5c77f2c3ff3932b1e3ac92323ba3912f51fc4016ce81ecf", size = 144413, upload-time = "2025-11-07T00:44:27.939Z" }, - { url = "https://files.pythonhosted.org/packages/83/2b/9f6b643fe39d4505c7bf926d7c2595b7cb4b607c8c6b500e56c6b36ac238/wrapt-2.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c1c91405fcf1d501fa5d55df21e58ea49e6b879ae829f1039faaf7e5e509b41e", size = 150325, upload-time = "2025-11-07T00:44:29.29Z" }, - { url = "https://files.pythonhosted.org/packages/bb/b6/20ffcf2558596a7f58a2e69c89597128781f0b88e124bf5a4cadc05b8139/wrapt-2.0.1-cp313-cp313t-win32.whl", hash = "sha256:e76e3f91f864e89db8b8d2a8311d57df93f01ad6bb1e9b9976d1f2e83e18315c", size = 59943, upload-time = "2025-11-07T00:44:33.211Z" }, - { url = "https://files.pythonhosted.org/packages/87/6a/0e56111cbb3320151eed5d3821ee1373be13e05b376ea0870711f18810c3/wrapt-2.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:83ce30937f0ba0d28818807b303a412440c4b63e39d3d8fc036a94764b728c92", size = 63240, upload-time = "2025-11-07T00:44:30.935Z" }, - { url = "https://files.pythonhosted.org/packages/1d/54/5ab4c53ea1f7f7e5c3e7c1095db92932cc32fd62359d285486d00c2884c3/wrapt-2.0.1-cp313-cp313t-win_arm64.whl", hash = "sha256:4b55cacc57e1dc2d0991dbe74c6419ffd415fb66474a02335cb10efd1aa3f84f", size = 60416, upload-time = "2025-11-07T00:44:32.002Z" }, - { url = "https://files.pythonhosted.org/packages/73/81/d08d83c102709258e7730d3cd25befd114c60e43ef3891d7e6877971c514/wrapt-2.0.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:5e53b428f65ece6d9dad23cb87e64506392b720a0b45076c05354d27a13351a1", size = 78290, upload-time = "2025-11-07T00:44:34.691Z" }, - { url = "https://files.pythonhosted.org/packages/f6/14/393afba2abb65677f313aa680ff0981e829626fed39b6a7e3ec807487790/wrapt-2.0.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ad3ee9d0f254851c71780966eb417ef8e72117155cff04821ab9b60549694a55", size = 61255, upload-time = "2025-11-07T00:44:35.762Z" }, - { url = "https://files.pythonhosted.org/packages/c4/10/a4a1f2fba205a9462e36e708ba37e5ac95f4987a0f1f8fd23f0bf1fc3b0f/wrapt-2.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d7b822c61ed04ee6ad64bc90d13368ad6eb094db54883b5dde2182f67a7f22c0", size = 61797, upload-time = "2025-11-07T00:44:37.22Z" }, - { url = "https://files.pythonhosted.org/packages/12/db/99ba5c37cf1c4fad35349174f1e38bd8d992340afc1ff27f526729b98986/wrapt-2.0.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7164a55f5e83a9a0b031d3ffab4d4e36bbec42e7025db560f225489fa929e509", size = 120470, upload-time = "2025-11-07T00:44:39.425Z" }, - { url = "https://files.pythonhosted.org/packages/30/3f/a1c8d2411eb826d695fc3395a431757331582907a0ec59afce8fe8712473/wrapt-2.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e60690ba71a57424c8d9ff28f8d006b7ad7772c22a4af432188572cd7fa004a1", size = 122851, upload-time = "2025-11-07T00:44:40.582Z" }, - { url = "https://files.pythonhosted.org/packages/b3/8d/72c74a63f201768d6a04a8845c7976f86be6f5ff4d74996c272cefc8dafc/wrapt-2.0.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3cd1a4bd9a7a619922a8557e1318232e7269b5fb69d4ba97b04d20450a6bf970", size = 117433, upload-time = "2025-11-07T00:44:38.313Z" }, - { url = "https://files.pythonhosted.org/packages/c7/5a/df37cf4042cb13b08256f8e27023e2f9b3d471d553376616591bb99bcb31/wrapt-2.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b4c2e3d777e38e913b8ce3a6257af72fb608f86a1df471cb1d4339755d0a807c", size = 121280, upload-time = "2025-11-07T00:44:41.69Z" }, - { url = "https://files.pythonhosted.org/packages/54/34/40d6bc89349f9931e1186ceb3e5fbd61d307fef814f09fbbac98ada6a0c8/wrapt-2.0.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3d366aa598d69416b5afedf1faa539fac40c1d80a42f6b236c88c73a3c8f2d41", size = 116343, upload-time = "2025-11-07T00:44:43.013Z" }, - { url = "https://files.pythonhosted.org/packages/70/66/81c3461adece09d20781dee17c2366fdf0cb8754738b521d221ca056d596/wrapt-2.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c235095d6d090aa903f1db61f892fffb779c1eaeb2a50e566b52001f7a0f66ed", size = 119650, upload-time = "2025-11-07T00:44:44.523Z" }, - { url = "https://files.pythonhosted.org/packages/46/3a/d0146db8be8761a9e388cc9cc1c312b36d583950ec91696f19bbbb44af5a/wrapt-2.0.1-cp314-cp314-win32.whl", hash = "sha256:bfb5539005259f8127ea9c885bdc231978c06b7a980e63a8a61c8c4c979719d0", size = 58701, upload-time = "2025-11-07T00:44:48.277Z" }, - { url = "https://files.pythonhosted.org/packages/1a/38/5359da9af7d64554be63e9046164bd4d8ff289a2dd365677d25ba3342c08/wrapt-2.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:4ae879acc449caa9ed43fc36ba08392b9412ee67941748d31d94e3cedb36628c", size = 60947, upload-time = "2025-11-07T00:44:46.086Z" }, - { url = "https://files.pythonhosted.org/packages/aa/3f/96db0619276a833842bf36343685fa04f987dd6e3037f314531a1e00492b/wrapt-2.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:8639b843c9efd84675f1e100ed9e99538ebea7297b62c4b45a7042edb84db03e", size = 59359, upload-time = "2025-11-07T00:44:47.164Z" }, - { url = "https://files.pythonhosted.org/packages/71/49/5f5d1e867bf2064bf3933bc6cf36ade23505f3902390e175e392173d36a2/wrapt-2.0.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:9219a1d946a9b32bb23ccae66bdb61e35c62773ce7ca6509ceea70f344656b7b", size = 82031, upload-time = "2025-11-07T00:44:49.4Z" }, - { url = "https://files.pythonhosted.org/packages/2b/89/0009a218d88db66ceb83921e5685e820e2c61b59bbbb1324ba65342668bc/wrapt-2.0.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fa4184e74197af3adad3c889a1af95b53bb0466bced92ea99a0c014e48323eec", size = 62952, upload-time = "2025-11-07T00:44:50.74Z" }, - { url = "https://files.pythonhosted.org/packages/ae/18/9b968e920dd05d6e44bcc918a046d02afea0fb31b2f1c80ee4020f377cbe/wrapt-2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c5ef2f2b8a53b7caee2f797ef166a390fef73979b15778a4a153e4b5fedce8fa", size = 63688, upload-time = "2025-11-07T00:44:52.248Z" }, - { url = "https://files.pythonhosted.org/packages/a6/7d/78bdcb75826725885d9ea26c49a03071b10c4c92da93edda612910f150e4/wrapt-2.0.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e042d653a4745be832d5aa190ff80ee4f02c34b21f4b785745eceacd0907b815", size = 152706, upload-time = "2025-11-07T00:44:54.613Z" }, - { url = "https://files.pythonhosted.org/packages/dd/77/cac1d46f47d32084a703df0d2d29d47e7eb2a7d19fa5cbca0e529ef57659/wrapt-2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2afa23318136709c4b23d87d543b425c399887b4057936cd20386d5b1422b6fa", size = 158866, upload-time = "2025-11-07T00:44:55.79Z" }, - { url = "https://files.pythonhosted.org/packages/8a/11/b521406daa2421508903bf8d5e8b929216ec2af04839db31c0a2c525eee0/wrapt-2.0.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6c72328f668cf4c503ffcf9434c2b71fdd624345ced7941bc6693e61bbe36bef", size = 146148, upload-time = "2025-11-07T00:44:53.388Z" }, - { url = "https://files.pythonhosted.org/packages/0c/c0/340b272bed297baa7c9ce0c98ef7017d9c035a17a6a71dce3184b8382da2/wrapt-2.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3793ac154afb0e5b45d1233cb94d354ef7a983708cc3bb12563853b1d8d53747", size = 155737, upload-time = "2025-11-07T00:44:56.971Z" }, - { url = "https://files.pythonhosted.org/packages/f3/93/bfcb1fb2bdf186e9c2883a4d1ab45ab099c79cbf8f4e70ea453811fa3ea7/wrapt-2.0.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fec0d993ecba3991645b4857837277469c8cc4c554a7e24d064d1ca291cfb81f", size = 144451, upload-time = "2025-11-07T00:44:58.515Z" }, - { url = "https://files.pythonhosted.org/packages/d2/6b/dca504fb18d971139d232652656180e3bd57120e1193d9a5899c3c0b7cdd/wrapt-2.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:949520bccc1fa227274da7d03bf238be15389cd94e32e4297b92337df9b7a349", size = 150353, upload-time = "2025-11-07T00:44:59.753Z" }, - { url = "https://files.pythonhosted.org/packages/1d/f6/a1de4bd3653afdf91d250ca5c721ee51195df2b61a4603d4b373aa804d1d/wrapt-2.0.1-cp314-cp314t-win32.whl", hash = "sha256:be9e84e91d6497ba62594158d3d31ec0486c60055c49179edc51ee43d095f79c", size = 60609, upload-time = "2025-11-07T00:45:03.315Z" }, - { url = "https://files.pythonhosted.org/packages/01/3a/07cd60a9d26fe73efead61c7830af975dfdba8537632d410462672e4432b/wrapt-2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:61c4956171c7434634401db448371277d07032a81cc21c599c22953374781395", size = 64038, upload-time = "2025-11-07T00:45:00.948Z" }, - { url = "https://files.pythonhosted.org/packages/41/99/8a06b8e17dddbf321325ae4eb12465804120f699cd1b8a355718300c62da/wrapt-2.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:35cdbd478607036fee40273be8ed54a451f5f23121bd9d4be515158f9498f7ad", size = 60634, upload-time = "2025-11-07T00:45:02.087Z" }, - { url = "https://files.pythonhosted.org/packages/15/d1/b51471c11592ff9c012bd3e2f7334a6ff2f42a7aed2caffcf0bdddc9cb89/wrapt-2.0.1-py3-none-any.whl", hash = "sha256:4d2ce1bf1a48c5277d7969259232b57645aae5686dba1eaeade39442277afbca", size = 44046, upload-time = "2025-11-07T00:45:32.116Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/2d/9f/06263fcd8ad6c405f05a3905fd7a84dd3176eb5ad46e44bccc0cd16348bb/wrapt-2.2.1.tar.gz", hash = "sha256:6744f504375775d7609c82c8d3d94af1c9a6f05586984536905908ba905277b9", size = 127620, upload-time = "2026-05-22T14:49:43.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/0c/bfae7b9401583b6d05938cd16dedc43857d96da2f8a3d50d78cc515bf6ff/wrapt-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ffad790d9d11d8ecf9f17c4bb671a5b4089e4d8b575c46c5129597f41f836b0", size = 81021, upload-time = "2026-05-22T14:48:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/26/58/80f6a6599f933f4caecc1cb3ee88a04faf81e8b9bddbd6109c688dd63e0f/wrapt-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:628f5220c7a904d5fc78f7075c8d7871433eb6d035c94728a22fdf85f193d2a8", size = 81692, upload-time = "2026-05-22T14:48:01.49Z" }, + { url = "https://files.pythonhosted.org/packages/17/93/fb357cc7847c58a8ae790be718903afa81a28d23e642c843dc4129e8a0b2/wrapt-2.2.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:61acce4257a9883669703c525447c5b4c392edf0f987ae77ec32668440158f0e", size = 169364, upload-time = "2026-05-22T14:48:02.791Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0b/76b601ee309a8bd556af0eecb184394c20b3c49aa9c8e085aa1ffacc2568/wrapt-2.2.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:727ab4244622cd6ad2390f322642090c877d2e83a608d2653a7643ae5368d926", size = 171079, upload-time = "2026-05-22T14:48:04.22Z" }, + { url = "https://files.pythonhosted.org/packages/cd/87/ee3f32d5658e3e26d3e0e457922b47a36dd3bfbdfee7f97bb3e802344a66/wrapt-2.2.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03df9ebed4c73ab93fa8c07e3d41d818dfca1852b15731a3de59457b27814624", size = 160205, upload-time = "2026-05-22T14:48:05.553Z" }, + { url = "https://files.pythonhosted.org/packages/b1/d0/ae2fd64277a67f5d7bffcf2d05eea1e476263fb2a072baf0b0129ab85984/wrapt-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0d9ff006f420b2ec8296aa56ade43ea7da3e997e85769f0aafc5e0661aacb710", size = 168922, upload-time = "2026-05-22T14:48:07.132Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f3/2d541a060c5bbafb9400bca4917e4d78bfd1f239f404782c86831a8f6b29/wrapt-2.2.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:844c858fc3bb7eacc0ba8efa904935d16aac6a4470948ad1e7e55c9f5a2a665f", size = 158388, upload-time = "2026-05-22T14:48:08.629Z" }, + { url = "https://files.pythonhosted.org/packages/1d/68/8d92c8800c57e93cb116ae9e9d6cbafc34fade5ee9f9107b6f203fb4dc35/wrapt-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87bacdaf225117a342a20d9c03438d701c02112f6e3f351ce9b7f32354f14797", size = 167682, upload-time = "2026-05-22T14:48:10.042Z" }, + { url = "https://files.pythonhosted.org/packages/30/72/83ea3790ea352439442349388e29ff07b76e0686265f9088bbb505d1608d/wrapt-2.2.1-cp312-cp312-win32.whl", hash = "sha256:2f8c90c8afde51969487be4e1343ae049b268854877d415c2510baf833775052", size = 77857, upload-time = "2026-05-22T14:48:11.782Z" }, + { url = "https://files.pythonhosted.org/packages/ef/cb/99450668dd3502d62a54a1c8aa56e44f34cb8c1261b381cfe2e7926c3b75/wrapt-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ce32763ac31ce94fe9aada947e479b1975012bff166da409b4b9e4e376cf7e5", size = 80825, upload-time = "2026-05-22T14:48:13.046Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3a/87512881be64e743f9ee4c66f4cbe8e884974bef2a5989af71f999653ac7/wrapt-2.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d1b4d0e0c2119587a31f5c029abd547e0c81d93b89d394566fe1588659eb579", size = 79087, upload-time = "2026-05-22T14:48:14.323Z" }, + { url = "https://files.pythonhosted.org/packages/88/d1/a1b08f8f4fac8cbb156fa51cf64ee2c7f7f74f9875ba3cf70b3c58368694/wrapt-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d2beb1c7cab10603aecdc42f8edd6ff013f9a32e4543474e38e6b77ce9975aeb", size = 80831, upload-time = "2026-05-22T14:48:15.598Z" }, + { url = "https://files.pythonhosted.org/packages/54/ce/57890814991446a845e09b3445ce8b694f27eb0577004f2c2a36a9772ed4/wrapt-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e0cb7e4dd71f4c32e5e84843cd3c4cd65dda034314004bbe1d7f99af2426ab80", size = 81375, upload-time = "2026-05-22T14:48:17.071Z" }, + { url = "https://files.pythonhosted.org/packages/38/65/08d7a6c76ac4493bdb668205ee9c1de1bd5daca61717c3e9aa49b4c01499/wrapt-2.2.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95821352042722cd9f1108874579a47989d0a7e12a37d87d2fc4af20fd99ab8a", size = 167417, upload-time = "2026-05-22T14:48:18.303Z" }, + { url = "https://files.pythonhosted.org/packages/62/ce/f1ccbee7a1bfe5cdc6b3da6bab4b45713d628b9294da32a39f563d648140/wrapt-2.2.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abd621552ede77c4c69be7fac44ba911225b0c812b6ba604e5964cf98085b474", size = 166948, upload-time = "2026-05-22T14:48:19.768Z" }, + { url = "https://files.pythonhosted.org/packages/86/2a/f85d48d1cd4869aee6704028d257d740a47c1c467b457ce396b4b5b55d07/wrapt-2.2.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e3677c7146ce694874941ba82b57092cc4875445aadf29d72807351023105143", size = 158148, upload-time = "2026-05-22T14:48:21.96Z" }, + { url = "https://files.pythonhosted.org/packages/fe/5c/93939ad11d4a12358ab1aab219a2ef5efa5612e0db6b9fc65af8af1a891b/wrapt-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9a5934eaea872e17936b5f45501eba5ab0bce9a74122e172b663d7c28c459c4a", size = 165905, upload-time = "2026-05-22T14:48:23.373Z" }, + { url = "https://files.pythonhosted.org/packages/e0/22/b8c2aa89862ff58605934d7abf4b70e6a5a1c33df96656f49035ccdf1c8a/wrapt-2.2.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f5b9daf6b629fce418e0cc3dd0436eac045188fa35deadb7a7f3941d5b8203f9", size = 156712, upload-time = "2026-05-22T14:48:24.767Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/bf00a7b02239c12bb02ddcc3c0b971bfcc36e578c5a44f1ccfef5b458545/wrapt-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f53ac9f3ef573326d009ed809beff4efcac6451931c2b8132586da4b9e53ff31", size = 166560, upload-time = "2026-05-22T14:48:26.83Z" }, + { url = "https://files.pythonhosted.org/packages/fe/93/6390ca9c5b787683cef588d04f57c8d41b9a2323b5597a65f18638c90ef2/wrapt-2.2.1-cp313-cp313-win32.whl", hash = "sha256:1ffa9cfd4bdb581539951b14ae661ff20ed0c3599b3e911a131ee0ec5ac11337", size = 77817, upload-time = "2026-05-22T14:48:28.221Z" }, + { url = "https://files.pythonhosted.org/packages/97/73/ce10f0e71c0cfaa1a65faadb8efd4852028b3bb9ba28932b8889df769d38/wrapt-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:368eac1e20fd0bb03dd3cc42bf9887154c3861b60989389ccb5fac032617d215", size = 80736, upload-time = "2026-05-22T14:48:30.139Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4c/89f4a6818fafbbd840330e4fa3873073e1bfc166133a64cac7f8fde7a5e3/wrapt-2.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:c754dafdf5aaf0b401b644a90a30046929a0dd1a536e0ff0ec959a59155d9c7f", size = 79099, upload-time = "2026-05-22T14:48:31.405Z" }, + { url = "https://files.pythonhosted.org/packages/bf/f2/9a8741c46f8c208ac0a45b25ba170bcb4fb72a2781d5fb97dbd7b6be73cb/wrapt-2.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ed928d0fda15fc0adc8d13305c8b3c0f2fba5b0669950c9e6d019d9162a3b3e8", size = 82802, upload-time = "2026-05-22T14:48:33.307Z" }, + { url = "https://files.pythonhosted.org/packages/9c/0d/e9c855716a3705eef1416456bdf062b60620726fdc59428ff670fc3c60dc/wrapt-2.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fafb4e739e43544d12cb4abd1605fd4683b6ca6a9ad682b7fd8f4d21973eafa8", size = 83329, upload-time = "2026-05-22T14:48:34.593Z" }, + { url = "https://files.pythonhosted.org/packages/3b/d6/a88f1c13112b7831adac75cea65d8310e0d696d570c8961844c90a57b865/wrapt-2.2.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:74d6a0c31472fe5d814917266b9f46495d7c61ed890af08b468acea92fb89a8d", size = 202937, upload-time = "2026-05-22T14:48:35.859Z" }, + { url = "https://files.pythonhosted.org/packages/42/65/e29d54aef06a4d898a5b8a25589a0b3769bde454f922fad8f6f89fbfb650/wrapt-2.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab5be648d5a0b86b7438864f8df3c705a65cef35a2fd3e5561e3e203167e0f27", size = 209997, upload-time = "2026-05-22T14:48:38.153Z" }, + { url = "https://files.pythonhosted.org/packages/2a/91/e4454263516cf0e12640912fbca9a83654e424f0a6ddb79f5cd7ce14bf33/wrapt-2.2.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9d8f204c8e3a8bf9ece17e0a83d137fd807440977f8a5e762d59306795011440", size = 194856, upload-time = "2026-05-22T14:48:39.69Z" }, + { url = "https://files.pythonhosted.org/packages/de/d0/fe0ee202286afdf4a7f77dd29f195703145764d572aec209c5086e57d924/wrapt-2.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d047f6498c973874ba08ac3f97c69a2c4b2211c8de6f4c205f75cb1c9522596e", size = 205654, upload-time = "2026-05-22T14:48:43.456Z" }, + { url = "https://files.pythonhosted.org/packages/23/b6/87d860dfc6460c246af70b1fd5c8b76df77571b42a493459423ded94fd7d/wrapt-2.2.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:7a4fdb9326aab4a5a477a1640e5ad786a8495901009d7e7b038371edd23a9d2b", size = 192206, upload-time = "2026-05-22T14:48:44.858Z" }, + { url = "https://files.pythonhosted.org/packages/df/46/3eea8cde077d985f239a38c0257087b8064fd9ee9b1a99e282d2c86da4ef/wrapt-2.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c8cc5094b08abeae52da9c73c8a32003623be691a5193df2f4e3eac3d557c394", size = 198428, upload-time = "2026-05-22T14:48:46.319Z" }, + { url = "https://files.pythonhosted.org/packages/18/dc/b927ee9c7fc67adc3a5658f246a0d275425eb840ba36e7b702e70f18bde8/wrapt-2.2.1-cp313-cp313t-win32.whl", hash = "sha256:9907a4402ab6db12b7077a0ea5d7a4d028ecb22c8eee2b53527080d347cd1562", size = 79448, upload-time = "2026-05-22T14:48:47.901Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b3/fd30b473fe498c70e6b9a5f328b8d3fbaf1b8c3c481465f59724bba8eb70/wrapt-2.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:5590d63f5243251641cf543009b4c9314a79d0598fdb8a8e4cfc918494536c53", size = 83021, upload-time = "2026-05-22T14:48:49.201Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f3/96c39153a8737a6e9aa85adef254ac4195bea3f2d24efc60472ccc3c9e2e/wrapt-2.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:c318a64b53d97b841d7b5e637517e50a27be64bc695128422953d4b21710954e", size = 80295, upload-time = "2026-05-22T14:48:50.479Z" }, + { url = "https://files.pythonhosted.org/packages/0a/a3/11d7f34ebbf3231bc907a3e6d5ee051b14d034c1bc7b65a97d5cc00516df/wrapt-2.2.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6f56a647e4eaf5f0ca40330fb070f566bdf9f7b0db89a1af20d71c28dcd7a0ab", size = 80879, upload-time = "2026-05-22T14:48:51.802Z" }, + { url = "https://files.pythonhosted.org/packages/13/3c/b74cfd984cef560b900fb1a727af20352d89e1f06bf2e1114dd3f00f5f5a/wrapt-2.2.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:64b7deeda4b70408e382328d8bbe52a256fe9bc63ae3db86d804608367e5422c", size = 81462, upload-time = "2026-05-22T14:48:53.18Z" }, + { url = "https://files.pythonhosted.org/packages/15/a3/7c8f704b8dc07dfe0a5d01c2edbfd88317aa8e5e3fa7c743eb7a085ae767/wrapt-2.2.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b9cf53ba90717db2e292401de290776c498d4bbfb0d4a559ca2895db8b9dcb5c", size = 167251, upload-time = "2026-05-22T14:48:54.562Z" }, + { url = "https://files.pythonhosted.org/packages/80/85/a34d1888d97247da6c2ff6118c3a721c73ed8cc4dd198c00208bb73b6f80/wrapt-2.2.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cf3638274ab9d9b724c9baa0b4c04e132cd6faefb78b4dd3dd1a02a4bdaad41e", size = 166316, upload-time = "2026-05-22T14:48:56.065Z" }, + { url = "https://files.pythonhosted.org/packages/e9/d7/72ffaeb01eebc704afe3fb99e840480f4bda45f0fa66e3381b6a39251c8f/wrapt-2.2.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aed9658797d0b45d6c49adcfc6b41f66e6f2d0c6de3ec79e16cf4b1855df240f", size = 157952, upload-time = "2026-05-22T14:48:57.924Z" }, + { url = "https://files.pythonhosted.org/packages/24/5b/36f5d6b024e4edfdd90b140742d11ebcf7836daf5c9daf326c55c24db412/wrapt-2.2.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1d676ee388bc42a04d56dd7deb5605244dac2e35cc2fadbb43c9fa25bbd93508", size = 166130, upload-time = "2026-05-22T14:48:59.384Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/9296d9e97bfdef5483dfcc859d57b095b257144b2bc5300ab521e06f4bc7/wrapt-2.2.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e395f7bc31851ef9b612050368cb446e9bc14cd7454b025018980349caf25ae5", size = 156604, upload-time = "2026-05-22T14:49:00.921Z" }, + { url = "https://files.pythonhosted.org/packages/53/37/16953929ed6776175720e58fc966e779926d8d71e2c7b2273230590ca71f/wrapt-2.2.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5f1845c2a8cc1180ccccfa45785dd06f562730d19ef75be180334254012b6283", size = 166007, upload-time = "2026-05-22T14:49:02.332Z" }, + { url = "https://files.pythonhosted.org/packages/b9/73/20ee58c0612dae7c31131a7095345812ed2c7b389019e175f68cde34e5b4/wrapt-2.2.1-cp314-cp314-win32.whl", hash = "sha256:436addbc4bb4fc0a88c702577f51195d7d73683a7f3e0e5b253d8404d7847243", size = 78327, upload-time = "2026-05-22T14:49:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/22/b3/ef7c3295d02e0448a71c639a36a057f46d524d057c9486291a7a3039e65c/wrapt-2.2.1-cp314-cp314-win_amd64.whl", hash = "sha256:50972a1d974ea07725a7f6b1cec5f8759008afd030a0024843ebe7d52de47f2b", size = 81144, upload-time = "2026-05-22T14:49:05.093Z" }, + { url = "https://files.pythonhosted.org/packages/ac/dc/7bdf336953f99f4ceb0a584bb8870e42c8f26f93ea10c87834dad62f1668/wrapt-2.2.1-cp314-cp314-win_arm64.whl", hash = "sha256:1c9934ea5d92957e3cd0adbc0845539dccfd62710ebe16195a8c66c53954db36", size = 79569, upload-time = "2026-05-22T14:49:06.413Z" }, + { url = "https://files.pythonhosted.org/packages/6a/6d/6dfae80150ff1919c356d1dd528f049bcdfaae29b4d284bc957e022caef4/wrapt-2.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:17de18fc12cea55b8a9587314cb830573e37fb33b247a7515696350863714188", size = 82892, upload-time = "2026-05-22T14:49:07.925Z" }, + { url = "https://files.pythonhosted.org/packages/82/7b/4e34766a7d7804ffce9e71befe47e9b3225dc350c49c94493c4ab39fd3a5/wrapt-2.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a9dec1aca52dddde7df94818310fa2fe79739c8f385b2014c4cb1035f5508199", size = 83333, upload-time = "2026-05-22T14:49:09.257Z" }, + { url = "https://files.pythonhosted.org/packages/9d/57/0b34db3e8de44ccfece62d7b337abd1631dd810f5adc5f3db571727836b5/wrapt-2.2.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:69f2e9244542cb34dd59c7f073445b9e54ad9f3fce8d93606c368a1b499fc413", size = 202899, upload-time = "2026-05-22T14:49:10.572Z" }, + { url = "https://files.pythonhosted.org/packages/e5/45/ac0c459f154b99d92789a6cba7ca727185b83513b986f8ec7fe2aacddcbf/wrapt-2.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d83966dc7f4f45e8b97b5933685ac2e6e67fc0e19246ea314bceb9a8970c956", size = 209986, upload-time = "2026-05-22T14:49:12.229Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e4/77e37ff33ad018fa81ade52c25fa327b80b56f81d734279a63614fcb4cbc/wrapt-2.2.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:78b0aa6bfb7be8deed0ab23e7aa028cc5210c29bc2d32a04d52b50e517a7307e", size = 194893, upload-time = "2026-05-22T14:49:14.139Z" }, + { url = "https://files.pythonhosted.org/packages/dd/9d/7ea651d1ab032fc5fa222fbec91d0f8a1397f6ae04ebb93fa7219aa921d7/wrapt-2.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:05d5cb74d1b232ec8cfa130a8f900708699ff2491d97b8f85a4cdc5996294b85", size = 205636, upload-time = "2026-05-22T14:49:15.714Z" }, + { url = "https://files.pythonhosted.org/packages/09/af/8e88031a701275b9085c54e64bc88c0b1cd55c77eadd400691c371cd76c4/wrapt-2.2.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f6518b94edb9150452e9aba08027d4cc293433753ec1fbefb4629a21cbc74181", size = 192267, upload-time = "2026-05-22T14:49:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/bf/a8/e657ca876b06710194f243d81c4b0896ade646e244bdbec2d87c8c56a8bd/wrapt-2.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ed55af48b3eb28f43228ca2306788892bcb629eb2b5c4876e2a3659872c2f17a", size = 198378, upload-time = "2026-05-22T14:49:18.785Z" }, + { url = "https://files.pythonhosted.org/packages/c8/59/822efe4ea722a3961331bfa35b7d90937790d2c20f0616de1997ccc3aebd/wrapt-2.2.1-cp314-cp314t-win32.whl", hash = "sha256:2e08688ab16525897da6589d56d0aebaf417bbe91c2d8e3b96203b1efa596e85", size = 80226, upload-time = "2026-05-22T14:49:20.264Z" }, + { url = "https://files.pythonhosted.org/packages/ab/31/2a7dc5f6abb2fca0b6e1610e120419f603650aceb4f1d3ac4cae0354e162/wrapt-2.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:fd0135d34387f5fd087d9be368ea77ea89cf2451dc1cd1c622d35021bcb3ab50", size = 83835, upload-time = "2026-05-22T14:49:21.634Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c0/782b86e28d1ceebeb74cccea12d2cd3d2ba0bd68e3dec20b1bc5873f6127/wrapt-2.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:f70db64e8266d7c45d3b735f2e08eeb434b5e03da9a479ae42b2e2e486a21a00", size = 80722, upload-time = "2026-05-22T14:49:23.59Z" }, + { url = "https://files.pythonhosted.org/packages/53/46/29ac9daf11a86c22a8c38cd9236c62928ccae83f7ceb06bd3b0467cf9d05/wrapt-2.2.1-py3-none-any.whl", hash = "sha256:3aafea2975caef8ca49400640dde02cc7426e798f24870ed01f490bc3cffd32f", size = 61000, upload-time = "2026-05-22T14:49:41.593Z" }, ] [[package]] @@ -9508,189 +5317,143 @@ wheels = [ [[package]] name = "xxhash" -version = "3.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/02/84/30869e01909fb37a6cc7e18688ee8bf1e42d57e7e0777636bd47524c43c7/xxhash-3.6.0.tar.gz", hash = "sha256:f0162a78b13a0d7617b2845b90c763339d1f1d82bb04a4b07f4ab535cc5e05d6", size = 85160, upload-time = "2025-10-02T14:37:08.097Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/07/d9412f3d7d462347e4511181dea65e47e0d0e16e26fbee2ea86a2aefb657/xxhash-3.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:01362c4331775398e7bb34e3ab403bc9ee9f7c497bc7dee6272114055277dd3c", size = 32744, upload-time = "2025-10-02T14:34:34.622Z" }, - { url = "https://files.pythonhosted.org/packages/79/35/0429ee11d035fc33abe32dca1b2b69e8c18d236547b9a9b72c1929189b9a/xxhash-3.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7b2df81a23f8cb99656378e72501b2cb41b1827c0f5a86f87d6b06b69f9f204", size = 30816, upload-time = "2025-10-02T14:34:36.043Z" }, - { url = "https://files.pythonhosted.org/packages/b7/f2/57eb99aa0f7d98624c0932c5b9a170e1806406cdbcdb510546634a1359e0/xxhash-3.6.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:dc94790144e66b14f67b10ac8ed75b39ca47536bf8800eb7c24b50271ea0c490", size = 194035, upload-time = "2025-10-02T14:34:37.354Z" }, - { url = "https://files.pythonhosted.org/packages/4c/ed/6224ba353690d73af7a3f1c7cdb1fc1b002e38f783cb991ae338e1eb3d79/xxhash-3.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93f107c673bccf0d592cdba077dedaf52fe7f42dcd7676eba1f6d6f0c3efffd2", size = 212914, upload-time = "2025-10-02T14:34:38.6Z" }, - { url = "https://files.pythonhosted.org/packages/38/86/fb6b6130d8dd6b8942cc17ab4d90e223653a89aa32ad2776f8af7064ed13/xxhash-3.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aa5ee3444c25b69813663c9f8067dcfaa2e126dc55e8dddf40f4d1c25d7effa", size = 212163, upload-time = "2025-10-02T14:34:39.872Z" }, - { url = "https://files.pythonhosted.org/packages/ee/dc/e84875682b0593e884ad73b2d40767b5790d417bde603cceb6878901d647/xxhash-3.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7f99123f0e1194fa59cc69ad46dbae2e07becec5df50a0509a808f90a0f03f0", size = 445411, upload-time = "2025-10-02T14:34:41.569Z" }, - { url = "https://files.pythonhosted.org/packages/11/4f/426f91b96701ec2f37bb2b8cec664eff4f658a11f3fa9d94f0a887ea6d2b/xxhash-3.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49e03e6fe2cac4a1bc64952dd250cf0dbc5ef4ebb7b8d96bce82e2de163c82a2", size = 193883, upload-time = "2025-10-02T14:34:43.249Z" }, - { url = "https://files.pythonhosted.org/packages/53/5a/ddbb83eee8e28b778eacfc5a85c969673e4023cdeedcfcef61f36731610b/xxhash-3.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bd17fede52a17a4f9a7bc4472a5867cb0b160deeb431795c0e4abe158bc784e9", size = 210392, upload-time = "2025-10-02T14:34:45.042Z" }, - { url = "https://files.pythonhosted.org/packages/1e/c2/ff69efd07c8c074ccdf0a4f36fcdd3d27363665bcdf4ba399abebe643465/xxhash-3.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6fb5f5476bef678f69db04f2bd1efbed3030d2aba305b0fc1773645f187d6a4e", size = 197898, upload-time = "2025-10-02T14:34:46.302Z" }, - { url = "https://files.pythonhosted.org/packages/58/ca/faa05ac19b3b622c7c9317ac3e23954187516298a091eb02c976d0d3dd45/xxhash-3.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:843b52f6d88071f87eba1631b684fcb4b2068cd2180a0224122fe4ef011a9374", size = 210655, upload-time = "2025-10-02T14:34:47.571Z" }, - { url = "https://files.pythonhosted.org/packages/d4/7a/06aa7482345480cc0cb597f5c875b11a82c3953f534394f620b0be2f700c/xxhash-3.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7d14a6cfaf03b1b6f5f9790f76880601ccc7896aff7ab9cd8978a939c1eb7e0d", size = 414001, upload-time = "2025-10-02T14:34:49.273Z" }, - { url = "https://files.pythonhosted.org/packages/23/07/63ffb386cd47029aa2916b3d2f454e6cc5b9f5c5ada3790377d5430084e7/xxhash-3.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:418daf3db71e1413cfe211c2f9a528456936645c17f46b5204705581a45390ae", size = 191431, upload-time = "2025-10-02T14:34:50.798Z" }, - { url = "https://files.pythonhosted.org/packages/0f/93/14fde614cadb4ddf5e7cebf8918b7e8fac5ae7861c1875964f17e678205c/xxhash-3.6.0-cp312-cp312-win32.whl", hash = "sha256:50fc255f39428a27299c20e280d6193d8b63b8ef8028995323bf834a026b4fbb", size = 30617, upload-time = "2025-10-02T14:34:51.954Z" }, - { url = "https://files.pythonhosted.org/packages/13/5d/0d125536cbe7565a83d06e43783389ecae0c0f2ed037b48ede185de477c0/xxhash-3.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:c0f2ab8c715630565ab8991b536ecded9416d615538be8ecddce43ccf26cbc7c", size = 31534, upload-time = "2025-10-02T14:34:53.276Z" }, - { url = "https://files.pythonhosted.org/packages/54/85/6ec269b0952ec7e36ba019125982cf11d91256a778c7c3f98a4c5043d283/xxhash-3.6.0-cp312-cp312-win_arm64.whl", hash = "sha256:eae5c13f3bc455a3bbb68bdc513912dc7356de7e2280363ea235f71f54064829", size = 27876, upload-time = "2025-10-02T14:34:54.371Z" }, - { url = "https://files.pythonhosted.org/packages/33/76/35d05267ac82f53ae9b0e554da7c5e281ee61f3cad44c743f0fcd354f211/xxhash-3.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:599e64ba7f67472481ceb6ee80fa3bd828fd61ba59fb11475572cc5ee52b89ec", size = 32738, upload-time = "2025-10-02T14:34:55.839Z" }, - { url = "https://files.pythonhosted.org/packages/31/a8/3fbce1cd96534a95e35d5120637bf29b0d7f5d8fa2f6374e31b4156dd419/xxhash-3.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7d8b8aaa30fca4f16f0c84a5c8d7ddee0e25250ec2796c973775373257dde8f1", size = 30821, upload-time = "2025-10-02T14:34:57.219Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ea/d387530ca7ecfa183cb358027f1833297c6ac6098223fd14f9782cd0015c/xxhash-3.6.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d597acf8506d6e7101a4a44a5e428977a51c0fadbbfd3c39650cca9253f6e5a6", size = 194127, upload-time = "2025-10-02T14:34:59.21Z" }, - { url = "https://files.pythonhosted.org/packages/ba/0c/71435dcb99874b09a43b8d7c54071e600a7481e42b3e3ce1eb5226a5711a/xxhash-3.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:858dc935963a33bc33490128edc1c12b0c14d9c7ebaa4e387a7869ecc4f3e263", size = 212975, upload-time = "2025-10-02T14:35:00.816Z" }, - { url = "https://files.pythonhosted.org/packages/84/7a/c2b3d071e4bb4a90b7057228a99b10d51744878f4a8a6dd643c8bd897620/xxhash-3.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba284920194615cb8edf73bf52236ce2e1664ccd4a38fdb543506413529cc546", size = 212241, upload-time = "2025-10-02T14:35:02.207Z" }, - { url = "https://files.pythonhosted.org/packages/81/5f/640b6eac0128e215f177df99eadcd0f1b7c42c274ab6a394a05059694c5a/xxhash-3.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4b54219177f6c6674d5378bd862c6aedf64725f70dd29c472eaae154df1a2e89", size = 445471, upload-time = "2025-10-02T14:35:03.61Z" }, - { url = "https://files.pythonhosted.org/packages/5e/1e/3c3d3ef071b051cc3abbe3721ffb8365033a172613c04af2da89d5548a87/xxhash-3.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42c36dd7dbad2f5238950c377fcbf6811b1cdb1c444fab447960030cea60504d", size = 193936, upload-time = "2025-10-02T14:35:05.013Z" }, - { url = "https://files.pythonhosted.org/packages/2c/bd/4a5f68381939219abfe1c22a9e3a5854a4f6f6f3c4983a87d255f21f2e5d/xxhash-3.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f22927652cba98c44639ffdc7aaf35828dccf679b10b31c4ad72a5b530a18eb7", size = 210440, upload-time = "2025-10-02T14:35:06.239Z" }, - { url = "https://files.pythonhosted.org/packages/eb/37/b80fe3d5cfb9faff01a02121a0f4d565eb7237e9e5fc66e73017e74dcd36/xxhash-3.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b45fad44d9c5c119e9c6fbf2e1c656a46dc68e280275007bbfd3d572b21426db", size = 197990, upload-time = "2025-10-02T14:35:07.735Z" }, - { url = "https://files.pythonhosted.org/packages/d7/fd/2c0a00c97b9e18f72e1f240ad4e8f8a90fd9d408289ba9c7c495ed7dc05c/xxhash-3.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6f2580ffab1a8b68ef2b901cde7e55fa8da5e4be0977c68f78fc80f3c143de42", size = 210689, upload-time = "2025-10-02T14:35:09.438Z" }, - { url = "https://files.pythonhosted.org/packages/93/86/5dd8076a926b9a95db3206aba20d89a7fc14dd5aac16e5c4de4b56033140/xxhash-3.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:40c391dd3cd041ebc3ffe6f2c862f402e306eb571422e0aa918d8070ba31da11", size = 414068, upload-time = "2025-10-02T14:35:11.162Z" }, - { url = "https://files.pythonhosted.org/packages/af/3c/0bb129170ee8f3650f08e993baee550a09593462a5cddd8e44d0011102b1/xxhash-3.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f205badabde7aafd1a31e8ca2a3e5a763107a71c397c4481d6a804eb5063d8bd", size = 191495, upload-time = "2025-10-02T14:35:12.971Z" }, - { url = "https://files.pythonhosted.org/packages/e9/3a/6797e0114c21d1725e2577508e24006fd7ff1d8c0c502d3b52e45c1771d8/xxhash-3.6.0-cp313-cp313-win32.whl", hash = "sha256:2577b276e060b73b73a53042ea5bd5203d3e6347ce0d09f98500f418a9fcf799", size = 30620, upload-time = "2025-10-02T14:35:14.129Z" }, - { url = "https://files.pythonhosted.org/packages/86/15/9bc32671e9a38b413a76d24722a2bf8784a132c043063a8f5152d390b0f9/xxhash-3.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:757320d45d2fbcce8f30c42a6b2f47862967aea7bf458b9625b4bbe7ee390392", size = 31542, upload-time = "2025-10-02T14:35:15.21Z" }, - { url = "https://files.pythonhosted.org/packages/39/c5/cc01e4f6188656e56112d6a8e0dfe298a16934b8c47a247236549a3f7695/xxhash-3.6.0-cp313-cp313-win_arm64.whl", hash = "sha256:457b8f85dec5825eed7b69c11ae86834a018b8e3df5e77783c999663da2f96d6", size = 27880, upload-time = "2025-10-02T14:35:16.315Z" }, - { url = "https://files.pythonhosted.org/packages/f3/30/25e5321c8732759e930c555176d37e24ab84365482d257c3b16362235212/xxhash-3.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a42e633d75cdad6d625434e3468126c73f13f7584545a9cf34e883aa1710e702", size = 32956, upload-time = "2025-10-02T14:35:17.413Z" }, - { url = "https://files.pythonhosted.org/packages/9f/3c/0573299560d7d9f8ab1838f1efc021a280b5ae5ae2e849034ef3dee18810/xxhash-3.6.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:568a6d743219e717b07b4e03b0a828ce593833e498c3b64752e0f5df6bfe84db", size = 31072, upload-time = "2025-10-02T14:35:18.844Z" }, - { url = "https://files.pythonhosted.org/packages/7a/1c/52d83a06e417cd9d4137722693424885cc9878249beb3a7c829e74bf7ce9/xxhash-3.6.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bec91b562d8012dae276af8025a55811b875baace6af510412a5e58e3121bc54", size = 196409, upload-time = "2025-10-02T14:35:20.31Z" }, - { url = "https://files.pythonhosted.org/packages/e3/8e/c6d158d12a79bbd0b878f8355432075fc82759e356ab5a111463422a239b/xxhash-3.6.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78e7f2f4c521c30ad5e786fdd6bae89d47a32672a80195467b5de0480aa97b1f", size = 215736, upload-time = "2025-10-02T14:35:21.616Z" }, - { url = "https://files.pythonhosted.org/packages/bc/68/c4c80614716345d55071a396cf03d06e34b5f4917a467faf43083c995155/xxhash-3.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3ed0df1b11a79856df5ffcab572cbd6b9627034c1c748c5566fa79df9048a7c5", size = 214833, upload-time = "2025-10-02T14:35:23.32Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e9/ae27c8ffec8b953efa84c7c4a6c6802c263d587b9fc0d6e7cea64e08c3af/xxhash-3.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0e4edbfc7d420925b0dd5e792478ed393d6e75ff8fc219a6546fb446b6a417b1", size = 448348, upload-time = "2025-10-02T14:35:25.111Z" }, - { url = "https://files.pythonhosted.org/packages/d7/6b/33e21afb1b5b3f46b74b6bd1913639066af218d704cc0941404ca717fc57/xxhash-3.6.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fba27a198363a7ef87f8c0f6b171ec36b674fe9053742c58dd7e3201c1ab30ee", size = 196070, upload-time = "2025-10-02T14:35:26.586Z" }, - { url = "https://files.pythonhosted.org/packages/96/b6/fcabd337bc5fa624e7203aa0fa7d0c49eed22f72e93229431752bddc83d9/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:794fe9145fe60191c6532fa95063765529770edcdd67b3d537793e8004cabbfd", size = 212907, upload-time = "2025-10-02T14:35:28.087Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d3/9ee6160e644d660fcf176c5825e61411c7f62648728f69c79ba237250143/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6105ef7e62b5ac73a837778efc331a591d8442f8ef5c7e102376506cb4ae2729", size = 200839, upload-time = "2025-10-02T14:35:29.857Z" }, - { url = "https://files.pythonhosted.org/packages/0d/98/e8de5baa5109394baf5118f5e72ab21a86387c4f89b0e77ef3e2f6b0327b/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f01375c0e55395b814a679b3eea205db7919ac2af213f4a6682e01220e5fe292", size = 213304, upload-time = "2025-10-02T14:35:31.222Z" }, - { url = "https://files.pythonhosted.org/packages/7b/1d/71056535dec5c3177eeb53e38e3d367dd1d16e024e63b1cee208d572a033/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:d706dca2d24d834a4661619dcacf51a75c16d65985718d6a7d73c1eeeb903ddf", size = 416930, upload-time = "2025-10-02T14:35:32.517Z" }, - { url = "https://files.pythonhosted.org/packages/dc/6c/5cbde9de2cd967c322e651c65c543700b19e7ae3e0aae8ece3469bf9683d/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f059d9faeacd49c0215d66f4056e1326c80503f51a1532ca336a385edadd033", size = 193787, upload-time = "2025-10-02T14:35:33.827Z" }, - { url = "https://files.pythonhosted.org/packages/19/fa/0172e350361d61febcea941b0cc541d6e6c8d65d153e85f850a7b256ff8a/xxhash-3.6.0-cp313-cp313t-win32.whl", hash = "sha256:1244460adc3a9be84731d72b8e80625788e5815b68da3da8b83f78115a40a7ec", size = 30916, upload-time = "2025-10-02T14:35:35.107Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e6/e8cf858a2b19d6d45820f072eff1bea413910592ff17157cabc5f1227a16/xxhash-3.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b1e420ef35c503869c4064f4a2f2b08ad6431ab7b229a05cce39d74268bca6b8", size = 31799, upload-time = "2025-10-02T14:35:36.165Z" }, - { url = "https://files.pythonhosted.org/packages/56/15/064b197e855bfb7b343210e82490ae672f8bc7cdf3ddb02e92f64304ee8a/xxhash-3.6.0-cp313-cp313t-win_arm64.whl", hash = "sha256:ec44b73a4220623235f67a996c862049f375df3b1052d9899f40a6382c32d746", size = 28044, upload-time = "2025-10-02T14:35:37.195Z" }, - { url = "https://files.pythonhosted.org/packages/7e/5e/0138bc4484ea9b897864d59fce9be9086030825bc778b76cb5a33a906d37/xxhash-3.6.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a40a3d35b204b7cc7643cbcf8c9976d818cb47befcfac8bbefec8038ac363f3e", size = 32754, upload-time = "2025-10-02T14:35:38.245Z" }, - { url = "https://files.pythonhosted.org/packages/18/d7/5dac2eb2ec75fd771957a13e5dda560efb2176d5203f39502a5fc571f899/xxhash-3.6.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a54844be970d3fc22630b32d515e79a90d0a3ddb2644d8d7402e3c4c8da61405", size = 30846, upload-time = "2025-10-02T14:35:39.6Z" }, - { url = "https://files.pythonhosted.org/packages/fe/71/8bc5be2bb00deb5682e92e8da955ebe5fa982da13a69da5a40a4c8db12fb/xxhash-3.6.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:016e9190af8f0a4e3741343777710e3d5717427f175adfdc3e72508f59e2a7f3", size = 194343, upload-time = "2025-10-02T14:35:40.69Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3b/52badfb2aecec2c377ddf1ae75f55db3ba2d321c5e164f14461c90837ef3/xxhash-3.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f6f72232f849eb9d0141e2ebe2677ece15adfd0fa599bc058aad83c714bb2c6", size = 213074, upload-time = "2025-10-02T14:35:42.29Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2b/ae46b4e9b92e537fa30d03dbc19cdae57ed407e9c26d163895e968e3de85/xxhash-3.6.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:63275a8aba7865e44b1813d2177e0f5ea7eadad3dd063a21f7cf9afdc7054063", size = 212388, upload-time = "2025-10-02T14:35:43.929Z" }, - { url = "https://files.pythonhosted.org/packages/f5/80/49f88d3afc724b4ac7fbd664c8452d6db51b49915be48c6982659e0e7942/xxhash-3.6.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cd01fa2aa00d8b017c97eb46b9a794fbdca53fc14f845f5a328c71254b0abb7", size = 445614, upload-time = "2025-10-02T14:35:45.216Z" }, - { url = "https://files.pythonhosted.org/packages/ed/ba/603ce3961e339413543d8cd44f21f2c80e2a7c5cfe692a7b1f2cccf58f3c/xxhash-3.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0226aa89035b62b6a86d3c68df4d7c1f47a342b8683da2b60cedcddb46c4d95b", size = 194024, upload-time = "2025-10-02T14:35:46.959Z" }, - { url = "https://files.pythonhosted.org/packages/78/d1/8e225ff7113bf81545cfdcd79eef124a7b7064a0bba53605ff39590b95c2/xxhash-3.6.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c6e193e9f56e4ca4923c61238cdaced324f0feac782544eb4c6d55ad5cc99ddd", size = 210541, upload-time = "2025-10-02T14:35:48.301Z" }, - { url = "https://files.pythonhosted.org/packages/6f/58/0f89d149f0bad89def1a8dd38feb50ccdeb643d9797ec84707091d4cb494/xxhash-3.6.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:9176dcaddf4ca963d4deb93866d739a343c01c969231dbe21680e13a5d1a5bf0", size = 198305, upload-time = "2025-10-02T14:35:49.584Z" }, - { url = "https://files.pythonhosted.org/packages/11/38/5eab81580703c4df93feb5f32ff8fa7fe1e2c51c1f183ee4e48d4bb9d3d7/xxhash-3.6.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c1ce4009c97a752e682b897aa99aef84191077a9433eb237774689f14f8ec152", size = 210848, upload-time = "2025-10-02T14:35:50.877Z" }, - { url = "https://files.pythonhosted.org/packages/5e/6b/953dc4b05c3ce678abca756416e4c130d2382f877a9c30a20d08ee6a77c0/xxhash-3.6.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:8cb2f4f679b01513b7adbb9b1b2f0f9cdc31b70007eaf9d59d0878809f385b11", size = 414142, upload-time = "2025-10-02T14:35:52.15Z" }, - { url = "https://files.pythonhosted.org/packages/08/a9/238ec0d4e81a10eb5026d4a6972677cbc898ba6c8b9dbaec12ae001b1b35/xxhash-3.6.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:653a91d7c2ab54a92c19ccf43508b6a555440b9be1bc8be553376778be7f20b5", size = 191547, upload-time = "2025-10-02T14:35:53.547Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ee/3cf8589e06c2164ac77c3bf0aa127012801128f1feebf2a079272da5737c/xxhash-3.6.0-cp314-cp314-win32.whl", hash = "sha256:a756fe893389483ee8c394d06b5ab765d96e68fbbfe6fde7aa17e11f5720559f", size = 31214, upload-time = "2025-10-02T14:35:54.746Z" }, - { url = "https://files.pythonhosted.org/packages/02/5d/a19552fbc6ad4cb54ff953c3908bbc095f4a921bc569433d791f755186f1/xxhash-3.6.0-cp314-cp314-win_amd64.whl", hash = "sha256:39be8e4e142550ef69629c9cd71b88c90e9a5db703fecbcf265546d9536ca4ad", size = 32290, upload-time = "2025-10-02T14:35:55.791Z" }, - { url = "https://files.pythonhosted.org/packages/b1/11/dafa0643bc30442c887b55baf8e73353a344ee89c1901b5a5c54a6c17d39/xxhash-3.6.0-cp314-cp314-win_arm64.whl", hash = "sha256:25915e6000338999236f1eb68a02a32c3275ac338628a7eaa5a269c401995679", size = 28795, upload-time = "2025-10-02T14:35:57.162Z" }, - { url = "https://files.pythonhosted.org/packages/2c/db/0e99732ed7f64182aef4a6fb145e1a295558deec2a746265dcdec12d191e/xxhash-3.6.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c5294f596a9017ca5a3e3f8884c00b91ab2ad2933cf288f4923c3fd4346cf3d4", size = 32955, upload-time = "2025-10-02T14:35:58.267Z" }, - { url = "https://files.pythonhosted.org/packages/55/f4/2a7c3c68e564a099becfa44bb3d398810cc0ff6749b0d3cb8ccb93f23c14/xxhash-3.6.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1cf9dcc4ab9cff01dfbba78544297a3a01dafd60f3bde4e2bfd016cf7e4ddc67", size = 31072, upload-time = "2025-10-02T14:35:59.382Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d9/72a29cddc7250e8a5819dad5d466facb5dc4c802ce120645630149127e73/xxhash-3.6.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:01262da8798422d0685f7cef03b2bd3f4f46511b02830861df548d7def4402ad", size = 196579, upload-time = "2025-10-02T14:36:00.838Z" }, - { url = "https://files.pythonhosted.org/packages/63/93/b21590e1e381040e2ca305a884d89e1c345b347404f7780f07f2cdd47ef4/xxhash-3.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51a73fb7cb3a3ead9f7a8b583ffd9b8038e277cdb8cb87cf890e88b3456afa0b", size = 215854, upload-time = "2025-10-02T14:36:02.207Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b8/edab8a7d4fa14e924b29be877d54155dcbd8b80be85ea00d2be3413a9ed4/xxhash-3.6.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b9c6df83594f7df8f7f708ce5ebeacfc69f72c9fbaaababf6cf4758eaada0c9b", size = 214965, upload-time = "2025-10-02T14:36:03.507Z" }, - { url = "https://files.pythonhosted.org/packages/27/67/dfa980ac7f0d509d54ea0d5a486d2bb4b80c3f1bb22b66e6a05d3efaf6c0/xxhash-3.6.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:627f0af069b0ea56f312fd5189001c24578868643203bca1abbc2c52d3a6f3ca", size = 448484, upload-time = "2025-10-02T14:36:04.828Z" }, - { url = "https://files.pythonhosted.org/packages/8c/63/8ffc2cc97e811c0ca5d00ab36604b3ea6f4254f20b7bc658ca825ce6c954/xxhash-3.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aa912c62f842dfd013c5f21a642c9c10cd9f4c4e943e0af83618b4a404d9091a", size = 196162, upload-time = "2025-10-02T14:36:06.182Z" }, - { url = "https://files.pythonhosted.org/packages/4b/77/07f0e7a3edd11a6097e990f6e5b815b6592459cb16dae990d967693e6ea9/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b465afd7909db30168ab62afe40b2fcf79eedc0b89a6c0ab3123515dc0df8b99", size = 213007, upload-time = "2025-10-02T14:36:07.733Z" }, - { url = "https://files.pythonhosted.org/packages/ae/d8/bc5fa0d152837117eb0bef6f83f956c509332ce133c91c63ce07ee7c4873/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:a881851cf38b0a70e7c4d3ce81fc7afd86fbc2a024f4cfb2a97cf49ce04b75d3", size = 200956, upload-time = "2025-10-02T14:36:09.106Z" }, - { url = "https://files.pythonhosted.org/packages/26/a5/d749334130de9411783873e9b98ecc46688dad5db64ca6e04b02acc8b473/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9b3222c686a919a0f3253cfc12bb118b8b103506612253b5baeaac10d8027cf6", size = 213401, upload-time = "2025-10-02T14:36:10.585Z" }, - { url = "https://files.pythonhosted.org/packages/89/72/abed959c956a4bfc72b58c0384bb7940663c678127538634d896b1195c10/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:c5aa639bc113e9286137cec8fadc20e9cd732b2cc385c0b7fa673b84fc1f2a93", size = 417083, upload-time = "2025-10-02T14:36:12.276Z" }, - { url = "https://files.pythonhosted.org/packages/0c/b3/62fd2b586283b7d7d665fb98e266decadf31f058f1cf6c478741f68af0cb/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5c1343d49ac102799905e115aee590183c3921d475356cb24b4de29a4bc56518", size = 193913, upload-time = "2025-10-02T14:36:14.025Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9a/c19c42c5b3f5a4aad748a6d5b4f23df3bed7ee5445accc65a0fb3ff03953/xxhash-3.6.0-cp314-cp314t-win32.whl", hash = "sha256:5851f033c3030dd95c086b4a36a2683c2ff4a799b23af60977188b057e467119", size = 31586, upload-time = "2025-10-02T14:36:15.603Z" }, - { url = "https://files.pythonhosted.org/packages/03/d6/4cc450345be9924fd5dc8c590ceda1db5b43a0a889587b0ae81a95511360/xxhash-3.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0444e7967dac37569052d2409b00a8860c2135cff05502df4da80267d384849f", size = 32526, upload-time = "2025-10-02T14:36:16.708Z" }, - { url = "https://files.pythonhosted.org/packages/0f/c9/7243eb3f9eaabd1a88a5a5acadf06df2d83b100c62684b7425c6a11bcaa8/xxhash-3.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:bb79b1e63f6fd84ec778a4b1916dfe0a7c3fdb986c06addd5db3a0d413819d95", size = 28898, upload-time = "2025-10-02T14:36:17.843Z" }, -] - -[[package]] -name = "yarl" -version = "1.22.0" +version = "3.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/2f/e183a1b407002f5af81822bee18b61cdb94b8670208ef34734d8d2b8ebe9/xxhash-3.7.0.tar.gz", hash = "sha256:6cc4eefbb542a5d6ffd6d70ea9c502957c925e800f998c5630ecc809d6702bae", size = 82022, upload-time = "2026-04-25T11:10:32.553Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/8a/51a14cdef4728c6c2337db8a7d8704422cc65676d9199d77215464c880af/xxhash-3.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:082c87bfdd2b9f457606c7a4a53457f4c4b48b0cdc48de0277f4349d79bb3d7a", size = 33357, upload-time = "2026-04-25T11:06:20.44Z" }, + { url = "https://files.pythonhosted.org/packages/b9/1b/0c2c933809421ffd9bf42b59315552c143c755db5d9a816b2f1ae273e884/xxhash-3.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5e7ce913b61f35b0c1c839a49ac9c8e75dd8d860150688aed353b0ce1bf409d8", size = 30869, upload-time = "2026-04-25T11:06:21.989Z" }, + { url = "https://files.pythonhosted.org/packages/03/a8/89d5fdd6ee12d70ba99451de46dd0e8010167468dcd913ec855653f4dd50/xxhash-3.7.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3beb1de3b1e9694fcdd853e570ee64c631c7062435d2f8c69c1adf809bc086f0", size = 194100, upload-time = "2026-04-25T11:06:23.586Z" }, + { url = "https://files.pythonhosted.org/packages/87/ee/2f9f2ed993e77206d1e66991290a1ebe22e843351ca3ebec8e49e01ba186/xxhash-3.7.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3e7b689c3bce16699efcf736066f5c6cc4472c3840fe4b22bd8279daf4abdac", size = 212977, upload-time = "2026-04-25T11:06:25.019Z" }, + { url = "https://files.pythonhosted.org/packages/de/60/5a91644615a9e9d4e42c2e9925f1908e3a24e4e691d9de7340d565bea024/xxhash-3.7.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a6545e6b409e3d5cbafc850fb84c55a1ca26ed15a6b11e3bf07a0e0cd84517c8", size = 236373, upload-time = "2026-04-25T11:06:26.482Z" }, + { url = "https://files.pythonhosted.org/packages/22/c0/f3a9384eaaed9d14d4d062a5d953aa0da489bfe9747877aa994caa87cd0b/xxhash-3.7.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:31ab1461c77a11461d703c88eb949e132a1c6515933cf675d97ec680f4bd18de", size = 212229, upload-time = "2026-04-25T11:06:28.065Z" }, + { url = "https://files.pythonhosted.org/packages/2e/67/02f07a9fd79726804190f2172c4894c3ed9a4ebccaca05653c84beb58025/xxhash-3.7.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7c4d596b7676f811172687ec567cbafb9e4dea2f9be1bbb4f622410cb7f40f40", size = 445462, upload-time = "2026-04-25T11:06:30.048Z" }, + { url = "https://files.pythonhosted.org/packages/40/37/558f5a90c0672fc9b4402dc25d87ac5b7406616e8969430c9ca4e52ee74d/xxhash-3.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13805f0461cba0a857924e70ff91ae6d52d2598f79a884e788db80532614a4a1", size = 193932, upload-time = "2026-04-25T11:06:31.857Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/aaa09cd58661d32044dbbad7df55bbe22a623032b810e7ed3b8c569a2a6f/xxhash-3.7.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d398f372496152f1c6933a33566373f8d1b37b98b8c9d608fa6edc0976f23b2", size = 284807, upload-time = "2026-04-25T11:06:33.697Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f3/53df3719ab127a02c174f0c1c74924fcd110866e89c966bc7909cfa8fa84/xxhash-3.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d610aa62cdb7d4d497740741772a24a794903bf3e79eaa51d2e800082abe11e5", size = 210445, upload-time = "2026-04-25T11:06:35.488Z" }, + { url = "https://files.pythonhosted.org/packages/72/33/d219975c0e8b6fa2eb9ccd486fe47e21bf1847985b878dd2fbc3126e0d5c/xxhash-3.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:073c23900a9fbf3d26616c17c830db28af9803677cd5b33aea3224d824111514", size = 241273, upload-time = "2026-04-25T11:06:37.24Z" }, + { url = "https://files.pythonhosted.org/packages/3e/50/49b1afe610eb3964cedcb90a4d4c3d46a261ee8669cbd4f060652619ae3c/xxhash-3.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:418a463c3e6a590c0cdc890f8be19adb44a8c8acd175ca5b2a6de77e61d0b386", size = 197950, upload-time = "2026-04-25T11:06:39.148Z" }, + { url = "https://files.pythonhosted.org/packages/c6/75/5f42a1a4c78717d906a4b6a140c6dbf837ab1f547a54d23c4e2903310936/xxhash-3.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:03f8ff4474ee61c845758ce00711d7087a770d77efb36f7e74a6e867301000b8", size = 210709, upload-time = "2026-04-25T11:06:40.958Z" }, + { url = "https://files.pythonhosted.org/packages/8a/85/237e446c25abced71e9c53d269f2cef5bab8a82b3f88a12e00c5368e7368/xxhash-3.7.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:44fba4a5f1d179b7ddc7b3dc40f56f9209046421679b57025d4d8821b376fd8d", size = 275345, upload-time = "2026-04-25T11:06:42.525Z" }, + { url = "https://files.pythonhosted.org/packages/62/34/c2c26c0a6a9cc739bc2a5f0ae03ba8b87deb12b8bce35f7ac495e790dc6d/xxhash-3.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31e3516a0f829d06ded4a2c0f3c7c5561993256bfa1c493975fb9dc7bfa828a1", size = 414056, upload-time = "2026-04-25T11:06:44.343Z" }, + { url = "https://files.pythonhosted.org/packages/a0/aa/5c58e9bc8071b8afd8dcf297ff362f723c4892168faba149f19904132bf4/xxhash-3.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b59ee2ac81de57771a09ecad09191e840a1d2fae1ef684208320591055768f83", size = 191485, upload-time = "2026-04-25T11:06:46.262Z" }, + { url = "https://files.pythonhosted.org/packages/d4/69/a929cf9d1e2e65a48b818cdce72cb6b69eab2e6877f21436d0a1942aff43/xxhash-3.7.0-cp312-cp312-win32.whl", hash = "sha256:74bbd92f8c7fcc397ba0a11bfdc106bc72ad7f11e3a60277753f87e7532b4d81", size = 30671, upload-time = "2026-04-25T11:06:48.039Z" }, + { url = "https://files.pythonhosted.org/packages/b9/1b/104b41a8947f4e1d4a66ce1e628eea752f37d1890bfd7453559ca7a3d950/xxhash-3.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:7bd7bc82dd4f185f28f35193c2e968ef46131628e3cac62f639dadf321cba4d1", size = 31514, upload-time = "2026-04-25T11:06:49.279Z" }, + { url = "https://files.pythonhosted.org/packages/98/a0/1fd0ea1f1b886d9e7c73f0397571e22333a7d79e31da6d7127c2a4a71d75/xxhash-3.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:7d7148180ec99ba36585b42c8c5de25e9b40191613bc4be68909b4d25a77a852", size = 27761, upload-time = "2026-04-25T11:06:50.448Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ca/d5174b4c36d10f64d4ca7050563138c5a599efb01a765858ddefc9c1202a/xxhash-3.7.0-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:4b6d6b33f141158692bd4eafbb96edbc5aa0dabdb593a962db01a91983d4f8fa", size = 36813, upload-time = "2026-04-25T11:06:51.73Z" }, + { url = "https://files.pythonhosted.org/packages/41/d0/abc6c9d347ba1f1e1e1d98125d0881a0452c7f9a76a9dd03a7b5d2197f23/xxhash-3.7.0-cp313-cp313-android_21_x86_64.whl", hash = "sha256:845d347df254d6c619f616afa921331bada8614b8d373d58725c663ba97c3605", size = 35121, upload-time = "2026-04-25T11:06:53.048Z" }, + { url = "https://files.pythonhosted.org/packages/bf/11/4cc834eb3d79f2f2b3a6ef7324195208bcdfbdcf7534d2b17267aa5f3a8f/xxhash-3.7.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:fddbbb69a6fff4f421e7a0d1fa28f894b20112e9e3fab306af451e2dfd0e459b", size = 29624, upload-time = "2026-04-25T11:06:54.311Z" }, + { url = "https://files.pythonhosted.org/packages/23/83/e97d3e7b635fe73a1dfb1e91f805324dd6d930bb42041cbf18f183bc0b6d/xxhash-3.7.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:54876a4e45101cec2bf8f31a973cda073a23e2e108538dad224ba07f85f22487", size = 30638, upload-time = "2026-04-25T11:06:55.864Z" }, + { url = "https://files.pythonhosted.org/packages/f4/40/d84951d80c35db1f4c40a29a64a8520eea5d56e764c603906b4fe763580f/xxhash-3.7.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:0c72fe9c7e3d6dfd7f1e21e224a877917fa09c465694ba4e06464b9511b65544", size = 33323, upload-time = "2026-04-25T11:06:57.336Z" }, + { url = "https://files.pythonhosted.org/packages/89/cc/c7dc6558d97e9ab023f663d69ab28b340ed9bf4d2d94f2c259cf896bb354/xxhash-3.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a6d73a830b17ef49bc04e00182bd839164c1b3c59c127cd7c54fcb10c7ed8ee8", size = 33362, upload-time = "2026-04-25T11:06:58.656Z" }, + { url = "https://files.pythonhosted.org/packages/2a/6e/46b84017b1301d54091430353d4ad5901654a3e0871649877a416f7f1644/xxhash-3.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:91c3b07cf3362086d8f126c6aecd8e5e9396ad8b2f2219ea7e49a8250c318acd", size = 30874, upload-time = "2026-04-25T11:06:59.834Z" }, + { url = "https://files.pythonhosted.org/packages/df/5e/8f9158e3ab906ad3fec51e09b5ea0093e769f12207bfa42a368ca204e7ab/xxhash-3.7.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:50e879ebbac351c81565ca108db766d7832f5b8b6a5b14b8c0151f7190028e3d", size = 194185, upload-time = "2026-04-25T11:07:01.658Z" }, + { url = "https://files.pythonhosted.org/packages/f3/29/a804ded9f5d3d3758292678d23e7528b08fda7b7e750688d08b052322475/xxhash-3.7.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:921c14e93817842dd0dd9f372890a0f0c72e534650b6ab13c5be5cd0db11d47e", size = 213033, upload-time = "2026-04-25T11:07:03.606Z" }, + { url = "https://files.pythonhosted.org/packages/8b/91/1ce5a7d2fdc975267320e2c78fc1cecfe7ab735ccbcf6993ec5dd541cb2c/xxhash-3.7.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e64a7c9d7dfca3e0fafcbc5e455519090706a3e36e95d655cec3e04e79f95aaa", size = 236140, upload-time = "2026-04-25T11:07:05.396Z" }, + { url = "https://files.pythonhosted.org/packages/34/04/fd595a4fd8617b05fa27bd9b684ecb4985bfed27917848eea85d54036d06/xxhash-3.7.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2220af08163baf5fa36c2b8af079dc2cbe6e66ae061385267f9472362dfd53c6", size = 212291, upload-time = "2026-04-25T11:07:06.966Z" }, + { url = "https://files.pythonhosted.org/packages/03/fb/f1a379cbc372ae5b9f4ab36154c48a849ca6ebe3ac477067a57865bf3bc6/xxhash-3.7.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f14bb8b22a4a91325813e3d553b8963c10cf8c756cff65ee50c194431296c655", size = 445532, upload-time = "2026-04-25T11:07:08.525Z" }, + { url = "https://files.pythonhosted.org/packages/65/59/172424b79f8cfd4b6d8a122b2193e6b8ad4b11f7159bb3b6f9b3191329bb/xxhash-3.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:496736f86a9bedaf64b0dc70e3539d0766df01c71ea22032698e88f3f04a1ce9", size = 193990, upload-time = "2026-04-25T11:07:10.315Z" }, + { url = "https://files.pythonhosted.org/packages/b9/19/aeac22161d953f139f07ba5586cb4a17c5b7b6dff985122803bb12933500/xxhash-3.7.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0ff71596bd79816975b3de7130ab1ff4541410285a3c084584eeb1c8239996fd", size = 284876, upload-time = "2026-04-25T11:07:12.15Z" }, + { url = "https://files.pythonhosted.org/packages/77/d5/4fd0b59e7a02242953da05ff679fbb961b0a4368eac97a217e11dae110c1/xxhash-3.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1ad86695c19b1d46fe106925db3c7a37f16be37669dcf58dcc70a9dd6e324676", size = 210495, upload-time = "2026-04-25T11:07:13.952Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fb/976a3165c728c7faf74aa1b5ab3cf6a85e6d731612894741840524c7d28c/xxhash-3.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:970f9f8c50961d639cbd0d988c96f80ddf66006de93641719282c4fe7a87c5e6", size = 241331, upload-time = "2026-04-25T11:07:15.557Z" }, + { url = "https://files.pythonhosted.org/packages/4a/2c/6763d5901d53ac9e6ba296e5717ae599025c9d268396e8faa8b4b0a8e0ac/xxhash-3.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5886ad85e9e347911783760a1d16cb6b393e8f9e3b52c982568226cb56927bdc", size = 198037, upload-time = "2026-04-25T11:07:17.563Z" }, + { url = "https://files.pythonhosted.org/packages/61/2b/876e722d533833f5f9a83473e6ba993e48745701096944e77bbecf29b2c3/xxhash-3.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6e934bbae1e0ec74e27d5f0d7f37ef547ce5ff9f0a7e63fb39e559fc99526734", size = 210744, upload-time = "2026-04-25T11:07:19.055Z" }, + { url = "https://files.pythonhosted.org/packages/21/e6/d7e7baef7ce24166b4668d3c48557bb35a23b92ecadcac7e7718d099ab69/xxhash-3.7.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:3b6b3d28228af044ebcded71c4a3dd86e1dbd7e2f4645bf40f7b5da65bb5fb5a", size = 275406, upload-time = "2026-04-25T11:07:20.908Z" }, + { url = "https://files.pythonhosted.org/packages/92/fe/198b3763b2e01ca908f2154969a2352ec99bda892b574a11a9a151c5ede4/xxhash-3.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:6be4d70d9ab76c9f324ead9c01af6ff52c324745ea0c3731682a0cf99720f1fe", size = 414125, upload-time = "2026-04-25T11:07:23.037Z" }, + { url = "https://files.pythonhosted.org/packages/3a/6d/019a11affd5a5499137cacca53808659964785439855b5aa40dfd3412916/xxhash-3.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:151d7520838d4465461a0b7f4ae488b3b00de16183dd3214c1a6b14bf89d7fb6", size = 191555, upload-time = "2026-04-25T11:07:24.991Z" }, + { url = "https://files.pythonhosted.org/packages/76/21/b96d58568df2d01533244c3e0e5cbdd0c8b2b25c4bec4d72f19259a292d7/xxhash-3.7.0-cp313-cp313-win32.whl", hash = "sha256:d798c1e291bffb8e37b5bbe0dda77fc767cd19e89cadaf66e6ed5d0ff88c9fe6", size = 30668, upload-time = "2026-04-25T11:07:26.665Z" }, + { url = "https://files.pythonhosted.org/packages/99/57/d849a8d3afa1f8f4bc6a831cd89f49f9706fbbad94d2975d6140a171988c/xxhash-3.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:875811ba23c543b1a1c3143c926e43996eb27ebb8f52d3500744aa608c275aed", size = 31524, upload-time = "2026-04-25T11:07:27.92Z" }, + { url = "https://files.pythonhosted.org/packages/81/52/bacc753e92dee78b058af8dcef0a50815f5f860986c664a92d75f965b6a5/xxhash-3.7.0-cp313-cp313-win_arm64.whl", hash = "sha256:54a675cb300dda83d71daae2a599389d22db8021a0f8db0dd659e14626eb3ecc", size = 27768, upload-time = "2026-04-25T11:07:29.113Z" }, + { url = "https://files.pythonhosted.org/packages/1c/47/ddbd683b7fc7e592c1a8d9d65f73ce9ab513f082b3967eee2baf549b8fc6/xxhash-3.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a3b19a42111c4057c1547a4a1396a53961dca576a0f6b82bfa88a2d1561764b2", size = 33576, upload-time = "2026-04-25T11:07:30.469Z" }, + { url = "https://files.pythonhosted.org/packages/07/f2/36d3310161db7f72efb4562aadde0ed429f1d0531782dd6345b12d2da527/xxhash-3.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8f4608a06e4d61b7a3425665a46d00e0579122e1a2fae97a0c52953a3aad9aa3", size = 31123, upload-time = "2026-04-25T11:07:31.989Z" }, + { url = "https://files.pythonhosted.org/packages/0d/3f/75937a5c69556ed213021e43cbedd84c8e0279d0d74e7d41a255d84ba4b1/xxhash-3.7.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ad37c7792479e49cf96c1ab25517d7003fe0d93687a772ba19a097d235bbe41e", size = 196491, upload-time = "2026-04-25T11:07:33.358Z" }, + { url = "https://files.pythonhosted.org/packages/22/29/f10d7ff8c7a733d4403a43b9de18c8fabc005f98cec054644f04418659ee/xxhash-3.7.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc026e3b89d98e30a8288c95cb696e77d150b3f0fb7a51f73dcd49ee6b5577fa", size = 215793, upload-time = "2026-04-25T11:07:34.919Z" }, + { url = "https://files.pythonhosted.org/packages/8b/fd/778f60aa295f58907938f030a8b514611f391405614a525cccd2ffc00eb5/xxhash-3.7.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c9b31ab1f28b078a6a1ac1a54eb35e7d5390deddd56870d0be3a0a733d1c321c", size = 237993, upload-time = "2026-04-25T11:07:36.638Z" }, + { url = "https://files.pythonhosted.org/packages/70/f5/736db5de387b4a540e37a05b84b40dc58a1ce974bfd2b4e5754ce29b68c3/xxhash-3.7.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3bb5fd680c038fd5229e44e9c493782f90df9bef632fd0499d442374688ff70b", size = 214887, upload-time = "2026-04-25T11:07:38.564Z" }, + { url = "https://files.pythonhosted.org/packages/4d/aa/09a095f22fdb9a27fbb716841fbff52119721f9ca4261952d07a912f7839/xxhash-3.7.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:030c0fd688fce3569fbb49a2feefd4110cbb0b650186fb4610759ecfac677548", size = 448407, upload-time = "2026-04-25T11:07:40.552Z" }, + { url = "https://files.pythonhosted.org/packages/74/8a/b745efeeca9e34a91c26fdc97ad8514c43d5a81ac78565cba80a1353870a/xxhash-3.7.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b1bde10324f4c31812ae0d0502e92d916ae8917cad7209353f122b8b8f610c3", size = 196119, upload-time = "2026-04-25T11:07:42.101Z" }, + { url = "https://files.pythonhosted.org/packages/8a/5c/0cfceb024af90c191f665c7933b1f318ee234f4797858383bebd1881d52f/xxhash-3.7.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:503722d52a615f2604f5e7611de7d43878df010dc0053094ef91cb9a9ac3d987", size = 286751, upload-time = "2026-04-25T11:07:43.568Z" }, + { url = "https://files.pythonhosted.org/packages/0b/0a/0793e405dc3cf8f4ebe2c1acec1e4e4608cd9e7e50ea691dabbc2a95ccbb/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c72500a3b6d6c30ebfc135035bcace9eb5884f2dc220804efcaaba43e9f611dd", size = 212961, upload-time = "2026-04-25T11:07:45.388Z" }, + { url = "https://files.pythonhosted.org/packages/0c/7e/721118ffc63bfff94aa565bcf2555a820f9f4bdb0f001e0d609bdfad70de/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:43475925a766d01ca8cd9a857fd87f3d50406983c8506a4c07c4df12adcc867f", size = 243703, upload-time = "2026-04-25T11:07:47.053Z" }, + { url = "https://files.pythonhosted.org/packages/6e/18/16f6267160488b8276fd3d449d425712512add292ba545c1b6946bfdb7dd/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8d09dfd2ab135b985daf868b594315ebe11ad86cd9fea46e6c69f19b28f7d25a", size = 200894, upload-time = "2026-04-25T11:07:48.657Z" }, + { url = "https://files.pythonhosted.org/packages/2d/94/80ba841287fd97e3e9cac1d228788c8ef623746f570404961eec748ecb5c/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c50269d0055ac1faecfd559886d2cbe4b730de236585aba0e873f9d9dadbe585", size = 213357, upload-time = "2026-04-25T11:07:50.257Z" }, + { url = "https://files.pythonhosted.org/packages/a1/7e/106d4067130c59f1e18a55ffadcd876d8c68534883a1e02685b29d3d8153/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:1910df4756a5ab58cfad8744fc2d0f23926e3efcc346ee76e87b974abab922f4", size = 277600, upload-time = "2026-04-25T11:07:51.745Z" }, + { url = "https://files.pythonhosted.org/packages/c5/86/a081dd30da71d720b2612a792bfd55e45fa9a07ac76a0507f60487473c25/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:d006faf3b491957efcb433489be3c149efe4787b7063d5cddb8ddaefdc60e0c1", size = 416980, upload-time = "2026-04-25T11:07:53.504Z" }, + { url = "https://files.pythonhosted.org/packages/35/29/1a95221a029a3c1293773869e1ab47b07cbbdd82444a42809e8c60156626/xxhash-3.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:abb65b4e947e958f7b3b0d71db3ce447d1bc5f37f5eab871ce7223bda8768a04", size = 193840, upload-time = "2026-04-25T11:07:55.103Z" }, + { url = "https://files.pythonhosted.org/packages/c5/e0/db909dd0823285de2286f67e10ee4d81e96ad35d7d8e964ecb07fccd8af9/xxhash-3.7.0-cp313-cp313t-win32.whl", hash = "sha256:178959906cb1716a1ce08e0d69c82886c70a15a6f2790fc084fdd146ca30cd49", size = 30966, upload-time = "2026-04-25T11:07:56.524Z" }, + { url = "https://files.pythonhosted.org/packages/7b/ff/d705b15b22f21ee106adce239cb65d35067a158c630b240270f09b17c2e6/xxhash-3.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2524a1e20d4c231d13b50f7cf39e44265b055669a64a7a4b9a2a44faa03f19b6", size = 31784, upload-time = "2026-04-25T11:07:57.758Z" }, + { url = "https://files.pythonhosted.org/packages/a2/1f/b2cf83c3638fd0588e0b17f22e5a9400bdfb1a3e3755324ac0aee2250b88/xxhash-3.7.0-cp313-cp313t-win_arm64.whl", hash = "sha256:37d994d0ffe81ef087bb330d392caa809bb5853c77e22ea3f71db024a0543dba", size = 27932, upload-time = "2026-04-25T11:07:59.109Z" }, + { url = "https://files.pythonhosted.org/packages/0e/cc/431db584f6fbb9312e40a173af027644e5580d39df1f73603cbb9dca4d6b/xxhash-3.7.0-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:8c5fcfd806c335bfa2adf1cd0b3110a44fc7b6995c3a648c27489bae85801465", size = 36644, upload-time = "2026-04-25T11:08:00.658Z" }, + { url = "https://files.pythonhosted.org/packages/bc/01/255ec513e0a705d1f9a61413e78dfce4e3235203f0ed525a24c2b4b56345/xxhash-3.7.0-cp314-cp314-android_24_x86_64.whl", hash = "sha256:506a0b488f190f0a06769575e30caf71615c898ed93ab18b0dbcb6dec5c3713c", size = 35003, upload-time = "2026-04-25T11:08:02.338Z" }, + { url = "https://files.pythonhosted.org/packages/68/70/c55fc33c93445b44d8fc5a17b41ed99e3cebe92bcf8396809e63fc9a1165/xxhash-3.7.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:ec68dbba21532c0173a9872298e65c89749f7c9d21538c3a78b5bb6105871568", size = 29655, upload-time = "2026-04-25T11:08:03.701Z" }, + { url = "https://files.pythonhosted.org/packages/c2/72/ff8de73df000d74467d12a59ce6d6e2b2a368b978d41ab7b1fba5ed442be/xxhash-3.7.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:fa77e7ec1450d415d20129961814787c9abd9a07f98872f070b1fe96c5084611", size = 30664, upload-time = "2026-04-25T11:08:05.011Z" }, + { url = "https://files.pythonhosted.org/packages/b6/91/08416d9bd9bc3bf39d831abe8a5631ac2db5141dfd6fe81c3fe59a1f9264/xxhash-3.7.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:fe32736295ea38e43e7d9424053c8c47c9f64fecfc7c895fb3da9b30b131c9ee", size = 33317, upload-time = "2026-04-25T11:08:06.413Z" }, + { url = "https://files.pythonhosted.org/packages/0e/3b/86b1caa4dee10a99f4bf9521e623359341c5e50d05158fa10c275b2bd079/xxhash-3.7.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:ab9dd2c83c4bbd63e422181a76f13502d049d3ddcac9a1bdc29196263d692bb8", size = 33457, upload-time = "2026-04-25T11:08:08.099Z" }, + { url = "https://files.pythonhosted.org/packages/ed/38/98ea14ad1517e1461292a65906951458d520689782bfbae111050145bdba/xxhash-3.7.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3afec3a336a2286601a437cb07562ab0227685e6fbb9ec17e8c18457ff348ecf", size = 30894, upload-time = "2026-04-25T11:08:09.429Z" }, + { url = "https://files.pythonhosted.org/packages/61/a2/074654d0b893606541199993c7db70067d9fc63b748e0d60020a52a1bd36/xxhash-3.7.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:565df64437a9390f84465dcca33e7377114c7ede8d05cd2cf20081f831ea788e", size = 194409, upload-time = "2026-04-25T11:08:10.91Z" }, + { url = "https://files.pythonhosted.org/packages/e2/26/6d2a1afc468189f77ca28c32e1c83e1b9da1178231e05641dbc1b350e332/xxhash-3.7.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:12eca820a5d558633d423bf8bb78ce72a55394823f64089247f788a7e0ae691e", size = 213135, upload-time = "2026-04-25T11:08:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0e/d8aecf95e09c42547453137be74d2f7b8b14e08f5177fa2fab6144a19061/xxhash-3.7.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f262b8f7599516567e070abf607b9af649052b2c4bd6f9be02b0cb41b7024805", size = 236379, upload-time = "2026-04-25T11:08:14.206Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/8140e8210536b3dd0cc816c4faaeb5ba6e63e8125ab25af4bcddd6a037b3/xxhash-3.7.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1598916cb197681e03e601901e4ab96a9a963de398c59d0964f8a6f44a2b361", size = 212447, upload-time = "2026-04-25T11:08:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d2/462001d2903b4bee5a5689598a0a55e5e7cd1ac7f4247a5545cff10d3ebb/xxhash-3.7.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:322b2f0622230f526aeb1738149948a7ae357a9e2ceb1383c6fd1fdaecdafa16", size = 445660, upload-time = "2026-04-25T11:08:17.441Z" }, + { url = "https://files.pythonhosted.org/packages/23/09/2bd1ed7f8689b20e51727952cac8329d50c694dc32b2eba06ba5bc742b37/xxhash-3.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cc22070880cc57b830a65cde4e65fa884c6d9b28ae4803b5ee05911e7bafba", size = 194076, upload-time = "2026-04-25T11:08:19.134Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6e/692302cd0a5f4ac4e6289f37fa888dc2e1e07750b68fe3e4bfe939b8cea3/xxhash-3.7.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb5a888a968b2434abf9ecda357b5d43f10d7b5a6da6fdbbe036208473aff0e2", size = 284990, upload-time = "2026-04-25T11:08:20.618Z" }, + { url = "https://files.pythonhosted.org/packages/05/d9/e54b159b3d9df7999d2a7c676ce7b323d1b5588a64f8f51ed8172567bd87/xxhash-3.7.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a999771ff97bec27d18341be4f3a36b163bb1ac41ec17bef6d2dabd84acd33c7", size = 210590, upload-time = "2026-04-25T11:08:22.24Z" }, + { url = "https://files.pythonhosted.org/packages/50/93/0e0df1a3a196ced4ca71de76d65ead25d8e87bbfb87b64306ea47a40c00d/xxhash-3.7.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:ed4a6efe2dee1655adb73e7ad40c6aa955a6892422b1e3b95de6a34de56e3cbb", size = 241442, upload-time = "2026-04-25T11:08:23.844Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a9/d917a7a814e90b218f8a0d37967105eea91bf752c3303683c99a1f7bfc1f/xxhash-3.7.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:9fd17f14ac0faa12126c2f9ca774a8cf342957265ec3c8669c144e5e6cdb478c", size = 198356, upload-time = "2026-04-25T11:08:25.99Z" }, + { url = "https://files.pythonhosted.org/packages/89/5e/f2ba1877c39469abbefc72991d6ebdcbd4c0880db01ae8cb1f553b0c537d/xxhash-3.7.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:05fd1254268c59b5cb2a029dfc204275e9fc52de2913f1e53aa8d01442c96b4d", size = 210898, upload-time = "2026-04-25T11:08:27.608Z" }, + { url = "https://files.pythonhosted.org/packages/90/c6/be56b58e73de531f39a10de1355bb77ceb663900dc4bf2d6d3002a9c3f9e/xxhash-3.7.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:a2eae53197c6276d5b317f75a1be226bbf440c20b58bf525f36b5d0e1f657ca6", size = 275519, upload-time = "2026-04-25T11:08:29.301Z" }, + { url = "https://files.pythonhosted.org/packages/92/e2/17ddc85d5765b9c709f192009ed8f5a1fc876f4eb35bba7c307b5b1169f9/xxhash-3.7.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:bfe6f92e3522dcbe8c4281efd74fa7542a336cb00b0e3272c4ec0edabeaeaf67", size = 414191, upload-time = "2026-04-25T11:08:31.16Z" }, + { url = "https://files.pythonhosted.org/packages/9c/42/85f5b79f4bf1ec7ba052491164adfd4f4e9519f5dc7246de4fbd64a1bd56/xxhash-3.7.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7ab9a49c410d8c6c786ab99e79c529938d894c01433130353dd0fe999111077a", size = 191604, upload-time = "2026-04-25T11:08:32.862Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d0/6127b623aa4cca18d8b7743592b048d689fd6c6e37ff26a22cddf6cd9d7f/xxhash-3.7.0-cp314-cp314-win32.whl", hash = "sha256:040ea63668f9185b92bc74942df09c7e65703deed71431333678fc6e739a9955", size = 31271, upload-time = "2026-04-25T11:08:34.651Z" }, + { url = "https://files.pythonhosted.org/packages/64/4f/44fc4788568004c43921701cbc127f48218a1eede2c9aea231115323564d/xxhash-3.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:2a61e2a3fb23c892496d587b470dee7fa1b58b248a187719c65ea8e94ec13257", size = 32284, upload-time = "2026-04-25T11:08:35.987Z" }, + { url = "https://files.pythonhosted.org/packages/6d/77/18bb895eb60a49453d16e17d67990e5caff557c78eafc90ad4e2eabf4570/xxhash-3.7.0-cp314-cp314-win_arm64.whl", hash = "sha256:c7741c7524961d8c0cb4d4c21b28957ff731a3fd5b5cd8b856dc80a40e9e5acc", size = 28701, upload-time = "2026-04-25T11:08:37.767Z" }, + { url = "https://files.pythonhosted.org/packages/45/a0/46f72244570c550fbbb7db1ef554183dd5ebe9136385f30e032b781ae8f6/xxhash-3.7.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:fc84bf7aa7592f31ec63a3e7b11d624f468a3f19f5238cec7282a42e838ab1d7", size = 33646, upload-time = "2026-04-25T11:08:39.109Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3a/453846a7eceea11e75def361eed01ec6a0205b9822c19927ed364ccae7cc/xxhash-3.7.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9f1563fdc8abfc389748e6932c7e4e99c89a53e4ec37d4563c24fc06f5e5644b", size = 31125, upload-time = "2026-04-25T11:08:40.467Z" }, + { url = "https://files.pythonhosted.org/packages/bd/3e/49434aba738885d512f9e486db1bdd19db28dfa40372b56da26ef7a4e738/xxhash-3.7.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2d415f18becf6f153046ab6adc97da77e3643a0ee205dae61c4012604113a020", size = 196633, upload-time = "2026-04-25T11:08:41.943Z" }, + { url = "https://files.pythonhosted.org/packages/a4/e9/006cb6127baeb9f8abe6d15e62faa01349f09b34e2bfd65175b2422d026b/xxhash-3.7.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bb16aa13ed175bc9be5c2491ba031b85a9b51c4ed90e0b3d4ebe63cf3fb54f8e", size = 215899, upload-time = "2026-04-25T11:08:43.645Z" }, + { url = "https://files.pythonhosted.org/packages/27/e4/cc57d72e66df0ae29b914335f1c6dcf61e8f3746ddf0ae3c471aa4f15e00/xxhash-3.7.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f9fd595f1e5941b3d7863e4774e4b30caa6731fc34b9277da032295aa5656ee5", size = 238116, upload-time = "2026-04-25T11:08:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/af/78/3531d4a3fd8a0038cc6be1f265a69c1b3587f557a10b677dd736de2202c1/xxhash-3.7.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1295325c5a98d552333fa53dc2b026b0ef0ec9c8e73ca3a952990b4c7d65d459", size = 215012, upload-time = "2026-04-25T11:08:47.355Z" }, + { url = "https://files.pythonhosted.org/packages/b4/f6/259fb1eaaec921f59b17203b0daee69829761226d3b980d5191d7723dd83/xxhash-3.7.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3573a651d146912da9daa9e29e5fbc45994420daaa9ef1e2fa5823e1dc485513", size = 448534, upload-time = "2026-04-25T11:08:49.149Z" }, + { url = "https://files.pythonhosted.org/packages/7b/16/a66d0eaf6a7e68532c07714361ddc904c663ec940f3b028c1ae4a21a7b9d/xxhash-3.7.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ec1e080a3d02d94ea9335bfab0e3374b877e25411422c18f51a943fa4b46381", size = 196217, upload-time = "2026-04-25T11:08:50.805Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ef/d2efc7fc51756dc52509109d1a25cefc859d74bc4b19a167b12dbd8c2786/xxhash-3.7.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:84415265192072d8638a3afc3c1bc5995e310570cd9acb54dc46d3939e364fe0", size = 286906, upload-time = "2026-04-25T11:08:52.418Z" }, + { url = "https://files.pythonhosted.org/packages/fc/67/25decd1d4a4018582ec4db2a868a2b7e40640f4adb20dfeb19ac923aa825/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d4dea659b57443989ef32f4295104fd6912c73d0bf26d1d148bb88a9f159b02", size = 213057, upload-time = "2026-04-25T11:08:54.105Z" }, + { url = "https://files.pythonhosted.org/packages/0d/5d/17651eb29d06786cdc40c60ae3d27d645aa5d61d2eca6237a7ba0b94789b/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:05ece0fe4d9c9c2728912d1981ae1566cfc83a011571b24732cbf76e1fb70dca", size = 243886, upload-time = "2026-04-25T11:08:56.109Z" }, + { url = "https://files.pythonhosted.org/packages/8a/d4/174d9cf7502243d586e6a9ae842b1ae23026620995114f85f1380e588bc9/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fd880353cf1ffaf321bc18dd663e111976dbd0d3bbd8a66d58d2b470dfa7f396", size = 201015, upload-time = "2026-04-25T11:08:57.777Z" }, + { url = "https://files.pythonhosted.org/packages/91/8c/2254e2d06c3ac5e6fe22eaf3da791b87ea823ae9f2c17b4af66755c5752d/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:4e15cc9e2817f6481160f930c62842b3ff419e20e13072bcbab12230943092bc", size = 213457, upload-time = "2026-04-25T11:08:59.826Z" }, + { url = "https://files.pythonhosted.org/packages/79/a2/e3daa762545921173e3360f3b4ff7fc63c2d27359f7230ec1a7a74e117f6/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:90b9d1a8bd37d768ffc92a1f651ec69afc532a96fa1ac2ea7abbed5d630b3237", size = 277738, upload-time = "2026-04-25T11:09:01.423Z" }, + { url = "https://files.pythonhosted.org/packages/e1/4c/e186da2c46b87f5204640e008d42730bf3c1ee9f0efb71ae1ebcdfeac681/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:157c49475b34ecea8809e51123d9769a534e139d1247942f7a4bc67710bb2533", size = 417127, upload-time = "2026-04-25T11:09:03.592Z" }, + { url = "https://files.pythonhosted.org/packages/17/28/3798e15007a3712d0da3d3fe70f8e11916569858b5cc371053bc26270832/xxhash-3.7.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5a6ddec83325685e729ca119d1f5c518ec39294212ecd770e60693cdc5f7eb79", size = 193962, upload-time = "2026-04-25T11:09:06.228Z" }, + { url = "https://files.pythonhosted.org/packages/ad/95/a26baa93b5241fd7630998816a4ec47a5a0bad193b3f8fc8f3593e1a4a67/xxhash-3.7.0-cp314-cp314t-win32.whl", hash = "sha256:a04a6cab47e2166435aaf5b9e5ee41d1532cc8300efdef87f2a4d0acb7db19ed", size = 31643, upload-time = "2026-04-25T11:09:08.153Z" }, + { url = "https://files.pythonhosted.org/packages/44/36/5454f13c447e395f9b06a3e91274c59f503d31fad84e1836efe3bdb71f6a/xxhash-3.7.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8653dd7c2eda020545bb2c71c7f7039b53fe7434d0fc1a0a9deb79ab3f1a4fc1", size = 32522, upload-time = "2026-04-25T11:09:09.534Z" }, + { url = "https://files.pythonhosted.org/packages/74/35/698e7e3ff38e22992ea24870a511d8762474fb6783627a2910ff22a185c2/xxhash-3.7.0-cp314-cp314t-win_arm64.whl", hash = "sha256:468f0fc114faaa4b36699f8e328bbc3bb11dc418ba94ac52c26dd736d4b6c637", size = 28807, upload-time = "2026-04-25T11:09:11.234Z" }, +] + +[[package]] +name = "zensical" +version = "0.0.43" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "idna" }, - { name = "multidict" }, - { name = "propcache" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/75/ff/46736024fee3429b80a165a732e38e5d5a238721e634ab41b040d49f8738/yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f", size = 142000, upload-time = "2025-10-06T14:09:44.631Z" }, - { url = "https://files.pythonhosted.org/packages/5a/9a/b312ed670df903145598914770eb12de1bac44599549b3360acc96878df8/yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2", size = 94338, upload-time = "2025-10-06T14:09:46.372Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f5/0601483296f09c3c65e303d60c070a5c19fcdbc72daa061e96170785bc7d/yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74", size = 94909, upload-time = "2025-10-06T14:09:48.648Z" }, - { url = "https://files.pythonhosted.org/packages/60/41/9a1fe0b73dbcefce72e46cf149b0e0a67612d60bfc90fb59c2b2efdfbd86/yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df", size = 372940, upload-time = "2025-10-06T14:09:50.089Z" }, - { url = "https://files.pythonhosted.org/packages/17/7a/795cb6dfee561961c30b800f0ed616b923a2ec6258b5def2a00bf8231334/yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb", size = 345825, upload-time = "2025-10-06T14:09:52.142Z" }, - { url = "https://files.pythonhosted.org/packages/d7/93/a58f4d596d2be2ae7bab1a5846c4d270b894958845753b2c606d666744d3/yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2", size = 386705, upload-time = "2025-10-06T14:09:54.128Z" }, - { url = "https://files.pythonhosted.org/packages/61/92/682279d0e099d0e14d7fd2e176bd04f48de1484f56546a3e1313cd6c8e7c/yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82", size = 396518, upload-time = "2025-10-06T14:09:55.762Z" }, - { url = "https://files.pythonhosted.org/packages/db/0f/0d52c98b8a885aeda831224b78f3be7ec2e1aa4a62091f9f9188c3c65b56/yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a", size = 377267, upload-time = "2025-10-06T14:09:57.958Z" }, - { url = "https://files.pythonhosted.org/packages/22/42/d2685e35908cbeaa6532c1fc73e89e7f2efb5d8a7df3959ea8e37177c5a3/yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124", size = 365797, upload-time = "2025-10-06T14:09:59.527Z" }, - { url = "https://files.pythonhosted.org/packages/a2/83/cf8c7bcc6355631762f7d8bdab920ad09b82efa6b722999dfb05afa6cfac/yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa", size = 365535, upload-time = "2025-10-06T14:10:01.139Z" }, - { url = "https://files.pythonhosted.org/packages/25/e1/5302ff9b28f0c59cac913b91fe3f16c59a033887e57ce9ca5d41a3a94737/yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7", size = 382324, upload-time = "2025-10-06T14:10:02.756Z" }, - { url = "https://files.pythonhosted.org/packages/bf/cd/4617eb60f032f19ae3a688dc990d8f0d89ee0ea378b61cac81ede3e52fae/yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d", size = 383803, upload-time = "2025-10-06T14:10:04.552Z" }, - { url = "https://files.pythonhosted.org/packages/59/65/afc6e62bb506a319ea67b694551dab4a7e6fb7bf604e9bd9f3e11d575fec/yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520", size = 374220, upload-time = "2025-10-06T14:10:06.489Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3d/68bf18d50dc674b942daec86a9ba922d3113d8399b0e52b9897530442da2/yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8", size = 81589, upload-time = "2025-10-06T14:10:09.254Z" }, - { url = "https://files.pythonhosted.org/packages/c8/9a/6ad1a9b37c2f72874f93e691b2e7ecb6137fb2b899983125db4204e47575/yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c", size = 87213, upload-time = "2025-10-06T14:10:11.369Z" }, - { url = "https://files.pythonhosted.org/packages/44/c5/c21b562d1680a77634d748e30c653c3ca918beb35555cff24986fff54598/yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74", size = 81330, upload-time = "2025-10-06T14:10:13.112Z" }, - { url = "https://files.pythonhosted.org/packages/ea/f3/d67de7260456ee105dc1d162d43a019ecad6b91e2f51809d6cddaa56690e/yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53", size = 139980, upload-time = "2025-10-06T14:10:14.601Z" }, - { url = "https://files.pythonhosted.org/packages/01/88/04d98af0b47e0ef42597b9b28863b9060bb515524da0a65d5f4db160b2d5/yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a", size = 93424, upload-time = "2025-10-06T14:10:16.115Z" }, - { url = "https://files.pythonhosted.org/packages/18/91/3274b215fd8442a03975ce6bee5fe6aa57a8326b29b9d3d56234a1dca244/yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c", size = 93821, upload-time = "2025-10-06T14:10:17.993Z" }, - { url = "https://files.pythonhosted.org/packages/61/3a/caf4e25036db0f2da4ca22a353dfeb3c9d3c95d2761ebe9b14df8fc16eb0/yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601", size = 373243, upload-time = "2025-10-06T14:10:19.44Z" }, - { url = "https://files.pythonhosted.org/packages/6e/9e/51a77ac7516e8e7803b06e01f74e78649c24ee1021eca3d6a739cb6ea49c/yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a", size = 342361, upload-time = "2025-10-06T14:10:21.124Z" }, - { url = "https://files.pythonhosted.org/packages/d4/f8/33b92454789dde8407f156c00303e9a891f1f51a0330b0fad7c909f87692/yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df", size = 387036, upload-time = "2025-10-06T14:10:22.902Z" }, - { url = "https://files.pythonhosted.org/packages/d9/9a/c5db84ea024f76838220280f732970aa4ee154015d7f5c1bfb60a267af6f/yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2", size = 397671, upload-time = "2025-10-06T14:10:24.523Z" }, - { url = "https://files.pythonhosted.org/packages/11/c9/cd8538dc2e7727095e0c1d867bad1e40c98f37763e6d995c1939f5fdc7b1/yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b", size = 377059, upload-time = "2025-10-06T14:10:26.406Z" }, - { url = "https://files.pythonhosted.org/packages/a1/b9/ab437b261702ced75122ed78a876a6dec0a1b0f5e17a4ac7a9a2482d8abe/yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273", size = 365356, upload-time = "2025-10-06T14:10:28.461Z" }, - { url = "https://files.pythonhosted.org/packages/b2/9d/8e1ae6d1d008a9567877b08f0ce4077a29974c04c062dabdb923ed98e6fe/yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a", size = 361331, upload-time = "2025-10-06T14:10:30.541Z" }, - { url = "https://files.pythonhosted.org/packages/ca/5a/09b7be3905962f145b73beb468cdd53db8aa171cf18c80400a54c5b82846/yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d", size = 382590, upload-time = "2025-10-06T14:10:33.352Z" }, - { url = "https://files.pythonhosted.org/packages/aa/7f/59ec509abf90eda5048b0bc3e2d7b5099dffdb3e6b127019895ab9d5ef44/yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02", size = 385316, upload-time = "2025-10-06T14:10:35.034Z" }, - { url = "https://files.pythonhosted.org/packages/e5/84/891158426bc8036bfdfd862fabd0e0fa25df4176ec793e447f4b85cf1be4/yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67", size = 374431, upload-time = "2025-10-06T14:10:37.76Z" }, - { url = "https://files.pythonhosted.org/packages/bb/49/03da1580665baa8bef5e8ed34c6df2c2aca0a2f28bf397ed238cc1bbc6f2/yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95", size = 81555, upload-time = "2025-10-06T14:10:39.649Z" }, - { url = "https://files.pythonhosted.org/packages/9a/ee/450914ae11b419eadd067c6183ae08381cfdfcb9798b90b2b713bbebddda/yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d", size = 86965, upload-time = "2025-10-06T14:10:41.313Z" }, - { url = "https://files.pythonhosted.org/packages/98/4d/264a01eae03b6cf629ad69bae94e3b0e5344741e929073678e84bf7a3e3b/yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b", size = 81205, upload-time = "2025-10-06T14:10:43.167Z" }, - { url = "https://files.pythonhosted.org/packages/88/fc/6908f062a2f77b5f9f6d69cecb1747260831ff206adcbc5b510aff88df91/yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10", size = 146209, upload-time = "2025-10-06T14:10:44.643Z" }, - { url = "https://files.pythonhosted.org/packages/65/47/76594ae8eab26210b4867be6f49129861ad33da1f1ebdf7051e98492bf62/yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3", size = 95966, upload-time = "2025-10-06T14:10:46.554Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ce/05e9828a49271ba6b5b038b15b3934e996980dd78abdfeb52a04cfb9467e/yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9", size = 97312, upload-time = "2025-10-06T14:10:48.007Z" }, - { url = "https://files.pythonhosted.org/packages/d1/c5/7dffad5e4f2265b29c9d7ec869c369e4223166e4f9206fc2243ee9eea727/yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f", size = 361967, upload-time = "2025-10-06T14:10:49.997Z" }, - { url = "https://files.pythonhosted.org/packages/50/b2/375b933c93a54bff7fc041e1a6ad2c0f6f733ffb0c6e642ce56ee3b39970/yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0", size = 323949, upload-time = "2025-10-06T14:10:52.004Z" }, - { url = "https://files.pythonhosted.org/packages/66/50/bfc2a29a1d78644c5a7220ce2f304f38248dc94124a326794e677634b6cf/yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e", size = 361818, upload-time = "2025-10-06T14:10:54.078Z" }, - { url = "https://files.pythonhosted.org/packages/46/96/f3941a46af7d5d0f0498f86d71275696800ddcdd20426298e572b19b91ff/yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708", size = 372626, upload-time = "2025-10-06T14:10:55.767Z" }, - { url = "https://files.pythonhosted.org/packages/c1/42/8b27c83bb875cd89448e42cd627e0fb971fa1675c9ec546393d18826cb50/yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f", size = 341129, upload-time = "2025-10-06T14:10:57.985Z" }, - { url = "https://files.pythonhosted.org/packages/49/36/99ca3122201b382a3cf7cc937b95235b0ac944f7e9f2d5331d50821ed352/yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d", size = 346776, upload-time = "2025-10-06T14:10:59.633Z" }, - { url = "https://files.pythonhosted.org/packages/85/b4/47328bf996acd01a4c16ef9dcd2f59c969f495073616586f78cd5f2efb99/yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8", size = 334879, upload-time = "2025-10-06T14:11:01.454Z" }, - { url = "https://files.pythonhosted.org/packages/c2/ad/b77d7b3f14a4283bffb8e92c6026496f6de49751c2f97d4352242bba3990/yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5", size = 350996, upload-time = "2025-10-06T14:11:03.452Z" }, - { url = "https://files.pythonhosted.org/packages/81/c8/06e1d69295792ba54d556f06686cbd6a7ce39c22307100e3fb4a2c0b0a1d/yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f", size = 356047, upload-time = "2025-10-06T14:11:05.115Z" }, - { url = "https://files.pythonhosted.org/packages/4b/b8/4c0e9e9f597074b208d18cef227d83aac36184bfbc6eab204ea55783dbc5/yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62", size = 342947, upload-time = "2025-10-06T14:11:08.137Z" }, - { url = "https://files.pythonhosted.org/packages/e0/e5/11f140a58bf4c6ad7aca69a892bff0ee638c31bea4206748fc0df4ebcb3a/yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03", size = 86943, upload-time = "2025-10-06T14:11:10.284Z" }, - { url = "https://files.pythonhosted.org/packages/31/74/8b74bae38ed7fe6793d0c15a0c8207bbb819cf287788459e5ed230996cdd/yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249", size = 93715, upload-time = "2025-10-06T14:11:11.739Z" }, - { url = "https://files.pythonhosted.org/packages/69/66/991858aa4b5892d57aef7ee1ba6b4d01ec3b7eb3060795d34090a3ca3278/yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b", size = 83857, upload-time = "2025-10-06T14:11:13.586Z" }, - { url = "https://files.pythonhosted.org/packages/46/b3/e20ef504049f1a1c54a814b4b9bed96d1ac0e0610c3b4da178f87209db05/yarl-1.22.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4", size = 140520, upload-time = "2025-10-06T14:11:15.465Z" }, - { url = "https://files.pythonhosted.org/packages/e4/04/3532d990fdbab02e5ede063676b5c4260e7f3abea2151099c2aa745acc4c/yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683", size = 93504, upload-time = "2025-10-06T14:11:17.106Z" }, - { url = "https://files.pythonhosted.org/packages/11/63/ff458113c5c2dac9a9719ac68ee7c947cb621432bcf28c9972b1c0e83938/yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b", size = 94282, upload-time = "2025-10-06T14:11:19.064Z" }, - { url = "https://files.pythonhosted.org/packages/a7/bc/315a56aca762d44a6aaaf7ad253f04d996cb6b27bad34410f82d76ea8038/yarl-1.22.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e", size = 372080, upload-time = "2025-10-06T14:11:20.996Z" }, - { url = "https://files.pythonhosted.org/packages/3f/3f/08e9b826ec2e099ea6e7c69a61272f4f6da62cb5b1b63590bb80ca2e4a40/yarl-1.22.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590", size = 338696, upload-time = "2025-10-06T14:11:22.847Z" }, - { url = "https://files.pythonhosted.org/packages/e3/9f/90360108e3b32bd76789088e99538febfea24a102380ae73827f62073543/yarl-1.22.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2", size = 387121, upload-time = "2025-10-06T14:11:24.889Z" }, - { url = "https://files.pythonhosted.org/packages/98/92/ab8d4657bd5b46a38094cfaea498f18bb70ce6b63508fd7e909bd1f93066/yarl-1.22.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da", size = 394080, upload-time = "2025-10-06T14:11:27.307Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e7/d8c5a7752fef68205296201f8ec2bf718f5c805a7a7e9880576c67600658/yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784", size = 372661, upload-time = "2025-10-06T14:11:29.387Z" }, - { url = "https://files.pythonhosted.org/packages/b6/2e/f4d26183c8db0bb82d491b072f3127fb8c381a6206a3a56332714b79b751/yarl-1.22.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b", size = 364645, upload-time = "2025-10-06T14:11:31.423Z" }, - { url = "https://files.pythonhosted.org/packages/80/7c/428e5812e6b87cd00ee8e898328a62c95825bf37c7fa87f0b6bb2ad31304/yarl-1.22.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694", size = 355361, upload-time = "2025-10-06T14:11:33.055Z" }, - { url = "https://files.pythonhosted.org/packages/ec/2a/249405fd26776f8b13c067378ef4d7dd49c9098d1b6457cdd152a99e96a9/yarl-1.22.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d", size = 381451, upload-time = "2025-10-06T14:11:35.136Z" }, - { url = "https://files.pythonhosted.org/packages/67/a8/fb6b1adbe98cf1e2dd9fad71003d3a63a1bc22459c6e15f5714eb9323b93/yarl-1.22.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd", size = 383814, upload-time = "2025-10-06T14:11:37.094Z" }, - { url = "https://files.pythonhosted.org/packages/d9/f9/3aa2c0e480fb73e872ae2814c43bc1e734740bb0d54e8cb2a95925f98131/yarl-1.22.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da", size = 370799, upload-time = "2025-10-06T14:11:38.83Z" }, - { url = "https://files.pythonhosted.org/packages/50/3c/af9dba3b8b5eeb302f36f16f92791f3ea62e3f47763406abf6d5a4a3333b/yarl-1.22.0-cp314-cp314-win32.whl", hash = "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2", size = 82990, upload-time = "2025-10-06T14:11:40.624Z" }, - { url = "https://files.pythonhosted.org/packages/ac/30/ac3a0c5bdc1d6efd1b41fa24d4897a4329b3b1e98de9449679dd327af4f0/yarl-1.22.0-cp314-cp314-win_amd64.whl", hash = "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79", size = 88292, upload-time = "2025-10-06T14:11:42.578Z" }, - { url = "https://files.pythonhosted.org/packages/df/0a/227ab4ff5b998a1b7410abc7b46c9b7a26b0ca9e86c34ba4b8d8bc7c63d5/yarl-1.22.0-cp314-cp314-win_arm64.whl", hash = "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33", size = 82888, upload-time = "2025-10-06T14:11:44.863Z" }, - { url = "https://files.pythonhosted.org/packages/06/5e/a15eb13db90abd87dfbefb9760c0f3f257ac42a5cac7e75dbc23bed97a9f/yarl-1.22.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1", size = 146223, upload-time = "2025-10-06T14:11:46.796Z" }, - { url = "https://files.pythonhosted.org/packages/18/82/9665c61910d4d84f41a5bf6837597c89e665fa88aa4941080704645932a9/yarl-1.22.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca", size = 95981, upload-time = "2025-10-06T14:11:48.845Z" }, - { url = "https://files.pythonhosted.org/packages/5d/9a/2f65743589809af4d0a6d3aa749343c4b5f4c380cc24a8e94a3c6625a808/yarl-1.22.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53", size = 97303, upload-time = "2025-10-06T14:11:50.897Z" }, - { url = "https://files.pythonhosted.org/packages/b0/ab/5b13d3e157505c43c3b43b5a776cbf7b24a02bc4cccc40314771197e3508/yarl-1.22.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c", size = 361820, upload-time = "2025-10-06T14:11:52.549Z" }, - { url = "https://files.pythonhosted.org/packages/fb/76/242a5ef4677615cf95330cfc1b4610e78184400699bdda0acb897ef5e49a/yarl-1.22.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf", size = 323203, upload-time = "2025-10-06T14:11:54.225Z" }, - { url = "https://files.pythonhosted.org/packages/8c/96/475509110d3f0153b43d06164cf4195c64d16999e0c7e2d8a099adcd6907/yarl-1.22.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face", size = 363173, upload-time = "2025-10-06T14:11:56.069Z" }, - { url = "https://files.pythonhosted.org/packages/c9/66/59db471aecfbd559a1fd48aedd954435558cd98c7d0da8b03cc6c140a32c/yarl-1.22.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b", size = 373562, upload-time = "2025-10-06T14:11:58.783Z" }, - { url = "https://files.pythonhosted.org/packages/03/1f/c5d94abc91557384719da10ff166b916107c1b45e4d0423a88457071dd88/yarl-1.22.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486", size = 339828, upload-time = "2025-10-06T14:12:00.686Z" }, - { url = "https://files.pythonhosted.org/packages/5f/97/aa6a143d3afba17b6465733681c70cf175af89f76ec8d9286e08437a7454/yarl-1.22.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138", size = 347551, upload-time = "2025-10-06T14:12:02.628Z" }, - { url = "https://files.pythonhosted.org/packages/43/3c/45a2b6d80195959239a7b2a8810506d4eea5487dce61c2a3393e7fc3c52e/yarl-1.22.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a", size = 334512, upload-time = "2025-10-06T14:12:04.871Z" }, - { url = "https://files.pythonhosted.org/packages/86/a0/c2ab48d74599c7c84cb104ebd799c5813de252bea0f360ffc29d270c2caa/yarl-1.22.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529", size = 352400, upload-time = "2025-10-06T14:12:06.624Z" }, - { url = "https://files.pythonhosted.org/packages/32/75/f8919b2eafc929567d3d8411f72bdb1a2109c01caaab4ebfa5f8ffadc15b/yarl-1.22.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093", size = 357140, upload-time = "2025-10-06T14:12:08.362Z" }, - { url = "https://files.pythonhosted.org/packages/cf/72/6a85bba382f22cf78add705d8c3731748397d986e197e53ecc7835e76de7/yarl-1.22.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c", size = 341473, upload-time = "2025-10-06T14:12:10.994Z" }, - { url = "https://files.pythonhosted.org/packages/35/18/55e6011f7c044dc80b98893060773cefcfdbf60dfefb8cb2f58b9bacbd83/yarl-1.22.0-cp314-cp314t-win32.whl", hash = "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e", size = 89056, upload-time = "2025-10-06T14:12:13.317Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/0f0dccb6e59a9e7f122c5afd43568b1d31b8ab7dda5f1b01fb5c7025c9a9/yarl-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27", size = 96292, upload-time = "2025-10-06T14:12:15.398Z" }, - { url = "https://files.pythonhosted.org/packages/48/b7/503c98092fb3b344a179579f55814b613c1fbb1c23b3ec14a7b008a66a6e/yarl-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1", size = 85171, upload-time = "2025-10-06T14:12:16.935Z" }, - { url = "https://files.pythonhosted.org/packages/73/ae/b48f95715333080afb75a4504487cbe142cae1268afc482d06692d605ae6/yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff", size = 46814, upload-time = "2025-10-06T14:12:53.872Z" }, -] - -[[package]] -name = "zc-lockfile" -version = "4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/10/9a/2fef89272d98b799e4daa50201c5582ec76bdd4e92a1a7e3deb74c52b7fa/zc_lockfile-4.0.tar.gz", hash = "sha256:d3ab0f53974296a806db3219b9191ba0e6d5cbbd1daa2e0d17208cb9b29d2102", size = 10956, upload-time = "2025-09-18T07:32:34.412Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/7f/3a614b65bc4b181578b1d50a78663ee02d5d2d3b859712f3d3597c8afe6f/zc_lockfile-4.0-py3-none-any.whl", hash = "sha256:aa3aa295257bebaa09ea9ad5cb288bf9f98f88de6932f96b6659f62715d83581", size = 9143, upload-time = "2025-09-18T07:32:33.517Z" }, + { name = "click" }, + { name = "deepmerge" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "pyyaml" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d4/85/ec45162e7824a8f879d887ef0774ee65926bf7d1064e2eebccc7eaee3378/zensical-0.0.43.tar.gz", hash = "sha256:dc2d3804ff562795c1024130e0c3ce79736467930729dda314f096d0e35b98c8", size = 3932396, upload-time = "2026-05-19T09:44:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/c2/55e0709607ae41c266987c3b91a1a9702b37fbbef0d07eddfe5e25c2d823/zensical-0.0.43-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:17c335362b6bac3a50178181694a964f6d9f0c516fc532129ba5a0a5c4103fb6", size = 12706531, upload-time = "2026-05-19T09:43:32.729Z" }, + { url = "https://files.pythonhosted.org/packages/2c/64/ce8627bc5ea30556162b29b041fe97d6a6aef2a87b51f12def628e4fa608/zensical-0.0.43-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:b8fe97f185194215f6193af45a17d2b30ebd72c8113e3650f2d7d6767b9c2206", size = 12563012, upload-time = "2026-05-19T09:43:35.962Z" }, + { url = "https://files.pythonhosted.org/packages/66/d1/533bc9454f0e06b3d9d8bd2e7ac405308c3d4dee6572acab98f0ed6d1c07/zensical-0.0.43-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c4c85978c765b3e7f347e8102dfe1373d4bbe4229d7008b6bdbf352f1fbcd7f", size = 12947599, upload-time = "2026-05-19T09:43:38.754Z" }, + { url = "https://files.pythonhosted.org/packages/75/a0/94f47d6fb592997be7ab9526938c929f0199adf2637c3c2b2b9b2101b28e/zensical-0.0.43-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90d7c06ffd07b2bdf78bef041d541baba8a3ea51fd2dd84dbdbc5b0229076524", size = 12904911, upload-time = "2026-05-19T09:43:42.434Z" }, + { url = "https://files.pythonhosted.org/packages/96/fb/1db3ad9a86ff772f74a8bc60ad5b447aa02a158e70f94adacf50bdd5c40f/zensical-0.0.43-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:60022f4a6b95e46ec0023f51052fcd491743b3ebd08c0066b22a5cf1e741fecd", size = 13269386, upload-time = "2026-05-19T09:43:45.387Z" }, + { url = "https://files.pythonhosted.org/packages/31/ee/b24fd0f94885519d851c35615b086d069a1077b0198021a56755395a4633/zensical-0.0.43-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e278eb948a0b7545d50609d713c7c27e366dade4523ff73a311a5d5f136518a", size = 12999364, upload-time = "2026-05-19T09:43:48.549Z" }, + { url = "https://files.pythonhosted.org/packages/28/78/401ccd7afd9d2690f81b5319b7f1eed05108154ce20e4207053914518c1c/zensical-0.0.43-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b85e5ab99fbda13823e67c43a4be6e5ebda6600602969c6575e143f20ac203fd", size = 13124392, upload-time = "2026-05-19T09:43:50.965Z" }, + { url = "https://files.pythonhosted.org/packages/98/b3/9af6eba5826b0ef143fc8308bd1e219e221441e307a958e39f824ba9ab53/zensical-0.0.43-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:751385accc92cccfd4560dabed7c423870686ef6ede244a67e5c96286af25e8f", size = 13177538, upload-time = "2026-05-19T09:43:53.964Z" }, + { url = "https://files.pythonhosted.org/packages/be/6b/cd090bd6659d32692487206469988ee84d41aa6de4cdf9e380f847da90e2/zensical-0.0.43-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:dd3ff5bfa6e65cf3d2550dc639c3da2a3bfa11087b83d57e06623c4c1607d583", size = 13327086, upload-time = "2026-05-19T09:43:56.8Z" }, + { url = "https://files.pythonhosted.org/packages/79/5b/ac2555354b5a53cb9c2c942811905c47be0b9f5603d3c1328ee8564333eb/zensical-0.0.43-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:85055a115b12f49c6ab194dcf04f966fc06b690ed6a8ddddd819929fc5f340e6", size = 13284645, upload-time = "2026-05-19T09:43:59.329Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c6/1688ec6e5be15e3ab367d7804753291bfbdff3109b06e20c19ce30a7129c/zensical-0.0.43-cp310-abi3-win32.whl", hash = "sha256:8a75ddd4bb3cd3c4a8e71d2ebae44c5611fd636c1d355c6124dd96e2f9c52838", size = 12256740, upload-time = "2026-05-19T09:44:02.102Z" }, + { url = "https://files.pythonhosted.org/packages/ca/a8/d967e70eac810a7e9eb8c5150d6d02848a1f42260f42977c71debed3cb02/zensical-0.0.43-cp310-abi3-win_amd64.whl", hash = "sha256:03a9d1744a6394ad66c355d6f1de04cfd92efa525b0b94bf6dbf6971c5cd2c6b", size = 12496166, upload-time = "2026-05-19T09:44:04.915Z" }, ] diff --git a/zensical.toml b/zensical.toml new file mode 100644 index 000000000..247ef6529 --- /dev/null +++ b/zensical.toml @@ -0,0 +1,197 @@ +## ref: + +[project] +# Basics +site_name = "Apple" +site_url = "__SITE_URL__" +site_description = "" +site_author = "liblaf" +# Navigation +nav = [ + { "Home" = "README.md" }, + { "API Reference" = [ + { " apple" = [ + "reference/liblaf/apple/README.md", + "reference/liblaf/apple/collision/README.md", + { " common" = [ + "reference/liblaf/apple/common/README.md", + "reference/liblaf/apple/common/attr_name.md" + ] }, + { " forward" = [ + "reference/liblaf/apple/forward/README.md", + "reference/liblaf/apple/forward/dof_map/README.md" + ] }, + { " jax" = [ + "reference/liblaf/apple/jax/README.md", + { " fem" = [ + "reference/liblaf/apple/jax/fem/README.md", + "reference/liblaf/apple/jax/fem/element/README.md", + "reference/liblaf/apple/jax/fem/geometry/README.md", + "reference/liblaf/apple/jax/fem/quadrature/README.md", + "reference/liblaf/apple/jax/fem/region/README.md" + ] } + ] }, + { " warp" = [ + "reference/liblaf/apple/warp/README.md", + { " fem" = [ + "reference/liblaf/apple/warp/fem/README.md", + "reference/liblaf/apple/warp/fem/func/README.md", + "reference/liblaf/apple/warp/fem/utils/README.md" + ] }, + "reference/liblaf/apple/warp/math/README.md", + "reference/liblaf/apple/warp/model/README.md" + ] } + ] } + ] } +] +# Repository +repo_url = "https://github.com/liblaf/apple" +edit_uri = "edit/main/docs/" + +# ref: +[project.markdown_extensions.abbr] + +[project.markdown_extensions.admonition] + +[project.markdown_extensions.attr_list] + +[project.markdown_extensions.def_list] + +[project.markdown_extensions.footnotes] + +[project.markdown_extensions.md_in_html] + +[project.markdown_extensions.pymdownx.arithmatex] +generic = true + +[project.markdown_extensions.pymdownx.betterem] +smart_enable = "all" + +[project.markdown_extensions.pymdownx.caret] + +[project.markdown_extensions.pymdownx.details] + +[project.markdown_extensions.pymdownx.emoji] +emoji_generator = "zensical.extensions.emoji.to_svg" +emoji_index = "zensical.extensions.emoji.twemoji" + +# ref: +[project.markdown_extensions.pymdownx.highlight] +anchor_linenums = true +line_spans = "__span" +pygments_lang_class = true + +[project.markdown_extensions.pymdownx.inlinehilite] + +[project.markdown_extensions.pymdownx.keys] + +[project.markdown_extensions.pymdownx.mark] + +[project.markdown_extensions.pymdownx.smartsymbols] + +[project.markdown_extensions.pymdownx.snippets] + +[project.markdown_extensions.pymdownx.superfences] + +[project.markdown_extensions.pymdownx.tabbed] +alternate_style = true + +[project.markdown_extensions.pymdownx.tasklist] +custom_checkbox = true + +[project.markdown_extensions.pymdownx.tilde] + +[project.markdown_extensions.toc] +permalink = true + +[project.markdown_extensions.zensical.extensions.preview] + +[project.plugins.mkdocstrings] +default_handler = "python" +enable_inventory = true + +[project.plugins.mkdocstrings.handlers.python] +inventories = ["https://docs.python.org/3/objects.inv"] + +[project.plugins.mkdocstrings.handlers.python.options] +# General +backlinks = "flat" +extensions = [ + # Built-in + "dataclasses", + "unpack_typeddict", + # Official + { griffe_inherited_docstrings = {} }, + { griffe_pydantic = { schema = true } }, + { griffe_warnings_deprecated = {} }, + # Third-party + { griffe_fieldz = { include_inherited = true } }, +] +find_stubs_package = true +show_inheritance_diagram = true +# Headings +heading_level = 1 +show_root_heading = true +show_symbol_type_heading = true +show_symbol_type_toc = true +# Members +inherited_members = true +filters = "public" +summary = true +# Docstrings +docstring_style = "google" +docstring_options.ignore_init_summary = true +docstring_section_style = "list" +merge_init_into_class = true +relative_crossrefs = true +scoped_crossrefs = true +show_if_no_docstring = true +# Signatures +modernize_annotations = true +overloads_only = true +show_signature_annotations = true +show_signature_type_parameters = true +separate_signature = true +signature_crossrefs = true + +[project.theme] +features = [ + "content.action.edit", + "content.action.view", + "content.code.copy", + "content.code.select", + "navigation.footer", + "navigation.indexes", + "navigation.instant", + "navigation.instant.prefetch", + "navigation.instant.progress", + "navigation.path", + "navigation.prune", + "navigation.tabs", + "navigation.tabs.sticky", + "navigation.top", + "navigation.tracking", + "search.highlight", + "toc.follow" +] + +[project.theme.icon] +logo = "simple/python" +repo = "fontawesome/brands/github" + +[[project.theme.palette]] +media = "(prefers-color-scheme)" +toggle.icon = "lucide/sun-moon" +toggle.name = "System Preference" + +[[project.theme.palette]] +media = "(prefers-color-scheme: light)" +scheme = "default" +toggle.icon = "lucide/sun" +toggle.name = "Light Mode" + +[[project.theme.palette]] +media = "(prefers-color-scheme: dark)" +scheme = "slate" +toggle.icon = "lucide/moon" +toggle.name = "Dark Mode"