Absorption of a nanotube with antennae#

This notebook will calculate the dispersion relation of a nanotube with 60 nm outer and 40 nm inner diameters, permalloy material parameters. The obtained dispersion(s) must be equivalent to that(those) calculated analytically as well as with micromagnetic simulations published in Ref. 1.

First, we repeat the steps from the example on the dispersion simulation of nanotubes in vortex state. Then we set an antenna and compute the absorption.

[1]:
import tetrax as tx
[2]:
r_in = 20
r_out = 30
lc = 3

tube = tx.Sample(tx.geometries.waveguide.tube(r_in, r_out, lc),
                 name="Nanotube_20_30"
                )

tube.material["Msat"] = 800e3 # A/m
tube.material["Aex"] = 13e-12 # J/m

[3]:
tube.mag = tx.vectorfields.helical(tube.mesh.xyz, 60, 1)
Bphi = tx.vectorfields.helical(tube.mesh.xyz, 90, 1) * 0.08
tube.Bext =  Bphi

success = False
while not success:
    tube.relax = tx.experiments.relax(tube,tolerance=1e-13)
    success = tube.relax.was_success
Minimizing energy in using 'L-BFGS-B' (tolerance 1e-13) ...
energy length density: -6.727228940887906e-11 J/m, <mag.x> = 0.00, <mag.y> = 0.00, <mag.z> = 0.00000
Success!

[4]:
tube.spectrum = tx.experiments.eigenmodes(tube, num_cpus=-1, num_modes=5, kmin=-40e6, kmax=40e6, num_k=81)
100%|███████████████████| 41/41 [00:01<00:00, 30.08it/s]

Absorption computation#

Current loop antenna#

Here we show how to compute the dispersion one would measure when exciting with a given antenna type. First let’s choose a current loop antenna and as a second example a couplanar antenna (CPW). We will visualize the antenna relative to the sample cross section. The first antenna is a current loop with a given radius and width.

[5]:
radius = 40
width = 5
antenna_CLA = tx.experiments.antenna.CurrentLoopAntenna(width,radius)
tube.antenna = antenna_CLA
tube.show()
Info    : [ 90%] Difference - Classify solids
/Users/attilak/micromag/tetrax-tests/fresh_environement_test/venv/lib/python3.13/site-packages/traittypes/traittypes.py:97: UserWarning: Given trait value dtype "float32" does not match required type "float32". A coerced copy has been created.
  warnings.warn(
[5]:

image1

Computing and plotting the absorption with the current loop antenna:

[6]:
absorption = tube.spectrum.absorption(antenna_CLA)
absorption.plot()

Couplanar-wave antenna#

NOTE: no need to recompute the dispersion itself, only the absorption is recalculated based on the new antenna geometry.#

The second antenna is a CPW, with a given current line width, gap in between the line and spacing to the nanotube’s axis:

[7]:
width = 20 # of the current lines
gap = 58 # between the current lines
spacing = 35 # to the tube's axis

antenna_CPW = tx.experiments.antenna.CPWAntenna(width,gap,spacing)
tube.antenna = antenna_CPW
tube.show()
/Users/attilak/micromag/tetrax-tests/fresh_environement_test/venv/lib/python3.13/site-packages/traittypes/traittypes.py:97: UserWarning:

Given trait value dtype "float32" does not match required type "float32". A coerced copy has been created.

[7]:

CPW Antenna

Compute and plot the absorption:

[8]:
# computation and plotting combined into a single line:
tube.spectrum.absorption(antenna_CPW).plot()

# or if you need the data as an object for futher evaluations, use as above:

#absorption_CPW = tube.spectrum.absorption(antenna_CPW)
#absorption_CPW.plot()