Skip to content
Snippets Groups Projects
Commit 183e42fc authored by mads's avatar mads
Browse files

cp1252 instead of utf8 for htc files

parent 03c0f70d
No related branches found
No related tags found
No related merge requests found
...@@ -106,7 +106,9 @@ class HTCContents(object): ...@@ -106,7 +106,9 @@ class HTCContents(object):
return section return section
def add_line(self, name, values, comments): def add_line(self, name, values, comments):
self._add_contents(HTCLine(name, values, comments)) line = HTCLine(name, values, comments)
self._add_contents(line)
return line
...@@ -333,9 +335,12 @@ class HTCDefaults(object): ...@@ -333,9 +335,12 @@ class HTCDefaults(object):
no_grid_points=(4096, 32, 32), box_dimension=(6000, 100, 100), no_grid_points=(4096, 32, 32), box_dimension=(6000, 100, 100),
std_scaling=(1, .8, .5)): std_scaling=(1, .8, .5)):
wind = self.add_section('wind') wind = self.add_section('wind')
wind.turb_format = (1, "0=none, 1=mann,2=flex") wind.turb_format = 1
mann = wind.add_section('mann') mann = wind.add_section('mann')
mann.add_line('create_turb_parameters', [L, ae23, Gamma, seed, int(high_frq_compensation)], "L, alfaeps, gamma, seed, highfrq compensation") if 'create_turb_parameters' in mann:
mann.create_turb_parameters.values = [L, ae23, Gamma, seed, int(high_frq_compensation)]
else:
mann.add_line('create_turb_parameters', [L, ae23, Gamma, seed, int(high_frq_compensation)], "L, alfaeps, gamma, seed, highfrq compensation")
if filenames is None: if filenames is None:
filenames = ["./turb/turb_wsp%d_s%04d%s.bin" % (self.wind.wsp[0], seed, c) for c in ['u', 'v', 'w']] filenames = ["./turb/turb_wsp%d_s%04d%s.bin" % (self.wind.wsp[0], seed, c) for c in ['u', 'v', 'w']]
if isinstance(filenames, str): if isinstance(filenames, str):
......
...@@ -60,7 +60,7 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -60,7 +60,7 @@ class HTCFile(HTCContents, HTCDefaults):
def readlines(self, filename): def readlines(self, filename):
self.htc_inputfiles.append(filename) self.htc_inputfiles.append(filename)
htc_lines = [] htc_lines = []
with open(filename, encoding='utf-8') as fid: with open(filename, encoding='cp1252') as fid:
lines = fid.readlines() lines = fid.readlines()
for l in lines: for l in lines:
if l.lower().lstrip().startswith('continue_in_file'): if l.lower().lstrip().startswith('continue_in_file'):
...@@ -85,7 +85,7 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -85,7 +85,7 @@ class HTCFile(HTCContents, HTCDefaults):
self.filename = filename self.filename = filename
# exist_ok does not exist in Python27 # exist_ok does not exist in Python27
if not os.path.exists(os.path.dirname(filename)): if not os.path.exists(os.path.dirname(filename)):
os.makedirs(os.path.dirname(filename))#, exist_ok=True) os.makedirs(os.path.dirname(filename)) #, exist_ok=True)
with open(filename, 'w', encoding='utf-8') as fid: with open(filename, 'w', encoding='utf-8') as fid:
fid.write(str(self)) fid.write(str(self))
...@@ -96,10 +96,11 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -96,10 +96,11 @@ class HTCFile(HTCContents, HTCDefaults):
def input_files(self): def input_files(self):
files = self.htc_inputfiles files = self.htc_inputfiles
for mb in [self.new_htc_structure[mb] for mb in self.new_htc_structure.keys() if mb.startswith('main_body')]: if 'new_htc_structure' in self:
if "timoschenko_input" in mb: for mb in [self.new_htc_structure[mb] for mb in self.new_htc_structure.keys() if mb.startswith('main_body')]:
files.append(mb.timoschenko_input.filename[0]) if "timoschenko_input" in mb:
files.append(mb.get('external_bladedata_dll', [None, None, None])[2]) files.append(mb.timoschenko_input.filename[0])
files.append(mb.get('external_bladedata_dll', [None, None, None])[2])
if 'aero' in self: if 'aero' in self:
files.append(self.aero.ae_filename[0]) files.append(self.aero.ae_filename[0])
files.append(self.aero.pc_filename[0]) files.append(self.aero.pc_filename[0])
...@@ -146,11 +147,11 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -146,11 +147,11 @@ class HTCFile(HTCContents, HTCDefaults):
line = self.get(k) line = self.get(k)
if line: if line:
files.append(line[index]) files.append(line[index])
if 'new_htc_structure' in self:
if 'system_eigenanalysis' in self.new_htc_structure: if 'system_eigenanalysis' in self.new_htc_structure:
f = self.new_htc_structure.system_eigenanalysis[0] f = self.new_htc_structure.system_eigenanalysis[0]
files.append(f) files.append(f)
files.append(os.path.join(os.path.dirname(f), 'mode*.dat').replace("\\", "/")) files.append(os.path.join(os.path.dirname(f), 'mode*.dat').replace("\\", "/"))
files.extend(self.res_file_lst()) files.extend(self.res_file_lst())
for key in [k for k in self.contents.keys() if k.startswith("output_at_time")]: for key in [k for k in self.contents.keys() if k.startswith("output_at_time")]:
......
...@@ -122,7 +122,7 @@ class Simulation(object): ...@@ -122,7 +122,7 @@ class Simulation(object):
def add_additional_input_file(self, file): def add_additional_input_file(self, file):
additional_files = self.additional_files() additional_files = self.additional_files()
additional_files['input'] = additional_files.get('input', []) + [file] additional_files['input'] = list(set(additional_files.get('input', []) + [file]))
additional_files_file = os.path.join(self.modelpath, 'additional_files.txt') additional_files_file = os.path.join(self.modelpath, 'additional_files.txt')
with open(additional_files_file, 'w', encoding='utf-8') as fid: with open(additional_files_file, 'w', encoding='utf-8') as fid:
json.dump(additional_files, fid) json.dump(additional_files, fid)
...@@ -140,7 +140,7 @@ class Simulation(object): ...@@ -140,7 +140,7 @@ class Simulation(object):
dst = os.path.join(self.tmp_modelpath, os.path.relpath(src_file, self.modelpath)) dst = os.path.join(self.tmp_modelpath, os.path.relpath(src_file, self.modelpath))
# exist_ok does not exist in Python27 # exist_ok does not exist in Python27
if not os.path.exists(os.path.dirname(dst)): if not os.path.exists(os.path.dirname(dst)):
os.makedirs(os.path.dirname(dst))#, exist_ok=True) os.makedirs(os.path.dirname(dst)) #, exist_ok=True)
shutil.copy(src_file, dst) shutil.copy(src_file, dst)
if not os.path.isfile(dst) or os.stat(dst).st_size != os.stat(src_file).st_size: if not os.path.isfile(dst) or os.stat(dst).st_size != os.stat(src_file).st_size:
print ("error copy ", dst) print ("error copy ", dst)
...@@ -173,7 +173,7 @@ class Simulation(object): ...@@ -173,7 +173,7 @@ class Simulation(object):
dst_file = os.path.join(self.modelpath, os.path.relpath(src_file, self.tmp_modelpath)) dst_file = os.path.join(self.modelpath, os.path.relpath(src_file, self.tmp_modelpath))
# exist_ok does not exist in Python27 # exist_ok does not exist in Python27
if not os.path.exists(os.path.dirname(dst_file)): if not os.path.exists(os.path.dirname(dst_file)):
os.makedirs(os.path.dirname(dst_file))#, exist_ok=True) os.makedirs(os.path.dirname(dst_file)) #, exist_ok=True)
if not os.path.isfile(dst_file) or os.path.getmtime(dst_file) != os.path.getmtime(src_file): if not os.path.isfile(dst_file) or os.path.getmtime(dst_file) != os.path.getmtime(src_file):
shutil.copy(src_file, dst_file) shutil.copy(src_file, dst_file)
...@@ -199,10 +199,11 @@ class Simulation(object): ...@@ -199,10 +199,11 @@ class Simulation(object):
self.simulationThread.join() self.simulationThread.join()
self.returncode, self.stdout = self.simulationThread.res self.returncode, self.stdout = self.simulationThread.res
if self.returncode or 'error' in self.stdout.lower(): if self.returncode or 'error' in self.stdout.lower():
self.errors = (list(set([l for l in self.stdout.split("\n") if 'error' in l.lower()]))) self.errors = list(set([l for l in self.stdout.split("\n") if 'error' in l.lower()]))
self.status = ERROR self.status = ERROR
self.is_simulating = False self.is_simulating = False
self.logFile.update_status() self.logFile.update_status()
self.errors.extend(list(set(self.logFile.errors)))
if self.returncode: if self.returncode:
raise Exception("Simulation error:\n" + "\n".join(self.errors)) raise Exception("Simulation error:\n" + "\n".join(self.errors))
elif self.logFile.status != log_file.DONE or self.errors or self.logFile.errors: elif self.logFile.status != log_file.DONE or self.errors or self.logFile.errors:
...@@ -223,13 +224,15 @@ class Simulation(object): ...@@ -223,13 +224,15 @@ class Simulation(object):
filename = os.path.join(folder, file).replace(os.path.sep, "/") filename = os.path.join(folder, file).replace(os.path.sep, "/")
if self.get_confirmation("File missing", "'%s' seems to be missing in the temporary working directory. \n\nDo you want to add it to additional_files.txt" % filename): if self.get_confirmation("File missing", "'%s' seems to be missing in the temporary working directory. \n\nDo you want to add it to additional_files.txt" % filename):
self.add_additional_input_file(filename) self.add_additional_input_file(filename)
self.show_message("'%s' is not added to additional_files.txt.\n\nPlease restart the simulation" % filename) self.show_message("'%s' is now added to additional_files.txt.\n\nPlease restart the simulation" % filename)
for error in self.errors: for error in self.errors:
m = re.compile(r".*\*\*\* ERROR \*\*\* File '(.*)' does not exist in the (.*) folder").match(error.strip()) for regex in [r".*\*\*\* ERROR \*\*\* File '(.*)' does not exist in the (.*) folder",
if m is not None: r".*\*\*\* ERROR \*\*\* DLL (.*)()"]:
file, folder = m.groups() m = re.compile(regex).match(error.strip())
confirm_add_additional_file(folder, file) if m is not None:
continue file, folder = m.groups()
confirm_add_additional_file(folder, file)
continue
m = re.compile(r".*\*\*\* ERROR \*\*\* File '(.*)' does not exist in the working directory").match(error.strip()) m = re.compile(r".*\*\*\* ERROR \*\*\* File '(.*)' does not exist in the working directory").match(error.strip())
if m is not None: if m is not None:
file = m.groups()[0] file = m.groups()[0]
......
...@@ -127,6 +127,8 @@ class TestHtcFile(unittest.TestCase): ...@@ -127,6 +127,8 @@ class TestHtcFile(unittest.TestCase):
std_scaling\t1.000000 0.800000 0.500000;""" std_scaling\t1.000000 0.800000 0.500000;"""
for a, b in zip(s.split("\n"), str(htcfile.wind.mann).split("\n")): for a, b in zip(s.split("\n"), str(htcfile.wind.mann).split("\n")):
self.assertEqual(a.strip(), b.strip()) self.assertEqual(a.strip(), b.strip())
self.assertEqual(htcfile.wind.turb_format[0], 1)
self.assertEqual(htcfile.wind.turb_format.comments, "")
def test_sensors(self): def test_sensors(self):
...@@ -208,6 +210,8 @@ class TestHtcFile(unittest.TestCase): ...@@ -208,6 +210,8 @@ class TestHtcFile(unittest.TestCase):
htcfile = HTCFile(self.testfilepath + "./tjul.htc", ".") htcfile = HTCFile(self.testfilepath + "./tjul.htc", ".")
htcfile.save("./temp.htc") htcfile.save("./temp.htc")
def test_ansi(self):
htcfile = HTCFile(self.testfilepath + "./ansi.htc")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment