TecIO usage hints for movingTecplot ASCII to binary

Creating Tecplot binary data files

Moderators: davetaflin, salter, steve, jprenaud, straton, Chris Idso

User avatar
Scott Rumage
Tecplot Employee
Posts: 45
Joined: Mon Nov 20, 2006 2:28 pm
Location: Seattle
Contact:

TecIO usage hints for movingTecplot ASCII to binary

Postby Scott Rumage » Tue Oct 20, 2009 8:07 am

Manuel Hasert asks Tecplot Support:

I'm interested in coupling my Lattice Boltzmann code to the tecio library.

I have written an interface for outputting ascii formatted tecplot files. But now as my simulations get bigger, I would like to create binary files directly. As the simulations are unsteady, I have created a zone for each timestep. The geometry is purely cartesian and includes some variables as pressure, density and velocity.

Now, could you give me a hint, how to use the tecio most efficiently. It seems to be quite powerful, but I don't need all the functionality. I have attached a sample tecplot file and the output routine.

Your help is greatly appreciated.
Best regards
Manuel Hasert
Dipl.-Ing. Manuel Hasert
Scalable Computing & Coupled Systems
High Performance Computing Center Stuttgart (HLRS)

Output routine:
First, the header is written:
open(11,file=TRIM(ADJUSTL(filename)))
write(11,*) 'title="LBM-Simulation Re=',tNum2,'umax=',tNum3,'"'
2D:
write(11,*) 'VARIABLES = X, Y, PRESS,uX, uY, density, state'
3D:
write(11,*) 'VARIABLES = X, Y, Z, PRESS, uX, uY, uZ, density, state'

Then, the values are written out in a loop over each point in the
domain:

2D:
write(11,'(6f15.6,f9.2)') s_par%g_x(i),s_par%g_y(j),
press , &
& real(lb_dom%gu(LB_NODE(1,i,j,k)), 4),real(lb_dom%gu(LB_NODE(2,i,j,k)),4), &
& real(lb_dom%grho(i,j,k),4), real(lb_dom
%gstate(i,j,k),4)

3D:
write(11,'(8f15.6,f9.2)') s_par%g_x(i),s_par
%g_y(j),s_par%g_z(k), press , &
& real(lb_dom%gu(LB_NODE(1,i,j,k)),4),&
& real(lb_dom%gu(LB_NODE(2,i,j,k)),4),real(lb_dom
%gu(LB_NODE(3,i,j,k)),4),&
& real(lb_dom%grho(i,j,k),4),&
& real(lb_dom%gstate(i,j,k))

A sample of the current ASCII data file:

title="LBM-Simulation Re= 300.0 umax=0.010 "
VARIABLES = X, Y, PRESS,uX, uY, density, state
ZONE T=" 1 ", I= 70 , J= 70 , F=POINT
0.000000 0.000000 0.000001 0.000543 -0.000483 1.000000 10.00
1.000000 0.000000 0.000001 0.000558 -0.000481 1.000000 10.00
2.000000 0.000000 0.000001 0.000573 -0.000477 1.000000 10.00
3.000000 0.000000 0.000001 0.000588 -0.000473 1.000000 10.00
4.000000 0.000000 0.000001 0.000604 -0.000468 1.000000 10.00
5.000000 0.000000 0.000001 0.000620 -0.000462 1.000000 10.00
6.000000 0.000000 0.000001 0.000636 -0.000456 1.000000 10.00
7.000000 0.000000 0.000001 0.000652 -0.000449 1.000000 10.00
8.000000 0.000000 0.000001 0.000668 -0.000441 1.000000 10.00
9.000000 0.000000 0.000001 0.000684 -0.000433 1.000000 10.00
10.000000 0.000000 0.000001 0.000700 -0.000423 1.000000 10.00

Jay Noble, a Tecplot developer, responds:

Here are some steps to write out your data with the TecIO library. These are to give you an idea of what the function calls would look like but are not programmatically correct.

1) Create the file that you want to write to using TECINI112(Title, Variables, FName, ScratchDir, FileType, Debug, VIsDouble)

For example: TECINI112("LBM-Simulation", "X Y PRESS uX uY density state", "your_file_name.plt", "your_scratch_directory", 0, 0, 0)

2) For each zone, specify the zone information:

a) Write out the zone header using TECZNE112(ZoneTitle, ZoneType, Imax, Jmax, Kmax, ICellMax, JCellMax, KCellMax, SolutionTime, StrandID, ParentZone, IsBlock, NumFaceConnections, FaceNeighborMode, TotalNumFaceNodes, NumConnectedBoundaryFaces, TotalNumBoundaryConnections, PassiveVarList, ValueLocation, ShareVarFromZone, ShareConnectivityFromZone)
For example: TECZNE112("1", 0, 70, 70, 1, 0, 0, 0, 0.1, 1, 0, 1, 0, 0, 0, 0, 0, NULL, NULL, NULL, 0)

b) For each of your variables call TECDAT112(N, Data, IsDouble)
For example: TECDAT112(70, X[], 0)
*) It looks like your data is ordered so there's no need to call TECNOD112() to supply the connectivity list

3) Finish the file by calling TECEND112()

The TecIO library requires variable data to be in block format so that each variable can be written out to its own section in the file. I would highly recommend that you write your ascii data out in block format as well as the data can be read much faster than point format.

The Data Format Guide in your Tecplot documentation directory is a great resource for writing Tecplot data files. There are details on the functions I have mentioned as well as others if you would like to write out additional data. There are also TecIO source code examples located in the tecio/examples that can show you the use of these functions.

Regards,
Jay Noble
Development Engineer

Manuel replies back to us that TecIO is working perfectly for him now, and graciously allows us to share these tips to TecplotTalk.
Please don't hesitate to contact us if you have questions on how to output the results of your code and the best use of the TecIO library.

Scott Rumage

fox617
Newbie
Posts: 2
Joined: Thu May 26, 2016 10:38 pm
Location: Perth

Re: TecIO usage hints for movingTecplot ASCII to binary

Postby fox617 » Thu May 26, 2016 11:06 pm

Hi Scott Rumage,
Your post is informative and quite helpful. However, I still don't know how to use the "ShareVarFromZone" to share some variables such as coordinates from the previous zones to save data space. Could you give us a simple example to illustrate the use of this feature? Thanks in advance.


Return to “TecIO Library”

Who is online

Users browsing this forum: No registered users and 1 guest

cron