diafRP2_mesh=fem.SurfSetToMesh(surfSet=diafRP2,matSect=diafRP_mat,elemSize=eSize,elemType='ShellMITC4') voladzCentV1_mesh=fem.SurfSetToMesh(surfSet=voladzCentV1,matSect=voladzCent_mat,elemSize=eSize,elemType='ShellMITC4') voladzCentV2_mesh=fem.SurfSetToMesh(surfSet=voladzCentV2,matSect=voladzCent_mat,elemSize=eSize,elemType='ShellMITC4') voladzCentV3_mesh=fem.SurfSetToMesh(surfSet=voladzCentV3,matSect=voladzCent_mat,elemSize=eSize,elemType='ShellMITC4') voladzCentRP1_mesh=fem.SurfSetToMesh(surfSet=voladzCentRP1,matSect=voladzCent_mat,elemSize=eSize,elemType='ShellMITC4') voladzCentRP2_mesh=fem.SurfSetToMesh(surfSet=voladzCentRP2,matSect=voladzCent_mat,elemSize=eSize,elemType='ShellMITC4') voladzExtrV1_mesh=fem.SurfSetToMesh(surfSet=voladzExtrV1,matSect=voladzExtr_mat,elemSize=eSize,elemType='ShellMITC4') voladzExtrV2_mesh=fem.SurfSetToMesh(surfSet=voladzExtrV2,matSect=voladzExtr_mat,elemSize=eSize,elemType='ShellMITC4') voladzExtrV3_mesh=fem.SurfSetToMesh(surfSet=voladzExtrV3,matSect=voladzExtr_mat,elemSize=eSize,elemType='ShellMITC4') voladzExtrRP1_mesh=fem.SurfSetToMesh(surfSet=voladzExtrRP1,matSect=voladzExtr_mat,elemSize=eSize,elemType='ShellMITC4') voladzExtrRP2_mesh=fem.SurfSetToMesh(surfSet=voladzExtrRP2,matSect=voladzExtr_mat,elemSize=eSize,elemType='ShellMITC4') mesh_01=[riostrEstr1_mesh,riostrEstr2_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_01) mesh_02=[losInfV1_mesh,losInfV2_mesh,losInfV3_mesh,losInfRP1_mesh,losInfRP2_mesh,losSupV1_mesh,losSupV2_mesh,losSupV3_mesh,losSupRP1_mesh,losSupRP2_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_02) mesh_03=[murAligV1_mesh,murAligV2_mesh,murAligV3_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_03) mesh_04=[murExtAligV1_mesh,murExtAligV2_mesh,murExtAligV3_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_04) mesh_05=[murRP1_mesh,murRP2_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_05) mesh_06=[diafRP1_mesh,diafRP2_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_06) mesh_07=[voladzCentV1_mesh,voladzCentV2_mesh,voladzCentV3_mesh,voladzCentRP1_mesh,voladzCentRP2_mesh,voladzExtrV1_mesh,voladzExtrV2_mesh,voladzExtrV3_mesh,voladzExtrRP1_mesh,voladzExtrRP2_mesh] fem.multi_mesh(preprocessor=prep,lstMeshSets=mesh_07) allmesh=mesh_01+mesh_02+mesh_03+mesh_04+mesh_05+mesh_06+mesh_07 losInf=losInfV1+losInfV2+losInfV3+losInfRP1+losInfRP2
pile_rg=gm.IJKRange((0,0,0),(0,0,1)) pile=gridGeom.genLinOneRegion(ijkRange=pile_rg,setName='pile') # *** MATERIALS *** concrProp=tm.MaterialData(name='concrProp',E=concrete.Ecm(),nu=concrete.nuc,rho=concrete.density()) #Geometric sections #rectangular sections from materials.sections import section_properties as sectpr geomSectPile=sectpr.RectangularSection(name='geomSectPile',b=LeqPile,h=LeqPile) # Elastic material-section pile_mat=tm.BeamMaterialData(name='pile_mat', section=geomSectPile, material=concrProp) pile_mat.setupElasticShear3DSection(preprocessor=prep) # ***FE model - MESH*** pile_mesh=fem.LinSetToMesh(linSet=pile,matSect=pile_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,1,0]),elemType='ElasticBeam3d',dimElemSpace=3,coordTransfType='linear') fem.multi_mesh(preprocessor=prep,lstMeshSets=[pile_mesh]) # ***BOUNDARY CONDITIONS*** pileBC=sbc.PileFoundation(setPile=pile,pileDiam=fiPile,E=concrete.Ecm(),pileType='endBearing',pileBearingCapacity=bearCap,groundLevel=zGround,soilsProp=soils) pileBC.generateSpringsPile(alphaKh_x=1,alphaKh_y=1,alphaKv_z=1) springs=pileBC.springs springSet=preprocessor.getSets.defSet('springSet') for e in springs: springSet.getElements.append(e) #print 'z:',e.getCooCentroid(True)[2], ' Kx (t/m):',round(e.getMaterials()[0].E*1e-4,2) springSet.fillDownwards() allSets=pile+springSet ''' from postprocess.xcVtk.FE_model import vtk_FE_graphic displaySettings= vtk_FE_graphic.DisplaySettingsFE()
#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, -grav])) # Ana uses -accel
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, lstMeshSets=[columns_mesh, floor1_mesh, floor2_mesh]) #mesh these sets surfElInters = floor1.getElements.size subset1_rg = gm.IJKRange((2, 5, 2), (8, 15, 4)) subset1 = gridGeom.getSubsetSurfOneRegion(superset=floor2, ijkRange=subset1_rg, nameSubset='subset1') ratio1 = subset1.getElements.size - surfElInters subset2 = gridGeom.getSubsetSurfOneXYZRegion(superset=floor2, xyzRange=((2, 5, 2), (8, 15, 4)), nameSubset='subset2') ratio2 = subset2.getElements.size - surfElInters
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, elemSize=eSize, elemType='ShellMITC4') fem.multi_mesh(preprocessor=prep, lstMeshSets=[ slab_unif_mesh, slab_step1_mesh, slab_step2_mesh, slab_step3_mesh, slab_step4_mesh ]) #mesh these sets # ***BOUNDARY CONDITIONS*** # Springs (defined by Kx,Ky,Kz) to apply on nodes, points, 3Dpos, ... # Default values for Kx, Ky, Kz are 0, which means that no spring is # created in the corresponding direction #abutment A- springs XY abutmA_spr1 = sprbc.SpringBC(name='abutmA_spr1', modelSpace=modelSpace, Kx=9.55 / 12. * 1e6, Ky=178.8 / 12. * 1e6) r = gm.IJKRange((1, 8, 0), (3, 11, 0))
matSect=beamXsteel_mat, elemSize=eSize, vDirLAxZ=xc.Vector([0, -1, 0]), elemType='ElasticBeam3d', dimElemSpace=3, coordTransfType='linear') columnZsteel_mesh = fem.LinSetToMesh(linSet=columnZsteel, matSect=columnZsteel_mat, elemSize=eSize, vDirLAxZ=xc.Vector([-1, 0, 0]), elemType='ElasticBeam3d', coordTransfType='linear') fem.multi_mesh(preprocessor=prep, lstMeshSets=[ beamXconcr_mesh, beamXsteel_mesh, beamY_mesh, columnZconcr_mesh, columnZsteel_mesh ]) #mesh these sets #out.displayFEMesh([beamXconcr,beamY,columnZconcr,decklv1,decklv2,wall,foot]) #out.displayFEMesh([beamXconcr,beamXsteel]) #out.displayFEMesh([columnZconcr,columnZsteel]) #out.displayLocalAxes() #out.displayStrongWeakAxis(beams) # ***BOUNDARY CONDITIONS*** # Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) foot_wink = sprbc.ElasticFoundation(wModulus=20e7, cRoz=0.2)
#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=1 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,lstMeshSets=[columns_mesh,floor1_mesh,floor2_mesh,wall_mesh]) #mesh these sets # *** SETS *** wall_nel=wall.getNumElements wall_nel_targ=(wall_rg.getIMax()-wall_rg.getIMin())*(wall_rg.getKMax()-wall_rg.getKMin()) floor1_nel=floor1.getNumElements floor1_nel_targ=(floor1_rg.getIMax()-floor1_rg.getIMin())*(floor1_rg.getJMax()-floor1_rg.getJMin()) floor2_nel=floor2.getNumElements floor2_nel_targ=(floor2_rg[0].getIMax()-floor2_rg[0].getIMin())*(floor2_rg[0].getJMax()-floor2_rg[0].getJMin()) columns_nel=columns.getNumElements columns_nel_targ=4*4 ratio1=(wall_nel-wall_nel_targ)+(floor1_nel-floor1_nel_targ)+(floor2_nel-floor2_nel_targ)+(columns_nel-columns_nel_targ) # *** Boolean operations with sets # Union and difference overallSet=wall+floor1+floor2+columns
# ***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, 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') murete_d_mesh.generateMesh(prep) # mesh this set of lines
elemSize=eSize) downDeckExtSlab_mesh = fem.SurfSetToMesh(surfSet=downDeckExtSlab, matSect=downDeck_mat, elemType='ShellMITC4', elemSize=eSize) downDeckIntSlab_mesh = fem.SurfSetToMesh(surfSet=downDeckIntSlab, matSect=downDeck_mat, elemType='ShellMITC4', elemSize=eSize) allSurfList = [ foundExtSlab_mesh, foundIntSlab_mesh, leftDownWall_mesh, leftUpWall_mesh, midWall_mesh, rightDownWall_mesh, rightUpWall_mesh, upDeckExtSlab_mesh, upDeckIntSlab_mesh, downDeckExtSlab_mesh, downDeckIntSlab_mesh ] fem.multi_mesh(preprocessor=prep, lstMeshSets=allSurfList) # ***BOUNDARY CONDITIONS*** # Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) foundationElasticSupports = sprbc.ElasticFoundation(wModulus=winkMod, cRoz=coefHorVerSprings) found = foundExtSlab + foundIntSlab foundationElasticSupports.generateSprings(xcSet=found) # ***** ACTIONS ***** # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set
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) dintExt_M1_mesh=fem.SurfSetToMesh(surfSet=dintExt_M1,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) dintExt_M2_mesh=fem.SurfSetToMesh(surfSet=dintExt_M2,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) dintExt_M3_mesh=fem.SurfSetToMesh(surfSet=dintExt_M3,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) dintCent_M1_mesh=fem.SurfSetToMesh(surfSet=dintCent_M1,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) dintCent_M2_mesh=fem.SurfSetToMesh(surfSet=dintCent_M2,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) dintCent_M3_mesh=fem.SurfSetToMesh(surfSet=dintCent_M3,matSect=deck_mat,elemType='ShellMITC4',elemSize=eSize) fem.multi_mesh(preprocessor=prep,lstMeshSets=[losCimExt_M1_mesh,losCimExt_M2_mesh,losCimExt_M3_mesh, losCimCent_M1_mesh,losCimCent_M2_mesh,losCimCent_M3_mesh, hastIzq_M1_mesh,hastIzq_M2_mesh,hastIzq_M3_mesh, hastDer_M1_mesh,hastDer_M2_mesh,hastDer_M3_mesh, dintExt_M1_mesh,dintExt_M2_mesh,dintExt_M3_mesh, dintCent_M1_mesh,dintCent_M2_mesh,dintCent_M3_mesh]) muretes_mesh=fem.LinSetToMesh(linSet=muretes,matSect=muretes_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,0,1]),elemType='ElasticBeam3d',coordTransfType='linear') muretes_mesh.generateMesh(prep) # mesh this set of lines overallSet=prep.getSets.getSet('total') overallSet.description='Marco' losCim=losCimExt_M1+losCimExt_M2+losCimExt_M3+losCimCent_M1+losCimCent_M2+losCimCent_M3 losCim.name='losCim' losCim.description='Losa de cimentación' hastIzq=hastIzq_M1+hastIzq_M2+hastIzq_M3 hastIzq.name='hastIzq' hastIzq.description='Hastial izquierdo' hastDer=hastDer_M1+hastDer_M2+hastDer_M3
if Lvoladzd > 0: voladzd_mesh = fem.SurfSetToMesh(surfSet=voladzd, matSect=aletdZ3_mat, elemSize=eSize, elemType='ShellMITC4') lstSups = [ zap_mesh, murestrZ1_mesh, murestrZ2_mesh, aletiZ1_mesh, aletiZ2_mesh, aletiZ3_mesh, aletdZ1_mesh, aletdZ2_mesh, aletdZ3_mesh ] if Lvoladzi > 0: lstSups.append(voladzi_mesh) if Lvoladzd > 0: lstSups.append(voladzd_mesh) fem.multi_mesh(preprocessor=prep, lstMeshSets=lstSups) #Sets for loading murestr = murestrZ1 + murestrZ2 if Lvoladzi > 0: aleti = aletiZ1 + aletiZ2 + aletiZ3 + voladzi else: aleti = aletiZ1 + aletiZ2 + aletiZ3 if Lvoladzd > 0: aletd = aletdZ1 + aletdZ2 + aletdZ3 + voladzd else: aletd = aletdZ1 + aletdZ2 + aletdZ3 # ***BOUNDARY CONDITIONS***
rightWall_mesh = fem.SurfSetToMesh(surfSet=rightWall, matSect=wall_mat, elemType='ShellMITC4', elemSize=eSize) deckExtSlab_mesh = fem.SurfSetToMesh(surfSet=deckExtSlab, matSect=deck_mat, elemType='ShellMITC4', elemSize=eSize) deckIntSlab_mesh = fem.SurfSetToMesh(surfSet=deckIntSlab, matSect=deck_mat, elemType='ShellMITC4', elemSize=eSize) fem.multi_mesh(preprocessor=prep, lstMeshSets=[ foundExtSlab_mesh, foundIntSlab_mesh, leftWall_mesh, rightWall_mesh, deckExtSlab_mesh, deckIntSlab_mesh ]) # ***BOUNDARY CONDITIONS*** # Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) #foundationElasticSupports= from model.boundary_cond import spring_bound_cond as sprbc from model.sets import sets_mng as sets from materials import typical_materials as tm from actions import loads from actions import load_cases as lcases from actions import combinations as cc
steel.gammaM=1.0 steel_prop=tm.MaterialData(name='steel',E=steel.E,nu=steel.nu,rho=steel.rho) column_mat=EC3_materials.HEShape(steel,'HE_140_B') column_mat.defElasticShearSection3d(prep) beam_mat=EC3_materials.UPNShape(steel,'UPN_80') beam_mat.defElasticShearSection3d(prep) diag_mat=EC3_materials.SHSShape(steel,'SHS50x50x2_5') xcDiagSteel=steel.defElasticMaterial(prep) # ***FE model - MESH*** #Meshing #Steel elements: local Z-axis corresponds to weak axis of the steel shape columns_mesh=fem.LinSetToMesh(columns,column_mat,0.25,xc.Vector([1,0,0])) beams_mesh=fem.LinSetToMesh(beams,beam_mat,0.25,xc.Vector([0,0,1])) fem.multi_mesh(prep,[columns_mesh,beams_mesh],sectGeom='Y') #mesh these sets and creates property 'sectionGeometry' for each element) diagonals_mesh=fem.LinSetToMesh(diagonals,xcDiagSteel,100,xc.Vector([1,0,0]),'Truss',3,None) diagonals_mesh.generateMesh(prep) for e in diagonals.getElements: e.sectionArea=diag_mat.A() #Boundary conditions nodBase=sets.get_set_nodes_plane_XY(setName='nodBase', setBusq=columns, zCoord=zGround, tol=0.001) for n in nodBase.nodes: modelSpace.fixNode('000_000',n.tag) # Wind action windParams=bw.windParams(v,Kd,Kzt,I,alpha,zg) wind_columns=loads.WindLoadOnBeams('wind_columns',columns,windParams,Cp,xc.Vector([0,1,0]),column_mat.h())
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') murete_d_mesh.generateMesh(prep) # mesh this set of lines overallSet=prep.getSets.getSet('total') overallSet.description='Marco' losCim=losCimExt+losCimCent losCim.name='losCim' losCim.description='Losa de cimentación' hastIzq=hastIzqInf+hastIzqCent+hastIzqSup hastIzq.name='hastIzq' hastIzq.description='Hastial izquierdo' hastDer=hastDerInf+hastDerCent+hastDerSup
# them beamX_mesh=fem.LinSetToMesh(linSet=beamX,matSect=beamX_mat,elemSize=eSize,vDirLAxZ=xc.Vector([0,1,0]),elemType='ElasticBeam3d',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') columnZ_mesh=fem.LinSetToMesh(linSet=columnZ,matSect=columnZ_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,elemType='ShellMITC4') foot_mesh.generateMesh(prep) fem.multi_mesh(preprocessor=prep,lstMeshSets=[beamX_mesh,beamY_mesh,columnZ_mesh]) #mesh these sets # ***BOUNDARY CONDITIONS*** # Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) foot_wink=sprbc.ElasticFoundation(wModulus=20e7,cRoz=0.2) foot_wink.generateSprings(xcSet=foot) # Springs (defined by Kx,Ky,Kz) to apply on nodes, points, 3Dpos, ... # Default values for Kx, Ky, Kz are 0, which means that no spring is # created in the corresponding direction # spring_col=sprbc.SpringBC(name='spring_col',modelSpace=modelSpace,Kx=10e3,Ky=50e3,Kz=30e3) # a=spring_col.applyOnNodesIn3Dpos(lst3DPos=[geom.Pos3d(0,LbeamY,0)])