⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 meshreordering

📁 利用C
💻
字号:
#!/usr/bin/env pythonimport sysdef main(argv):    # Get dictionary of connectivities    dic_connects = get_connects(argv[0])    # Verify connectivities    check_sort(dic_connects)    check_2_1(dic_connects)    check_3_2(dic_connects)    check_3_1(dic_connects)def check_2_1(dic_connects):    dic21 = (2,1)    dic20 = (2,0)    dic10 = (1,0)    non_inc = [0,1,2]    print "\n ---- Verifying (2-1) ----"    ok = True    entities21 = dic_connects[dic21]    entities20 = dic_connects[dic20]    entities10 = dic_connects[dic10]    # Inverting dictionary    inv10 = {}    for e10 in entities10:        inv10[tuple(entities10[e10])] = [e10]    for e21 in entities21:        l = []        # Get list of edges on cell/facet to compare against        l21 = entities21[e21]        # Get list of vertices for cell/facet        l20 = entities20[e21]        for n in non_inc:            # Copy vertices and remove non-incident vertices            le = [l2 for l2 in l20]            le.remove(l20[n])            # Look for the edge with these vertices            l += inv10[tuple(le)]        # If the two list are not equal, reordering is not OK        if not l == l21:            ok = False            print "l:   ",l            print "l21: ",l21            print ""    if ok and entities21:        print " - OK"    elif not ok:        print " - NOT OK"    else:        print " - nothing to do"def check_3_2(dic_connects):    dic32 = (3,2)    dic30 = (3,0)    dic20 = (2,0)    non_inc = [0,1,2,3]    print "\n ---- Verifying (3-2) ----"    ok = True    entities32 = dic_connects[dic32]    entities30 = dic_connects[dic30]    entities20 = dic_connects[dic20]    # Inverting dictionary    inv20 = {}    for e20 in entities20:        inv20[tuple(entities20[e20])] = [e20]    for e32 in entities32:        l = []        # Get list of facets on cell to compare against        l32 = entities32[e32]        # Get list of vertices for cell        l30 = entities30[e32]        for n in non_inc:            le = [l3 for l3 in l30]            le.remove(l30[n])            # Look for the facet with these vertices            l += inv20[tuple(le)]        # If the two list are not equal, reordering is not OK        if not l == l32:            ok = False            print "l:   ",l            print "l32: ",l32            print ""    if ok and entities32:        print " - OK"    elif not ok:        print " - NOT OK"    else:        print " - nothing to do"def check_3_1(dic_connects):    dic31 = (3,1)    dic30 = (3,0)    dic10 = (1,0)    non_inc = [(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)]    print "\n ---- Verifying (3-1) ----"    ok = True    entities31 = dic_connects[dic31]    entities30 = dic_connects[dic30]    entities10 = dic_connects[dic10]    # Inverting dictionary    inv10 = {}    for e10 in entities10:        inv10[tuple(entities10[e10])] = [e10]    for e31 in entities31:        l = []        # Get list of edges on cell to compare against        l31 = entities31[e31]        # Get list of vertices for cell        l30 = entities30[e31]        for nc in non_inc:            # Copy vertices and remove non-incident vertices            le = [l3 for l3 in l30]            for n in nc:                le.remove(l30[n])            # Look for the facet with these vertices            l += inv10[tuple(le)]        # If the two list are not equal, reordering is not OK        if not l == l31:            ok = False            print "l:   ",l            print "l31: ",l31            print ""    if ok and entities31:        print " - OK"    elif not ok:        print " - NOT OK"    else:        print " - nothing to do"def check_sort(dic_connects):    # Connectivities that should be sorted lexicographically    sort_dics = [(1,0), (2,0), (3,0)]    print "\n ---- Verifying that vertices are sorted on all mesh entities ----"    for dic in sort_dics:        ok = True        print " -", dic        # Get dictionary of entities        ent_dic = dic_connects[dic]        if ent_dic:            for entity in ent_dic:                # Get list of vertices                l = ent_dic[entity]                # Copy list                ls = [s for s in l]                # Sort original list and compare lists                l.sort()                if not l == ls:                    ok = False            if ok:                print " - OK"            else:                print " - NOT OK"        else:            print " - nothing to do"def get_connects(name):    # Supported connectivities    connects = [(1,0), (2,0), (3,0), (2,1), (3,1), (3,2)]    # Look for this    dic = {}    for entry in connects:        dic[entry] = {}    # Read file, and get lines    f = open(name, "r")    lines = f.read().split("\n")    f.close()    # Remove blank lines    lines = [line for line in lines if line.split()]    # Loop lines and check for supported connectivities    entry = ()    ints = ["0", "1", "2", "3"]    for line in lines:        if not ("--" in line or ":" in line):            entry = ()        if "Connect" in line and "--" in line:            words = line.split(" ")            entry = tuple([int(w.replace(":","")) for w in words if w.replace(":","") in ints])            if not entry in connects:                entry = ()            line = ""        if entry and line:            if ":" in line:                entity = line.split(":")[0].split(" ")[-1]                vals = [int(v) for v in line.split(":")[1].split(" ") if v]                dic[entry][int(entity)] = vals    return dicif __name__ == "__main__":    sys.exit(main(sys.argv[1:]))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -