Ejemplo n.º 1
0
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))
abutmA_spr1_setkp = gridGeom.getSetPntRange(ijkRange=r,
                                            setName='abutmA_spr1_setkp')
abutmA_spr1.applyOnPointsInSet(setEnt=abutmA_spr1_setkp)

#abutments A and B- springs Z
abutmAB_spr2 = sprbc.SpringBC(name='abutmAB_spr2',
                              modelSpace=modelSpace,
                              Kx=0,
                              Ky=0,
                              Kz=10.02 / 2. * 1e6)
lstpos = [
    geom.Pos3d(xList[2], yList[5], zList[0]),
    geom.Pos3d(xList[2], yList[14], zList[0]),
Ejemplo n.º 2
0
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
nodes = preprocessor.getNodeHandler
# Problem type
modelSpace = predefined_spaces.StructuralMechanics3D(nodes)
nodes.defaultTag = 1  #First node number.
nodXYZ = [nodes.newNodeXYZ(i, 1, 0)
          for i in range(3)]  #nodes to be connected to
#springs in X,Y,Z directions
nodZ = [nodes.newNodeXYZ(i, 2, 0) for i in range(3)]  #nodes to be connected to
#springs in Z direction only

#Generation on spring boundary conditions
springXYZ = springs.SpringBC(name='springXYZ',
                             modelSpace=modelSpace,
                             Kx=KX,
                             Ky=KY,
                             Kz=KZ)
springXYZ.applyOnNodesLst(Nodelist=nodXYZ)

fixedNodXYZ = [nodes.getNode(7),
               nodes.getNode(8),
               nodes.getNode(9)]  #fixed nodes

springZ = springs.SpringBC(name='springZ',
                           modelSpace=modelSpace,
                           Kx=0,
                           Ky=0,
                           Kz=KZ)
springZ.applyOnNodesLst(Nodelist=nodZ)
Ejemplo n.º 3
0
for s in side_b_set.getSurfaces:
    for e in s.getElements():
        side_b_elements.getElements.append(e)
side_b_elements.fillDownwards()

# *** Constraints ***

#Underpass frame.
underpassFrame = [
    geom.Pos3d(24.4821, 7.075, 8.4793),
    geom.Pos3d(30.2246, 7.075, 8.4793),
    geom.Pos3d(30.2246, 7.075, 5.3593),
    geom.Pos3d(24.4821, 7.075, 5.3593)
]

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)