Ejemplo n.º 1
0
nodSym = sets.get_set_nodes_plane_XZ(setName='nodSym',
                                     setBusq=tankwall,
                                     yCoord=0,
                                     tol=0.001)
for n in nodSym.nodes:
    modelSpace.fixNode('F0F_0F0', n.tag)

out.displayFEMesh()

#Wind action definition
windParams = bw.windParams(v, Kd, Kzt, I, alpha, zg)
tankWind = bw.cylindrWind(diam,
                          height,
                          windParams,
                          windComp,
                          zGround,
                          xCent=0,
                          yCent=0)

#elems=[e for e in tankwall.getElements]

#                       ***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=[tankwall_mesh],
                                vAccel=xc.Vector([0.0, 0.0, -grav]))

#Thermal expansion
## tangential
Ejemplo n.º 2
0
                              matSect=tank_mat,
                              elemSize=0.25,
                              elemType='ShellMITC4')
tank_mesh.generateMesh(prep)

# Boundary condition
nodBase = sets.get_set_nodes_plane_XY(setName='nodBase',
                                      setBusq=tank,
                                      zCoord=zBase,
                                      tol=0.001)
for n in nodBase.nodes:
    modelSpace.fixNode('000_FFF', n.tag)

# Loading
windParams = bw.windParams(v, Kd, Kzt, I, alpha, zg)
tankWind = bw.cylindrWind(2 * R, height, windParams, windComp, zGround, xCent,
                          yCent)

WX = lcases.LoadCase(preprocessor=prep,
                     name="WX",
                     loadPType="default",
                     timeSType="constant_ts")
WX.create()
for e in tank.elements:
    vCoo = e.getCooCentroid(0)
    pres = Gf * tankWind.getWindPress(vCoo[0], vCoo[1], vCoo[2])
    loadVector = xc.Vector([0, 0, -pres])
    e.vector3dUniformLoadLocal(loadVector)

modelSpace.removeAllLoadPatternsFromDomain()
modelSpace.addLoadCaseToDomain('WX')
modelSpace.analyze(calculateNodalReactions=True)
Ejemplo n.º 3
0
        4 * theta) - 0.05 * math.cos(5 * theta)
kc_90 = 1.0 - 0.55 * (Cp1_90 + 0.15) * math.log10(height / diam)
Cp_90 = Cp1_90 * kc_90

theta = math.radians(180)
Cp1_180 = -0.5 + 0.4 * math.cos(theta) + 0.8 * math.cos(
    2 * theta) + 0.3 * math.cos(3 * theta) - 0.1 * math.cos(
        4 * theta) - 0.05 * math.cos(5 * theta)
kc_180 = 1.0 - 0.55 * (Cp1_180 + 0.15) * math.log10(height / diam)
Cp_180 = Cp1_180 * kc_180
#    End data

R = diam / 2.

windParams = bw.windParams(v, Kd, Kzt, I, alpha, zg)
tank1Wind = bw.cylindrWind(diam, height, windParams, windComp1, zGround1,
                           xCent1, yCent1)
tank2Wind = bw.cylindrWind(diam, height, windParams, windComp2, zGround2,
                           xCent2, yCent2)

pr1_2_0 = tank1Wind.getWindPress(-R, 0, 2 + zGround1)
pr2_2_0 = tank2Wind.getWindPress(-R * math.cos(math.radians(45)),
                                 R * math.sin(math.radians(45)), 2 + zGround2)
pr_comp = qz_2 * Cp_0
ratio1 = pr1_2_0 - pr_comp
ratio2 = pr2_2_0 - pr_comp

pr1_2_45 = tank1Wind.getWindPress(-R * math.cos(math.radians(45)),
                                  R * math.sin(math.radians(45)), 2 + zGround1)
pr2_2_45 = tank2Wind.getWindPress(0, R, 2 + zGround2)
pr_comp = qz_2 * Cp_45
ratio3 = pr1_2_45 - pr_comp