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 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'
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'
] # Model definition feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler # Problem type modelSpace = predefined_spaces.SolidMechanics2D(nodes) nodes.defaultTag = 1 #First node number. nod = nodes.newNodeXY(0, 0) nod = nodes.newNodeXY(l, 0.0) # Materials definition horm = typical_materials.defConcrete01(preprocessor, "horm", epsc0, fc, fcu, epsU) ''' print "fpc= ",fpc print "epsc0= ",epsc0 print "fpcu= ",fpcu print "epscu= ",epscu print "CminStrain= ",CminStrain print "CendStrain= ",CendStrain print "Cstrain= ",Cstrain print "CStress= ",Cstress print "Ctangent= ",Ctangent print "CunloadSlope= ",CunloadSlope print "TminStrain= ",TminStrain print "TendStrain= ",TendStrain print "Tstrain= ",Tstrain print "TStress= ",Tstress
# Model definition feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler # Problem type modelSpace= predefined_spaces.SolidMechanics2D(nodes) nodes.defaultTag= 1 #First node number. nod= nodes.newNodeXY(0,0) nod= nodes.newNodeXY(l,0.0) # Materials definition horm= typical_materials.defConcrete01(preprocessor, "horm",epsc0,fc,fcu,epsU) ''' print "fpc= ",fpc print "epsc0= ",epsc0 print "fpcu= ",fpcu print "epscu= ",epscu print "CminStrain= ",CminStrain print "CendStrain= ",CendStrain print "Cstrain= ",Cstrain print "CStress= ",Cstress print "Ctangent= ",Ctangent print "CunloadSlope= ",CunloadSlope print "TminStrain= ",TminStrain print "TendStrain= ",TendStrain print "Tstrain= ",Tstrain
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'