class TorsionParameters(object): '''Torsion parameters''' h0 = 0.0 # Real wall thickess. c = 0.0 # Longitudinal reinforcement concrete cover. seccionHuecaEficaz = 0.0 # Cross section contour. crossSectionContour = geom.Poligono2d() # Cross section contour. lineaMedia = geom.Poligono2d( ) # Polygon defined by the midline of the effective hollow section. lineaInt = geom.Poligono2d( ) # Polygon defined by the interior contour of the effective hollow section. seccionHuecaEficaz = geom.PoligonoConAgujeros2d( ) # Effective hollow section contour def A(self): return self.crossSectionContour.getArea() def u(self): return self.crossSectionContour.getPerimetro() def he(self): return max(2 * self.c, min(self.A() / self.u(), self.h0)) def Ae(self): return self.lineaMedia.getArea() def ue(self): return self.lineaMedia.getPerimetro()
def getVehicleBoundary(self): '''Return the boundary of the vehicle.''' retval = geom.Poligono2d() tmp = self.getVehicleBoundaryPositions() for p in tmp: retval.agregaVertice(geom.Pos2d(p.x, p.y)) return retval
def getCenteredVehicleBoundary(self): '''Return the boundary of the vehicle with respect to the load centroid.''' retval = geom.Poligono2d() tmp = self.getVehicleBoundaryRelativePositions() for p in tmp: retval.agregaVertice(p) return retval
def getA0spN(posPerno, CcrSp): ''' Polígono que representa el área de influencia de un anclaje individual según el artículo 5.2.2.6 b) de EOTA TR029. :param posPerno: Posición del del perno. :param CcrSp: Distancia al borde crítica por splitting (m). ''' retval = geom.Poligono2d() retval.agregaVertice(geom.Pos2d(posPerno.x - CcrSp, posPerno.y - CcrSp)) retval.agregaVertice(geom.Pos2d(posPerno.x + CcrSp, posPerno.y - CcrSp)) retval.agregaVertice(geom.Pos2d(posPerno.x + CcrSp, posPerno.y + CcrSp)) retval.agregaVertice(geom.Pos2d(posPerno.x - CcrSp, posPerno.y + CcrSp)) return retval
def getA0cN(posPerno, hEf): ''' Polígono que representa el área de influencia de un anclaje individual según el artículo 5.2.2.4 b) (figura 5.4a) de EOTA TR029. :param posPerno: Posición del del perno. :param hEf: Profundidad efectiva del anclaje (m). ''' semiLadoA0cN = getScrN(hEf) / 2 retval = geom.Poligono2d() retval.agregaVertice( geom.Pos2d(posPerno.x - semiLadoA0cN, posPerno.y - semiLadoA0cN)) retval.agregaVertice( geom.Pos2d(posPerno.x + semiLadoA0cN, posPerno.y - semiLadoA0cN)) retval.agregaVertice( geom.Pos2d(posPerno.x + semiLadoA0cN, posPerno.y + semiLadoA0cN)) retval.agregaVertice( geom.Pos2d(posPerno.x - semiLadoA0cN, posPerno.y + semiLadoA0cN)) return retval
def getA0pN(d, posPerno, hEf, tauRkUcr): ''' Polígono que representa el área de influencia de un anclaje individual según el artículo 5.2.2.3 b) (figura 5.1) de EOTA TR029. :param d: Diámetro del perno (m). :param posPerno: Posición del del perno. :param hEf: Profundidad efectiva del anclaje (m). :param tauRkUcr: Valor característico de la tensión de adherencia con hormigón no fisurado (debe tomarse del documento ETA que resulte aplicable) (Pa). ''' semiLadoA0pN = getCcrNp(d, hEf, tauRkUcr) retval = geom.Poligono2d() retval.agregaVertice( geom.Pos2d(posPerno.x - semiLadoA0pN, posPerno.y - semiLadoA0pN)) retval.agregaVertice( geom.Pos2d(posPerno.x + semiLadoA0pN, posPerno.y - semiLadoA0pN)) retval.agregaVertice( geom.Pos2d(posPerno.x + semiLadoA0pN, posPerno.y + semiLadoA0pN)) retval.agregaVertice( geom.Pos2d(posPerno.x - semiLadoA0pN, posPerno.y + semiLadoA0pN)) return retval
def getA0spN(anchorPosition, CcrSp): ''' Polígono que representa el área de influencia de un anclaje individual according to clause 5.2.2.6 b) of EOTA TR029. :param anchorPosition: anchor position. :param CcrSp: edge distance for ensuring the transmission of the characteristic tensile resistance of a single anchor without spacing and edge effects in case of splitting failure (m). ''' retval = geom.Poligono2d() retval.agregaVertice( geom.Pos2d(anchorPosition.x - CcrSp, anchorPosition.y - CcrSp)) retval.agregaVertice( geom.Pos2d(anchorPosition.x + CcrSp, anchorPosition.y - CcrSp)) retval.agregaVertice( geom.Pos2d(anchorPosition.x + CcrSp, anchorPosition.y + CcrSp)) retval.agregaVertice( geom.Pos2d(anchorPosition.x - CcrSp, anchorPosition.y + CcrSp)) return retval
def getA0cN(anchorPosition, hEf): ''' Polígono que representa el área de influencia de un anclaje individual according to clause 5.2.2.4 b) (figura 5.4a) of EOTA TR029. :param anchorPosition: anchor position. :param hEf: effective anchorage depth (m). ''' semiLadoA0cN = getScrN(hEf) / 2 retval = geom.Poligono2d() retval.agregaVertice( geom.Pos2d(anchorPosition.x - semiLadoA0cN, anchorPosition.y - semiLadoA0cN)) retval.agregaVertice( geom.Pos2d(anchorPosition.x + semiLadoA0cN, anchorPosition.y - semiLadoA0cN)) retval.agregaVertice( geom.Pos2d(anchorPosition.x + semiLadoA0cN, anchorPosition.y + semiLadoA0cN)) retval.agregaVertice( geom.Pos2d(anchorPosition.x - semiLadoA0cN, anchorPosition.y + semiLadoA0cN)) return retval
def getA0pN(d, anchorPosition, hEf, tauRkUcr): ''' Polígono que representa el área de influencia de un anclaje individual according to clause 5.2.2.3 b) (figura 5.1) of EOTA TR029. :param d: anchor diameter (m). :param anchorPosition: Posición del del perno. :param hEf: effective anchorage depth (m). :param tauRkUcr: Characteristic bond resistance for non-cracked concrete (must be taken from relevant ETA) (Pa). ''' semiLadoA0pN = getCcrNp(d, hEf, tauRkUcr) retval = geom.Poligono2d() retval.agregaVertice( geom.Pos2d(anchorPosition.x - semiLadoA0pN, anchorPosition.y - semiLadoA0pN)) retval.agregaVertice( geom.Pos2d(anchorPosition.x + semiLadoA0pN, anchorPosition.y - semiLadoA0pN)) retval.agregaVertice( geom.Pos2d(anchorPosition.x + semiLadoA0pN, anchorPosition.y + semiLadoA0pN)) retval.agregaVertice( geom.Pos2d(anchorPosition.x - semiLadoA0pN, anchorPosition.y + semiLadoA0pN)) return retval
__license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" def sqr(a): return a*a # Datos gammaMs= 1.4 # Partial safety factor for steel. gammaMc= 2.1 # Partial safety factor for concrete. diamBarra= 25e-3 # Bar diameter in meters. areaBarra= math.pi*sqr(diamBarra/2.0) # Bar area in square meters. h= 274e-3 # Concrete element thickness. hef= 210e-3 # Effective anchor depth. posAnc= geom.Pos2d(.135,0) # Anchor position contornoPiezaSoporte= geom.Poligono2d() # Contour of concrete element. contornoPiezaSoporte.agregaVertice(geom.Pos2d(0,-1)) contornoPiezaSoporte.agregaVertice(geom.Pos2d(1,-1)) contornoPiezaSoporte.agregaVertice(geom.Pos2d(1,1)) contornoPiezaSoporte.agregaVertice(geom.Pos2d(0,1)) fuk= 550e6 # Characteristic steel ultimate tensile strength (Pa). tauRk= 7.5e6 # Characteristic bond strength (taken from ETA-05/0051 table 11). tauRkUcr= 7.5e6 # Characteristic bond strength for non-cracked concrete. k1= 10.1 # 7.2 for cracked concrete and 10.1 for non-cracked concrete. fckCube= 25e6 # Caracteristic concrete compression strength measured on cubes with a side length of 150 mm. # Strength of the anchor itself. NRds= EOTA_TR029_traccion.axialResistanceSteelFailure(areaBarra,fuk)/gammaMs