from materials import typical_materials __author__ = "Luis C. Pérez Tato (LCPT)" __copyright__ = "Copyright 2014, LCPT" __license__ = "GPL" __version__ = "3.0" __email__ = "*****@*****.**" # nverborrea= 0 ndivX = 5 ndivY = 8 feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor elast2d = typical_materials.defElasticIsotropicPlaneStress( preprocessor, "elast2d", 30e6, 0.3, 0.0) nodes = preprocessor.getNodeHandler nodes.dimSpace = 3 # 3 coordinates for each node. nodes.numDOFs = 2 # Two degrees of freedom for each node. nodes.newSeedNode() seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = "elast2d" seedElemHandler.dimElem = 3 # Dimension of element space seedElemHandler.defaultTag = 1 #Tag for the next element. quad4n = seedElemHandler.newElement("FourNodeQuad", xc.ID([0, 0, 0, 0])) unifGrids = preprocessor.getMultiBlockTopology.getUniformGrids uGrid = unifGrids.newUniformGrid()
# 1 2 5 n1 = nodes.newNodeIDXY(1, 0, 0) n2 = nodes.newNodeIDXY(2, 1, 0) n3 = nodes.newNodeIDXY(3, 1, 1) n4 = nodes.newNodeIDXY(4, 0, 1) n5 = nodes.newNodeIDXY(5, 2, 0) n6 = nodes.newNodeIDXY(6, 2, 1) n7 = nodes.newNodeIDXY(7, 2, 2) n8 = nodes.newNodeIDXY(8, 1, 2) totalSet = preprocessor.getSets.getSet('total') bnd0 = totalSet.getBnd(0.0) pmin0 = bnd0.pMin pmax0 = bnd0.pMax elast2d = typical_materials.defElasticIsotropicPlaneStress( preprocessor, "elast2d", E, nu, rho) # Elements definition elements = preprocessor.getElementHandler elements.defaultMaterial = "elast2d" a = elements.newElement("FourNodeQuad", xc.ID([1, 2, 3, 4])) b = elements.newElement("FourNodeQuad", xc.ID([2, 5, 6, 3])) c = elements.newElement("FourNodeQuad", xc.ID([3, 6, 7, 8])) bnd1 = totalSet.getBnd(0.0) pmin1 = bnd1.pMin pmax1 = bnd1.pMax ratio = math.sqrt(pmin0.x**2 + pmin0.y**2 + pmin0.z**2) ratio += math.sqrt((pmax0.x - 2)**2 + (pmax0.y - 2)**2 + pmax0.z**2) ratio += math.sqrt(pmin1.x**2 + pmin1.y**2 + pmin1.z**2) ratio += math.sqrt((pmax1.x - 2)**2 + (pmax1.y - 2)**2 + pmax1.z**2)
# +---+---+5 # | a |3 # +---+ # 1 2 5 n1= nodes.newNodeIDXY(1,0,0) n2= nodes.newNodeIDXY(2,1,0) n3= nodes.newNodeIDXY(3,1,1) n4= nodes.newNodeIDXY(4,0,1) n6= nodes.newNodeIDXY(5,2,1) n7= nodes.newNodeIDXY(6,2,2) n8= nodes.newNodeIDXY(7,1,2) elast2d= typical_materials.defElasticIsotropicPlaneStress(preprocessor, "elast2d",E,nu,rho) # Elements definition elements= preprocessor.getElementHandler elements.defaultMaterial= "elast2d" a= elements.newElement("FourNodeQuad",xc.ID([1,2,3,4])) b= elements.newElement("FourNodeQuad",xc.ID([3,5,6,7])) totalSet= preprocessor.getSets.getSet('total') polygons= totalSet.getElements.getContours(True) length= polygons[0].getLength()+polygons[1].getLength() ratio1= (length-8.0)/8.0 '''
import xc_base import geom import xc from solution import predefined_solutions from model import predefined_spaces from materials import typical_materials # from postprocess import output_handler # Problem type feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor # Materials definition elast2d = typical_materials.defElasticIsotropicPlaneStress(preprocessor, "elast2d", E=1e6, nu=0.25, rho=0.0) nodes = preprocessor.getNodeHandler modelSpace = predefined_spaces.SolidMechanics2D(nodes) nod0 = nodes.newNodeXY(0, 0) nod1 = nodes.newNodeXY(1, 0) nod2 = nodes.newNodeXY(0, 1) nod3 = nodes.newNodeXY(1, 1) elements = preprocessor.getElementHandler elements.defaultMaterial = elast2d.name quad0 = elements.newElement('FourNodeQuad', xc.ID([nod0.tag, nod1.tag, nod3.tag, nod2.tag]))
from materials import typical_materials __author__= "Luis C. Pérez Tato (LCPT)" __copyright__= "Copyright 2014, LCPT" __license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" # feProblem.setVerbosityLevel(0) ndivX= 5 ndivY= 8 feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor elast2d= typical_materials.defElasticIsotropicPlaneStress(preprocessor, "elast2d",30e6,0.3,0.0) nodes= preprocessor.getNodeHandler nodes.dimSpace= 3 # 3 coordinates for each node. nodes.numDOFs= 2 # Two degrees of freedom for each node. nodes.newSeedNode() seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= "elast2d" seedElemHandler.dimElem= 3 # Dimension of element space seedElemHandler.defaultTag= 1 #Tag for the next element. quad4n= seedElemHandler.newElement("FourNodeQuad",xc.ID([0,0,0,0])) unifGrids= preprocessor.getMultiBlockTopology.getUniformGrids uGrid= unifGrids.newUniformGrid()
h = 60e-3 # Height of the beam cross section (m) t = 20e-3 # Thicknessof the beam cross section (m) E = 210e9 # Young’s modulus (Pa) nu = 0.3 # Poisson’s ratio sg_yield = 235e6 # Allowable stress: yield stress of steel (Pa) # Problem type feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler modelSpace = predefined_spaces.SolidMechanics2D(nodes) # Material definition steel2d = typical_materials.defElasticIsotropicPlaneStress(preprocessor, "steel2d", E=E, nu=nu, rho=0.0) # Problem geometry # The “bottom-up method” generates the geometry of the system # going from key points (0D) to lines (1D) and areas (2D) # up to volumes (3D). p1 = modelSpace.newKPoint(0.0, h / 2.0) p2 = modelSpace.newKPoint(L / 2.0, h / 2.0) p3 = modelSpace.newKPoint(L / 2.0, -h / 2.0) p4 = modelSpace.newKPoint(0.0, -h / 2.0) s = modelSpace.newSurface([p1, p2, p3, p4]) s.setElemSizeIJ(6.5 * 3e-3, 3e-3)