diff --git a/matscipy/dislocation.py b/matscipy/dislocation.py index 35f17603..f50b12e0 100644 --- a/matscipy/dislocation.py +++ b/matscipy/dislocation.py @@ -2716,7 +2716,25 @@ def __init__(self, alat, C11, C12, C44, symbol='W'): axes, burgers, unit_cell_core_position, parity, glide_distance, n_planes=n_planes) - +class BCCEdge111barDislocation(CubicCrystalDislocation): + def __init__(self, alat, C11, C12, C44, symbol='Fe'): + axes = np.array([[1, 1, -1], + [1, 1, 2], + [1, -1, 0]]) + burgers = alat * np.array([-1, -1, 1]) / 2.0 + unit_cell_core_position = alat * np.array([(1.0/3.0) * np.sqrt(3.0)/2.0, + 0.25 * np.sqrt(2.0), 0]) + parity = [0, 0] + unit_cell = BodyCenteredCubic(directions=axes.tolist(), + size=(1, 1, 1), symbol=symbol, + pbc=True, + latticeconstant=alat) + glide_distance = np.linalg.norm(burgers) / 3.0 #? + n_planes = 1 + super().__init__(unit_cell, alat, C11, C12, C44, + axes, burgers, unit_cell_core_position, parity, + glide_distance, n_planes=n_planes) + class BCCMixed111Dislocation(CubicCrystalDislocation): def __init__(self, alat, C11, C12, C44, symbol='W'): axes = np.array([[1, -1, -2], diff --git a/tests/test_dislocation.py b/tests/test_dislocation.py index 38e80823..42077745 100644 --- a/tests/test_dislocation.py +++ b/tests/test_dislocation.py @@ -458,6 +458,12 @@ def test_screw_dislocation(self): def test_edge_dislocation(self): self.check_disloc(sd.BCCEdge111Dislocation, 90.0) + @unittest.skipIf("atomman" not in sys.modules or + "ovito" not in sys.modules, + "requires atomman and ovito") + def test_edge111bar_dislocation(self): + self.check_disloc(sd.BCCEdge111barDislocation, 90.0) + @unittest.skipIf("atomman" not in sys.modules or "ovito" not in sys.modules, "requires atomman and ovito")