Statistiques
| Révision :

root / ase / lattice / tetragonal.py @ 16

Historique | Voir | Annoter | Télécharger (1,42 ko)

1 1 tkerber
"""Function-like objects creating tetragonal lattices.
2 1 tkerber

3 1 tkerber
The following lattice creators are defined:
4 1 tkerber
    SimleTetragonal
5 1 tkerber
    CenteredTetragonal
6 1 tkerber
"""
7 1 tkerber
8 1 tkerber
from ase.lattice.orthorhombic import SimpleOrthorhombicFactory,\
9 1 tkerber
     BodyCenteredOrthorhombicFactory
10 1 tkerber
import numpy as np
11 1 tkerber
from ase.data import reference_states as _refstate
12 1 tkerber
13 1 tkerber
14 1 tkerber
class _Tetragonalize:
15 1 tkerber
    "A mixin class for implementing tetragonal crystals as orthorhombic ones."
16 1 tkerber
17 1 tkerber
    # The name of the crystal structure in ChemicalElements
18 1 tkerber
    xtal_name = "tetragonal"
19 1 tkerber
20 1 tkerber
    def make_crystal_basis(self):
21 1 tkerber
        lattice = self.latticeconstant
22 1 tkerber
        if type(lattice) == type({}):
23 1 tkerber
            lattice['b/a'] = 1.0
24 1 tkerber
        else:
25 1 tkerber
            if len(lattice) == 2:
26 1 tkerber
                lattice = (lattice[0], lattice[0], lattice[1])
27 1 tkerber
            else:
28 1 tkerber
                raise ValueError, "Improper lattice constants for tetragonal crystal."
29 1 tkerber
        self.latticeconstant = lattice
30 1 tkerber
        self.orthobase.make_crystal_basis(self)
31 1 tkerber
32 1 tkerber
class SimpleTetragonalFactory(_Tetragonalize, SimpleOrthorhombicFactory):
33 1 tkerber
    "A factory for creating simple tetragonal lattices."
34 1 tkerber
    orthobase = SimpleOrthorhombicFactory
35 1 tkerber
36 1 tkerber
SimpleTetragonal = SimpleTetragonalFactory()
37 1 tkerber
38 1 tkerber
39 1 tkerber
class CenteredTetragonalFactory(_Tetragonalize,
40 1 tkerber
                                BodyCenteredOrthorhombicFactory):
41 1 tkerber
    "A factory for creating centered tetragonal lattices."
42 1 tkerber
    orthobase = BodyCenteredOrthorhombicFactory
43 1 tkerber
44 1 tkerber
CenteredTetragonal = CenteredTetragonalFactory()