Simsopt

Latest version: v1.8.1

Safety actively analyzes 682471 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 9 of 9

0.3.03

This release fixes bugs and reorganizes examples.

1. Earlier releases of simsopt required all optional packages to be installed. This release fixes issues in importing simsopt when optional packages are not installed.
2. The examples are reorganized into simple, intermediate, advanced, and stellarator_benchmarks.

0.3.00

This release eases the use of simsopt for end users. A docker container with simsopt and vmec preinstalled is available. It can be downloaded from DockerHub using the name hiddensymmetries/simsopt.

The coverage report is now avaialble and can be accessed from the codecov badge on the main README.me

0.2.02

0.2.0alpha

This release introduces some additions and bug fixes for majority of modules in simsopt.

Changes introduced:
1. New class for Reiman magnetic field (see section 5 of Reiman, Greenside (1986), "Calculation of three-dimensional MHD equilibria with islands and stochastic regions", Computer Physics Communications 43 (157-167)) is added by **Rogerio**. This field has the advantage of allowing an exact calculation of the island width which can be used for island width optimization (example: https://arxiv.org/abs/2102.04497).
2. Faster Biot-Savart code by **Florian**
3. A simplified logging interface is introduced by **Bharat**. Logging can be enabled by using the following two lines in your driver script:
python
from simsopt import initialize_logging
initialize_logging(filename="simsopt.log") Filename option can be omitted in which case the default name is default.log

4. Some modules are rearranged.
5. Top-level imports for important classes are introduced.
6. Automatic linting script implemented by **Florian**. Before you submit your additions/changes to simsopt as PR, please run the `run_autopep` script. Requires autopep8 and flake8.
7. A new exception class to handle failures in objective function (credits to **Matt Landremann**).
8. Bug fixes.
9. Improved documentation.

0.1.0

This release introduces boozer surface and computation of aspect ratio of surfaces and some major refactoring of surfaces-related code.

**Major changes**:

1. SurfaceXYZFourier surfaces are introduced, where (phi, theta) correspond to the Boozer angles on the surface, by solving a nonlinear least squares problem in boozersurface.py.

2. minimizeBoozerScalarizedLBFGS solves a scalarized constrained optimization problem using LBFGS, where
min 0.5* || f(x) ||^2_2 + 0.5 * constraint_weight * (label - labeltarget)^2
+0.5*constraint_weight * (y(varphi=0,theta=0) -0)^2+0.5*constraint_weight * (z(varphi=0,theta=0) -0)^2
where || f(x)||^2_2 is the sum of squares of the Boozer residual at
a set of quadrature points.
The final two terms in the objective function are boundary conditions to ensure that the parametrization of the surface is unique.

3. minimizeBoozerScalarizedNewton solves the same scalarized constrained optimization problem as above, but instead of LBFGS, Newton's method is used.

4. minimizeBoozerConstrainedNewton solves the full constrained optimization problem using Newton's method.
min 0.5*|| f(x) ||^2_2
subject to
label - labeltarget = 0
y(varphi=0,theta=0) - 0 = 0
z(varphi=0,theta=0) - 0 = 0
The user is free to choose either a geometric constraint, e.g. area, or a toroidal flux constraint.
objectives.py is split into coilobjectives.py and surfaceobjectives.py


5. Computation of aspect ratio of surfaces using the VMEC definition of aspect ratio is done in the Surface.aspect_ratio.

6. New capability of computing cross-sections of surfaces at a given cylindrical angle. This is done using bisection in the Surface.cross_section.

7. An implementation of SurfaceXYZFourier.to_RZFourier using Surface.cross_section. This is done by computing cross-sections of the SurfaceXYZFourier object and then fitting a SurfaceRZFourier to those cross-sections.

0.0.10

Major changes:

1. `simsopt.geo` subpackage introduces a surface class, and two specific implementations **SurfaceRZFourier** and **SurfaceXYZFourier**. The interface is closely aligned to the **Curve** classes, i.e. s.gamma() return an array of dimension (`numquadpoints_phi, numquadpoints_theta, 3`), and there are implementation for tangential derivatives and derivatives wrt to the dofs.
2. The two curve classes are renamed into **CurveXYZFourier** and **CurveRZFourier** for consistency.
3. Magnetic flux is added to Biot-Savart computation.

Page 9 of 9

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.