#
# multipie.ipynb
#
from qtdraw.core.qtdraw_app import QtDraw
# show tag list.
def show_list(header, lst):
print(header)
for i in lst:
print(" ", i)
# draw objects.
def draw_equivalent(win):
# draw equivalent site, bond, vector, and orbital.
win.mp_add_site("[1/4,0,1/3]")
win.mp_add_bond("[1/4,0,1/3];[0,1/4,2/3]")
win.mp_add_vector("Q", "[0,0,1]", "[1/2,1/2,0]")
win.mp_add_orbital("Q", "3z**2-r**2", "[1/2,1/2,1/2]")
def draw_harmonics(win):
# create harmonics tag, and draw one of them.
lst = win.mp_create_harmonics("Q", 3)
show_list("Harmonics:", lst)
win.mp_add_harmonics(lst[0], "[1/2,1/2,1/4]")
def draw_site(win):
# create site SAMB, and draw one of them.
lst = win.mp_create_site_samb("[1/4,0,1/3]")
show_list("site SAMB:", lst)
win.mp_add_site_samb(lst[1])
def draw_bond(win):
# create bond SAMB, and draw one of them.
lst = win.mp_create_bond_samb("[1/2,1/2,0]@[1/4,1/4,0]")
show_list("bond SAMB:", lst)
win.mp_add_bond_samb(lst[3])
def draw_vector(win):
# create vector SAMB, and draw one of them.
lst = win.mp_create_vector_samb("Q", "[1/2, 1/2, 0]")
show_list("vector SAMB:", lst)
win.mp_add_vector_samb("Q02+G02")
def draw_vector_modulation(win):
# create vector SAMB, and draw one of them.
lst = win.mp_create_vector_samb("Q", "[1/2, 1/2, 0]")
show_list("vector SAMB:", lst)
win.mp_add_vector_samb_modulation("[[Q02, 1, [1,0,0], cos], [Q02, 1, [0,1,0], sin]]")
def draw_orbital(win):
# create orbital SAMB, and draw one of them.
lst = win.mp_create_orbital_samb("Q", 1, "[0,0,0];[1/2,1/2,0]")
show_list("orital SAMB:", lst)
win.mp_add_orbital_samb("Q02+G02")
def draw_orbital_modulation(win):
# create orbital SAMB, and draw one of them.
lst = win.mp_create_orbital_samb("Q", 1, "[0,0,0];[1/2,1/2,0]")
show_list("orital SAMB:", lst)
win.mp_add_orbital_samb_modulation("[[Q02, 1, [1,0,0], cos], [Q02, 1, [0,1,0], sin]]")
def draw_hopping(win):
# draw hopping direction.
win.mp_add_hopping("[0,0,0];[1/2,1/2,0]")
# === initialization for example ===
win = QtDraw() # create QtDraw application.
win.mp_set_group("D3^4") # set space/point group by Schoenflies notation.
win.set_model("multipie")
# === example ===
win.clear_data()
draw_equivalent(win)
draw_harmonics(win)
draw_site(win)
draw_bond(win)
draw_vector(win)
draw_orbital(win)
draw_hopping(win)
draw_vector_modulation(win)
draw_orbital_modulation(win)
Harmonics:
Q(3,A1,,)
Q(3,A2,1,)
Q(3,A2,2,)
Q(3,E,1,0)
Q(3,E,1,1)
Q(3,E,2,0)
Q(3,E,2,1)
site SAMB:
Q01: Q(0,A1,,) = Qa(0,A1,) x Qs(0,A1,)
Q02: Q(1,E,,0) = Qa(0,A1,) x Qs(1,E,)
Q03: Q(1,E,,1) = Qa(0,A1,) x Qs(1,E,)
bond SAMB:
Q01: Q(0,A1,,) = Qa(0,A1,) x Qb(0,A1,)
Q02: Q(2,E,1,0) = Qa(0,A1,) x Qb(2,E,1)
Q03: Q(2,E,1,1) = Qa(0,A1,) x Qb(2,E,1)
T01: T(0,A1,,) = Qa(0,A1,) x Tb(0,A1,)
T02: T(2,E,1,0) = Qa(0,A1,) x Tb(2,E,1)
T03: T(2,E,1,1) = Qa(0,A1,) x Tb(2,E,1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 6
4 draw_harmonics(win)
5 draw_site(win)
----> 6 draw_bond(win)
7 draw_vector(win)
8 draw_orbital(win)
Cell In[1], line 36, in draw_bond(win)
34 lst = win.mp_create_bond_samb("[1/2,1/2,0]@[1/4,1/4,0]")
35 show_list("bond SAMB:", lst)
---> 36 win.mp_add_bond_samb(lst[3])
File ~/Library/CloudStorage/Dropbox/working/GitHub/QtDraw/qtdraw/core/qtdraw_app.py:2792, in QtDraw.mp_add_bond_samb(self, tag, scale)
2784 """
2785 MultiPie: Add bond SAMB.
2786
(...) 2789 scale (float, optional): width scale.
2790 """
2791 self.multipie_dialog.dialog.basis_combo_bond_samb.setCurrentText(tag)
-> 2792 self.multipie_dialog.dialog.basis_add_bond(scale)
File ~/Library/CloudStorage/Dropbox/working/GitHub/QtDraw/qtdraw/multipie/dialog_multipie.py:1397, in MultiPieDialog.basis_add_bond(self, scale)
1386 cluster_obj = create_samb_object(
1387 z_samb,
1388 cluster,
(...) 1394 t_odd,
1395 )
1396 label = samb_str[:3] + " \u21d0 " + remove_space(r_bond)
-> 1397 self.plugin.add_bond_samb(cluster, cluster_obj, label, z_type, scale)
File ~/Library/CloudStorage/Dropbox/working/GitHub/QtDraw/qtdraw/multipie/plugin_multipie.py:801, in MultiPiePlugin.add_bond_samb(self, bond, obj, label, z_type, scale)
791 self._pvw.add_bond(
792 position=c.value(),
793 direction=v.value(),
(...) 798 label=label,
799 )
800 else:
--> 801 v = v.transform(A, inplace=True)
802 if w < 0:
803 v = -v
TypeError: NSArray.transform() got an unexpected keyword argument 'inplace'