Esempio n. 1
0
def getMomentCurvatureDiagram3D(preprocessor, nmbSecc, esfAxil, maxK, numIncr):
    ''' Return the points of the moment curvature diagram of the section.

  :param nmbSecc: Section name.
  :param esfAxil: Axial force over the section.
  :param maxK: Maximum curvature to reach in the analysis.
  :param numIncr: Number of increments.
  '''
    nodes = preprocessor.getNodeHandler

    modelSpace = predefined_spaces.StructuralMechanics3D(nodes)
    nod1 = nodes.newNodeIDXYZ(1001, 1, 0, 0)

    nod2 = nodes.newNodeIDXYZ(1002, 1, 0, 0)
    elementos = preprocessor.getElementHandler
    elementos.defaultMaterial = nmbSecc
    elementos.defaultTag = 2001  #Tag for the next element.
    zls = elementos.newElement("ZeroLengthSection", xc.ID([nod1.tag,
                                                           nod2.tag]))

    modelSpace.fixNode000_000(nod1.tag)
    modelSpace.constraints.newSPConstraint(nod2.tag, 1, 0.0)
    modelSpace.constraints.newSPConstraint(nod2.tag, 2, 0.0)

    cargas = preprocessor.getLoadHandler
    casos = cargas.getLoadPatterns
    #Load modulation.
    ts = casos.newTimeSeries("constant_ts", "ts")
    casos.currentTimeSeries = "ts"
    lp0 = casos.newLoadPattern("default", "0")
    lp0.newNodalLoad(nod2.tag, xc.Vector([esfAxil, 0, 0, 0, 0, 0]))
    #We add the load case to domain.
    casos.addToDomain("0")

    analysis = predefined_solutions.simple_newton_raphson(prueba)
    analOk = analysis.analyze(1)

    lp1 = casos.newLoadPattern("default", "1")
    lp1.newNodalLoad(nod2.tag, xc.Vector([0, 0, 0, 0, 0, 0, 1]))

    # Compute curvature increment.
    dK = maxK / numIncr
    soluMethods = prb.getSolProc.getAnalysisAggregationContainer
    analysisAggregation = getAnalysisAggregation("analysisAggregation")
    integ = analysisAggregation.newIntegrator(
        "displacement_control_integrator")
Esempio n. 2
0
def getDiagMomentoCurvatura3d(preprocessor, nmbSecc, esfAxil, maxK, numIncr):
  ''' Función que devuelve los puntos del diagrama momento curvatura de una sección.

  :param nmbSecc: Nombre de la sección a analizar.
  :param esfAxil: Esfuerzo axil que actúa sobre la sección.
  :param maxK: Curvatura máxima alcanzada durante el análisis.
  :param numIncr: Número de incrementos en que se divide el intervalo 0->maxK.
  '''
  nodes= preprocessor.getNodeLoader

  modelSpace= predefined_spaces.StructuralMechanics3D(nodes)
  nodes.newNodeIDXYZ(1001,1,0,0)

  nodes.newNodeIDXYZ(1002,1,0,0)
  elementos= preprocessor.getElementLoader
  elementos.defaultMaterial= nmbSecc
  elementos.defaultTag= 2001 #Tag for the next element.
  zls= elementos.newElement("zero_length_section",xc.ID([1001,1002]));

  coacciones= preprocessor.getConstraintLoader
  fix_node_6dof.fixNode6DOF(coacciones,1001)
  coacciones.newSPConstraint(1002,1,0.0)
  coacciones.newSPConstraint(1002,2,0.0)

  cargas= preprocessor.getLoadLoader
  casos= cargas.getLoadPatterns
  #Load modulation.
  ts= casos.newTimeSeries("constant_ts","ts")
  casos.currentTimeSeries= "ts"
  lp0= casos.newLoadPattern("default","0")
  lp0.newNodalLoad(1002,xc.Vector([esfAxil,0,0,0,0,0]))
  #We add the load case to domain.
  casos.addToDomain("0")

  analisis= predefined_solutions.simple_newton_raphson(prueba)
  analOk= analisis.analyze(1)

  lp1= casos.newLoadPattern("default","1")
  lp1.newNodalLoad(1002,xc.Vector([0,0,0,0,0,0,1]))

  # Calculamos el incremento de curvatura
  dK= maxK/numIncr
  soluMethods= prb.getSolProc.getSoluMethodContainer
  smt= getSoluMethod("smt")
  integ= smt.newIntegrator("displacement_control_integrator")
Esempio n. 3
0
def getMomentCurvatureDiagram3D(preprocessor, nmbSecc, esfAxil, maxK, numIncr):
  ''' Return the points of the moment curvature diagram of the section.

  :param nmbSecc: Section name.
  :param esfAxil: Axial force over the section.
  :param maxK: Maximum curvature to reach in the analysis.
  :param numIncr: Number of increments.
  '''
  nodes= preprocessor.getNodeHandler

  modelSpace= predefined_spaces.StructuralMechanics3D(nodes)
  nod1= nodes.newNodeIDXYZ(1001,1,0,0)

  nod2= nodes.newNodeIDXYZ(1002,1,0,0)
  elementos= preprocessor.getElementHandler
  elementos.defaultMaterial= nmbSecc
  elementos.defaultTag= 2001 #Tag for the next element.
  zls= elementos.newElement("ZeroLengthSection",xc.ID([nod1.tag,nod2.tag]))

  modelSpace.fixNode000_000(nod1.tag)
  modelSpace.constraints.newSPConstraint(nod2.tag,1,0.0)
  modelSpace.constraints.newSPConstraint(nod2.tag,2,0.0)

  cargas= preprocessor.getLoadHandler
  casos= cargas.getLoadPatterns
  #Load modulation.
  ts= casos.newTimeSeries("constant_ts","ts")
  casos.currentTimeSeries= "ts"
  lp0= casos.newLoadPattern("default","0")
  lp0.newNodalLoad(nod2.tag,xc.Vector([esfAxil,0,0,0,0,0]))
  #We add the load case to domain.
  casos.addToDomain("0")

  analysis= predefined_solutions.simple_newton_raphson(prueba)
  analOk= analysis.analyze(1)

  lp1= casos.newLoadPattern("default","1")
  lp1.newNodalLoad(nod2.tag,xc.Vector([0,0,0,0,0,0,1]))

  # Compute curvature increment.
  dK= maxK/numIncr
  soluMethods= prb.getSolProc.getAnalysisAggregationContainer
  analysisAggregation= getAnalysisAggregation("analysisAggregation")
  integ= analysisAggregation.newIntegrator("displacement_control_integrator")
Esempio n. 4
0
loadHandler = preprocessor.getLoadHandler

lPatterns = loadHandler.getLoadPatterns

#Load modulation.
ts = lPatterns.newTimeSeries("constant_ts", "ts")
lPatterns.currentTimeSeries = "ts"
#Load case definition
lp0 = lPatterns.newLoadPattern("default", "0")
lp0.newNodalLoad(2, xc.Vector([0, 0, 0, 0, 0, MzDato]))

#We add the load case to domain.
lPatterns.addToDomain("0")

# Solution procedure
analisis = predefined_solutions.simple_newton_raphson(feProblem)
analOk = analisis.analyze(1)

nodes = preprocessor.getNodeHandler
nodes.calculateNodalReactions(True, 1e-7)

RN = nodes.getNode(1).getReaction[0]
RM = nodes.getNode(1).getReaction[5]
RN2 = nodes.getNode(2).getReaction[0]

elements = preprocessor.getElementHandler
ele1 = elements.getElement(1)
scc = ele1.getSection()
esfN = scc.getFibers().getResultant()
esfMy = scc.getFibers().getMy(0.0)
esfMz = scc.getFibers().getMz(0.0)
Esempio n. 5
0
cargas = preprocessor.getLoadLoader

casos = cargas.getLoadPatterns

#Load modulation.
ts = casos.newTimeSeries("constant_ts", "ts")
casos.currentTimeSeries = "ts"
#Load case definition
lp0 = casos.newLoadPattern("default", "0")
lp0.newNodalLoad(2, xc.Vector([NDato, 0, 0, 0, MyDato, MzDato]))

#We add the load case to domain.
casos.addToDomain("0")

# Procedimiento de solución
analisis = predefined_solutions.simple_newton_raphson(prueba)
analOk = analisis.analyze(10)

secHAParamsFis = fisuracionEHE.CrackControl('SLS_crack')

elementos = preprocessor.getElementLoader
ele1 = elementos.getElement(1)
scc = ele1.getSection()
secHAParamsFis.calcApertCaracFis(scc, EHE_concrete.HA25.matTagK,
                                 EHE_reinforcing_steel.B400S.matTagK,
                                 EHE_concrete.HA25.fctm())

ratio1 = ((secHAParamsFis.rebarsSpacingTracc - 0.15) / 0.15)
WkTeor = 0.26e-3
ratio2 = ((secHAParamsFis.Wk - WkTeor) / WkTeor)
'''
Esempio n. 6
0
lp0= lPatterns.newLoadPattern("default","0")
#lPatterns.currentLoadPattern= "0"
loadN= -1
loadVy= -2
loadVz= -3
loadMx= -4
loadMy= -5
loadMz= -6
lp0.newNodalLoad(2,xc.Vector([loadN,loadVy,loadVz,loadMx,loadMy,loadMz]))

#We add the load case to domain.
lPatterns.addToDomain("0")


# Solution procedure
analisis= predefined_solutions.simple_newton_raphson(feProblem)
analOk= analisis.analyze(1)
if(analOk!=0):
  print "Error!; failed to converge."
  exit()

nodes= preprocessor.getNodeHandler
nodes.calculateNodalReactions(True,1e-7)

n1= nodes.getNode(1)
reacN1= n1.getReaction

elements= preprocessor.getElementHandler
ele1= elements.getElement(1)
scc= ele1.getSection()
N= scc.getStressResultantComponent("N")