nodes = preprocessor.getNodeHandler

#Materials
## Steel material
steel = ASTM_materials.A992
steel.gammaM = 1.00
## Profile geometry
shape = ASTM_materials.WShape(steel, 'W18X50')
xcSection = shape.defElasticShearSection2d(preprocessor)

# Model geometry

## Points.
span = 35.0 * foot2meter
pointHandler = preprocessor.getMultiBlockTopology.getPoints
p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0))
p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0))

## Lines
lineHandler = preprocessor.getMultiBlockTopology.getLines
l1 = lineHandler.newLine(p0.tag, p1.tag)
l1.nDiv = 10

# Mesh
modelSpace = predefined_spaces.StructuralMechanics2D(nodes)
trfs = preprocessor.getTransfCooHandler
lin = trfs.newLinearCrdTransf2d("lin")
seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial = xcSection.name
seedElemHandler.defaultTransformation = lin.name
elem = seedElemHandler.newElement("ElasticBeam2d", xc.ID([0, 0]))
Example #2
0
modelSpace = predefined_spaces.StructuralMechanics2D(nodes)
nodes.newSeedNode()

# Materials definition
scc = typical_materials.defElasticSection2d(preprocessor, "scc", area, Es, Iz)

pd = modelSpace.newPDeltaCrdTransf("pd")

seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultTransformation = "pd"
seedElemHandler.defaultMaterial = "scc"
seedElemHandler.defaultTag = 1  #Tag for next element.
beam2d = seedElemHandler.newElement("ElasticBeam2d", xc.ID([0, 0]))

points = preprocessor.getMultiBlockTopology.getPoints
pt1 = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0))
pt2 = points.newPntIDPos3d(2, geom.Pos3d(0.0, H, 0))
pt3 = points.newPntIDPos3d(3, geom.Pos3d(B, 0.0, 0))
pt4 = points.newPntIDPos3d(4, geom.Pos3d(B, H, 0))
pt5 = points.newPntIDPos3d(5, geom.Pos3d(offset, 0.0, 0))
pt6 = points.newPntIDPos3d(6, geom.Pos3d(offset, H, 0))
pt7 = points.newPntIDPos3d(7, geom.Pos3d(offset + B, 0.0, 0))
pt8 = points.newPntIDPos3d(8, geom.Pos3d(offset + B, H, 0))

lines = preprocessor.getMultiBlockTopology.getLines
l = lines.newLine(1, 2)
l.nDiv = nDivLines
l = lines.newLine(2, 4)
l.nDiv = nDivLines * 2
l = lines.newLine(4, 3)
l.nDiv = nDivLines
Example #3
0
import math
import os
from model import model_inquiry as mi

__author__= "Luis C. Pérez Tato (LCPT)"
__copyright__= "Copyright 2014, LCPT"
__license__= "GPL"
__version__= "3.0"
__email__= "*****@*****.**"

feProblem= xc.FEProblem()
preprocessor=  feProblem.getPreprocessor
# Defining nodes

pts= preprocessor.getCad.getPoints
ptA= pts.newPntIDPos3d(1,geom.Pos3d(0.0,0.0,3.0))
ptB= pts.newPntIDPos3d(2,geom.Pos3d(0.0,0.0,4.0))

trfs= preprocessor.getCad.getGeometricTransformations
transl= trfs.newTransformation("translation")
v= ptB.getPos-ptA.getPos
transl.setVector(v)

ptTrfA= pts.newPntIDPos3d(10,transl.getTrfPos(ptA.getPos))
ptTrfB= pts.newPntIDPos3d(11,transl.getTrfPos(ptB.getPos))

''' 
for p in pts:
  pos= p.getPos
  print "id: ",p.getNombre," x= ",pos.x,," y= ",pos.y,," z= ",pos.z
 ''' 
Example #4
0
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
nodes = preprocessor.getNodeHandler
modelSpace = predefined_spaces.SolidMechanics3D(nodes)
# Define materials
elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000)

seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial = elast.name
seedElemHandler.dimElem = 3  # Dimension of element space
seedElemHandler.defaultTag = 1  #Tag for the next element.
truss = seedElemHandler.newElement("Truss", xc.ID([0, 0]))
truss.sectionArea = 10.0

points = preprocessor.getMultiBlockTopology.getPoints
pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0))
pt = points.newPntIDPos3d(2, geom.Pos3d(CooMax, CooMax, CooMax))
pt = points.newPntIDPos3d(3, geom.Pos3d(CooMax / 2, CooMax / 2, CooMax / 2))

lines = preprocessor.getMultiBlockTopology.getLines
lines.defaultTag = 1
l1 = lines.newLine(1, 2)
l1.nDiv = NumDiv

l1.splitAtPoint(points.get(3))
kpoints1 = l1.getKPoints()
l2 = lines.get(2)
kpoints2 = l2.getKPoints()

ratio1 = (kpoints1[0] - 1) + (kpoints1[1] - 3)
ratio2 = (kpoints2[0] - 3) + (kpoints2[1] - 2)
Example #5
0
import xc_base
import geom
import xc
from model import predefined_spaces
from materials import typical_materials
import math
from postprocess.quick_inquiry import nodal_reactions
from solution import predefined_solutions

feProblem= xc.FEProblem()
preprocessor=  feProblem.getPreprocessor
nodes= preprocessor.getNodeHandler


p1= geom.Pos3d(0,0,0)
p2= geom.Pos3d(1,0,0)
p3= geom.Pos3d(1,1,0)
p4= geom.Pos3d(0,1,0)

# Problem type
modelSpace= predefined_spaces.StructuralMechanics3D(nodes)
n1= nodes.newNodeXYZ(p1.x,p1.y,p1.z)
n2= nodes.newNodeXYZ(p2.x,p2.y,p2.z)
n3= nodes.newNodeXYZ(p3.x,p3.y,p3.z)
n4= nodes.newNodeXYZ(p4.x,p4.y,p4.z)

pA= geom.Pos3d(0.5,0.5,0.0)
nA= nodes.newNodeXYZ(pA.x,pA.y,pA.z)

# Materials definition
Example #6
0
File: linea.py Project: xyuan/xc
modelSpace = predefined_spaces.SolidMechanics3D(nodes)

# Material
elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000)

nodes.newSeedNode()
seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.dimElem = 3  #Bars defined in a three dimensional space.
seedElemHandler.defaultMaterial = "elast"
seedElemHandler.defaultTag = 1  #Number for the next element will be 1.
truss = seedElemHandler.newElement("Truss", xc.ID([1, 2]))
truss.area = 10

points = preprocessor.getMultiBlockTopology.getPoints
points.defaultTag = 1
pt = points.newPntFromPos3d(geom.Pos3d(0, 0, 0))
pt = points.newPntFromPos3d(geom.Pos3d(CooMax, CooMax, CooMax))

lines = preprocessor.getMultiBlockTopology.getLines
lines.defaultTag = 1
l = lines.newLine(1, 2)
l.nDiv = NumDiv

setTotal = preprocessor.getSets.getSet("total")
setTotal.genMesh(xc.meshDir.I)

mesh = feProblem.getDomain.getMesh
nnod = mesh.getNumNodes()
nelem = mesh.getNumElements()

# nIter= mesh.getNodeIter
Example #7
0
import math
import os
from model import model_inquiry as mi

__author__ = "Luis C. Pérez Tato (LCPT)"
__copyright__ = "Copyright 2014, LCPT"
__license__ = "GPL"
__version__ = "3.0"
__email__ = "*****@*****.**"

feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
# Defining nodes

points = preprocessor.getMultiBlockTopology.getPoints
pt1 = points.newPntIDPos3d(1, geom.Pos3d(0, 0, 0))
pt2 = points.newPntIDPos3d(2, geom.Pos3d(0, 0, 1))
pt3 = points.newPntIDPos3d(3, geom.Pos3d(1, 0, 0))

eje = geom.Recta3d(pt1.getPos, pt2.getPos)
ang = math.pi / 2.0
trfs = preprocessor.getMultiBlockTopology.getGeometricTransformations
rot1 = trfs.newTransformation("rotation")
rot1.setAxisAng(eje, -ang)

pt4 = points.newPntIDPos3d(4, rot1.getTrfPos(geom.Pos3d(0.0, 1.0, 0.0)))

dist34 = mi.distance_2points(preprocessor, 3, 4)
#print "dist(3,4)= ",dist34

import os
Example #8
0
trafQLoadLane1HwSit2a = loads.NodalLoad(
    name='trafQLoadLane1HwSit2a',
    lstNod=CoordTrainLoads(fleetAngle, 0.5 + deltaX,
                           yList[YposLane1HwSit2[0]] + deltaY,
                           zList[lastZpos]),
    loadVector=xc.Vector([0, 0, -alphQ1hw * Qk1wheel, 0, 0, 0]))
trafQLoadLane1SrSit12b = loads.NodalLoad(
    name='trafQLoadLane1SrSit12b',
    lstNod=CoordTrainLoads(fleetAngle, xList[lastXpos] / 2.0 + deltaX,
                           yList[YposLane1Sr[0]] + deltaY2,
                           zList[zPosDownDeck]),
    loadVector=xc.Vector([0, 0, -alphQ1sr * Qk1wheel, 0, 0, 0]))

points = [
    geom.Pos3d(xList[lastXpos] / 2.0,
               (yList[YposLane1HwSit1[0]] + yList[YposLane1HwSit1[1]]) / 2.0 +
               xList[lastXpos] / 2.0 / math.tan(fleetAngle), zList[lastZpos])
]
trafBrakingHwSit1 = loads.NodalLoad(
    name='trafBrakingHwSit1',
    lstNod=sets.get_lstNod_from_lst3DPos(prep, points),
    loadVector=xc.Vector([
        -brakingQhw * math.sin(fleetAngle), -brakingQhw * math.cos(fleetAngle),
        0, 0, 0, 0
    ]))

points = [
    geom.Pos3d(xList[lastXpos] / 2.0,
               (yList[YposLane1HwSit2[0]] + yList[YposLane1HwSit2[1]]) / 2.0 +
               xList[lastXpos] / 2.0 / math.tan(fleetAngle), zList[lastZpos])
]
Example #9
0
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
# Materials definition
concrete = typical_materials.defElasticIsotropic3d(preprocessor, "concrete3d",
                                                   28.3e9, 0.2, 0.0)

# Geometry

width = 6 * 0.0254
length = 4 * 0.3048
height = 12 * 0.0254

## Block topology

points = preprocessor.getMultiBlockTopology.getPoints
pt1 = points.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0))
pt2 = points.newPntFromPos3d(geom.Pos3d(width, 0.0, 0.0))
pt3 = points.newPntFromPos3d(geom.Pos3d(width, length, 0.0))
pt4 = points.newPntFromPos3d(geom.Pos3d(0.0, length, 0.0))
pt5 = points.newPntFromPos3d(geom.Pos3d(0.0, 0.0, height))
pt6 = points.newPntFromPos3d(geom.Pos3d(width, 0.0, height))
pt7 = points.newPntFromPos3d(geom.Pos3d(width, length, height))
pt8 = points.newPntFromPos3d(geom.Pos3d(0.0, length, height))

bodies = preprocessor.getMultiBlockTopology.getBodies
b1 = bodies.newBlockPts(pt1.tag, pt2.tag, pt3.tag, pt4.tag, pt5.tag, pt6.tag,
                        pt7.tag, pt8.tag)

k_points_ref = [(1, [0, 3, 2, 1]), (2, [0, 1, 5, 4]), (3, [1, 2, 6, 5]),
                (4, [2, 3, 7, 6]), (5, [0, 4, 7, 3]), (6, [4, 5, 6, 7])]
k_points = list()
Example #10
0
# Problem type
mainBeam = xc.FEProblem()
mainBeam.title = 'Warehouse main beams'
preprocessor = mainBeam.getPreprocessor
nodos = preprocessor.getNodeHandler
modelSpace = predefined_spaces.StructuralMechanics3D(nodos)

#Materials
S235JR = EC3_materials.S235JR
S235JR.gammaM = 1.00
IPE450A = EC3_materials.IPEShape(S235JR, 'IPE_A_450')
fs3dIPE450 = IPE450A.defElasticShearSection3d(preprocessor, S235JR)

points = preprocessor.getMultiBlockTopology.getPoints
pt = dict()
pt[0] = points.newPntIDPos3d(0, geom.Pos3d(8.64308749, 0.0, 10.22679239))
pt[1] = points.newPntIDPos3d(1, geom.Pos3d(8.73795117, 0.0, 10.20466246))
pt[2] = points.newPntIDPos3d(2, geom.Pos3d(10.9911389, 0.0, 9.67903555))
pt[3] = points.newPntIDPos3d(3, geom.Pos3d(13.41396022, 0.0, 9.11383628))

pt[4] = points.newPntIDPos3d(4, geom.Pos3d(13.55101619, 0.0, 9.12256754))
pt[5] = points.newPntIDPos3d(5, geom.Pos3d(16.56769638, 0.0, 9.31474758))
pt[6] = points.newPntIDPos3d(6, geom.Pos3d(19.70712774, 0.0, 9.51474758))
pt[7] = points.newPntIDPos3d(7, geom.Pos3d(22.8465591, 0.0, 9.71474758))
pt[8] = points.newPntIDPos3d(8, geom.Pos3d(25.98599046, 0.0, 9.91474758))
pt[9] = points.newPntIDPos3d(9, geom.Pos3d(29.00267066, 0.0, 10.10692762))

pos10 = geom.Pos3d(29.11111701, 0.0, 10.11383628)
pt[10] = points.newPntIDPos3d(10, pos10)
pt[21] = points.newPntIDPos3d(21, pos10)
Example #11
0
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
nodes = preprocessor.getNodeHandler

modelSpace = predefined_spaces.SolidMechanics2D(nodes)

elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000)
elast2d = typical_materials.defElasticIsotropicPlaneStress(
    preprocessor, "elast2d", E, nu, rho)

seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial = elast2d.name
elem = seedElemHandler.newElement("FourNodeQuad", xc.ID([0, 0, 0, 0]))

points = preprocessor.getMultiBlockTopology.getPoints
pt1 = points.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0))
pt2 = points.newPntFromPos3d(geom.Pos3d(CooMaxX / 3.0, 0.0, 0.0))
pt3 = points.newPntFromPos3d(geom.Pos3d(CooMaxX * 2 / 3.0, 0.0, 0.0))
pt4 = points.newPntFromPos3d(geom.Pos3d(CooMaxX, 0.0, 0.0))
pt5 = points.newPntFromPos3d(geom.Pos3d(0.0, CooMaxY, 0.0))
pt6 = points.newPntFromPos3d(geom.Pos3d(CooMaxX / 3.0, CooMaxY, 0.0))
pt7 = points.newPntFromPos3d(geom.Pos3d(CooMaxX * 2 / 3.0, CooMaxY, 0.0))
pt8 = points.newPntFromPos3d(geom.Pos3d(CooMaxX, CooMaxY, 0.0))

surfaces = preprocessor.getMultiBlockTopology.getSurfaces
s1 = surfaces.newQuadSurfacePts(pt1.tag, pt2.tag, pt6.tag, pt5.tag)
s1.nDivI = 1
s1.nDivJ = 1

# print("s1 nDivI= ", s1.nDivI)
# print("s1 nDivJ= ", s1.nDivJ)
Example #12
0
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
nodes = preprocessor.getNodeHandler
modelSpace = predefined_spaces.SolidMechanics3D(nodes)
# Materials definition
elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000)

seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.dimElem = 3  #Bars defined in a three dimensional space.
seedElemHandler.defaultMaterial = elast.name
seedElemHandler.defaultTag = 1  #Number for the next element will be 1.
truss = seedElemHandler.newElement("Truss", xc.ID([0, 0]))
truss.sectionArea = 10

points = preprocessor.getMultiBlockTopology.getPoints
pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0))
pt = points.newPntIDPos3d(2, geom.Pos3d(CooMax / 3, CooMax / 3, CooMax / 3))
pt = points.newPntIDPos3d(
    3, geom.Pos3d(2 * CooMax / 3, 2 * CooMax / 3, 2 * CooMax / 3))
pt = points.newPntIDPos3d(4, geom.Pos3d(CooMax, CooMax, CooMax))

lines = preprocessor.getMultiBlockTopology.getLines
lines.defaultTag = 3
l3 = lines.newLine(1, 2)

# print("name: ",name," p1:",p1.name," p2:",p2.name)
lines.defaultTag = 2
l2 = lines.newLine(4, 3)
# print("name: ",name," p1:",p1.name," p2:",p2.name)
lines.defaultTag = 1
l1 = lines.newLine(2, 3)
Example #13
0

# Test raw paving routine.
def getPoints(lstPos, nDiv):
    retval = list()
    p0 = lstPos[0]
    for p in lstPos[1:]:
        sg = geom.Segment3d(p0, p)
        retval.extend(sg.Divide(nDiv)[:-1])
        p0 = p
    sg = geom.Segment3d(lstPos[-1], lstPos[0])
    retval.extend(sg.Divide(nDiv)[:-1])
    return retval


p1 = geom.Pos3d(0, 0, 0)
p2 = geom.Pos3d(10, 0, 0)
p3 = geom.Pos3d(10, 10, 0)
p4 = geom.Pos3d(0, 10, 0)

pH0 = geom.Pos3d(4, 4, 0)
pH1 = geom.Pos3d(5, 4, 0)
pH2 = geom.Pos3d(5, 5, 0)
pH3 = geom.Pos3d(4, 5, 0)

corners = [p1, p2, p3, p4]
holeCorners = [pH0, pH1, pH2, pH3]

points = getPoints(corners, nDiv=10)
holePoints = getPoints(holeCorners, nDiv=1)
'''
from materials.sections import section_properties
from postprocess.xcVtk import vtk_graphic_base
from postprocess import output_handler

# *********Problem definition*********
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
modelSpace = predefined_spaces.StructuralMechanics3D(
    preprocessor.getNodeHandler)

# *********geometry*********
L = 8.0  #8.0
inPlane = True  #False
points = preprocessor.getMultiBlockTopology.getPoints  # Point container.
if (inPlane):
    pt0 = points.newPoint(geom.Pos3d(0.0, 0.0, 0.0))
    pt1 = points.newPoint(geom.Pos3d(0.0, 1.0, 0.0))
    pt2 = points.newPoint(geom.Pos3d(0.0, 1.0, L))
    pt3 = points.newPoint(geom.Pos3d(0.0, 0.0, L))  # Right end
else:
    pt0 = points.newPoint(geom.Pos3d(0.0, 0.0, 0.0))
    pt1 = points.newPoint(geom.Pos3d(1.0, 0.0, 0.0))
    pt2 = points.newPoint(geom.Pos3d(1.0, 0.0, L))
    pt3 = points.newPoint(geom.Pos3d(0.0, 0.0, L))  # Right end

surfaces = preprocessor.getMultiBlockTopology.getSurfaces  # Face container.
face0 = surfaces.newQuadSurfacePts(pt0.tag, pt1.tag, pt2.tag, pt3.tag)
#face0.setElemSizeIJ(0.5,0.25) #Element size in (pt0->pt1,pt1->pt2) directions
face0.setElemSizeIJ(0.5, 0.5)  #Element size in (pt0->pt1,pt1->pt2) directions

# Ascii art:
Example #15
0
from materials.ehe import EHE_concrete
from materials.ehe import EHE_reinforcing_steel

__author__= "Luis C. Pérez Tato (LCPT)"
__copyright__= "Copyright 2014, LCPT"
__license__= "GPL"
__version__= "3.0"
__email__= "*****@*****.**"

prueba= xc.ProblemaEF()
preprocessor=  prueba.getPreprocessor
materiales= preprocessor.getMaterialLoader
diagInteg= materiales.newInteractionDiagram("diagInteg")
diagInteg.readFrom("/tmp/prueba_diag_interaccion01.dat")

ratio1= diagInteg.getCapacityFactor(geom.Pos3d(352877,0,0))-1
ratio2= diagInteg.getCapacityFactor(geom.Pos3d(352877/2.0,0,0))-0.5
ratio3= diagInteg.getCapacityFactor(geom.Pos3d(-574457,41505.4,2.00089e-11))-1.0
ratio4= diagInteg.getCapacityFactor(geom.Pos3d(-978599,-10679.4,62804.3))-1.0


import os
os.system("rm -f /tmp/prueba_diag_interaccion01.dat")
''' 
print "ratio1= ",(ratio1)
print "ratio2= ",(ratio2)
print "ratio3= ",(ratio3)
print "ratio4= ",(ratio4)
 '''

''' Como el método con el que se graba el diagrama de interacción no es exacto
Example #16
0
fiberSectionRepr = secHA.getFiberSectionRepr()
fiberSectionRepr.setGeomNamed("columnGeometry")
secHA.setupFibers()
fibers = secHA.getFibers()

# Create interaction diagram.
param = xc.InteractionDiagramParameters()
param.concreteTag = concrDiagram.tag
param.reinforcementTag = steelDiagram.tag
interactionDiagram = materialHandler.calcInteractionDiagram(secHA.name, param)

# Compute capacity factor.
N = -1570e3  # Axial force at column top
My = 392e3  # Y bending moment at column top
Mz = 0.0  # Z bending moment at column top
CF = interactionDiagram.getCapacityFactor(geom.Pos3d(N, My, Mz))
CFRef = 1.07887046522  # Almost 1.0, no big deal.
ratio = abs(CF - CFRef) / CFRef
'''
print("CF= ",CF)
print("ratio= ",ratio)
'''

import os
from misc_utils import log_messages as lmsg

fname = os.path.basename(__file__)
if (abs(ratio) < 1e-8):
    print("test " + fname + ": ok.")
else:
    lmsg.error(fname + ' ERROR.')
Example #17
0
# Define materials
elast = typical_materials.defElasticMaterial(preprocessor, "elast", E)

nodes.newSeedNode()

# Define materials
nmb1 = typical_materials.defElasticMembranePlateSection(
    preprocessor, "memb1", E, nu, 0.0, thickness)

seedElemLoader = preprocessor.getElementLoader.seedElemLoader
seedElemLoader.defaultMaterial = "memb1"
seedElemLoader.defaultTag = 1
elem = seedElemLoader.newElement("ShellMITC4", xc.ID([0, 0, 0, 0]))

points = preprocessor.getCad.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))
surfaces = preprocessor.getCad.getSurfaces
surfaces.defaultTag = 1
s = surfaces.newQuadSurfacePts(1, 2, 3, 4)
s.nDivI = NumDivI
s.nDivJ = NumDivJ

# Constraints
f1 = preprocessor.getSets.getSet("f1")
f1.genMesh(xc.meshDir.I)
lados = s.getEdges
#Edge iterator
for l in lados:
Example #18
0
nodes= preprocessor.getNodeHandler
modelSpace= predefined_spaces.SolidMechanics3D(nodes)

# Materials definition
elast= typical_materials.defElasticMaterial(preprocessor, "elast",3000)

nodes.newSeedNode()
seedElemHandler= preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial= "elast"
seedElemHandler.dimElem= 3 # Dimension of element space
seedElemHandler.defaultTag= 1 #Tag for the next element.
truss= seedElemHandler.newElement("Truss",xc.ID([0,0]))
truss.area= 10.0

points= preprocessor.getMultiBlockTopology.getPoints
pt1= points.newPntIDPos3d(1,geom.Pos3d(R,0.0,0.0))
pt2= points.newPntFromPos3d(geom.Pos3d((R*cos45),(R*sin45),0.0))
pt3= points.newPntFromPos3d(geom.Pos3d(0.0,R,0.0))

lines= preprocessor.getMultiBlockTopology.getLines
lines.defaultTag= 1
l= lines.newCircleArc(1,2,3)
l.nDiv= NumDiv
th1= l.getTheta1()
th2= l.getTheta2()
long= l.getLong()
xC= l.getCenter().x
yC= l.getCenter().y
zC= l.getCenter().z
xi= l.getPInic().x
yi= l.getPInic().y
Example #19
0
#                 xc.Vector([Fx,Fy,Fz,Mx,My,Mz]).

#  cargas puntuales tren de carreteras
def trafficPointLoads(centerTruck):
    xc=centerTruck.x
    yc=centerTruck.y
    zc=centerTruck.z
    p1=geom.Pos3d(xc-lejesCarr,yc-lruedCarr/2.0,zc)
    p2=geom.Pos3d(xc-lejesCarr,yc+lruedCarr/2.0,zc)
    p3=geom.Pos3d(xc,yc-lruedCarr/2.0,zc)
    p4=geom.Pos3d(xc,yc+lruedCarr/2.0,zc)
    p5=geom.Pos3d(xc+lejesCarr,yc-lruedCarr/2.0,zc)
    p6=geom.Pos3d(xc+lejesCarr,yc+lruedCarr/2.0,zc)
    nodLst=sets.get_lstNod_from_lst3DPos(preprocessor=prep,lst3DPos=[p1,p2,p3,p4,p5,p6])
    return nodLst
centTr=geom.Pos3d(xList[0]+(xList[-1]-xList[0])/2.0,yList[0]+(yList[-1]-yList[0])/2.0,zList[0])
qp_carr=loads.NodalLoad(name='qp_carr',lstNod=trafficPointLoads(centTr),loadVector=xc.Vector([0,0,-qpCarr,0,0,0]))


# Earth pressure applied to shell or beam elements
#     Attributes:
#     name:       name identifying the load
#     xcSet:      set that contains the elements to be loaded
#     EarthPressureModel: instance of the class EarthPressureModel, with 
#                 the following attributes:
#                   K:Coefficient of pressure
#                   zGround:global Z coordinate of ground level
#                   gammaSoil: weight density of soil 
#                   zWater: global Z coordinate of groundwater level 
#                   (if zGroundwater<minimum z of model => there is no groundwater)
#                   gammaWater: weight density of water
materiales = preprocessor.getMaterialHandler
secHA = materiales.newMaterial("fiber_section_3d", "secHA")
fiberSectionRepr = secHA.getFiberSectionRepr()
fiberSectionRepr.setGeomNamed("geomSecHA")
secHA.setupFibers()
fibras = secHA.getFibers()

param = xc.InteractionDiagramParameters()
param.concreteTag = EHE_materials.HA25.matTagD
param.reinforcementTag = EHE_materials.B500S.matTagD
diagIntsecHA = materiales.calcInteractionDiagram("secHA", param)

diagIntsecHA.writeTo("/tmp/interaction_diagram_test_02.dat"
                     )  # Used in test_interaction_diagram04
FCs = []
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(2185.5e3, 0, 0)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(1595.8e3, 0, 186.5e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(1006.2e3, 0, 380.2e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(416.6e3, 0, 565.9e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-173e3, 0, 739.3e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-762.6e3, 0, 870.8e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-1352.2e3, 0, 962.2e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-1941.9e3, 0, 1004.1e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-2531.5e3, 0, 1021.9e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-3121.1e3, 0, 950.7e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-3710.7e3, 0, 872.1e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-4300.3e3, 0, 782.8e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-4889.9e3, 0, 678.1e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-5479.6e3, 0, 551.8e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-6069.2e3, 0, 394.6e3)))
FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-6658.8e3, 0, 230.7e3)))
Example #21
0
m = b * h * dens

NumDiv = 10

# Problem type
feProblem = xc.FEProblem()
preprocessor = feProblem.getPreprocessor
nodes = preprocessor.getNodeLoader

modelSpace = predefined_spaces.StructuralMechanics3D(nodes)
# Define materials
elast = typical_materials.defElasticMembranePlateSection(
    preprocessor, "elast", EMat, nuMat, espChapa * dens, espChapa)

points = preprocessor.getCad.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.getCad.getSurfaces
surfaces.defaultTag = 1
s = surfaces.newQuadSurfacePts(1, 2, 3, 4)
s.nDivI = 1
s.nDivJ = NumDiv

nodes.newSeedNode()

seedElemLoader = preprocessor.getElementLoader.seedElemLoader
seedElemLoader.defaultMaterial = "elast"
seedElemLoader.defaultTag = 1
elem = seedElemLoader.newElement("ShellMITC4", xc.ID([0, 0, 0, 0]))
Example #22
0
            pos = nodPos[i]
            qx.append(pos.x)
            qy.append(pos.y)
        plg.append((qx, qy))

    plt.figure()
    for p in plg:
        xs = p[0]
        ys = p[1]
        #plt.scatter(xs, ys)
        plt.fill(xs, ys)
    plt.axis('equal')
    plt.show()


p1 = geom.Pos3d(-1.595, -1.4046, 0)
p2 = geom.Pos3d(-1.4376, -0.7453, 0)
p3 = geom.Pos3d(-1.529, -0.7047, 0)
p4 = geom.Pos3d(-1.595, -0.7527, 0)
corners = [p1, p2, p3, p4]
#corners= [geom.Pos3d(-1.5950,-1.333,0), geom.Pos3d(-1.5779,-1.333,0), geom.Pos3d(-1.4376,-0.7453,0), geom.Pos3d(-1.529,-0.7047,0), geom.Pos3d(-1.595,-0.7527,0)]

bolts = list()

boltDiameter = 0.016
bolts.append(
    ASTM_materials.BoltFastener(diameter=boltDiameter,
                                pos3d=geom.Pos3d(-1.4909, -0.8037, 0.0)))
bolts.append(
    ASTM_materials.BoltFastener(diameter=boltDiameter,
                                pos3d=geom.Pos3d(-1.4706, -0.7580, 0.0)))
Example #23
0
# http://www.pfsteco.com/techtips/pdf/tt_plywooddesigncapacities
structuralPanelGeom= AWCNDS_materials.PlywoodPanelSection('TECO 32/16', b=1.0, h= 0.594*0.0254, shear_constant= 3)
plywood= typical_materials.MaterialData(name='TECO 32/16',E=4161501119.15,nu=0.2,rho=500)
section= structuralPanelGeom.defElasticShearSection2d(preprocessor,plywood)
EI= section.sectionProperties.EI()
EIRef= 126500*4.44822*(0.0254)**2/0.3048

ratio0= abs((EI-EIRef)/EIRef)

thickness= structuralPanelGeom.h

deflectionSpan= (32-1.5+0.25)*0.0254
internalForcesSpan= 32*0.0254 # 32
span= internalForcesSpan 
pointHandler= preprocessor.getMultiBlockTopology.getPoints
pt1= pointHandler.newPntFromPos3d(geom.Pos3d(0.0,0.0,0.0))
pt2= pointHandler.newPntFromPos3d(geom.Pos3d(span,0.0,0.0))
pt3= pointHandler.newPntFromPos3d(geom.Pos3d(2.0*span,0.0,0.0))
pt4= pointHandler.newPntFromPos3d(geom.Pos3d(3.0*span,0.0,0.0))

lines= preprocessor.getMultiBlockTopology.getLines
l1= lines.newLine(pt1.tag,pt2.tag)
l2= lines.newLine(pt2.tag,pt3.tag)
l3= lines.newLine(pt3.tag,pt4.tag)

infSet= preprocessor.getSets.defSet("inf")
infSet.getLines.append(l1)
infSet.getLines.append(l2)
infSet.getLines.append(l3)

# Mesh
nodes= preprocessor.getNodeHandler

#Materials
## Steel material
steel= ASTM_materials.A992
steel.gammaM= 1.00
## Profile geometry
shape= ASTM_materials.WShape(steel,'W14X48')
xcSection= shape.defElasticShearSection3d(preprocessor)

# Model geometry

## Points.
height= 8.53
pointHandler= preprocessor.getMultiBlockTopology.getPoints
p0= pointHandler.newPntFromPos3d(geom.Pos3d(0.0,0.0,0.0))
p1= pointHandler.newPntFromPos3d(geom.Pos3d(0.0,0.0,height))

## Lines
lineHandler= preprocessor.getMultiBlockTopology.getLines
l1= lineHandler.newLine(p0.tag,p1.tag)
l1.nDiv= 6

# Mesh
modelSpace= predefined_spaces.StructuralMechanics3D(nodes)

## Geometric transformations
cooTrf= modelSpace.newPDeltaCrdTransf("pd",xc.Vector([1,0,0]))    

seedElemHandler= preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial= xcSection.name
Example #25
0
# -*- coding: utf-8 -*-
'''Home cooked test.'''

from __future__ import division
from __future__ import print_function

__author__ = "Luis C. Pérez Tato (LCPT) and Ana Ortega (AOO)"
__copyright__ = "Copyright 2015, LCPT and AOO"
__license__ = "GPL"
__version__ = "3.0"
__email__ = "*****@*****.**"

import xc_base
import geom

vPoint = geom.Pos3d(0, 0, 100)
L = 10
skew = 0.999
p1 = geom.Pos3d(L, 0, 0)
p2 = geom.Pos3d(2 * L, 0, skew * L)
p3 = geom.Pos3d(2 * L, L, skew * L)
p4 = geom.Pos3d(L, L, 0)
skew = 1.001
p11 = geom.Pos3d(L, 0, 0)
p12 = geom.Pos3d(2 * L, 0, skew * L)
p13 = geom.Pos3d(2 * L, L, skew * L)
p14 = geom.Pos3d(L, L, 0)

plgA = geom.Polygon3d([p1, p2, p3, p4])
plgAK = plgA.getKVector()
plgAOrientation = plgA.orientation(vPoint)
Example #26
0
    n = nodes.newNodeXYZ(i, 0, 0)

# Materials definition
elast = typical_materials.defElasticMaterial(preprocessor, "elast", 2.1e6)

elements = preprocessor.getElementHandler
elements.defaultMaterial = "elast"
elements.dimElem = 2  # Dimension of element space
elements.defaultTag = 1  #Tag for the next element.
for i in range(1, numElements):
    truss = elements.newElement("Truss", xc.ID([i, i + 1]))
    truss.area = 1

mesh = feProblem.getDomain.getMesh
# print "creados ",nnod," nodes.\n"
start_time = time.time()
tg = mesh.getNearestElement(geom.Pos3d(50.51, 0, 0)).tag
lapso = time.time() - start_time
''' 
print "element tag: ",tg
print "lapse: ",lapse
   '''

import os
from miscUtils import LogMessages as lmsg
fname = os.path.basename(__file__)
if ((tg == 50)):
    print "test ", fname, ": ok."
else:
    lmsg.error(fname + ' ERROR.')
Example #27
0


# Geometric transformation(s)
lin= modelSpace.newLinearCrdTransf("lin",xc.Vector([0,0,1]))
# Seed element definition
seedElemHandler= preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial= scc.name
seedElemHandler.defaultTransformation= lin.name
seedElemHandler.defaultTag= 1 #Tag for the next element.
beam3d= seedElemHandler.newElement("ElasticBeam3d",xc.ID([0,0]))
beam3d.rho= m


points= preprocessor.getMultiBlockTopology.getPoints
pt1= points.newPntIDPos3d(1,geom.Pos3d(0.0,0.0,0.0))
pt2= points.newPntIDPos3d(2,geom.Pos3d(L*math.cos(theta),L*math.sin(theta),0.0))
lines= preprocessor.getMultiBlockTopology.getLines
lines.defaultTag= 1
l= lines.newLine(1,2)
l.nDiv= NumDiv


setTotal= preprocessor.getSets.getSet("total")
setTotal.genMesh(xc.meshDir.I)

tagN1= pt1.getNode().tag
tagN2= pt2.getNode().tag

# Constraints
constraints= preprocessor.getBoundaryCondHandler
Example #28
0
# -*- coding: utf-8 -*-
from __future__ import print_function
import xc_base
import geom
svd1 = geom.SlidingVectorsSystem3d()
ptoAplic = geom.Pos3d(1, 1, 0)
vectorDir = geom.Vector3d(0, 0, 1)
vec = geom.SlidingVector3d(ptoAplic, vectorDir)
svd1 += vec
ptoAplic = geom.Pos3d(-1, 1, 0)
vec = geom.SlidingVector3d(ptoAplic, vectorDir)
svd1 += vec
ptoAplic = geom.Pos3d(-1, -1, 0)
vec = geom.SlidingVector3d(ptoAplic, vectorDir)
svd1 += vec
ptoAplic = geom.Pos3d(1, -1, 0)
vec = geom.SlidingVector3d(ptoAplic, vectorDir)
svd1 += vec

Res = svd1.getResultant()
Mom = svd1.getMoment()

#It seems there is a bug in svd.getResultant() it returns a SlidingVectorsSystem3d instead of a Vector3d.
#print('type<Res>= ', type(Res))
#print('Res= ', Res)

import os
fname = os.path.basename(__file__)
if Res.x == 0 and Res.y == 0 and Res.z == 4 and Mom.x == 0 and Mom.y == 0 and Mom.z == 0:
    print("test ", fname, ": ok.")
else:
Example #29
0
                                           Mass)
''' We define nodes at the points where loads will be applied.
    We will not compute stresses so we can use an arbitrary
    cross section of unit area.'''

# Seed element definition
seedElemHandler = preprocessor.getElementHandler.seedElemHandler
seedElemHandler.defaultMaterial = cable.name
seedElemHandler.dimElem = 2  # Dimension of element space
seedElemHandler.defaultTag = 1  #Tag for the next element.
truss = seedElemHandler.newElement("CorotTruss", xc.ID([0, 0]))
truss.sectionArea = area
# seed element definition ends

points = preprocessor.getMultiBlockTopology.getPoints
pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0))
pt = points.newPntIDPos3d(2, geom.Pos3d(l, 0.0, 0.0))
lines = preprocessor.getMultiBlockTopology.getLines
lines.defaultTag = 1
l = lines.newLine(1, 2)
l.nDiv = NumDiv

l1 = preprocessor.getSets.getSet("l1")
l1.genMesh(xc.meshDir.I)

# Constraints
predefined_spaces.ConstraintsForLineExtremeNodes(l1, modelSpace.fixNode000)
predefined_spaces.ConstraintsForLineInteriorNodes(l1, modelSpace.fixNodeFF0)

Nstep = 10  #  apply load in 10 steps
DInc = 1. / Nstep  #  first load increment
Example #30
0
import xc_base
import geom
import xc

__author__= "Luis C. Pérez Tato (LCPT)"
__copyright__= "Copyright 2014, LCPT"
__license__= "GPL"
__version__= "3.0"
__email__= "*****@*****.**"

feProblem= xc.FEProblem()
preprocessor=  feProblem.getPreprocessor
# Definimos geometria

points= preprocessor.getMultiBlockTopology.getPoints
pt1= points.newPntIDPos3d(1, geom.Pos3d(0.0,0.0,5.0) )
pt2= points.newPntIDPos3d(2, geom.Pos3d(0.0,0.0,10.0) )
pt3= points.newPntIDPos3d(3, geom.Pos3d(5.0,0.0,10.0) )
pt4= points.newPntIDPos3d(4, geom.Pos3d(0.0,5.0,10.0) )

lines= preprocessor.getMultiBlockTopology.getLines
l1= lines.newLine(1,2)
l2= lines.newLine(1,3)
l3= lines.newLine(1,4)
l4= lines.newLine(2,4)
l5= lines.newLine(2,3)
l6= lines.newLine(4,3)

fName= "/tmp/dibuja_edges.tiff"
import os
pth= os.path.dirname(__file__)