Skip to main content

Proxima Fusion's reimplementation of the Variational Moments Equilibrium Code (VMEC), a free-boundary ideal-MHD equilibrium solver for stellarators and Tokamaks.

Project description

A dark Proxima logo in light color mode and a light one in dark color mode.

VMEC++

Ruff Code style: black MIT license Python version DOI

CI C++ core tests

VMEC++ is a Python-friendly, from-scratch reimplementation in C++ of the Variational Moments Equilibrium Code (VMEC), a free-boundary ideal-MHD equilibrium solver for stellarators and tokamaks.

The original version was written by Steven P. Hirshman and colleagues in the 1980s and 1990s. The latest version of the original code is called PARVMEC and is available here.

Compared to its Fortran predecessors, VMEC++:

  • has a zero-crash policy and reports issues via standard Python exceptions
  • allows hot-restarting a run from a previous converged state (see Hot restart)
  • supports inputs in the classic INDATA format as well as simpler-to-parse JSON files; it is also simple to construct input objects programmatically in Python
  • typically runs just as fast or faster
  • comes with substantial documentation of its internal numerics

VMEC++ can run on a laptop, but it is a suitable component for large-scale stellarator optimization pipelines.

On the other hand, some features of the original Fortran VMEC are not available in VMEC++. See below for more details.


Table of Contents

Usage

This is a quick overview of the three main ways in which you can use VMEC++. See examples/ for some actual example scripts. Suitable input files are found in examples/data. If unsure where to start, we suggest to give the w7x case a try, which is a five-field-period stellarator case for the Wendelstein 7-X stellarator.

As a Python package

VMEC++ offers a simple Python API:

import vmecpp

# construct a VmecInput object, e.g. from a classic Fortran input file
vmec_input = vmecpp.VmecInput.from_file("input.w7x")

# run VMEC++
vmec_output = vmecpp.run(vmec_input)

# inspect the results or save them as a classic wout file
vmec_output.wout.save("wout_w7x.nc")

Note that other output files are planned to be accessible via members of the output object called threed1, jxbout and mercier soon.

With SIMSOPT

SIMSOPT is a popular stellarator optimization framework. VMEC++ implements a SIMSOPT-friendly wrapper that makes it easy to use it with SIMSOPT.

import vmecpp.simsopt_compat

vmec = vmecpp.simsopt_compat.Vmec("input.w7x")
print(f"Computed plasma volume: {vmec.volume()}")

As a command line tool

You can use VMEC++ directly as a CLI tool. In a terminal in which Python has access to the VMEC++ package:

# run on a given input file -> produce corresponding wout_w7x.nc
python -m vmecpp examples/data/input.w7x

# check all options
python -m vmecpp --help

As a Docker image

A pre-built Docker image is available at https://github.com/proximafusion/vmecpp/pkgs/container/vmecpp. Note that at present it is only updated occasionally.

See docker/README.md for more information and instructions on how to build a new image.

Installation

Ubuntu

Ubuntu 22.04 and 24.04 are both supported.

  1. Install required system packages:
sudo apt-get install build-essential cmake libnetcdf-dev liblapacke-dev libopenmpi-dev libeigen3-dev nlohmann-json3-dev libhdf5-dev
  1. Install VMEC++ as a Python package (possibly after creating a dedicated virtual environment):
pip install git+https://github.com/proximafusion/vmecpp

The procedure will take a few minutes as it will build VMEC++ and some dependencies from source.

A common issue on Ubuntu is a build failure due to no python executable being available in PATH, since on Ubuntu the executable is called python3. When installing in a virtual environment (which is always a good idea anyways) python will be present. Otherwise the Ubuntu package python-is-python3 provides the python alias.

MacOS

  1. Install dependencies via Homebrew:
brew install python@3.10 gcc cmake ninja libomp netcdf-cxx eigen nlohmann-json protobuf git open-mpi
  1. Install VMEC++ as a Python package (possibly after creating a virtual environment):
# tell cmake where to find gfortran and gcc as they have non-standard names
export FC=$(which gfortran-14)
export CC=$(which gcc-14)
python3.10 -m pip install git+https://github.com/proximafusion/vmecpp

As part of a conda environment

VMEC++ is currently not packaged for conda, but all its dependencies are and VMEC++ can be installed inside a conda environment. An example environment.yml file is provided here that can be used, after cloning the vmecpp repository, as:

git clone --recurse-submodules git@github.com:proximafusion/vmecpp
cd vmecpp
# this creates a "vmecpp" conda environment
conda env create --file environment.yml
# use the environment as usual
conda activate vmecpp

C++ build from source

After having installed the build dependencies as shown above, you can compile the C++ core of VMEC++ via CMake or Bazel. E.g. with CMake:

git clone --recurse-submodules git@github.com:proximafusion/vmecpp
cd vmecpp
cmake -B build  # create and configure build directory
cmake --build build --parallel  # build VMEC++
# you can now use the vmec_standalone C++ executable to run VMEC on a VMEC++ input JSON file, e.g.
./build/vmec_standalone ./examples/data/solovev.json

The main C++ source code tree is located at src/vmecpp/cpp/vmecpp.

Hot restart

By passing the output of a VMEC++ run as initial state for a subsequent one, VMEC++ is initialized using the previously converged equilibrium. This can dramatically decrease the number of iterations to convergence when running VMEC++ on a configuration that is very similar to the converged equilibrium.

Example

import vmecpp

input = vmecpp.VmecInput.from_file("w7x.json")

# Base run
output = vmecpp.run(input)

# Now let's perturb the plasma boundary a little bit...
input.rbc[0, 0] *= 0.8
input.rbc[1, 0] *= 1.2
# ...and fix up the multigrid steps: hot-restarted runs only allow a single step
input.ns_array = input.ns_array[-1:]
input.ftol_array = input.ftol_array[-1:]
input.niter_array = input.niter_array[-1:]

# We can now run with hot restart:
# passing the previously obtained output ensures that
# the run starts already close to the equilibrium, so it will take
# very few iterations to converge this time!
hot_restarted_output = vmecpp.run(input, restart_from=output)

Full tests and validation against the reference Fortran VMEC v8.52

When developing the C++ core, it's advisable to locally run the full C++ tests for debugging or to validate changes before submitting them. The full tests are not stored in the sources of this repo, but in a separate repo: https://github.com/proximafusion/vmecpp_large_cpp_tests . See the instructions there for how to run those tests locally. The CI of this repo includes those tests too.

The single-thread runtimes as well as the contents of the "wout" file produced by VMEC++ can be compared with those of Fortran VMEC v8.52. The full validation test can be found at https://github.com/proximafusion/vmecpp-validation, including a set of sensible input configurations, parameter scan values and tolerances that make the comparison pass. See that repo for more information.

Differences with respect to PARVMEC/VMEC2000

VMEC++:

  • reports issues via standard Python exceptions and has a zero crash policy
  • allows hot-restarting a run from a previous converged state (see Hot restart)
  • supports inputs in the classic INDATA format as well as simpler-to-parse JSON files; it is also simple to construct input objects programmatically in Python
  • employs the same parallelization strategy as Fortran VMEC, but VMEC++ leverages OpenMP for a multi-thread implementation rather than Fortran VMEC's MPI parallelization: as a consequence it cannot parallelize over multiple nodes
  • implements the iteration algorithm of Fortran VMEC 8.52, which sometimes has different convergence behavior from (PAR)VMEC 9.0: some configurations might converge with VMEC++ and not with (PAR)VMEC 9.0, and vice versa

Limitations with respect to the Fortran implementations

  • non-stellarator-symmetric terms (lasym == true) are not supported yet
  • free-boundary works only for ntor > 0 - axisymmetric (ntor = 0) free-boundary runs don't work yet
  • lgiveup/fgiveup logic for early termination of a multi-grid sequence is not implemented yet
  • lbsubs logic in computing outputs is not implemented yet
  • lforbal logic for non-variational forces near the magnetic axis is not implemented yet
  • lrfp is not implemented yet - only stellarators/Tokamaks for now
  • several profile parameterizations are not fully implemented yet:
    • gauss_trunc
    • two_power_gs
    • akima_spline
    • akima_spline_i
    • akima_spline_ip
    • cubic_spline
    • cubic_spline_i
    • cubic_spline_ip
    • pedestal
    • rational
    • line_segment
    • line_segment_i
    • line_segment_ip
    • nice_quadratic
    • sum_cossq_s
    • sum_cossq_sqrts
    • sum_cossq_s_free
  • some (rarely used) free-boundary-related output quantities are not implemented yet:
    • curlabel - declared but not populated yet
    • potvac - declared but not populated yet
    • xmpot - not declared yet
    • xnpot - not declared yet
  • 2D preconditioning using block-tridiagonal solver (BCYCLIC) is not implemented; neither are the associated input fields precon_type and prec2d_threshold
  • VMEC++ only computes the output quantities if the run converged
  • The Fortran version falls back to fixed-boundary computation if the mgrid file cannot be found; VMEC++ (gracefully) errors out instead.
  • The Fortran version accepts both the full path or filename of the input file as well as the "extension", i.e., the part after input.; VMEC++ only supports a valid filename or full path to an existing input file.

Roadmap

Some of the things we are planning for VMEC++'s future:

  • free-boundary hot-restart in Python
  • open-sourcing the full VMEC++ test suite (including the Verification&Validation part that compares wout contents)
  • open-sourcing the source code to reproduce VMEC++'s performance benchmarks
  • VMEC++ usable as a C++ bazel module

Some items we do not plan to work on, but where community ownership is welcome:

  • packaging VMEC++ for other platforms or package managers (e.g. conda, homebrew, ...)
  • native Windows support
  • 2D preconditioner using bcyclic_plus_plus

Related repositories

License

vmecpp is distributed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vmecpp-0.1.0.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vmecpp-0.1.0-cp313-cp313-macosx_14_0_arm64.whl (6.8 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

vmecpp-0.1.0-cp313-cp313-macosx_13_0_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

vmecpp-0.1.0-cp312-cp312-macosx_14_0_arm64.whl (6.8 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

vmecpp-0.1.0-cp312-cp312-macosx_13_0_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

vmecpp-0.1.0-cp311-cp311-macosx_14_0_arm64.whl (6.8 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

vmecpp-0.1.0-cp311-cp311-macosx_13_0_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

vmecpp-0.1.0-cp310-cp310-macosx_14_0_arm64.whl (6.8 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

vmecpp-0.1.0-cp310-cp310-macosx_13_0_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

vmecpp-0.1.0-cp39-cp39-macosx_14_0_arm64.whl (6.8 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

vmecpp-0.1.0-cp39-cp39-macosx_13_0_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.9macOS 13.0+ x86-64

vmecpp-0.1.0-cp38-cp38-macosx_14_0_arm64.whl (6.8 MB view details)

Uploaded CPython 3.8macOS 14.0+ ARM64

vmecpp-0.1.0-cp38-cp38-macosx_13_0_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.8macOS 13.0+ x86-64

vmecpp-0.1.0-1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

vmecpp-0.1.0-1-cp313-cp313-macosx_14_0_arm64.whl (8.7 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

vmecpp-0.1.0-1-cp313-cp313-macosx_13_0_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

vmecpp-0.1.0-1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

vmecpp-0.1.0-1-cp312-cp312-macosx_14_0_arm64.whl (8.7 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

vmecpp-0.1.0-1-cp312-cp312-macosx_13_0_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

vmecpp-0.1.0-1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

vmecpp-0.1.0-1-cp311-cp311-macosx_14_0_arm64.whl (8.7 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

vmecpp-0.1.0-1-cp311-cp311-macosx_13_0_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

vmecpp-0.1.0-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

vmecpp-0.1.0-1-cp310-cp310-macosx_14_0_arm64.whl (8.7 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

vmecpp-0.1.0-1-cp310-cp310-macosx_13_0_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

File details

Details for the file vmecpp-0.1.0.tar.gz.

File metadata

  • Download URL: vmecpp-0.1.0.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for vmecpp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5a50a8b1ac12d662f47b38cb8dc80821b4e398581e99bce61f8e3d6e01d422a2
MD5 e7df4c089f28c85bec0a9116ecab67dc
BLAKE2b-256 1978aeedc193fffb3b591d5a688805bb7cea35a1dfd3d1a964bbc1c669934835

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7424847e3b6fd7f73bba7e167bf2c403bb03fc76bfac1a94b6ef1b58c30dbd1c
MD5 83c7c1adda93ab3bd9377d7cc1cb2241
BLAKE2b-256 52b008891053adc596f6da565024058c21ded9bbc8e957746f8ee7f0895769f6

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 56897b5d31b61fdda7f2ef43ba6f5536c0e012d2eab27486e7cba303bfd84818
MD5 98f6ce1f075c7b1d361bc29414e501ac
BLAKE2b-256 2652435257d8618ef085f6839e2dce448941a054b564c86af3a0568fc1af0ed7

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a221a9f87b08e8b60225115d3537a0e1b853b5f62f3f0a7ecdcb5e1629c9b591
MD5 9ae542846a14e7c102d68c3aea7df632
BLAKE2b-256 bca343abc1c992623b93ffbc7265883f36f71c00c296e08e1025a3d62942c46e

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f90b144bce10074f6abb563094cff390dcac0529875c0b1f11e418074b13876b
MD5 965725ef9414faa112c0f1fed00623c4
BLAKE2b-256 ec5255b0ffbc54698715db338949b8504528f5c83753d3eae5e84df677687c1c

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a217052ab7cff4b7009a99041a9996b0f18d56962225bff63fa5b47e81a7da41
MD5 56a7666da95d5a40f7591ae57eee2774
BLAKE2b-256 bb1104322bc35d7e370a6b5e9219417e27a10383815113cf92ba7590b231318c

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f131ba657f8c3a3c06df86f8e2fdddb561f58887cb631ee3656bab4d3fc26b42
MD5 fbf3da39e2abcf90d46c9b0fb0571b60
BLAKE2b-256 6159088aca55bf21ed111f2991654021f196f4d2da841b0cfd22c6665798de07

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7ac3b86bb156e06846492c5db237caf8661bb541fd4da2e471ab33b6136003e0
MD5 c1eb193d61676486a83fb77109aa11d7
BLAKE2b-256 11b9f7c8d410ee3847f6e8d43b2e0d35845c2282d9548552604873f1b8ea7a0a

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 374aed7ee239d560358fd214a24c233d9e38162beb2d8c57ab861dc3737b0771
MD5 ed44eecee0cc8b5b3b9af757cf22eaec
BLAKE2b-256 dde0999b56edf043829e9299973a7033a29357748222e2abfd81b603b80214e7

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 49ade7e56fa07f56aadb851e5c4fba294c9c3bb5c2c46cf7392fae773691a445
MD5 9031290056805a2d6eb916b9d144ab7d
BLAKE2b-256 fba8cc768baa031f57a43153a93003865d633059c08572af33e6ae0cf84f695a

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 27284d87a37a4c3341b2eb5d01ed35544aacbea8763015930633565743420806
MD5 8847b2962d209625481711ce87ad0773
BLAKE2b-256 2d31f74030d5f4c23eeb9deff3ff01306d8473caa6d0f531ebaa1f2c891c089e

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp38-cp38-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3a3764cd201efca5e3c20dabf19b597616a3898b4a97196d1002a0ce284cd2db
MD5 65c9ea95e4c4f44c833367c4d8afbf07
BLAKE2b-256 cd4f901c98282146b4ec29a6665d72b859018058db8123442867526ae910c3ce

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-cp38-cp38-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-cp38-cp38-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 9e7a3838ca20090e8ae947016fb386092b2b73c81f0e23d21b035291c5d47b09
MD5 da2b6f6f3185eb91c1430f874a640d2e
BLAKE2b-256 61496f7274cbab42cbef9c527d9add8abc860def9a533d3b7c3c384f3f20723a

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5ae386f38922f897370641858df9491b2daee07385c9e4a306c0539128d865e7
MD5 602694c4389007032bd12f9b2bdde7ea
BLAKE2b-256 31815f9673bf561c7f40ea332e2c7a5d6e205bf4961fdfcdcce1d8d707c36a95

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4423d2ac3d73d038f1b90ecc37421f24a80b18b00482b0498e90cfd03c05980f
MD5 3cc0d449e0554a720fce02cf2b82dea8
BLAKE2b-256 4c58bf447dc6c98297f8544414e108b180c7459632f5077841d90eed800d45fd

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fcd22f4e602328bc07b8cde1ef4a456dfa7a02ea554c347fdabf37b2a7c3a055
MD5 bb63a3142ef5e0b526bfeec2b45c07fa
BLAKE2b-256 662f452e4c0d1f6da163f29a12e43c2cabf411643731d568eef22e902db02a63

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 216114520fa59bd8145f3588a36960191f1e0c7cd1f35ed2fc3759f488c52984
MD5 b85be09f4a5f7b7cca62e33047d42bcd
BLAKE2b-256 4421d539267071ca5b5f01dc59f1b29ff1e760bebe9d9f55fc38bcbff9a43006

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0a9db3c56f350c260f65c86ce06c8acb8fd58aec66a0d35acd7f9ca6e0ca844c
MD5 6bec8d546dda49bee2acddc86ea71ad2
BLAKE2b-256 f2cc09152b0b8dc4b6f8aec56315b84f922346e5f38a2381e02e7f8f5e008d01

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a6fec4a3e196d43e7f42d82c908d7d243e57bc4d7467e6612ac25056ae8fce5e
MD5 d34d9dc6708676e5ef20b0fceeb03515
BLAKE2b-256 11a9a9530d3ac0278c6b5b00f1152b768a68cd0d7e357239bbc3b63c974d2056

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 caa725b6e357cc5cc6c3662b517bb93bb1f7d57015bfd4edb48303ab6a742496
MD5 34d84950916c3e01b272e4e26ea8a6ff
BLAKE2b-256 825538a7cbe0dee40b26ab024505e90f86b4c0d833ca1bae1a51c8277c4ab470

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 11cf64694a4fb3f32d5896371c5daf320d7d62b219a8e8cd34425a86321f73c5
MD5 cc4481babfde1b44db40e5e4d8162891
BLAKE2b-256 71be0a58c05bc53c06b1dc26879fbd0ff5e135d3ff9aa252e6bcc51eaae903a4

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d6ffd7f812cc5b9803c13cd8a76b94e7be78e1ff45a994240483f065bd74c153
MD5 78d48c7511d1ac8e4230f3989d796335
BLAKE2b-256 424fbdff6d5458c8fb24bea1534ce02e430a98ffca2e22ac448eb065b4be6778

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8e192921169b242e8478559b1a679664e63002c7d34a9202ebc9b65ef111ea07
MD5 921e4ae3fb41a8749afae60ba921c4ab
BLAKE2b-256 f5567ee947b2a0b1b8fbd98faea465d8c3c7f2fe7733bcf3a54330198b6599d6

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 63305a1a63710c42f71304621fc3fd29cb09a12bca70b49c4e78cede3698ccc1
MD5 9fb9607a38ecf3408ac3843687e73035
BLAKE2b-256 0e4dfd44b7c43c81b5e9d1c90d45fa6ad0493083e2f0e2b05e32e0fdc55b4a6d

See more details on using hashes here.

File details

Details for the file vmecpp-0.1.0-1-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for vmecpp-0.1.0-1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 eadf19e5b93d16aff2048e24be07c7d53189d8c30eaa9147f6dabea2e678b5e1
MD5 e60c8282a6552cc6abf7df7fc2b85940
BLAKE2b-256 04ce0f49c025493be64e4eb994165703c6a823a1e971bb813a993d457f9854b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page