Source code for pyNastran.bdf.test.test_case_control_deck

from six.moves import zip
import os
import unittest

import pyNastran
from pyNastran.bdf.bdf import BDF
from pyNastran.bdf.caseControlDeck import CaseControlDeck

pkg_path = pyNastran.__path__[0]
test_path = os.path.join(pkg_path, 'bdf', 'test')


[docs]class CaseControlTest(unittest.TestCase):
[docs] def test_case_control_01(self): lines = ['SPC=2', 'MPC =3', 'STRESS= ALL', 'DISPLACEMENT(PLOT,PUNCH) = 8', ] deck = CaseControlDeck(lines) deck.write_begin_bulk = False self.assertTrue(deck.has_parameter(0, 'SPC')) self.assertTrue(deck.has_parameter(0, 'sPC')) self.assertFalse(deck.has_parameter(0, 'JUNK')) #print("get_subcase_parameter(MPC) 3 = ", deck.get_subcase_parameter(0, 'MPC')) deck.add_parameter_to_global_subcase('GPFORCE = 7') deck.create_new_subcase(1) deck.create_new_subcase(2) deck.add_parameter_to_local_subcase(1, 'STRAIN = 7') out = deck.get_subcase_parameter(0, 'GPFORCE') deck.add_parameter_to_local_subcase(1, 'ANALYSIS = SAERO') deck.add_parameter_to_local_subcase(2, 'ANALYSIS = STATIC') out = deck.get_subcase_parameter(2, 'ANALYSIS') deck.add_parameter_to_local_subcase(1, 'SET 1 = 100') deck.add_parameter_to_local_subcase(1, 'SET 2 = 200') lines = ['DISPLACEMENT(PLOT,PUNCH) = 8', 'GPFORCE = 7', 'MPC = 3', 'SPC = 2', 'STRESS = ALL', 'SUBCASE 1', ' SET 1 = 100', ' SET 2 = 200', ' ANALYSIS = SAERO', ' STRAIN = 7', 'SUBCASE 2', ' ANALYSIS = STATIC',] deck_string = '%s' % deck deck_lines = deck_string.strip().splitlines() msg = '\n' + '\n'.join(deck_lines) self.assertEqual(lines, deck_lines, msg=msg)
[docs] def test_case_control_02(self): bdf_filename = os.path.join(test_path, 'unit', 'case_control.dat') bdf_filename2 = os.path.join(test_path, 'unit', 'case_control_out.dat') mesh = BDF(debug=False, log=None) mesh.read_bdf(bdf_filename, include_dir=None, xref=True) str(mesh.caseControlDeck) mesh.caseControlDeck.create_new_subcase(1) #with self.assertRaises(AssertionError): str(mesh.caseControlDeck) subcase1 = mesh.caseControlDeck.subcases[1] str(subcase1) mesh.caseControlDeck.add_parameter_to_local_subcase(1, 'LOAD=1') str(mesh.caseControlDeck) mesh.caseControlDeck.create_new_subcase(2) mesh.caseControlDeck.add_parameter_to_local_subcase(2, 'LOAD=2') mesh.write_bdf(bdf_filename2) #print("---cc 3---\n%s" % str(mesh.caseControlDeck)) f = open(bdf_filename2, 'r') lines = f.readlines() f.close() lines_expected = [ '$EXECUTIVE CONTROL DECK', 'SOL 101', 'CEND', '$CASE CONTROL DECK', 'TITLE = STATIC', 'SUBCASE 1', ' LOAD = 1', 'SUBCASE 2', ' LOAD = 2', 'BEGIN BULK', '$PARAMS', 'PARAM AUTOSPC YES', 'PARAM NOFISR 0', '$NODES', 'GRID 1 0. 0. 0.', 'ENDDATA', ] for line, line_expected in zip(lines, lines_expected): line = line.rstrip() msg = 'The lines are not the same...\n' msg += 'line = %r\n' % line msg += 'expected = %r' % line_expected self.assertEqual(line, line_expected, msg)
[docs] def test_case_control_03(self): lines = [ 'SUBCASE 1', ' ACCELERATION(PLOT,PRINT,PHASE) = ALL', ' DISPLACEMENT(PLOT,PRINT,PHASE) = ALL', ' DLOAD = 32', ' M2GG = 111', ' SET 88 = 5, 6, 7, 8, 9, 10 THRU 55 EXCEPT 15, 16, 77, 78, 79, ' '100 THRU 300', ' SET 99 = 1 THRU 10', ' SET 105 = 1.009, 10.2, 13.4, 14.0, 15.0', ' SET 111 = MAAX1,MAAX2', ' SET 1001 = 101/T1, 501/T3, 991/R3', ' SET = ALL', ' SPC = 42', ' TSTEPNL = 22', ' VELOCITY(PLOT,PRINT,PHASE) = ALL', 'BEGIN BULK', ] deck = CaseControlDeck(lines) deck.create_new_subcase(2) deck.add_parameter_to_local_subcase(2, 'SET 2 = 11,12,13,14,15,16,17,18,' '19,20,21,22,23,24,25,26,' '1000000000000000000000000000000000000000000000000000000,33') deck_msg = '%s' % deck #print('%r' % deck_lines) deck_lines = deck_msg.split('\n') lines_expected = [ 'SUBCASE 1', ' SET = ALL', ' SET 88 = 5, 6, 7, 8, 9, 10 THRU 55 EXCEPT 15, 16, 77, 78, 79,', ' 100 THRU 300', ' SET 99 = 1 THRU 10', ' SET 105 = 1.009, 10.2, 13.4, 14.0, 15.0', ' SET 111 = MAAX1, MAAX2', ' SET 1001 = 101/T1, 501/T3, 991/R3', ' ACCELERATION(PLOT,PRINT,PHASE) = ALL', ' DISPLACEMENT(PLOT,PRINT,PHASE) = ALL', ' DLOAD = 32', ' M2GG = 111', ' SPC = 42', ' TSTEPNL = 22', ' VELOCITY(PLOT,PRINT,PHASE) = ALL', 'SUBCASE 2', ' SET 2 = 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,', ' 25, 26,', ' 1000000000000000000000000000000000000000000000000000000,', ' 33', ] for line, line_expected in zip(deck_lines, lines_expected): line = line.rstrip() msg = 'The lines are not the same...\n' msg += 'line = %r\n' % line msg += 'expected = %r' % line_expected msg += '-------------\n--Actual--\n%s' % deck_msg msg += '-------------\n--Expected--\n%s' % '\n'.join(lines_expected) self.assertEqual(line, line_expected, msg)
#print('%s' % deck)
[docs] def test_case_control_04(self): lines_expected = [ 'ACCELERATION(PLOT,PRINT,PHASE) = ALL', 'DISPLACEMENT(PLOT,PRINT,PHASE) = ALL', 'BEGIN BULK', ] deck = CaseControlDeck(lines_expected) deck_msg = '%s' % deck deck_lines = deck_msg.split('\n') for line, line_expected in zip(deck_lines, lines_expected): line = line.rstrip() msg = 'The lines are not the same...\n' msg += 'line = %r\n' % line msg += 'expected = %r' % line_expected msg += '-------------\n--Actual--\n%s' % deck_msg msg += '-------------\n--Expected--\n%s' % '\n'.join(lines_expected) self.assertEqual(line, line_expected, msg)
#print('%s' % deck)
[docs] def test_case_control_05(self): lines = [ 'TITLE= VIBRATION OF A BEAM.', 'dsaprt=(end=sens)', 'ECHO = UNSORT', 'OLOAD = ALL', 'DISP = ALL', 'DESSUB = 2', 'METHOD = 1', 'ANALYSIS = MODES', 'DESOBJ = 1', 'SUBCASE 1', 'DESSUB = 1', ' SUPER 1', 'SUBCASE 2', 'BEGIN BULK', ] lines_expected = [ 'ANALYSIS = MODES', 'DESOBJ = 1', 'DESSUB = 2', 'DISPLACEMENT = ALL', 'ECHO = UNSORT', 'METHOD = 1', 'OLOAD = ALL', 'TITLE = VIBRATION OF A BEAM.', 'dsaprt=(end=sens)', 'SUBCASE 1', ' SUPER 1', ' DESSUB = 1', 'SUBCASE 2', ' ANALYSIS = MODES', ' DESOBJ = 1', ' DESSUB = 2', ' DISPLACEMENT = ALL', ' ECHO = UNSORT', ' METHOD = 1', ' OLOAD = ALL', ' TITLE = VIBRATION OF A BEAM.', ' dsaprt=(end=sens)', 'BEGIN BULK', ] deck = CaseControlDeck(lines) deck_msg = '%s' % deck #print('%s' % deck_msg) deck_lines = deck_msg.split('\n') #print "--------" #print deck_msg for line, line_expected in zip(deck_lines, lines_expected): line = line.rstrip() msg = 'The lines are not the same...\n' msg += 'line = %r\n' % line msg += 'expected = %r\n' % line_expected msg += '-------------\n--Actual--\n%s' % deck_msg msg += '-------------\n--Expected--\n%s' % '\n'.join(lines_expected) self.assertEqual(line, line_expected, msg)
if __name__ == '__main__': # pragma: no cover unittest.main()