def test_read1(self): # Put variables in top container, so no rules_dict namelist1 = "Testing\n" + \ " \n" + \ "&OPTION\n" + \ " This is a comment\n" + \ " INTVAR = 777, single(1) = 15.0, floatvar = -3.14\n" + \ " singleint(2) = 3,4,5\n" + \ " stringarray(3) = 'xyz'\n" + \ " boolvar = T\n" + \ " textvar = 'That'\n" + \ " ! This is a comment too\n" + \ " listenumvar = 3,3,2,2\n" + \ " listenumvar2 = 1.5\n" + \ " arrayvar = 3.5, 7.76, 1.23\n" + \ " arrayvarsplit = 3.5, 7.76\n" + \ " 5.45, 22.0\n" + \ " 1.23\n" + \ " arrayvarsplit2 = 1\n" + \ " 2\n" + \ " 3\n" + \ " arraysmall = 1.75\n" + \ " arrayshorthand = 3.456*8\n" + \ " expvar1 = 1.5e-12\n" + \ " expvar2 = -1.5D12\n" + \ "/\n" outfile = open(self.filename, 'w') outfile.write(namelist1) outfile.close() my_comp = VarComponent() sb = Namelist(my_comp) sb.set_filename(self.filename) sb.parse_file() sb.load_model() self.assertEqual(sb.title, 'Testing') self.assertEqual(my_comp.intvar, 777) self.assertEqual(my_comp.boolvar, True) self.assertEqual(my_comp.floatvar, -3.14) self.assertEqual(my_comp.expvar1, 1.5e-12) self.assertEqual(my_comp.expvar2, -1.5e12) self.assertEqual(my_comp.textvar, 'That') self.assertEqual(my_comp.listenumvar, [3, 3, 2, 2]) self.assertEqual(my_comp.listenumvar2, [1.5]) self.assertEqual(my_comp.arrayvar[0], 3.5) self.assertEqual(my_comp.arrayvar[1], 7.76) self.assertEqual(my_comp.arrayvar[2], 1.23) self.assertEqual(my_comp.arrayvarsplit[0], 3.5) self.assertEqual(my_comp.arrayvarsplit[1], 7.76) self.assertEqual(my_comp.arrayvarsplit[2], 5.45) self.assertEqual(my_comp.arrayvarsplit[3], 22.0) self.assertEqual(my_comp.arrayvarsplit[4], 1.23) self.assertEqual(my_comp.arrayvarsplit2[0], 1) self.assertEqual(my_comp.arrayvarsplit2[1], 2) self.assertEqual(my_comp.arrayvarsplit2[2], 3) self.assertEqual(my_comp.arraysmall[0], 1.75) self.assertEqual(len(my_comp.arraysmall), 1) self.assertEqual(my_comp.arrayshorthand[4], 3.456) self.assertEqual(len(my_comp.arrayshorthand), 8) self.assertEqual(my_comp.single[0], 15.0) self.assertEqual(my_comp.singleint[3], 5) self.assertEqual(my_comp.stringarray[2], 'xyz') self.assertEqual(type(my_comp.singleint[2]), numpy_int32) # Test out reading a single card by name self.assertEqual(sb.find_card('OPTION', 'floatvar'), -3.14)
def test_read1(self): # Put variables in top container, so no rules_dict namelist1 = "Testing\n" + \ " \n" + \ "&OPTION\n" + \ " This is a comment\n" + \ " INTVAR = 777, single(1) = 15.0, floatvar = -3.14\n" + \ " singleint(2) = 3,4,5\n" + \ " stringarray(3) = 'xyz'\n" + \ " boolvar = T\n" + \ " textvar = 'That'\n" + \ " ! This is a comment too\n" + \ " arrayvar = 3.5, 7.76, 1.23\n" + \ " arrayvarsplit = 3.5, 7.76\n" + \ " 5.45, 22.0\n" + \ " 1.23\n" + \ " arrayvarsplit2 = 1\n" + \ " 2\n" + \ " 3\n" + \ " arraysmall = 1.75\n" + \ " arrayshorthand = 3.456*8\n" + \ " expvar1 = 1.5e-12\n" + \ " expvar2 = -1.5D12\n" + \ "/\n" outfile = open(self.filename, 'w') outfile.write(namelist1) outfile.close() top = Problem() top.root = Group() top.root.add('my_comp', VarComponent()) top.setup(check=False) top.run() sb = Namelist(top.root.my_comp) sb.set_filename(self.filename) sb.parse_file() sb.load_model() self.assertEqual(sb.title, 'Testing') self.assertEqual(top['my_comp.intvar'], 777) self.assertEqual(top['my_comp.boolvar'], True) self.assertEqual(top['my_comp.floatvar'], -3.14) self.assertEqual(top['my_comp.expvar1'], 1.5e-12) self.assertEqual(top['my_comp.expvar2'], -1.5e12) self.assertEqual(top['my_comp.textvar'], 'That') self.assertEqual(top['my_comp.arrayvar'][0], 3.5) self.assertEqual(top['my_comp.arrayvar'][1], 7.76) self.assertEqual(top['my_comp.arrayvar'][2], 1.23) self.assertEqual(top['my_comp.arrayvarsplit'][0], 3.5) self.assertEqual(top['my_comp.arrayvarsplit'][1], 7.76) self.assertEqual(top['my_comp.arrayvarsplit'][2], 5.45) self.assertEqual(top['my_comp.arrayvarsplit'][3], 22.0) self.assertEqual(top['my_comp.arrayvarsplit'][4], 1.23) self.assertEqual(top['my_comp.arrayvarsplit2'][0], 1) self.assertEqual(top['my_comp.arrayvarsplit2'][1], 2) self.assertEqual(top['my_comp.arrayvarsplit2'][2], 3) self.assertEqual(top['my_comp.arraysmall'][0], 1.75) self.assertEqual(len(top['my_comp.arraysmall']), 1) self.assertEqual(top['my_comp.arrayshorthand'][4], 3.456) self.assertEqual(len(top['my_comp.arrayshorthand']), 8) self.assertEqual(top['my_comp.single'][0], 15.0) self.assertEqual(top['my_comp.singleint'][3], 5) self.assertEqual(top['my_comp.stringarray'][2], 'xyz') # Test out reading a single card by name self.assertEqual(sb.find_card('OPTION', 'floatvar'), -3.14)
def load_model(self, control_input='control.in', flocond_input='flocond.in', expnd_input='expnd.in', zrdmix_input='zrdmix.in', hwall_input='hwall.in'): '''Reads in an existing set of input files and populates the model.''' ignore = ['ist', 'ifab'] ct = Namelist(self) ct.set_filename(control_input) ct.parse_file() ct.load_model(ignore=ignore) ignore = ['p01d', 'p02d', 't01d', 't02d', 'rm1', 'rm2', 'gam', 'pinf', 'a1d', 'a2d', 'a3d'] fc = Namelist(self) fc.set_filename(flocond_input) fc.parse_file() fc.load_model(ignore=ignore) self.flow_in.pri.Pt = fc.find_card('floc', 'p01d') self.flow_in.sec.Pt = fc.find_card('floc', 'p02d') self.flow_in.pri.Tt = fc.find_card('floc', 't01d') self.flow_in.sec.Tt = fc.find_card('floc', 't02d') self.flow_in.pri.Mach = fc.find_card('floc', 'rm1') self.flow_in.sec.Mach = fc.find_card('floc', 'rm2') self.flow_in.gamma = fc.find_card('floc', 'gam') self.flow_in.Pstatic = fc.find_card('floc', 'pinf') a1d = fc.find_card('floc', 'a1d') a2d = fc.find_card('floc', 'a2d') a3d = fc.find_card('floc', 'a3d') ep = Namelist(self) ep.set_filename(expnd_input) ep.parse_file() ep.load_model() ignore = ['RLD', 'H0LM', 'H0HY', 'ALP1', 'ALP2', 'BWID'] zr = Namelist(self) zr.set_filename(zrdmix_input) zr.parse_file() zr.load_model(ignore=ignore) self.geo_in.length = zr.find_card('zrd', 'RLD') self.geo_in.LhWave = zr.find_card('zrd', 'H0LM') self.geo_in.LhMh = zr.find_card('zrd', 'H0HY') self.geo_in.ChuteAngles = zr.find_card('zrd', 'ALP1') #self.geo_in.ChuteAngles = zr.find_card('zrd', 'ALP2') BWID = zr.find_card('zrd', 'BWID') parser = FileParser() parser.set_file(hwall_input) parser.set_delimiters(", ") nrow = parser.transfer_var(0, 1) geom = zeros((nrow, 2), 'd') for index in range(nrow): geom[index, :] = parser.transfer_array(1+index, 1, 1+index, 2) self.geom = geom # Reverse area calculations for AsAp, AeAt and AR # Note that DREA only uses half the area as it assumes a plane of symmetry self.geo_in.Apri = 2.0*a1d self.geo_in.AsAp = 2.0*a2d/self.geo_in.Apri self.geo_in.Asec = self.geo_in.AsAp*self.geo_in.Apri self.geo_in.AeAt = 2.0*a3d/(self.geo_in.Apri+self.geo_in.Asec) self.geo_in.AR = BWID*BWID/(self.geo_in.Apri+self.geo_in.Asec) #self.geo_in.length = self.geom[-1, 0] self.geo_in.width = 0.5*(self.geo_in.Apri + self.geo_in.Asec)/self.geom[0,1] self.geo_in.Aexit = 2.0*self.geom[-1,1]*self.geo_in.width