Skip to content

Commit ef8a459

Browse files
committed
Try to fix simulations failing to converge with structural controller enabled
1 parent 75db7bd commit ef8a459

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

modules/openfast-library/src/FAST_Solver.f90

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,15 +488,25 @@ subroutine SetVarSolveFlags()
488488
do i = 1, size(SrcMod%Vars%y)
489489
associate (Var => SrcMod%Vars%y(i))
490490
if (.not. MV_EqualDL(Mapping%SrcDL, Var%DL)) cycle
491-
call MV_SetFlags(Var, VF_Solve)
491+
select case (Var%Field)
492+
case (FieldForce, FieldMoment)
493+
call MV_SetFlags(Var, VF_Solve)
494+
case (FieldScalar)
495+
if (Var%DerivOrder == 2) call MV_SetFlags(Var, VF_Solve)
496+
end select
492497
end associate
493498
end do
494499

495500
! Add flag to destination variable
496501
do i = 1, size(DstMod%Vars%u)
497502
associate (Var => DstMod%Vars%u(i))
498503
if (.not. MV_EqualDL(Mapping%DstDL, Var%DL)) cycle
499-
call MV_SetFlags(Var, VF_Solve)
504+
select case (Var%Field)
505+
case (FieldForce, FieldMoment)
506+
call MV_SetFlags(Var, VF_Solve)
507+
case (FieldScalar)
508+
if (Var%DerivOrder == 2) call MV_SetFlags(Var, VF_Solve)
509+
end select
500510
end associate
501511
end do
502512

modules/servodyn/src/ServoDyn.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ subroutine SrvD_InitVars(InitInp, u, p, x, y, m, InitOut, Linearize, ErrStat, Er
643643
do k = 1, size(StCInds)
644644
call MV_AddVar(InitOut%Vars%x, Desc, FieldScalar, DatLoc(SrvD_x_BStC_StC_x, j), &
645645
iAry=StCInds(k), jAry=i, &
646-
Flags=VF_DerivOrder2+VF_RotFrame, &
646+
Flags=ior(VF_DerivOrder2,VF_RotFrame), &
647647
LinNames=[trim(Desc)//StCLabels(StCInds(k))], &
648648
Perturb=xPerturb)
649649
end do
@@ -696,7 +696,7 @@ subroutine SrvD_InitVars(InitInp, u, p, x, y, m, InitOut, Linearize, ErrStat, Er
696696

697697
call MV_AddVar(InitOut%Vars%u, "BlPitch", FieldScalar, &
698698
DatLoc(SrvD_u_BlPitch), &
699-
Flags=VF_RotFrame + VF_2PI, &
699+
Flags=ior(VF_RotFrame, VF_2PI), &
700700
Num=size(u%BlPitch), &
701701
Perturb=uPerturbAng, &
702702
LinNames=[('BlPitch('//trim(Num2LStr(i))//'), rad', i = 1, size(u%BlPitch))])

0 commit comments

Comments
 (0)