Esempio n. 1
0
    def initControlVars(self, elements):
        ''' Initialize control variables over elements.

          :param elements: elements to define control variables in
        '''
        for e in elements:
            e.setProp(self.limitStateLabel, cv.RCShearControlVars())
Esempio n. 2
0
    def check(self, elements, nmbComb):
        '''
        Check the shear strength of the RC section.
           Transverse reinforcement is not
           taken into account yet.
        '''
        lmsg.log("Postprocesing combination: " + nmbComb)
        # XXX torsional deformation ingnored.

        for e in elements:
            e.getResistingForce()
            scc = e.getSection()
            idSection = e.getProp("idSection")
            section = scc.getProp('sectionData')
            self.setSection(section)
            NTmp = scc.getStressResultantComponent("N")
            VuTmp = self.calcVu(NTmp)
            VyTmp = scc.getStressResultantComponent("Vy")
            VzTmp = scc.getStressResultantComponent("Vz")
            VTmp = math.sqrt((VyTmp)**2 + (VzTmp)**2)
            if (VuTmp != 0.0):
                FCtmp = abs(VTmp) / VuTmp
            else:
                FCtmp = 10
            if (FCtmp >= e.getProp(self.limitStateLabel).CF):
                MyTmp = scc.getStressResultantComponent("My")
                MzTmp = scc.getStressResultantComponent("Mz")
                Mu = 0.0  # Not used in ACI-318
                theta = None  # Not used in ACI-318
                e.setProp(self.limitStateLabel,
                          cv.RCShearControlVars(idSection, nmbComb, FCtmp,
                                                NTmp, MyTmp, MzTmp, Mu, VyTmp,
                                                VzTmp, theta, self.Vc,
                                                self.Vsu, VuTmp))  # Worst cas
    def check(self, elements, nmbComb):
        '''
    Check the shear strength of the RC section.
       XXX Orientation of the transverse reinforcement is not
       taken into account.
    '''
        print("Postprocesing combination: ", nmbComb)
        # XXX torsional deformation ingnored.

        for e in elements:
            e.getResistingForce()
            scc = e.getSection()
            idSection = e.getProp("idSection")
            section = scc.getProp("datosSecc")
            self.setSection(section)
            AsTrsv = section.shReinfY.getAs()
            alpha = section.shReinfY.angAlphaShReinf
            theta = section.shReinfY.angThetaConcrStruts

            VuTmp = section.getRoughVcuEstimation()
            NTmp = scc.getStressResultantComponent("N")
            MyTmp = scc.getStressResultantComponent("My")
            momentThreshold = VuTmp / 1000.0
            if (abs(MyTmp) < momentThreshold):  #bending moment too small.
                MyTmp = momentThreshold
            MzTmp = scc.getStressResultantComponent("Mz")
            if (abs(MzTmp) < momentThreshold):  #bending moment too small.
                MzTmp = momentThreshold
            VyTmp = scc.getStressResultantComponent("Vy")
            if (abs(VyTmp) >
                    VuTmp / 5.0):  #We "eliminate" very small shear forces.
                posEsf = geom.Pos3d(NTmp, MyTmp, MzTmp)
                diagInt = e.getProp("diagInt")
                intersection = diagInt.getIntersection(posEsf)
                Mu = intersection.z
                VuTmp = self.calcVu(NTmp, MzTmp, Mu,
                                    VyTmp)  #Mz associated with Vy
            else:
                #Fictitious ultimate moment.
                Mu = self.concrete.Ecm() * section.getIz_RClocalZax(
                ) * 1e-3 / section.h
                if (abs(MzTmp) > Mu):
                    errMsg = 'Fictitious ultimate moment too low;'
                    errMsg += ' Mu= ' + str(Mu) + ' MzTmp= ' + str(MzTmp)
                    lmsg.error(errMsg)
            #13.02.2018 right-justified in order to be run only if VyTmp>VuTmp/5.0
            if (VuTmp != 0.0):
                FCtmp = abs(VyTmp) / VuTmp
            else:
                FCtmp = 10
            if (FCtmp >= e.getProp(self.limitStateLabel).CF):
                VzTmp = scc.getStressResultantComponent("Vz")
                e.setProp(self.limitStateLabel,
                          cv.RCShearControlVars(idSection, nmbComb, FCtmp,
                                                NTmp, MyTmp, MzTmp, Mu, VyTmp,
                                                VzTmp, theta, self.Vcu,
                                                self.Vsu, VuTmp))  # Worst case