prestressingSteel = tm.defSteel02(preprocessor=preprocessor, name="prestressingSteel", E=Ep, fy=fy, b=0.001, initialStress=fpi) #Geometry n_points_rough = 5 #number of points provided to the interpolation algorithm n_points_fine = 91 #number of points interpolated #Exact parabola from model.geometry import geom_utils a, b, c = geom_utils.fit_parabola(np.array([0, span / 2.0, span]), np.array([eEnds, eMidspan, eEnds])) x_parab_rough, y_parab_rough, z_parab_rough = geom_utils.eq_points_parabola( 0, span, n_points_rough, a, b, c, 0) #Tendon1 definition, layout tendon1 = presconc.PrestressTendon([]) tendon1.roughCoordMtr = np.array([x_parab_rough, y_parab_rough, z_parab_rough]) #Interpolated 3D spline tendon1.pntsInterpTendon(n_points_fine, 1) #Plot #tendon1.plot2D(XaxisValues='X',fileName='plot.png',symbolRougPoints='r*',symbolFinePoints='g+',symbolTendon='g-') corCooTr = modelSpace.newLinearCrdTransf(trfName='corCooTr', xzVector=xc.Vector([0, -1, 0])) nodes.defaultTag = 101 tendon1Set = tendon1.creaTendonElements(preprocessor=preprocessor, materialName='prestressingSteel', elemTypeName='Truss', crdTransfName='corCooT',
sigmap0max_mm = 1239 #Initial stress of cable [MPa] sigmap0max_m = 1239e6 #Initial stress of cable [Pa] # Interpolation n_points_rough = 5 #number of points provided to the interpolation algorithm n_points_fine = 101 #number of points interpolated #Anchorage slip deltaL_mm = 5 #anchorage draw-in (provided by manufacturer) [mm] deltaL_m = 5e-3 #anchorage draw-in (provided by manufacturer) [m] #Exact parabola from model.geometry import geom_utils a, b, c = geom_utils.fit_parabola(x=np.array([0, lBeam_mm / 2.0, lBeam_mm]), y=np.array([eEnds, eMidspan_mm, eEnds])) x_parab_rough, y_parab_rough, z_parab_rough = geom_utils.eq_points_parabola( 0, lBeam_mm, n_points_rough, a, b, c, angl_Parab_XZ) #Tendon [mm] definition, layout and friction losses tendon_mm = presconc.PrestressTendon([]) tendon_mm.roughCoordMtr = np.array( [x_parab_rough, y_parab_rough, z_parab_rough]) #Interpolated 3D spline tendon_mm.pntsInterpTendon(n_points_fine, smoothness=1, kgrade=3) # Losses of prestressing due to friction lssFrict_mm = tendon_mm.getLossFriction(coefFric=mu, k=k_mm, sigmaP0_extr1=sigmap0max_mm, sigmaP0_extr2=0.0) # Losses of prestressing due to anchorage slip (loss due to friction must be # previously calculated lssAnch_mm = tendon_mm.getLossAnchor(Ep=Ep_mm,
n_points_fine = 101 #number of points interpolated # Approximation of the loss of prestressing due to friction # Assimilating the parabolic profile of the cable to a circular profile # the angular deviation is constant in the beam length and can be # expressed as: alphaUnit = 8 * abs(eMidspan) / lBeam**2 #alpha/x [rad/m] #Exact parabola from model.geometry import geom_utils a, b, c = geom_utils.fit_parabola(x=np.array([0, lBeam / 2.0, lBeam]), y=np.array([eEnds, eMidspan, eEnds])) x_parab_rough, y_parab_rough, z_parab_rough = geom_utils.eq_points_parabola( 0, lBeam, n_points_rough, a, b, c, 0) x_parab_fine, y_parab_fine, z_parab_fine = geom_utils.eq_points_parabola( 0, lBeam, n_points_fine, a, b, c, 0) aprox_cum_angle = alphaUnit * x_parab_fine aprox_length_sequence = [0] + [ distance.euclidean( (x_parab_fine[i], y_parab_fine[i], z_parab_fine[i]), (x_parab_fine[i + 1], y_parab_fine[i + 1], z_parab_fine[i + 1])) for i in range(len(x_parab_fine) - 1) ] aprox_cumulative_length = np.cumsum(aprox_length_sequence) aprox_cum_loss = np.array([ sigmap0max * (1 - math.exp(-mu * aprox_cum_angle[i] - k * aprox_cumulative_length[i])) for i in range(len(aprox_cum_angle))
#Prestressing process mu=0.25 #coefficient of friction between the cables and their sheating k=0.0017*1e-3 #wobble coefficient for milimiter length of cable sigmap0max=1239 #Initial stress of cable [MPa] # Interpolation n_points_rough=5 #number of points provided to the interpolation algorithm n_points_fine=101 #number of points interpolated #Anchorage slip deltaL=5 #anchorage draw-in (provided by manufacturer) [mm] #Exact parabola from model.geometry import geom_utils a,b,c=geom_utils.fit_parabola(x=np.array([0,lBeam/2.0,lBeam]), y=np.array([eEnds,eMidspan,eEnds])) x_parab_rough,y_parab_rough,z_parab_rough=geom_utils.eq_points_parabola(0,lBeam,n_points_rough,a,b,c,angl_Parab_XZ) #Tendon prestressed from extremity 1 (left-end) #Tendon definition, layout and friction losses tendon1=presconc.PrestressTendon([]) tendon1.roughCoordMtr=np.array([x_parab_rough,y_parab_rough,z_parab_rough]) #Interpolated 3D spline tendon1.pntsInterpTendon(n_points_fine,smoothness=1,kgrade=3) # Losses of prestressing due to friction lssFrict1=tendon1.getLossFriction(coefFric=mu,k=k,sigmaP0_extr1=sigmap0max,sigmaP0_extr2=0.0) # Losses of prestressing due to anchorage slip (loss due to friction must be # previously calculated lssAnch1=tendon1.getLossAnchor(Ep=Ep,anc_slip_extr1=deltaL,anc_slip_extr2=0.0) #Tendon prestressed from extremity 2 (right-end) #Tendon definition, layout and friction losses
n_points_rough=5 #number of points provided to the interpolation algorithm n_points_fine=101 #number of points interpolated # Approximation of the loss of prestressing due to friction # Assimilating the parabolic profile of the cable to a circular profile # the angular deviation is constant in the beam length and can be # expressed as: alphaUnit=8*abs(eMidspan)/lBeam**2 #alpha/x [rad/m] #Exact parabola from model.geometry import geom_utils a,b,c=geom_utils.fit_parabola(x=np.array([0,lBeam/2.0,lBeam]), y=np.array([eEnds,eMidspan,eEnds])) x_parab_rough,y_parab_rough,z_parab_rough=geom_utils.eq_points_parabola(0,lBeam,n_points_rough,a,b,c,0) x_parab_fine,y_parab_fine,z_parab_fine=geom_utils.eq_points_parabola(0,lBeam,n_points_fine,a,b,c,0) aprox_cum_angle=alphaUnit*x_parab_fine aprox_length_sequence=[0]+[distance.euclidean((x_parab_fine[i],y_parab_fine[i],z_parab_fine[i]),(x_parab_fine[i+1],y_parab_fine[i+1],z_parab_fine[i+1])) for i in range(len(x_parab_fine)-1)] aprox_cumulative_length=np.cumsum(aprox_length_sequence) aprox_cum_loss=np.array([sigmap0max*(1-math.exp(-mu*aprox_cum_angle[i]-k*aprox_cumulative_length[i])) for i in range(len(aprox_cum_angle))]) #Tendon definition, layout and friction losses tendon=presconc.PrestressTendon([]) tendon.roughCoordMtr=np.array([x_parab_rough,y_parab_rough,z_parab_rough]) #Interpolated 3D spline tendon.pntsInterpTendon(n_points_fine,1) #Cumulative lengths of the sequence of segments cumulative_length=tendon.getCumLength()