Source code for streng.ppp.loads.slabs_to_beams

from dataclasses import dataclass, field
from typing import Dict
import math

from streng.ppp.sections.concrete.typical_sections.slabs import Slab


[docs]@dataclass class SlabLoadsToBeams(Slab): """ .. code-block:: python :linenos: sl = SlabLoadsToBeams(l_max = 6.0, l_min = 4.0, slab_type = '4', slab_load = 6.3) print(sl.beams_loads) """ slab_load: float slab_areas: Dict = field(default_factory=dict) beams_loads: Dict = field(default_factory=dict) def __post_init__(self): self.calc()
[docs] def calc(self): if self.slab_type == '1' or self.slab_type == '6' or self.slab_type == 1 or self.slab_type == 6: areas = self.get_areas_1(self.l_max, self.l_min) elif self.slab_type == '2a': areas = self.get_areas_2a(self.l_max, self.l_min) elif self.slab_type == '2b': areas = self.get_areas_2b(self.l_max, self.l_min) elif self.slab_type == '3a': areas = self.get_areas_3a(self.l_max, self.l_min) elif self.slab_type == '3b': areas = self.get_areas_3b(self.l_max, self.l_min) elif self.slab_type == '4' or self.slab_type == 4: areas = self.get_areas_4(self.l_max, self.l_min) elif self.slab_type == '5a': areas = self.get_areas_5a(self.l_max, self.l_min) elif self.slab_type == '5b': areas = self.get_areas_5b(self.l_max, self.l_min) else: areas = 0., 0., 0., 0. for i in range(0, 4): self.slab_areas[i + 1] = areas[i] self.beams_loads[i + 1] = areas[i] * self.slab_load self.beams_loads[1] /= self.l_max self.beams_loads[2] /= self.l_max self.beams_loads[3] /= self.l_min self.beams_loads[4] /= self.l_min
[docs] @staticmethod def get_areas_1(l1, l2): """ .. image paths are relative to the shpinx source folder that calls this automodule/autoclass Υπολογισμός εμβαδών για πλάκες τύπου 1 .. image:: ../img/slab_loads_to_beams/01.png :width: 45 % """ e1 = 0.5 * (l1 + (l1 - l2)) * l2 / 2 e2 = e1 e3 = 0.25 * l2 * l2 e4 = e3 return e1, e2, e3, e4
[docs] @staticmethod def get_areas_2a(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 2a .. image:: ../img/slab_loads_to_beams/02a.png :width: 45 % """ l2b = l2 / (1 + math.tan(math.pi / 6) / math.tan(math.pi / 4)) l2a = l2 - l2b l1a = l2a # l1c = l2a l1b = l1 - 2 * l2a e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = e3 return e1, e2, e3, e4
[docs] @staticmethod def get_areas_2b(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 2b .. image:: ../img/slab_loads_to_beams/02b1.png :width: 45 % .. image:: ../img/slab_loads_to_beams/02b2.png :width: 40 % """ l1a = (l2 / 2) / math.tan(math.pi / 6) l1c = l2 / 2 l2a = l1c l2b = l1c l1b = l1 - l1a - l1c e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = 0.5 * l2 * l1c if l1b < 0: l1a = l1 / (1 + math.tan(math.pi / 6)) l1b = l1 - l1a l2a = l1b l2c = l1b l2b = l2 - l2a - l2c e1 = 0.5 * l1 * l2c e2 = 0.5 * l1 * l2a e3 = 0.5 * (l2 + l2b) * l1a e4 = 0.5 * (l2 + l2b) * l1b return e1, e2, e3, e4
[docs] @staticmethod def get_areas_3a(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 3a .. image:: ../img/slab_loads_to_beams/03a.png :width: 45 % """ l2a = l2 / 2 l2b = l2a l1a = l2a / math.tan(math.pi / 3) l1c = l1a l1b = l1 - l1a - l1c e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = 0.5 * l2 * l1c return e1, e2, e3, e4
[docs] @staticmethod def get_areas_3b(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 3b .. image:: ../img/slab_loads_to_beams/03b1.png :width: 45 % .. image:: ../img/slab_loads_to_beams/03b2.png :width: 40 % """ l2a = l2 / 2 l2b = l2a l1a = l2a / math.tan(math.pi / 6) l1c = l1a l1b = l1 - l1a - l1c e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = 0.5 * l2 * l1c if l1b < 0: l1a = l1 / 2 l1b = l1a l2a = l1a * math.tan(math.pi / 6) l2c = l2a l2b = l2 - l2a - l2c e1 = 0.5 * l1 * l2c e2 = 0.5 * l1 * l2a e3 = 0.5 * (l2 + l2b) * l1a e4 = 0.5 * (l2 + l2b) * l1b return e1, e2, e3, e4
[docs] @staticmethod def get_areas_4(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 4 .. image:: ../img/slab_loads_to_beams/04.png :width: 45 % """ l2a = l2 / (1 + math.tan(math.pi / 3) / math.tan(math.pi / 4)) l2b = l2 - l2a l1a = l2b l1c = l2a l1b = l1 - l1a - l1c e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = 0.5 * l2 * l1c return e1, e2, e3, e4
[docs] @staticmethod def get_areas_5a(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 5a .. image:: ../img/slab_loads_to_beams/05a.png :width: 45 % """ l2a = l2 / 2 l2b = l2 - l2a l1a = l2b l1c = l2a / math.tan(math.pi / 3) l1b = l1 - l1a - l1c e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = 0.5 * l2 * l1c return e1, e2, e3, e4
[docs] @staticmethod def get_areas_5b(l1, l2): """ Υπολογισμός εμβαδών για πλάκες τύπου 5b .. image:: ../img/slab_loads_to_beams/05b1.png :width: 45 % .. image:: ../img/slab_loads_to_beams/05b2.png :width: 40 % """ l2b = l2 / (1 + math.tan(math.pi / 3) / math.tan(math.pi / 4)) l2a = l2 - l2b l1a = l2a l1c = l2a l1b = l1 - l1a - l1c e1 = 0.5 * (l1 + l1b) * l2b e2 = 0.5 * (l1 + l1b) * l2a e3 = 0.5 * l2 * l1a e4 = 0.5 * l2 * l1c if l1b < 0: l1a = l1 / 2 l1b = l1a l2a = l1a l2c = l2a * math.tan(math.pi / 6) l2b = l2 - l2a - l2c e1 = 0.5 * l1 * l2c e2 = 0.5 * l1 * l2a e3 = 0.5 * (l2 + l2b) * l1a e4 = 0.5 * (l2 + l2b) * l1b return e1, e2, e3, e4