print
    print "Running pass", ntest + 1, "of", nrun
    print
    if pbcrnd:
        pbc = tuple(random.randint(0, 2, 3))
    print "Periodic boundaries:", pbc
    if nrun > 1:
        time.sleep(1)
    atoms = FaceCenteredCubic(directions=[[1, 0, 0], [0, 1, 0], [0, 0, 1]],
                              size=(10, 10, 10),
                              symbol=element,
                              pbc=pbc)
    atoms = MonteCarloAtoms(atoms)
    print "Number of atoms:", len(atoms)
    atoms.set_calculator(MonteCarloEMT())
    atoms.get_potential_energies()  # Force creation of neighbor list.
    atoms2 = atoms.copy()
    atoms2.set_calculator(EMT())

    print
    print "Testing perturbations of single atoms"

    pick1 = argsort(random.random((len(magnarr), )))
    for magn in take(magnarr, pick1):
        pick2 = argsort(random.random((len(numarr), )))
        for number in take(numarr, pick2):
            # Pick number random atoms.
            if number < 0:
                # Find N neighboring atoms and perturb them
                number = -number
                nblist = atoms.get_calculator().get_neighborlist()
Example #2
0
"""Check that energy is correct even after wrapping through periodic boundary conditions.
"""

from ase.lattice.cubic import FaceCenteredCubic
from asap3 import *
from asap3.testtools import *
import random

ref_atoms = FaceCenteredCubic(size=(7, 7, 7),
                              symbol="Cu",
                              pbc=(True, False, True))
ref_atoms.set_calculator(EMT())

ref_energy = ref_atoms.get_potential_energy()
ref_energies = ref_atoms.get_potential_energies()
ref_forces = ref_atoms.get_forces()

passes = 5
for ps in range(passes):
    print "Pass", ps, "of", passes

    atoms = ref_atoms.copy()
    atoms.set_calculator(EMT())
    nat = random.randint(0, len(atoms))
    assert nat < len(atoms)
    pos0 = atoms[nat].position
    cell = atoms.get_cell()
    for d in range(1, 4):
        for dx in (-d, 0, d):
            #for dy in (-d, 0, d):
            for dy in (0, ):
Example #3
0
for ntest in range(nrun):
    print
    print "Running pass", ntest+1, "of", nrun
    print
    if pbcrnd:
        pbc =   tuple(random.randint(0,2,3))
    print "Periodic boundaries:", pbc
    if nrun > 1:
        time.sleep(1)
    atoms = FaceCenteredCubic(directions=[[1,0,0],[0,1,0],[0,0,1]], size=(10,10,10),
                              symbol=element, pbc=pbc)
    atoms = MonteCarloAtoms(atoms)
    print "Number of atoms:", len(atoms)
    atoms.set_calculator(MonteCarloEMT())
    atoms.get_potential_energies()  # Force creation of neighbor list.
    atoms2 = atoms.copy()
    atoms2.set_calculator(EMT())

    print 
    print "Testing perturbations of single atoms"

    pick1 = argsort(random.random((len(magnarr),)))
    for magn in take(magnarr, pick1):
        pick2 = argsort(random.random((len(numarr),)))
        for number in take(numarr, pick2):
            # Pick number random atoms.
            if number < 0:
                # Find N neighboring atoms and perturb them
                number = -number
                nblist = atoms.get_calculator().get_neighborlist()
Example #4
0
 #                    symbol="Cu")
 natoms = len(atoms_kim)
 atoms_kim.set_pbc(pbc)
 r = atoms_kim.get_positions()
 r.flat[:] += 0.1 * np.sin(np.arange(3 * natoms))
 atoms_kim.set_positions(r)
 atoms_emt = atoms_kim.copy()
 kim = OpenKIMcalculator(openkimmodel, allowed=nbltype)
 emt = EMT()
 emt.set_subtractE0(False)
 atoms_kim.set_calculator(kim)
 atoms_emt.set_calculator(emt)
 ek = atoms_kim.get_potential_energy()
 ee = atoms_emt.get_potential_energy()
 ReportTest(txt + "Total energy", ek, ee, 1e-8)
 ek = atoms_kim.get_potential_energies()
 ee = atoms_emt.get_potential_energies()
 for i in range(0, natoms, step):
     ReportTest(txt + "Energy of atom %i" % (i, ), ek[i], ee[i], 1e-8)
 fk = atoms_kim.get_forces()
 fe = atoms_emt.get_forces()
 n = 0
 for i in range(0, natoms, step):
     n = (n + 1) % 3
     ReportTest(txt + "Force(%i) of atom %i" % (n, i), fk[i, n],
                fe[i, n], 1e-8)
 sk = atoms_kim.get_stress()
 se = atoms_emt.get_stress()
 for i in range(6):
     ReportTest(txt + "Stress(%i)" % (i, ), sk[i], se[i], 1e-8)
 sk = atoms_kim.get_stresses()
Example #5
0
"""Check that energy is correct even after wrapping through periodic boundary conditions.
"""

from ase.lattice.cubic import FaceCenteredCubic
from asap3 import *
from asap3.testtools import *
import random

ref_atoms = FaceCenteredCubic(size=(7,7,7), symbol="Cu", pbc=(True, False, True))
ref_atoms.set_calculator(EMT())

ref_energy = ref_atoms.get_potential_energy()
ref_energies = ref_atoms.get_potential_energies()
ref_forces = ref_atoms.get_forces()

passes = 5
for ps in range(passes):
    print "Pass", ps, "of", passes

    atoms = ref_atoms.copy()
    atoms.set_calculator(EMT())
    nat = random.randint(0, len(atoms))
    assert nat < len(atoms)
    pos0 = atoms[nat].position
    cell = atoms.get_cell()
    for d in range(1,4):
        for dx in (-d, 0, d):
            #for dy in (-d, 0, d):
            for dy in (0,):
                for dz in (-d, 0 ,d):
                    deltar = dx * cell[0] + dy * cell[1] + dz * cell[2]
Example #6
0
 #                    symbol="Cu")
 natoms = len(atoms_kim)
 atoms_kim.set_pbc(pbc)
 r = atoms_kim.get_positions()
 r.flat[:] += 0.1 * np.sin(np.arange(3*natoms))
 atoms_kim.set_positions(r)
 atoms_emt = atoms_kim.copy()
 kim = OpenKIMcalculator(openkimmodel, allowed=nbltype)
 emt = EMT()
 emt.set_subtractE0(False)
 atoms_kim.set_calculator(kim)
 atoms_emt.set_calculator(emt)
 ek = atoms_kim.get_potential_energy()
 ee = atoms_emt.get_potential_energy()
 ReportTest(txt+"Total energy", ek, ee, 1e-8)
 ek = atoms_kim.get_potential_energies()
 ee = atoms_emt.get_potential_energies()
 for i in range(0, natoms, step):
     ReportTest(txt+"Energy of atom %i" % (i,), ek[i], ee[i], 1e-8)
 fk = atoms_kim.get_forces()
 fe = atoms_emt.get_forces()
 n = 0
 for i in range(0, natoms, step):
     n = (n + 1) % 3
     ReportTest(txt+"Force(%i) of atom %i" % (n, i), fk[i, n], fe[i, n], 1e-8)
 sk = atoms_kim.get_stress()
 se = atoms_emt.get_stress()
 for i in range(6):
     ReportTest(txt+"Stress(%i)" % (i,), sk[i], se[i], 1e-8)
 sk = atoms_kim.get_stresses()
 se = atoms_emt.get_stresses()