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