VTK output to binary output

Hello together,
sorry for only using this forum as a helpdesk but all attemps in solving the following issue by myself unfortunately did not work out.

I currently use the vtk output files to parse the orientation and absoulte position of all nodes (19 nodes for 3 blades, 10 tower nodes, hub and nacelle). This works but is really uncomfortable as I have to deal with ~100k files for each simulation. Besides, the number format in the vtk files results in numerical errors as the coordinate systems are not anymore orthogonal and have to be fixed.

Therefore, it would be great benefit for me if I can include all these output variables in the global fast output binary instead of abusing the vtk output.
I know it is possible to declare own output variables but I do not know how to do it. I spend several hours in figuring it out but nothing works.
All the variables I need are processed in the WrVTK_AllMeshes function 1. Naively spoken I just want to redirect them to the global output binary ;-)

If someone can help me, I would be more than thankful!
Best regards
Eike

Dear Eike,

I would recommend reviewing ElastoDyn subroutine ED_CalcOutput(), which calculates the outputs to be written to the binary time-series output file (variable m%AllOuts() stores all of the possible outputs computed by ElastoDyn and variable y%WriteOutput() stores the outputs selected for inclusion in the binary time-series output file). Then modify this routine to include the outputs you want.

Best regards,

Dear Jason,
thanks a lot for your fast answer.
I’ll try it out immediately.

PS: What is the reason some variables are not meant to be output?

Best regards
Eike

Dear Eike,

I’m not really sure I understand your question, but we generally limited the FAST / OpenFAST outputs to be those that are measured in real life or those that are critical for understanding the system response. We also give the user the option to select which outputs to write to a file so as to minimize the time it takes to write outputs and their file size.

Best regards,

Dear Jason,
that’s what I meant. The user has the option to chose between a lot of output variables but not all (for example the positions of all blade nodes cannot be configured to be output easily, if I understand correctly). Wouldn’t it be nice to give the user the possibility to configure every timeseries as output?

Dear Eike,

I would think that would be a bit cumbersome in terms of code development and user input (the could be millions of possible outputs). Instead, we have chosen inputs that we would expect to be most useful to most people. The code is open source, though, so that you can customize it in a way that suits your needs.

Best regards,

Dear FAST team,

I am trying to figure out if there is an efficient (i.e. minimum source code changes) way to write any output channel into vtk format (so I can inspect it not just by time but also at different node outputs).

My understanding from reading the (FAST8) documentation is that these forces and moments (that I can plot from the .vtp file) in for example the ED_TowerPtLoads mesh are input quantities presumably derived from aerodynamics. Taken from CertTest25 at t=0s and t=60s:



(By the way, in which units are these results - kN and kN.m)

But the time-marching output just offers me for example, the force value at the tower base node (or some other selected nodes):


Ultimately, if I wish to visualize combined force and moments (in vtk format) in the output mesh (particularly with ElastoDyn results) would it be a convenient thing to do?

Please could you confirm any missing gap in understanding. Thanks.

Regards,
Juan

Dear Juan,

I’m not sure I fully understand your question or what you are trying to do.

I agree that the ED_TowerPtLoads forces and moments are the loads applied to ElastoDyn tower model as output from other modules. AeroDyn can apply aerodynamic loads on the tower, as can tower-based TMDs (from ServoDyn). But assuming you did not change this example case, only tower aerodynamic loads are enabled and the tower aerodynamic loads are expected to be small in this case. The forces and moments are expressed in N and Nm in the visualization output files.

Output TwrBsFxt is the reaction load within the tower, including the effects of applied loads, gravity loads, inertia loads, etc. I would expect the rotor aerodynamic and inertia loads to dominate in this case.

Best regards,

Dear Jason,

Thank you for your reply.

All you mentioned before is great for my understanding. Just to let you know what I’m trying to do: it is coupling the loading derived from Aerodyn module into a separate structural solver which should be acting like ElastoDyn. At the moment I am looking at reaction loads in the tower structure.

I am interested in visualizing (as much as possible) vtk output results. I wonder, if I need to check the reaction loads (over time) at the middle of the tower (i.e node 10 in the TestCert25) the vtp files are a quick way to do this but I suspect that this is not an available output channel and it will require code changes. And if so, how feasible and reallistic (I don’t want to find myself changing years of code development obviously) is to get any outlist parameter (e.g. TwrBsFxt) as an array of scalars or even better an array of “Tower Nodes” reaction force vectors written in vtk format?

Looking at the stick-figure visualization feature from another point of view, it seems that for example (as you confirmed) TowerPtLoads is an ED_InputType mesh that packs input forces and moments but no (force or moment) data for the output results (after running ElastoDyn module). In constrast, Twr_OutputLoads appears to be an AD14_OutputType mesh type for the tower output loads but I guess for different physics (i.e. drag loading). Will be possible to have some flexibility in choosing which outputs variables for any FAST module can be dumped in vtk?

Hope I am making more sense this time. Thanks in advance.

Regards,
Juan

Dear Juan,

The visualization functionality of FAST v8 and OpenFAST is implemented in the glue code rather than within each module. The visualization functionality makes use of input and output mesh data structures passed between modules to create the visualization data, e.g., reference positions and orientations of the AeroDyn and ElastoDyn meshes, aerodynamic applied loads (forces and moments) passed from AeroDyn to ElastoDyn, and motions (displacements, velocities, etc.) passed from ElastoDyn to AeroDyn. The outputs specified in the OutLists of each module (e.g., output TwrBsFxt from ElastoDyn) are not stored on these input and output mesh data structures, so, it would not be trivial to include these in the visualization output.

Twr_OutputLoads is an output from AeroDyn v14, but the visualization functionality of FAST v8 and OpenFAST does not make use of any AeroDyn v14 input and output data. Instead, the visualization functionality only supports AeroDyn v15. In fact, we plan to deprecate AeroDyn v14 soon.

Best regards,

Dear Jason,

I see. That’s what I was guessing by looking a bit at the source code.

I also understand that since OpenFAST there is a nodal outputs capability which is not available yet for tower nodes. I suppose this will allow a possible visualization of outputs loads in vtk so we can see the reactions (force and moments) across any tower node along the time.

Finally then, the reaction forces I’m able to plot from the Test25.AD_Tower*.vtp (corresponding to the Twr_OutputLoads) are different in nature to for example the reaction force at the base (TwrBsFxt) - understood, but is there relation between the 50.6625N observed at the tower base node in the AD t=60s simulation with the 103.434N in the ED t=0s? Is somehow related to the mapping force from AeroDyn to ElastoDyn?

Thank you for the clarifications.

Regards,
Juan

Correction:

Finally then, the reaction forces I’m able to plot from the Test25.AD_Tower*.vtp (corresponding to the Twr_OutputLoads)… I meant :

TYPE(MeshType)  :: TowerLoad 

Dear Juan,

There difference between the aerodynamic loads output from AeroDyn (AD_Tower) and and the aerodynamic loads input to ElastoDyn (ED_TowerPtLoads) are:

  • The AeroDyn output is a Line2 mesh with loads per unit length (e.g., N/m for force at a node) while the ElastoDyn input is a Point mesh with loads lumped at each node (e.g., N for force at a node).
  • The internal mesh-mapping within OpenFAST handles differences in the loads distributed due to the AeroDyn and ElastoDyn nodes being located at different points in space and due to the different mesh types (Line2 versus Point).

I’m not sure why you are comparing the loads at t = 60 s with those at t = 0 s, but that will also cause an additional difference. (It is probably more insightful to compare the AeroDyn output and ElastoDyn input at the same time step.)

I’m not sure I understand this comment:

Best regards,

Dear Jason,

You’re right. For a moment I thought the modules ran sort of sequentially with ED reading input data after AD simulated output results but reading what you said about the mesh mapping it is making sense. However, looking at both plots at t=0s, I wonder for example, the aerodynamic force (from AD) felt by the tower base node (which is pretty low but is not zero) where does instantaneously it comes from at the initial state? from initial conditions? and the difference in magnitude with the input (point load) in the ED mesh I suppose had something to do with the lumping?


What I meant with the previous comment was reading at the OpenFAST documentation, where it was mentioned that it allows outputting the full set of nodal info (at least for the blades for now) which I think means that these results can be visualized in vtk as I was hoping with all this discussion.


Regards,
Juan

Dear Juan,

Yes, the different magnitudes are from different units (AD: N/m; ED: N). Wind is applied already at t = 0s.

The full set of blade node outputs from ElastoDyn is not part of the visualization functionality; instead, it is similar to the OutList functionality. It simply allows the user to bypass the ElastoDyn limitation of 9 nodal outputs per blade.

Best regards,

Dear Jonkman
In the process of using FAST, I have also thought about generating visualization results through VTKoutput.
My mentor recommended me to use Paraview to process .vtp files, but I didn’t find any tutorials on how to start.
Do you have any suggestions to help a novice like me to process .vtp files to get visualized results?

Best regards
Tianhui

Dear Tianhui.Liu,

Yes, I recommend you use ParaView for the OpenFAST visualization output. You can find some introductory material on using ParaView to view OpenFAST visualization output files here: drive.google.com/file/d/17LDwMn … sp=sharing.

Best regards,

Sir,I recently run a test file(in r-test-3.0.0) by openfast3.0,but when I want to view the model through paraview,I meet some problem,I don’t see the platform,I check the VTK.file and found the platform surface.group doesn’t output.Can you help me?Thanks!
54533e1cce95d7fcd4e5f23041d894a.png

Sir,I get the answer in other post,I now know the reason about my last post,in here I have another question about visualization of paraview,how can I view the result of force applied to the wind turbine in the paraview,even result about working in the wind filed?what I need to have data or files?

Dear Hairui,

When VTK_fields = True in the FAST / OpenFAST primary input file, the VTK files will also be augmented to include data arrays, which can be used to additionally visualize orientations, velocities, accelerations, forces, and/or moments. See the Visualization section of the FAST v8 ReadMe file for more information: nrel.gov/wind/nwtc/assets/d … _FAST8.pdf.

Best regards,