z2packdev / z2pack Goto Github PK
View Code? Open in Web Editor NEWA tool for calculating topological invariants.
Home Page: https://z2pack.greschd.ch
License: GNU General Public License v3.0
A tool for calculating topological invariants.
Home Page: https://z2pack.greschd.ch
License: GNU General Public License v3.0
make sure that when pos_tol
is met, a reload does not recompute the WCC.
Create two types of System OverlapSystem (the "traditional" System) and EigenvectorSystem which takes eigenvectors (periodic part u -- see test_mmn branch) instead.
Correspondingly, LineData should come in two flavors. Probably it's easiest to set up the "AdvancedLineData" as a subclass of the "traditional" LineData (names TBD), such that the overlap is just another computed attribute, and the setattr is changed s.t. now it deletes calculated attrs on change of the eigenvectors, not the overlaps. Alternatively the design could be such that overlaps / eigenvectors are not allowed to be changed.
Functions using AdvancedLineData can go by Duck Typing, throwing a (preferrably nice) Error when the eigenvectors are not present.
Check what it takes for QE to be compatible with curved surfaces. Is it possible with the current version of Wannier90?
Check Gabriel's modified version for spheres. If a general surface is not possible, could it be possible to calculate just spheres (automatically)?
Fix decorator_stub and test for it.
At least one test with a sphere / curved surface.
Expand test_line_run to feature some non-trivial examples
Test run with a given previous result, both explicit and by a file. Also test the quiet / non-quiet loading, and that they raise the right errors when something goes wrong.
Check if the number of WCC is consistent across different lines in a surface. Add a log entry which states the number of WCC for both surface and line.
Remove the tb interface that duplicates TBmodels. Keep "adapter" part which doesn't make sense to put into TBmodels.
Investigate what the new "single update" in the line's run.py does when the line existed before, but no convergence controllers are available.
Add the possibility to choose which states are taken into consideration, instead of just taking the lower-energy ones. It should be possible to
What is the impact of the serialization to JSON / msgpack? Since this uses the Interpreter, can it be done in a separate process?
First, I think there is an mistake in the website (http://z2pack.ethz.ch/doc/2.0/tutorial_surface.html#basic-syntax) about the equation
f(t1,0)=f(t2,1) +G , here, I think t2 should be t1.
Second, when I want to calculate Z2 with vasp, I define the surface with
surface=lambda s, t: [s, t/2, 0]
There is an error
ValueError: The k-points must be aligned in (positive) kx-, ky- or kz-direction for VASP runs.
Otherwise, when I try surface=lambda s, t: [t, s/2, 0] there is no error
I was quite confusing about the surface definition, which is written
surface=lambda t1, t2: [t1, t2, 0]
As the tutorials says, t2 is the direction Wannier charge centers are calculated. So the order of t1, t2 is quite important . So how can I USE the surface definition properly?
make save_result / load_result accept a file stream instead of a path, add functions save_to_file, load_from_file to accept a path.
find degeneracies in the WCC evolution (where each WCC has a partner)
Is it necessary to have the option of having the build folder as a function? The code could be simplified otherwise.
Maybe mark old lines, such that they remain in the result (still being available). They should not appear in the Z2 / Chern etc. calculations, however โ __getattr__
of the surface result should ignore them.
Fix serializer or revert to just using Pickle -- this may reduce complexity.
Check whether the k-points form a closed loop when doing the line calculation. The same check is now done in fp.kpoint
(only affects fp
calculations), and can probably be removed there.
gap_tol
should be relative to the largest gap, s.t. it doesn't depend as much on the number of WCC
use fsc.io_helper
(when done) for saving / loading.
add the methods to compute Chern and Z2 invariants to the restructure branch
Right now this does not work due to an error thrown by Wannier90. Maybe there is a workaround just like the case of the B1 check.
go through all public functions and make sure the naming / conventions are consistent. Example: what should be done about kpt_fct
, kpt_file
in fp.System
, since the kpoint module is called fp.kpoint
.
Write tests for the different plotting functions. Directly compare the output .pdf's if possible.
Old versions of the documentation should be available on the website. Ideally via a python-doc style drop-down menu, but a link which leads to a site listing all versions is also acceptable.
This is required for v.2 because the new version breaks backwards compatibility, meaning that some people may wish to remain with the old version. The latest version of the 1.x documentation should thus always be available.
object_hook
) is only triggered for dict
Does the z direction in 2D materials will result in the error:
"No overlap matrices were found. Maybe switch from shell_list to search_shells in wannier90.win or add more k-points to the string."
for the the c direction is about 30 A, which make the system a thin unit cell?
VASP:
ISYM = -1
NCORE
/ NPAR
QE:
...
Abinit:
...
Test new mmn parsing on different input files.
Create a logging system (using Python's logging module) to track the progress of the computation.
Update documentation to the many changes between v.1 and v.2
Make it such that the OverlapLineData
raises a nice error when the eigenstates
attribute is accessed. Can be a special case in __getattr__
.
Adapt the fp Systems to work with the new syntax of specifying the plane. They should be able to detect whether it is possible with the given backend (VASP, QE etc.) to compute this type of surface, and should convert from the new syntax (surface as a 2-parameter function) into their format.
Add a way to access the convergence report from the Result. Maybe make two subclasses SurfaceResult
, LineResult
that handle the creation of the convergence report differently.
Add tests for run_surface, and "full feature" tests that test the output of a full calculation.
Should the iterator be a ConvergenceControl enforcing that at least the first number N is calculated, or not?
pos_tol
is not given?Scenario: In a restart, I want to start the iterator at a higher value because the "new" lines are more likely to start higher.
Allow serializer to be changed between pickle / json / msgpack.
Investigate changing WCC when saving / loading with msgpack.
Hello,
I trying to use Z2pack to get WCC evolution curves for a 2D graphene-like system, calculated with VASP.
To understand how Z2pack work I tried to compute the example Bi_vasp but got some errors with the module z2pack.surface.plot.wcc :
Traceback (most recent call last):
File "run.py", line 50, in
z2pack.surface.plot.wcc(result_0, axis=ax[0])
AttributeError: module 'z2pack.surface' has no attribute 'plot'
Removing the word surface (z2pack.plot.wcc ) the module works but the figure does not look like the one in the folder plot, the open circles do not appear, only the blue diamonds show up.
The same error holds for z2pack.surface.invariant.z2 module.
Some idea why this is happening?
Also, if possible, could you give an example of a run.py file to plot the WCC curves for a 2D systems?
Thank you
Filipe Matusalem
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.