Svirl
Svirl is GPU-accelerated solver of complex Ginzburg-Landau equations for superconductivity. It consists of time-dependent solver to describe vortex dynamics and free energy minimizer to accurately find static configurations.
Install / Use
/learn @microsoft/SvirlREADME
Svirl: GPU-accelerated Ginzburg-Landau equations solver
Svirl is an open source solver of complex Ginzburg-Landau (GL) equations mainly used to describe magnetic vortices in superconductors. It consists of two parts: (i) time-dependent Ginzburg-Landau (TDGL) solver [1] and (ii) GL free energy minimizer with uses modified non-linear conjugate gradient method.
The current version of Svirl can be used for two-dimensional (2D) systems only, the work on three-dimensional (3D) solver is in progress.
Svirl has intuitive Python3 API and requires nVidia GPU to run. The idea of GPU-acceletrated TDGL solver was initially developed in the framework of OSCon project for infinite GL parameter limit.
Main features
- 2D time-dependent GL solver
- 2D GL free energy minimizer
- finite and infinite GL parameters
- user-defined material domain for order parameter
- calculates observables such as GL free energy, current density, and magnetic field
- detector of vortex positions
- uses nVidia CUDA by means of pyCUDA
Example
import numpy as np
from svirl import GLSolver
gl = GLSolver(
dx = 0.5, dy = 0.5,
Lx = 64, Ly = 64,
order_parameter = 'random',
gl_parameter = 5.0, # np.inf
normal_conductivity = 200.0,
homogeneous_external_field = 0.1,
dtype = np.float64,
)
gl.solve.td(dt=0.1, Nt=1000)
gl.solve.cg(n_iter = 1000)
vx, vy, vv = gl.params.fixed_vortices.vortices
print('Order parameter: array of shape', gl.vars.order_parameter.shape)
print('%d vortices detected' % vx.size)
print('Free energy: ', gl.observables.free_energy)
ch, cv = gl.observables.current_density
print('Total current density: two arrays of shape', ch.shape, '[horizontal links] and', cv.shape, '[vertical links]')
ch, cv = gl.observables.supercurrent_density
print('Supercurrent density: two arrays of shape', ch.shape, '[horizontal links] and', cv.shape, '[vertical links]')
print('Magnetic field: array of shape', gl.observables.magnetic_field.shape)
References
- I.A. Sadovskyy et al, Stable large-scale solver for Ginzburg-Landau equations for superconductors, J. Comp. Phys. 294, 639 (2015); arXiv:1409.8340.
Code of conduct
We follow the Microsoft Open Source Code of Conduct.
Related Skills
node-connect
337.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
83.3kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
83.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
337.7kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
