Skip to main content

Quantum well

Solving Schrodinger equation in real-time

Download original notebook

Initial parameters

v0 = 8.;
hb = 1.;
d  = 1.;
m  = 1.;

Operator

V = (*TB[*)Piecewise[{{(*|*)0(*|*),(*|*)-d<=#<d(*|*)},{(*|*)v0(*|*),(*|*)True(*|*)}}](*|*)(*1:eJxTTMoPSmNkYGAo5gESAZmpyanlmcWpTvkVmUxAAQBzVQdd*)(*]TB*) &;
op[u_[x_]] := - hb^2/(2 m) u''[x] + V[x] u[x];

Controls

controls = EventHandler[InputGroup[<|
  "m" -> InputRange[0.1, 5, 2, 1.0, "Label"->"Mass"],
  "V" -> InputRange[0.1, 10, 2, 8.0, "Label"->"V0"],
  "d" -> InputRange[0.1, 2, 0.2, 1.0, "Label"->"d"]
|>], Function[values,
      v0 = values["V"];
      m = values["m"];
      d = values["d"];
  
      vplot = Table[{x,V[x]}, {x,-2,2,0.05}];
      
      {ev, ef} = 
        NDEigensystem[{op[u[x]], DirichletCondition[u[x] == 0, True]}, u[x], {x, -2, 2}, 6];
      
      xaxis = Table[i, {i,-2,2,0.025}];
      yaxis = Table[Evaluate[ef + ev], {x, xaxis}] // Transpose;
]];

controls // EventFire;

Graphical output

Row[
    {
        Graphics[
            {
                Table[
                    With[{i = i, color = ColorData[97][i]},
                        {color, Line[{xaxis, yaxis[[i]]} // Transpose
                            ] // Offload}
                    ]
                    ,
                    {i, Length[yaxis]}
                ]
                ,
                AbsoluteThickness[2]
                ,
                Line[vplot // Offload]
            }
            ,
            Axes -> True
            ,
            PlotRange -> {{-2, 2}, {0, 16}}
            ,
            ImageSize -> {350, 350}
        ]
        ,
        controls
    }
]
(*GB[*){{(*VB[*)(FrontEndRef["72e6a61b-bde5-4a89-8a9e-08de5ff2f16d"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKmxulmiWaGSbpJqWkmuqaJFpY6lokWqbqGlgA+WlpRmmGZikAjQgWQw=="*)(*]VB*)(*|*),(*|*)(*VB[*)(EventObject[<|"Id" -> "be5c7087-95a7-4077-b88a-c36158bc23e0", "Initial" -> <|"m" -> 1., "V" -> 8., "d" -> 1.|>, "View" -> "60a1be29-4080-4313-b3c7-1405931a6b21"|>])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKmxkkGialGlnqmhhYGOiaGBsa6yYZJ5vrGpoYmFoaGyaaJRkZAgBy/BSW"*)(*]VB*)}}(*]GB*)