Ejemplo n.º 1
0
 def test_forces_linear(self):
     a = triangular_lattice_slab(1.0, 1, 1)
     calc = IdealBrittleSolid(rc=1.2, beta=0.0, linear=True)
     calc.set_reference_crystal(a)
     a.set_calculator(calc)
     a.rattle(0.01)
     f = a.get_forces()
     fn = calc.calculate_numerical_forces(a)
     self.assertArrayAlmostEqual(f, fn, tol=self.tol)
Ejemplo n.º 2
0
                                                           set_initial_velocities,
                                                           set_constraints,
                                                           extend_strip)
                                                           
from matscipy.fracture_mechanics.crack import thin_strip_displacement_y

sys.path.insert(0, '.')
import params

calc = IdealBrittleSolid(rc=params.rc, k=params.k, a=params.a, beta=params.beta)

x_dimer = np.linspace(params.a-(params.rc-params.a),
                      params.a+1.1*(params.rc-params.a),51)
dimers = [Atoms('Si2', [(0, 0, 0), (x, 0, 0)],
                cell=[10., 10., 10.], pbc=True) for x in x_dimer]
calc.set_reference_crystal(dimers[0])
e_dimer = []
f_dimer = []
f_num = []
for d in dimers:
    d.set_calculator(calc)
    e_dimer.append(d.get_potential_energy())
    f_dimer.append(d.get_forces())
    f_num.append(calc.calculate_numerical_forces(d))
e_dimer = np.array(e_dimer)
f_dimer = np.array(f_dimer)
f_num = np.array(f_num)
assert abs(f_dimer - f_num).max() < 0.1

crystal = triangular_lattice_slab(params.a, 3*params.N, params.N)
calc.set_reference_crystal(crystal)
Ejemplo n.º 3
0
                                                           set_constraints,
                                                           extend_strip)

from matscipy.fracture_mechanics.crack import (thin_strip_displacement_y,
                                               ConstantStrainRate)

sys.path.insert(0, '.')
import params

calc = IdealBrittleSolid(rc=params.rc, k=params.k, a=params.a, beta=params.beta)

x_dimer = np.linspace(params.a-(params.rc-params.a),
                      params.a+1.1*(params.rc-params.a),51)
dimers = [Atoms('Si2', [(0, 0, 0), (x, 0, 0)],
                cell=[10., 10., 10.], pbc=True) for x in x_dimer]
calc.set_reference_crystal(dimers[0])
e_dimer = []
f_dimer = []
f_num = []
for d in dimers:
    d.set_calculator(calc)
    e_dimer.append(d.get_potential_energy())
    f_dimer.append(d.get_forces())
    f_num.append(calc.calculate_numerical_forces(d))
e_dimer = np.array(e_dimer)
f_dimer = np.array(f_dimer)
f_num = np.array(f_num)
assert abs(f_dimer - f_num).max() < 0.1

crystal = triangular_lattice_slab(params.a, 3*params.N, params.N)
calc.set_reference_crystal(crystal)