From 970c8faa0ec0ce44f0594876e4140a59a45d4547 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Mon, 20 Dec 2021 11:58:40 -0700 Subject: [PATCH] Slightly offset k_opt so gain is allowed in OF --- weis/aeroelasticse/LinearFAST.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/weis/aeroelasticse/LinearFAST.py b/weis/aeroelasticse/LinearFAST.py index 794536691..0e3170cae 100644 --- a/weis/aeroelasticse/LinearFAST.py +++ b/weis/aeroelasticse/LinearFAST.py @@ -139,17 +139,16 @@ def gen_linear_cases(self,inputs={}): else: # if using fst_vt inputs from openfast_openmdao rosco_inputs = self.fst_vt['DISCON_in'] - # TODO: check this in below rated wind_speeds k_opt = rosco_inputs['VS_Rgn2K']/ (30 / np.pi)**2 # openfast units - omega_rated_rpm = rosco_inputs['PC_RefSpd'] * 30 / np.pi * .9 # rpm, include slip percent + omega_rated_rpm = rosco_inputs['PC_RefSpd'] * 30 / np.pi * 0.9 # rpm, offset so torque not active above rated, someday do a pseudo setpoint-smoother here if k_opt * omega_rated_rpm ** 2 > rosco_inputs['VS_RtTq']: print('LinearFAST WARNING: need to rescale VS_Rgn2K to be legal in openfast') - k_opt = rosco_inputs['VS_RtTq'] / omega_rated_rpm ** 2 + k_opt = 0.99 * rosco_inputs['VS_RtTq'] / omega_rated_rpm ** 2 # include slight reduction in k_opt so it always works - case_inputs[("ServoDyn","VS_RtGnSp")] = {'vals':[omega_rated_rpm], 'group':0} # convert to rpm and use 95% of rated + case_inputs[("ServoDyn","VS_RtGnSp")] = {'vals':[omega_rated_rpm], 'group':0} case_inputs[("ServoDyn","VS_RtTq")] = {'vals':[rosco_inputs['VS_RtTq']], 'group':0} - case_inputs[("ServoDyn","VS_Rgn2K")] = {'vals':[k_opt] , 'group':0} # reduce so k\omega^2 < VS_RtTq + case_inputs[("ServoDyn","VS_Rgn2K")] = {'vals':[k_opt] , 'group':0} case_inputs[("ServoDyn","VS_SlPc")] = {'vals':[10.], 'group':0} # set initial pitch to fine pitch