def test_case_control_04(self): seti = 'SET 88 = 5, 6, 7, 8, 9, 10 THRU 55 EXCEPT 15, 16, 77, 78, 79, 100 THRU 300' lines = [] deck = CaseControlDeck(lines) deck.create_new_subcase(2) deck.add_parameter_to_local_subcase(2, seti) values, set_id = deck.get_subcase_parameter(2, 'SET 88') check = [ (7, True), (13, True), (15, False), (16, False), (55, True), (77, True), (99, False), (150, True), ] for value, exists in check: if exists: assert value in values, 'value=%s should be in values=%s' % ( value, values) else: assert value not in values, 'value=%s should NOT be in values=%s' % ( value, values) unused_msg = write_set(set_id, values) singles, doubles = collapse_thru_packs(values) assert singles == [77, 78, 79], singles assert doubles == [[5, 'THRU', 14], [17, 'THRU', 55], [100, 'THRU', 300]], doubles
def test_case_control_03(self): values = [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1000000000000000000000000000000000000000000000000000000, 33] spaces = ' ' set_id = 10 singles, doubles = collapse_thru_packs(values) assert singles == [33, 1000000000000000000000000000000000000000000000000000000], singles assert doubles == [[11, 'THRU', 26]], doubles unused_msg = write_set(set_id, values, spaces) set_id = 11 values = ['ALL'] unused_msg = write_set(set_id, values, spaces)
def write(self, spaces): """ writes SET 80 = 3926, 3927, 3928, 4141, 4142, 4143, 4356, 4357, 4358, 4571, 4572, 4573, 3323 THRU 3462, 3464 THRU 3603, 3605 THRU 3683, 3910 THRU 3921, 4125 THRU 4136, 4340 THRU 4351 """ return write_set(self.value, self.set_id, spaces=spaces)
def test_case_control_set(self): """tests adding SETs""" deck = CaseControlDeck([], log=None) subcase = deck.create_new_subcase(1) subcase.params['SET 42'] = [[1, 2, 3, 4, 5], 42, 'SET-type'] set_str = write_set(41, [1, 2, 3]).rstrip() set_str2 = set_str.split('=', 1)[1] assert set_str2 == ' 1, 2, 3', set_str2 subcase.add('SET 52', set_str2, 52, 'SET-type') subcase.add_set_from_values(100, [1, 2, 10])
def test_case_control_03(self): values = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1000000000000000000000000000000000000000000000000000000, 33] spaces = ' ' options = 10 singles, doubles = collapse_thru_packs(values) assert singles == [33, 1000000000000000000000000000000000000000000000000000000], singles assert doubles == [[11, 'THRU', 26]], doubles msg = write_set(values, options, spaces)
def print_param(self, key, param): """ Prints a single entry of the a subcase from the global or local subcase list. """ msg = '' #msg += 'id=%s ' %(self.id) (value, options, param_type) = param spaces = '' if self.id > 0: spaces = ' ' #print('key=%s param=%s param_type=%s' % (key, param, param_type)) if param_type == 'SUBCASE-type': if self.id > 0: msgi = 'SUBCASE %s\n' % (self.id) assert len(msgi) < 72, 'len(msg)=%s; msg=\n%s' % (len(msgi), msgi) msg += msgi #else: global subcase ID=0 and is not printed # pass elif param_type == 'KEY-type': #print (KEY-TYPE: %r" % value) assert value is not None, param if ',' in value: sline = value.split(',') two_spaces = ',\n' + 2 * spaces msgi = spaces + two_spaces.join(sline) + '\n' assert len(msgi) < 68, 'len(msg)=%s; msg=\n%s' % (len(msgi), msgi) msg += msgi else: msgi = spaces + '%s\n' % value #assert len(msgi) < 68, 'len(msg)=%s; msg=\n%s' % (len(msgi), msgi) msg += msgi elif param_type == 'STRING-type': msgi = spaces + '%s = %s\n' % (key, value) if key not in ['TITLE', 'LABEL', 'SUBTITLE']: assert len(msgi) < 68, 'len(msg)=%s; msg=\n%s' % (len(msgi), msgi) msg += msgi elif param_type == 'CSV-type': msgi = spaces + '%s,%s,%s\n' % (key, value, options) assert len(msgi) < 68, 'len(msg)=%s; msg=\n%s' % (len(msgi), msgi) msg += msgi elif param_type == 'STRESS-type': msg += write_stress_type(key, options, value, spaces) elif param_type == 'SET-type': #: .. todo:: collapse data...not written yet msg += write_set(options, value, spaces) elif param_type == 'OBJ-type': msg += value.write(spaces) else: # SET-type is not supported yet... msg = ( '\nkey=%r param=%r\n' 'allowed_params=[SET-type, STRESS-type, STRING-type, SUBCASE-type, KEY-type]\n' 'CSV-type -> PARAM,FIXEDB,-1\n' 'KEY-type -> ???\n' # the catch all 'SET-type -> SET 99 = 1234\n' 'SUBCASE-type -> ???\n' 'STRESS-type -> DISP(PLOT, SORT1)=ALL\n' ' STRESS(PLOT, SORT1)=ALL\n' 'STRING-type -> LABEL = A label\n' ' TITLE = A title\n' ' SUBTITLE = A subtitle\n' '' % (key, param)) raise NotImplementedError(msg) #print("msg = %r" % (msg)) return msg
def __repr__(self): """see `write`""" return write_set(self.value, self.set_id)