synthetic surface and spm specific features
This commit is contained in:
80
tests/node_tests/mfm_domains.py
Normal file
80
tests/node_tests/mfm_domains.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import numpy as np
|
||||
import pytest
|
||||
from tests.node_tests._shared import make_field
|
||||
|
||||
|
||||
def test_output_shapes():
|
||||
from backend.nodes.mfm_domains import MFMDomainGeneration
|
||||
|
||||
node = MFMDomainGeneration()
|
||||
field = make_field(shape=(48, 64))
|
||||
|
||||
hz, dhz_dz = node.process(
|
||||
field,
|
||||
height=50e-9,
|
||||
thickness=20e-9,
|
||||
magnetization=1e6,
|
||||
stripe_width_a=200e-9,
|
||||
stripe_width_b=200e-9,
|
||||
gap=0.0,
|
||||
)
|
||||
assert hz.data.shape == (48, 64)
|
||||
assert dhz_dz.data.shape == (48, 64)
|
||||
|
||||
|
||||
def test_finite_values():
|
||||
from backend.nodes.mfm_domains import MFMDomainGeneration
|
||||
|
||||
node = MFMDomainGeneration()
|
||||
field = make_field(shape=(32, 32))
|
||||
|
||||
hz, dhz_dz = node.process(
|
||||
field,
|
||||
height=50e-9,
|
||||
thickness=20e-9,
|
||||
magnetization=1e6,
|
||||
stripe_width_a=200e-9,
|
||||
stripe_width_b=200e-9,
|
||||
gap=0.0,
|
||||
)
|
||||
assert np.isfinite(hz.data).all()
|
||||
assert np.isfinite(dhz_dz.data).all()
|
||||
|
||||
|
||||
def test_uniform_along_y():
|
||||
"""Stripes run along y, so every row of the output should be identical."""
|
||||
from backend.nodes.mfm_domains import MFMDomainGeneration
|
||||
|
||||
node = MFMDomainGeneration()
|
||||
field = make_field(shape=(64, 64))
|
||||
|
||||
hz, dhz_dz = node.process(
|
||||
field,
|
||||
height=50e-9,
|
||||
thickness=20e-9,
|
||||
magnetization=1e6,
|
||||
stripe_width_a=200e-9,
|
||||
stripe_width_b=200e-9,
|
||||
gap=0.0,
|
||||
)
|
||||
assert np.allclose(hz.data[0], hz.data[hz.data.shape[0] // 2])
|
||||
assert np.allclose(dhz_dz.data[0], dhz_dz.data[dhz_dz.data.shape[0] // 2])
|
||||
|
||||
|
||||
def test_units():
|
||||
from backend.nodes.mfm_domains import MFMDomainGeneration
|
||||
|
||||
node = MFMDomainGeneration()
|
||||
field = make_field(shape=(32, 32))
|
||||
|
||||
hz, dhz_dz = node.process(
|
||||
field,
|
||||
height=50e-9,
|
||||
thickness=20e-9,
|
||||
magnetization=1e6,
|
||||
stripe_width_a=200e-9,
|
||||
stripe_width_b=200e-9,
|
||||
gap=0.0,
|
||||
)
|
||||
assert hz.si_unit_z == "A/m"
|
||||
assert dhz_dz.si_unit_z == "A/m²"
|
||||
Reference in New Issue
Block a user