Problem reading binary output file

Provide feedback, request enhancements, and get help with wind-turbine computer-aided engineering tools.

Moderators: Bonnie.Jonkman, Jason.Jonkman

Ruben.Gonzalez
Posts: 3
Joined: Wed Jul 10, 2019 8:10 am
Organization: Public University of Navarre
Location: Spain

Problem reading binary output file

Postby Ruben.Gonzalez » Tue Sep 17, 2019 6:07 am

Dear all,

After running a simulation with OpenFAST, I tried to read the binary output file I had requested. To do that, I used the function readFASTbinary provided in the Matlab toolbox. However, I got an error. To check if it was the file I had obtained, I checked the function with one of the .outb files provided: '5MW_Land_BD_DLL_WTurb.outb'. The problem appeared again: "Could not read entire 5MW_Land_BD_DLL_WTurb.outb file: read 0 of 1260063 values".

I checked the code on the function line by line and at first it appeared to run correctly, since I obtained the FIleID, number of channels and of time steps, and the first time and time increment. However, after getting the channel slopes and offsets, I couldn't get the description, units nor names of the channels. I checked with Python and noticed that 'LenDesc' should be read right after 'TimeIncr' since the description starts a few positions after. I tried on Matlab skipping 'ColScl' and 'ColOff' and I managed to get the description, units and channel names. The rest of the function didn't work.

In summary, with this code the function didn't work:

Code: Select all

    FileID       = fread( fid, 1, 'int16',machinefmt);             % FAST output file format, INT(2)

    NumOutChans  = fread( fid, 1, 'int32',machinefmt);             % The number of output channels, INT(4)
    NT           = fread( fid, 1, 'int32',machinefmt);             % The number of time steps, INT(4)

    if FileID == FileFmtID.WithTime
        TimeScl  = fread( fid, 1, 'float64',machinefmt);           % The time slopes for scaling, REAL(8)
        TimeOff  = fread( fid, 1, 'float64',machinefmt);           % The time offsets for scaling, REAL(8)
    else
        TimeOut1 = fread( fid, 1, 'float64',machinefmt);           % The first time in the time series, REAL(8)
        TimeIncr = fread( fid, 1, 'float64',machinefmt);           % The time increment, REAL(8)
    end
   
    ColScl       = fread( fid, NumOutChans, 'float32',machinefmt); % The channel slopes for scaling, REAL(4)
    ColOff       = fread( fid, NumOutChans, 'float32',machinefmt); % The channel offsets for scaling, REAL(4)

    LenDesc      = fread( fid, 1,           'int32',machinefmt );  % The number of characters in the description string, INT(4)
    DescStrASCII = fread( fid, LenDesc,     'uint8',machinefmt );  % DescStr converted to ASCII
    DescStr      = char( DescStrASCII' );                     
   
    if FileID == FileFmtID.ChanLen
        LenName = 15;
        LenUnit = LenName;
    end

    ChanName = cell(NumOutChans+1,1);                   % initialize the ChanName cell array
    for iChan = 1:NumOutChans+1
        ChanNameASCII = fread( fid, LenName, 'uint8',machinefmt ); % ChanName converted to numeric ASCII
        ChanName{iChan}= strtrim( char(ChanNameASCII') );
    end
   
    ChanUnit = cell(NumOutChans+1,1);                   % initialize the ChanUnit cell array
    for iChan = 1:NumOutChans+1
        ChanUnitASCII = fread( fid, LenUnit, 'uint8',machinefmt ); % ChanUnit converted to numeric ASCII
        ChanUnit{iChan}= strtrim( char(ChanUnitASCII') );
    end
   


I couldn't even get the description of the file. Just by skipping reading 'ColScl' and 'ColOff', I got the description, units and channels.

Has something changed in the structure of the binary output files? Is the function wrong? Or am I doing something wrong?

Thank you,

Rubén González

Jason.Jonkman
Posts: 4280
Joined: Thu Nov 03, 2005 4:38 pm
Location: Boulder, CO
Contact:

Re: Problem reading binary output file

Postby Jason.Jonkman » Tue Sep 17, 2019 6:40 am

Dear Ruben,

Are you outputting the binary file with OutFileFmt=2? The readFASTbinary script provided in the MATLAB Toolbox should be able to read this file type without problem.

In OpenFAST, a different binary file type is available by specifying OutFileFmt=0. This is really an undocumented feature for use in the regression tests (r-tests). I can see the readFASTbinary script having trouble reading this type of binary output file.

Best regards,
Jason Jonkman, Ph.D.
Senior Engineer | National Wind Technology Center (NWTC)

National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway | Golden, CO 80401
+1 (303) 384 – 7026 | Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

Ruben.Gonzalez
Posts: 3
Joined: Wed Jul 10, 2019 8:10 am
Organization: Public University of Navarre
Location: Spain

Re: Problem reading binary output file

Postby Ruben.Gonzalez » Tue Sep 17, 2019 8:15 am

Dear Jason,

That was exactly the problem, I didn't check properly the '.fst' file. It works completely fine now. I will be much cautious the next time.

Thank you very much for your attention and the prompt answer.

Best regards,

Rubén González

Jason.Jonkman
Posts: 4280
Joined: Thu Nov 03, 2005 4:38 pm
Location: Boulder, CO
Contact:

Re: Problem reading binary output file

Postby Jason.Jonkman » Tue Sep 17, 2019 8:57 am

Dear Rubén,

I'm glad that solved the problem. I've now raised this issue on OpenFAST: https://github.com/OpenFAST/openfast/issues/331.

Best regards,
Jason Jonkman, Ph.D.
Senior Engineer | National Wind Technology Center (NWTC)

National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway | Golden, CO 80401
+1 (303) 384 – 7026 | Fax: +1 (303) 384 – 6901
nwtc.nrel.gov


Return to “Computer-Aided Engineering Software Tools”

Who is online

Users browsing this forum: Mohamed.Fekry and 1 guest