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.RCCrackStraightControlVars())
def check(self,elements,nmbComb): ''' For each element in the set 'elememts' passed as first parameter and the resulting internal forces for the load combination 'nmbComb' passed as second parameter, this method calculates all the variables involved in the crack-SLS checking and obtains the crack width. In the case that the calculated crack width is greater than the biggest obtained for the element in previous load combinations, this value is saved in the element results record. Elements processed are those belonging to the phantom model, that is to say, of type xc.ZeroLengthSection. As we have defined the variable fakeSection as False, a reinfoced concrete fiber section is generated for each of these elements. ''' if(self.verbose): lmsg.log("Postprocessing combination: "+nmbComb) for e in elements: Aceff=0 #init. value R=e.getResistingForce() sct=e.getSection() sctCrkProp=lscb.fibSectLSProperties(sct) sctCrkProp.setupStrghCrackDist() hceff=self.EC2_hceff(sctCrkProp.h,sctCrkProp.d,sctCrkProp.x) Acgross=sct.getGrossEffectiveConcreteArea(hceff) Aceff=sct.getNetEffectiveConcreteArea(hceff,"tensSetFb",15.0) concrete=EC2_materials.concrOfName[sctCrkProp.concrName] rfSteel=EC2_materials.steelOfName[sctCrkProp.rsteelName] k2=self.EC2_k2(sctCrkProp.eps1,sctCrkProp.eps2) # print 'elem= ',e.tag, ' Aceff= ',Aceff if Aceff<=0: s_rmax=0 else: ro_s_eff=sctCrkProp.As/Aceff #effective ratio of reinforcement s_rmax=self.k3*sctCrkProp.cover+self.k1*k2*self.k4*sctCrkProp.fiEqu/ro_s_eff #Parameters for tension stiffening of concrete paramTS= concrete_base.paramTensStiffness(concrMat=concrete,reinfMat=rfSteel,reinfRatio=ro_s_eff,diagType='K') concrete.tensionStiffparam=paramTS #parameters for tension #stiffening are assigned to concrete ftdiag=concrete.tensionStiffparam.pointOnsetCracking()['ft'] #stress at the adopted point for concrete onset cracking Etsdiag=abs(concrete.tensionStiffparam.regresLine()['slope']) fiber_sets.redefTensStiffConcr(setOfTenStffConcrFibSect=sctCrkProp.setsRC.concrFibers,ft=ftdiag,Ets=Etsdiag) e.setProp('ResF',R) #vector resisting force e.setProp('s_rmax',s_rmax) #maximum crack distance self.preprocessor.getDomain.revertToStart() predefined_solutions.resuelveComb(self.preprocessor,nmbComb,self.analysis,1) for e in elements: sct=e.getSection() rfset=sct.getFiberSets()["reinfSetFb"] eps_sm=rfset.getStrainMax() srmax=e.getProp("s_rmax") # eps_cm=concrete.fctm()/2.0/concrete.E0() # wk=srmax*(eps_sm-eps_cm) wk=srmax*eps_sm # print ' eps_sm= ',eps_sm, ' srmax= ', srmax, ' wk= ',wk # print 'e.getProp(self.limitStateLabel).wk', e.getProp(self.limitStateLabel).wk if (wk>e.getProp(self.limitStateLabel).wk): R=e.getProp('ResF') e.setProp(self.limitStateLabel,cv.RCCrackStraightControlVars(idSection=e.getProp("idSection"),combName=nmbComb,N=-R[0],My=-R[4],Mz=-R[5],s_rmax=srmax,eps_sm=eps_sm,wk=wk))