def setup(self, preprocessor): ''':returns: the elastic section appropiate for 3D beam analysis ''' typical_materials.defElasticShearSection3d(preprocessor, self.name, self.section.A(), self.material.E, self.material.G(), self.section.Iz(), self.section.Iy(), self.section.J(), self.section.alphaZ())
def defElasticShearSection3d(self, preprocessor, material): '''elastic section appropiate for 3D beam analysis, including shear deformations :param preprocessor: preprocessor object. :param material: material (for which E is the Young's modulus and G() the shear modulus) ''' if (not self.xc_material): materialHandler = preprocessor.getMaterialHandler if (materialHandler.materialExists(self.sectionName)): lmsg.warning("Section: " + self.sectionName + " already defined.") self.xc_material = materialHandler.getMaterial( self.sectionName) else: self.xc_material = typical_materials.defElasticShearSection3d( preprocessor, self.sectionName, self.A(), material.E, material.G(), self.Iz(), self.Iy(), self.J(), self.alphaY(), linearRho=material.rho * self.A()) else: lmsg.warning('Material: ' + self.sectionName + ' already defined as:' + str(self.xc_material)) return self.xc_material
def defElasticShearSection3d(self,preprocessor,material): '''elastic section appropiate for 3D beam analysis, including shear deformations :param preprocessor: preprocessor object. :param material: material (for which E is the Young's modulus and G() the shear modulus) ''' materiales= preprocessor.getMaterialLoader if(materiales.materialExists(self.sectionName)): sys.stderr.write("Section: "+self.sectionName+" is already defined.") else: retval= typical_materials.defElasticShearSection3d(preprocessor,self.sectionName,self.A(),material.E,material.G(),self.Iz(),self.Iy(),self.J(),self.alphaY()) return retval
def defElasticShearSection3d(self,preprocessor,material): '''elastic section appropiate for 3D beam analysis, including shear deformations :param preprocessor: preprocessor object. :param material: material (for which E is the Young's modulus and G() the shear modulus) ''' materiales= preprocessor.getMaterialHandler if(materiales.materialExists(self.sectionName)): sys.stderr.write("Section: "+self.sectionName+" is already defined.") else: retval= typical_materials.defElasticShearSection3d(preprocessor,self.sectionName,self.A(),material.E,material.G(),self.Iz(),self.Iy(),self.J(),self.alphaY()) return retval
gammaF= 1.5 # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) nodes.defaultTag= 1 #First node number. nod= nodes.newNodeXYZ(0.0,0.0,0.0) nod= nodes.newNodeXYZ(L/2,0.0,0.0) nod= nodes.newNodeXYZ(L,0.0,0.0) lin= modelSpace.newLinearCrdTransf("lin",xc.Vector([0,1,0])) # Materials definition seccion= typical_materials.defElasticShearSection3d(preprocessor, "seccion",A,E,G,Iz,Iy,J,1.0) # Elements definition elements= preprocessor.getElementHandler elements.defaultTransformation= "lin" elements.defaultMaterial= "seccion" elements.defaultTag= 1 beam1= elements.newElement("ForceBeamColumn3d",xc.ID([1,2])); beam2= elements.newElement("ForceBeamColumn3d",xc.ID([2,3])); # Constraints modelSpace.fixNode000_000(1) modelSpace.fixNode000_000(3) # Loads definition
def setup(self,preprocessor): '''return the elastic section appropiate for 3D beam analysis ''' typical_materials.defElasticShearSection3d(preprocessor,self.name,self.section.A(),self.material.E,self.material.G(),self.section.Iz(),self.section.Iy(),self.section.J(),self.section.alphaZ())
E=1e4/Iz # Elastic modulus in N/m2 nu= 0.3 # Poisson's ratio G= E/(2*(1+nu)) # Shear modulus J= 0.001 # Cross section torsion constant (m4) (ES IRRELEVANTE) P= -100 # Carga vertical sobre la columna. NumDiv= 6 # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) # Materials definition scc= typical_materials.defElasticShearSection3d(preprocessor, "scc",A,E,G,Iz,Iy,J,1) # Geometric transformation(s) lin= modelSpace.newPDeltaCrdTransf("lin",xc.Vector([0,1,0])) # Seed element definition seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= scc.name seedElemHandler.defaultTransformation= lin.name beam3d= seedElemHandler.newElement("ElasticBeam3d",xc.ID([0,0])) beam3d.rho= 0.0 points= preprocessor.getMultiBlockTopology.getPoints pt1= points.newPntIDPos3d(1,geom.Pos3d(0.0,0.0,0.0)) pt2= points.newPntIDPos3d(2,geom.Pos3d(0.0,0.0,L))
gammaF= 1.5 # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) nodes.defaultTag= 1 #First node number. nod= nodes.newNodeXYZ(0.0,0.0,0.0) nod= nodes.newNodeXYZ(L/2,0.0,0.0) nod= nodes.newNodeXYZ(L,0.0,0.0) lin= modelSpace.newLinearCrdTransf("lin",xc.Vector([0,1,0])) # Materials definition section= typical_materials.defElasticShearSection3d(preprocessor, "section",A,E,G,Iz,Iy,J,1.0) # Elements definition elements= preprocessor.getElementHandler elements.defaultTransformation= "lin" elements.defaultMaterial= "section" elements.defaultTag= 1 beam1= elements.newElement("ForceBeamColumn3d",xc.ID([1,2])) beam2= elements.newElement("ForceBeamColumn3d",xc.ID([2,3])) # Constraints modelSpace.fixNode000_000(1) modelSpace.fixNode000_000(3) # Loads definition
rfSteel = EC2_materials.S450C #reinforcing steel according to EC2 fyk=450 MPa steelDiagram = rfSteel.defDiagK( preprocessor) #Definition of steel stress-strain diagram in XC. # Section geometry (rectangular) from materials.sections import section_properties as sectpr geomSectBeam = sectpr.RectangularSection(name='geomSectBeamX', b=width, h=depth) # Elastic material-section appropiate for 3D beam analysis, including shear beam_mat = typical_materials.defElasticShearSection3d( preprocessor=preprocessor, name='beam_mat', A=geomSectBeam.A(), E=concrete.Ecm(), G=concrete.Gcm(), Iz=geomSectBeam.Iz(), Iy=geomSectBeam.Iy(), J=geomSectBeam.J(), alpha=geomSectBeam.alphaY()) lin = modelSpace.newLinearCrdTransf("lin", xc.Vector([0, 0, 1])) # Elements definition elements = preprocessor.getElementHandler elements.defaultMaterial = 'beam_mat' elements.defaultTransformation = "lin" elements.dimElem = 3 # Dimension of element space elements.defaultTag = 1 e1 = elements.newElement("ElasticBeam3d", xc.ID([1, 2])) e2 = elements.newElement("ElasticBeam3d", xc.ID([2, 3]))