Skip to content
Snippets Groups Projects
Commit d1fc07d3 authored by David Verelst's avatar David Verelst
Browse files

Merge branch 'master' of gitlab.windenergy.dtu.dk:toolbox/WindEnergyToolbox

parents 7f696a5f 266b349f
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -42,7 +42,7 @@ class AtTimeFile(object): ...@@ -42,7 +42,7 @@ class AtTimeFile(object):
for column, att_name in enumerate(self.attribute_names): for column, att_name in enumerate(self.attribute_names):
setattr(self, att_name, func_factory(column)) setattr(self, att_name, func_factory(column))
def radius(self, radius=None): def curved_radius(self, radius=None):
"""Radius of calculation point(s) """Radius of calculation point(s)
Parameters Parameters
......
...@@ -14,6 +14,7 @@ from io import open ...@@ -14,6 +14,7 @@ from io import open
from builtins import str from builtins import str
from future import standard_library from future import standard_library
from wetb.utils.process_exec import pexec from wetb.utils.process_exec import pexec
from wetb.gtsdf.unix_time import from_unix
standard_library.install_aliases() standard_library.install_aliases()
from collections import OrderedDict from collections import OrderedDict
...@@ -68,11 +69,18 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -68,11 +69,18 @@ class HTCFile(HTCContents, HTCDefaults):
break break
#assert 'simulation' in self.contents, "%s could not be loaded. 'simulation' section missing" % filename #assert 'simulation' in self.contents, "%s could not be loaded. 'simulation' section missing" % filename
def readfilelines(self, filename):
with open(filename, encoding='cp1252') as fid:
lines = list(fid.readlines())
if lines[0].encode().startswith(b'\xc3\xaf\xc2\xbb\xc2\xbf'):
lines[0] = lines[0][3:]
return lines
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='cp1252') as fid: lines = self.readfilelines(filename)
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'):
filename = l.lstrip().split(";")[0][len("continue_in_file"):].strip() filename = l.lstrip().split(";")[0][len("continue_in_file"):].strip()
...@@ -101,7 +109,7 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -101,7 +109,7 @@ class HTCFile(HTCContents, HTCDefaults):
# 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='cp1252') as fid:
fid.write(str(self)) fid.write(str(self))
def set_name(self, name, htc_folder="htc", log_folder="log", res_folder="res"): def set_name(self, name, htc_folder="htc", log_folder="log", res_folder="res"):
...@@ -217,7 +225,21 @@ class HTCFile(HTCContents, HTCDefaults): ...@@ -217,7 +225,21 @@ class HTCFile(HTCContents, HTCDefaults):
return [res_filename + ".sel", res_filename + ".dat"] return [res_filename + ".sel", res_filename + ".dat"]
def simulate(self, exe): def simulate(self, exe, skip_if_up_to_date=False):
if skip_if_up_to_date:
from os.path import isfile, getmtime, isabs
res_file = os.path.join(self.modelpath, self.res_file_lst()[0])
htc_file = os.path.join(self.modelpath, self.filename)
if isabs(exe):
exe_file = exe
else:
exe_file = os.path.join(self.modelpath, exe)
#print (from_unix(getmtime(res_file)), from_unix(getmtime(htc_file)))
if (isfile(htc_file) and isfile(res_file) and isfile(exe_file) and
getmtime(res_file) > getmtime(htc_file) and getmtime(res_file) > getmtime(exe_file)):
if "".join(self.readfilelines(htc_file)) == str(self):
return
self.save() self.save()
htcfile = os.path.relpath(self.filename, self.modelpath) htcfile = os.path.relpath(self.filename, self.modelpath)
hawc2exe = exe hawc2exe = exe
......
...@@ -49,9 +49,9 @@ class TestAtTimeFile(unittest.TestCase): ...@@ -49,9 +49,9 @@ class TestAtTimeFile(unittest.TestCase):
def test_at_time_file_radius(self): def test_at_time_file_radius(self):
atfile = AtTimeFile(self.testfilepath + "at_time.dat") atfile = AtTimeFile(self.testfilepath + "at_time.dat")
self.assertEqual(atfile.radius()[12], 10.2505) self.assertEqual(atfile.curved_radius()[12], 10.2505)
self.assertEqual(atfile.radius(10), 10.2505) self.assertEqual(atfile.curved_radius(10), 10.2505)
self.assertEqual(atfile.radius(10.5), 10.2505) self.assertEqual(atfile.curved_radius(10.5), 10.2505)
if __name__ == "__main__": if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName'] #import sys;sys.argv = ['', 'Test.testName']
......
...@@ -241,6 +241,11 @@ class TestHtcFile(unittest.TestCase): ...@@ -241,6 +241,11 @@ class TestHtcFile(unittest.TestCase):
def test_ansi(self): def test_ansi(self):
htcfile = HTCFile(self.testfilepath + "./ansi.htc") htcfile = HTCFile(self.testfilepath + "./ansi.htc")
def test_file_with_BOM(self):
htcfile = HTCFile(self.testfilepath + 'DLC15_wsp11_wdir000_s0000_phi000_Free_v2_visual.htc')
self.assertEqual(str(htcfile)[0], ";")
......
...@@ -62,12 +62,12 @@ class TestCacheProperty(unittest.TestCase): ...@@ -62,12 +62,12 @@ class TestCacheProperty(unittest.TestCase):
def test_cache_function(self): def test_cache_function(self):
e = Example() e = Example()
self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 1, places=2) self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 1, places=1)
self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 0, places=2) self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 0, places=1)
self.assertAlmostEqual(get_time(e.test_cache_function)(reload=True)[1], 1, places=2) self.assertAlmostEqual(get_time(e.test_cache_function)(reload=True)[1], 1, places=1)
self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 0, places=2) self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 0, places=1)
e.clear_cache() e.clear_cache()
self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 1, places=2) self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 1, places=1)
......
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