Openfast: ДинамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массовых свойств Π»ΠΎΠΏΠ°Ρ‚ΠΊΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ модСлирования Π² OpoenFAST ΠΈ ElastoDyn

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 1 ΠΎΠΊΡ‚. 2019  Β·  12ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: OpenFAST/openfast

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OpenFAST,

@jjonkman

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ динамичСски ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ массовыС свойства лопасти Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ симуляции β„– 253. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ я попытался ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ массу лопастного элСмСнта Π²ΠΎ врСмя модСлирования, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ AddMass Π² ElastoDyn.f90 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

END SUBROUTINE Coeff
!----------------------------------------------------------------------------------------------------------------------------------
!**********************************************************************************************************************************
!> This routine is used to add mass to blade elements at a given simulation time
SUBROUTINE AddMass(p)
!..................................................................................................................................

      ! Passed variables

   TYPE(ED_ParameterType),        INTENT(INOUT)    :: p                             !< Parameters of the structural dynamics module


      ! Local variables.


   INTEGER(IntKi)               :: J                                               ! Loops through nodes / elements.
   INTEGER(IntKi)               :: K                                               ! Loops through blades.

   !...............................................................................................................................
   ! Calculate the new blade element mass 
   !...............................................................................................................................

  print*,"Hello Laurence u r in Subroutine AddMass"

   DO K = 1,p%NumBl          ! Loop through the blades

  print*,"Hello Laurence u r in Blades Loop"

      DO J = 1,p%BldNodes    ! Loop through the blade nodes / elements


      ! Calculate the mass of the current element

  print*,"Hello Laurence u r in Nodes Loop"

         p%MassB(K,J) = 1.5*p%MassB(K,J)
         p%BElmntMass(J,K) = p%MassB(K,J)*p%DRNodes(J)                        ! Mass of blade element J


      ENDDO ! J - Blade nodes / elements

   ENDDO    ! K - Blades

END SUBROUTINE AddMass

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° AddMass вызываСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… модСлирования Π² FAST_Prog.f90 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

!...............................................................................................................................
   ! Time Stepping:
   !...............................................................................................................................         

   DO n_t_global = Restart_step, Turbine(1)%p_FAST%n_TMax_m1 

      ! call AddMass routine at given simulation time 

      IF (n_t_global == 100) THEN
      print*,"Hello Laurence u r at simulation time 100"
            CALL AddMass(p_ED)
      END IF

ПослС этого я смог ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ OpenFAST Π±Π΅Π· ошибок.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, происходит Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массы лопастного элСмСнта, я Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π’Π•Π‘Π’ 18 (5MW_Land_Dll_WTurb) с Π½ΠΎΠ²Ρ‹ΠΌ OpenFAST.exe ΠΈ сравнил Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с исходным OpenFAST.exe. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ для ΠΎΠ±Π΅ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… Π½Π΅Ρ‚!
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ OpenFAST.f90 Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ AddMass ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» DO Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ AddMass, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ сообщСния.
cmd

На ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ снимкС экрана ясно Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»Π° Ρ†ΠΈΠΊΠ» DO. Π― Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, доступСн Π»ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ElastoDyn (p) для ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ AddMass Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚?
Если Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ElastoDyn (p) опрСдСляСтся ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ сохраняСтся Π½Π° протяТСнии всСго модСлирования, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² процСссС модСлирования? И ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ?
Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°!

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями

ЛоурСнс

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

На самом Π΄Π΅Π»Π΅, это Π»ΡƒΡ‡ΡˆΠ°Ρ ссылка Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹: https://openfast.readthedocs.io/en/dev/source/dev/types_files.html.

ВсС 12 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

МнС каТСтся странным, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ p_ED Π² FAST_Prog.f90. Π― ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Turbine(1)%ED%p . Если Π²Ρ‹ сами Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ p_ED , Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, поэтому ΠΎΠ½Π° Π»ΠΈΠ±ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ»Ρ‹, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкам сСгмСнтации.

Дорогая Π‘ΠΎΠ½Π½ΠΈ,

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Π·Π° быстрый ΠΎΡ‚Π²Π΅Ρ‚.
Π― сам добавляю Ρ‚ΠΈΠΏ p_ED Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ FAST_prog.f90, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Fortran Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Matlab, Π½ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, это Π½Π΅ Ρ‚Π°ΠΊ.
ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я использовал Turbine(1)%ED%p Π² FAST_Prog.f90, ΠΎΠ½ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΏΡ€ΠΎΡˆΠ΅Π» Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ‚Π»ΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» массу Π»ΠΎΠΏΠ°Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ элСмСнта.
Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π»ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€Π΅ΠΆΠΈΠΌΠ° лСзвия, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΆΠ΅ΡΡ‚ΠΊΠΎΡΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Π»ΠΊΠ° ΠΈ ΠΊΡ€ΠΎΠΌΠΊΠΈ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ массы элСмСнта лСзвия.
НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ этот вопрос ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρƒ мСня навСрняка появятся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вопросы ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅.

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями
ЛоурСнс

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ @bjonkman ,

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послСднСй ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ я внСс Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² исходный ΠΊΠΎΠ΄ ElstoDyn.f90, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ масса элСмСнта лСзвия p%BElmntMass(J,K) измСняСтся Π² Ρ…ΠΎΠ΄Π΅ модСлирования, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² SUBROUTINE Coeff(p,InputFileData, ErrStat, ErrMsg) . Для этого я создал SUBROUTINE UpdateCoeff(p, ErrStat, ErrMsg) , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ являСтся ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Coeff () Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ - ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° UpdateCoeff () Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ED_InputFile , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° UpdateCoeff Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ED_CalcOutput Π² сСрСдинС модСлирования, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ InputFileData ΡƒΠΆΠ΅ уничтоТаСтся послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ UpdateCoeff Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

SUBROUTINE ED_CalcOutput( t, u, p, x, xd, z, OtherState, y, m, ErrStat, ErrMsg )
!..................................................................................................................................
!...............................................................................................................................
   ! set the values in the AllOuts array:
   !...............................................................................................................................
      ! Define the output channel specifying the current simulation time:

   m%AllOuts(  Time) = REAL( t, ReKi )

      ! Change Blade Element Masses:

    IF ( t == 0.50 ) THEN

        p%MassB(K,J) = 1.5*p%MassB(K,J)

        ! start with recalculation of the Parameters in subroutine Ceoff()

        CALL UpdateCoeff(p, ErrStat, ErrMsg)

    END IF
! This part is done to generate the blade mass element SpnMb as an output to see if the masses changed or not, and it did work  
   DO K = 1,p%NumBl
      DO I = 1, p%NBlGages

                BlElmMass = p%BElmntMass(I,K)

        m%AllOuts(  SpnMb(I,K)) = REAL( BlElmMass, R8Ki)

      END DO !I
   END DO !K

Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΈΠ·-Π·Π° отсутствия Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ED_Inputfile Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ UpdateCoeff, я сгСнСрировал Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ p% Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ InputFileData% Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Coeff ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… послС этого Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ UpdateCoeff ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

SUBROUTINE Coeff(p,InputFileData, ErrStat, ErrMsg)
!..................................................................................................................................
   ELSE                    ! 3-blader
      p%Hubg1Iner = InputFileData%HubIner
      p%HubInerX = InputFileData%HubIner                ! Line 4799 where the 1st error occured 
      p%Hubg2Iner = 0.0
   ENDIF

! Calculate the tower shape functions (all derivatives):

      p%TwrFASF(1,J,2) = SHP( p%HNodesNorm(J), p%TwrFlexL, InputFileData%TwFAM1Sh(:), 2, ErrStat, ErrMsg )
      p%TwrFASF(2,J,2) = SHP( p%HNodesNorm(J), p%TwrFlexL, InputFileData%TwFAM2Sh(:), 2, ErrStat, ErrMsg )
      p%TwrFASF(1,J,1) = SHP( p%HNodesNorm(J), p%TwrFlexL, InputFileData%TwFAM1Sh(:), 1, ErrStat, ErrMsg )
      p%TwrFASF(2,J,1) = SHP( p%HNodesNorm(J), p%TwrFlexL, InputFileData%TwFAM2Sh(:), 1, ErrStat, ErrMsg )
      p%TwrFASF(1,J,0) = SHP( p%HNodesNorm(J), p%TwrFlexL, InputFileData%TwFAM1Sh(:), 0, ErrStat, ErrMsg )
      p%TwrFASF(2,J,0) = SHP( p%HNodesNorm(J), p%TwrFlexL, InputFileData%TwFAM2Sh(:), 0, ErrStat, ErrMsg )

      p%TwFAM1ShX(:) = InputFileData%TwFAM1Sh(:)     ! Line 5195 where the 2nd error occured 
      p%TwFAM2ShX(:) = InputFileData%TwFAM2Sh(:)

END SUBROUTINE Coeff

!**********************************************************************************************************************************

   SUBROUTINE UpdateCoeff(p, ErrStat, ErrMsg)
!..................................................................................................................................
    ELSE                    ! 3-blader
      p%Hubg1Iner = p%HubInerX
      p%Hubg2Iner = 0.0
   ENDIF

      ! Calculate the tower shape functions (all derivatives):

      p%TwrFASF(1,J,2) = SHP( p%HNodesNorm(J), p%TwrFlexL, p%TwFAM1ShX(:), 2, ErrStat, ErrMsg )

Π― сдСлал это для всСх InputFileData% Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Coeff (), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΠ» Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² SetOtherParameters () ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

SUBROUTINE SetOtherParameters( p, InputFileData, ErrStat, ErrMsg )
!..................................................................................................................................
  CALL AllocAry(p%TwFAM1ShX,  PolyOrd,          'TwFAM1ShX' , ErrStat, ErrMsg ); IF ( ErrStat /= ErrID_None ) RETURN

Но ΠΊΠΎΠ³Π΄Π° я Π½Π°Ρ‡Π°Π» ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Ρ‚Π°ΠΊΡƒΡŽ β€‹β€‹ΠΎΡˆΠΈΠ±ΠΊΡƒ:

grafik

grafik

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я ошибаюсь Π² Π·Π°Ρ‰ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
Π― надСюсь, Ρ‡Ρ‚ΠΎ смогу ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΈ Π±Ρ‹Π» Π±Ρ‹ Ρ€Π°Π΄, Ссли Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями
ЛоурСнс

PS: Π― взял Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΈΠ· всСго ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ измСняСтС ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ рССстра, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сборку Π΄Π²Π°ΠΆΠ΄Ρ‹ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Visual Studio Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ * _Types.f90, Π½ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² этих Ρ‚ΠΈΠΏΠΎΠ², Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сборка с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсиСй Ρ„Π°ΠΉΠ»Π° * _Types.f90 Π΄ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ сборки). Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ ошибки (Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ).

Одна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π²ΠΈΠΆΡƒ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ваш массив p%TwFAM1SHX Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΈ массив InputFileData%TwFAM1Sh . Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Π’ΠΎΡ‚ распрСдСлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Π²ΠΈΠΆΡƒ для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива:

CALL AllocAry  ( InputFileData%TwFAM1Sh,  PolyOrd-1, 'TwFAM1Sh'  , ErrStat, ErrMsg )

Π’Π°Ρˆ отводится Π½Π° ΠΎΠ΄ΠΈΠ½ элСмСнт большС.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ dev , процСсс сборки для Ρ„Π°ΠΉΠ»ΠΎΠ² _Types.f90 измСнился: ΠΎΠ½ΠΈ большС Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартного процСсса сборки. ВмСсто этого посмотритС это: https://raf-openfast.readthedocs.io/en/feature-registry_rework/source/dev/types_files.html~~

ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ: см. ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ @rafmudaf Π½ΠΈΠΆΠ΅ для ссылки.

На самом Π΄Π΅Π»Π΅, это Π»ΡƒΡ‡ΡˆΠ°Ρ ссылка Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹: https://openfast.readthedocs.io/en/dev/source/dev/types_files.html.

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ OpenFAST Devloper,
@jjonkman
@bjonkman
Π― ΠΌΠΎΠ³ Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ массу элСмСнтов лопасти Π² процСссС модСлирования, ΠΈ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ с Π²Π°ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слоТСния массы.
Π― ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ» массу Π»ΠΎΠΏΠ°Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… элСмСнтов, ΡƒΠΌΠ½ΠΎΠΆΠΈΠ² ΠΌΠ°ΡΡΠΎΠ²ΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π»ΠΎΠΏΠ°Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ элСмСнта Π² 1,5 Ρ€Π°Π·Π°. МассовоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ происходило ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ED-CalcOutput ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ UpdateCoeff Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ врСмя модСлирования (Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ t = 0,5 [с]). Π― ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΠ» Ρ„Π°ΠΉΠ» ElastoDyn.f90, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС измСнСния Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.

ElastoDyn.txt

ПослС компиляции OpenFAST я Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» тСст 18 (5MW_Land_DLL_WTurb) ΠΈ построил массы элСмСнтов лСзвия для списка ΡƒΠ·Π»ΠΎΠ² Π»Π΅Π·Π²ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅Π½Π·ΠΎΠ΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ BldGagNd Π½Π° рисункС 1, эти сигналы (SpnMb) я сгСнСрировал сам, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ слоТСниС физичСской массы. На рисункС 2 я сравнил ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€ΠΎΡ‚ΠΎΡ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии OpenFAST ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ OpenFAST + AddMass.

Рисунок_1.pdf

Рисунок_2.pdf

ЀактичСски, я искупил постоянноС сниТСниС скорости Ρ€ΠΎΡ‚ΠΎΡ€Π° послС добавлСния массы Π² 1,5 Ρ€Π°Π·Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта лопасти, Π½ΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ этого Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚!
Мои оТидания Π²Π΅Ρ€Π½Ρ‹? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ моя рСализация массового слоТСния?

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями
ЛоурСнс

@jjonkman @bjonkman
Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ вопрос, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» ElastoDyn.dat, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ коэффициСнт.
_AddMassF_ ΠΈ Time _AddMassT_ для массового добавлСния Π² качСствС InputData, поэтому ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ OpenFAST ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ врСмя ΠΈΠ»ΠΈ коэффициСнт массового добавлСния:
Plot_1

Π― ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» эти Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ElastoDyn_Registry.txt ΠΈ Π² ElastoDyn_IO.f90.
Π― ΠΌΠΎΠ³ Π±Ρ‹ послС этого ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ OpenFAST, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ, Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ такая ошибка:
Plot_2

Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… Π²Π²ΠΎΠ΄Π° ΠΈΠ· Ρ„Π°ΠΉΠ»Π°? Π’Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ строки CALL ReadVar() ΠΈ помСстили ΠΈΡ… послС ΠΏΡ€ΠΎΠ±Π΅Π»Π°, Π³Π΄Π΅ написано PtfmYIner ?

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сигналы ΠΎΡ‚ ServoDyn Π² ElstoDyn? Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π² ElastoDyn Π΅ΡΡ‚ΡŒ сигналы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ServoDyn, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
`` ''
! ................................................. .................................................. ............................
! Π’Ρ‹Ρ…ΠΎΠ΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ServoDyn
! ................................................. .................................................. ............................

y% Yaw = x% QT (DOF_Yaw)
y% YawRate = x% QDT (DOF_Yaw)
y% YawAngle = x% QT (DOF_Yaw) + x% QT (DOF_Y)! Π³Ρ€ΡƒΠ±ΠΎΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ошибки рыскания ... (Π±Π΅Π· вычитания Π΅Π΅ ΠΈΠ· направлСния Π²Π΅Ρ‚Ρ€Π°)
y% BlPitch = u% BlPitchCom! OtherState% BlPitch
y% LSS_Spd = x% QDT (DOF_GeAz)
y% HSS_Spd = ABS (p% GBRatio) * x% QDT (DOF_GeAz)
y% RotSpeed ​​= x% QDT (DOF_GeAz) + x% QDT (DOF_DrTr)

Now I’m trying to do exact the opposite. I want to generate a signal in ServoDyn to use it in ElasoDyn.
To do that I defined first an output signal 
`y%BlPitchED(K) = p%BlPitchF(K)`
Then I allocated this signal in SrvD_OutputType data structure (y)

Π ΠΠ‘ΠŸΠ Π•Π”Π•Π›Π•ΠΠ˜Π• Π’Π«Π—ΠžΠ’ΠžΠ’ (y% BlPitchED, p% NumBl, 'BlPitchED', ErrStat2, ErrMsg2)
CALL CheckError (ErrStat2, ErrMsg2)
Π•Π‘Π›Π˜ (ErrStat> = AbortErrLev) Π’ΠžΠ—Π’Π ΠΠ’
`` Afterthat I defended this output in ServoDyn_Registry.txt typedef ^ OutputType ReKi BlPitchED {:} - - "Π—Π°Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ³Π»Ρ‹ Π½Π°ΠΊΠ»ΠΎΠ½Π° лопастСй (ElastoDyn)" Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹`
Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот сигнал Π² ElstoDyn?
Бпасибо Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ @LaurenceWETI ,

Π’ структурС модуляции FAST / OpenFAST, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ связаны вмСстС, Π²Ρ…ΠΎΠ΄Ρ‹ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ согласованными, Ρ‚. Π•. Π’Ρ…ΠΎΠ΄Ρ‹ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ Π² ServoDyn, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ становится Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² ElastoDyn, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ Π² ServoDyn, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄ Π² ElastoDyn, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ OpenFAST, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ ServoDyn ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ Π² ElastoDyn. НапримСр, посмотритС, ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ServoDyn BlPitchCom ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ElastoDyn.

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями,

@jjonkman спасибо Π·Π° быстрый ΠΎΡ‚Π²Π΅Ρ‚

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ