def defDiagD(self, preprocessor): ''' Defines a uniaxial material to represent the design stress-strain diagram - If tensionStiffparam==None (default value) no tensile strength is considered; the stress strain relationship corresponds to a concrete01 material (zero tensile strength). - If tensionStiffparam is an instance of the class paramTensStiffenes, tension stiffeness of concrete is considered in the constitutive model to take into account the tensile capacity of the intact concrete between cracks. The stress strain relationship corresponds to a concrete02 material (linear tension softening), based on the tension-stiffening constitutive model proposed by Stramandinoli & La Rovere (ref. article: Engineering Structures 30 (2008) 2069-2080). ''' if self.tensionStiffparam == None: self.materialDiagramD = typical_materials.defConcrete01( preprocessor=preprocessor, name=self.nmbDiagD, epsc0=self.epsilon0(), fpc=self.fmaxD(), fpcu=self.fmaxD(), epscu=self.epsilonU()) else: self.tensionStiffparam.diagType = 'D' ftdiag = self.tensionStiffparam.pointOnsetCracking()['ft'] ectdiag = self.tensionStiffparam.pointOnsetCracking()['eps_ct'] eydiag = self.tensionStiffparam.eps_y() Etsdiag = abs(self.tensionStiffparam.regresLine()['slope']) self.materialDiagramD = typical_materials.defConcrete02( preprocessor=preprocessor, name=self.nmbDiagD, epsc0=self.epsilon0(), fpc=self.fmaxD(), fpcu=0.85 * self.fmaxD(), epscu=self.epsilonU(), ratioSlope=0.1, ft=ftdiag, Ets=Etsdiag) self.matTagD = self.materialDiagramD.tag return self.materialDiagramD #30160925 was 'return self.matTagD'
def defDiagD(self,preprocessor): ''' Defines a uniaxial material to represent the design stress-strain diagram - If tensionStiffparam is an instance of the class paramTensStiffness, tension stiffness of concrete is considered in the constitutive model to take into account tensile capacity of the intact concrete between cracks. The stress strain relationship corresponds to a concrete02 material (linear tension softening), based on the tension-stiffening constitutive model proposed by Stramandinoli & La Rovere (ref. article: Engineering Structures 30 (2008) 2069-2080) -If initTensStiff ='Y' a concrete02 material model is initialized with a tension capacity almost equal to 0 (equivalent to the concrete01 diagram). Defaults to 'N' -If tensionStiffparam==None and initTensStiff=='N' (default values) no tensile strength is considered; the stress strain relationship corresponds to a concrete01 material (zero tensile strength). ''' if self.tensionStiffparam: self.tensionStiffparam.diagType='D' ftdiag=self.tensionStiffparam.pointOnsetCracking()['ft'] self.ft=ftdiag ectdiag=self.tensionStiffparam.pointOnsetCracking()['eps_ct'] self.epsct0=ectdiag eydiag=self.tensionStiffparam.eps_y() Etsdiag=abs(self.tensionStiffparam.regresLine()['slope']) self.Ets=Etsdiag self.epsctu=ectdiag+ftdiag/Etsdiag self.materialDiagramD= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagD,epsc0=self.epsilon0(),fpc=self.fmaxD(),fpcu=0.85*self.fmaxD(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) self.materialDiagramD.epsct0=ectdiag self.materialDiagramD.epsctu=ectdiag+ftdiag/Etsdiag elif self.initTensStiff[0].lower()=='y': ftdiag=self.fctk()/10. ectdiag=ftdiag/self.E0() Etsdiag=ftdiag/(5*ectdiag) self.materialDiagramD= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagD,epsc0=self.epsilon0(),fpc=self.fmaxD(),fpcu=0.85*self.fmaxD(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) else: self.materialDiagramD= typical_materials.defConcrete01(preprocessor=preprocessor,name=self.nmbDiagD,epsc0=self.epsilon0(),fpc=self.fmaxD(),fpcu=self.fmaxD(),epscu=self.epsilonU()) self.matTagD= self.materialDiagramD.tag return self.materialDiagramD #30160925 was 'return self.matTagD'
def defDiagD(self,preprocessor): ''' Defines a uniaxial material to represent the design stress-strain diagram - If tensionStiffparam is an instance of the class paramTensStiffness, tension stiffness of concrete is considered in the constitutive model to take into account tensile capacity of the intact concrete between cracks. The stress strain relationship corresponds to a concrete02 material (linear tension softening), based on the tension-stiffening constitutive model proposed by Stramandinoli & La Rovere (ref. article: Engineering Structures 30 (2008) 2069-2080) -If initTensStiff ='Y' a concrete02 material model is initialized with a tension capacity almost equal to 0 (equivalent to the concrete01 diagram). Defaults to 'N' -If tensionStiffparam==None and initTensStiff=='N' (default values) no tensile strength is considered; the stress strain relationship corresponds to a concrete01 material (zero tensile strength). ''' if self.tensionStiffparam: self.tensionStiffparam.diagType='D' ftdiag=self.tensionStiffparam.pointOnsetCracking()['ft'] self.ft=ftdiag ectdiag=self.tensionStiffparam.pointOnsetCracking()['eps_ct'] self.epsct0=ectdiag eydiag=self.tensionStiffparam.eps_y() Etsdiag=abs(self.tensionStiffparam.regresLine()['slope']) self.Ets=Etsdiag self.epsctu=ectdiag+ftdiag/Etsdiag self.materialDiagramD= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagD,epsc0=self.epsilon0(),fpc=self.fmaxD(),fpcu=0.85*self.fmaxD(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) self.materialDiagramD.epsct0=ectdiag self.materialDiagramD.epsctu=ectdiag+ftdiag/Etsdiag elif self.initTensStiff[0].lower()=='y': ftdiag=self.fctk()/10. ectdiag=ftdiag/self.E0() Etsdiag=ftdiag/(5*ectdiag) self.materialDiagramD= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagD,epsc0=self.epsilon0(),fpc=self.fmaxD(),fpcu=0.85*self.fmaxD(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) else: self.materialDiagramD= typical_materials.defConcrete01(preprocessor=preprocessor,name=self.nmbDiagD,epsc0=self.epsilon0(),fpc=self.fmaxD(),fpcu=self.fmaxD(),epscu=self.epsilonU()) self.matTagD= self.materialDiagramD.tag return self.materialDiagramD #30160925 was 'return self.matTagD'
def defDiagK(self, preprocessor): ''' Defines a uniaxial material to represent the characteristic stress-strain diagram - If tensionStiffparam== None (default value) no tensile strength is considered; the stress strain relationship corresponds to a concrete01 material (zero tensile strength). - If tensionStiffparam is an instance of the class paramTensStiffness, tension stiffness of concrete is considered in the constitutive model to take into account the tensile capacity of the intact concrete between cracks. The stress strain relationship corresponds to a concrete02 material (linear tension softening), based on the tension-stiffening constitutive model proposed by Stramandinoli & La Rovere (ref. article: Engineering Structures 30 (2008) 2069-2080). ''' if self.tensionStiffparam == None: self.materialDiagramK = typical_materials.defConcrete01( preprocessor=preprocessor, name=self.nmbDiagK, epsc0=self.epsilon0(), fpc=self.fmaxK(), fpcu=self.fmaxK(), epscu=self.epsilonU()) else: self.tensionStiffparam.diagType = 'K' ''' Approximation of the exponential decay curve in the post-cracking range by means of its regression line ''' ftdiag = self.tensionStiffparam.pointOnsetCracking()[ 'ft'] #stress at the adopted point for concrete onset cracking self.ft = ftdiag ectdiag = self.tensionStiffparam.pointOnsetCracking( )['eps_ct'] #strain at the adopted point for concrete onset cracking self.epsct0 = ectdiag #eydiag=self.tensionStiffparam.eps_y() #reinforcing steel strain at yield point Etsdiag = abs(self.tensionStiffparam.regresLine()['slope']) self.Ets = Etsdiag self.epsctu = ectdiag + ftdiag / Etsdiag self.materialDiagramK = typical_materials.defConcrete02( preprocessor=preprocessor, name=self.nmbDiagK, epsc0=self.epsilon0(), fpc=self.fmaxK(), fpcu=0.85 * self.fmaxK(), epscu=self.epsilonU(), ratioSlope=0.1, ft=ftdiag, Ets=Etsdiag) self.materialDiagramK.epsct0 = ectdiag self.materialDiagramK.epsctu = ectdiag + ftdiag / Etsdiag ''' Approximation of the exponential decay curve in the post-cracking range by means of a regression line that passes through the point (eps_ct,f_ct) where cracking starts. This approximation produces a less conservative result ''' # ftdiag=self.tensionStiffparam.f_ct # Etsdiag=-self.tensionStiffparam.slopeRegresLineFixedPoint() # self.materialDiagramK= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagK,epsc0=self.epsilon0(),fpc=self.fmaxK(),fpcu=0.85*self.fmaxK(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) self.matTagK = self.materialDiagramK.tag return self.materialDiagramK #30160925 was 'return self.matTagK'
paramTS.E_ct = Ec_exp #concrete elastic modulus in the tensile linear-elastic range paramTS.E_s = Es_exp paramTS.eps_y = fy_exp / Es_exp #regression line type 1 ftdiag = paramTS.pointOnsetCracking()['ft'] ectdiag = paramTS.pointOnsetCracking()['eps_ct'] eydiag = paramTS.eps_y ######Etsdiag=ftdiag/(eydiag-ectdiag) Etsdiag = paramTS.regresLine()['slope'] #Material for making concrete fibers: concrete02 with tension stiffening concr = typical_materials.defConcrete02(preprocessor=preprocessor, name='concr', epsc0=concrAux.epsilon0(), fpc=concrAux.fmaxK(), fpcu=0.85 * concrAux.fmaxK(), epscu=concrAux.epsilonU(), ratioSlope=0.1, ft=ftdiag, Ets=abs(Etsdiag)) #regression line passing through point (optional approximation) # ftdiag=paramTS.f_ct # Etsdiag=-paramTS.slopeRegresLineFixedPoint() # concr= typical_materials.defConcrete02(preprocessor=preprocessor,name='concr',epsc0=concrAux.epsilon0(),fpc=concrAux.fmaxK(),fpcu=0.85*concrAux.fmaxK(),epscu=concrAux.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) # epsMin = 0.0 epsMax = 0.0028 incEps = (epsMax - epsMin) / 25.0 strains = np.arange(epsMin, epsMax, incEps)
preprocessor) #Definition of steel stress-strain diagram in XC. #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']) concrete.materialDiagramK = typical_materials.defConcrete02( preprocessor=preprocessor, name=concrete.nmbDiagK, epsc0=concrete.epsilon0(), fpc=concrete.fmaxK(), fpcu=0.85 * concrete.fmaxK(), epscu=concrete.epsilonU(), ratioSlope=0.1, ft=ftdiag, Ets=Etsdiag) concrete.matTagK = concrete.materialDiagramK.tag # Section geometry (rectangular 0.3x0.5, 20x20 cells) geomSectFibers = preprocessor.getMaterialHandler.newSectionGeometry( "geomSectFibers") y1 = width / 2.0 z1 = depth / 2.0 #concrete region regiones = geomSectFibers.getRegions concrSect = regiones.newQuadRegion(concrete.nmbDiagK) concrSect.nDivIJ = nDivIJ
preprocessor = prueba.getPreprocessor nodes = preprocessor.getNodeLoader nodes.dimEspace = 1 nodes.numGdls = 1 nodes.defaultTag = 1 #First node number. nod = nodes.newNodeXY(1, 0) nod = nodes.newNodeXY(1.0 + l, 0) # Materials definition concrAux = EHE_concrete.HA25 concr = typical_materials.defConcrete02(preprocessor=preprocessor, name='concr25', epsc0=concrAux.epsilon0(), fpc=concrAux.fmaxK(), fpcu=0.85 * concrAux.fmaxK(), epscu=concrAux.epsilonU(), ratioSlope=0.1, ft=concrAux.fctk(), Ets=concrAux.E0() / 19.0) # Elements definition elementos = preprocessor.getElementLoader elementos.defaultMaterial = 'concr25' elementos.dimElem = 1 elementos.defaultTag = 1 elem1 = elementos.newElement("zero_length", xc.ID([1, 2])) ''' print "dimensión: ",getDim print "filas trf: ",getTrf.nrows print "cols. trf: ",getTrf.ncols
__email__= "*****@*****.**" # Model definition feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler nodes.dimSpace= 1 # One coordinate for each node. nodes.numDOFs= 1 # One degree of freedom for each node. nodes.defaultTag= 1 #First node number. nod= nodes.newNodeXY(1,0) nod= nodes.newNodeXY(1.0+l,0) # Materials definition concrAux= EHE_materials.HA25 concr=typical_materials.defConcrete02(preprocessor=preprocessor,name='concr25',epsc0=concrAux.epsilon0(),fpc=concrAux.fmaxK(),fpcu=0.85*concrAux.fmaxK(),epscu=concrAux.epsilonU(),ratioSlope=0.1,ft=concrAux.fctk(),Ets=concrAux.E0()/19.0) # Elements definition elements= preprocessor.getElementHandler elements.defaultMaterial='concr25' elements.dimElem= 1 # Dimension of element space elements.defaultTag= 1 elem1= elements.newElement("ZeroLength",xc.ID([1,2])) # Constraints constraints= preprocessor.getBoundaryCondHandler spc= constraints.newSPConstraint(1,0,0.0) # Node 1
#Parameters for tension stiffening of concrete paramTS=concrete_base.paramTensStiffness(concrMat=concrAux,reinfMat=rfSteel,reinfRatio=ro_exp,diagType='K') paramTS.E_c=Ec_exp #concrete elastic modulus paramTS.f_ct=fct_exp #concrete tensile strength paramTS.E_ct=Ec_exp #concrete elastic modulus in the tensile linear-elastic range paramTS.E_s=Es_exp paramTS.eps_y=fy_exp/Es_exp # print 'alfa=', paramTS.alfa() ftdiag=paramTS.pointOnsetCracking()['ft'] ectdiag=paramTS.pointOnsetCracking()['eps_ct'] eydiag=paramTS.eps_y Etsdiag=ftdiag/(eydiag-ectdiag) #Material for making concrete fibers: concrete02 with tension stiffening concr= typical_materials.defConcrete02(preprocessor=preprocessor,name='concr',epsc0=concrAux.epsilon0(),fpc=concrAux.fmaxK(),fpcu=0.85*concrAux.fmaxK(),epscu=concrAux.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) # Section geometry (rectangular 0.3x0.5, 20x20 cells) geomSectFibers= preprocessor.getMaterialHandler.newSectionGeometry("geomSectFibers") y1= width/2.0 z1= depth/2.0 #concrete region regions= geomSectFibers.getRegions concrSect= regions.newQuadRegion('concr') concrSect.nDivIJ= nDivIJ concrSect.nDivJK= nDivJK concrSect.pMin= geom.Pos2d(-y1,-z1) concrSect.pMax= geom.Pos2d(+y1,+z1) #reinforcement bar (1 single rebar, centered in the cross-section )
def defDiagK(self,preprocessor): ''' Defines a uniaxial material to represent the characteristic stress-strain diagram - If tensionStiffparam is an instance of the class paramTensStiffness, tension stiffness of concrete is considered in the constitutive model to take into account tensile capacity of the intact concrete between cracks. The stress strain relationship corresponds to a concrete02 material (linear tension softening), based on the tension-stiffening constitutive model proposed by Stramandinoli & La Rovere (ref. article: Engineering Structures 30 (2008) 2069-2080) -If initTensStiff ='Y' a concrete02 material model is initialized with a tension capacity almost equal to 0 (equivalent to the concrete01 diagram). Defaults to 'N' -If tensionStiffparam==None and initTensStiff=='N' (default values) no tensile strength is considered; the stress strain relationship corresponds to a concrete01 material (zero tensile strength). ''' if self.tensionStiffparam: self.tensionStiffparam.diagType='K' ''' Approximation of the exponential decay curve in the post-cracking range by means of its regression line ''' ftdiag=self.tensionStiffparam.pointOnsetCracking()['ft'] #stress at the adopted point for concrete onset cracking self.ft=ftdiag ectdiag=self.tensionStiffparam.pointOnsetCracking()['eps_ct'] #strain at the adopted point for concrete onset cracking self.epsct0=ectdiag #eydiag=self.tensionStiffparam.eps_y() #reinforcing steel strain at yield point Etsdiag=abs(self.tensionStiffparam.regresLine()['slope']) self.Ets=Etsdiag self.epsctu=ectdiag+ftdiag/Etsdiag self.materialDiagramK= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagK,epsc0=self.epsilon0(),fpc=self.fmaxK(),fpcu=0.85*self.fmaxK(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) self.materialDiagramK.epsct0=ectdiag self.materialDiagramK.epsctu=ectdiag+ftdiag/Etsdiag ''' Approximation of the exponential decay curve in the post-cracking range by means of a regression line that passes through the point (eps_ct,f_ct) where cracking starts. This approximation produces a less conservative result ''' # ftdiag=self.tensionStiffparam.f_ct # Etsdiag=-self.tensionStiffparam.slopeRegresLineFixedPoint() # self.materialDiagramK= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagK,epsc0=self.epsilon0(),fpc=self.fmaxK(),fpcu=0.85*self.fmaxK(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) elif self.initTensStiff[0].lower()=='y': ftdiag=self.fctk()/10. # self.ft=ftdiag ectdiag=ftdiag/self.E0() # self.epsct0=ectdiag #eydiag=self.tensionStiffparam.eps_y() #reinforcing steel strain at yield point Etsdiag=ftdiag/(5*ectdiag) # self.Ets=Etsdiag # self.epsctu=ectdiag+ftdiag/Etsdiag self.materialDiagramK= typical_materials.defConcrete02(preprocessor=preprocessor,name=self.nmbDiagK,epsc0=self.epsilon0(),fpc=self.fmaxK(),fpcu=0.85*self.fmaxK(),epscu=self.epsilonU(),ratioSlope=0.1,ft=ftdiag,Ets=Etsdiag) # self.materialDiagramK.epsct0=ectdiag # self.materialDiagramK.epsctu=ectdiag+ftdiag/Etsdiag else: self.materialDiagramK= typical_materials.defConcrete01(preprocessor=preprocessor,name=self.nmbDiagK,epsc0=self.epsilon0(),fpc=self.fmaxK(),fpcu=self.fmaxK(),epscu=self.epsilonU()) self.matTagK= self.materialDiagramK.tag return self.materialDiagramK #30160925 was 'return self.matTagK'