You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AeroDyn V15.04- Updated to include cavitation check
- Updated the BEMT_CalcOutputs to include a check for cavitation. Also included some checks for the cavitation input parameters here so that we don't waste time checking these if the user isn't doing a cavitation check.
if (InputFileData%AirDens <=0.0) call SetErrStat ( ErrID_Fatal, 'The air density (AirDens) must be greater than zero.', ErrStat, ErrMsg, RoutineName )
1418
1419
if (InputFileData%KinVisc <=0.0) call SetErrStat ( ErrID_Fatal, 'The kinesmatic viscosity (KinVisc) must be greater than zero.', ErrStat, ErrMsg, RoutineName )
1419
1420
if (InputFileData%SpdSound <=0.0) call SetErrStat ( ErrID_Fatal, 'The speed of sound (SpdSound) must be greater than zero.', ErrStat, ErrMsg, RoutineName )
1420
-
1421
+
if (InputFileData%Pvap <=0.0) call SetErrStat ( ErrID_Fatal, 'The vapour pressure (Pvap) must be greater than zero.', ErrStat, ErrMsg, RoutineName )
1422
+
if (InputFileData%Patm <=0.0) call SetErrStat ( ErrID_Fatal, 'The atmospheric pressure (Patm) must be greater than zero.', ErrStat, ErrMsg, RoutineName )
1423
+
if (InputFileData%FluidDepth <=0.0) call SetErrStat ( ErrID_Fatal, 'Fluid depth (FluidDepth) cannot be negative', ErrStat, ErrMsg, RoutineName )
1424
+
1425
+
1421
1426
1422
1427
! BEMT inputs
1423
1428
! bjj: these checks should probably go into BEMT where they are used...
if (.not. InputFileData%FLookUp ) call SetErrStat( ErrID_Fatal, 'FLookUp must be TRUE for this version.', ErrStat, ErrMsg, RoutineName )
1441
1446
end if
1442
-
1447
+
1448
+
if ( InputFileData%CavitCheck .and. InputFileData%AFAeroMod == 2) then
1449
+
call SetErrStat( ErrID_Fatal, 'Cannot use unsteady aerodynamics module with a cavitation check', ErrStat, ErrMsg, RoutineName )
1450
+
end if
1451
+
1452
+
if (InputFileData%InCol_Cpmin == 0.and. InputFileData%CavitCheck) call SetErrStat( ErrID_Fatal, 'InCol_Cpmin must not be 0 to do a cavitation check.', ErrStat, ErrMsg, RoutineName )
1453
+
1454
+
1443
1455
1444
1456
! validate the AFI input data because it doesn't appear to be done in AFI
1445
1457
if (InputFileData%NumAFfiles < 1) call SetErrStat( ErrID_Fatal, 'The number of unique airfoil tables (NumAFfiles) must be greater than zero.', ErrStat, ErrMsg, RoutineName )
@@ -1699,7 +1711,10 @@ SUBROUTINE Init_BEMTmodule( InputFileData, u_AD, u, p, x, xd, z, OtherState, y,
1699
1711
InitInp%numBlades = p%NumBlades
1700
1712
1701
1713
InitInp%airDens = InputFileData%AirDens
1702
-
InitInp%kinVisc = InputFileData%KinVisc
1714
+
InitInp%kinVisc = InputFileData%KinVisc
1715
+
InitInp%Patm = InputFileData%Patm
1716
+
InitInp%Pvap = InputFileData%Pvap
1717
+
InitInp%FluidDepth = InputFileData%FluidDepth
1703
1718
InitInp%skewWakeMod = InputFileData%SkewMod
1704
1719
InitInp%aTol = InputFileData%IndToler
1705
1720
InitInp%useTipLoss = InputFileData%TipLoss
@@ -1748,10 +1763,13 @@ SUBROUTINE Init_BEMTmodule( InputFileData, u_AD, u, p, x, xd, z, OtherState, y,
@@ -1235,9 +1257,34 @@ subroutine BEMT_CalcOutput( t, u, p, x, xd, z, OtherState, AFInfo, y, m, errStat
1235
1257
else
1236
1258
! TODO: When we start using Re, should we use the uninduced Re since we used uninduced Re to solve for the inductions!? Probably this won't change, instead create a Re loop up above.
! Calculate the cavitation number for the airfoil at the node in quesiton, and compare to the critical cavitation number based on the vapour pressure and submerged depth
1268
+
if ( p%CavitCheck ) then
1269
+
SigmaCavit=-1* m%Cpmin(i,j) ! Cavitation number on blade node j
1270
+
1271
+
if ( EqualRealNos( y%Vrel(i,j), 0.0_ReKi ) ) then!if Vrel = 0 in certain cases when Prandtls tip and hub loss factors are used, use the relative verlocity without induction
1272
+
if ( EqualRealNos( Vx, 0.0_ReKi ) .and. EqualRealNos( Vy, 0.0_ReKi ) ) call SetErrStat( ErrID_Fatal, 'Velocity can not be zero for cavitation check, turn off Prandtls tip loss', ErrStat, ErrMsg, RoutineName )
1273
+
SigmaCavitCrit= ( ( p%Patm + ( 9.81_ReKi* (p%FluidDepth - ( u%rlocal(i,j))*cos(u%psi(j) )) * p%airDens)) - p%Pvap ) / ( 0.5_ReKi* p%airDens * (sqrt((Vx**2+ Vy**2)))**2) ! Critical value of Sigma, cavitation if we go over this
1274
+
1275
+
else
1276
+
SigmaCavitCrit= ( ( p%Patm + ( 9.81_ReKi* (p%FluidDepth - ( u%rlocal(i,j))*cos(u%psi(j) )) * p%airDens)) - p%Pvap ) / ( 0.5_ReKi* p%airDens * y%Vrel(i,j)**2) ! Critical value of Sigma, cavitation if we go over this
0 commit comments