Source code for tdgl.solver.solve

from typing import Callable, Dict, Optional, Union

from ..device.device import Device
from ..solution.solution import Solution
from .options import SolverOptions
from .solver import TDGLSolver


[docs]def solve( device: Device, options: SolverOptions, applied_vector_potential: Union[Callable, float] = 0, terminal_currents: Union[Callable, Dict[str, float], None] = None, disorder_epsilon: Union[float, Callable] = 1, seed_solution: Optional[Solution] = None, ) -> Union[Solution, None]: """Solve a TDGL model. Args: device: The :class:`tdgl.Device` to solve. options: An instance :class:`tdgl.SolverOptions` specifying the solver parameters. applied_vector_potential: A function or :class:`tdgl.Parameter` that computes the applied vector potential as a function of position ``(x, y, z)``, or of position and time ``(x, y, z, *, t)``. If a float ``B`` is given, the applied vector potential will be that of a uniform magnetic field with strength ``B`` ``field_units``. terminal_currents: A dict of ``{terminal_name: current}`` or a callable with signature ``func(time: float) -> {terminal_name: current}``, where ``current`` is a float in units of ``current_units`` and ``time`` is the dimensionless time. disorder_epsilon: A float in range [-1, 1], or a callable with signature ``disorder_epsilon(r: Tuple[float, float]) -> epsilon``, where ``epsilon`` is a float in range [-1, 1]. Setting :math:`\\epsilon(\\mathbf{r})=T_c(\\mathbf{r})/T_c - 1 < 1` suppresses the critical temperature at position :math:`\\mathbf{r}`, which can be used to model inhomogeneity. seed_solution: A :class:`tdgl.Solution` instance to use as the initial state for the simulation. Returns: A :class:`tdgl.Solution` instance. Returns ``None`` if the simulation was cancelled during the thermalization stage. """ solver = TDGLSolver( device=device, options=options, applied_vector_potential=applied_vector_potential, terminal_currents=terminal_currents, disorder_epsilon=disorder_epsilon, seed_solution=seed_solution, ) return solver.solve()