Example #1
0
 def test_filter_lines(self):
     file = open(join(runs_dir, self.test_avl_case+'.avl'))
     lines = filter_lines(file.readlines())
     f2 = open('filter_lines.avl', 'w')
     f2.write('\n'.join(lines))
     f2.close()
     file.close()
     file = open('filter_test.avl','w')
     file.write('\n'.join(lines))
     file.close()
Example #2
0
 def test_filter_lines(self):
     file = open(join(runs_dir, self.test_avl_case + '.avl'))
     lines = filter_lines(file.readlines())
     f2 = open('filter_lines.avl', 'w')
     f2.write('\n'.join(lines))
     f2.close()
     file.close()
     file = open('filter_test.avl', 'w')
     file.write('\n'.join(lines))
     file.close()
Example #3
0
 def mass_from_file(cls, filename):
     file = open(filename)
     lines = file.readlines()
     file.close()
     lines = filter_lines(lines)
     traits = {}
     for i,line in enumerate(lines):
         match = re.match(r'(?P<name>\S+?)\s*?=\s*?(?P<value>[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?)\s*?(?P<unit>\S+)?$', line)
         if match is not None:
             name = match.group('name').lower()
             if name[1:] == 'unit':
                 unit = match.group('unit')
                 unit = unit if unit is not None else ''
                 value = float(match.group('value'))
                 traits[name] = value, unit
             else:
                 value = float(match.group('value'))
                 traits[name] = value
         else:
             break
     multiplier = MassObject(mass=1.0, cg=numpy.ones(3), inertia_moment=numpy.ones(3), cross_inertia=numpy.ones(3))
     adder = MassObject(mass=0.0, cg=numpy.zeros(3), inertia_moment=numpy.zeros(3), cross_inertia=numpy.zeros(3))
     traits['objects'] = []
     for line in lines[i:]:
         vals = [float(num) for num in line.split()]
         cross_inertia = numpy.zeros(3)
         if len(vals) > 7:
             cross_inertia[:] = vals[7:]
         mass=vals[0]
         cg=vals[1:4]
         inertia_moment=vals[4:7]
         massobj = MassObject(mass=multiplier.mass*mass+adder.mass,
                              cg=multiplier.cg * cg + adder.cg,
                              inertia_moment=multiplier.inertia_moment * inertia_moment + adder.inertia_moment,
                              cross_inertia=multiplier.cross_inertia * cross_inertia + adder.cross_inertia,
                              )
         traits['objects'].append(massobj)
     return Mass(**traits)