Comments (1)
Here's some code for visualizing the 2D situation, with some additional points included.
function prep_bz_path(Rs)
Gs = reciprocalbasis(Rs)
cell = wignerseitz(Gs)
kp = irrfbz_path(2, Rs)
a, b = norm(Rs[1]), norm(Rs[2])
cosβ = dot(Rs[1], Rs[2])/(a*b)
sinβ = sin(acos(cosβ))
Y = ((((1 + (b / a) * cosβ) / 2) / sinβ) / sinβ)
N = (1 / 2 + (Y * a * cosβ) / b)
pts = Dict(
:Γ => [0, 0],
:B => [1/2, 0],
:Y => [0, 1/2,],
:A => [1/2, 1/2],
# not included in path:
:H => [1-N, -Y],
:H₂ => [N, -1+Y],
:H₄ => [-N, -Y],
:H′ => [-1+N, Y],
:H₂′ => [-N, 1-Y],
:H₄′ => [N, Y],
)
merge!(kp.points, pts)
return cell, kp
end
b = 1.0
β = π/2 + π/3
Rs = crystal(1.0, b, β)
cell, kp = prep_bz_path(Rs)
f = Figure();
ax = Axis(f[1,1]; aspect=1.0)
plot!(ax, cell)
plot!(ax, kp)
f
The additional points e.g., don't match when β<π/2 (but if b≠1 it also fails in other cases).
When it works, it looks like this (β = π/2 + π/3):
When it doesn't work, it looks like this (β = π/2 - π/7):
The situation can be explored a bit better by tuning a parameter continuously and following the BZ shape and points: (this produces a bunch of REPL errors for me, but still works, somehow)
sl_β = Slider(f[1, 2], range = range(0.0+π/10, π-π/10, 100), startvalue = β, horizontal = false)
on(sl_β.value) do β
Rs = crystal(1.0, b, β)
cell, kp = prep_bz_path(Rs)
empty!(ax)
plot!(ax, cell)
plot!(ax, kp)
end
f
In general, it looks quite painful: many cases to control for. Probably related to Rs
no longer being a "minimal" choice of the basis.
from brillouin.jl.
Related Issues (15)
- TagBot trigger issue HOT 29
- Use artifacts system for data generated during build stage HOT 1
- Make basis choices in `irrfbz_path` and `wignerseitz` agree
- Implement Munro et al. paths?
- Use RelocatableFolders.jl for referencing data files HOT 1
- Finding a periodic image inside the WS cell HOT 5
- Plot symbols like high symmetry points HOT 4
- Does it really require Julia v1.5 to install? HOT 7
- latticize!(kp::KPath{D}, Gs::BasisLike{D}) not implemented HOT 2
- high-symmetry k path for arbitrary lattice HOT 15
- Using Brillouin assumes scipy is installed if system python is used HOT 3
- Illegal instruction error HOT 33
- Make PyCall an optional dependency HOT 9
- A request to update dependency `Spglib.jl` to the latest version HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from brillouin.jl.