Example #1
0
    def from_atom_indices(cls,
                          atoms,
                          mask=None,
                          list=None,
                          force_fortran_indexing=True):
        """
        Construct a new Table containing atomic indices from a list or mask

        The new table will include 4 integer columns, for indices plus
        shifts, and is suitable for passing to bfs_step,
        construct_hysteretic_region, etc.

        If force_fortran_indexing is True (the default), all atom indices
        are converted to Fortran 1-based indexing.
        """
        orig_fortran_indexing = get_fortran_indexing()
        set_fortran_indexing(force_fortran_indexing)

        try:
            if mask is None and list is None:
                raise ValueError('Either mask or list must be present.')

            if list is not None and force_fortran_indexing and not orig_fortran_indexing:
                # we were given 0-based atom indices, convert to 1-based indices
                list = np.array(list) + 1

            if mask is not None:
                if len(mask) != len(atoms):
                    raise ValueError('size of mask must equal number of atoms')
                mask = mask.astype(bool)
                # use indexing style given by force_fortran_indexing
                list = atoms.indices[mask]

            self = cls(4, 0, 0, 0)
            self.append(blank_rows=len(list))
            self.int[:, :] = 0

            if get_fortran_indexing():
                first_column = 1
            else:
                first_column = 0
            self.int[first_column, :] = list

        finally:
            set_fortran_indexing(orig_fortran_indexing)

        self.atoms = weakref.ref(atoms)
        return self
Example #2
0
import argparse
import numpy as np

from ase.io.xyz import write_xyz
from quippy import AtomsReader
from quippy import set_fortran_indexing

set_fortran_indexing(False)
parser = argparse.ArgumentParser()
parser.add_argument("-r",
                    "--radius",
                    default=40.0,
                    type=float,
                    help="radius around cracktip to cutout (default 40\A)")
parser.add_argument("-i",
                    "--input",
                    default="crack_traj.xyz",
                    help="trajectory file to cut crack tip from.")
parser.add_argument("-o",
                    "--output",
                    default="cracktip_zone.xyz",
                    help="trajectory file to write cracktip region to.")

args = parser.parse_args()


def append(ats, rr, initial_crack, output_file='joined.xyz'):
    num_images = len(ats)
    for i, at in enumerate(ats):
        print i + 1, '/', num_images, initial_crack
        fixed_mask = (np.sqrt(
Example #3
0
from matscipy.socketcalc import VaspClient, SocketCalculator

from simulate_crack import update_qm_region_context, fix_edges, set_qmmm_pot, pass_print_context,\
                           check_if_cracked_context, pass_trajectory_context

from quippy import Atoms, set_fortran_indexing
from quippy.io import AtomsWriter, AtomsReader
from quippy.lotf import LOTFDynamics, update_hysteretic_qm_region
from quippy.crack import get_strain, get_energy_release_rate,\
                             ConstantStrainRate, find_crack_tip_stress_field
from quippy.clusters import HYBRID_NO_MARK, HYBRID_ACTIVE_MARK
from quippy.potential import Potential, ForceMixingPotential
from quippy.system import verbosity_set_minimum, verbosity_to_str

set_fortran_indexing(False)
VERBOSITY = 3
verbosity_set_minimum(VERBOSITY)
print verbosity_to_str(VERBOSITY)

def log_pred_corr_errors(dynamics, logfile):
    logline = '%s err %10.1f%12.6f%12.6f\n' % (dynamics.state_label,
                                           dynamics.get_time()/units.fs,
                                           dynamics.rms_force_error,
                                           dynamics.max_force_error)
    print logline
    logfile.write(logline)

#lotf simulation parameters
extrapolate_steps = 5        # Number of steps for predictor-corrector
                             # interpolation and extrapolation
Example #4
0
from ase.optimize import FIRE
from ase.optimize.precon import PreconFIRE, Exp
import argparse

from distutils import spawn

from imeall import app
from ForceMixerCarver import ForceMixingCarvingCalculator
from matscipy.socketcalc import VaspClient, SocketCalculator

from quippy import AtomsReader, AtomsWriter
from quippy import Potential, set_fortran_indexing

from imeall.calc_elast_dipole import find_h_atom

set_fortran_indexing(True)


class NEBAnalysis(object):
    def __init__(self):
        pass

    def save_barriers(self, images, neb, prefix=""):
        """ Saves the NEB results and plots energy barrier.
        Arguments:
          images ::
          prefix ::
          neb :: :class:ase:`NEB`
        """
        if not os.path.exists('NEB_images'):
            os.mkdir('NEB_images')