crystalbuilder 0.6.0__tar.gz → 0.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/.gitignore +5 -2
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/PKG-INFO +1 -1
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/README.md +5 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/__init__.py +1 -3
- crystalbuilder-0.7.1/crystalbuilder/bilbao.py +363 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/conversions/t3d.py +2 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/convert.py +26 -88
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/geometry.py +73 -48
- crystalbuilder-0.7.1/crystalbuilder/housekeeping/types.py +13 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/lattice.py +17 -12
- crystalbuilder-0.6.0/crystalbuilder/conversions/lumc.py → crystalbuilder-0.7.1/crystalbuilder/lumpy_convert.py +3 -13
- crystalbuilder-0.7.1/crystalbuilder/resources/1-generators.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/1-kvec.json +7 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/10-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/10-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/100-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/100-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/101-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/101-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/102-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/102-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/103-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/103-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/104-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/104-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/105-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/105-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/106-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/106-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/107-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/107-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/108-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/108-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/109-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/109-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/11-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/11-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/110-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/110-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/111-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/111-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/112-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/112-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/113-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/113-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/114-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/114-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/115-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/115-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/116-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/116-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/117-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/117-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/118-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/118-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/119-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/119-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/12-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/12-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/120-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/120-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/121-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/121-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/122-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/122-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/123-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/123-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/124-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/124-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/125-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/125-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/126-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/126-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/127-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/127-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/128-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/128-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/129-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/129-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/13-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/13-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/130-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/130-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/131-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/131-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/132-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/132-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/133-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/133-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/134-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/134-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/135-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/135-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/136-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/136-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/137-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/137-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/138-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/138-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/139-generators.json +642 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/139-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/14-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/14-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/140-generators.json +642 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/140-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/141-generators.json +642 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/141-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/142-generators.json +642 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/142-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/143-generators.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/143-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/144-generators.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/144-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/145-generators.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/145-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/146-generators.json +182 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/146-kvec.json +12 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/147-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/147-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/148-generators.json +362 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/148-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/149-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/149-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/15-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/15-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/150-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/150-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/151-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/151-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/152-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/152-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/153-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/153-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/154-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/154-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/155-generators.json +362 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/155-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/156-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/156-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/157-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/157-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/158-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/158-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/159-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/159-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/16-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/16-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/160-generators.json +362 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/160-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/161-generators.json +362 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/161-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/162-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/162-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/163-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/163-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/164-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/164-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/165-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/165-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/166-generators.json +722 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/166-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/167-generators.json +722 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/167-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/168-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/168-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/169-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/169-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/17-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/17-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/170-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/170-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/171-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/171-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/172-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/172-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/173-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/173-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/174-generators.json +122 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/174-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/175-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/175-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/176-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/176-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/177-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/177-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/178-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/178-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/179-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/179-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/18-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/18-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/180-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/180-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/181-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/181-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/182-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/182-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/183-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/183-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/184-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/184-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/185-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/185-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/186-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/186-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/187-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/187-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/188-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/188-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/189-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/189-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/19-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/19-kvec.json +107 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/190-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/190-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/191-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/191-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/192-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/192-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/193-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/193-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/194-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/194-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/195-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/195-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/196-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/196-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/197-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/197-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/198-generators.json +242 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/198-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/199-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/199-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/2-generators.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/2-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/20-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/20-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/200-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/200-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/201-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/201-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/202-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/202-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/203-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/203-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/204-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/204-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/205-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/205-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/206-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/206-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/207-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/207-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/208-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/208-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/209-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/209-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/21-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/21-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/210-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/210-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/211-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/211-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/212-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/212-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/213-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/213-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/214-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/214-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/215-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/215-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/216-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/216-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/217-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/217-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/218-generators.json +482 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/218-kvec.json +52 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/219-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/219-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/22-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/22-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/220-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/220-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/221-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/221-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/222-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/222-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/223-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/223-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/224-generators.json +962 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/224-kvec.json +72 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/225-generators.json +3842 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/225-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/226-generators.json +3842 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/226-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/227-generators.json +3843 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/227-kvec.json +63 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/228-generators.json +3842 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/228-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/229-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/229-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/23-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/23-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/230-generators.json +1922 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/230-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/24-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/24-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/25-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/25-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/26-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/26-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/27-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/27-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/28-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/28-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/29-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/29-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/3-generators.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/3-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/30-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/30-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/31-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/31-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/32-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/32-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/33-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/33-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/34-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/34-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/35-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/35-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/36-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/36-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/37-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/37-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/38-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/38-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/39-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/39-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/4-generators.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/4-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/40-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/40-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/41-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/41-kvec.json +32 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/42-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/42-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/43-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/43-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/44-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/44-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/45-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/45-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/46-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/46-kvec.json +27 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/47-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/47-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/48-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/48-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/49-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/49-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/5-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/5-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/50-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/50-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/51-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/51-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/52-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/52-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/53-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/53-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/54-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/54-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/55-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/55-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/56-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/56-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/57-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/57-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/58-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/58-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/59-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/59-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/6-generators.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/6-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/60-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/60-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/61-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/61-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/62-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/62-kvec.json +137 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/63-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/63-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/64-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/64-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/65-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/65-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/66-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/66-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/67-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/67-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/68-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/68-kvec.json +92 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/69-generators.json +642 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/69-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/7-generators.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/7-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/70-generators.json +642 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/70-kvec.json +77 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/71-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/71-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/72-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/72-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/73-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/73-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/74-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/74-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/75-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/75-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/76-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/76-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/77-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/77-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/78-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/78-kvec.json +22 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/79-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/79-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/8-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/8-kvec.json +12 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/80-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/80-kvec.json +17 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/81-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/81-kvec.json +42 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/82-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/82-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/83-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/83-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/84-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/84-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/85-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/85-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/86-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/86-kvec.json +62 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/87-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/87-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/88-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/88-kvec.json +47 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/89-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/89-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/9-generators.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/9-kvec.json +12 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/90-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/90-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/91-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/91-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/92-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/92-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/93-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/93-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/94-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/94-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/95-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/95-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/96-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/96-kvec.json +82 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/97-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/97-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/98-generators.json +322 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/98-kvec.json +57 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/99-generators.json +162 -0
- crystalbuilder-0.7.1/crystalbuilder/resources/99-kvec.json +37 -0
- crystalbuilder-0.7.1/crystalbuilder/simulation/isofreq.py +122 -0
- crystalbuilder-0.7.1/crystalbuilder/utils.py +22 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/vectors.py +27 -19
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/viewer.py +28 -23
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/DiamondPhCs/diamond_lattice-square-CoreShell.ipynb +53 -19
- crystalbuilder-0.6.0/crystalbuilder/bilbao.py +0 -254
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/.github/workflows/release.yml +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/.readthedocs.yaml +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/LICENSE +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/README.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/conversions/__init__.py +0 -0
- /crystalbuilder-0.6.0/crystalbuilder/lumpy_convert.py → /crystalbuilder-0.7.1/crystalbuilder/conversions/lumc.py +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/crystalbuilder/conversions/model.py +0 -0
- {crystalbuilder-0.6.0/crystalbuilder → crystalbuilder-0.7.1/crystalbuilder/simulation}/utils.py +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/Makefile +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/_requirements.txt +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/conf.py +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/index.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/make.bat +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/bilbao.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/convert.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/crystalbuilder.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/diamond_examples.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/geometry.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/getting_started.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/lattice.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/docs/source/vectors.rst +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/ExtraFeatures/SpaceGroup180.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/DiamondPhCs/MPB-DiamondSpheres.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/DiamondPhCs/core_shell_diamond.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/DiamondPhCs/diamond_lattice-square.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/DiamondPhCs/diamond_lattice.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/OtherPhCs/Double Gyroid Weyl Crystal.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/OtherPhCs/MPB-Isofrequency.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/OtherPhCs/SRSNetworkExample.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/OtherPhCs/Tetrahedral.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/examples/VedoAndMPB/basic_screw.ipynb +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/pyproject.toml +0 -0
- {crystalbuilder-0.6.0 → crystalbuilder-0.7.1}/version.py +0 -0
|
@@ -4,3 +4,8 @@ Crystalbuilder
|
|
|
4
4
|
crystalbuilder is a package that, as its name suggests, builds photonic crystals. This is really a frankenstein of existing software, including MPB, MEEP and Vedo. MPB is used for bandstructure simulations (and MEEP is used for MPB). Vedo is just a mesh viewer/editor that is used for displaying the generated crystals.
|
|
5
5
|
|
|
6
6
|
The package also uses beautifulsoup4 to read position data from the Bilbao Crystallographic Server, so that you can easily make structures corresponding to any of the 230 space groups. If you use this feature, make sure that the Bilbao server gets cited. The diamond cubic example shows how that should be done.
|
|
7
|
+
|
|
8
|
+
Crystalbuilder depends on vtk and its python version compatibility is often limited by the available wheels. Crystalbuilder currently supports Python <= 3.13
|
|
9
|
+
|
|
10
|
+
Install with:
|
|
11
|
+
`pip install crystalbuilder`
|
|
@@ -5,9 +5,7 @@ try:
|
|
|
5
5
|
except PackageNotFoundError:
|
|
6
6
|
__version__ = "unknown"
|
|
7
7
|
|
|
8
|
-
__all__ = ["convert", "geometry", "lattice", "vectors","bilbao", "viewer", "
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
__all__ = ["convert", "geometry", "lattice", "vectors","bilbao", "viewer", "conversions"]
|
|
11
9
|
|
|
12
10
|
|
|
13
11
|
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
|
|
2
|
+
import re
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
location = os.path.dirname(os.path.realpath(__file__))
|
|
6
|
+
resources = os.path.join(location, 'resources')
|
|
7
|
+
|
|
8
|
+
import requests
|
|
9
|
+
import numpy as np
|
|
10
|
+
from bs4 import BeautifulSoup
|
|
11
|
+
import math
|
|
12
|
+
import json
|
|
13
|
+
import crystalbuilder.housekeeping.types as cbt
|
|
14
|
+
|
|
15
|
+
Literal = cbt.Literal
|
|
16
|
+
Iterable = cbt.Iterable
|
|
17
|
+
vector_type = cbt.vector_type
|
|
18
|
+
angle_unit_type = cbt.angle_unit_type
|
|
19
|
+
scalar = cbt.number
|
|
20
|
+
array = cbt.array
|
|
21
|
+
matrix_like = cbt.matrix_like
|
|
22
|
+
|
|
23
|
+
bilbao_url = "https://cryst.ehu.es/"
|
|
24
|
+
|
|
25
|
+
cookie_dict = {"turnstile_passed": '1767991980'} #filler cookie. Should be set with _get_spacegroups()
|
|
26
|
+
|
|
27
|
+
def _get_spacegroups(cookie, spacegroup):
|
|
28
|
+
"""
|
|
29
|
+
This should not be used in a regular import scenario. This scrapes data from the Bilbao server to create offline resource files, but only works with a cookie obtained after passing a Cloudflare DDOS protection. It will fail if run without configuring that.
|
|
30
|
+
"""
|
|
31
|
+
formatted_cookie = str(cookie)
|
|
32
|
+
global cookie_dict
|
|
33
|
+
cookie_dict = {"turnstile_passed": formatted_cookie}
|
|
34
|
+
|
|
35
|
+
if spacegroup == 'all':
|
|
36
|
+
spacegroup = list(range(1, 231))
|
|
37
|
+
else:
|
|
38
|
+
pass
|
|
39
|
+
|
|
40
|
+
if isinstance(spacegroup, list):
|
|
41
|
+
for n in spacegroup:
|
|
42
|
+
groupnum = int(n)
|
|
43
|
+
get_kvectors(groupnum)
|
|
44
|
+
get_genmat(groupnum)
|
|
45
|
+
else:
|
|
46
|
+
get_kvectors(int(spacegroup))
|
|
47
|
+
get_genmat(int(spacegroup))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def check_resource(filename:str) -> dict | Literal[False]:
|
|
51
|
+
if os.path.exists(filename):
|
|
52
|
+
with open(filename) as f:
|
|
53
|
+
kvec_dict = json.load(f)
|
|
54
|
+
return kvec_dict
|
|
55
|
+
else:
|
|
56
|
+
return False
|
|
57
|
+
|
|
58
|
+
def create_resource(filename:str, dictionary:dict) -> None:
|
|
59
|
+
try:
|
|
60
|
+
os.mkdir(resources)
|
|
61
|
+
except FileExistsError:
|
|
62
|
+
print(f"Saving to Resources file at {resources}")
|
|
63
|
+
|
|
64
|
+
for key, value in dictionary.items():
|
|
65
|
+
if isinstance(value, np.ndarray):
|
|
66
|
+
dictionary[key] = value.tolist()
|
|
67
|
+
with open(filename, 'w') as f:
|
|
68
|
+
json.dump(dictionary, f, indent=3)
|
|
69
|
+
|
|
70
|
+
def get_kvectors(groupnum:int, dict_out: bool=False) -> dict|array:
|
|
71
|
+
|
|
72
|
+
kvec_array = [] #will convert coordinates to array
|
|
73
|
+
kvec_dictionary = {} ## for converting both symbols and coordinates to formatted dictionary
|
|
74
|
+
|
|
75
|
+
file = os.path.join(resources, f'{groupnum}-kvec.json')
|
|
76
|
+
localkdict = check_resource(file)
|
|
77
|
+
if localkdict:
|
|
78
|
+
for key, k in localkdict.items():
|
|
79
|
+
kvec_array.append(k)
|
|
80
|
+
save_file = False
|
|
81
|
+
kvec_dictionary = localkdict
|
|
82
|
+
else:
|
|
83
|
+
save_file = True
|
|
84
|
+
URL = bilbao_url+"cgi-bin/cryst/programs/nph-kv-list"
|
|
85
|
+
page = requests.post(URL, data={'gnum': str(groupnum),'standard':'Optimized listing of k-vector types using ITA description'}, cookies=cookie_dict)
|
|
86
|
+
soup = BeautifulSoup(page.content, "html.parser") # type: ignore
|
|
87
|
+
kvec_table = soup.find_all('table')[1]
|
|
88
|
+
rows = kvec_table('tr')[2:]
|
|
89
|
+
raw_kvec_dict = {}
|
|
90
|
+
for row in rows:
|
|
91
|
+
sympoint = row.find_all('td')[0].get_text() #first cell has symbol/letter
|
|
92
|
+
coordstring = row.find_all('td')[1].get_text() #next cell has the coordinates
|
|
93
|
+
coord = coordstring.split(',') #split the kvec into components
|
|
94
|
+
raw_kvec_dict[sympoint] = coord # create dictionary from symbol and coordinate
|
|
95
|
+
|
|
96
|
+
for key, n in raw_kvec_dict.items():
|
|
97
|
+
if len(n) == 3: #Make sure we have (kx,ky,kz)
|
|
98
|
+
point = [] ## container for the 3 coordinates
|
|
99
|
+
for index, k in enumerate(n): ## iterate through all the points
|
|
100
|
+
k= re.split(r'\b\D\b', k) ### remove blanks, letters, and slashes from division signs.
|
|
101
|
+
try:
|
|
102
|
+
coordinate = float(k[0])/float(k[1])
|
|
103
|
+
except IndexError:
|
|
104
|
+
coordinate = float(k[0])
|
|
105
|
+
except ValueError:
|
|
106
|
+
try:
|
|
107
|
+
coordinate = float(k[0])
|
|
108
|
+
except ValueError:
|
|
109
|
+
coordinate = 1
|
|
110
|
+
pass
|
|
111
|
+
pass
|
|
112
|
+
point.append(coordinate)
|
|
113
|
+
kxkykz = np.reshape(np.array(point),(3))
|
|
114
|
+
kvec_array.append(kxkykz)
|
|
115
|
+
|
|
116
|
+
kvec_dictionary[key] = kxkykz
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
kvec_array = np.reshape(np.asarray(kvec_array), (-1,3))
|
|
120
|
+
|
|
121
|
+
if save_file == True:
|
|
122
|
+
create_resource(file, kvec_dictionary)
|
|
123
|
+
|
|
124
|
+
if dict_out == True:
|
|
125
|
+
return kvec_dictionary
|
|
126
|
+
else:
|
|
127
|
+
return kvec_array
|
|
128
|
+
|
|
129
|
+
def get_genmat(groupnum:int) -> list[array]:
|
|
130
|
+
""" Retrieve generator matrices
|
|
131
|
+
|
|
132
|
+
Parameters
|
|
133
|
+
-----------
|
|
134
|
+
groupnum : int
|
|
135
|
+
One of 230 numbered space groups in the IUCr
|
|
136
|
+
|
|
137
|
+
Returns
|
|
138
|
+
--------
|
|
139
|
+
matrix_list : list
|
|
140
|
+
list of matrices representing general positions
|
|
141
|
+
|
|
142
|
+
"""
|
|
143
|
+
|
|
144
|
+
matrix_list = [] #will convert coordinates to array
|
|
145
|
+
gen_dictionary = {} ## for converting both symbols and coordinates to formatted dictionary
|
|
146
|
+
|
|
147
|
+
file = os.path.join(resources, f'{groupnum}-generators.json')
|
|
148
|
+
localgendict = check_resource(file)
|
|
149
|
+
if localgendict:
|
|
150
|
+
for key, k in localgendict.items():
|
|
151
|
+
matrix = k
|
|
152
|
+
matrix_list.append(k)
|
|
153
|
+
save_file = False
|
|
154
|
+
else:
|
|
155
|
+
save_file = True
|
|
156
|
+
URL = bilbao_url+ "cgi-bin/cryst/programs/nph-getgen"
|
|
157
|
+
page = requests.post(URL, data={'gnum': str(
|
|
158
|
+
groupnum), 'what': 'gp', 'list': 'Standard/Default+Setting'}, cookies=cookie_dict)
|
|
159
|
+
gen_pos = BeautifulSoup(page.content, "html.parser") # type: ignore
|
|
160
|
+
holder = gen_pos.find_all("pre")
|
|
161
|
+
|
|
162
|
+
matrix_text = []
|
|
163
|
+
for k in holder:
|
|
164
|
+
matrix_text.append(k.get_text()) #get text from table
|
|
165
|
+
|
|
166
|
+
for f in range(0, len(matrix_text)):
|
|
167
|
+
genpos_line = matrix_text[f].split('\n') #separate the matrix text based on newline, giving 3x4 matrix of strings
|
|
168
|
+
|
|
169
|
+
genpos_matrix = np.array([]).reshape(0,4) #create an empty numpy array to "append" each row of the matrix to
|
|
170
|
+
|
|
171
|
+
for row_string in genpos_line:
|
|
172
|
+
row_list = list(filter(None, row_string.split(' '))) # generate a list of strings for each row.
|
|
173
|
+
row_elements = [] ## create list to store the elements as floats
|
|
174
|
+
|
|
175
|
+
for element in row_list: #go through and convert string elements to floating point ones
|
|
176
|
+
try:
|
|
177
|
+
matrix_value = float(element) #try simply converting
|
|
178
|
+
except ValueError:
|
|
179
|
+
elem_split = element.split('/') #if the simple conversion doesn't work, it's likely because it's written as a fraction
|
|
180
|
+
matrix_value = float(elem_split[0])/float(elem_split[1]) #calculate the float from the fraction
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
row_elements.append(matrix_value) #Put the element in a list with the others in the same row
|
|
184
|
+
|
|
185
|
+
row_elements = np.asarray(row_elements) #convert to numpy array
|
|
186
|
+
genpos_matrix = np.vstack([genpos_matrix, row_elements]) #add the below our existing row
|
|
187
|
+
|
|
188
|
+
matrix_list.append(genpos_matrix) #After iterating through the rows of the matrix, put the matrix in the list
|
|
189
|
+
|
|
190
|
+
if save_file == True:
|
|
191
|
+
matdict = {}
|
|
192
|
+
for key, value in enumerate(matrix_list):
|
|
193
|
+
matdict[key] = value
|
|
194
|
+
|
|
195
|
+
create_resource(file, matdict)
|
|
196
|
+
|
|
197
|
+
return matrix_list
|
|
198
|
+
|
|
199
|
+
def get_coordinates(groupnum:int, origin:vector_type, output_array:bool=True, a_mag:vector_type = np.array([1,1,1])) -> list|array:
|
|
200
|
+
""" Generates positions from specified origin and generator matrices
|
|
201
|
+
|
|
202
|
+
Parameters
|
|
203
|
+
-----------
|
|
204
|
+
groupnum : int
|
|
205
|
+
One of 230 numbered space groups in the IUCr
|
|
206
|
+
|
|
207
|
+
origin : list
|
|
208
|
+
Any point that should be used as (x,y,z) for symmetry operations from the generator matrices
|
|
209
|
+
|
|
210
|
+
output_array : bool
|
|
211
|
+
Oututs numpy array by default (True), since the result should be an m x 3 matrix with m being the number of generator matrices. If False, the output is a list of lists.
|
|
212
|
+
|
|
213
|
+
Returns
|
|
214
|
+
--------
|
|
215
|
+
coordinates : list, array
|
|
216
|
+
Returns an array if output_array is True (default), returns a list object otherwise.
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
"""
|
|
221
|
+
### We exclude transforms that return points outside of the unit cell. This can be overriden by setting bound_override to True
|
|
222
|
+
bound_override = True
|
|
223
|
+
lattice_scaling = np.asarray(a_mag)
|
|
224
|
+
position_vector = np.array([origin[0], origin[1], origin[2]]).reshape(3,1)
|
|
225
|
+
matrix_list = get_genmat(groupnum)
|
|
226
|
+
coordinate_list = []
|
|
227
|
+
coordinate_array = np.array([]).reshape(0,3)
|
|
228
|
+
for n in matrix_list:
|
|
229
|
+
n = np.asarray(n)
|
|
230
|
+
# scaled_n = (n.T*lattice_scaling).T
|
|
231
|
+
linear_part, translation_part = np.split(n, [3,], axis=1) #Split matrix into linear part and translation part, *after* third element in row
|
|
232
|
+
|
|
233
|
+
#linear_part is 3x3, translation_part is 3x1
|
|
234
|
+
linear_product = np.matmul(linear_part, position_vector) #matrix part
|
|
235
|
+
# print(linear_product)
|
|
236
|
+
# print(f"lattice: {lattice_scaling} \n translation: {translation_part.T} ")
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
transformation = linear_product + (translation_part.T * lattice_scaling).T #affine transformation
|
|
240
|
+
# print(transformation)
|
|
241
|
+
new_point = transformation.reshape(1,3) #make row matrix
|
|
242
|
+
if ((((new_point<=lattice_scaling).all()) and ((new_point>= 0).all())) or (bound_override == True)):
|
|
243
|
+
if output_array==True:
|
|
244
|
+
coordinate_array = np.concatenate([coordinate_array, new_point], axis=0)
|
|
245
|
+
else:
|
|
246
|
+
coordinate_list.append(new_point.tolist()) #add point to list
|
|
247
|
+
else:
|
|
248
|
+
continue
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
if output_array == True:
|
|
252
|
+
return coordinate_array
|
|
253
|
+
else:
|
|
254
|
+
return coordinate_list
|
|
255
|
+
|
|
256
|
+
class SpaceGroup():
|
|
257
|
+
"""
|
|
258
|
+
One of 230 space groups
|
|
259
|
+
|
|
260
|
+
This class will have the properties necessary for each space group, as pulled from the Bilbao database.
|
|
261
|
+
|
|
262
|
+
Includes:
|
|
263
|
+
k-vectors with labels
|
|
264
|
+
generator matrices
|
|
265
|
+
generation of equivalent points
|
|
266
|
+
"""
|
|
267
|
+
|
|
268
|
+
def __init__(
|
|
269
|
+
self,
|
|
270
|
+
group_number: int,
|
|
271
|
+
**kwargs
|
|
272
|
+
) -> None:
|
|
273
|
+
|
|
274
|
+
"""
|
|
275
|
+
Create the instance of a Space Group
|
|
276
|
+
|
|
277
|
+
Parameters
|
|
278
|
+
-----------
|
|
279
|
+
group_number : int
|
|
280
|
+
1-230, corresponding to IUCr and Bilbao server notation.
|
|
281
|
+
|
|
282
|
+
kwargs
|
|
283
|
+
-------
|
|
284
|
+
points : list, ndarray
|
|
285
|
+
Initial coordinates that will be operated on by the symmetry operations to create the entire unit cell.
|
|
286
|
+
|
|
287
|
+
"""
|
|
288
|
+
|
|
289
|
+
self.point_list: array|None = kwargs.get("points", None)
|
|
290
|
+
self.group_num = group_number
|
|
291
|
+
|
|
292
|
+
self.kvec_dict = get_kvectors(self.group_num, dict_out=True)
|
|
293
|
+
self.kvec_arr = get_kvectors(self.group_num, dict_out=False)
|
|
294
|
+
|
|
295
|
+
self.generator_matrices = get_genmat(self.group_num)
|
|
296
|
+
|
|
297
|
+
self.generated_points = self.calculate_points(self.point_list)
|
|
298
|
+
|
|
299
|
+
def calculate_points(self, point_list: list|array|None, a_mag: vector_type = [1,1,1], ignore_repeats:bool = True) -> array:
|
|
300
|
+
"""
|
|
301
|
+
Return a list of coordinates resulting from symmetry operations to each point in `point_list`. This is called once if the `SpaceGroup` is initialized with the `points` kwarg.
|
|
302
|
+
It can be called any number of times to directly return points from new `point_list` inputs.
|
|
303
|
+
|
|
304
|
+
Parameter
|
|
305
|
+
----------
|
|
306
|
+
point_list : tuple, list, ndarray
|
|
307
|
+
point(s) on which to perform symmetry operations
|
|
308
|
+
|
|
309
|
+
a_mag : list, ndarray
|
|
310
|
+
magnitude of lattice vectors in each direction
|
|
311
|
+
|
|
312
|
+
ignore_repeats : bool (default true)
|
|
313
|
+
Ignore points that are identical to ones already calculated. There's no reason to change this unless you're trying to view all of the positions
|
|
314
|
+
|
|
315
|
+
Return
|
|
316
|
+
-------
|
|
317
|
+
generated_points : ndarray
|
|
318
|
+
Unique points resulting from the symmetry operations on points in point_list. This includes negative values and values greater than 1 (outside the primitive cell).
|
|
319
|
+
"""
|
|
320
|
+
generated_points = np.array([]).reshape(-1,3)
|
|
321
|
+
if point_list is not None:
|
|
322
|
+
if isinstance(point_list, (list, np.ndarray)):
|
|
323
|
+
for n in point_list:
|
|
324
|
+
scaled_point = n * np.asarray(a_mag)
|
|
325
|
+
newpoint = get_coordinates(self.group_num, origin=scaled_point, a_mag=a_mag)
|
|
326
|
+
generated_points = np.vstack((generated_points, newpoint))
|
|
327
|
+
generated_points.reshape(-1,3)
|
|
328
|
+
listlen=len(generated_points)
|
|
329
|
+
if ignore_repeats == True:
|
|
330
|
+
generated_points = np.unique(generated_points, axis=0)
|
|
331
|
+
|
|
332
|
+
else:
|
|
333
|
+
generated_points:array = get_coordinates(self.group_num, origin=point_list)
|
|
334
|
+
generated_points.reshape(-1,3)
|
|
335
|
+
listlen=len(generated_points)
|
|
336
|
+
if ignore_repeats == True:
|
|
337
|
+
generated_points = np.unique(generated_points, axis=0)
|
|
338
|
+
|
|
339
|
+
print(f"Generated {listlen} points, returned {len(generated_points)}. {listlen - len(generated_points)} duplicates removed")
|
|
340
|
+
print(f"Returned {len(generated_points)} points")
|
|
341
|
+
return generated_points
|
|
342
|
+
|
|
343
|
+
else:
|
|
344
|
+
return np.array([0,0,0])
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
if __name__ == "__main__":
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
_get_spacegroups(cookie='1770081648', spacegroup=230)
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
# crystest = SpaceGroup(227)
|
|
354
|
+
# pointlist = crystest.calculate_points([(0,0,0)])
|
|
355
|
+
# print(pointlist)
|
|
356
|
+
print(pointlist.shape)
|
|
357
|
+
|
|
358
|
+
fig = plt.figure()
|
|
359
|
+
ax = fig.add_subplot(projection='3d')
|
|
360
|
+
ax.invert_xaxis()
|
|
361
|
+
|
|
362
|
+
ax.scatter(pointlist[:, 0], pointlist[:, 1], pointlist[:,2])
|
|
363
|
+
plt.show()
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
+
from crystalbuilder.conversions.t3d import geo_to_tidy3d
|
|
2
3
|
from crystalbuilder import lattice as lat
|
|
3
4
|
from crystalbuilder import geometry as geo
|
|
4
|
-
from crystalbuilder import
|
|
5
|
+
from crystalbuilder.conversions import lumc as lc
|
|
5
6
|
import platform
|
|
6
7
|
if platform.system() == 'Windows':
|
|
7
8
|
pass
|
|
8
9
|
else:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
try:
|
|
11
|
+
import meep as mp
|
|
12
|
+
except:
|
|
13
|
+
pass
|
|
12
14
|
try:
|
|
13
15
|
import lumpy.simobjects as so
|
|
14
16
|
except ModuleNotFoundError:
|
|
@@ -58,7 +60,8 @@ def unpack_supercell(supercell):
|
|
|
58
60
|
def flatten(list):
|
|
59
61
|
""" Some of these methods can accidentally create nested lists, so this function can be used in try statements to correct those """
|
|
60
62
|
try:
|
|
61
|
-
|
|
63
|
+
if isinstance(list, list):
|
|
64
|
+
flat_list = [item for sublist in list for item in sublist]
|
|
62
65
|
except:
|
|
63
66
|
flat_list = list
|
|
64
67
|
return flat_list
|
|
@@ -112,11 +115,14 @@ def _geo_to_meep(geometry_object, material, ismpb = False, **kwargs):
|
|
|
112
115
|
|
|
113
116
|
if ismpb == True:
|
|
114
117
|
k = vectorize(m.center)
|
|
118
|
+
ax = vectorize(m.axis)
|
|
115
119
|
newcent = mp.cartesian_to_lattice(k, geo_lattice)
|
|
120
|
+
newax = mp.cartesian_to_lattice(ax, geo_lattice)
|
|
116
121
|
else:
|
|
117
122
|
newcent = vectorize(m.center)
|
|
123
|
+
newax = vectorize(m.axis)
|
|
118
124
|
|
|
119
|
-
item = mp.Cylinder(radius=m.radius, axis=
|
|
125
|
+
item = mp.Cylinder(radius=m.radius, axis=newax, height=m.height, center=newcent, material=material)
|
|
120
126
|
geom_list.append(item)
|
|
121
127
|
|
|
122
128
|
elif isinstance(m, geo.Triangle):
|
|
@@ -245,79 +251,6 @@ def geo_to_mpb(geometry_object, material, lattice):
|
|
|
245
251
|
mpb_list = flatten(newlist)
|
|
246
252
|
return mpb_list
|
|
247
253
|
|
|
248
|
-
def _geo_to_tidy3d(geometry_object, material, **kwargs):
|
|
249
|
-
"""Converts geometry object (or supercell) to the Tidy3D equivalent. Note that Tidy3D values always include units (microns by default).
|
|
250
|
-
|
|
251
|
-
Tidy3D geometries are combined with a specified medium to create a Tidy3D structure object, which can be given a unique name. For now, the naming will be systematic. This might be changed in the future via kwargs.
|
|
252
|
-
|
|
253
|
-
The material assignment will occur after all of the geometries have been made. This means a td.GeometryGroup object will be created and made into a structure.
|
|
254
|
-
"""
|
|
255
|
-
|
|
256
|
-
geom_list = []
|
|
257
|
-
try:
|
|
258
|
-
for m in geometry_object:
|
|
259
|
-
if isinstance(m, geo.SuperCell):
|
|
260
|
-
if debug=="on": print("This is running the iterable Supercell")
|
|
261
|
-
innerlist = _geo_to_tidy3d(m, material)
|
|
262
|
-
geom_list.append(innerlist)
|
|
263
|
-
|
|
264
|
-
elif isinstance(m, geo.Cylinder):
|
|
265
|
-
if debug=="on": print("This is running the iterable cylinder")
|
|
266
|
-
tdgeom = td.Cylinder(radius=m.radius, axis= 2, length=m.height, center=tuple(flatten(m.center)))
|
|
267
|
-
geom_list.append(tdgeom)
|
|
268
|
-
|
|
269
|
-
except TypeError:
|
|
270
|
-
if isinstance(geometry_object, geo.SuperCell):
|
|
271
|
-
if debug=="on": print("This is running the single Supercell")
|
|
272
|
-
structs = unpack_supercell(geometry_object)
|
|
273
|
-
m = structs
|
|
274
|
-
newlist = _geo_to_tidy3d(m, material)
|
|
275
|
-
geom_list.append(newlist)
|
|
276
|
-
|
|
277
|
-
elif isinstance(geometry_object, geo.Cylinder):
|
|
278
|
-
m = geometry_object
|
|
279
|
-
if debug=="on": print("This is creating a single cylinder named")
|
|
280
|
-
tdgeom = td.Cylinder(radius=m.radius, axis= 2, length=m.height, center=tuple(flatten(m.center)))
|
|
281
|
-
geom_list.append(tdgeom)
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return geom_list
|
|
285
|
-
|
|
286
|
-
def geo_to_tidy3d(geometry_object, material):
|
|
287
|
-
"""Converts CrystalBuilder geometry object(s) to the corresponding Tidy3D object(s) with defined medium.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
`material` can be either a td.Medium() object or a float corresponding to the refractive index of the desired Medium.
|
|
291
|
-
|
|
292
|
-
This is a higher level wrapper of the _geo_to_tidy3d function, which I have yet to document
|
|
293
|
-
|
|
294
|
-
Parameters
|
|
295
|
-
------------
|
|
296
|
-
geometry_object : Geometry or list of Geometry
|
|
297
|
-
an object or list of objects
|
|
298
|
-
material : td.Medium() or float
|
|
299
|
-
Tidy3D Medium or the refractive index that will be assigned to the material.
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
Returns
|
|
304
|
-
------------
|
|
305
|
-
td.Structure()
|
|
306
|
-
a Tidy3D structure group with defined Medium
|
|
307
|
-
|
|
308
|
-
"""
|
|
309
|
-
|
|
310
|
-
geometry_list = flatten(flatten(_geo_to_tidy3d(geometry_object, material)))
|
|
311
|
-
print(geometry_list)
|
|
312
|
-
geometry_group = td.GeometryGroup(geometries = tuple(geometry_list))
|
|
313
|
-
|
|
314
|
-
if isinstance(material, td.Medium):
|
|
315
|
-
medium = material
|
|
316
|
-
else:
|
|
317
|
-
medium = td.Medium(permittivity = material**2, name="DielectricMaterial")
|
|
318
|
-
return td.Structure(geometry=geometry_group, medium=medium, name="Structure Group")
|
|
319
|
-
|
|
320
|
-
|
|
321
254
|
def _geo_to_lumerical(geometry_object, material):
|
|
322
255
|
"""
|
|
323
256
|
Converts Geometry object to list of lumerical objects
|
|
@@ -432,15 +365,20 @@ def to_mpb_lattice(geolattice):
|
|
|
432
365
|
if __name__ == '__main__':
|
|
433
366
|
"""testing code"""
|
|
434
367
|
|
|
435
|
-
mat1 = mp.Medium(epsilon=4)
|
|
436
|
-
geometry_lattice = mp.Lattice(size=mp.Vector3(1, 1),
|
|
437
|
-
|
|
438
|
-
|
|
368
|
+
# mat1 = mp.Medium(epsilon=4)
|
|
369
|
+
# geometry_lattice = mp.Lattice(size=mp.Vector3(1, 1),
|
|
370
|
+
# basis1=mp.Vector3(np.sqrt(3) / 2, 0.5),
|
|
371
|
+
# basis2=mp.Vector3(0,0.5))
|
|
439
372
|
|
|
440
|
-
tri = geo.eqTriangle(1, .5)
|
|
441
|
-
print(tri.vertices.shape)
|
|
442
|
-
print(type(tri))
|
|
373
|
+
# tri = geo.eqTriangle(1, .5)
|
|
374
|
+
# print(tri.vertices.shape)
|
|
375
|
+
# print(type(tri))
|
|
443
376
|
|
|
444
|
-
newgeo = _geo_to_lumerical(tri, mat1)
|
|
377
|
+
# newgeo = _geo_to_lumerical(tri, mat1)
|
|
378
|
+
|
|
379
|
+
# print(newgeo[0].out())
|
|
445
380
|
|
|
446
|
-
|
|
381
|
+
|
|
382
|
+
cylinder = geo.Cylinder.from_vertices([[0,0,0], [1,1,1]], radius=.2)
|
|
383
|
+
cylinder2 = geo.Cylinder(center=[1,1,0], radius=.1, height=3, axis=2)
|
|
384
|
+
newgeo = geo_to_tidy3d([cylinder, cylinder2], material=3)
|