From 7e3df39c2422615183550abb72e4d646f2064e5f Mon Sep 17 00:00:00 2001
From: dave <dave@dtu.dk>
Date: Mon, 11 Apr 2016 11:26:34 +0200
Subject: [PATCH] prepost: changed default POST_DIR, bug fix, WIP: place failed
 cases in pbs_in_failed

---
 wetb/prepost/Simulations.py | 16 +++++++++++++++-
 wetb/prepost/dlcdefs.py     |  2 +-
 wetb/prepost/dlctemplate.py | 19 +++++++++----------
 3 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/wetb/prepost/Simulations.py b/wetb/prepost/Simulations.py
index 703d7ca..9770e48 100755
--- a/wetb/prepost/Simulations.py
+++ b/wetb/prepost/Simulations.py
@@ -1161,6 +1161,20 @@ def post_launch(cases, save_iter=False):
 
     return cases_fail
 
+def copy_pbs_in_failedcases(cases_fail, pbs_in_dir_fail='pbs_in_fail'):
+    """
+    Copy all the pbs_in files from failed cases to a new directory so it
+    is easy to re-launch them
+    """
+
+    for cname in cases_fail.keys():
+        case = cases_fail[cname]
+        pbs_in_fname = '%s.p' % (case['[case_id]'])
+        pbs_in_dir = case['[pbs_in_dir]'].replace('pbs_in', pbs_in_dir_fail)
+        run_dir = case['[run_dir]']
+        fname = os.path.join(run_dir, pbs_in_dir, pbs_in_fname)
+
+
 def logcheck_case(errorlogs, cases, case, silent=False):
     """
     Check logfile of a single case
@@ -2663,7 +2677,7 @@ class ErrorLogs(object):
             if self.cases is not None:
                 case = self.cases[fname.replace('.log', '.htc')]
                 dt = float(case['[dt_sim]'])
-                time_steps = float(case['[time_stop]']) / dt
+                time_steps = int(float(case['[time_stop]']) / dt)
                 iterations = np.ndarray( (time_steps+1,3), dtype=np.float32 )
             else:
                 iterations = np.ndarray( (len(lines),3), dtype=np.float32 )
diff --git a/wetb/prepost/dlcdefs.py b/wetb/prepost/dlcdefs.py
index 747e775..78a9685 100644
--- a/wetb/prepost/dlcdefs.py
+++ b/wetb/prepost/dlcdefs.py
@@ -46,7 +46,7 @@ def configure_dirs(verbose=False):
         raise ValueError('Could not find master file in htc/_master')
     MASTERFILE = master
     P_MASTERFILE = os.path.join(P_SOURCE, 'htc%s_master%s' % (os.sep, os.sep))
-    POST_DIR = os.path.join(p_run_root, PROJECT, 'prepost-data%s' % os.sep)
+    POST_DIR = os.path.join(p_run_root, PROJECT, sim_id, 'prepost-data%s' % os.sep)
 
     if verbose:
         print('='*79)
diff --git a/wetb/prepost/dlctemplate.py b/wetb/prepost/dlctemplate.py
index b6240f4..8158ad9 100755
--- a/wetb/prepost/dlctemplate.py
+++ b/wetb/prepost/dlctemplate.py
@@ -14,8 +14,6 @@ from builtins import range
 from future import standard_library
 standard_library.install_aliases()
 
-
-
 import os
 import socket
 from argparse import ArgumentParser
@@ -395,7 +393,8 @@ if __name__ == '__main__':
     parser.add_argument('--check_logs', action='store_true', default=False,
                         dest='check_logs', help='check the log files')
     parser.add_argument('--stats', action='store_true', default=False,
-                        dest='stats', help='calculate statistics')
+                        dest='stats', help='calculate statistics and 1Hz '
+                                           'equivalent loads')
     parser.add_argument('--fatigue', action='store_true', default=False,
                         dest='fatigue', help='calculate Leq for a full DLC')
     parser.add_argument('--AEP', action='store_true', default=False,
@@ -425,12 +424,6 @@ if __name__ == '__main__':
                         dest='envelopeturbine', help='Compute envelopeturbine')
     opt = parser.parse_args()
 
-    # auto configure directories: assume you are running in the root of the
-    # relevant HAWC2 model
-    # and assume we are in a simulation case of a certain turbine/project
-    P_RUN, P_SOURCE, PROJECT, sim_id, P_MASTERFILE, MASTERFILE, POST_DIR \
-        = dlcdefs.configure_dirs(verbose=True)
-
     # TODO: use arguments to determine the scenario:
     # --plots, --report, --...
 
@@ -457,6 +450,12 @@ if __name__ == '__main__':
 #                saveinterval=2000, csv=True, fatigue_cycles=True, fatigue=False)
     # -------------------------------------------------------------------------
 
+    # auto configure directories: assume you are running in the root of the
+    # relevant HAWC2 model
+    # and assume we are in a simulation case of a certain turbine/project
+    P_RUN, P_SOURCE, PROJECT, sim_id, P_MASTERFILE, MASTERFILE, POST_DIR \
+        = dlcdefs.configure_dirs(verbose=True)
+
     # create HTC files and PBS launch scripts (*.p)
     if opt.prep:
         print('Start creating all the htc files and pbs_in files...')
@@ -473,5 +472,5 @@ if __name__ == '__main__':
                     envelopeblade=opt.envelopeblade)
     if opt.dlcplot:
         sim_ids = [sim_id]
-        figdir = os.path.join(P_RUN, '..', 'figures/%s' % '-'.join(sim_ids))
+        figdir = os.path.join(POST_DIR, 'figures/%s' % '-'.join(sim_ids))
         dlcplots.plot_stats2(sim_ids, [POST_DIR], fig_dir_base=figdir)
-- 
GitLab