Skip to content

Conversation

@lorenzoschena
Copy link

yes

Feature or improvement description

This update enables ZMQ communication with OpenFAST. Two connections are possible:

  1. PUB-SUB: OpenFAST results are published to a socket and all subscriber can receive updates in real-time
  2. REQ-REP: OpenFAST can query with specific requests a socket.

Both updates can follow different time steps, default is intended to be the DT input of openfast.

FAST_Registry has been modified to handle all variables that are useful in the context of these communications. The .fst templates are to be found in /zmq_coupling_tests/templatesDir/.

In this PR, the communication is possible for only single wind turbines; developments to FAST.Farm is going to follow.

Related issue, if one exists

Impacted areas of the software

Most of the modifications made are in FAST_Subs. However, minor adjustments have also been made to ServoDyn to handle possible override from ZMQ.

Additional supporting information

Needs two requirements:

  1. cJSON: to compact inbound and outbound message with JSON format
  2. ZMQ: to open connection sockets in C Language. The connections are handled by C modules and imported in Fortran.

A brief white paper will be added in the documentation to use this module.

Test results, if applicable

  • ex01 tests consistency between received values via PUB-SUB socket and output of OpenFAST.
  • ex02 tests consistency between sent values via REQ-REP socket and input received by OpenFAST.
  • ex03 tests both connections at the same time.

@andrew-platt
Copy link
Collaborator

Does this PR add to #2153, or replace it?

Apologies for our delays on merging #2153. I am a little behind on merges.

@lorenzoschena
Copy link
Author

Hello Andy,

No problems at all! It replaces is, we can delete the previous one.

@deslaughter
Copy link
Collaborator

@lorenzoschena Is this functionality that you're still wanting to get into OpenFAST? If so, would you be willing or able to update this PR to work for the dev-tc branch?

@lorenzoschena
Copy link
Author

Hi @deslaughter, Yes I'm definitely interested. However, given the different version changes since this was opened (I believe v3.3-3.5), it would be great to sync first. I'd like to align on the best integration strategy/location before I begin the refactor, if that works for you.

@deslaughter
Copy link
Collaborator

@lorenzoschena I'm glad to hear that you'd still like to work on this. I agree that we need to align on the best integration strategy. We've just released 4.2.0, but we'll be moving to OpenFAST 5.0 very soon and it has significant changes to the glue code where your changes live. We'll be merging the dev-tc branch (the 5.0 development branch) into dev within the next week. I'll send you a message after that merge is complete and we can work out how to move forward from there. Thanks!

@lorenzoschena
Copy link
Author

@deslaughter perfect then, sounds like a plan. Looking forward to finalize this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants