def create_tree():
    result_lst = read_results(cgos_dir)
    hash_tree = {}
    i = 0
    for result in result_lst:
        if result["P" + opponent_color]==opponent:
            random.seed(1)
            g = load_sgf.load_file(cgos_dir + result["File"])
            cboard = g.current_board
            #print cboard
            print result
            black_won = result["RE"][0]=="B"
            next_move = PASS_MOVE
            while True:
                key = g.search_key()
                moves = hash_tree.get(key, {})
                counts = moves.get(next_move, [0, 0])
                counts[black_won] += 1
                moves[next_move] = counts
                hash_tree[key] = moves
                if len(g.move_history)==0:
                    break
                next_move = g.move_history[-1]
                g.undo_move()
            i += 1
            print i, len(hash_tree), len(hash_tree)/float(i)
            #print hash_tree
            #random.seed(1)
            #g = Game(9)
            #print hash_tree[g.search_key()]
            #break

    fp = open(opening_file(), "w")
    cPickle.dump(hash_tree, fp)
Exemple #2
0
def k_generator(data_dir, vystup_dir):
    os.chdir(data_dir)
    data_PU = read_results('results.csv')

    data_used = []
    for i in range(0, len(data_PU)):
        data_used.append(data_PU[i][0])
        data_used.append(data_PU[i][1])
        data_used.append(data_PU[i][2])
        data_used.append(data_PU[i][4])
        a = 0.15 * ((float(data_PU[i][1]) * float(data_PU[i][2]) *
                     float(data_PU[i][4]))**0.5)
        # print(float(data_PU[i][1]), float(data_PU[i][2]), float(data_PU[i][4]))
        data_used.append(str(round(a, 2)))
        data_used.append('{} PG6 21A/183B'.format(math.ceil(a)))

    data_used = list(chunks(data_used, 6))

    with doc.create(Section('Hasicí přístroje')):
        with doc.create(Subsection('Přehled hasicích přístrojů')):
            doc.append(
                NoEscape(r'Přehled počtu a druhu všech hasicích přístrojů,\
                                které budou v objektu osazeny, je patrný z\
                                tabulky \ref{PHP_stanoveni}.'))

        for i in range(0, len(data_used)):
            data_used[i][1] = data_used[i][1].replace(".", ",")
            data_used[i][2] = data_used[i][2].replace(".", ",")
            data_used[i][3] = data_used[i][3].replace(".", ",")
            data_used[i][4] = data_used[i][4].replace(".", ",")

        with doc.create(LongTable("l c c c c l", pos=['htb'])) as data_table:
            doc.append(Command('caption', 'Počet a druh hasicích přístrojů'))
            doc.append(Command('label', NoEscape('PHP_stanoveni')))
            doc.append(Command('\ '))
            data_table.append
            data_table.add_hline()
            data_table.add_row([
                "Požární úsek", "S", "a", "c",
                NoEscape('$n_r$'), "Počet PHP - typ"
            ])
            data_table.add_row([" ", NoEscape('[m$^2$]'), "-", "-", "-", " "])
            data_table.add_hline()
            data_table.end_table_header()
            for i in range(0, len(data_used)):
                if i % 2 != 0:
                    data_table.add_row(data_used[i], color="Hex")
                else:
                    data_table.add_row(data_used[i])
            data_table.add_hline()
            # doc.append(NoEscape('\insertTableNotes'))
            os.chdir(vystup_dir)
    doc.generate_pdf("K_hasicaky", clean_tex=False)
def show_top_players():
    result_lst = read_results(cgos_dir)
    d = {}
    d_all = {}
    for result in result_lst:
        for color in ("W", "B"):
            name = result["P" + color]
            rating = result[color + "R"]
            m = re.match(r"(-?\d+)", rating)
            if m:
                rating = int(m.group(1))
                if rating >= 1600:
                    d[name] = d.get(name, 0) + 1
            d_all[name] = d_all.get(name, 0) + 1
    pprint.pprint(d)
    print sum(d.values()), sum(d_all.values())
    return d, d_all
def E1_generator(soubor, cesta, data_konst, vystup_dir, data_dir):
    os.chdir(data_dir)
    data_PU = read_results('results.csv')
    info1 = read_results('raw_data_info.csv')
    podlazi = int(info1[2][0])
    info = info1[0][0]
    SPB_check = []
    n_uniques = []
    d = {'I.': 1, 'II.': 2, 'III.': 3, 'IV.': 4, 'V.': 5, 'VI.': 6, 'VII.': 7}
    e = {1: 'I.', 2: 'II.', 3: 'III.', 4: 'IV.', 5: 'V.', 6: 'VI.', 7: 'VII.'}
    check_PP = {
        'I.': 30,
        'II.': 45,
        'III.': 60,
        'IV.': 90,
        'V.': 120,
        'VI.': 180,
        'VII.': 180
    }
    check_NP = {
        'I.': 15,
        'II.': 30,
        'III.': 45,
        'IV.': 60,
        'V.': 90,
        'VI.': 120,
        'VII.': 180
    }
    for i in range(0, len(data_PU)):
        SPB_check.append(data_PU[i][6])
        n_uniques.append(data_PU[i][0])

    os.chdir(cesta)
    [Nazev_kce, Specif1, Specif2, b, a, h, Ly, Lx,
     zeb_a] = konst_data_prep('E.1 PKD_Stěna', data_konst)
    wb = openpyxl.load_workbook(soubor, data_only=True)
    Data_PKD = wb.get_sheet_by_name('Databaze_PKD')

    Name_data = []
    prep_data = []
    dim_row = Data_PKD.max_row  # determines maximum number of rows
    for row in Data_PKD.iter_rows(min_row=4,
                                  max_row=dim_row,
                                  min_col=1,
                                  max_col=1):
        for cell in row:
            Name_data.append(cell.value)
    for row in Data_PKD.iter_rows(min_row=4,
                                  max_row=dim_row,
                                  min_col=3,
                                  max_col=3):
        for cell in row:
            prep_data.append(cell.value)

    preidx = Name_data.index('Porotherm')
    Name_data_prep = Name_data[preidx:]
    Prep_data_text = prep_data[preidx:]
    Name_data = Name_data[:preidx]
    prep_data = prep_data[:preidx]

    dictionary = dict(zip(Name_data, prep_data))
    dictionary_text = dict(zip(Name_data_prep, Prep_data_text))
    with doc.create(Section('Zhodnocení požární odolnosti konstrukcí')):
        spb_val = []
        for i in range(0, len(SPB_check)):
            spb_val.append(d[SPB_check[i]])
        spb_max = max(spb_val)
        spb_max = e[spb_max]
        if spb_max == 'I.':
            if info == 'nehořlavý':
                with doc.create(Itemize()) as itemize:
                    itemize.add_item(
                        "Normový požadavek na požární stěny v NP - I.SPB - (R)EI 15 DP1"
                    )
                for i in range(0, len(n_uniques)):
                    if 'P' in n_uniques[i]:
                        itemize.add_item(
                            "Normový požadavek na požární stěny v PP - I.SPB - (R)EI 30 DP1"
                        )
                    break
                if podlazi > 1:
                    itemize.add_item(
                        "Normový požadavek na požární stěny v posledním NP - III.SPB - (R)EI 30 DP1"
                    )
        if spb_max == 'II.':
            with doc.create(Itemize()) as itemize:
                itemize.add_item(
                    "Normový požadavek na požární stěny v NP - II.SPB - (R)EI 30 DP1"
                )
        if spb_max == 'III.':
            if info == 'nehořlavý':
                with doc.create(Itemize()) as itemize:
                    itemize.add_item(
                        "Normový požadavek na požární stěny v NP - III.SPB - (R)EI 45 DP1"
                    )
                    for i in range(0, len(n_uniques)):
                        if 'P' == n_uniques[i][0]:
                            itemize.add_item(
                                "Normový požadavek na požární stěny v PP - III.SPB - (R)EI 60 DP1"
                            )
                        break
                if podlazi > 1:
                    itemize.add_item(
                        "Normový požadavek na požární stěny v posledním NP - III.SPB - (R)EI 30 DP1"
                    )
        if spb_max == 'IV.':
            with doc.create(Itemize()) as itemize:
                itemize.add_item(
                    "Normový požadavek na požární stěny v NP - IV.SPB - (R)EI 60 DP1"
                )
        if spb_max == 'V.':
            with doc.create(Itemize()) as itemize:
                itemize.add_item(
                    "Normový požadavek na požární stěny v NP - V.SPB - (R)EI 90 DP1"
                )
        if spb_max == 'VI.':
            with doc.create(Itemize()) as itemize:
                itemize.add_item(
                    "Normový požadavek na požární stěny v NP - VI.SPB - (R)EI 120 DP1"
                )
        if spb_max == 'VII.':
            with doc.create(Itemize()) as itemize:
                itemize.add_item(
                    "Normový požadavek na požární stěny v NP - VII.SPB - (R)EI 180 DP1"
                )

        save_var = []
        save_b = []
        for i in range(0, len(Specif2)):
            if Specif2[i] in dictionary:
                if Specif2[i] == 'ŽB. nenosné stěny':
                    '''TempName = Name_data.index(Specif2[i])
                    if TempName > 42:
                        doc.append(dictionary[Specif2[i]])'''
                    ''' Posouzení podle tab. 2.2 - nenosné stěny '''
                    # if 0 <= TempName < 2:
                    if b[i] < 60:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    if 60 <= b[i] < 70:
                        check = 30
                    if 70 <= b[i] < 80:
                        check = 45
                    if 80 <= b[i] < 100:
                        check = 60
                    if 100 <= b[i] < 120:
                        check = 90
                    if 120 <= b[i] < 150:
                        check = 120
                    if b[i] >= 150:
                        check = 180
                    token = 'železobetonovými nenosnými stěnami'
                    token_tab = '2.2'
                    token_type = 'EI'
                ''' Posouzení podle tabulky 2.3 - nosné stěny '''
                if Specif2[i] == 'ŽB. nosné stěny':
                    if b[i] < 120 and a[i] < 10:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    if 120 <= b[i] < 125 and a[i] < 25:
                        check = 30
                    if 125 <= b[i] < 130 and a[i] < 25:
                        check = 45
                    if (130 <= b[i] < 140 and a[i] < 25)\
                       or (b[i] > 140 and a[i] < 25):
                        check = 60
                    if 140 <= b[i] < 160 and 25 <= a[i] < 35\
                       or (b[i] > 160 and a[i] < 35):
                        check = 90
                    if 160 <= b[i] < 210 and 35 <= a[i] < 50\
                       or (b[i] > 210 and a[i] < 50):
                        check = 120
                    if b[i] >= 210 and a[i] >= 50:
                        check = 180
                    token = 'železobetonovými nosnými stěnami'
                    token_tab = '2.3'
                    token_type = 'REI'
                if Specif2[i] == 'Nenosné (všechny skupiny) – 500<p<2400':
                    top = [100, 100, 100, 140, 170, 190]
                    bottom = [70, 70, 70, 100, 140, 140]
                    interpolate = []
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i] - 500) * ((bottom[n] - top[n]) /
                                                        (2400 - 500))
                        interpolate.append(intt)
                        if interpolate[n] - b[i] >= 0:
                            check_len = len(interpolate)
                            if check_len == 1:
                                check = 60
                            if check_len == 4:
                                check = 90
                            if check_len == 5:
                                check = 120
                            if check_len == 6:
                                check = 180
                            break
                        if len(interpolate) == 6:
                            interpolate.append(1)
                    token = 'z nenosných pálených cihel'
                    token_tab = '6.1.1'
                    token_type = 'EI'

                if Specif2[i] == 'Skupina 1S – 1000<p<2400':
                    interpolate = []
                    top = [90, 90, 90, 100, 140, 190]
                    bottom = [90, 90, 90, 90, 140, 140]
                    top_rho = 2400
                    bottom_rho = 1000
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 1S'
                    token_tab = '6.1.2, číslo řádku 1.1 respektive 1.2'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 1 – 800<p<2400':
                    interpolate = []
                    top = [100, 100, 100, 170, 170, 190]
                    bottom = [90, 90, 90, 90, 140, 170]
                    top_rho = 2400
                    bottom_rho = 800
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 1'
                    token_tab = '6.1.2, číslo řádku 2.1 respektive 2.2'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 1 – 500<p<800':
                    top = [100, 200, 200, 200, 365, 365]
                    bottom = [100, 170, 170, 170, 300, 300]
                    top_rho = 800
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 1'
                    token_tab = '6.1.2, číslo řádku 2.3 respektive 2.4'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 2 – 800<p<2200, ct>25%':
                    interpolate = []
                    top = [100, 100, 100, 170, 240, 240]
                    bottom = [100, 100, 100, 140, 140, 240]
                    top_rho = 2200
                    bottom_rho = 800
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 2'
                    token_tab = '6.1.2, číslo řádku 3.1 respektive 3.2'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 2 – 700<p<800, ct>25%':
                    interpolate = [100, 100, 170, 240, 300, 365]
                    top_rho = 800
                    bottom_rho = 700
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 2'
                    token_tab = '6.1.2, číslo řádku 3.4'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 2 – 500<p<900, 16%<ct<25%':
                    interpolate = [100, 170, 170, 240, 300, 365]
                    top_rho = 900
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 2'
                    token_tab = '6.1.2, číslo řádku 3.6'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 3 – 500<p<800':
                    interpolate = [100, 200, 240, 300, 365, 425]
                    top_rho = 1200
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 3'
                    token_tab = '6.1.2, číslo řádku 4.2'
                    token_type = 'REI'

                if Specif2[i] == 'Skupina 4 – 500<p<800':
                    interpolate = [240, 240, 240, 300, 365, 425]
                    top_rho = 1200
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 4'
                    token_tab = '6.1.2, číslo řádku 5.2'
                    token_type = 'REI'

                if Specif2[i] == 'Neznámé cihly':
                    interpolate = [240, 240, 240, 300, 365, 425]
                    top_rho = 1200
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pálených zdících prvků skupiny 4'
                    token_tab = '6.1.2, číslo řádku 5.2'
                    token_type = 'REI'

                if Specif2[i] == 'Vápenopískové (nenosné) 600<p<2400':
                    interpolate = []
                    top = [70, 90, 90, 100, 140, 170]
                    bottom = [50, 70, 70, 100, 140, 140]
                    top_rho = 2400
                    bottom_rho = 600
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z nenosných vápenopískových cihel'
                    token_tab = '6.2.1, číslo řádku 1.1 respektive 1.2'
                    token_type = 'EI'

                if Specif2[i] == 'Vápenopískové – Skupina 1S – 1700<p<2400':
                    interpolate = []
                    top = [90, 90, 90, 100, 170, 170]
                    bottom = [90, 90, 90, 100, 140, 170]
                    top_rho = 2400
                    bottom_rho = 1700
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z vápenopískových zdících prvků skupiny 1S'
                    token_tab = '6.2.2, číslo řádku 1.1 respektive 1.2'
                    token_type = 'REI'

                if Specif2[i] == 'Vápenopískové – Skupina 1 – 1400<p<2400':
                    interpolate = []
                    top = [100, 100, 100, 100, 200, 240]
                    bottom = [100, 100, 100, 100, 140, 190]
                    top_rho = 2400
                    bottom_rho = 1400
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z vápenopískových zdících prvků skupiny 1'
                    token_tab = '6.2.2, číslo řádku 2.1 respektive 2.2'
                    token_type = 'REI'

                if Specif2[i] == 'Vápenopískové – Skupina 2 – 700<p<1600':
                    interpolate = []
                    top = [100, 100, 100, 100, 200, 240]
                    bottom = [100, 100, 100, 100, 140, 190]
                    top_rho = 1600
                    bottom_rho = 700
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z vápenopískových zdících prvků skupiny 2'
                    token_tab = '6.2.2, číslo řádku 3.1 respektive 3.2'
                    token_type = 'REI'

                if Specif2[
                        i] == 'Beton nenosné skupina 1 pórovité kamenivo 400<p<1600':
                    interpolate = []
                    top = [50, 70, 90, 140, 140, 140]
                    bottom = [50, 50, 70, 70, 140, 140]
                    top_rho = 1600
                    bottom_rho = 400
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových tvárnic s pórovitým kamenivem skupiny 1'
                    token_tab = '6.3.1, číslo řádku 1.1 respektive 1.2'
                    token_type = 'EI'

                if Specif2[
                        i] == 'Beton nenosné skupina 1 hutné kamenivo 1400<p<2000':
                    interpolate = []
                    top = [50, 70, 90, 140, 140, 190]
                    bottom = [50, 50, 70, 70, 90, 100]
                    top_rho = 2400
                    bottom_rho = 1200
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových tvárnic s hutným kamenivem skupiny 1'
                    token_tab = '6.3.1, číslo řádku 1.3 respektive 1.4'
                    token_type = 'EI'

                if Specif2[
                        i] == 'Beton nenosné skupina 2 pórovité kamenivo 240<p<1200':
                    interpolate = []
                    top = [50, 70, 100, 100, 140, 200]
                    bottom = [50, 50, 70, 90, 140, 140]
                    top_rho = 1200
                    bottom_rho = 240
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových tvárnic s pórovitým kamenivem skupiny 2'
                    token_tab = '6.3.1, číslo řádku 2.1 respektive 2.2'
                    token_type = 'EI'

                if Specif2[
                        i] == 'Beton nenosné skupina 2 hutné kamenivo 720<p<1650':
                    interpolate = []
                    top = [50, 70, 100, 100, 200, 200]
                    bottom = [50, 50, 70, 70, 140, 140]
                    top_rho = 1650
                    bottom_rho = 720
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových tvárnic s hutným kamenivem skupiny 2'
                    token_tab = '6.3.1, číslo řádku 2.3 respektive 2.4'
                    token_type = 'EI'

                if Specif2[
                        i] == 'Beton nenosné skupina 3 hutné kamenivo 480<p<1000':
                    interpolate = [100, 150, 150, 200, 1000, 1000]
                    top_rho = 1000
                    bottom_rho = 480
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových tvárnic s hutným kamenivem skupiny 3'
                    token_tab = '6.3.1, číslo řádku 3.3'
                    token_type = 'EI'

                if Specif2[
                        i] == 'Beton nosné skupina 1 pórovité kamenivo 400<p<1600':
                    interpolate = []
                    top = [170, 170, 170, 170, 190, 240]
                    bottom = [140, 140, 140, 140, 170, 190]
                    top_rho = 1600
                    bottom_rho = 400
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových nosných tvárnic s pórovitým kamenivem skupiny 1'
                    token_tab = '6.3.2, číslo řádku 1.1 respektive 1.2'
                    token_type = 'REI'

                if Specif2[
                        i] == 'Beton nosné skupina 1 hutné kamenivo 1400<p<2000':
                    interpolate = []
                    top = [170, 170, 170, 170, 190, 240]
                    bottom = [140, 140, 140, 140, 170, 190]
                    top_rho = 2000
                    bottom_rho = 1400
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových nosných tvárnic s hutným kamenivem skupiny 1'
                    token_tab = '6.3.2, číslo řádku 1.3 respektive 1.4'
                    token_type = 'REI'

                if Specif2[
                        i] == 'Beton nosné skupina 2 pórovité kamenivo 240<p<1200':
                    interpolate = []
                    top = [170, 170, 170, 170, 190, 240]
                    bottom = [140, 140, 140, 140, 170, 190]
                    top_rho = 1200
                    bottom_rho = 240
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových nosných tvárnic s pórovitým kamenivem skupiny 2'
                    token_tab = '6.3.2, číslo řádku 2.1 respektive 2.2'
                    token_type = 'REI'

                if Specif2[
                        i] == 'Beton nosné skupina 2 hutné kamenivo 720<p<1650':
                    interpolate = []
                    top = [170, 170, 170, 170, 190, 240]
                    bottom = [140, 140, 140, 140, 170, 190]
                    top_rho = 1650
                    bottom_rho = 720
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových nosných tvárnic s hutným kamenivem skupiny 2'
                    token_tab = '6.3.2, číslo řádku 2.3 respektive 2.4'
                    token_type = 'REI'

                if Specif2[
                        i] == 'Beton nosné skupina 3 hutné kamenivo 480<p<1000':
                    interpolate = [140, 140, 140, 140, 200, 200]
                    top_rho = 1000
                    bottom_rho = 480
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z betonových nosných tvárnic s hutným kamenivem skupiny 3'
                    token_tab = '6.3.2, číslo řádku 3.3'
                    token_type = 'REI'

                if Specif2[i] == 'Pórobeton nenosné skupina 1S a 1 350<p<500':
                    interpolate = []
                    top = [65, 70, 75, 100, 100, 150]
                    bottom = [50, 60, 60, 60, 90, 100]
                    top_rho = 500
                    bottom_rho = 350
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pórobetonových tvárnic'
                    token_tab = '6.4.1, číslo řádku 1.1 respektive 1.2'
                    token_type = 'EI'

                if Specif2[i] == 'Pórobeton nenosné skupina 1S a 1 500<p<1000':
                    interpolate = []
                    top = [60, 60, 70, 100, 100, 150]
                    bottom = [50, 60, 60, 60, 90, 100]
                    top_rho = 1000
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z pórobetonových tvárnic'
                    token_tab = '6.4.1, číslo řádku 1.3 respektive 1.4'
                    token_type = 'EI'

                if Specif2[i] == 'Pórobeton nosné skupina 1S a 1 350<p<500':
                    interpolate = []
                    top = [115, 115, 140, 200, 225, 300]
                    bottom = [115, 115, 115, 200, 125, 240]
                    top_rho = 500
                    bottom_rho = 350
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z nosných pórobetonových tvárnic'
                    token_tab = '6.4.2, číslo řádku 1.1 respektive 1.2'
                    token_type = 'REI'

                if Specif2[i] == 'Pórobeton nosné skupina 1S a 1 500<p<1000':
                    interpolate = []
                    top = [100, 100, 150, 170, 200, 240]
                    bottom = [100, 100, 100, 150, 170, 200]
                    top_rho = 1000
                    bottom_rho = 500
                    ' Vyzkoušení zda je rho v intervalu'
                    if a[i] > top_rho or a[i] < bottom_rho:
                        raise NameError('!!! Mimo rozsah tabulkek !!!')
                    for n in range(0, len(top)):
                        intt = top[n] + (a[i]-bottom_rho) *\
                               ((bottom[n]-top[n])/(top_rho-bottom_rho))
                        interpolate.append(intt)
                        myArr = np.asarray(interpolate)
                    check = cihlyPO(b, interpolate, i, myArr)
                    token = 'z nosných pórobetonových tvárnic'
                    token_tab = '6.4.2, číslo řádku 1.3 respektive 1.4'
                    token_type = 'REI'

            doc.append(NoEscape(r'\textbf{%s}: ' % Nazev_kce[i]))
            if Specif2[i] in dictionary_text:
                doc.append(dictionary_text[Specif2[i]])
            if 'PP' in Nazev_kce[i] or 'podzemní' in Nazev_kce[i]\
               or 'Podzemní' in Nazev_kce[i]:
                if check_PP[spb_max] > check:
                    raise NameError(
                        '!!! Konstrukce nevyhoví na požární odolnost !!!')
                else:
                    add_str = 'v podzemním podlaží'
            if 'NP' in Nazev_kce[i] or 'nadzemní' in Nazev_kce[i]\
               or 'Nadzemní' in Nazev_kce[i]:
                add_str = 'v nadzemním podlaží'
                if check_NP[spb_max] > check:
                    raise NameError(
                        '!!! Konstrukce nevyhoví na požární odolnost !!!')
                else:
                    if i != 0:
                        if b[i] in save_b and Specif2[i] in save_var:
                            doc.append(
                                'Požární stěny {} jsou stejně jako v podzemním podlaží tvořeny {} o tloušťce {} mm s vyhovující požární odolností {} {} DP1. '
                                .format(add_str, token, b[i], token_type,
                                        check))
                            doc.append(NoEscape(r'\newline \newline'))
            if i == 0 or (b[i] not in save_b and Specif2[i] not in save_var):
                if Specif2[i] == 'Neznámé cihly':
                    doc.append(
                        'Požární stěna je tvořena neznámým druhem pálených cihel. Stěna o tloušťce {} mm vykazuje dle tabulkového hodnocení tab: {} (Zoufal a spol.) i při uvažování cihel skupiny 4, tedyskupiny, která z požárního hlediska vykazuje nejhorší požární odolnost, vyhovující odolnost {} {} DP1. '
                        .format(b[i], token_tab, token_type, check))
                elif Specif2[i] in dictionary and Specif2[i] != 'Neznámé cihly':
                    doc.append(
                        'Požární stěny {} jsou tvořeny {} o tloušťce {} mm. Dle tabulkového hodnocení tab: {} (viz Zoufal a spol.) má konstrukce požární odolnost {} {} DP1, což je vyhovující. '
                        .format(add_str, token, b[i], token_tab, token_type,
                                check))
            doc.append(NoEscape(r'\newline \newline'))
            save_var.append(Specif2[i])
            save_b.append(b[i])
    os.chdir(vystup_dir)
    doc.generate_pdf("E.1", clean_tex=False)
Exemple #5
0
def appendix(data_dir, vystup_dir):
    os.chdir(data_dir)
    data_PU = read_results('raw_data_PU.csv')
    data_POP = read_results('raw_data_POP.csv')
    data_mid = read_results('results.csv')
    PurePath(vystup_dir)
    geometry_options = {"margin": "0.5cm", "includeheadfoot": True}
    doc = Document(page_numbers=True, geometry_options=geometry_options)
    doc.preamble.append(NoEscape(r'\definecolor{Hex}{RGB}{239,239,239}'))
    doc.documentclass.options = Options('10pt')

    doc.append(Command('textbf', 'Zadání hodnot pro výpočet: '))
    doc.append(
        NoEscape(r'Tabulka \ref{rozmery} je souhrnem zadaných hodnot \
                        potřebných k výpočtu požárně výpočtového zatížení.'))

    def genenerate_longtabu(data):
        if data == data_PU:
            with doc.create(LongTable("l l c c c c c c l")) as data_table:
                doc.append(Command('caption', 'Zadání místností pro výpočet'))
                doc.append(Command('label', 'rozmery'))
                doc.append(Command('\ '))
                data_table.append
                data_table.add_hline()
                data_table.add_row([
                    "PU", "Místnost", "Plocha",
                    NoEscape('h$_s$'),
                    NoEscape('a$_n$'),
                    NoEscape('p$_n$'),
                    NoEscape('p$_s$'), "c", "Tab. A.1"
                ])
                data_table.add_hline()
                data_table.end_table_header()
                data_table.add_hline()
                doc.append(Command('endfoot'))
                doc.append(Command('endlastfoot'))
                # data_table.end_table_footer()
                data_table.add_hline()
        if data == data_POP:
            with doc.create(LongTable("l l c c c c", pos=['l'])) as data_table:
                doc.append(Command('caption', 'Zadání okenních otvorů'))
                doc.append(Command('label', 'okna'))
                doc.append(Command('\ '))
                data_table.append
                data_table.add_hline()
                data_table.add_row([
                    "PU", "Místnost", "n otvorů", "šířka otvorů",
                    "výška otvorů", "Plocha"
                ])
                data_table.add_row(
                    [" ", " ", " ", "[m]", "[m]",
                     NoEscape('m$^2$')])
                data_table.add_hline()
                data_table.end_table_header()
                data_table.add_hline()
                data_table.add_hline()
        for i in range(0, len(data)):
            if i % 2 == 0:
                data_table.add_row(data[i])
            else:
                data_table.add_row(data[i], color="Hex")
        data_table.add_hline()

    for i in range(0, len(data_PU)):
        data_PU[i][2] = data_PU[i][2].replace(".", ",")
        data_PU[i][3] = data_PU[i][3].replace(".", ",")
        data_PU[i][4] = data_PU[i][4].replace(".", ",")
        data_PU[i][5] = data_PU[i][5].replace(".", ",")
        data_PU[i][6] = data_PU[i][6].replace(".", ",")
        data_PU[i][7] = data_PU[i][7].replace(".", ",")
    genenerate_longtabu(data_PU)
    doc.append(
        NoEscape(r'Okenní otvory nutné pro výpočet součinitele b jsou\
                        uvedeny v následující tabulce \ref{okna}'))
    for i in range(0, len(data_POP)):
        data_POP[i][3] = data_POP[i][3].replace(".", ",")
        data_POP[i][4] = data_POP[i][4].replace(".", ",")
        data_POP[i][5] = data_POP[i][5].replace(".", ",")
    genenerate_longtabu(data_POP)
    doc.append(Command('textbf', 'Mezivýsledky a výsledky: '))
    doc.append(
        NoEscape(r'Mezivýsledky nutné pro stanovení parametru b jsou\
                        patrné z tabulky \ref{mezivysledky}'))

    #########################################################################
    ''' Mezivýsledky parametr B '''
    data_mid_ar = []
    for i in range(0, len(data_mid)):
        data_mid_ar.append(data_mid[i][0])
        data_mid_ar.append(data_mid[i][1])
        data_mid_ar.append(data_mid[i][8])
        data_mid_ar.append(data_mid[i][9])
        data_mid_ar.append(data_mid[i][10])
        data_mid_ar.append(data_mid[i][14])
        data_mid_ar.append(data_mid[i][15])
    data_mid_ar = list(chunks(data_mid_ar, 7))
    for i in range(0, len(data_mid_ar)):
        data_mid_ar[i][1] = data_mid_ar[i][1].replace(".", ",")
        data_mid_ar[i][2] = data_mid_ar[i][2].replace(".", ",")
        data_mid_ar[i][3] = data_mid_ar[i][3].replace(".", ",")
        data_mid_ar[i][4] = data_mid_ar[i][4].replace(".", ",")
        data_mid_ar[i][5] = data_mid_ar[i][5].replace(".", ",")
        data_mid_ar[i][6] = data_mid_ar[i][6].replace(".", ",")

    with doc.create(LongTable("l c c c c c c", pos=['l'])) as data_table:
        doc.append(Command('caption', 'Mezivýsledky pro paramter b'))
        doc.append(Command('label', 'mezivysledky'))
        doc.append(Command('\ '))
        data_table.append
        data_table.add_hline()
        data_table.add_row(["PÚ", "S", "S0", "hs", "h0", "n", "k"])
        data_table.add_row([
            " ",
            NoEscape('m$^2$'),
            NoEscape('m$^2$'), "[m]", "[m]", "[-]", "[-]"
        ])
        data_table.add_hline()
        data_table.end_table_header()
        data_table.add_hline()
        data_table.add_hline()
        for i in range(0, len(data_mid_ar)):
            if i % 2 == 0:
                data_table.add_row(data_mid_ar[i])
            else:
                data_table.add_row(data_mid_ar[i], color="Hex")
        data_table.add_hline()

    #########################################################################
    ''' Vysledky '''

    doc.append(
        NoEscape(r'Přehled výsledků požárních úseků je patrný z tabulky\
                        \ref{Vysledky}'))

    data_res = []
    for i in range(0, len(data_mid)):
        data_res.append(data_mid[i][0])
        data_res.append(data_mid[i][1])
        data_res.append(data_mid[i][2])
        data_res.append(data_mid[i][3])
        data_res.append(data_mid[i][4])
        data_res.append(data_mid[i][13])  # a_n
        data_res.append(data_mid[i][12])  # p_n
        data_res.append(data_mid[i][11])  # p_s
        data_res.append(data_mid[i][7])  # p_only
        data_res.append(data_mid[i][5])  # p_v
    data_res = list(chunks(data_res, 10))

    for i in range(0, len(data_res)):
        data_res[i][1] = data_res[i][1].replace(".", ",")
        data_res[i][2] = data_res[i][2].replace(".", ",")
        data_res[i][3] = data_res[i][3].replace(".", ",")
        data_res[i][4] = data_res[i][4].replace(".", ",")
        data_res[i][5] = data_res[i][5].replace(".", ",")
        data_res[i][6] = data_res[i][6].replace(".", ",")
        data_res[i][7] = data_res[i][7].replace(".", ",")
        data_res[i][8] = data_res[i][8].replace(".", ",")
        data_res[i][9] = data_res[i][9].replace(".", ",")
    with doc.create(LongTable("l c c c c c c c c c ",
                              pos=['l'])) as data_table:
        doc.append(
            Command(
                'caption', 'Přehled požárních úseků a jejich\
                            výsledky'))
        doc.append(Command('label', 'Vysledky'))
        doc.append(Command('\ '))
        data_table.append
        data_table.add_hline()
        data_table.add_row([
            "PÚ", "Plocha", "a", "b", "c",
            NoEscape('a$_n$'),
            NoEscape('p$_n$'),
            NoEscape('p$_s$'),
            NoEscape('p'),
            NoEscape('p$_v$')
        ])
        data_table.add_row([
            " ",
            NoEscape('m$^2$'), "[-]", "[-]", "[-]", "[-]",
            NoEscape('[kg/m$^2$]'),
            NoEscape('[kg/m$^2$]'),
            NoEscape('[kg/m$^2$]'),
            NoEscape('[kg/m$^2$]')
        ])

        data_table.end_table_header()
        data_table.add_hline()
        for i in range(0, len(data_res)):
            if i % 2 == 0:
                data_table.add_row(data_res[i])
            else:
                data_table.add_row(data_res[i], color="Hex")
        data_table.add_hline()
    os.chdir(vystup_dir)
    doc.generate_pdf("Appendix", clean_tex=False)
def d_generator(data_dir, vystup_dir):
    os.chdir(data_dir)
    data_PU = read_results('results.csv')
    info_PU = read_results('raw_data_info.csv')

    # Arrange data to desired shape
    data_check = []
    data_used = []
    data_replace_p = []
    data_check_p = []
    data_replace_a = []
    l_names = []
    p_stale = []
    for i in range(0, len(data_PU)):
        data_used.append(data_PU[i][0])
        data_used.append(data_PU[i][16])
        data_used.append(data_PU[i][1])
        data_used.append(data_PU[i][2])
        data_used.append(data_PU[i][3])
        data_used.append(data_PU[i][4])
        data_used.append(data_PU[i][5])
        data_used.append(data_PU[i][6])
        data_check.append(data_PU[i][19])
        data_replace_p.append(data_PU[i][12])
        data_replace_a.append(data_PU[i][13])
        data_check_p.append(data_PU[i][7])
        l_names.append(data_PU[i][19])
        p_stale.append(data_PU[i][20])

    data_used = list(chunks(data_used, 8))
    list_avaiable = [
        'B.1 pol.1', 'B.1 pol.2', 'B.1 pol.3', 'B.1 pol.4', 'B.1 pol.5',
        'B.1 pol.6', 'B.1 pol.7', 'B.1 pol.8', 'B.1 pol.9', 'B.1 pol.10',
        'B.1 pol.11', 'B.1 pol.12', 'B.1 pol.13'
    ]
    list_avaiable2 = [
        'AZ1 Ordi.', 'AZ1 Lék.', 'AZ2 Ordi', 'AZ2 vyšet.', 'AZ2 Lék.', 'LZ1',
        'LZ2 lůž', 'LZ2 int.péče', 'LZ2 Lék', 'LZ2 biochem', 'peč. Služ',
        'soc.péče.ošetř.', 'soc.péče.lůž.', 'soc.péče.byt', 'Jesle'
    ]
    check = []
    for i in range(0, len(data_check)):
        if data_check[i] in list_avaiable or\
           data_check[i] == 'OB2 byt' or\
           data_check[i] == 'OB3' or data_check[i] == 'OB4 ubyt.' or data_check[i] == 'OB4 sklad' or\
           data_check[i] == 'CHÚC-A' or data_check[i] == 'CHÚC-B' or\
           data_check[i] == 'CHÚC-C' or data_check[i] in list_avaiable2:
            check.append(i)
    sys.path.insert(0,
                    "c:/Users/Honza/Google Drive/Work/Generator_zprav/minor/")
    from stupen import spb_def
    type_sys = info_PU[0]
    h_p = float(info_PU[1][0])
    podlazi = float(info_PU[2][0])
    if len(check) > 0:
        for item in check:
            data_used[item][4] = '-'
            '''data_used[item][4] = '-'
            if data_check[item] == 'OB2 byt':
                if (float(data_check_p[item]) - float(data_replace_p[item])) >= 0:
                    data_used[item][6] = '%.2f' % 40
                    spb_fix = spb_def(h_p, type_sys[0], [40], [1.00], podlazi, str(data_PU[item][0]))
                    data_used[item][7] = spb_fix[0]
                if (float(data_check_p[item]) - float(data_replace_p[item])) > 5:
                    data_used[item][6] = '%.2f' % 45.00
                    spb_fix = spb_def(h_p, type_sys[0], [45], [1.00], podlazi, data_PU[item][0])
                    data_used[item][7] = spb_fix[0]
                if (float(data_check_p[item]) - float(data_replace_p[item])) >= 15:
                    data_used[item][6] = '%.2f' % 50.00
                    spb_fix = spb_def(h_p, type_sys[0], [50], [1.00], podlazi, data_PU[item][0])
                    data_used[item][7] = spb_fix[0]
                data_used[item][3] = str('%.2f' % 1.00)
                # pozn = ' $^{1)}$'
                # data_used[item][0] = NoEscape(data_used[item][0] + pozn)
            if data_check[item] in list_avaiable:
                if 0 <= float(p_stale[item]) <= 5:
                    data_used[item][6] = '%.2f' % float(data_replace_p[item])
                if float(p_stale[item]) > 5:
                    data_replace_p[item] = ((float(p_stale[item]) - 5) * 1.15)\
                                            + float(data_replace_p[item])
                    data_used[item][6] = '%.2f' % data_replace_p[item]
                spb_fix = spb_def(h_p, type_sys[0],
                                  [float(data_replace_p[item])],
                                  [1.00], podlazi,
                                  data_PU[item][0])
                data_used[item][7] = spb_fix[0]
                data_used[item][3] = str('%.2f' % 1.00)
            if data_check[item] in list_avaiable2:
                data_used[item][6] = '%.2f' % float(data_replace_p[item])
                data_used[item][3] = data_replace_a[item]
                spb_fix = spb_def(h_p, type_sys[0], [float(data_used[item][6])], [float(data_used[item][3])], podlazi, data_PU[item][0])
                data_used[item][7] = spb_fix[0]
            if data_check[item] == 'OB3' or data_check[i] == 'OB4 ubyt.':
                data_used[item][6] = '%.2f' % float(data_replace_p[item])
                spb_fix = spb_def(h_p, type_sys[0],
                                  [30],
                                  [1.00], podlazi,
                                  data_PU[item][0])
                data_used[item][7] = spb_fix[0]
                data_used[item][3] = str('%.2f' % 1.00)
            if data_check[item] == 'OB4 sklad':
                data_used[item][6] = '%.2f' % float(data_replace_p[item])
                spb_fix = spb_def(h_p, type_sys[0],
                                  [60],
                                  [1.00], podlazi,
                                  data_PU[item][0])
                data_used[item][7] = spb_fix[0]
                data_used[item][3] = str('%.2f' % 1.00)'''
            if data_check[item] == 'CHÚC-A' or data_check[item] == 'CHÚC-B' or\
               data_check[item] == 'CHÚC-C':
                data_used[item][3] = '-'
                data_used[item][4] = '-'
                data_used[item][5] = '-'
                data_used[item][6] = '-'
                if h_p < 30:
                    data_used[item][7] = 'II.'
                if h_p >= 30:
                    data_used[item][7] = 'III.'
                if h_p >= 45:
                    data_used[item][7] = 'IV.'

    with doc.create(Section('Posouzení požárních úseků')):
        with doc.create(Subsection('Vyhodnocení požárních úseků')):
            doc.append(
                NoEscape(r'Z tabulky \ref{PU} je patrné požární riziko\
                                a stupeň požární bezpečnosti všech řešených\
                                požárních úseků. Není-li v poznámce pod\
                                tabulkou uvedeno jinak, je požární riziko PÚ\
                                stanoveno výpočtem (viz příloha \ref{A-1}:\
                                Výpočet požárního rizika).'))
            save_var = []
            save_id = []
            save_name = []
            save_id_check = []
            for i in range(0, len(data_check)):
                if data_check[i] == 'B.1 pol.1' or data_check[i] == 'B.1 pol.2' or\
                   data_check[i] == 'B.1 pol.3' or data_check[i] == 'B.1 pol.4' or\
                   data_check[i] == 'B.1 pol.5' or data_check[i] == 'B.1 pol.6' or\
                   data_check[i] == 'B.1 pol.7' or data_check[i] == 'B.1 pol.8' or\
                   data_check[i] == 'B.1 pol.9' or data_check[i] == 'B.1 pol.10' or\
                   data_check[i] == 'B.1 pol.11' or data_check[i] == 'B.1 pol.12' or\
                   data_check[i] == 'B.1 pol.13' or data_check[i] == 'OB2 byt' or\
                   data_check[i] == 'CHÚC-A' or data_check[i] == 'CHÚC-B' or\
                   data_check[i] == 'CHÚC-C' or data_check[i] == 'OB3' or\
                   data_check[i] == 'OB4 ubyt.' or\
                   data_check[i] == 'OB4 sklad' or\
                   data_check[i] in list_avaiable2:
                    save_var.append(data_check[i])
                    save_id_check.append(i)
            count = list(range(1, len(save_var) + 1))
            pre = ' $^{'
            suf = ')}$'
            for i in range(0, len(save_var)):
                count[i] = pre + str(count[i])
                count[i] = str(count[i]) + suf
            for n in range(0, len(save_var)):
                if n == 0:
                    new_dict = dict(zip([save_var[n]], [count[n]]))
                    save_id.append(save_id_check[n])
                    save_name.append(save_var[n])
                    # new_dict = dict(zip([save_var[n]], str(count[n])))
                if n > 0:
                    if save_var[n] in new_dict:
                        save_id.append(save_id_check[n])
                        save_name.append(save_var[n])
                    else:
                        len_dict = len(new_dict) + 1
                        len_dict = pre + str(len_dict)
                        len_dict = str(len_dict) + suf
                        save_id.append(save_id_check[n])
                        save_name.append(save_var[n])
                        new_dict[save_var[n]] = len_dict
            for i in range(0, len(save_id)):
                data_used[save_id[i]][1] = NoEscape(data_used[save_id[i]][1] +
                                                    new_dict[save_name[i]])

            doc.append(Command('begin', 'ThreePartTable'))
            if len(check) > 0:
                doc.append(Command('begin', 'TableNotes'))
                doc.append(NoEscape('\small'))
                for key in new_dict.keys():
                    pre_str = '\item'
                    if key == 'OB2 byt':
                        idx = l_names.index(key)
                        suf_str = ' Uvažováno s požárně výpočetním zatížením (p$_v$)\
                                 podle normy ČSN 73 0833 čl. 5.1.2.'

                        string = new_dict[key]
                        if 0 <= (float(data_check_p[idx]) -
                                 float(data_replace_p[idx])) < 5:
                            loc_str = pre_str + string + suf_str
                            doc.append(NoEscape(loc_str))
                        if (float(data_check_p[idx]) -
                                float(data_replace_p[idx])) > 5:
                            suf_str = suf_str + ' Stálé požární\
                            zatížení v požárním úseku je p$_s$ = 10 kg/m$^2$.\
                            Je tak přihlédnuto k poznámce stejného článku,\
                            která stanovuje požární zatížení na hodnotu\
                            p$_v$ = 45 kg/m$^2$.'

                            loc_str = pre_str + string + suf_str
                            doc.append(NoEscape(loc_str))

                    if key in list_avaiable:
                        string = new_dict[key]
                        idx = l_names.index(key)
                        polozka = str(list_avaiable.index(key) + 1)
                        suf_str_f = ' Hodnota požárně výpočtového zatížení je\
                                    stanovena paušálně z položky '

                        suf_str_ff = ' tabulky B.1 normy ČSN 73 0802.'
                        suf_str_b = ' Stálé požární zatížení je p$_s$ = '
                        suf_str_bb = ' kg/m$^2$. Při stanovení požárně výpočtového\
                                    zaížení je tak přihlédnuto k čl. B.1.2.'

                        if 0 <= (float(data_check_p[idx]) -
                                 float(data_replace_p[idx])) <= 5:
                            suf_str_f = suf_str_f + polozka + suf_str_ff
                            loc_str = pre_str + string + suf_str_f
                            doc.append(NoEscape(loc_str))
                        if 5 < (float(data_check_p[idx]) -
                                float(data_replace_p[idx])):
                            suf_str_num = str(p_stale[idx])
                            suf_str_f = suf_str_f + polozka + suf_str_ff
                            suf_str_b = suf_str_b + suf_str_num + suf_str_bb
                            loc_str = pre_str + string + suf_str_f + suf_str_b
                            doc.append(NoEscape(loc_str))

                    if key in list_avaiable2:
                        string = new_dict[key]
                        idx = l_names.index(key)
                        suf_str_f = ' Hodnota požárně výpočtového zatížení je\
                                    stanovena paušálně z '

                        suf_str_ff = ' z normy ČSN 73 0835.'
                        if key == 'AZ1 Ordi.':
                            odkaz = 'čl. 5.3.1'
                            suf_str_b = ' Jedná se o zařízení lékařské péče\
                                     zařazené do skupiny AZ1'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'AZ1 Lék.':
                            odkaz = 'čl. 5.3.1'
                            suf_str_b = ' Jedná se o lékárenské zařízení\
                                     zařazené do skupiny AZ1'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'AZ2 Ordi':
                            odkaz = 'čl. 6.2.1'
                            suf_str_b = ' Jedná se o lékárenské pracoviště\
                                     zařazené do skupiny AZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'AZ2 vyšet.':
                            odkaz = 'čl. 6.2.1'
                            suf_str_b = ' Jedná se o vyšetřovací nebo léčebnou\
                                     část budovy zařazené do skupiny AZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'AZ2 Lék.':
                            odkaz = 'čl. 6.2.1'
                            suf_str_b = ' Jedná se o lékárenské zařízení\
                                        zařazené do skupiny AZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'LZ1':
                            odkaz = 'čl. 7.2.1'
                            suf_str_b = ' Jedná se o požární úsek, který je\
                                        součástí budovy skupiny LZ1'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(No.Escape(loc_str))
                        if key == 'LZ2 lůž':
                            odkaz = 'čl. 8.2.1'
                            suf_str_b = ' Jedná se o lůžkové jednotky v\
                                        budově skupiny LZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'LZ2 int.péče':
                            odkaz = 'čl. 8.2.1'
                            suf_str_b = ' Jedná se o jednotky intenzivní péče,\
                                        ansteziologicko resustitační oddělení,\
                                        nebo o operační oddělení v budově\
                                        zařazené do skupiny LZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'LZ2 Lék':
                            odkaz = 'čl. 8.2.1'
                            suf_str_b = ' Jedná se o lékárenské zařízení v\
                                        budově skupiny LZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'LZ2 biochem':
                            odkaz = 'čl. 8.2.1'
                            suf_str_b = ' Jedná se o oddělení klinické biochemie\
                                        v budově skupiny LZ2'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'peč. Služ':
                            odkaz = 'čl. 9.3.1'
                            suf_str_b = ' Jedná se o bytovou jednotku v domě\
                                        s pečovatelskou službou'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'soc.péče.oštř.':
                            odkaz = 'čl. 10.3.1'
                            suf_str_b = ' Jedná se o ošetřovatelské oddělení v\
                                        budově sociální péče'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'soc.péče.lůž.':
                            odkaz = 'čl. 10.3.1'
                            suf_str_b = ' Jedná se o lůžkovou část ústavu\
                                        sociální péče'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'soc.péče.byt.':
                            odkaz = 'čl. 10.3.1'
                            suf_str_b = ' Jedná se o bytové jednotky v budově\
                                        sociální péče.'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                        if key == 'Jesle.':
                            odkaz = 'čl. 10.3.1'
                            suf_str_b = ' Jedná se o zrdavotnické zařízení\
                                        pro děti - jesle'
                            loc_str = pre_str + string + suf_str_f + odkaz +\
                                      suf_str_ff + suf_str_b
                            doc.append(NoEscape(loc_str))
                    if key == 'OB3':
                        string = new_dict[key]
                        pre_str = '\item'
                        suf_str = ' Požární riziko  pro ubytovací jednotku bylo\
                                    stanoveno paušálně pomocí čl. 6.1.1 normy\
                                    ČSN 73 0833.'

                        loc_str = pre_str + string + suf_str
                        doc.append(NoEscape(loc_str))

                    if key == 'OB4 ubyt.':
                        string = new_dict[key]
                        pre_str = '\item'
                        suf_str = ' Požární riziko pro ubytovací jednotku v budově OB4 bylo\
                                    stanoveno paušálně pomocí čl. 7.1.1 normy\
                                    ČSN 73 0833.'

                        loc_str = pre_str + string + suf_str
                        doc.append(NoEscape(loc_str))

                    if key == 'OB4 sklad':
                        string = new_dict[key]
                        pre_str = '\item'
                        suf_str = ' Požární riziko pro ubytovací jednotku v budově OB4 bylo\
                                    stanoveno paušálně pomocí čl. 7.1.3 normy\
                                    ČSN 73 0833.'

                        loc_str = pre_str + string + suf_str
                        doc.append(NoEscape(loc_str))

                    if key == 'CHÚC-A' or key == 'CHÚC-B' or key == 'CHÚC-C':
                        string = new_dict[key]
                        pre_str = '\item'
                        suf_str = ' CHÚC je zatříděna v souladu s čl. 9.3.2 normy\
                                    ČSN 73 0802.'

                        loc_str = pre_str + string + suf_str
                        doc.append(NoEscape(loc_str))
            if info_PU[3] == ['ANO']:
                try:
                    new_dict
                except NameError:
                    var_exist = False
                else:
                    var_exist = True
                if var_exist is False:
                    new_dict = []
                    pre_str = '\item'
                    doc.append(Command('begin', 'TableNotes'))
                    doc.append(NoEscape('\small'))
                if info_PU[5] == ['osobní výtahy, malé nákladní výtahy']:
                    if h_p <= 22.5:
                        s_vytah = [
                            'Šv', 'Výtahové šachty', '-', '-', '-', '-', '-',
                            'II.'
                        ]
                    if 22.5 < h_p <= 45.0:
                        s_vytah = [
                            'Šv', 'Výtahové šachty', '-', '-', '-', '-', '-',
                            'III.'
                        ]
                    if h_p > 45.0:
                        s_vytah = [
                            'Šv', 'Výtahové šachty', '-', '-', '-', '-', '-',
                            'IV.'
                        ]
                    len_vytah = len(new_dict) + 1
                    app_vytah = pre + str(len_vytah) + suf
                    suf_str_v = ' Výtahová šachta odpovídá čl. 8.10.2 a) normy\
                                  ČSN 73 0802. Šachta slouží pro přepravu\
                                  osob, nebo jako malý nákladní výtah.'

                    loc_str_v = pre_str + app_vytah + suf_str_v
                    doc.append(NoEscape(loc_str_v))
                if info_PU[5] == ['osobně-nákladní, nákladní výtahy']:
                    if h_p <= 30:
                        s_vytah = [
                            'Šv', 'Výtahové šachty', '-', '-', '-', '-', '-',
                            'III.'
                        ]
                    if h_p > 30:
                        s_vytah = [
                            'Šv', 'Výtahové šachty', '-', '-', '-', '-', '-',
                            'IV.'
                        ]
                    len_vytah = len(new_dict) + 1
                    app_vytah = pre + str(len_vytah) + suf
                    suf_str_v = ' Výtahová šachta odpovídá čl. 8.10.2 normy\
                                  ČSN 73 0802 bodu b). Šachta slouží jako\
                                  osobo nákladní nebo nákladní výtah.'

                    loc_str_v = pre_str + app_vytah + suf_str_v
                    doc.append(NoEscape(loc_str_v))
                app_this = pre + str(len_vytah) + suf
                s_vytah[1] = NoEscape(s_vytah[1] + app_this)
            if info_PU[4] == ['ANO']:
                try:
                    new_dict
                except NameError:
                    var_exist = False
                else:
                    var_exist = True
                if var_exist is False:
                    new_dict = []
                    pre_str = '\item'
                    doc.append(Command('begin', 'TableNotes'))
                    doc.append(NoEscape('\small'))
                if info_PU[6] == ['rozvody hořlavých látek – max 1000 mm2']:
                    if h_p <= 22.5:
                        s_inst = [
                            'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                            'II.'
                        ]
                    if 22.5 < h_p <= 45.0:
                        s_inst = [
                            'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                            'III.'
                        ]
                    if h_p > 45.0:
                        s_inst = [
                            'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                            'IV.'
                        ]
                    if info_PU[3] == ['ANO']:
                        len_inst = len_vytah + 1
                        app_vytah = pre + str(len_inst) + suf
                        suf_str_i = ' Instalační šachty jsou zatříděny v souladu s\
                                    čl. 8.12.2 c). Šachty jsou dimenzovány\
                                    pro rozvody hořlavých látek o celkovém\
                                    průřezu 1000 m$^2$'

                        loc_str_i = pre_str + app_vytah + suf_str_i
                        doc.append(NoEscape(loc_str_i))
                if info_PU[6] == [
                        'rozvody nehořlavých látek – potrubí A1,\
                                  A2'
                ]:
                    s_inst = [
                        'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                        'I.'
                    ]
                if info_PU[6] == ['rozvody nehořlavých látek – potrubí B-F']:
                    s_inst = [
                        'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                        'II.'
                    ]
                if info_PU[6] == ['rozvody hořlavých látek – 1000-8000 mm2']:
                    if h_p <= 45.0:
                        s_inst = [
                            'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                            'IV.'
                        ]
                    if h_p > 45.0:
                        s_inst = [
                            'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                            'V.'
                        ]
                if info_PU[6] == [
                        'rozvody hořlavých látek – více než 8000 mm2'
                ]:
                    s_inst = [
                        'Ši', 'Instalační šachty', '-', '-', '-', '-', '-',
                        'VI.'
                    ]
                if info_PU[3] == ['ANO']:
                    len_inst = len_vytah + 1
                else:
                    len_inst = len(new_dict) + 1
                app_this = pre + str(len_inst) + suf
                s_inst[1] = NoEscape(s_inst[1] + app_this)
                data_used.append(s_vytah)
                data_used.append(s_inst)
            if len(check) > 0 or info_PU[4] == ['ANO'
                                                ] or info_PU[3] == ['ANO']:
                doc.append(Command('end', 'TableNotes'))
            for i in range(0, len(data_used)):
                data_used[i][2] = data_used[i][2].replace(".", ",")
                data_used[i][3] = data_used[i][3].replace(".", ",")
                data_used[i][4] = data_used[i][4].replace(".", ",")
                data_used[i][5] = data_used[i][5].replace(".", ",")
                data_used[i][6] = data_used[i][6].replace(".", ",")
            with doc.create(LongTable("l l c c c c c c",
                                      pos=['htb'])) as data_table:
                doc.append(
                    Command('caption',
                            'Přehled požárních úselků a jejich SPB'))
                doc.append(Command('label', 'PU'))
                doc.append(Command('\ '))
                data_table.append
                data_table.add_hline()
                data_table.add_row([
                    "Číslo", "Popis", "Plocha",
                    MultiColumn(3, data='Součinitelé'),
                    NoEscape('p$_v$'), "SPB"
                ])
                data_table.add_row([
                    " ", " ",
                    NoEscape('[m$^2$]'), "a", "b", "c",
                    NoEscape('[kg/m$^2$]'), '[-]'
                ])
                data_table.add_hline()
                data_table.end_table_header()
                for i in range(0, len(data_used)):
                    if i % 2 != 0:
                        data_table.add_row(data_used[i], color="Hex")
                    else:
                        data_table.add_row(data_used[i])
                data_table.add_hline()
                if len(check) > 0 or info_PU[4] == ['ANO'
                                                    ] or info_PU[3] == ['ANO']:
                    doc.append(NoEscape('\insertTableNotes'))
                os.chdir(vystup_dir)
            doc.append(Command('end', 'ThreePartTable'))
    doc.generate_pdf("D_PU", clean_tex=False)
def odstup(wb, data_dir):
    odstup = wb.get_sheet_by_name('Odstupové vzdálenosti')
    # Variables, aneb co počítat:
    From_POP = odstup["B2"].value
    POP_singl = odstup["B3"].value
    ''' Varianta 1: zadání otvorů jednotlivě B2 = NE, B3 = ANO'''
    # Načtení zadaných dat
    data = []
    Name_data = []
    PU_data = []
    p_v = []
    h = []
    b = []
    fasada = []
    Nazev_result = []
    p_v_result = []

    odstup_row = odstup.max_row  # determines maximum number of rows
    for row in odstup.iter_rows(min_row=5,
                                max_row=odstup_row,
                                min_col=1,
                                max_col=6):
        for cell in row:
            data.append(cell.value)

    # Zadat data z excelu do jednoho listu
    Odstup_data = list(chunks(data, 6))

    for i in range(0, len(Odstup_data)):
        Name_data.append((Odstup_data[i])[0])
        PU_data.append((Odstup_data[i])[1])
        p_v.append((Odstup_data[i])[2])
        h.append((Odstup_data[i])[3])
        b.append((Odstup_data[i])[4])
        fasada.append((Odstup_data[i])[5])
    ''' Načtení informací o objektu a požárních úsecích '''
    os.chdir(data_dir)
    info1 = read_results('raw_data_info.csv')
    data_PU = read_results('results.csv')
    info = info1[0][0]
    for i in range(0, len(data_PU)):
        Nazev_result.append(data_PU[i][0])
        p_v_result.append(data_PU[i][5])

    if POP_singl == 'ANO' and From_POP == 'NE':
        for i in range(0, len(PU_data)):
            if p_v[i] is None and Nazev_result[i] is not None:
                id = Nazev_result.index(PU_data[i])
                p_v[i] = p_v_result[id]
            if p_v[i] is not None:
                pass
            elif p_v[i] is None and Nazev_result[i] is None:
                raise NameError('!!! Nejsou zadány hodnoty pro výpočet !!!')

    # Změna písmen na čísla + připočtení za hořlavost systému
    p_v = [float(x) for x in p_v]

    if info == 'smíšený':
        p_v = [x + 5 for x in p_v]
    elif info == 'hořlavý':
        p_v = [x + 10 for x in p_v]
    elif info == 'hořlavý DP3':
        p_v = [x + 15 for x in p_v]
    ''' Hustota tepleného toku '''
    p_v_array = np.asarray(p_v)
    print(p_v_array)
    epsilon = 1.00
    T_n = 20 + (345 * np.log10((8 * p_v_array[0]) + 1))
    I_tok = epsilon * np.power((T_n + 273), 4) * 5.67 * 10**-11

    # Configuration factor
    H_f = 5
    W_f = 10

    krit = 18.5
    pol_crit = krit / I_tok
    print(pol_crit)
    res = 1
    r = 0.1

    x = H_f / (r * 2)
    y = W_f / (r * 2)
    first = (x / (np.sqrt((1 + x**2)))) / (2 * 3.14159)
    second = np.arctan((y / (np.sqrt((1 + x**2)))))
    A = (first * second) / (2 * 360)
    third = (y / (np.sqrt((1 + y**2))))
    fourth = np.arctan((x / (np.sqrt((1 + y**2)))))
    B = (third * fourth) / (2 * 360)

    while res > pol_crit:
        r += 0.05
        x = H_f / (r * 2)
        y = W_f / (r * 2)
        first = (x / (np.sqrt((1 + x**2)))) / (2 * 3.14159)
        second = np.arctan((y / (np.sqrt((1 + x**2)))))
        A = (first * second) / (2 * 360)
        third = (y / (np.sqrt((1 + y**2))))
        fourth = np.arctan((x / (np.sqrt((1 + y**2)))))
        B = (third * fourth) / (2 * 360)
        res = A + B
        print(r, res, pol_crit)
def c_generator(data_dir, vystup_dir):
    os.chdir(data_dir)
    data_PU = read_results('results.csv')
    info_PU = read_results('raw_data_info.csv')
    list_names = []
    for i in range(0, len(data_PU)):
        list_names.append(data_PU[i][19])

    geometry_options = {"margin": "0.5cm", "includeheadfoot": True}
    doc = Document(page_numbers=True, geometry_options=geometry_options)
    doc.documentclass.options = Options('10pt')
    with doc.create(Section('Mezní rozměry požárních úseků')):
        doc.append(
            NoEscape(r'\textbf{Rozdělení do požárních úseků}: Objekt\
                            bude rozdělen do požárních úseků podle požadavků\
                            norem. V souladu s požadavky budou požární úseky\
                            tvořit především tyto provozy/prostory.'))
        with doc.create(Itemize()) as itemize:
            if 'OB2 byt' in list_names:
                itemize.add_item("Dle normy ČSN 73 0833 čl. 3.6 musí každá\
                                 bytová buňka v objektech skupiny OB2 tvořit\
                                 samostatný požární úsek.")
            if '15.10 c)' in list_names:
                itemize.add_item("Kotelna III. kategorie podle normy\
                                  ČSN 07 0703 bude tvořit samostatný požární\
                                  úsek")
            if 'CHÚC-A' in list_names or 'CHÚC-B' in list_names or\
               'CHÚC-C' in list_names:
                itemize.add_item("Chráněné únikové cesty tvoří samostatné\
                                  požární úseky")
            if ['ANO'] == info_PU[3]:
                itemize.add_item("Výtahové šachty budou tvořit samostatné\
                                  požární useky.")
            if ['ANO'] == info_PU[4]:
                itemize.add_item("Instalační šachty budou tvořit samostatné\
                                  požární úseky.")
            if 'OB2 sklad' in list_names:
                itemize.add_item("Prostory určené pro skladování věcí pro\
                                  domácnost budou tvořit samostatné požární\
                                  úseky.")
            if 'OB3' in list_names:
                itemize.add_item("Každá ubytovací buňka tvoří samostatný\
                                  požární úsek.")
            if 'OB4 ubyt' in list_names:
                itemize.add_item("Ubytovací (lůžkové) části budovy skupiny\
                                 OB4 budou tvořit samostatné požární úseky.")
            if 'OB4 sklad' in list_names:
                itemize.add_item("Prostory určené pro skladování věcí různých\
                                  potřeb pro provoz ubytovacích částí budovy\
                                  budou tvořit samostatné požární úsek.y")
            if 'AZ1 Ordi.' in list_names or 'AZ2 Ordi' in list_names:
                itemize.add_item("Ordinace lékaře bude tvořit samostatný\
                                  požární úsek.")
            if 'AZ1 Lék.' in list_names or 'AZ2 Lék' in list_names or\
               'LZ2 Lék' in list_names:
                itemize.add_item("Lékárna včetně zázemí bude tvořit samostatný\
                                  požární úsek.")
            if 'AZ2 vyšet.' in list_names:
                itemize.add_item("Vyšetřovací a léčebné části objektu budou\
                                  tvořit samostatný požární úsek.")
            if 'LZ1' in list_names or 'LZ2 lůž' in list_names:
                itemize.add_item("Lůžkové části pro pacienty v objektu budou\
                                  tvořit samostatné požární úseky")
            if 'LZ2 int.péče' in list_names:
                itemize.add_item("Jednotky intenzivní péče, anesteziologicko\
                                  resistutační oddělení a operační sály budou\
                                  tvořit samostatný požární úseky.")
            if 'LZ2 biochem' in list_names:
                itemize.add_item("Oddělení klinické biochemie bude tvořit\
                                  samostatný požární úsek.")
            if 'peč. Služ' in list_names:
                itemize.add_item("Každá bytová jednotka v domě s pečovatelskou\
                                  službou bude tvořit samostatný požární\
                                  úsek.")
            if 'soc.péče.ošetř' in list_names:
                itemize.add_item("Ošetřovny v domovech sodiální poče budou\
                                  tvořit samostatné požární úsek.")
            if 'soc.péče.lůž' in list_names:
                itemize.add_item("Lůžkové prostory v domovech sociální péče\
                                  budou tvořit samostatné požární úseky.")
            if 'soc.péče.byt' in list_names:
                itemize.add_item("Každá bytová jednotka v domě sociální péče\
                                  bude tvořit samostatný požární úsek.")
            if 'Jesle' in list_names:
                itemize.add_item("Prostory pro děti do tří let (Jesle)\
                                  budou tvořit samostatný požární úsek.")
    os.chdir(vystup_dir)
    doc.generate_pdf("C", clean_tex=False)
Exemple #9
0
                data_ = data[i]['v']
            except KeyError:
                pass
            else:

                # Iterate over z positions
                for z, v in zip(zprofile[i].values(), data_[:, it]):

                    f.write('%E, %E, %E, %E\n' % (xx_[i], yy_[i], z, v))


# Results folder
folder = os.path.join(os.getcwd(), "code/data/results")

# Read the results
data, zprofile, xyr = read_results.read_results(folder)
print('Finished with read_results')
xx_, yy_, rr_ = xyr

# All cable indices
all_cable_indices = list(data.keys())

# Variable of interest
var_interest = 'v'
var_interest = 'vext[1]'

# Callables
callables = {
    'v': save_v_xyz,
    'vext[0]': save_vext_xyz,
    'vext[1]': save_vext_xyz,
Exemple #10
0
    os.remove(name)

#-------------------------------------------------------------------------------------------------------
# Run AVL
#-------------------------------------------------------------------------------------------------------
print('Running AVL...\n')
for i in range(Input.batch_index):
    Input.run_full_name = Input.run_file + str(i) + '.run'
    print(Input.run_full_name)
    call_avl(Input)

#-------------------------------------------------------------------------------------------------------
# Post-process results
#-------------------------------------------------------------------------------------------------------
# Read ouput results
print('Reading outputs...\n')
labels, results = read_results(Input)

# Write output into the file
print('Writing outputs to Excel...\n')
workbook = xlsxwriter.Workbook('AVL_derivatives.xlsx')
worksheet = workbook.add_worksheet()
row = 0
worksheet.write_column(row, 0, labels)
for col, result in enumerate(results):
    worksheet.write_column(row, col + 1, result)

workbook.close()

print('Calculations are completed\n')
def z_slice(ax, filename, folder, z, t, tarray):
	""" This slicing function uses a much more efficient 
	method to interpolate along the z-axiz """

	# This is from a xyz file

	# Load data
	data = np.loadtxt(filename, delimiter=',')
	x = data[:,0]
	y = data[:,1]
	z_ = data[:,2]
	v = data[:,3]

	# Set the cables
	xy_all = np.array(list(zip(x, y)))
	xy_unique = np.unique(xy_all, axis=0)
	nc = len(xy_unique)

	data_intp = np.zeros(nc)

	# Construct zprofile
	for i, xy in enumerate(xy_unique):

		# Select the corresponding rows
		rows = np.where((xy == xy_all).all(axis=1))[0]

		# Sort z_ just in case
		# argsort = np.argsort(z_[rows])
		# z_.sort()
		# Sort v accordingly
		# Not yet
		# v.sort(argsort)

		# Select z_
		z__ = z_[rows]
		z_lower = z__[np.where(z__ < z)]
		z__minus_z = np.abs(z__ - z)
		z_lower_minus_z = np.abs(z_lower - z).min()
		here = np.where(z__minus_z == z_lower_minus_z)[0][0]


		# Interpolate
		v__ = v[rows]
		data_intp[i] = (z__minus_z[here + 1] * v__[here] + z__minus_z[here] * v__[here + 1]) / (z__[here + 1] - z__[here])
		# if v[here] < -100.:

	# Show result
	ax.scatter(xy_unique[:, 0], xy_unique[:, 1], c=data_intp, s=10, cmap=plt.cm.jet_r)
	ax.set_aspect('equal')

	# KEEP THE CODE BELOW, DON'T DELETE IT.
	# It works only when there are results
	if False:
		# Read results
		data, zprofile, xyr = read_results.read_results(folder)
		xx_, yy_, rr_ = xyr

		nc = len(data)
		data_intp = np.zeros(nc)

		for i in range(nc):

			# Choose data
			try:
				data_ = data[i]['vext[0]']
			except KeyError:
				data_ = data[i]['vext[1]']

			# Find the zprofile[i] value lying just below z
			zpr = np.array(zprofile[i].values())
			zpr_minus_z = np.abs(zpr - z)
			here = np.where(zpr_minus_z == zpr_minus_z.min())

			# Interpolate v
			it = np.where(tarray == t)[0][0]
			v = data_[:, it]
			# data_intp[i] = (zpr_minus_z[here] * v[here] + zpr_minus_z[here + 1] * v[here + 1]) / (zpr[here + 1] - zpr[here])
			data_intp[i] = (zpr_minus_z[here + 1] * v[here] + zpr_minus_z[here] * v[here + 1]) / (zpr[here + 1] - zpr[here])

		# Show result
		ax.scatter(xx_, yy_, c=data_intp)

	return xy_unique, data_intp
Exemple #12
0
def d1_generator(data_dir, vystup_dir):
    os.chdir(data_dir)
    data_PU = read_results('results.csv')
    info_PU = read_results('raw_data_info.csv')
    list_names = []
    for i in range(0, len(data_PU)):
        list_names.append(data_PU[i][19])
    # Arrange data to desired shape
    data_used = []
    forbiden = ['CHÚC-A', 'CHÚC-B', 'CHÚC-C', 'OB2 byt']
    for i in range(0, len(data_PU)):
        if list_names[i] not in forbiden:
            data_used.append(data_PU[i][0])
            data_used.append(data_PU[i][2])
            data_used.append("%.2f" % float(data_PU[i][17]))
            A = float(data_PU[i][17])
            data_used.append("%.2f" % float(data_PU[i][18]))
            B = float(data_PU[i][18])
            C = A * B
            data_used.append("%.2f" % C)
            data_used.append(data_PU[i][1])
            if (A * B) > float(data_PU[i][1]):
                data_used.append('ANO')
            else:
                data_used.append('NE')
                print()
                print('D.1 Pozor nevyhovuje - ' + str(data_PU[i][0]))
                print()

    data_used = list(chunks(data_used, 7))

    geometry_options = {"margin": "0.5cm", "includeheadfoot": True}
    doc = Document(page_numbers=True, geometry_options=geometry_options)
    doc.preamble.append(NoEscape(r'\usepackage[czech]{babel}'))
    doc.preamble.append(NoEscape(r'\usepackage{threeparttablex}'))
    doc.preamble.append(NoEscape(r'\usepackage{pdfpages}'))
    doc.preamble.append(NoEscape(r'\definecolor{Hex}{RGB}{239,239,239}'))
    doc.documentclass.options = Options('10pt')

    with doc.create(Subsection('Mezní rozměry požárních úseků')):
        doc.append(
            NoEscape(r'\textbf{Mezní půdorysné rozměry}: Posouzení\
                            rozměrů požárního úseku je patrné z tabulky\
                            \ref{rozmery}.'))
        if 'OB2 byt' in list_names:
            doc.append('Mezní rozměry bytových jednotek se v souladu\
                        s čl. 5.1.5 normy ČSN 73 0833 nestanovují.')

        if info_PU[0] == ['nehořlavý']:
            str1 = str(9)
        if info_PU[0] == ['smíšený']:
            str1 = str(10)
        if info_PU[0] == ['hořlavý']:
            str1 = str(11)
        string1 = 'Mezní délky a mezní šířky jednotlivých požárních\
                   úseků byly stanoveny tabulkou '

        string2 = ' normy ČSN 73 0802 na základě součinitele rychlosti\
                    odhořívání požárního úseků.'

        string = string1 + str1 + string2
        doc.append(string)
        for i in range(0, len(data_used)):
            data_used[i][1] = data_used[i][1].replace(".", ",")
            data_used[i][2] = data_used[i][2].replace(".", ",")
            data_used[i][3] = data_used[i][3].replace(".", ",")
            data_used[i][4] = data_used[i][4].replace(".", ",")
            data_used[i][5] = data_used[i][5].replace(".", ",")

        with doc.create(LongTable("l c c c c c c",
                                  pos=['htb!'])) as data_table:
            doc.append(Command('caption', 'Ověření rozměrů požárních úseků'))
            doc.append(Command('label', 'rozmery'))
            doc.append(Command('\ '))
            data_table.append
            data_table.add_hline()
            data_table.add_row([
                "PÚ", "Souč.", "Mězní délka", "Mezní šířka", "Mezní plocha",
                "Plocha", "Vyhovuje"
            ])
            data_table.add_row([
                " ", "a", "[m]", "[m]",
                NoEscape('[m$^2$]'),
                NoEscape('[m$^2$]'), ""
            ])
            data_table.add_hline()
            data_table.end_table_header()
            for i in range(0, len(data_used)):
                if i % 2 != 0:
                    data_table.add_row(data_used[i], color="Hex")
                else:
                    data_table.add_row(data_used[i])
            data_table.add_hline()
            os.chdir(vystup_dir)
    doc.generate_pdf("D1_PU", clean_tex=False)