Hi,
The main issue is that you are using a sin() excitation instead of a sinc(). This will only excite at the frequency of the sin (in your case, 6 Ghz, you can just barely see it at the bottom). If you want the entire dispersion curve, you should use an excitation like a sinc(2*pi*f*(t-t0)), which will excite all frequences below f. When using a sinc, you should also keep in mind to shift it away from being centered at t=0, as this will cut off some of the excitation. Something like:
t0:=1/{fmax}
B_ext.setregion(1,vector(A*sinc(2*pi*20e9*(t-t0)),0, {Bz}))
A couple other small notes:
You probably want to apply the static external bias field to the entire sample. So before you relax(), you will want to do
B_ext=vector(0,0,{Bz})
Last, in your amplitude, you have it commented as 10mT. A:=1 will apply an excitation of 1Tesla, this should be something like 0.01 in order to be 10mT.
Best,
Josh L.