From 648fa5da23f87d9ca50d31a422d15f1dc3ae4132 Mon Sep 17 00:00:00 2001
From: David Robert Verelst <dave@dtu.dk>
Date: Fri, 23 Jun 2017 16:15:14 +0200
Subject: [PATCH] prepost.dlcdefs: optionally read dtu controller tuning from
 HS2 output

---
 wetb/prepost/dlcdefs.py | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/wetb/prepost/dlcdefs.py b/wetb/prepost/dlcdefs.py
index 06ff6d3b..54fc1179 100644
--- a/wetb/prepost/dlcdefs.py
+++ b/wetb/prepost/dlcdefs.py
@@ -21,6 +21,7 @@ import pandas as pd
 
 from wetb.prepost import misc
 from wetb.prepost.GenerateHydro import hydro_input
+from wetb.prepost import hawcstab2
 
 
 def casedict2xlsx():
@@ -173,8 +174,8 @@ def vartag_excel_stabcon(master):
     mt['[wdepth]'] = float(mt['[wdepth]'])
     mt['[Hs]'] = float(mt['[Hs]'])
     mt['[Tp]'] = float(mt['[Tp]'])
-    
-    
+
+
     if '[wave_gamma]' not in mt or not mt['[wave_gamma]']:
         mt['[wave_gamma]'] = 3.3
     else:
@@ -194,7 +195,7 @@ def vartag_excel_stabcon(master):
         mt['[wave_seed]'] = int(mt['[seed]'])
     else:
         mt['[wave_seed]'] = int(mt['[wave_seed]'])
-		
+
     try:
         embed_sf = float(master.tags['[embed_sf]'])
         embed_sf_t0 = int(master.tags['[t0]']) + 20
@@ -468,6 +469,19 @@ def excel_stabcon(proot, fext='xlsx', pignore=None, pinclude=None, sheet=0,
             t_stop = float(tags_dict['[time_stop]'])
             t0 = float(tags_dict['[t0]'])
             tags_dict['[duration]'] = str(t_stop - t0)
+            # in case there is a controller input file defined
+            if ['[controller_tuning_file]'] in tags_dict:
+                hs2 = hawcstab2.ReadControlTuning()
+                hs2.read_parameters(tags_dict['[controller_tuning_file]'])
+                tags_dict['[pi_gen_reg1.K]'] = hs2.pi_gen_reg1.K
+                tags_dict['[pi_gen_reg2.Kp]'] = hs2.pi_gen_reg2.Kp
+                tags_dict['[pi_gen_reg2.Ki]'] = hs2.pi_gen_reg2.Ki
+                tags_dict['[pi_gen_reg2.Kd]'] = 0.0
+                tags_dict['[pi_pitch_reg3.Kp]'] = hs2.pi_pitch_reg3.Kp
+                tags_dict['[pi_pitch_reg3.Ki]'] = hs2.pi_pitch_reg3.Ki
+                tags_dict['[pi_pitch_reg3.K1]'] = hs2.pi_pitch_reg3.K1
+                tags_dict['[pi_pitch_reg3.K2]'] = hs2.pi_pitch_reg3.K2
+            # save a copy of the current case an one opt_tags entry
             opt_tags.append(tags_dict.copy())
 
     return opt_tags
-- 
GitLab