jarvis.analysis.interface package

Submodules

jarvis.analysis.interface.zur module

Design interface using Zur algorithm and Anderson rule.

class jarvis.analysis.interface.zur.ZSLGenerator(max_area_ratio_tol=0.09, max_area=400, max_length_tol=0.03, max_angle_tol=0.01)[source]

Bases: object

Uses Zur algorithm to find best matched interfaces.

This class is modified from pymatgen.

generate_sl_transformation_sets(film_area, substrate_area)[source]

Generate transformation sets for film/substrate.

The transformation sets map the film and substrate unit cells to super lattices with a maximum area.

Args:

film_area(int): the unit cell area for the film.

substrate_area(int): the unit cell area for the substrate.

Returns:
transformation_sets: a set of transformation_sets defined as:
1.) the transformation matricies for the film to create a super lattice of area i*film area 2.) the tranformation matricies for the substrate to create a super lattice of area j*film area
get_equiv_transformations(transformation_sets, film_vectors, substrate_vectors)[source]

Apply the transformation_sets to the film and substrate vectors.

Generate super-lattices and checks if they matches. Returns all matching vectors sets.

Args:
transformation_sets(array): an array of transformation sets:
each transformation set is an array with the (i,j) indicating the area multipes of the film and subtrate it corresponds to, an array with all possible transformations for the film area multiple i and another array for the substrate area multiple j.

film_vectors(array): film vectors to generate super lattices.

substrate_vectors(array): substrate vectors to generate super
lattices
is_same_vectors(vec_set1, vec_set2)[source]

Check two sets of vectors are the same.

Args:

vec_set1(array[array]): an array of two vectors

vec_set2(array[array]): second array of two vectors

match_as_dict(film_sl_vectors, substrate_sl_vectors, film_vectors, substrate_vectors, match_area, film_transformation, substrate_transformation)[source]

Return dict which contains ZSL match.

Args:

film_miller(array)

substrate_miller(array)

jarvis.analysis.interface.zur.fast_norm(a)[source]

Much faster variant of numpy linalg norm.

jarvis.analysis.interface.zur.gen_sl_transform_matricies(area_multiple)[source]

Generate the transformation matricies.

Convert a set of 2D vectors into a super lattice of integer area multiple as proven in Cassels: Cassels, John William Scott. An introduction to the geometry of numbers. Springer Science & Business Media, 2012.

Args:
area_multiple(int): integer multiple of unit cell area for super lattice area.
Returns:
matrix_list: transformation matricies to covert unit vectors to super lattice vectors.
jarvis.analysis.interface.zur.get_factors(n)[source]

Generate all factors of n.

jarvis.analysis.interface.zur.get_hetero()[source]

Generate heterostructure. Deprecated also.

jarvis.analysis.interface.zur.get_hetero_type(A={}, B={})[source]

Provide heterojunction classification using Anderson rule.

jarvis.analysis.interface.zur.make_interface(film='', subs='', atol=1, ltol=0.05, max_area=500, max_area_ratio_tol=1.0, seperation=3.0, vacuum=8.0, apply_strain=False)[source]

Use as main function for making interfaces/heterostructures.

Return mismatch and other information as info dict.

Args:

film: top/film material.

subs: substrate/bottom/fixed material.

seperation: minimum seperation between two.

vacuum: vacuum will be added on both sides. So 2*vacuum will be added.

jarvis.analysis.interface.zur.mismatch_strts()[source]

Return mismatch and other information as info dict.

Deprecated, preserved here so legacy imports work.

jarvis.analysis.interface.zur.reduce_vectors(a, b)[source]

Generate independent and unique basis vectors based on Zur et al.

jarvis.analysis.interface.zur.rel_angle(vec_set1, vec_set2)[source]

Calculate the relative angle between two vector sets.

Args:

vec_set1(array[array]): an array of two vectors.

vec_set2(array[array]): second array of two vectors.

jarvis.analysis.interface.zur.rel_strain(vec1, vec2)[source]

Calculate relative strain between two vectors.

jarvis.analysis.interface.zur.vec_angle(a, b)[source]

Calculate angle between two vectors.

jarvis.analysis.interface.zur.vec_area(a, b)[source]

Area of lattice plane defined by two vectors.

Module contents

Modules to generate interface/heterostructure.