st.clear() auxrg = [ gm.IJKRange((0, 1, lastZpos), (1, lastYpos - 1, lastZpos)), gm.IJKRange((lastXpos - 1, 1, lastZpos), (lastXpos, lastYpos - 1, lastZpos)) ] auxSet = gridGeom.getSetSurfMultiRegion(lstIJKRange=auxrg, nameSet='auxSet') st = sets.get_subset_lin_parallel_to_axis(axis='X', fromSet=auxSet, toSetName='st', tol=0.1) fem.assign_ndiv_to_lines_in_set(lnSet=st, ndiv=3) st.clear() #Meshing flatwall_mesh = fem.SurfSetToMesh(surfSet=flatwall, matSect=wall_mat, elemSize=None, elemType='ShellMITC4') flatwall_mesh.generateMesh(prep) cylwall_mesh = fem.SurfSetToMesh(surfSet=cylwall, matSect=wall_mat, elemSize=None, elemType='ShellMITC4') cylwall_mesh.generateMesh(prep) flatdeck_mesh = fem.SurfSetToMesh(surfSet=flatdeck, matSect=deck_mat, elemSize=None, elemType='ShellMITC4') flatdeck_mesh.generateMesh(prep) cyldeck_mesh = fem.SurfSetToMesh(surfSet=cyldeck, matSect=deck_mat, elemSize=None,
# name: name identifying the section # section: instance of a class that defines the geometric and # mechanical characteristiscs # of a section (e.g: RectangularSection, CircularSection, # ISection, ...) # material: instance of a class that defines the elastic modulus, # shear modulus and mass density of the material riostrEstr_mat= tm.BeamMaterialData(name= 'riostrEstr_mat', section=geomSectRiostrEstr, material=concrProp) riostrEstr_mat.setupElasticShear3DSection(preprocessor=prep) # ***FE model - MESH*** riostrEstr1_mesh=fem.LinSetToMesh(linSet=riostrEstr1,matSect=riostrEstr_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,-1,0]),elemType='ElasticBeam3d',dimElemSpace=3,coordTransfType='linear') riostrEstr2_mesh=fem.LinSetToMesh(linSet=riostrEstr2,matSect=riostrEstr_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,-1,0]),elemType='ElasticBeam3d',dimElemSpace=3,coordTransfType='linear') losInfV1_mesh=fem.SurfSetToMesh(surfSet=losInfV1,matSect=losInf_mat,elemSize=eSize,elemType='ShellMITC4') losInfV2_mesh=fem.SurfSetToMesh(surfSet=losInfV2,matSect=losInf_mat,elemSize=eSize,elemType='ShellMITC4') losInfV3_mesh=fem.SurfSetToMesh(surfSet=losInfV3,matSect=losInf_mat,elemSize=eSize,elemType='ShellMITC4') losInfRP1_mesh=fem.SurfSetToMesh(surfSet=losInfRP1,matSect=losInf_mat,elemSize=eSize,elemType='ShellMITC4') losInfRP2_mesh=fem.SurfSetToMesh(surfSet=losInfRP2,matSect=losInf_mat,elemSize=eSize,elemType='ShellMITC4') losSupV1_mesh=fem.SurfSetToMesh(surfSet=losSupV1,matSect=losSup_mat,elemSize=eSize,elemType='ShellMITC4') losSupV2_mesh=fem.SurfSetToMesh(surfSet=losSupV2,matSect=losSup_mat,elemSize=eSize,elemType='ShellMITC4') losSupV3_mesh=fem.SurfSetToMesh(surfSet=losSupV3,matSect=losSup_mat,elemSize=eSize,elemType='ShellMITC4') losSupRP1_mesh=fem.SurfSetToMesh(surfSet=losSupRP1,matSect=losSup_mat,elemSize=eSize,elemType='ShellMITC4') losSupRP2_mesh=fem.SurfSetToMesh(surfSet=losSupRP2,matSect=losSup_mat,elemSize=eSize,elemType='ShellMITC4') murAligV1_mesh=fem.SurfSetToMesh(surfSet=murAligV1,matSect=murAlig_mat,elemSize=eSize,elemType='ShellMITC4') murAligV2_mesh=fem.SurfSetToMesh(surfSet=murAligV2,matSect=murAlig_mat,elemSize=eSize,elemType='ShellMITC4') murAligV3_mesh=fem.SurfSetToMesh(surfSet=murAligV3,matSect=murAlig_mat,elemSize=eSize,elemType='ShellMITC4')
# ***FE model - MESH*** cabl_mesh = fem.LinSetToMesh(linSet=cables, matSect=cabl_mat, elemSize=eSize_cabl, vDirLAxZ=xc.Vector([0, 0, 1]), elemType='corot_truss', dimElemSpace=3) cabl_mesh.generateMesh(prep) # mesh this set of lines for e in cables.getElements: e.area = area_cable deck_mesh = fem.SurfSetToMesh(surfSet=deck, matSect=deck_mat, elemSize=eSize_deck, elemType='ShellMITC4') deck_mesh.generateMesh(prep) #mesh the set of surfaces curb_mesh = fem.SurfSetToMesh(surfSet=curb, matSect=curb_mat, elemSize=eSize_deck, elemType='ShellMITC4') curb_mesh.generateMesh(prep) #mesh the set of surfaces #fem.multi_mesh(preprocessor=prep,lstMeshSets=[beamY_mesh,columnZ_mesh,found_mesh,wall_mesh]) #mesh these sets shells = deck + curb shells.description = "deck" roadway_rg = gm.IJKRange((1, 0, 0), (2, lastYpos, 0))
# Isotropic elastic section-material appropiate for plate and shell analysis wall_mat = tm.DeckMaterialData(name='wall_mat', thickness=thickness, material=steelProp) wall_mat.setupElasticSection(preprocessor=prep) #creates the section-material # ***FE model - MESH*** # Enforced line division st = sets.get_subset_lin_parallel_to_axis(axis='Z', fromSet=tankwall, toSetName='st') fem.assign_ndiv_to_lines_in_set(lnSet=st, ndiv=20) st.clear() #Meshing tankwall_mesh = fem.SurfSetToMesh(surfSet=tankwall, matSect=wall_mat, elemSize=None, elemType='ShellMITC4') tankwall_mesh.generateMesh(prep) #out.displayFEMesh() #out.displayLocalAxes() #local axis Z toward exterior of cylindrical body # ***BOUNDARY CONDITIONS*** #fixed DOF (ux:'0FF_FFF', uy:'F0F_FFF', uz:'FF0_FFF', # rx:'FFF_0FF', ry:'FFF_F0F', rz:'FFF_FF0') nodBase = sets.get_set_nodes_plane_XY(setName='nodBase', setBusq=tankwall, zCoord=zList[0],
setName='ring', closeCyl='Y') #out=outHndl.OutputHandler(modelSpace) #out.displayBlocks() steel = tm.defElasticIsotropic3d(preprocessor=preprocessor, name='steel', E=172e9, nu=0.3, rho=matRho) ring_mat = tm.defMembranePlateFiberSection(preprocessor, name='ring_mat', h=t, nDMaterial=steel) ring_mesh = fem.SurfSetToMesh(surfSet=ring, matSect=ring_mat, elemSize=0.5, elemType='ShellMITC4') fem.multi_mesh(prep, [ring_mesh]) # Constraints xcTotalSet = modelSpace.getTotalSet() constrainedNodes = list() for n in xcTotalSet.nodes: modelSpace.fixNode000_FFF(n.tag) constrainedNodes.append(n) #out.displayFEMesh() selfWeight = loads.InertialLoad(name='selfWeight', lstSets=[ring], vAccel=xc.Vector([0.0, 0.0,
wall_mat.setupElasticSection(preprocessor=prep) #creates de section-material #Sections geometry #rectangular sections geomSectColumns = sectpr.RectangularSection(name='geomSectColumns', b=0.25, h=0.25) columns_mat = tm.BeamMaterialData(name='columns_mat', section=geomSectColumns, material=mat_cols) columns_mat.setupElasticShear3DSection(preprocessor=prep) # ***FE model - MESH*** eSize = 0.5 floor1_mesh = fem.SurfSetToMesh(surfSet=floor1, matSect=deck_mat, elemSize=eSize, elemType='ShellMITC4') floor2_mesh = fem.SurfSetToMesh(surfSet=floor2, matSect=deck_mat, elemSize=eSize, elemType='ShellMITC4') #wall_mesh=fem.SurfSetToMesh(surfSet=wall,matSect=wall_mat,elemSize=eSize,elemType='ShellMITC4') columns_mesh = fem.LinSetToMesh(linSet=columns, matSect=columns_mat, elemSize=eSize, vDirLAxZ=xc.Vector([1, 0, 0]), elemType='ElasticBeam3d', dimElemSpace=3, coordTransfType='linear') fem.multi_mesh(preprocessor=prep,
preprocessor=prep) #creates de section-material slab_step3_mat = tm.DeckMaterialData(name='slab_step3_mat', thickness=thick_steps[2], material=concrete) slab_step3_mat.setupElasticSection( preprocessor=prep) #creates de section-material slab_step4_mat = tm.DeckMaterialData(name='slab_step4_mat', thickness=thick_steps[3], material=concrete) slab_step4_mat.setupElasticSection( preprocessor=prep) #creates de section-material # ***FE model - MESH*** slab_unif_mesh = fem.SurfSetToMesh(surfSet=slab_unif, matSect=slab_unif_mat, elemSize=eSize, elemType='ShellMITC4') slab_step1_mesh = fem.SurfSetToMesh(surfSet=slab_step1, matSect=slab_step1_mat, elemSize=eSize, elemType='ShellMITC4') slab_step2_mesh = fem.SurfSetToMesh(surfSet=slab_step2, matSect=slab_step2_mat, elemSize=eSize, elemType='ShellMITC4') slab_step3_mesh = fem.SurfSetToMesh(surfSet=slab_step3, matSect=slab_step3_mat, elemSize=eSize, elemType='ShellMITC4') slab_step4_mesh = fem.SurfSetToMesh(surfSet=slab_step4, matSect=slab_step4_mat,
# shear modulus and mass density of the material muretes_mat= tm.BeamMaterialData(name= 'muretes_mat', section=geomSectMuretes, material=concrDeck) muretes_mat.setupElasticShear3DSection(preprocessor=prep) # Isotropic elastic section-material appropiate for plate and shell analysis deck_mat= tm.DeckMaterialData(name= 'deck_mat', thickness= deckTh,material=concrDeck) deck_mat.setupElasticSection(preprocessor=prep) #creates de section-material wall_mat= tm.DeckMaterialData(name= 'wall_mat', thickness= wallTh,material=concrWalls) wall_mat.setupElasticSection(preprocessor=prep) #creates de section-material found_mat= tm.DeckMaterialData(name= 'found_mat', thickness= baseSlabTh,material=concrFound) found_mat.setupElasticSection(preprocessor=prep) #creates de section-material # ***FE model - MESH*** losCimExt_mesh=fem.SurfSetToMesh(surfSet=losCimExt,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) losCimCent_mesh=fem.SurfSetToMesh(surfSet=losCimCent,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) hastIzqInf_mesh=fem.SurfSetToMesh(surfSet=hastIzqInf,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastIzqCent_mesh=fem.SurfSetToMesh(surfSet=hastIzqCent,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastIzqSup_mesh=fem.SurfSetToMesh(surfSet=hastIzqSup,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastDerInf_mesh=fem.SurfSetToMesh(surfSet=hastDerInf,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastDerCent_mesh=fem.SurfSetToMesh(surfSet=hastDerCent,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastDerSup_mesh=fem.SurfSetToMesh(surfSet=hastDerSup,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) dintExt_mesh=fem.SurfSetToMesh(surfSet=dintExt,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) dintCent_mesh=fem.SurfSetToMesh(surfSet=dintCent,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) fem.multi_mesh(preprocessor=prep,lstMeshSets=[losCimExt_mesh,losCimCent_mesh,hastIzqInf_mesh,hastIzqCent_mesh,hastIzqSup_mesh,hastDerInf_mesh,hastDerCent_mesh,hastDerSup_mesh,dintExt_mesh,dintCent_mesh]) murete_i_mesh=fem.LinSetToMesh(linSet=murete_i,matSect=muretes_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,0,1]),elemType='ElasticBeam3d',coordTransfType='linear') murete_i_mesh.generateMesh(prep) # mesh this set of lines murete_d_mesh=fem.LinSetToMesh(linSet=murete_d,matSect=muretes_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,0,1]),elemType='ElasticBeam3d',coordTransfType='linear')
# shear modulus and mass density of the material muretes_mat= tm.BeamMaterialData(name= 'muretes_mat', section=geomSectMuretes, material=concrDeck) muretes_mat.setupElasticShear3DSection(preprocessor=prep) # Isotropic elastic section-material appropiate for plate and shell analysis deck_mat= tm.DeckMaterialData(name= 'deck_mat', thickness= deckTh,material=concrDeck) deck_mat.setupElasticSection(preprocessor=prep) #creates de section-material wall_mat= tm.DeckMaterialData(name= 'wall_mat', thickness= wallTh,material=concrWalls) wall_mat.setupElasticSection(preprocessor=prep) #creates de section-material found_mat= tm.DeckMaterialData(name= 'found_mat', thickness= baseSlabTh,material=concrFound) found_mat.setupElasticSection(preprocessor=prep) #creates de section-material # ***FE model - MESH*** losCimExt_M1_mesh=fem.SurfSetToMesh(surfSet=losCimExt_M1,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) losCimExt_M2_mesh=fem.SurfSetToMesh(surfSet=losCimExt_M2,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) losCimExt_M3_mesh=fem.SurfSetToMesh(surfSet=losCimExt_M3,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) losCimCent_M1_mesh=fem.SurfSetToMesh(surfSet=losCimCent_M1,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) losCimCent_M2_mesh=fem.SurfSetToMesh(surfSet=losCimCent_M2,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) losCimCent_M3_mesh=fem.SurfSetToMesh(surfSet=losCimCent_M3,matSect=found_mat,elemType='ShellMITC4',elemSize=eSize) hastIzq_M1_mesh=fem.SurfSetToMesh(surfSet=hastIzq_M1,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastIzq_M2_mesh=fem.SurfSetToMesh(surfSet=hastIzq_M2,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastIzq_M3_mesh=fem.SurfSetToMesh(surfSet=hastIzq_M3,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastDer_M1_mesh=fem.SurfSetToMesh(surfSet=hastDer_M1,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastDer_M2_mesh=fem.SurfSetToMesh(surfSet=hastDer_M2,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize) hastDer_M3_mesh=fem.SurfSetToMesh(surfSet=hastDer_M3,matSect=wall_mat,elemType='ShellMITC4',elemSize=eSize)
thickness=deckTh, material=concrDeck) deck_mat.setupElasticSection(preprocessor=prep) #creates de section-material wall_mat = tm.DeckMaterialData(name='wall_mat', thickness=wallTh, material=concrWalls) wall_mat.setupElasticSection(preprocessor=prep) #creates de section-material found_mat = tm.DeckMaterialData(name='found_mat', thickness=baseSlabTh, material=concrFound) found_mat.setupElasticSection(preprocessor=prep) #creates de section-material # ***FE model - MESH*** losCim_mesh = fem.SurfSetToMesh(surfSet=losCim, matSect=found_mat, elemType='ShellMITC4', elemSize=eSize) hastiales_mesh = fem.SurfSetToMesh(surfSet=hastiales, matSect=wall_mat, elemType='ShellMITC4', elemSize=eSize) dintel_mesh = fem.SurfSetToMesh(surfSet=dintel, matSect=deck_mat, elemType='ShellMITC4', elemSize=eSize) fem.multi_mesh(preprocessor=prep, lstMeshSets=[losCim_mesh, hastiales_mesh, dintel_mesh]) murete_i_mesh = fem.LinSetToMesh(linSet=murete_i, matSect=muretes_mat,
material=concrFound) found_mat.setupElasticSection(preprocessor=prep) # ***FE model - MESH*** # Types of surfaces to be discretized from the defined # material, type of element and size of the elements. # Parameters: # name: name to identify the type of surface # material: name of the material that makes up the surface # elemType: element type to be used in the discretization # elemSize: mean size of the elements # ranges: lists of grid ranges to delimit the surfaces of # the type in question foundExtSlab_mesh = fem.SurfSetToMesh(surfSet=foundExtSlab, matSect=found_mat, elemType='ShellMITC4', elemSize=eSize) foundIntSlab_mesh = fem.SurfSetToMesh(surfSet=foundIntSlab, matSect=found_mat, elemType='ShellMITC4', elemSize=eSize) leftDownWall_mesh = fem.SurfSetToMesh(surfSet=leftDownWall, matSect=downWall_mat, elemType='ShellMITC4', elemSize=eSize) leftUpWall_mesh = fem.SurfSetToMesh(surfSet=leftUpWall, matSect=upWall_mat, elemType='ShellMITC4', elemSize=eSize) rightDownWall_mesh = fem.SurfSetToMesh(surfSet=rightDownWall,
thickness=espAletdZ1, material=concrData) aletdZ1_mat.setupElasticSection(preprocessor=prep) aletdZ2_mat = tm.DeckMaterialData(name='aletdZ2_mat', thickness=espAletdZ2, material=concrData) aletdZ2_mat.setupElasticSection(preprocessor=prep) aletdZ3_mat = tm.DeckMaterialData(name='aletdZ3_mat', thickness=espAletdZ3, material=concrData) aletdZ3_mat.setupElasticSection(preprocessor=prep) # ***FE model - MESH*** zap_mesh = fem.SurfSetToMesh(surfSet=zap, matSect=zap_mat, elemSize=eSize, elemType='ShellMITC4') murestrZ1_mesh = fem.SurfSetToMesh(surfSet=murestrZ1, matSect=murestr_mat, elemSize=eSize, elemType='ShellMITC4') murestrZ2_mesh = fem.SurfSetToMesh(surfSet=murestrZ2, matSect=murestr_mat, elemSize=eSize, elemType='ShellMITC4') aletiZ1_mesh = fem.SurfSetToMesh(surfSet=aletiZ1, matSect=aletiZ1_mat, elemSize=eSize, elemType='ShellMITC4')
thickness=deckTh, material=concrDeck) deck_mat.setupElasticSection(preprocessor=prep) #creates de section-material wall_mat = tm.DeckMaterialData(name='wall_mat', thickness=wallTh, material=concrWalls) wall_mat.setupElasticSection(preprocessor=prep) #creates de section-material found_mat = tm.DeckMaterialData(name='found_mat', thickness=baseSlabTh, material=concrFound) found_mat.setupElasticSection(preprocessor=prep) #creates de section-material # ***FE model - MESH*** foundExtSlab_mesh = fem.SurfSetToMesh(surfSet=foundExtSlab, matSect=found_mat, elemType='ShellMITC4', elemSize=eSize) foundIntSlab_mesh = fem.SurfSetToMesh(surfSet=foundIntSlab, matSect=found_mat, elemType='ShellMITC4', elemSize=eSize) leftWall_mesh = fem.SurfSetToMesh(surfSet=leftWall, matSect=wall_mat, elemType='ShellMITC4', elemSize=eSize) rightWall_mesh = fem.SurfSetToMesh(surfSet=rightWall, matSect=wall_mat, elemType='ShellMITC4', elemSize=eSize) deckExtSlab_mesh = fem.SurfSetToMesh(surfSet=deckExtSlab, matSect=deck_mat,
corbelsConcr.Ecm(), corbelsConcr.nuc, corbelsConcr.density())) # Elastomeric bearings. neop = bridge_bearings.ElastomericBearing(G=900e3, a=0.15, b=0.2, e=0.02) neop.defineMaterials(preprocessor) # print polT5.getIx(), polT5.getCenterOfMass() # print polT6.getIx(), polT6.getCenterOfMass() # print polT4.getIx(), polT4.getCenterOfMass() # Mesh deckMesh = fem.SurfSetToMesh(surfSet=deckSurfaces, matSect=deckMat, elemSize=0.5, elemType='ShellMITC4') deckMesh.generateMesh(preprocessor) #do meshing #Precast beams. linX = modelSpace.newLinearCrdTransf("linX", xc.Vector([1, 0, 0])) type4Beams = fem.RawLineSetToMesh(linSet=beamLinesType4, matSect=beamType4Section, elemSize=None, coordTransf=linX, elemType='ElasticBeam3d', dimElemSpace=3) type4Beams.generateMesh(preprocessor) #do meshing type5Beams = fem.RawLineSetToMesh(linSet=beamLinesType5, matSect=beamType5Section, elemSize=None,
dimElemSpace=3, coordTransfType='linear') beamY_mesh = fem.LinSetToMesh(linSet=beamY, matSect=beamY_mat, elemSize=eSize, vDirLAxZ=xc.Vector([1, 0, 0]), elemType='ElasticBeam3d', coordTransfType='linear') columnZconcr_mesh = fem.LinSetToMesh(linSet=columnZconcr, matSect=columnZconcr_mat, elemSize=eSize, vDirLAxZ=xc.Vector([1, 0, 0]), elemType='ElasticBeam3d', coordTransfType='linear') decklv1_mesh = fem.SurfSetToMesh(surfSet=decklv1, matSect=deck_mat, elemSize=eSize, elemType='ShellMITC4') decklv1_mesh.generateMesh(prep) #mesh the set of surfaces decklv2_mesh = fem.SurfSetToMesh(surfSet=decklv2, matSect=deck_mat, elemSize=eSize, elemType='ShellMITC4') decklv2_mesh.generateMesh(prep) #mesh the set of surfaces wall_mesh = fem.SurfSetToMesh(surfSet=wall, matSect=wall_mat, elemSize=eSize, elemType='ShellMITC4') wall_mesh.generateMesh(prep) foot_mesh = fem.SurfSetToMesh(surfSet=foot, matSect=foot_mat, elemSize=eSize,
tank = grid.genSurfOneXYZRegion(xyzRange=((R, 0, zBase), (R, Angcoo[-1], zTop)), setName='tank', closeCyl='Y') steel = astm.A36 steel_prop = tm.MaterialData(name='steel', E=steel.E, nu=steel.nu, rho=steel.rho) tank_mat = tm.DeckMaterialData(name='tank_mat', thickness=thickness, material=steel_prop) tank_mat.setupElasticSection(preprocessor=prep) #creates the section-materia tank_mesh = fem.SurfSetToMesh(surfSet=tank, matSect=tank_mat, elemSize=0.25, elemType='ShellMITC4') tank_mesh.generateMesh(prep) # Boundary condition nodBase = sets.get_set_nodes_plane_XY(setName='nodBase', setBusq=tank, zCoord=zBase, tol=0.001) for n in nodBase.nodes: modelSpace.fixNode('000_FFF', n.tag) # Loading windParams = bw.windParams(v, Kd, Kzt, I, alpha, zg) tankWind = bw.cylindrWind(2 * R, height, windParams, windComp, zGround, xCent, yCent)
roof=gridGeom.genSurfMultiRegion(lstIJKRange=roof_rg,setName='roof') roof.description='Roof' roof.color=cfg.colors['purple01'] # *** MATERIALS *** concrProp=tm.MaterialData(name='concrProp',E=concrete.Ecm(),nu=concrete.nuc,rho=concrete.density()) # Isotropic elastic section-material appropiate for plate and shell analysis roof_mat=tm.DeckMaterialData(name='roof_mat',thickness= roof_th,material=concrProp) roof_mat.setupElasticSection(preprocessor=prep) #creates the section-material # ***FE model - MESH*** roof_mesh=fem.SurfSetToMesh(surfSet=roof,matSect=roof_mat,elemSize=eSize,elemType='ShellMITC4') roof_mesh.generateMesh(prep) # ***BOUNDARY CONDITIONS*** #fixed DOF (ux:'0FF_FFF', uy:'F0F_FFF', uz:'FF0_FFF', # rx:'FFF_0FF', ry:'FFF_F0F', rz:'FFF_FF0') p1=gridGeom.getPntGrid(indPnt=(0,0,lastZpos)) modelSpace.fixNode('000_FFF',p1.getNode().tag) p2=gridGeom.getPntGrid(indPnt=(lastXpos,0,lastZpos)) modelSpace.fixNode('000_FFF',p2.getNode().tag) p3=gridGeom.getPntGrid(indPnt=(0,lastYpos,lastZpos)) modelSpace.fixNode('000_FFF',p3.getNode().tag) p4=gridGeom.getPntGrid(indPnt=(lastXpos,lastYpos,lastZpos)) modelSpace.fixNode('000_FFF',p4.getNode().tag) # ***ACTIONS***