Esempio n. 1
0
def replace(path, site, rep):
    """
    * 元素ラベルを交換する\n
    * e.g.: cvm_input.py ファイル名 --site "0011" --rep "AC BD"\n
    * --site は左から順に第一、第二、第三...サイトに対応\n
    0 で交換判定しない、 1 で交換判定するサイトを指定\n
    * "0011" では 4 副格子中の 3 番目と 4 番目の site 原子ラベルを交換する設定\n
    * --rep で交換するラベルの組み合わせを指定する\n
    * "AC BD" は A を C に B を D に置き換える
    * ラベルを変えない場合は "AA" のように同じラベルを振る
    """
    d = len(site)
    site_ids = [j + k*d for k in range(100)
                for j in [int(i) for i in range(len(site)) if site[i] == "1"]]
    print(site_ids)
    replace_dict = {x[0]:x[1] for x in rep.split()}
    strs = CVMStrs.from_str_file(path)
    strs.replace_site_elements(site_ids, replace_dict)
    fname = path + "_rev"
    for s in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        if s in rep:
            largest = s
    strs.complete_elements("ABCDEFGHIJKLMNOPQRSTUVWXYZ".index(largest)+1)
    strs.make_file(fname)
    try:
        enes = CVMEnergies.from_energies_file("energies.txt")
        enes.rename_from_str_labels(strs)
        enes.make_file("energies.txt_rev")
    except IOError:
        pass
Esempio n. 2
0
def rename_energies_from_cwm():
    """
    energies.txt を cwm.txt ファイルから修正する
    """
    path = "cwm.txt"
    cwms = CVMCwms.from_cwm_file(path)

    enes = CVMEnergies.from_energies_file("energies.txt")
    enes.rename_from_cwm_labels(cwms)
    enes.make_file("energies.txt_rev")
Esempio n. 3
0
def rename_energies(path):
    """
    energies.txt を str ファイルから修正する
    """
    path = "hcp.str"
    strs = CVMStrs.from_str_file(path)

    enes = CVMEnergies.from_energies_file("energies.txt")
    enes.rename_from_str_labels(strs)
    enes.make_file("energies.txt_rev")
Esempio n. 4
0
def exchange_elements(path, elem1, elem2):
    """
    原子ラベルを交換したファイルを作成
    """
    strs = CVMStrs.from_str_file(path)
    enes = CVMEnergies.from_energies_file("energies.txt")
    strs.exchange_elements(elem1, elem2)
    enes.exchange_elements(elem1, elem2)
    fname = path + "_rev"
    strs.make_file(fname)
    enes.make_file("energies.txt_rev")
Esempio n. 5
0
def remove_site(args):
    """
    指定したラベルの原子を削除する
    削除する原子数は ratio (原子数/トータルのサイト数) として指定する
    使用例
    'remove_site "B 6/10"'
    エネルギーを単位サイトあたりに補正する
    """
    elems = args.split()[0]
    ratio = Fraction(args.split()[1])
    enes = CVMEnergies.from_energies_file('energies.txt')
    enes.remove_element(elems, ratio)

    enes.make_file('energies.txt_rev')