@@ -855,15 +855,19 @@ subroutine FAST_CFD_Solution0(iTurb_c, ErrStat_c, ErrMsg_c) BIND (C, NAME='FAST_
855
855
856
856
end subroutine FAST_CFD_Solution0
857
857
! ==================================================================================================================================
858
- subroutine FAST_CFD_InitIOarrays_SubStep (iTurb , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_InitIOarrays_SubStep' )
858
+ subroutine FAST_CFD_InitIOarrays_SubStep (iTurb_c , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_InitIOarrays_SubStep' )
859
859
! DEC$ ATTRIBUTES DLLEXPORT::FAST_CFD_InitIOarrays_SubStep
860
860
IMPLICIT NONE
861
861
#ifndef IMPLICIT_DLLEXPORT
862
862
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_InitIOarrays_SubStep
863
863
#endif
864
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
864
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
865
865
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
866
866
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
867
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
868
+
869
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
870
+ iTurb = int (iTurb_c,IntKi) + 1
867
871
868
872
call FAST_InitIOarrays_SubStep_T(t_initial, Turbine(iTurb), ErrStat, ErrMsg )
869
873
@@ -1159,22 +1163,25 @@ subroutine FAST_CFD_Prework(iTurb_c, ErrStat_c, ErrMsg_c) BIND (C, NAME='FAST_CF
1159
1163
1160
1164
end subroutine FAST_CFD_Prework
1161
1165
! ==================================================================================================================================
1162
- subroutine FAST_CFD_UpdateStates (iTurb , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_UpdateStates' )
1166
+ subroutine FAST_CFD_UpdateStates (iTurb_c , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_UpdateStates' )
1163
1167
! DEC$ ATTRIBUTES DLLEXPORT::FAST_CFD_UpdateStates
1164
1168
IMPLICIT NONE
1165
1169
#ifndef IMPLICIT_DLLEXPORT
1166
1170
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_UpdateStates
1167
1171
#endif
1168
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
1172
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
1169
1173
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
1170
1174
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
1175
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
1171
1176
1177
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
1178
+ iTurb = int (iTurb_c,IntKi) + 1
1172
1179
1173
1180
IF ( n_t_global > Turbine(iTurb)% p_FAST% n_TMax_m1 ) THEN ! finish
1174
1181
1175
1182
! we can't continue because we might over-step some arrays that are allocated to the size of the simulation
1176
1183
1177
- if (iTurb .eq. ( NumTurbines-1 ) ) then
1184
+ if (iTurb == NumTurbines ) then
1178
1185
IF (n_t_global == Turbine(iTurb)% p_FAST% n_TMax_m1 + 1 ) THEN ! we call update an extra time in Simulink, which we can ignore until the time shift with outputs is solved
1179
1186
n_t_global = n_t_global + 1
1180
1187
ErrStat_c = ErrID_None
@@ -1198,22 +1205,25 @@ subroutine FAST_CFD_UpdateStates(iTurb, ErrStat_c, ErrMsg_c) BIND (C, NAME='FAST
1198
1205
1199
1206
end subroutine FAST_CFD_UpdateStates
1200
1207
! ==================================================================================================================================
1201
- subroutine FAST_CFD_AdvanceToNextTimeStep (iTurb , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_AdvanceToNextTimeStep' )
1208
+ subroutine FAST_CFD_AdvanceToNextTimeStep (iTurb_c , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_AdvanceToNextTimeStep' )
1202
1209
! DEC$ ATTRIBUTES DLLEXPORT::FAST_CFD_AdvanceToNextTimeStep
1203
1210
IMPLICIT NONE
1204
1211
#ifndef IMPLICIT_DLLEXPORT
1205
1212
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_AdvanceToNextTimeStep
1206
1213
#endif
1207
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
1214
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
1208
1215
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
1209
1216
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
1217
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
1210
1218
1219
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
1220
+ iTurb = int (iTurb_c,IntKi) + 1
1211
1221
1212
1222
IF ( n_t_global > Turbine(iTurb)% p_FAST% n_TMax_m1 ) THEN ! finish
1213
1223
1214
1224
! we can't continue because we might over-step some arrays that are allocated to the size of the simulation
1215
1225
1216
- if (iTurb .eq. ( NumTurbines-1 ) ) then
1226
+ if (iTurb == NumTurbines ) then
1217
1227
IF (n_t_global == Turbine(iTurb)% p_FAST% n_TMax_m1 + 1 ) THEN ! we call update an extra time in Simulink, which we can ignore until the time shift with outputs is solved
1218
1228
n_t_global = n_t_global + 1
1219
1229
ErrStat_c = ErrID_None
@@ -1234,7 +1244,7 @@ subroutine FAST_CFD_AdvanceToNextTimeStep(iTurb, ErrStat_c, ErrMsg_c) BIND (C, N
1234
1244
! CALL SC_SetInputs(Turbine(iTurb)%p_FAST, Turbine(iTurb)%SrvD%y, Turbine(iTurb)%SC, ErrStat, ErrMsg)
1235
1245
! end if
1236
1246
1237
- if (iTurb .eq. ( NumTurbines-1 ) ) then
1247
+ if (iTurb == NumTurbines ) then
1238
1248
n_t_global = n_t_global + 1
1239
1249
end if
1240
1250
@@ -1246,36 +1256,43 @@ subroutine FAST_CFD_AdvanceToNextTimeStep(iTurb, ErrStat_c, ErrMsg_c) BIND (C, N
1246
1256
1247
1257
end subroutine FAST_CFD_AdvanceToNextTimeStep
1248
1258
! ==================================================================================================================================
1249
- subroutine FAST_CFD_WriteOutput (iTurb , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_WriteOutput' )
1259
+ subroutine FAST_CFD_WriteOutput (iTurb_c , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_WriteOutput' )
1250
1260
! DEC$ ATTRIBUTES DLLEXPORT::FAST_CFD_WriteOutput
1251
1261
IMPLICIT NONE
1252
1262
#ifndef IMPLICIT_DLLEXPORT
1253
1263
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_WriteOutput
1254
1264
#endif
1255
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
1265
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
1256
1266
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
1257
1267
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
1268
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
1269
+
1270
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
1271
+ iTurb = int (iTurb_c,IntKi) + 1
1258
1272
1259
1273
CALL FAST_WriteOutput_T( t_initial, n_t_global, Turbine(iTurb), ErrStat, ErrMsg )
1260
1274
1261
1275
end subroutine FAST_CFD_WriteOutput
1262
1276
! ==================================================================================================================================
1263
- subroutine FAST_CFD_Step (iTurb , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_Step' )
1277
+ subroutine FAST_CFD_Step (iTurb_c , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_Step' )
1264
1278
IMPLICIT NONE
1265
1279
#ifndef IMPLICIT_DLLEXPORT
1266
1280
! DEC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_Step
1267
1281
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_Step
1268
1282
#endif
1269
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
1283
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
1270
1284
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
1271
1285
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
1286
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
1272
1287
1288
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
1289
+ iTurb = int (iTurb_c,IntKi) + 1
1273
1290
1274
1291
IF ( n_t_global > Turbine(iTurb)% p_FAST% n_TMax_m1 ) THEN ! finish
1275
1292
1276
1293
! we can't continue because we might over-step some arrays that are allocated to the size of the simulation
1277
1294
1278
- if (iTurb .eq. ( NumTurbines-1 ) ) then
1295
+ if (iTurb == NumTurbines ) then
1279
1296
IF (n_t_global == Turbine(iTurb)% p_FAST% n_TMax_m1 + 1 ) THEN ! we call update an extra time in Simulink, which we can ignore until the time shift with outputs is solved
1280
1297
n_t_global = n_t_global + 1
1281
1298
ErrStat_c = ErrID_None
@@ -1292,7 +1309,7 @@ subroutine FAST_CFD_Step(iTurb, ErrStat_c, ErrMsg_c) BIND (C, NAME='FAST_CFD_Ste
1292
1309
1293
1310
CALL FAST_Solution_T( t_initial, n_t_global, Turbine(iTurb), ErrStat, ErrMsg )
1294
1311
1295
- if (iTurb .eq. ( NumTurbines-1 ) ) then
1312
+ if (iTurb == NumTurbines ) then
1296
1313
n_t_global = n_t_global + 1
1297
1314
end if
1298
1315
@@ -1304,20 +1321,24 @@ subroutine FAST_CFD_Step(iTurb, ErrStat_c, ErrMsg_c) BIND (C, NAME='FAST_CFD_Ste
1304
1321
1305
1322
end subroutine FAST_CFD_Step
1306
1323
! ==================================================================================================================================
1307
- subroutine FAST_CFD_Reset_SubStep (iTurb , n_timesteps , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_Reset_SubStep' )
1324
+ subroutine FAST_CFD_Reset_SubStep (iTurb_c , n_timesteps , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_Reset_SubStep' )
1308
1325
IMPLICIT NONE
1309
1326
#ifndef IMPLICIT_DLLEXPORT
1310
1327
! DEC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_Reset_SubStep
1311
1328
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_Reset_SubStep
1312
1329
#endif
1313
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
1330
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
1314
1331
INTEGER (C_INT), INTENT (IN ) :: n_timesteps ! Number of time steps to go back
1315
1332
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
1316
1333
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
1334
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
1335
+
1336
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
1337
+ iTurb = int (iTurb_c,IntKi) + 1
1317
1338
1318
1339
CALL FAST_Reset_SubStep_T(t_initial, n_t_global- n_timesteps, n_timesteps, Turbine(iTurb), ErrStat, ErrMsg )
1319
1340
1320
- if (iTurb .eq. ( NumTurbines-1 ) ) then
1341
+ if (iTurb == NumTurbines ) then
1321
1342
n_t_global = n_t_global - n_timesteps
1322
1343
end if
1323
1344
@@ -1328,16 +1349,20 @@ subroutine FAST_CFD_Reset_SubStep(iTurb, n_timesteps, ErrStat_c, ErrMsg_c) BIND
1328
1349
1329
1350
end subroutine FAST_CFD_Reset_SubStep
1330
1351
! ==================================================================================================================================
1331
- subroutine FAST_CFD_Store_SubStep (iTurb , n_t_global , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_Store_SubStep' )
1352
+ subroutine FAST_CFD_Store_SubStep (iTurb_c , n_t_global , ErrStat_c , ErrMsg_c ) BIND (C, NAME= ' FAST_CFD_Store_SubStep' )
1332
1353
IMPLICIT NONE
1333
1354
#ifndef IMPLICIT_DLLEXPORT
1334
1355
! DEC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_Store_SubStep
1335
1356
! GCC$ ATTRIBUTES DLLEXPORT :: FAST_CFD_Store_SubStep
1336
1357
#endif
1337
- INTEGER (C_INT), INTENT (IN ) :: iTurb ! Turbine number
1358
+ INTEGER (C_INT), INTENT (IN ) :: iTurb_c ! Turbine number
1338
1359
INTEGER (C_INT), INTENT (IN ) :: n_t_global ! < loop counter
1339
1360
INTEGER (C_INT), INTENT ( OUT ) :: ErrStat_c
1340
1361
CHARACTER (KIND= C_CHAR), INTENT ( OUT ) :: ErrMsg_c(IntfStrLen)
1362
+ integer (IntKi) :: iTurb ! turbine number: Fortran indexing (starts at 1 for first turbine)
1363
+
1364
+ ! transfer turbine index number from C to Fortran indexing (0 to 1 start)
1365
+ iTurb = int (iTurb_c,IntKi) + 1
1341
1366
1342
1367
CALL FAST_Store_SubStep_T(t_initial, n_t_global, Turbine(iTurb), ErrStat, ErrMsg )
1343
1368
0 commit comments