Source code for streng.codes.greek.kanepe.raw.ch7a.yield_point

import math
from tabulate import tabulate


[docs]def ξycalc(α, A, B, include_intermediates=False): """ Το ύψος της θλιβόµενης ζώνης στη διαρροή, ξy, ανηγµένο στο στατικό ύψος d, είναι: .. math:: ξ_y=(α^2A^2+2αB)^{0.5}-αA Args: α (float): Ο λόγος των μέτρων ελαστικότητας :math:`α = E_s/E_c` A (float): Ο συντελεστής A που υπολογίζονται για διαρροή λόγω χάλυβα ή μη-γραμμικότητα σκυροδέματος B (float): Ο συντελεστής B που υπολογίζονται για διαρροή λόγω χάλυβα ή μη-γραμμικότητα σκυροδέματος include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: tuple: A tuple, with [value, latexstring] """ value = (α ** 2 * A ** 2 + 2 * α * B) ** 0.5 - α * A if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r"ξ_y=(α^2A^2+2αB)^{0.5}-αA" \ + fr'=({α:.3f}^2\cdot {A:.5f}^2+2\cdot {α:.3f}\cdot {B:.5f})^{{0.5}}-{α:.3f}\cdot {A:.5f}={value:.4f}' return _dict else: return value
[docs]def A_steel(ρ1, ρ2, ρv, N, b, d, fy, include_intermediates=False): """ Συντελεστής A για διαρροή του οπλισμού. Δίνεται από τη σχέση: .. math:: A=ρ+ρ'+ρ_v+\dfrac{N}{bdf_y} Args: ρ1 (float): (ρ) το ποσοστό του εφελκυόµενου οπλισμού ρ2 (float): (ρ') το ποσοστό του θλιβόμενου οπλισμού ρv (float): το ποσοστό του μεταξύ τους κατανεμημένου οπλισμού N (float): το αξονικό φορτίο (θετικό σε θλίψη) [kN] b (float): το πλάτος της θλιβόµενης ζώνης [m] d (float): το στατικό ύψος [m] fy (float): το όριο διαρροής του χάλυβα [kPa] include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = ρ1 + ρ2 + ρv + N / (b * d * fy) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r"A=ρ+ρ'+ρ_v+\dfrac{{N}}{{bdf_y}}=" \ + f'{ρ1:.5f}+{ρ2:.5f}+{ρv:.5f}+' \ + f'\dfrac{{{N:.2f}kN}}{{{b:.2f}m\cdot{d:.2f}m\cdot{fy:.1f}kPa}}={value:.5f}' return _dict else: return value
[docs]def B_steel(ρ1, ρ2, ρv, N, b, d, δtonos, fy, include_intermediates=False): """ Συντελεστής B για διαρροή του οπλισμού. Δίνεται από τη σχέση: .. math:: B=ρ+ρ'δ'+0.5ρ_v(1+δ')+\dfrac{N}{bdf_y} Args: ρ1 (float): (ρ) το ποσοστό του εφελκυόµενου οπλισμού ρ2 (float): (ρ') το ποσοστό του θλιβόμενου οπλισμού ρv (float): το ποσοστό του μεταξύ τους κατανεμημένου οπλισμού N (float): το αξονικό φορτίο (θετικό σε θλίψη) [kN] b (float): το πλάτος της θλιβόµενης ζώνης [m] d (float): το στατικό ύψος [m] δtonos (float): :math:`δ' = d'/d` όπου d' η απόσταση από το κέντρο του θλιβόµενου οπλισµού µέχρι την ακραία θλιβόµενη ίνα σκυροδέµατος fy (float): το όριο διαρροής του χάλυβα [kPa] include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = ρ1 + ρ2 * δtonos + 0.5 * ρv * (1 + δtonos) + N / (b * d * fy) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r'\begin{aligned}' \ + r"B &=ρ+ρ'δ'+0.5ρ_v(1+δ')+\dfrac{N}{bdf_y}=" + r'\\' \ + f'&={ρ1:.5f}+{ρ2:.5f}\cdot{δtonos:.3f}+0.5\cdot{ρv:.5f}\cdot(1+{δtonos:.3f})+' \ + f'\dfrac{{{N:.2f}kN}}{{{b:.2f}m\cdot{d:.2f}m\cdot{fy:.1f}kPa}}={value:.5f}' \ + r'\end{aligned}' return _dict else: return value
[docs]def φy_steel(fy, Es, ξy, d, include_intermediates=False): """ Καμπυλότητα διαρροής για διαρροή του οπλισμού. Δίνεται από τη σχέση: .. math:: φ_y=\dfrac{f_y}{E_s(1-ξ_y)d} Args: fy (float): το όριο διαρροής του χάλυβα [kPa] Es (float): το μέτρο ελαστικότητας του χάλυβα [kPa] ξy (float): Το ύψος της θλιβόµενης ζώνης στη διαρροή, ανηγµένο στο στατικό ύψος d [m] d (float): το στατικό ύψος [m] include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = fy / (Es * (1.0 - ξy) * d) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r"φ_y=\dfrac{f_y}{E_s(1-ξ_y)d}=" \ + fr'\dfrac{{{fy:.1f}}}{{{Es:.1f}\cdot(1-{ξy:.4f})\cdot{d:.3f}}}={value:.5f}' return _dict else: return value
[docs]def A_conc(ρ1, ρ2, ρv, N, b, d, α, fc, include_intermediates=False): """ Συντελεστής A για µή-γραµµικότητα των παραµορφώσεων του θλιβόµενου σκυροδέµατος Δίνεται από τη σχέση (χρησιμοποιείται η προσέγγιση): .. math:: A=ρ+ρ'+ρ_v-\dfrac{N}{ε_c E_s bd}≈ρ+ρ'+ρ_v-\dfrac{N}{1.8αbdf_c} Args: ρ1 (float): (ρ) το ποσοστό του εφελκυόµενου οπλισμού ρ2 (float): (ρ') το ποσοστό του θλιβόμενου οπλισμού ρv (float): το ποσοστό του μεταξύ τους κατανεμημένου οπλισμού N (float): το αξονικό φορτίο (θετικό σε θλίψη) [kN] b (float): το πλάτος της θλιβόµενης ζώνης [m] d (float): το στατικό ύψος [m] α (float): Ο λόγος των μέτρων ελαστικότητας :math:`α = E_s/E_c` fc (float): η θλιπτική αντοχή του σκυροδέματος [kPa] include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = ρ1 + ρ2 + ρv - N / (1.8 * α * b * d * fc) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r"A=ρ+ρ'+ρ_v-\dfrac{N}{1.8αbdf_c}=" \ + f'{ρ1:.5f}+{ρ2:.5f}+{ρv:.5f}-' \ + f'\dfrac{{{N:.2f}kN}}{{1.8\cdot{α:.3f}\cdot{b:.2f}m\cdot{d:.2f}m\cdot{fc:.1f}kPa}}={value:.5f}' return _dict else: return value
[docs]def B_conc(ρ1, ρ2, ρv, b, d, δtonos, include_intermediates=False): """ Συντελεστής B για µή-γραµµικότητα των παραµορφώσεων του θλιβόµενου σκυροδέµατος Δίνεται από τη σχέση: .. math:: B=ρ+ρ'δ'+0.5ρ_v(1+δ') Args: ρ1 (float): (ρ) το ποσοστό του εφελκυόµενου οπλισμού ρ2 (float): (ρ') το ποσοστό του θλιβόμενου οπλισμού ρv (float): το ποσοστό του μεταξύ τους κατανεμημένου οπλισμού b (float): το πλάτος της θλιβόµενης ζώνης [m] d (float): το στατικό ύψος [m] δtonos (float): :math:`δ' = d'/d` όπου d' η απόσταση από το κέντρο του θλιβόµενου οπλισµού µέχρι την ακραία θλιβόµενη ίνα σκυροδέµατος include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = ρ1 + ρ2 * δtonos + 0.5 * ρv * (1 + δtonos) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r"B=ρ+ρ'δ'+0.5ρ_v(1+δ')=" \ + rf'{ρ1:.5f}+{ρ2:.5f}\cdot{{{δtonos:.3f}}}+0.5\cdot{ρv:.5f}\cdot(1+{{{δtonos:.3f}}})={value:.5f}' return _dict else: return value
[docs]def φy_conc(fc, Ec, ξy, d, include_intermediates=False): """ Καμπυλότητα διαρροής για για µή-γραµµικότητα των παραµορφώσεων του θλιβόµενου σκυροδέµατος Δίνεται από τη σχέση (χρησιμοποιείται η προσέγγιση): .. math:: φ_y=\dfrac{ε_c}{ξ_y d}≈\dfrac{1.8 f_y}{E_s ξ_y d} Args: fc (float): η θλιπτική αντοχή του σκυροδέματος [kPa] Ec (float): το μέτρο ελαστικότητας του σκυροδέματος [kPa] ξy (float): Το ύψος της θλιβόµενης ζώνης στη διαρροή, ανηγµένο στο στατικό ύψος d [m] d (float): το στατικό ύψος [m] include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = 1.8 * fc / (Ec * ξy * d) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r"φ_y=\dfrac{1.8 f_y}{E_s ξ_y d}=" \ + rf'\dfrac{{1.8\cdot{fc:.1f}}}{{{Ec:.1f}\cdot{ξy:.4f}\cdot{d:.3f}}}={value:.5f}' return _dict else: return value
[docs]def My(b, d, φy, Ec, ξy, δtonos, ρ1, ρ2, ρv, Es, include_intermediates=False): """ Με δεδοµένη την καµπυλότητα στη διαρροή, η αντίστοιχη ροπή Μy προκύπτει ως: .. math:: \dfrac{M_y}{bd^3}=φ_y\Bigg\{E_c\dfrac{ξ_y^2}{2}\Big(0.5(1+δ')-\dfrac{ξ_y}{3}\Big) + \Big[ (1-ξ_y)ρ+(ξ_y-δ')ρ'+\dfrac{ρ_v}{6}(1-δ') \Big]\cdot(1-δ')\dfrac{E_s}{2} \Bigg\} Args: b (float): το πλάτος της θλιβόµενης ζώνης [m] d (float): το στατικό ύψος [m] φy (float): Καμπυλότητα διαρροής [m-1] Ec (float): το μέτρο ελαστικότητας του σκυροδέματος [kPa] ξy (float): Το ύψος της θλιβόµενης ζώνης στη διαρροή ανηγµένο στο στατικό ύψος d δtonos (float): :math:`δ' = d'/d` όπου d' η απόσταση από το κέντρο του θλιβόµενου οπλισµού µέχρι την ακραία θλιβόµενη ίνα σκυροδέµατος ρ1 (float): (ρ) το ποσοστό του εφελκυόµενου οπλισμού ρ2 (float): (ρ') το ποσοστό του θλιβόμενου οπλισμού ρv (float): το ποσοστό του μεταξύ τους κατανεμημένου οπλισμού Es (float): το μέτρο ελαστικότητας του χάλυβα [kPa] include_intermediates (bool): True για να δημιουργηθεί το latex string Returns: dict or float: A dict with all intermediate values or a float with final value """ value = b * d ** 3 * φy * (0.5 * Ec * ξy ** 2 * (0.5 * (1 + δtonos) - ξy / 3) + ((1 - ξy) * ρ1 + (ξy - δtonos) * ρ2 + ρv * (1 - δtonos) / 6) * (1 - δtonos) * Es / 2) if include_intermediates: _dict = {} _dict['value'] = value _dict['latex'] = r'\begin{aligned}' \ r"M_y=φ_ybd^3\Bigg\{E_c\dfrac{ξ_y^2}{2}\Big(0.5(1+δ')-\dfrac{ξ_y}{3}\Big) + \Big[ (1-ξ_y)ρ+(ξ_y-δ')ρ'+\dfrac{ρ_v}{6}(1-δ') \Big]\cdot(1-δ')\dfrac{E_s}{2} \Bigg\}=" + r'\\' \ + rf'&={φy:.4f}\cdot {b:.3f} \cdot {d:.3f}^3 \cdot \Bigg\{Ec:.1f}\cdot\dfrac{{{ξy:.4f}^2}}{{2}}\Big(0.5\cdot(1+{δtonos:.3f}) - \dfrac{{{ξy:.4f}}}{{3}}\Big) + ' + r'\\' \ + rf'&+ \Big[ (1-{ξy:.4f})\cdot{ρ1:.5f}+({ξy:.4f}-{δtonos:.3f})\cdot{ρ2:.5f}+\dfrac{{{ρv:.5f}}}{6}(1-{δtonos:.3f}) \Big] \cdot(1-{δtonos:.3f})\dfrac{{{Es:.1f}}}{{2}} \Bigg\}}= ' + r'\\' \ + rf'&={value:.3f}kNm' \ + r'\end{aligned}' return _dict else: return value
# Not needed anymore
[docs]def Mycalc(b, d, φy, Ec, ξy, δ2, ρ1, ρ2, ρv, Es): return b * d ** 3 * φy * (0.5 * Ec * ξy ** 2 * (0.5 * (1 + δ2) - ξy / 3) + ( (1 - ξy) * ρ1 + (ξy - δ2) * ρ2 + ρv * (1 - δ2) / 6) * (1 - δ2) * Es / 2)
# Not needed anymore
[docs]def ABξφ_steel(ρ, ρ2, ρv, N, b, d, δ2, fy, α, Es): A = ρ + ρ2 + ρv + N / (b * d * fy) B = ρ + ρ2 * δ2 + 0.5 * ρv * (1 + δ2) + N / (b * d * fy) ξy = ξycalc(α, A, B) φy = fy / (Es * (1 - ξy) * d) return A, B, ξy, φy
# Not needed anymore
[docs]def ABξφ_conc(ρ, ρ2, ρv, N, b, d, δ2, α, Ec, fc): A = ρ + ρ2 + ρv - N / (1.8 * α * b * d * fc) B = ρ + ρ2 * δ2 + 0.5 * ρv * (1 + δ2) ξy = ξycalc(α, A, B) φy = 1.8 * fc / (Ec * ξy * d) return A, B, ξy, φy
[docs]def yield_props(ρ1, ρ2, ρv, N, b, d, δtonos, fc, Ec, fy, Es, include_intermediates=False): logtext = '' latext = '' _dict = {} α = Es/Ec Asteel = ρ1 + ρ2 + ρv + N / (b * d * fy) Bsteel = ρ1 + ρ2 * δtonos + 0.5 * ρv * (1 + δtonos) + N / (b * d * fy) ξysteel = ξycalc(α, Asteel, Bsteel, False) φysteel = fy / (Es * (1.0 - ξysteel) * d) Aconc = ρ1 + ρ2 + ρv - N / (1.8 * α * b * d * fc) Bconc = ρ1 + ρ2 * δtonos + 0.5 * ρv * (1 + δtonos) ξyconc = ξycalc(α, Aconc, Bconc, False) φyconc = 1.8 * fc / (Ec * ξyconc * d) if φysteel < φyconc: φy = φysteel ξy = ξysteel else: φy = φyconc ξy = ξyconc if include_intermediates: headers = ['', 'value', 'units'] table = [['α', α], ['Asteel', Asteel], ['Bsteel', Bsteel], ['ξysteel', ξysteel, 'm'], ['φysteel', φysteel, 'm-1'], ['Aconc', Aconc], ['Bconc', Bconc], ['ξyconc', ξyconc], ['φyconc', φyconc, 'm-1'], ['φy', φy, 'm-1'], ['ξy', ξy, 'm']] logtext = tabulate(table, headers, tablefmt="pipe", floatfmt=".3E") _dict['α'] = α _dict['Asteel'] = Asteel _dict['Bsteelα'] = Bsteel _dict['ξysteel'] = ξysteel _dict['φysteel'] = φysteel _dict['Aconc'] = Aconc _dict['Bconc'] = Bconc _dict['ξyconc'] = ξyconc _dict['φyconc'] = φyconc _dict['φy'] = φy _dict['ξy'] = ξy # return α, Asteel, Bsteel, ξysteel[0], φysteel, Aconc, Bconc, ξyconc[0], φyconc, φy, ξy, logtext, latext return _dict