def defElasticMembranePlateSection(self, preprocessor,name,thickness): '''Constructs an elastic isotropic section material appropiate for elastic analysis of plate and shell elements :param preprocessor: preprocessor name :param name: name identifying the section :param thickness: section thickness. ''' return typical_materials.defElasticMembranePlateSection(preprocessor,name,E= self.getEcm(), nu=self.nuc ,rho= self.density(),h= thickness)
def getElasticMembranePlateSection(self, preprocessor, reductionFactor= 1.0): ''' Return an elastic membrane plate section material. :param preprocessor: proprocessor for the finite element problem. :param reductionFactor: factor that divides the concrete elastic modulus to simulate the effect of cracking, normally between 1.0 and 7.0. ''' shellMatName= self.name+'_membrane_plate' Ec= self.concrType.getEcm()/reductionFactor nu= 0.3 thickness= self.depth rho= self.concrType.density() return typical_materials.defElasticMembranePlateSection(preprocessor,shellMatName,Ec,nu,rho,thickness)
def defElasticMembranePlateSection(self, preprocessor, name, thickness): '''Constructs an elastic isotropic section material appropiate for elastic analysis of plate and shell elements :param preprocessor: preprocessor name :param name: name identifying the section :param thickness: section thickness. ''' return typical_materials.defElasticMembranePlateSection( preprocessor, name, E=self.getEcm(), nu=self.nuc, rho=self.density(), h=thickness)
def defElasticMembranePlateSection(self, preprocessor, name, thickness): '''Constructs an elastic isotropic section material appropiate for elastic analysis of plate and shell elements :param preprocessor: preprocessor name :param name: name identifying the section :param thickness: section thickness. ''' retval= None materialHandler= preprocessor.getMaterialHandler if(materialHandler.materialExists(name)): lmsg.warning("Section: "+name+" already defined.") retval= materialHandler.getMaterial(name) else: retval= typical_materials.defElasticMembranePlateSection(preprocessor,name,E= self.getEcm(), nu=self.nuc ,rho= self.density(),h= thickness) return retval
from model import predefined_spaces from materials import typical_materials # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) # Define materials elast= typical_materials.defElasticMaterial(preprocessor, "elast",E) # Define materials nmb1= typical_materials.defElasticMembranePlateSection(preprocessor, "memb1",E,nu,0.0,thickness) seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= "memb1" seedElemHandler.defaultTag= 1 elem= seedElemHandler.newElement("ShellMITC4",xc.ID([0,0,0,0])) points= preprocessor.getMultiBlockTopology.getPoints pt= points.newPntIDPos3d(1,geom.Pos3d(0.0,0.0,0.0)) pt= points.newPntIDPos3d(2,geom.Pos3d(CooMaxX,0.0,0.0)) pt= points.newPntIDPos3d(3,geom.Pos3d(CooMaxX,CooMaxY,0.0)) pt= points.newPntIDPos3d(4,geom.Pos3d(0.0,CooMaxY,0.0))
def setup(self,preprocessor): '''return the elastic isotropic section appropiate for plate and shell analysis ''' typical_materials.defElasticMembranePlateSection(preprocessor,self.name,self.material.E,self.material.nu,self.getAreaDensity(),self.thickness)
nod1 = nodes.newNodeXYZ(0, 0, 0) nod2 = nodes.newNodeXYZ(1, 0, 0) nod3 = nodes.newNodeXYZ(2, 0, 0) nod4 = nodes.newNodeXYZ(3, 0, 0) nod5 = nodes.newNodeXYZ(0, 1, 0) nod6 = nodes.newNodeXYZ(1, 1, 0) nod7 = nodes.newNodeXYZ(2, 1, 0) nod8 = nodes.newNodeXYZ(3, 1, 0) nod9 = nodes.newNodeXYZ(0, 2, 0) nod10 = nodes.newNodeXYZ(1, 2, 0) nod11 = nodes.newNodeXYZ(2, 2, 0) nod12 = nodes.newNodeXYZ(3, 2, 0) # Materials definition deckMat = typical_materials.defElasticMembranePlateSection( preprocessor, "deckMat", Ec, nuC, densLosa, deckThk) prestressingSteel = typical_materials.defSteel02(preprocessor, "prestressingSteel", Ep, fy, 0.001, tInic) elements = preprocessor.getElementHandler # Reinforced concrete deck elements.defaultMaterial = deckMat.name elements.defaultTag = 1 elem = elements.newElement("ShellMITC4", xc.ID([1, 2, 6, 5])) elem = elements.newElement("ShellMITC4", xc.ID([2, 3, 7, 6])) elem = elements.newElement("ShellMITC4", xc.ID([3, 4, 8, 7])) elem = elements.newElement("ShellMITC4", xc.ID([5, 6, 10, 9])) elem = elements.newElement("ShellMITC4", xc.ID([6, 7, 11, 10]))
from materials import typical_materials from solution import predefined_solutions # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) nodes.newNodeIDXYZ(1,0,0,0) nodes.newNodeIDXYZ(2,L,0,0) nodes.newNodeIDXYZ(3,L,L,0) nodes.newNodeIDXYZ(4,0,L,0) # Materials definition nmb1= typical_materials.defElasticMembranePlateSection(preprocessor, "memb1",E,nu,0.0,t) elements= preprocessor.getElementHandler elements.defaultMaterial= "memb1" elements.defaultTag= 1 elem= elements.newElement("ShellMITC4",xc.ID([1,2,3,4])) # Constraints modelSpace.fixNode000_000(1) modelSpace.fixNode000_000(4) # Loads definition loadHandler= preprocessor.getLoadHandler
# # pt1 pt2 # +-----------------------------+ # | | # | | # | | # +-----------------------------+ ---> z # pt0 pt3 # # We have finished with the definition of the geometry. # *********Material********* width_cantilever = 1.0 E = 210000.0e6 I = 1 / 12.0 * width_cantilever**4 canti_mat = typical_materials.defElasticMembranePlateSection( preprocessor, "canti_mat", E, 0.3, 0.0, width_cantilever) # *********Elements: MITC9 ********* # Nine node element (quadratic interpolation): # # 4 7 3 # +-----+-----+ # | | # | | # 8 + 9 + + 6 # | | # | | # +-----+-----+ # 1 5 2 # seedElemHandler = preprocessor.getElementHandler.seedElemHandler
parapetBody= surfaces.newQuadSurfacePts(pt3.tag,pt4.tag,pt5.tag,pt6.tag) parapetHead= surfaces.newQuadSurfacePts(pt6.tag,pt5.tag,pt8.tag,pt7.tag) model_surfaces= [deck,parapetBody,parapetHead] for s in model_surfaces: #print s.name, s.getIVector, s.getJVector s.setElemSizeIJ(0.15,0.2) # *** Materials *** fcmConcr=50e6 EcConcr=8500*(fcmConcr/1e6)**(1/3.0)*1e6 cpoisConcr=0.2 #Poisson's coefficient of concrete densConcr= 2500 #specific mass of concrete (kg/m3) concrete=tm.MaterialData(name='concrete',E=EcConcr,nu=cpoisConcr,rho=densConcr) deck.material= tm.defElasticMembranePlateSection(prep, "deckMat",EcConcr,cpoisConcr,0.0,deckThickness) parapetBody.material= tm.defElasticMembranePlateSection(prep, "parapetBodyMat",EcConcr,cpoisConcr,0.0,parapetBodyThickness) parapetHead.material= tm.defElasticMembranePlateSection(prep, "parapetHeadMat",EcConcr,cpoisConcr,0.0,parapetHeadThickness) # *** Meshing *** seedElemHandler= prep.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= "deckMat" elem= seedElemHandler.newElement("ShellMITC4",xc.ID([0,0,0,0])) for s in model_surfaces: seedElemHandler.defaultMaterial= s.material.name s.genMesh(xc.meshDir.I) # *** Constraints *** cl1= prep.getMultiBlockTopology.getLineWithEndPoints(pt1.tag,pt2.tag) cl2= prep.getMultiBlockTopology.getLineWithEndPoints(pt2.tag,pt3.tag)
area= b*espChapa # Cross section area en m2 inertia1= 1/12.0*espChapa*b**3 # Moment of inertia in m4 inertia2= 1/12.0*b*espChapa**3 # Moment of inertia in m4 dens= 7800 # Density of the steel en kg/m3 m= b*h*dens NumDiv= 10 # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) # Define materials elast= typical_materials.defElasticMembranePlateSection(preprocessor, "elast",EMat,nuMat,espChapa*dens,espChapa) points= preprocessor.getMultiBlockTopology.getPoints pt1= points.newPntIDPos3d(1, geom.Pos3d(0.0,0.0,0) ) pt2= points.newPntIDPos3d(2, geom.Pos3d(b,0.0,0) ) pt3= points.newPntIDPos3d(3, geom.Pos3d(b,L,0) ) pt4= points.newPntIDPos3d(4, geom.Pos3d(0,L,0) ) surfaces= preprocessor.getMultiBlockTopology.getSurfaces surfaces.defaultTag= 1 s= surfaces.newQuadSurfacePts(1,2,3,4) s.nDivI= 1 s.nDivJ= NumDiv nodes.newSeedNode()
#Soil kS = 30e6 #Module de réaction du sol (estimé). backFillSoilModel = ep.RankineSoil(phi=math.radians(32), rho=2000) #Characteristic values. gSoil = backFillSoilModel.rho * gravity #Floor. EcFloor = Econcrete # Concrete's Young modulus. floor_set = layerSets['floor_a_middle'] + layerSets[ 'floor_stairs'] + layerSets['floor_middle_b'] floor40_set = layerSets['floor_a_middle'] hFloor40 = 0.40 # Floor thickness. rhoFloor40 = hFloor40 * dens shellFloor40 = typical_materials.defElasticMembranePlateSection( preprocessor, "shellFloor40", EcFloor, nu, rhoFloor40, hFloor40) for s in floor40_set.getSurfaces: s.setProp('material', shellFloor40) s.setProp('selfWeight', xc.Vector([0.0, 0.0, -gravity * rhoFloor40])) floor30_set = layerSets['floor_stairs'] + layerSets['floor_middle_b'] hFloor30 = 0.30 # Floor thickness. rhoFloor30 = hFloor30 * dens shellFloor30 = typical_materials.defElasticMembranePlateSection( preprocessor, "shellFloor30", EcFloor, nu, rhoFloor30, hFloor30) for s in floor30_set.getSurfaces: s.setProp('material', shellFloor30) s.setProp('selfWeight', xc.Vector([0.0, 0.0, -gravity * rhoFloor30])) floor_centroids = []
__version__ = "3.0" __email__ = "*****@*****.**" R = 2.0 cos45 = math.cos(math.radians(45)) sin45 = cos45 E = 30e6 # Young modulus (psi) nu = 0.3 # Coeficiente de Poison rho = 0.0 # Densidad nNodes = 0 prueba = xc.ProblemaEF() preprocessor = prueba.getPreprocessor elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000) prueba = typical_materials.defElasticMembranePlateSection( preprocessor, "prueba", E, nu, rho, 0.25) nodes = preprocessor.getNodeLoader nodes.newSeedNode() seedElemLoader = preprocessor.getElementLoader.seedElemLoader seedElemLoader.defaultMaterial = "prueba" seedElemLoader.defaultTag = 1 elem = seedElemLoader.newElement("shell_mitc4", xc.ID([0, 0, 0, 0])) puntos = preprocessor.getCad.getPoints pt = puntos.newPntIDPos3d(1, geom.Pos3d(R, 0.0, 0.0)) puntos.newPntFromPos3d(geom.Pos3d((R * cos45), (R * sin45), 0.0)) puntos.newPntFromPos3d(geom.Pos3d(0.0, R, 0.0)) puntos.newPntFromPos3d(geom.Pos3d(R, 0.0, 0.5)) puntos.newPntFromPos3d(geom.Pos3d((R * cos45), (R * sin45), 0.5))
# pt1 pt2 # +-----------------------------+ # | | # | | # | | # +-----------------------------+ ---> z # pt0 pt3 # # We have finished with the definition of the geometry. # *********Material********* width_cantilever = 1.0 E= 210000.0e6 I= 1/12.0*width_cantilever**4 canti_mat = typical_materials.defElasticMembranePlateSection(preprocessor, "canti_mat", E, 0.3, 0.0, width_cantilever) # *********Elements********* seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = "canti_mat" elem = seedElemHandler.newElement("ShellMITC9", xc.ID([0,0,0,0,0,0,0,0,0])) # *********Mesh********* f1 = preprocessor.getSets.getSet("f1") f1.genMesh(xc.meshDir.I) # *********Boundary conditions********* # Fix all the 6 displacement and rotation DOFs
p= 10 # Problem type prueba= xc.ProblemaEF() prep= prueba.getPreprocessor nodos= prep.getNodeHandler predefined_spaces.gdls_resist_materiales3D(nodos) nodos.newNodeIDXYZ(1,0,0,0) nodos.newNodeIDXYZ(2,L,0,0) nodos.newNodeIDXYZ(3,L,L,0) nodos.newNodeIDXYZ(4,0,L,0) # Definimos materiales memb1= typical_materials.defElasticMembranePlateSection(prep,"memb1",E,nu,dens,h) elementos= prep.getElementHandler elementos.defaultMaterial= "memb1" elem= elementos.newElement("shell_mitc4",xc.ID([1,2,3,4])) # Condiciones de contorno coacciones= prep.getBoundaryCondHandler fix_node_6dof.fixNode6DOF(coacciones,1) fix_node_6dof.fixNode6DOF(coacciones,2) # Definimos cargas
s2 = surfaces.newQuadSurfacePts(pt2b.tag, pt6b.tag, pt7a.tag, pt3a.tag) s3 = surfaces.newQuadSurfacePts(pt3b.tag, pt7b.tag, pt8.tag, pt4.tag) # **** Mesh parameters # *** Materials *** fcmConcr = 50e6 EcConcr = 8500 * (fcmConcr / 1e6)**(1 / 3.0) * 1e6 cpoisConcr = 0.2 #Poisson's coefficient of concrete densConcr = 2500 #specific mass of concrete (kg/m3) concrete = tm.MaterialData(name='concrete', E=EcConcr, nu=cpoisConcr, rho=densConcr) deckMat = tm.defElasticMembranePlateSection(prep, "deckMat", EcConcr, cpoisConcr, 0.0, deckTh) # *** Meshing *** seedElemHandler = prep.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = "deckMat" elem = seedElemHandler.newElement("ShellMITC4", xc.ID([0, 0, 0, 0])) surfaces = [s1, s2, s3] for s in surfaces: s.setElemSizeIJ(0.25, 0.25) s.genMesh(xc.meshDir.I) # *** Constraints *** cl1 = prep.getMultiBlockTopology.getLineWithEndPoints(pt1.tag, pt2a.tag) cl2 = prep.getMultiBlockTopology.getLineWithEndPoints(pt2b.tag, pt3a.tag)
__version__= "3.0" __email__= "*****@*****.**" R= 2.0 cos45= math.cos(math.radians(45)) sin45= cos45 E= 30e6 # Young modulus (psi) nu= 0.3 # Poisson's ratio rho= 0.0 # Density nNodes= 0 feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor elast= typical_materials.defElasticMaterial(preprocessor, "elast",3000) elasticMembranePlateSectionTest= typical_materials.defElasticMembranePlateSection(preprocessor, "elasticMembranePlateSectionTest",E,nu,rho,0.25) nodes= preprocessor.getNodeHandler nodes.newSeedNode() seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= "elasticMembranePlateSectionTest" elem= seedElemHandler.newElement("ShellMITC4",xc.ID([0,0,0,0])) points= preprocessor.getMultiBlockTopology.getPoints pt= points.newPntIDPos3d(1,geom.Pos3d(R,0.0,0.0)) points.newPntFromPos3d(geom.Pos3d((R*cos45),(R*sin45),0.0)) points.newPntFromPos3d(geom.Pos3d(0.0,R,0.0)) points.newPntFromPos3d(geom.Pos3d(R,0.0,0.5)) points.newPntFromPos3d(geom.Pos3d((R*cos45),(R*sin45),0.5)) points.newPntFromPos3d(geom.Pos3d(0.0,R,0.5))
feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler # Problem type modelSpace = predefined_spaces.StructuralMechanics3D(nodes) feProblem.logFileName = "/tmp/erase.log" # Nicely avoid warning messages. numDivI = 1 numDivJ = 1 L = 10 E = 30e6 # Young modulus (psi) nu = 0.3 # Poisson's ratio rho = 0.0 # Density matPrb = typical_materials.defElasticMembranePlateSection( preprocessor, "matPrb", E, nu, rho, 0.25) seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = matPrb.name quad4n = seedElemHandler.newElement("ShellMITC4", xc.ID([0, 0, 0, 0])) # 3 # 4 +--------------------+--------------------+ 6 # | | | # | | | # | | | # 1 +--------------------+--------------------+ 5 # 2 pt1 = modelSpace.newKPoint(0, 0, 0) pt2 = modelSpace.newKPoint(L, 0, 0)
L= 2 p= 10 # Tipo de problema prueba= xc.ProblemaEF() mdlr= prueba.getModelador nodos= mdlr.getNodeLoader predefined_spaces.gdls_resist_materiales3D(nodos) nodos.newNodeIDXYZ(1,0,0,0) nodos.newNodeIDXYZ(2,L,0,0) nodos.newNodeIDXYZ(3,L,L,0) nodos.newNodeIDXYZ(4,0,L,0) # Definimos materiales memb1= typical_materials.defElasticMembranePlateSection(mdlr,"memb1",E,nu,dens,h) elementos= mdlr.getElementLoader elementos.defaultMaterial= "memb1" elem= elementos.newElement("shell_mitc4",xc.ID([1,2,3,4])) # Condiciones de contorno coacciones= mdlr.getConstraintLoader fix_node_6dof.fixNode6DOF(coacciones,1) fix_node_6dof.fixNode6DOF(coacciones,2) # Definimos cargas
Ttop = 10 # Temperature at top side (Celsius degrees) Tbottom = 0 # Temperature at bottom side (Celsius degrees) thickness = 2e-2 feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler modelSpace = predefined_spaces.StructuralMechanics3D(nodes) nod1 = nodes.newNodeXYZ(0.0, b, 0.0) nod2 = nodes.newNodeXYZ(L, b, 0.0) nod3 = nodes.newNodeXYZ(L, 0.0, 0.0) nod4 = nodes.newNodeXYZ(0, 0.0, 0.0) # Materials definition memb1 = typical_materials.defElasticMembranePlateSection( preprocessor=preprocessor, name="memb1", E=E, nu=0.3, rho=0.0, h=thickness) # Elements definition elements = preprocessor.getElementHandler elements.defaultMaterial = memb1.name elem1 = elements.newElement("ShellMITC4", xc.ID([nod4.tag, nod3.tag, nod2.tag, nod1.tag])) # Constraints constraints = preprocessor.getBoundaryCondHandler spc = constraints.newSPConstraint(nod1.tag, 0, 0.0) spc = constraints.newSPConstraint(nod1.tag, 1, 0.0) spc = constraints.newSPConstraint(nod1.tag, 2, 0.0) spc = constraints.newSPConstraint(nod1.tag, 4, 0.0) spc = constraints.newSPConstraint(nod4.tag, 0, 0.0)
__email__= "*****@*****.**" R= 2.0 cos45= math.cos(math.radians(45)) sin45= cos45 E= 30e6 # Young modulus (psi) nu= 0.3 # Poisson's ratio rho= 0.0 # Density area= 0 feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor elast= typical_materials.defElasticMaterial(preprocessor, "elast",3000) matPrb= typical_materials.defElasticMembranePlateSection(preprocessor, "matPrb",E,nu,rho,0.25) nodes= preprocessor.getNodeHandler nodes.newSeedNode() seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= "matPrb" elem= seedElemHandler.newElement("ShellMITC4",xc.ID([0,0,0,0])) points= preprocessor.getMultiBlockTopology.getPoints pt= points.newPntIDPos3d(1,geom.Pos3d(R,0.0,0.0)) points.newPntFromPos3d(geom.Pos3d((R*cos45),(R*sin45),0.0)) points.newPntFromPos3d(geom.Pos3d(0.0,R,0.0)) points.newPntFromPos3d(geom.Pos3d(R,0.0,1.0)) points.newPntFromPos3d(geom.Pos3d((R*cos45),(R*sin45),1.0))
area= b*espChapa # Cross section area en m2 inertia1= 1/12.0*espChapa*b**3 # Moment of inertia in m4 inertia2= 1/12.0*b*espChapa**3 # Moment of inertia in m4 dens= 7800 # Density of the steel en kg/m3 m= b*h*dens NumDiv= 10 # Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) # Define materials elast= typical_materials.defElasticMembranePlateSection(preprocessor, "elast",EMat,nuMat,dens,espChapa) points= preprocessor.getMultiBlockTopology.getPoints pt1= points.newPntIDPos3d(1, geom.Pos3d(0.0,0.0,0.0) ) pt2= points.newPntIDPos3d(2, geom.Pos3d(b,0.0,0.0) ) pt3= points.newPntIDPos3d(3, geom.Pos3d(b,L,0.0) ) pt4= points.newPntIDPos3d(4, geom.Pos3d(0,L,0.0) ) surfaces= preprocessor.getMultiBlockTopology.getSurfaces surfaces.defaultTag= 1 s= surfaces.newQuadSurfacePts(pt1.tag,pt2.tag,pt3.tag,pt4.tag) s.nDivI= 1 s.nDivJ= NumDiv seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= elast.name seedElemHandler.defaultTag= 1
pt4 = points.newPntFromPos3d(p4) pt5 = points.newPntFromPos3d(p5) ### Define polygonal surfaces surfaces = modelSpace.getSurfaceHandler() polyFace = surfaces.newPolygonalFacePts( [pt1.tag, pt2.tag, pt3.tag, pt4.tag, pt5.tag]) pFaceHoles = list() for b in bolts: pFace = getHoleAsPolygonalSurface(b, surfaces) pFaceHoles.append(pFace) ### Define material mat = typical_materials.defElasticMembranePlateSection(preprocessor, "mat", E=2.1e9, nu=0.3, rho=7850, h=0.015) ### Define template element seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = mat.name elem = seedElemHandler.newElement("ShellMITC4", xc.ID([0, 0, 0, 0])) ### Generate mesh. polyFace.setElemSize(1.5 * boltDiameter, True) for h in pFaceHoles: h.setNDiv(1) polyFace.addHole(h) polyFace.genMesh(xc.meshDir.I, False)
nod = nodes.newNodeXYZ(0, 0, 0) nod = nodes.newNodeXYZ(1, 0, 0) nod = nodes.newNodeXYZ(2, 0, 0) nod = nodes.newNodeXYZ(3, 0, 0) nod = nodes.newNodeXYZ(0, 1, 0) nod = nodes.newNodeXYZ(1, 1, 0) nod = nodes.newNodeXYZ(2, 1, 0) nod = nodes.newNodeXYZ(3, 1, 0) nod = nodes.newNodeXYZ(0, 2, 0) nod = nodes.newNodeXYZ(1, 2, 0) nod = nodes.newNodeXYZ(2, 2, 0) nod = nodes.newNodeXYZ(3, 2, 0) # Materials definition hLosa = typical_materials.defElasticMembranePlateSection( preprocessor, "hLosa", Ec, nuC, densLosa, hLosa) typical_materials.defSteel02(preprocessor, "prestressingSteel", Ep, fy, 0.001, tInic) elements = preprocessor.getElementHandler # Reinforced concrete deck elements.defaultMaterial = "hLosa" elements.defaultTag = 1 elem = elements.newElement("ShellMITC4", xc.ID([1, 2, 6, 5])) elem = elements.newElement("ShellMITC4", xc.ID([2, 3, 7, 6])) elem = elements.newElement("ShellMITC4", xc.ID([3, 4, 8, 7])) elem = elements.newElement("ShellMITC4", xc.ID([5, 6, 10, 9])) elem = elements.newElement("ShellMITC4", xc.ID([6, 7, 11, 10])) elem = elements.newElement("ShellMITC4", xc.ID([7, 8, 12, 11]))
__version__ = "3.0" __email__ = "*****@*****.**" R = 2.0 cos45 = math.cos(math.radians(45)) sin45 = cos45 E = 30e6 # Young modulus (psi) nu = 0.3 # Coeficiente de Poison rho = 0.0 # Densidad nNodes = 0 feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000) elasticMembranePlateSectionTest = typical_materials.defElasticMembranePlateSection( preprocessor, "elasticMembranePlateSectionTest", E, nu, rho, 0.25) nodes = preprocessor.getNodeHandler nodes.newSeedNode() seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = "elasticMembranePlateSectionTest" seedElemHandler.defaultTag = 1 elem = seedElemHandler.newElement("ShellMITC4", xc.ID([0, 0, 0, 0])) points = preprocessor.getMultiBlockTopology.getPoints pt = points.newPntIDPos3d(1, geom.Pos3d(R, 0.0, 0.0)) points.newPntFromPos3d(geom.Pos3d((R * cos45), (R * sin45), 0.0)) points.newPntFromPos3d(geom.Pos3d(0.0, R, 0.0)) points.newPntFromPos3d(geom.Pos3d(R, 0.0, 0.5)) points.newPntFromPos3d(geom.Pos3d((R * cos45), (R * sin45), 0.5))
nod2= nodes.newNodeXYZ(1,0,0) nod3= nodes.newNodeXYZ(2,0,0) nod4= nodes.newNodeXYZ(3,0,0) nod5= nodes.newNodeXYZ(0,1,0) nod6= nodes.newNodeXYZ(1,1,0) nod7= nodes.newNodeXYZ(2,1,0) nod8= nodes.newNodeXYZ(3,1,0) nod9= nodes.newNodeXYZ(0,2,0) nod10= nodes.newNodeXYZ(1,2,0) nod11= nodes.newNodeXYZ(2,2,0) nod12= nodes.newNodeXYZ(3,2,0) # Materials definition hLosa= typical_materials.defElasticMembranePlateSection(preprocessor, "hLosa",Ec,nuC,densLosa,hLosa) typical_materials.defSteel02(preprocessor, "prestressingSteel",Ep,fy,0.001,tInic) elements= preprocessor.getElementHandler # Reinforced concrete deck elements.defaultMaterial= "hLosa" elements.defaultTag= 1 elem= elements.newElement("ShellMITC4",xc.ID([1,2,6,5])) elem= elements.newElement("ShellMITC4",xc.ID([2,3,7,6])) elem= elements.newElement("ShellMITC4",xc.ID([3,4,8,7])) elem= elements.newElement("ShellMITC4",xc.ID([5,6,10,9])) elem= elements.newElement("ShellMITC4",xc.ID([6,7,11,10])) elem= elements.newElement("ShellMITC4",xc.ID([7,8,12,11]))
q = 1 # Problem type prueba = xc.ProblemaEF() preprocessor = prueba.getPreprocessor nodes = preprocessor.getNodeLoader modelSpace = predefined_spaces.StructuralMechanics3D(nodes) nodes.newNodeIDXYZ(1, 0, 0, 0) nodes.newNodeIDXYZ(2, 1, 0, 0) nodes.newNodeIDXYZ(3, 1, 1, 0) nodes.newNodeIDXYZ(4, 0, 1, 0) # Materials definition memb1 = typical_materials.defElasticMembranePlateSection( preprocessor, "memb1", E, nu, dens, h) elementos = preprocessor.getElementLoader elementos.defaultMaterial = "memb1" elem = elementos.newElement("shell_mitc4", xc.ID([1, 2, 3, 4])) # Constraints coacciones = preprocessor.getConstraintLoader fix_node_6dof.Nodo6DOFGirosLibres(coacciones, 1) fix_node_6dof.Nodo6DOFGirosLibres(coacciones, 2) fix_node_6dof.Nodo6DOFGirosLibres(coacciones, 3) fix_node_6dof.Nodo6DOFGirosLibres(coacciones, 4) # Loads definition cargas = preprocessor.getLoadLoader
quakeAccel = 1.25 #m/s2 #Material definition. concrete = SIA262_materials.c30_37 nu = 0.3 # Poisson coefficient. dens = 2500 # Density kg/m3. #Deck. #reductionFactor= 1.0 # reductionFactor = 7.0 #Reduction factor Econcrete = concrete.getEcm() / reductionFactor EcDeck = Econcrete # Concrete's Young modulus. hDeck = 0.20 # Deck thickness. rhoDeck = hDeck * dens shellDeck = typical_materials.defElasticMembranePlateSection( preprocessor, "shellDeck", EcDeck, nu, rhoDeck, hDeck) #Dock. EcDock = Econcrete # Concrete's Young modulus. hDock = 0.18 # Dock thickness. rhoDock = hDock * dens shellDock = typical_materials.defElasticMembranePlateSection( preprocessor, "shellDock", EcDock, nu, rhoDock, hDock) #Parapet. EcParapet = Econcrete # Concrete's Young modulus. bParapet = 0.25 # Parapet thickness. rhoParapet = bParapet * dens shellParapet = typical_materials.defElasticMembranePlateSection(