@@ -1175,7 +1175,7 @@ subroutine UA_Init_Outputs(InitInp, p, y, InitOut, errStat, errMsg)
11751175 integer (IntKi), intent ( out ) :: ErrStat ! Error status of the operation
11761176 character (* ), intent ( out ) :: ErrMsg ! Error message if ErrStat /= ErrID_None
11771177 character (6 ) :: TmpChar ! Temporary char array to hold the node digits (3 places only!!!!)
1178- integer (IntKi) :: i,j, iNode, iOffset
1178+ integer (IntKi) :: i,j, iNode, iOffset, iOffAcc
11791179 character (64 ) :: chanPrefix
11801180 character (ErrMsgLen) :: errMsg2 ! temporary Error message if ErrStat /= ErrID_None
11811181 integer (IntKi) :: errStat2 ! temporary Error status of the operation
@@ -1205,6 +1205,7 @@ subroutine UA_Init_Outputs(InitInp, p, y, InitOut, errStat, errMsg)
12051205 else
12061206 p% NumOuts = 45
12071207 end if
1208+ p% NumOuts = p% NumOuts+6 ! Always including C*(alpha_T) and C*(alpha_Q)
12081209
12091210 allocate (InitOut% WriteOutputHdr(p% NumOuts* p% numBlades* p% nNodesPerBlade),STAT= ErrStat2)
12101211 if (ErrStat2 /= 0 ) call SetErrStat(ErrID_Fatal,' Error allocating WriteOutputHdr.' ,ErrStat,ErrMsg,RoutineName)
@@ -1257,6 +1258,7 @@ subroutine UA_Init_Outputs(InitInp, p, y, InitOut, errStat, errMsg)
12571258 InitOut% WriteOutputUnt(iOffset+ 9 ) = ' (deg)'
12581259 InitOut% WriteOutputUnt(iOffset+10 ) = ' (s)'
12591260 InitOut% WriteOutputUnt(iOffset+11 ) = ' (deg)'
1261+ iOffAcc = iOffset+11
12601262
12611263
12621264 elseif (p% UAmod == UA_HGM .or. p% UAMod == UA_HGMV .or. p% UAMod == UA_OYE .or. p% UAMod == UA_HGMV360) then
@@ -1290,16 +1292,19 @@ subroutine UA_Init_Outputs(InitInp, p, y, InitOut, errStat, errMsg)
12901292 InitOut% WriteOutputUnt(iOffset+18 ) = ' (-)'
12911293 InitOut% WriteOutputUnt(iOffset+19 ) = ' (-)'
12921294 InitOut% WriteOutputUnt(iOffset+20 ) = ' (-)'
1295+ iOffAcc = iOffset+20
12931296
12941297
12951298 if (p% UAmod == UA_HGMV) then
12961299 InitOut% WriteOutputHdr(iOffset+21 ) = trim (chanPrefix)// ' x5'
12971300 InitOut% WriteOutputUnt(iOffset+21 ) = ' (-)'
1301+ iOffAcc = iOffset+21
12981302 else if (p% UAmod == UA_HGMV360) then
12991303 InitOut% WriteOutputHdr(iOffset+21 ) = trim (chanPrefix)// ' Q'
13001304 InitOut% WriteOutputHdr(iOffset+22 ) = trim (chanPrefix)// ' Qdot'
13011305 InitOut% WriteOutputUnt(iOffset+21 ) = ' (-)'
13021306 InitOut% WriteOutputUnt(iOffset+22 ) = ' (-)'
1307+ iOffAcc = iOffset+22
13031308 end if
13041309
13051310 elseif (p% UAMod == UA_BV) then
@@ -1342,6 +1347,7 @@ subroutine UA_Init_Outputs(InitInp, p, y, InitOut, errStat, errMsg)
13421347 InitOut% WriteOutputUnt(iOffset+24 ) = ' (-)'
13431348 InitOut% WriteOutputUnt(iOffset+25 ) = ' (m/s)'
13441349 InitOut% WriteOutputUnt(iOffset+26 ) = ' (m/s)'
1350+ iOffAcc = iOffset+26
13451351
13461352 else if (p% UAmod == UA_Baseline .or. p% UAMod == UA_Gonzalez .or. p% UAMod == UA_MinnemaPierce) then
13471353
@@ -1423,10 +1429,19 @@ subroutine UA_Init_Outputs(InitInp, p, y, InitOut, errStat, errMsg)
14231429 InitOut% WriteOutputUnt(iOffset+43 ) = ' (-)'
14241430 InitOut% WriteOutputUnt(iOffset+44 ) = ' (-)'
14251431 InitOut% WriteOutputUnt(iOffset+45 ) = ' (deg)'
1432+ iOffAcc = iOffset+45
14261433
14271434 else
14281435 call SetErrStat( ErrID_Fatal, ' Programming error UAmod case not accounted for.' , ErrStat, ErrMsg, RoutineName ); return
14291436 end if
1437+
1438+ ! Quasi-steady airfoil coefficients at quarter chord (Q) and three quarter chord (T)
1439+ iOffAcc = iOffAcc + 1 ; InitOut% WriteOutputHdr(iOffAcc) = trim (chanPrefix)// ' Cl_qs_Q' ; InitOut% WriteOutputUnt(iOffAcc) = ' (-)'
1440+ iOffAcc = iOffAcc + 1 ; InitOut% WriteOutputHdr(iOffAcc) = trim (chanPrefix)// ' Cd_qs_Q' ; InitOut% WriteOutputUnt(iOffAcc) = ' (-)'
1441+ iOffAcc = iOffAcc + 1 ; InitOut% WriteOutputHdr(iOffAcc) = trim (chanPrefix)// ' Cm_qs_Q' ; InitOut% WriteOutputUnt(iOffAcc) = ' (-)'
1442+ iOffAcc = iOffAcc + 1 ; InitOut% WriteOutputHdr(iOffAcc) = trim (chanPrefix)// ' Cl_qs_T' ; InitOut% WriteOutputUnt(iOffAcc) = ' (-)'
1443+ iOffAcc = iOffAcc + 1 ; InitOut% WriteOutputHdr(iOffAcc) = trim (chanPrefix)// ' Cd_qs_T' ; InitOut% WriteOutputUnt(iOffAcc) = ' (-)'
1444+ iOffAcc = iOffAcc + 1 ; InitOut% WriteOutputHdr(iOffAcc) = trim (chanPrefix)// ' Cm_qs_T' ; InitOut% WriteOutputUnt(iOffAcc) = ' (-)'
14301445
14311446 end do
14321447 end do
@@ -3862,6 +3877,7 @@ subroutine UA_CalcOutput( i, j, t, u_in, p, x, xd, OtherState, AFInfo, y, misc,
38623877
38633878 subroutine CalcWriteOutputs ()
38643879 integer :: iOffset
3880+ integer :: iOffAcc ! Accumulated offset
38653881 iOffset = (i-1 )* p% NumOuts + (j-1 )* p% nNodesPerBlade* p% NumOuts
38663882
38673883 y% WriteOutput(iOffset+ 1 ) = u% alpha* R2D
@@ -3877,6 +3893,7 @@ subroutine CalcWriteOutputs()
38773893 y% WriteOutput(iOffset+ 9 ) = alpha_34* R2D
38783894 y% WriteOutput(iOffset+10 ) = Tu
38793895 y% WriteOutput(iOffset+11 ) = alpha_34* R2D
3896+ iOffAcc = iOffset+11
38803897
38813898 elseif (p% UAMod == UA_HGM .or. p% UAMod == UA_HGMV .or. p% UAMod == UA_OYE .or. p% UAMod == UA_HGMV360) then
38823899 y% WriteOutput(iOffset+ 8 ) = u% omega* R2D
@@ -3893,12 +3910,15 @@ subroutine CalcWriteOutputs()
38933910 y% WriteOutput(iOffset+18 ) = k
38943911 y% WriteOutput(iOffset+19 ) = misc% weight(i,j)
38953912 y% WriteOutput(iOffset+20 ) = cl_fa
3913+ iOffAcc = iOffset+20
38963914
38973915 if (p% UAMod == UA_HGMV) then
38983916 y% WriteOutput(iOffset+21 ) = x_in% x(5 ) ! x%element(i,j)%x(5)
3917+ iOffAcc = iOffset+21
38993918 else if (p% UAMod == UA_HGMV360) then
39003919 y% WriteOutput(iOffset+21 ) = x_in% x(6 ) ! x%element(i,j)%x(6)
39013920 y% WriteOutput(iOffset+22 ) = x_in% x(7 ) ! x%element(i,j)%x(7)
3921+ iOffAcc = iOffset+22
39023922 end if
39033923
39043924 elseif (p% UAMod == UA_BV) then
@@ -3921,6 +3941,7 @@ subroutine CalcWriteOutputs()
39213941 y% WriteOutput(iOffset+24 ) = delN
39223942 y% WriteOutput(iOffset+25 ) = u% v_ac(1 )
39233943 y% WriteOutput(iOffset+26 ) = u% v_ac(2 )
3944+ iOffAcc = iOffset+26
39243945
39253946 else
39263947 ! Baseline, Gonzales, MinnemaPierce
@@ -3976,8 +3997,23 @@ subroutine CalcWriteOutputs()
39763997 y% WriteOutput(iOffset+43 ) = k
39773998 y% WriteOutput(iOffset+44 ) = misc% weight(i,j)
39783999 y% WriteOutput(iOffset+45 ) = KC% alpha_filt_cur* R2D
4000+ iOffAcc = iOffset+45
39794001
39804002 end if
4003+
4004+ ! --- Quasi steady airfoil coefficients at alpha
4005+ call AFI_ComputeAirfoilCoefs( u% alpha, u% Re, u% UserProp, AFInfo, AFI_interp, ErrStat2, ErrMsg2); call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
4006+ iOffAcc= iOffAcc+1 ; y% WriteOutput(iOffAcc) = AFI_interp% Cl
4007+ iOffAcc= iOffAcc+1 ; y% WriteOutput(iOffAcc) = AFI_interp% Cd
4008+ iOffAcc= iOffAcc+1 ; y% WriteOutput(iOffAcc) = AFI_interp% Cm
4009+
4010+ ! --- Quasi steady airfoil coefficients at alpha_34
4011+ alpha_34 = Get_Alpha34(u% v_ac, u% omega, p% d_34_to_ac* p% c(i,j))
4012+ call AFI_ComputeAirfoilCoefs( alpha_34, u% Re, u% UserProp, AFInfo, AFI_interp, ErrStat2, ErrMsg2); call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
4013+ iOffAcc= iOffAcc+1 ; y% WriteOutput(iOffAcc) = AFI_interp% Cl
4014+ iOffAcc= iOffAcc+1 ; y% WriteOutput(iOffAcc) = AFI_interp% Cd
4015+ iOffAcc= iOffAcc+1 ; y% WriteOutput(iOffAcc) = AFI_interp% Cm
4016+
39814017 end subroutine CalcWriteOutputs
39824018
39834019 ! > Calc Outputs for Boeing-Vertol dynamic stall
0 commit comments