Commits

Panagiotis Mavrogiorgos committed 17d9b37

Added a new class for running tests of eligenhausen bond model with tassios monotonic law.

Comments (0)

Files changed (2)

         db["df_tot"].append(ccopy(df))
         db["tf_tot"].append(ccopy(tf))
 
+class EligenhausenWithTassiosMonotonic(Eligenhausen):
+    def __init__(self, fck, fctm):
+        super(EligenhausenWithTassiosMonotonic, self).__init__(fck, fctm)
+
+        # Since the monotonic bond law is redefined, the base_areas must be
+        # recalculated too.
+        self._calc_bond_monotonic(fck, fctm)
+        self._calc_base_areas()
+
+    def _calc_bond_monotonic(self, fck, fct, friction_factor = 0.4):
+        """
+        Defines bond model's monotonic law.
+        """
+        tmax = fck / 3
+        tr = friction_factor * tmax
+
+        # This is from the Tassios Bond Model
+        slip_mono = [0, 0.01,     0.1,  0.4,    1, 10.5, 15]
+        bond_mono = [0,  fct, 2 * fct, tmax, tmax,   tr, tr]
+
+        # Original Eligenhausen
+        #slip_mono = [0, 0.01,     0.1,     0.3,    1,    3, 10.5, 15]
+        #bond_mono = [0,  fct, 2 * fct, 3 * fct, tmax, tmax,   tr, tr]
+
+        self.slip_mono = numpy.array(slip_mono, dtype = np_float)
+        self.bond_mono = numpy.array(bond_mono, dtype = np_float)
+
+        # calculate slopes of the monotonic curve segments.
+        self.slope1 = line_slope(slip_mono[0], bond_mono[0],
+                                 slip_mono[1], bond_mono[1])

pull_out_tests.py

 from lines import interpolation
 from concrete import ModelCode2010
 from steel import B500C
-from bond import Tassios, Eligenhausen, Bond
+from bond import Tassios, Eligenhausen, Bond, EligenhausenWithTassiosMonotonic
 from Constants import (INFINITESIMAL_LENGTH, LENGTH_OF_OMOIOTHECY,
                        OMOIOTHECY_BACK, OMOIOTHECY_FRONT, LOAD_STABILITY,
                        TOLERANCE, MAX_ITERATIONS)
 
         # finish with a pull-out
         self.pull_load(P)
-        self.store_laws_and_Specimen(self.db)
+        self.store_laws_and_Specimen(self.db)
+
+class PullOutClassicEligenhausenWithTassiosMonotonic(PullOutClassicEligenhausen):
+    def __init__(self, fck, fyk, L, Ds, Dc):
+        super(PullOutClassicEligenhausenWithTassiosMonotonic, self).__init__(fck, fyk, L, Ds, Dc)
+
+        # Overwrite Bond instance in order to make it more specific.
+        self.B = EligenhausenWithTassiosMonotonic(self.C.fck, self.C.fctm)
+
+        self.initialize()
+
+        self.bond_model = "Eligenhausen (χρήση του μονοτονικού κατασταστατικού νόμου του Tassios)"