NcAfm#
- class NcAfm#
Bases:
Magnet
Create a non-collinear antiferromagnet instance.
- __init__(world, grid, name='', geometry=None, regions=None)#
- Parameters:
world (World) – World in which the non-collinear antiferromagnet lives.
grid (Grid) – The number of cells in x, y, z the non-collinear antiferromagnet should be divided into.
geometry (None, ndarray, or callable (default=None)) –
The geometry of the non-collinear antiferromagnet can be set in three ways.
If the geometry contains all cells in the grid, then use None (the default)
Use an ndarray which specifies for each cell wheter or not it is in the geometry.
Use a function which takes x, y, and z coordinates as arguments and returns true if this position is inside the geometry and false otherwise.
regions (None, ndarray, or callable (default=None)) – The regional structure of a non-collinear antiferromagnet can be set in the same three ways as the geometry. This parameter indexes each grid cell to a certain region.
name (str (default="")) – The non-collinear antiferromagnet’s identifier. If the name is empty (the default), a name for the non-collinear antiferromagnet will be created.
- property sub1: Ferromagnet#
First sublattice instance.
- property sub2: Ferromagnet#
Second sublattice instance.
- property sub3: Ferromagnet#
Third sublattice instance.
- property sublattices: tuple[Ferromagnet]#
- other_sublattices(sub)#
Returns sister sublattices of given sublattice.
- Parameters:
sub (Ferromagnet)
- Return type:
tuple[Ferromagnet]
- property bias_magnetic_field: Parameter#
Uniform bias magnetic field which will affect a non-collinear antiferromagnet.
The value should be specifed in Teslas.
- property enable_demag: bool#
Enable/disable demagnetization switch of all sublattices.
Default = True.
- minimize(tol=1e-06, nsamples=30)#
Minimize the total energy.
Fast energy minimization, but less robust than relax when starting from a high energy state.
- Parameters:
tol (int / float (default=1e-6)) – The maximum allowed difference between consecutive magnetization evaluations when advancing toward an energy minimum.
nsamples (int (default=30)) – The number of consecutive magnetization evaluations that must not differ by more than the tolerance “tol”.
See also
- relax(tol=1e-09)#
Relax the state to an energy minimum.
The system evolves in time without precession (pure damping) until the total energy (i.e. the sum of sublattices) hits the noise floor. Hereafter, relaxation keeps on going until the maximum torque is minimized.
Compared to minimize, this function takes a longer time to execute, but is more robust when starting from a high energy state (i.e. random).
- Parameters:
tol (float, default=1e-9) – The lowest maximum error of the timesolver.
See also
- property ncafmex_cell: Parameter#
Intracell non-collinear antiferromagnetic exchange constant (J/m). This parameter plays the role of exchange constant of the antiferromagnetic homogeneous exchange interaction in a single simulation cell.
See also
- property ncafmex_nn: Parameter#
Intercell non-collinear antiferromagnetic exchange constant (J/m). This parameter plays the role of exchange constant of the antiferromagnetic inhomogeneous exchange interaction between neighbouring simulation cells.
See also
- property inter_ncafmex_nn: Parameter#
Interregional non-collinear antiferromagnetic exchange constant (J/m). If set to zero (default), then the harmonic mean of the exchange constants of the two regions are used.
When no exchange interaction between different regions is wanted, set scale_ncafmex_nn to zero.
This parameter should be set with
>>> magnet.inter_ncafmex_nn.set_between(region1, region2, value)
- property scale_ncafmex_nn: Parameter#
Scaling of the non-collinear antiferromagneticic exchange constant between different regions. This factor is multiplied by the harmonic mean of the exchange constants of the two regions.
If
inter_ncafmex_nn
is set to a non-zero value, then this overridesscale_ncafmex_nn
, i.e.scale_ncafmex_nn
is automatically set to zero when inter_ncafmex_nn is not.This parameter should be set with
>>> magnet.scale_ncafmex_nn.set_between(region1, region2, value)
- property latcon: Parameter#
Lattice constant (m).
Physical lattice constant of the non-collinear antiferromagnet. This doesn’t break the micromagnetic character of the simulation package, but is only used to calculate the homogeneous exchange field, i.e. the non-collinear antiferromagnetic exchange interaction between spins at the same site.
Default = 0.35 nm.
See also
- property dmi_tensor: DmiTensor#
Get the DMI tensor of this non-collinear antiferromagnet. This tensor describes intersublattice DMI exchange.
Note that individual sublattices can have their own tensor to describe intrasublattice DMI exchange.
- Returns:
The DMI tensor of this non-collinear antiferromagnet.
- Return type:
See also
- property dmi_tensors: DmiTensorGroup#
Returns the DMI tensor of self, self.sub1, self.sub2 and self.sub3.
This group can be used to set the intersublattice and all intrasublattice DMI tensors at the same time.
For example, to set interfacial DMI in the whole system to the same value, one could use
>>> magnet = NcAfm(world, grid) >>> magnet.dmi_tensors.set_interfacial_dmi(1e-3)
Or to set an individual tensor element, one could use
>>> magnet.dmi_tensors.xxy = 1e-3
See also
- property dmi_vector: Parameter#
- DMI vector D (J/m³) associated with the homogeneous DMI (in a single simulation cell),
defined by the energy density ε = D . (m1 x m2 + m2 x m3 + m3 x m1) with m1, m2 and m3 being the sublattice magnetizations.
See also
- property octupole_vector: FieldQuantity#
Weighted dimensionless octupole vector of a non-collinear antiferromagnet as defined in https://doi.org/10.1038/s41563-023-01620-2.
- property full_magnetization: FieldQuantity#
Full non-collinear antiferromagnetic magnetization M1 + M2 + M3 (A/m).
See also
- property angle_field: FieldQuantity#
Returns the deviation from the optimal angle (120°) between magnetization vectors in the same cell which are coupled by the intracell exchange interaction (rad). The first component respresents the angle deviation for sub1 and sub2. The second component respresents the angle deviation for sub1 and sub3. The third component respresents the angle deviation for sub2 and sub3.
See also
- max_intracell_angle_between(sub_i, sub_j)#
The maximal deviation from 120° between sublattice spins in the same simulation cell (rad). Input should be two integers from {1, 2, 3} denoting a sublattice index.
See also
- Parameters:
sub_i (Ferromagnet)
sub_j (Ferromagnet)
- property total_energy_density: FieldQuantity#
Total energy density of all sublattices combined (J/m³). Kinetic and elastic energy densities of the non-collinear antiferromagnet are also included if elastodynamics is enabled.
- property total_energy: ScalarQuantity#
Total energy of all sublattices combined (J). Kinetic and elastic energies of the non-collinear antiferromagnet are also included if elastodynamics is enabled.