Skip to content

Commit fcc4394

Browse files
Catch divide-by-zero error in wind speed estimator (#410)
* ability to load rosco yaml on rank 0 alone * Catch divide-by-zero in WSE --------- Co-authored-by: ptrbortolotti <[email protected]>
1 parent 50e8247 commit fcc4394

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

Examples/28_tower_resonance.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def main():
6565
# Ramp: good demo of functionality, short for CI
6666
r.wind_case_fcn = cl.ramp
6767
r.wind_case_opts = {
68-
'U_start': 4, # from 10 to 15 m/s
68+
'U_start': 0, # from 10 to 15 m/s
6969
'U_end': 10,
7070
't_start': 100,
7171
't_end': 300

rosco/controller/src/ControllerBlocks.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er
282282
LocalVar%WE%v_t = 0.0
283283
LocalVar%WE%v_m = max(LocalVar%HorWindV, 3.0_DbKi) ! avoid divide by 0 below if HorWindV is 0, which some AMRWind setups create
284284
LocalVar%WE%v_h = max(LocalVar%HorWindV, 3.0_DbKi) ! avoid divide by 0 below if HorWindV is 0, which some AMRWind setups create
285+
LocalVar%WE_Vw = LocalVar%WE%v_m + LocalVar%WE%v_t ! Initialize WE_Vw to aviod divide by zero
285286
lambda = WE_Inp_Speed * CntrPar%WE_BladeRadius/LocalVar%WE%v_h
286287
LocalVar%WE%xh = RESHAPE((/LocalVar%WE%om_r, LocalVar%WE%v_t, LocalVar%WE%v_m/),(/3,1/))
287288
LocalVar%WE%P = RESHAPE((/0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 1.0/),(/3,3/))

rosco/controller/src/Functions.f90

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,12 +575,14 @@ REAL(DbKi) FUNCTION AeroDynTorque(RotSpeed, BldPitch, LocalVar, CntrPar, PerfDat
575575
REAL(DbKi) :: RotorArea
576576
REAL(DbKi) :: Cp
577577
REAL(DbKi) :: Lambda
578+
REAL(DbKi) :: WindSpeed
578579

579580
CHARACTER(*), PARAMETER :: RoutineName = 'AeroDynTorque'
580581

581582
! Find Torque
582583
RotorArea = PI*CntrPar%WE_BladeRadius**2
583-
Lambda = RotSpeed*CntrPar%WE_BladeRadius/LocalVar%WE_Vw
584+
WindSpeed = MAX(LocalVar%WE_Vw,EPSILON(1.0_DbKi))
585+
Lambda = RotSpeed*CntrPar%WE_BladeRadius/WindSpeed
584586

585587
! Compute Cp
586588
Cp = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, BldPitch*R2D, Lambda, ErrVar)

0 commit comments

Comments
 (0)