Example #1
0
# Connection between cables and deck
gluedDOFs = [0, 1, 2, 3, 4, 5]
deckElem = shells.getElements
cablNod = cables.getNodes
for n in cablNod:
    nearElem = deckElem.getNearestElement(n.getCurrentPos3d(0.0))
    modelSpace.constraints.newGlueNodeToElement(n, nearElem, xc.ID(gluedDOFs))

#                       ***BOUNDARY CONDITIONS***
execfile(modelDataScriptDir + '/sets_springs.py')
# 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)
found_wink_walls = sprbc.ElasticFoundation(wModulus=wModulus_walls, cRoz=0.05)
found_wink_walls.generateSprings(xcSet=setShortWall)
found_wink_walls.generateSprings(xcSet=setLongWall)

found_wink_fill = sprbc.ElasticFoundation(wModulus=wModulus_fill, cRoz=0.05)
found_wink_fill.generateSprings(xcSet=setInsideArea)

# Gluing of slabs
execfile(modelDataScriptDir + "/sets_lines_to_glue.py")

#Aux sets (LCPT)
deckCenter = prep.getSets.defSet('deckCenter')
for e in deck.getElements:
    c = e.getPosCentroid(True)
    y = c.y
    if (y > 5.0 and y < 22.0):
Example #2
0
 def __init__(self,name, grid, wModulus, cRoz):
   ''' 
   :ivar wModulus: Winkler modulus.
   :ivar cRoz: fraction of the Winkler modulus to apply in the contact plane.'''
   super(ElasticFoundationRanges,self).__init__(name,grid,list())
   self.elasticFoundation= ef.ElasticFoundation(wModulus,cRoz)
Example #3
0
                   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)
foot_wink.generateSprings(xcSet=foot)
#out.displayFEMesh()

# 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)])

#fixed DOF (ux:'0FF_FFF', uy:'F0F_FFF', uz:'FF0_FFF',
#           rx:'FFF_0FF', ry:'FFF_F0F', rz:'FFF_FF0')
n_col1 = nodes.getDomain.getMesh.getNearestNode(geom.Pos3d(0, LbeamY, 0))
modelSpace.fixNode('000_FFF', n_col1.tag)
n_col2 = nodes.getDomain.getMesh.getNearestNode(geom.Pos3d(LbeamX, LbeamY, 0))
modelSpace.fixNode('000_FFF', n_col2.tag)
Example #4
0
]

frameBC = sprbc.SpringBC('frameBC', modelSpace, Ky=1e8)
segments = [(0, 1), (1, 2), (2, 3), (3, 0)]
frame_nodes = []
for s in segments:
    sI = geom.Segment3d(underpassFrame[s[0]], underpassFrame[s[1]])
    for n in shell_elements.getNodes:
        pos = n.getInitialPos3d
        dist = sI.distPos3d(pos)
        if dist < 0.1:
            frame_nodes.append(n)
frameBC.applyOnNodesLst(frame_nodes)

#Foundation.
foundation = sprbc.ElasticFoundation(wModulus=kS, cRoz=0.002)
foundation.generateSprings(xcSet=floor_elements)

# *** Loads ***
loadManager = preprocessor.getLoadHandler
loadCases = loadManager.getLoadPatterns
#Load modulation.
ts = loadCases.newTimeSeries("constant_ts", "ts")
loadCases.currentTimeSeries = "ts"

#Load case definition
loadCaseManager = lcm.LoadCaseManager(preprocessor)
loadCaseNames = [
    'selfWeight', 'deadLoad', 'passengers_shelter', 'earthPressure',
    'pedestrianLoad', 'singleAxeLoad', 'LM1', 'DLM1', 'nosingLoad',
    'roadTrafficLoad', 'earthquake'
Example #5
0
#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
from actions.earth_pressure import earth_pressure as ep

#                       ***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)
cRoz = 0.5
foundationElasticSupports = sprbc.ElasticFoundation(wModulus=Kbalasto,
                                                    cRoz=cRoz)
foundationElasticSupports.generateSprings(xcSet=losCim)

#                       ***ACTIONS***
# Auxiliary ranges and sets

surf_eje1_rg = list()
for i in range(nCam):
    surf_eje1_rg.append(
        gm.IJKRange([4 * i + 1, 7, lastZpos], [4 * i + 2, 8, lastZpos]))
    surf_eje1_rg.append(
        gm.IJKRange([4 * i + 3, 7, lastZpos], [4 * i + 4, 8, lastZpos]))
surf_eje1_set = gridGeom.getSetSurfMultiRegion(lstIJKRange=surf_eje1_rg,
                                               setName='surf_eje1_set')

surf_eje2_rg = list()
Example #6
0
                                         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
grav = 9.81  #Gravity acceleration (m/s2)
selfWeight = loads.InertialLoad(name='selfWeight',
                                lstMeshSets=allSurfList,
                                vAccel=xc.Vector([0.0, 0.0, -grav]))

# Uniform loads applied on shell elements
#    name:       name identifying the load
#    xcSet:     set that contains the surfaces
Example #7
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***
# 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)
cRoz = 0.5
found_wink = sprbc.ElasticFoundation(wModulus=Kbalasto, cRoz=0.2)
found_wink.generateSprings(xcSet=zap)

#                       ***ACTIONS***
#Inertial load (density*acceleration) applied to the elements in a set
selfWeight = loads.InertialLoad(name='selfWeight',
                                lstMeshSets=lstSups,
                                vAccel=xc.Vector([0.0, 0.0, -grav]))

# Peso del relleno sobre la zapata
zapTrasdos_rg = gut.def_rg_cooLim(XYZLists, Xmurestr, (yMurEstr, yZap), (0, 0))
zapTrasdos = gridGeom.getSetSurfOneRegion(ijkRange=zapTrasdos_rg,
                                          nameSet='zapTrasdos')
zapTrasdos.fillDownwards()

rell_zap = loads.UniformLoadOnSurfaces(