Example for MultiPie functionalities

Example for MultiPie functionalities#

#
# multipie.ipynb
#
from qtdraw import QtDraw

# show tag list.
def show_list(header, lst):
    print(header)
    if type(lst)==list:
        for i in lst:
            print(" ", i)
    else:
        for i, v in lst.items():
            print(i, v)

# 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("[0,0,1] # [1/2,1/2,0]", type="Q")
    win.mp_add_orbital("3z**2-r**2 # [1/2,1/2,1/2]", type="Q")

def draw_site(win):
    # create site SAMB, and draw one of them.
    lst = win.mp_site_samb_list("[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_bond_samb_list("[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_vector_samb_list("[1/2, 1/2, 0]", "Q")
    show_list("vector SAMB:", lst)
    win.mp_add_vector_samb("Q02+G01")

def draw_vector_modulation(win):
    # create vector SAMB, and draw one of them.
    lst = win.mp_vector_samb_list("[1/2, 1/2, 0]", "Q")
    show_list("vector SAMB:", lst)
    win.mp_add_vector_samb_modulation("[[Q02, 1, [1/2,0,0], cos], [Q02, 1, [0,1/2,0], sin]] : [2,2,1]")

def draw_orbital(win):
    # create orbital SAMB, and draw one of them.
    lst = win.mp_orbital_samb_list("[0,0,0];[1/2,1/2,0]", "Q", 1)
    show_list("orital SAMB:", lst)
    win.mp_add_orbital_samb("Q02+G01")

def draw_orbital_modulation(win):
    # create orbital SAMB, and draw one of them.
    lst = win.mp_orbital_samb_list("[0,0,0];[1/2,1/2,0]", "Q", 1)
    show_list("orital SAMB:", lst)
    win.mp_add_orbital_samb_modulation("[[Q01, 1, [1/2,0,0], cos], [Q02, 1, [0,1/2,0], sin]] : [2,2,1]")

# === 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")
fl = [draw_equivalent,draw_site,draw_bond,draw_vector,draw_orbital,draw_vector_modulation,draw_orbital_modulation]
# example
#   0: equivalent objects
#   1: site SAMB
#   2: bond SAMB
#   3: vector SAMB
#   4: orbital SAMB
#   5: vector modulation
#   6: orbital modulation)
no = 0
win.clear_data()
fl[no](win)