@@ -458,3 +458,97 @@ function labyrinth_eom(u, p, t)
458458 zdot = sin (x)
459459 return SVector {3} (xdot, ydot, zdot)
460460end
461+
462+
463+ """
464+ antidots(u; B = 1.0, d0 = 0.3, c = 0.2)
465+ An antidot "superlattice" is a Hamiltonian system that corresponds to a
466+ smoothened periodic Sinai billiard with disk diameter `d0` and smooth
467+ factor `c` [1].
468+
469+ This version is the two dimensional
470+ classical form of the system, with quadratic equations of motion and
471+ a perpendicular magnetic field. Notice that the equations of motion
472+ are with respect to the velocity instead of momentum, i.e.:
473+ ```math
474+ \\ begin{aligned}
475+ \\ dot{x} &= v_x \\\\
476+ \\ dot{y} &= v_y \\\\
477+ \\ dot{v_x} &= B*v_y - U_x \\\\
478+ \\ dot{v_y} &= -B*v_x - U_X \\\\
479+ \\ end{aligned}
480+ ```
481+ with ``U`` the potential energy:
482+ ```math
483+ U = \\ left(\\ tfrac{1}{c^4}\\ right) \\ left[\\ tfrac{d_0}{2} + c - r_a\\ right]^4
484+ ```
485+ if ``r_a = \\ sqrt{(x%1)^2 + (y%1)^2} < \\ frac{d_0}{2} + c`` and 0
486+ otherwise. I.e. the potential is periodic with period 1 in both ``x, y`` and
487+ normalized such that for energy value of 1 it is a circle of diameter ``d0``.
488+ The magnetic field is also normalized such that for value `B=1` the cyclotron
489+ diameter is 1.
490+
491+ Fo more details see [1].
492+
493+ [1] : G. Datseris *et al*, [arXiv:1711.05833v3](https://arxiv.org/abs/1711.05833v3)
494+ """
495+ function antidots (u0 = [0.5 , 0.5 , rand (2 )... ];
496+ d0 = 0.5 , c = 0.2 , B = 1.0 )
497+ return CDS (antidot_eom, u0, [B, d0, c], antidot_jacob)
498+ end
499+
500+ function antidot_eom (u, p, t)
501+ B, d0, c = p
502+ x, y, vx, vy = u
503+ # Calculate quadrant of (x,y):
504+ U = Uy = Ux = 0.0
505+ xtilde = x - round (x); ytilde = y - round (y)
506+ ρ = sqrt (xtilde^ 2 + ytilde^ 2 )
507+ # Calculate derivatives and potential:
508+ if ρ < 0.5 * d0 + c
509+ sharedfactor = - (4 * (c + d0/ 2 - ρ)^ (3 ))/ (c^ 4 * ρ)
510+ Ux = sharedfactor* xtilde # derivatives
511+ Uy = sharedfactor* ytilde
512+ end
513+ Br = 2 *√ (2 )* B # magnetic field with prefactor
514+ return SVector {4} (vx, vy, Br* vy - Ux, - vx* Br - Uy)
515+ end
516+ function antidot_jacob (u, p, t)
517+ B, d0, c = p
518+ x, y, vx, vy = u
519+ xtilde = x - round (x); ytilde = y - round (y)
520+ ρ = sqrt (xtilde^ 2 + ytilde^ 2 )
521+ # Calculate derivatives and potential:
522+ if ρ < 0.5 * d0 + c
523+ Uxx, Uyy, Uxy = antidot_secondderv (xtilde, ytilde, p)
524+ else
525+ Uxx, Uyy, Uxy = 0.0 , 0.0 , 0.0
526+ end
527+ Br = 2 *√ (2 )* B # magnetic field with prefactor
528+ return SMatrix {4, 4} (0.0 , 0 , - Uxx, - Uxy, 0 , 0 , - Uxy, - Uyy,
529+ 1 , 0 , 0 , - Br, 0 , 1 , Br, 0 )
530+ end
531+
532+ function antidot_potential (x:: Real , y:: Real , p)
533+ B, d0, c = p
534+ δ = 4
535+ # Calculate quadrant of (x,y):
536+ xtilde = x - round (x); ytilde = y - round (y)
537+ ρ = sqrt (xtilde^ 2 + ytilde^ 2 )
538+ # Check distance:
539+ pot = ρ > 0.5 * d0 + c ? 0.0 : (1 / (c^ δ))* (0.5 * d0 + c - ρ)^ δ
540+ end
541+
542+ function antidot_secondderv (x, y, p)
543+ B, d0, c = p
544+ r = sqrt (x^ 2 + y^ 2 )
545+ Uxx = _Uxx (x, y, c, d0, r)
546+ Uyy = _Uxx (y, x, c, d0, r)
547+ Uxy = (2 c + d0 - 2 r)^ 2 * (2 c + d0 + 4 r)* x* y / (2 c^ 4 * r^ 3 )
548+ return Uxx, Uyy, Uxy
549+ end
550+
551+ function _Uxx (x, y, c, d0, r)
552+ Uxx = (2 c + d0 - 2 r)^ 2 * (- 2 c* y^ 2 - d0* y^ 2 + 2 * r* (3 x^ 2 + y^ 2 )) /
553+ (2 * (c^ 4 ) * r^ 3 )
554+ end
0 commit comments