Skip to content

Commit cdc2b27

Browse files
committed
add ability to construct with custom mass and symbol
1 parent 962a622 commit cdc2b27

File tree

5 files changed

+119
-85
lines changed

5 files changed

+119
-85
lines changed

src/bravais/2D_bravais.jl

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,37 @@ export
55
Hexagonal
66

77

8-
function Oblique(a::T, b::T, θ::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"C") where T
8+
function Oblique(a::T, b::T, θ::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"q") where T
99
lattice = BravaisLattice(ObliqueLattice(a, b, θ), Primitive())
1010
basis = [Atom(atomic_symbol, [zero(a),zero(b)], charge = charge)]
1111
return Crystal(lattice,basis,N)
1212
end
1313

14-
function Oblique(a::T, b::T, θ::T, atomic_mass::Number, N::SVector{2}; charge = 0.0u"C") where T
14+
function Oblique(a::T, b::T, θ::T, atomic_mass::Number, N::SVector{2};
15+
charge = 0.0u"q", atomic_symbol::Symbol = :unknown) where T
1516
lattice = BravaisLattice(ObliqueLattice(a, b, θ), Primitive())
16-
basis = [Atom([zero(a),zero(b)], atomic_mass, charge = charge)]
17+
basis = [Atom(atomic_symbol, [zero(a),zero(b)]; charge = charge, mass = atomic_mass)]
1718
return Crystal(lattice,basis,N)
1819
end
1920

2021
#####
2122

22-
function Rectangular(a::T, b::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"C") where T
23+
function Rectangular(a::T, b::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"q") where T
2324
lattice = BravaisLattice(RectangularLattice(a, b), Primitive())
2425
basis = [Atom(atomic_symbol, [zero(a),zero(b)], charge = charge)]
2526
return Crystal(lattice,basis,N)
2627
end
2728

28-
function Rectangular(a::T, b::T, atomic_mass::Number, N::SVector{2}; charge = 0.0u"C") where T
29+
function Rectangular(a::T, b::T, atomic_mass::Number, N::SVector{2};
30+
charge = 0.0u"q", atomic_symbol::Symbol = :unknown) where T
2931
lattice = BravaisLattice(RectangularLattice(a, b), Primitive())
30-
basis = [Atom([zero(a),zero(b)], atomic_mass, charge = charge)]
32+
basis = [Atom(atomic_symbol, [zero(a),zero(b)]; mass = atomic_mass, charge = charge)]
3133
return Crystal(lattice,basis,N)
3234
end
3335

3436
#####
3537

36-
function RectangularCentered(a::T, b::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"C") where T
38+
function RectangularCentered(a::T, b::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"q") where T
3739
float_type = typeof(ustrip(a))
3840
half_a = float_type(0.5) * a
3941
half_b = float_type(0.5) * b
@@ -43,40 +45,43 @@ function RectangularCentered(a::T, b::T, atomic_symbol::Symbol, N::SVector{2}; c
4345
return Crystal(lattice,basis,N)
4446
end
4547

46-
function RectangularCentered(a::T, b::T, atomic_mass::Number, N::SVector{2}; charge = 0.0u"C") where T
48+
function RectangularCentered(a::T, b::T, atomic_mass::Number, N::SVector{2};
49+
charge = 0.0u"q", atomic_symbol::Symbol = :unknown) where T
4750
float_type = typeof(ustrip(a))
4851
half_a = float_type(0.5) * a
4952
half_b = float_type(0.5) * b
5053
lattice = BravaisLattice(RectangularLattice(a, b), Primitive())
51-
basis = [Atom([zero(a), zero(b)], atomic_mass, charge = charge),
52-
Atom([half_a, half_b], atomic_mass, charge = charge)]
54+
basis = [Atom(atomic_symbol, [zero(a), zero(b)]; mass = atomic_mass, charge = charge),
55+
Atom(atomic_symbol, [half_a, half_b]; mass = atomic_mass, charge = charge)]
5356
return Crystal(lattice,basis,N)
5457
end
5558

5659
#####
5760

58-
function Square(a::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"C") where T
61+
function Square(a::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"q") where T
5962
lattice = BravaisLattice(SquareLattice(a), Primitive())
6063
basis = [Atom(atomic_symbol, [zero(a),zero(a)], charge = charge)]
6164
return Crystal(lattice,basis,N)
6265
end
6366

64-
function Square(a::T, atomic_mass::Number, N::SVector{2}; charge = 0.0u"C") where T
67+
function Square(a::T, atomic_mass::Number, N::SVector{2};
68+
charge = 0.0u"q", atomic_symbol::Symbol = :unknown) where T
6569
lattice = BravaisLattice(SquareLattice(a), Primitive())
66-
basis = [Atom([zero(a),zero(a)], atomic_mass, charge = charge)]
70+
basis = [Atom(atomic_symbol, [zero(a),zero(a)]; mass = atomic_mass, charge = charge)]
6771
return Crystal(lattice,basis,N)
6872
end
6973

7074
#####
7175

72-
function Hexagonal(a::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"C") where T
76+
function Hexagonal(a::T, atomic_symbol::Symbol, N::SVector{2}; charge = 0.0u"q") where T
7377
lattice = BravaisLattice(Hexagonal2DLattice(a), Primitive())
7478
basis = [Atom(atomic_symbol, [zero(a),zero(a)], charge = charge)]
7579
return Crystal(lattice,basis,N)
7680
end
7781

78-
function Hexagonal(a::T, atomic_mass::Number, N::SVector{2}; charge = 0.0u"C") where T
82+
function Hexagonal(a::T, atomic_mass::Number, N::SVector{2};
83+
charge = 0.0u"q", atomic_symbol::Symbol = :unknown) where T
7984
lattice = BravaisLattice(Hexagonal2DLattice(a), Primitive())
80-
basis = [Atom([zero(a),zero(a)], atomic_mass, charge = charge)]
85+
basis = [Atom(atomic_symbol, [zero(a),zero(a)]; mass = atomic_mass, charge = charge)]
8186
return Crystal(lattice,basis,N)
8287
end

0 commit comments

Comments
 (0)