本文整理汇总了Python中pyNastran.bdf.bdf.BDF.mass_properties方法的典型用法代码示例。如果您正苦于以下问题:Python BDF.mass_properties方法的具体用法?Python BDF.mass_properties怎么用?Python BDF.mass_properties使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyNastran.bdf.bdf.BDF
的用法示例。
在下文中一共展示了BDF.mass_properties方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_mass_solid_1
# 需要导入模块: from pyNastran.bdf.bdf import BDF [as 别名]
# 或者: from pyNastran.bdf.bdf.BDF import mass_properties [as 别名]
def test_mass_solid_1(self): # passes
model = BDF(debug=False, log=None)
bdfname = os.path.join(testpath, 'test_mass.dat')
model.read_bdf(bdfname, xref=True)
# hexa - psolid - nsm = 0
hexa = model.elements[7]
mass = 0.2
volume = 2. # l * w * h = 1 * 1 * 2
rho = 0.1
E = 1.0
G = 2.0
nu = 3.0
centroid = np.array([0.5, 0.5, 1.0])
self.verify_psolid_element(hexa, mass, volume, centroid, rho, E, G, nu)
# tetra - psolid
tetra = model.elements[8]
mass = 1/30.
volume = 1/3. # 1/3 * b * h = 1/3 * 0.5 * 2.0
rho = 0.1
E = 1.0
G = 2.0
nu = 3.0
centroid = np.array([0.5, 0.25, 0.5])
self.verify_psolid_element(tetra, mass, volume, centroid, rho, E, G, nu)
# penta - psolid
penta = model.elements[9]
mass = 0.1
volume = 1.0 # b * h = 0.5 * 2
rho = 0.1
E = 1.0
G = 2.0
nu = 3.0
centroid = np.array([2/3., 1/3., 1.])
self.verify_psolid_element(penta, mass, volume, centroid, rho, E, G, nu)
#wtmass = 0.00259
mass, cg, I = model.mass_properties(element_ids=None, mass_ids=None,
reference_point=None,
sym_axis=None,
num_cpus=1,
scale=None)
model.params['WTMASS'].values[0] = 1.0
mass2, cg, I = model.mass_properties(element_ids=None, mass_ids=None,
reference_point=None,
sym_axis=None,
num_cpus=1,
scale=None)
assert np.allclose(mass, 0.005311658333), 'mass=%s' % mass
assert np.allclose(mass2, 2.050833333), 'mass2=%s' % mass2
示例2: test_beam_mass_01
# 需要导入模块: from pyNastran.bdf.bdf import BDF [as 别名]
# 或者: from pyNastran.bdf.bdf.BDF import mass_properties [as 别名]
def test_beam_mass_01(self):
model = BDF(debug=False)
#model.case_control_deck = CaseControlDeck(case_control_lines)
spc = ['SPC1', 123456, 123456, 1]
grid1 = ['GRID', 1, None, 0., 0., 0.]
grid2 = ['GRID', 2, None, 1., 0., 0.]
grid3 = ['GRID', 3, None, 1., 0., 0.]
force = ['FORCE', 100, 1, 0, 2., 3., 4.]
cbeam = [
'CBEAM', 10, 11, 1, 2, 0., 1., 0., None,
]
nsm_offset_a = [0., 0., 0.]
nsm_offset_b = [0., 50., 0.]
k1 = k2 = None
area1 = 2.0
area2 = 1.0
rho = 3.
nsm_a = 0.
nsm_b = 0.
nu = 0.3
pbeam = ([
'PBEAM', 11, 12,
area1, 2.1, 1.2, 1.3, None, nsm_a,
None, None, None, None, None, None, None, None,
'YES', 1.0, area2, 2.1, 1.2, 1.3, None, nsm_b,
None, None, None, None, None, None, None, None,
k1, k2, None, None, 100., 100., None, None] + # 100s are the NSIa, NSIb (moment of inertia per unit length)
nsm_offset_a + nsm_offset_b + [None, None, None, None]) # Nones are neutral axis offset
#print('\n' + print_card_8(pbeam))
mat1 = ['MAT1', 12, 3.0e7, None, nu, rho]
model.add_card(grid1, 'GRID')
model.add_card(grid2, 'GRID')
#model.add_card(grid3, 'GRID')
model.add_card(cbeam, 'CBEAM')
model.add_card(pbeam, 'PBEAM')
model.add_card(mat1, 'MAT1')
model.add_card(spc, 'SPC1')
model.add_card(force, 'FORCE')
model.cross_reference()
#print(model.properties[11])
mass, cg, I = model.mass_properties(
element_ids=None, mass_ids=None,
reference_point=None,
sym_axis=None,
num_cpus=1,
scale=None)
#print('cg* =', cg)
L = 1.0
area = (area1 + area2) / 2.
nsm = (nsm_a + nsm_b) / 2.
mass_per_length = area * rho + nsm
mass = L * mass_per_length
mass_a = L / 2. * (area1 * rho + nsm_a)
mass_b = L / 2. * (area2 * rho + nsm_b)
xcg = (0.0 * mass_a + 1.0 * mass_b) / (mass_a + mass_b)
#print(mass_a, mass_b, xcg, mass_a + mass_b)
#print('mass =', mass)
#cbeam = CBEAM()
cbeam = model.elements[10]
pbeam = model.properties[11]
assert pbeam.Nu() == nu, 'pbeam.Nu()=%s nu=%s' % (pbeam.Nu(), nu)
assert pbeam.Rho() == rho, 'pbeam.Rho()=%s rho=%s' % (pbeam.Rho(), rho)
assert allclose(cbeam.Length(), 1.0), cbeam.Length()
#assert allclose(cbeam.Mass(), 10.25), cbeam.Mass()
#assert allclose(cbeam.MassPerLength(), 10.25), cbeam.MassPerLength()
#assert allclose(mass, 10.25), mass
f = open('pbeam12.bdf', 'w')
case_control_lines = (
'SOL 101\n'
'CEND\n'
'SUBCASE 1\n'
' STRESS(PLOT,SORT1,REAL) = ALL\n'
' SPC = 123456\n'
' LOAD = 100\n'
'BEGIN BULK\n'
'PARAM,GRDPNT,0\n'
'PARAM,POST,-1\n'
'PARAM POSTEXT YES\n'
)
f.write(case_control_lines)
model.write_bdf(f, enddata=True)
f.close()
model2 = BDF()
model2.read_bdf('pbeam12.bdf')
import os
if not os.path.exists('pbeam12.op2') and 0:
os.system('nastran scr=yes bat=no old=no pbeam12.bdf')
os.remove('pbeam12.bdf')
if 0:
from pyNastran.op2.op2 import OP2
op2 = OP2()
op2.read_op2('pbeam12.op2')
#os.remove('pbeam12.op2')
#.........这里部分代码省略.........
示例3: test_bar_mass_01
# 需要导入模块: from pyNastran.bdf.bdf import BDF [as 别名]
# 或者: from pyNastran.bdf.bdf.BDF import mass_properties [as 别名]
def test_bar_mass_01(self):
model = BDF(debug=False)
#model.case_control_deck = CaseControlDeck(case_control_lines)
spc = ['SPC1', 123456, 123456, 1]
grid1 = ['GRID', 1, None, 0., 0., 0.]
grid2 = ['GRID', 2, None, 1., 0., 0.]
grid3 = ['GRID', 3, None, 1., 0., 0.]
force = ['FORCE', 100, 1, 0, 2., 3., 4.]
cbar = [
'CAR', 10, 11, 1, 2, 0., 1., 0., None,
]
k1 = k2 = None
area = 2.0
rho = 3.
nu = 0.3
i1 = 2.1
i2 = 1.2
i12 = 0.1
j = None
nsm = 0.1
pbar = [
'PBAR', 11, 12, area, i1, i2, j, nsm,
None, None, None, None, None, None, None, None,
k1, k2, i12
]
mat1 = ['MAT1', 12, 3.0e7, None, nu, rho]
model.add_card(grid1, 'GRID')
model.add_card(grid2, 'GRID')
model.add_card(cbar, 'CBAR')
model.add_card(pbar, 'PBAR')
model.add_card(mat1, 'MAT1')
model.add_card(spc, 'SPC1')
model.add_card(force, 'FORCE')
model.cross_reference()
mass, cg, I = model.mass_properties(
element_ids=None, mass_ids=None,
reference_point=None,
sym_axis=None,
num_cpus=1,
scale=None)
#print('cg* =', cg)
L = 1.0
mass_per_length = area * rho + nsm
mass = L * mass_per_length
#xcg = (0.0 * mass_a + 1.0 * mass_b) / (mass_a + mass_b)
#print(mass_a, mass_b, xcg, mass_a + mass_b)
#print('mass =', mass)
#cbar = CBEAM()
cbar = model.elements[10]
pbar = model.properties[11]
assert pbar.Nu() == nu, 'pbar.Nu()=%s nu=%s' % (pbar.Nu(), nu)
assert pbar.Rho() == rho, 'pbar.Rho()=%s rho=%s' % (pbar.Rho(), rho)
assert allclose(cbar.Length(), 1.0), cbar.Length()
#assert allclose(cbar.Mass(), 10.25), cbar.Mass()
#assert allclose(cbar.MassPerLength(), 10.25), cbar.MassPerLength()
#assert allclose(mass, 10.25), mass
case_control_lines = (
'SOL 101\n'
'CEND\n'
'SUBCASE 1\n'
' STRESS(PLOT,SORT1,REAL) = ALL\n'
' SPC = 123456\n'
' LOAD = 100\n'
'BEGIN BULK\n'
'PARAM,GRDPNT,0\n'
'PARAM,POST,-1\n'
'PARAM POSTEXT YES\n'
)
with open('cbar.bdf', 'w') as bdf_file:
bdf_file.write(case_control_lines)
model.write_bdf(bdf_file, enddata=True)
model2 = BDF(debug=False)
model2.read_bdf('cbar.bdf')
model2._verify_bdf(xref=True)
if not os.path.exists('cbar.op2') and 0:
os.system('nastran scr=yes bat=no old=no cbar.bdf')
os.remove('cbar.bdf')
if 0:
from pyNastran.op2.op2 import OP2
op2 = OP2()
op2.read_op2('cbar.op2')
#os.remove('cbar.op2')
gpw = op2.grid_point_weight
op2_mass = gpw.mass.max()
assert allclose(op2_mass, mass), 'op2_mass=%s mass=%s' % (op2_mass, mass)
#print('op2_mass=%s mass=%s' % (op2_mass, mass))
op2_cg = gpw.cg
cg = array([0.5, 0., 0.], dtype='float32')