Simulation Core
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 
 

67 righe
2.9 KiB

  1. subroutine RTable_MainSolver
  2. use SimulationVariables !@
  3. IMPLICIT NONE
  4. Call RTable_Inputs
  5. if (data%State%RTable%Throttle<=0.d0) then
  6. data%State%RTable%K_throttle = 1
  7. end if
  8. if ( (any(data%State%RTable%AssignmentSwitch==(/1,2,3,4,5,8,9,10,11/))) .and. (data%State%RTable%Switch==-1) ) then
  9. data%State%RTable%SoundBlower = .true.
  10. data%State%RTable%BLWR = 1
  11. !======================= Rotary Table Rate_limit =======================
  12. if (((data%State%RTable%N_new-data%State%RTable%N_old)/data%State%RTable%time_step)>data%State%RTable%RateChange) then
  13. data%State%RTable%N_ref = (data%State%RTable%RateChange*data%State%RTable%time_step)+data%State%RTable%N_old
  14. else if (((data%State%RTable%N_old-data%State%RTable%N_new)/data%State%RTable%time_step)>data%State%RTable%RateChange) then
  15. data%State%RTable%N_ref = (-data%State%RTable%RateChange*data%State%RTable%time_step)+data%State%RTable%N_old
  16. else
  17. data%State%RTable%N_ref = data%State%RTable%N_new
  18. end if
  19. !=======================================================================
  20. CALL RTable_OnModeSolver
  21. else if ( (any(data%State%RTable%AssignmentSwitch==(/1,2,3,4,5,8,9,10,11/))) .and. (data%State%RTable%Switch==1) .and. (data%State%RTable%K_throttle==1) ) then
  22. data%State%RTable%SoundBlower = .true.
  23. data%State%RTable%BLWR = 1
  24. !======================= Rotary Table Rate_limit =======================
  25. if (((data%State%RTable%N_new-data%State%RTable%N_old)/data%State%RTable%time_step)>data%State%RTable%RateChange) then
  26. data%State%RTable%N_ref = (data%State%RTable%RateChange*data%State%RTable%time_step)+data%State%RTable%N_old
  27. else if (((data%State%RTable%N_old-data%State%RTable%N_new)/data%State%RTable%time_step)>data%State%RTable%RateChange) then
  28. data%State%RTable%N_ref = (-data%State%RTable%RateChange*data%State%RTable%time_step)+data%State%RTable%N_old
  29. else
  30. data%State%RTable%N_ref = data%State%RTable%N_new
  31. end if
  32. !=======================================================================
  33. CALL RTable_OnModeSolver
  34. else
  35. if((any(data%State%RTable%AssignmentSwitch==(/1,2,3,4,5,8,9,10,11/))) .and. (data%State%RTable%Switch/=0)) then
  36. data%State%RTable%SoundBlower = .true.
  37. data%State%RTable%BLWR = 1
  38. else
  39. data%State%RTable%SoundBlower = .false.
  40. data%State%RTable%BLWR = 0
  41. end if
  42. Call RTable_OffMode
  43. data%State%RTable%K_throttle = 0
  44. end if
  45. Call RTable_Outputs
  46. data%State%RTable%N_old = data%State%RTable%N_ref
  47. end subroutine RTable_MainSolver