def __init__(self,
                 lattice=None,
                 basis=None,
                 coords=None,
                 cartesian=False,
                 wrap_coords=False):

        super().__init__()

        if basis is None:
            basis = BasisAtoms()
        else:
            basis = BasisAtoms(basis)
            basis.lattice = lattice
            if lattice is not None and coords is not None:
                for atom, pos in zip(basis, coords):
                    atom.lattice = lattice
                    if not cartesian:
                        atom.rs = pos
                    else:
                        atom.rs = lattice.cartesian_to_fractional(pos)

        self.lattice = lattice
        self.basis = basis
        self.wrap_coords = wrap_coords
        self.fmtstr = "{lattice!r}, {basis!r}, {coords!r}, " + \
            "cartesian=False, wrap_coords={wrap_coords!r}"
Exemple #2
0
    def __init__(self, lattice=None, basis=None, coords=None, cartesian=False,
                 wrap_coords=False, unit_cell=None, scaling_matrix=None):
        super().__init__()

        if unit_cell is None and basis is not None:
            basis = BasisAtoms(basis)
            basis.lattice = lattice
            if lattice is not None and coords is not None:
                for atom, pos in zip(basis, coords):
                    atom.lattice = lattice
                    if not cartesian:
                        atom.rs = pos
                    else:
                        atom.rs = lattice.cartesian_to_fractional(pos)

        # if basis is None:
        #     basis = BasisAtoms()

        # These attributes may be reset in the `@scaling_matrix.setter`
        # method and so they need to be initialized *before* setting
        # `self.scaling_matrix`.
        self.basis = basis
        self.lattice = lattice

        self.unit_cell = unit_cell
        self.wrap_coords = wrap_coords
        self.scaling_matrix = scaling_matrix

        self.fmtstr = \
            "lattice={lattice!r}, basis={basis!r}, coords={coords!r}, " + \
            "cartesian=False, wrap_coords={wrap_coords!r}, " + \
            "unit_cell={unit_cell!r}, scaling_matrix={scaling_matrix!r}"
def test4():
    lattice = Crystal3DLattice.cubic(a=5.0)
    basis = BasisAtoms(atoms=['C', 'C'])
    print(basis)
    print(basis.lattice)
    assert_true(basis.lattice is None)
    basis.lattice = lattice
    assert_true(isinstance(basis.lattice, Crystal3DLattice))
    def __init__(self,
                 lattice=None,
                 basis=None,
                 coords=None,
                 cartesian=False,
                 wrap_coords=False,
                 unit_cell=None,
                 scaling_matrix=None):
        super().__init__()

        if unit_cell is None and basis is not None:
            basis = BasisAtoms(basis)
            basis.lattice = lattice
            if lattice is not None and coords is not None:
                for atom, pos in zip(basis, coords):
                    atom.lattice = lattice
                    if not cartesian:
                        atom.rs = pos
                    else:
                        atom.rs = lattice.cartesian_to_fractional(pos)

        # if basis is None:
        #     basis = BasisAtoms()

        # These attributes may be reset in the `@scaling_matrix.setter`
        # method and so they need to be initialized *before* setting
        # `self.scaling_matrix`.
        self.basis = basis
        self.lattice = lattice

        self.unit_cell = unit_cell
        self.wrap_coords = wrap_coords
        self.scaling_matrix = scaling_matrix

        self.fmtstr = \
            "lattice={lattice!r}, basis={basis!r}, coords={coords!r}, " + \
            "cartesian=False, wrap_coords={wrap_coords!r}, " + \
            "unit_cell={unit_cell!r}, scaling_matrix={scaling_matrix!r}"
Exemple #5
0
    def __init__(self, lattice=None, basis=None, coords=None, cartesian=False,
                 wrap_coords=False):

        super().__init__()

        if basis is None:
            basis = BasisAtoms()
        else:
            basis = BasisAtoms(basis)
            basis.lattice = lattice
            if lattice is not None and coords is not None:
                for atom, pos in zip(basis, coords):
                    atom.lattice = lattice
                    if not cartesian:
                        atom.rs = pos
                    else:
                        atom.rs = lattice.cartesian_to_fractional(pos)

        self.lattice = lattice
        self.basis = basis
        self.wrap_coords = wrap_coords
        self.fmtstr = "{lattice!r}, {basis!r}, {coords!r}, " + \
            "cartesian=False, wrap_coords={wrap_coords!r}"