CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Visualization & Post-Processing Software > ParaView

[General] Read multiple solution of a cgns file with paraview

Register Blogs Community New Posts Updated Threads Search

Like Tree9Likes
  • 1 Post By t.teschner
  • 3 Post By wyldckat
  • 1 Post By wyldckat
  • 1 Post By t.teschner
  • 2 Post By tonyuprm
  • 1 Post By t.teschner

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   May 13, 2012, 09:54
Default Read multiple solution of a cgns file with paraview
  #1
New Member
 
Christos
Join Date: May 2012
Posts: 6
Rep Power: 13
cbarmpar is on a distinguished road
Dear All,

I am trying to read a cgns file which has multiple solutions.

Tecplot can read it with no problems by simply selecting the relevant zone.

But both paraview and VisIt can only read the first solution set.

Is there any way to read all the solution fields of the cgns file?

Regards,

Christos
cbarmpar is offline   Reply With Quote

Old   February 4, 2014, 12:28
Default
  #2
Member
 
Felipe Alves Portela
Join Date: Dec 2012
Location: FR
Posts: 70
Rep Power: 13
fportela is on a distinguished road
Quote:
Originally Posted by cbarmpar View Post
Dear All,

I am trying to read a cgns file which has multiple solutions.

Tecplot can read it with no problems by simply selecting the relevant zone.

But both paraview and VisIt can only read the first solution set.

Is there any way to read all the solution fields of the cgns file?

Regards,

Christos
Hi Christos,

Did you find a solution to this problem? I bumped into the same problem and can't seem to find the solution...

Cheers,
Felipe
fportela is offline   Reply With Quote

Old   February 7, 2014, 15:33
Default
  #3
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Greetings to all!

@Felipe: If you can provide a small example file, I can have a look into this.
And knowing what application was used to generate the CGNS data, would also make it easier to diagnose what can be done.

Nonetheless, I'm guessing that with ParaView, it's best to export each time snapshot into independent files, and then open the group. For example, export the CGNS data into these files:
Code:
data_001.cgns
data_002.cgns
data_003.cgns
data_004.cgns
Then open in ParaView the group of these files, namely the pseudo-file "data_..cgns".

It could also be something like this:
Code:
data_000.cgns
data_010.cgns
data_020.cgns
data_030.cgns
Best regards,
Bruno
wyldckat is offline   Reply With Quote

Old   February 20, 2014, 09:22
Default
  #4
Senior Member
 
Tom-Robin Teschner
Join Date: Dec 2011
Location: Cranfield, UK
Posts: 204
Rep Power: 16
t.teschner is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Greetings to all!

@Felipe: If you can provide a small example file, I can have a look into this.
And knowing what application was used to generate the CGNS data, would also make it easier to diagnose what can be done.
Hi Bruno,

I am working together with Felipe on that problem, we created one master cgns file that contains the grid coordinates and connectivity array (unstructured, hexa-8 mesh) and then we have created several flow solutions which link to the master cgns file (since it is an unsteady DNS simulation, we wanted to split the files to make them handable). this is all done in fortran.

you can have a look here: www.siteless.de/CGNS.tar.gz
it contains the master cgns file, 3 example flow solutions and the fortran subroutine how it is created (master and flow solution). the idea is to link from the master file to the flow solution (not the other way around since the timesteps are also stored in the master cgns file and everything should be available in that file)

we would be glad if you have any ideas to what the problem could be

kind regards,
tom
fportela likes this.
t.teschner is offline   Reply With Quote

Old   February 22, 2014, 13:35
Default
  #5
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Tom,

I've done some research on the code that ParaView uses and the critical class is "avtCGNSFileFormat", which is part of the VistIt-Bridge, located in the folder "Utilities/VisItBridge/databases/CGNS" in ParaView's source code. The code is maintained outside of ParaView, for which there is a mirror here: https://github.com/robertmaynard/Vis...databases/CGNS
This VisIt Bridge is roughly explained here: http://www.paraview.org/Wiki/VisIt_Database_Bridge
The most recent version of this source code is at VisIt's repository: http://portal.nersc.gov/svn/visit/tr...atabases/CGNS/ - but it didn't change much.

The problem is that this class (whichever version) cannot open more than one file at a time and it does not have a way to interconnect between several instances of the same class.

The way I see it, you've got a few ways to address this issue:
  • You can request this feature at VisIt's bug tracker: https://visitbugs.ornl.gov/projects/visit
  • Hack into the source code yourself and add the feature you need, then build ParaView from source with the modified code.
  • Embed the mesh into every time snapshot and load the files as a group, as explained in my previous post.
All of this is because the VisIt bridge is not able to use all of CGNS' capabilities.

Best regards,
Bruno
t.teschner, fportela and lev like this.
wyldckat is offline   Reply With Quote

Old   February 22, 2014, 13:50
Default
  #6
Senior Member
 
Tom-Robin Teschner
Join Date: Dec 2011
Location: Cranfield, UK
Posts: 204
Rep Power: 16
t.teschner is on a distinguished road
Thanks for looking into that! However, we failed one step before that, when actually creating the links inside the file. Linking from the flow solution data to the geometry works fine but linking from the geometry to the flow solution failed. Since paraview seems to support cgns links (when flow solution links to geometry, i.e. the flow solution file contains only the flow solution and the geometry is in the linked, separate, file) I suspected that the other way around shouldn't give any problems, but as i've said, we've failed at creating the actual links. And since this is all done for DNS simulation, writing the grid at every time step (we are talking about ~10^8 cells) is not feasible.
But your information are non the less very valuable, I was running into some VisIt compatibility problems before, seems to be because of what you just mentioned.
t.teschner is offline   Reply With Quote

Old   February 22, 2014, 14:41
Default
  #7
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Tom,

Mmm... then I suggest that you have a look into XDMF (XML + HDF5): http://en.wikipedia.org/wiki/XDMF

Of course you could also try and create a new XDMF format that relies on CGNS for heavy data, but... someone did try this back in 2006, where CGNS was using HDF5: http://www.paraview.org/pipermail/pa...ry/002445.html but this is waaaay too messy...

Best regards,
Bruno
fportela likes this.
wyldckat is offline   Reply With Quote

Old   March 3, 2014, 17:15
Default CGNS and Paraview
  #8
Member
 
Tony
Join Date: Jun 2010
Posts: 54
Rep Power: 15
tonyuprm is on a distinguished road
Hi all,

I'm having the same problem reading the data with Paraview.
I have several cgns files which were created using CGNS 3.2.1

cgns_1.cgns
cgns_2.cgns
cgns_3.cgns
...
cgns_500.cgns

When I try to load them as a group, Paraview only loads the first time, and is not able to advance in time using the time controls.

I get the following message from PV:

*** Warning:The file being read is more recent that the CGNS library used ***

Has anyone found a way to fix this issue?

Thanks,

Tony
tonyuprm is offline   Reply With Quote

Old   March 4, 2014, 04:44
Default
  #9
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Hi Tony,
Quote:
Originally Posted by tonyuprm View Post
Has anyone found a way to fix this issue?
From my investigation into the source code, that I reported in post #5, the conclusion was that the plug-in is hard-coded to load CGNS data only from a single file.

In your case, a few questions:
  1. Does each CGNS file have both mesh and results?
  2. Does each CGNS file only have 1 hard-coded time frame?
  3. Or do all CGNS files have the complete time plan, even though they only have data for a single time snapshot?
I ask this because there might be 2 possible ways to approach this, if #1 and #2 from the above list are true:
  1. It might be possible to rely on a Python script placed in the Animation section to load each file for you. Sometime ago I wrote a similar kind of script: http://www.cfd-online.com/Forums/ope...tml#post446333 post #6 - but it's meant for rescaling data. In theory, we could change the script to hack into the CGNS reader entry to change to another file, when the time changes.
  2. Or use a Programmable Source, which does almost the same thing, but it should have a higher success rate, since it does have specific capabilities to tell ParaView/VTK what time instances there are.
On the other hand, if your CGNS files are split into parts, as Tom's, where the mesh and time were in the first file, but all others only had the mesh... then you'll need some application to stitch the CGNS files into a single one or to convert them to XDMF+HDF5.

Best regards,
Bruno
wyldckat is offline   Reply With Quote

Old   March 4, 2014, 14:29
Default
  #10
Member
 
Tony
Join Date: Jun 2010
Posts: 54
Rep Power: 15
tonyuprm is on a distinguished road
Hi Bruno,

Thanks for your reply.

1. Each file has both mesh and data.

2. Each file has one time frame.

I'm trying now to write the time history onto the CGNS file and have only one file with all the time history. I'll report back soon.

Thanks,

Tony
tonyuprm is offline   Reply With Quote

Old   March 4, 2014, 14:49
Default
  #11
Senior Member
 
Tom-Robin Teschner
Join Date: Dec 2011
Location: Cranfield, UK
Posts: 204
Rep Power: 16
t.teschner is on a distinguished road
Quote:
Originally Posted by tonyuprm View Post
I'm trying now to write the time history onto the CGNS file and have only one file with all the time history. I'll report back soon.
Yes, this seems to be the problem. Paraview needs to know how many time steps there are and how the files are connected to each other. I have no problem loading transient data into paraview, as long as they are all stored in one file. as soon as you split them you will need to employ links between the cgns files to make paraview (or any other post processor) understand that it is actually a transient problem. i really like the structure of the cgns format, but when it comes to write transient data, it is a little bit messy, below i've posted the way i write transient data to a cgns file, hope that helps.

Code:
c--write time dependence
c--t is the number of timesteps 
	call cg_biter_write_f(index_file,index_base,
     #	'TimeIterValues',t,ier)
	call cg_goto_f(index_file,index_base,ier,
     #	'BaseIterativeData_t',1,'end')
c--create array that stores the total time (well obviously that is case dependend)
	do time=1,t
	  ta(time) = 0.5*real(time)-0.5
	enddo
c--write time array to cgns
	call cg_array_write_f('TimeValues',RealSingle,
     #	1,t,ta,ier)
c--write zone for transient solution
	call cg_ziter_write_f(index_file,index_base,
     #	index_zone,'ZoneIterData',ier)
c--goto zone iterative data
	call cg_goto_f(index_file,index_base,ier,
     #	'Zone_t',1,'ZoneIterativeData_t',1,'end')
c--link flowsolutions to timesteps
c--flowarray (from 1:t) holds the name of the flow solutions, i.e.
c--flowsolution001, flowsolution002, flowsolution003 etc.
c--these will be the names for your flow solution nodes
	idata(1) = 32
	idata(2) = t
	call cg_array_write_f('FlowSolutionPointers',Character,
     #	2,idata,flowarray,ier)
c--tell cgns that it is a transient solution
	call cg_simulation_type_write_f(index_file,index_base,
     #	TimeAccurate,ier)
wyldckat likes this.
t.teschner is offline   Reply With Quote

Old   March 18, 2014, 14:45
Default cgns_to_vtk
  #12
Member
 
Tony
Join Date: Jun 2010
Posts: 54
Rep Power: 15
tonyuprm is on a distinguished road
Hi all,

So after spending too much time on this I've decided the best way to go is the following.
I use the utility cgns_to_vtk to convert the files to VTK and that should load them into paraview without too much trouble.

I use the following bash script to go through all the files and convert them.

Code:
for file in ./*.cgns
do
   filename="${file//.cgns/}.vtk"
   /usr/local/cgns/bin/cgnstools/cgns_to_vtk $file
   mv Zone.vtk $filename
done
If anyone finds a solution to loading multiple time-steps in paraview using CGNS, please let us know.

Cheers,

Tony
elvis and wc34071209 like this.

Last edited by tonyuprm; March 20, 2014 at 20:57.
tonyuprm is offline   Reply With Quote

Old   November 21, 2016, 01:55
Default Seeking help with similar issue
  #13
New Member
 
Chaitanya Raj Goyal
Join Date: Nov 2016
Posts: 4
Rep Power: 9
crg123 is on a distinguished road
Hey Guys,

I observed that the discussion here seemed relevant to my problem. So sharing it here. I am solving a 2D hyperbolic PDE, which gives me a solution in 'x' and 'y' direction for each node on the mesh, for each time step. Therefore, if I freeze the time step, I have a solution vector in 'x', and 'y', for the whole mesh, i.e., a single value in both 'x' and 'y' direction, for each node on mesh.

It looks like this when the solution is initially viewed in Paraview at a certain time step. Observe any one frame of the below.



You can notice the 'x' and 'y' solution for all points (nodes). The no. of rows is the total no. of nodes on mesh.

Then, I convert this vtk file to .csv, and import it to MATLAB, where I run some post processing on the 'x' and 'y' solution vectors. Now, I have replaced the originally imported solution vectors 'x' and 'y', with some new values. I wanted to take back these new solutions to Paraview again for plotting. So I used a tool called vtktrisurf in MATLAB. The problem was that this tool only takes 1 solution vector, i.e., I can either give the 'x' solution vector or 'y'. So, I used pythagoras theorem on respective elements of 'x' and 'y' solutions, to generate a single vector. The vtk was created, and the simulation in PARAVIEW was exactly what I was hoping to see. However, when I use pythagoras theorem, I convert all negative components of the solution to positive. It will show me what I want to see when there is no scalar warping. However, when I warp it with scalar in Paraview, it shows the entire profile in positive values. That is not actually true, because there were negative values in the solution. Long story short, how can I view the correct simulation. Maybe the answer goes back to the point where I convert my matrix in MATLAB to vtk. I also have the option of creating a separate vtk for 'x' solution and separate for 'y'. In that case, is there a way to superpose them in Paraview to view the correct profile? How to join them to get a single datum? If you look at the image below (also attached), you see the 'group solution', 'x - solution, 'y - solution', and the original solution. So, now from here, how can I join the 'x' and 'y' solution and view something like the original solution?

I would really appreciate your time and help!



Thanks a lot!
Chaitanya
crg123 is offline   Reply With Quote

Old   November 21, 2016, 04:46
Default
  #14
Senior Member
 
Tom-Robin Teschner
Join Date: Dec 2011
Location: Cranfield, UK
Posts: 204
Rep Power: 16
t.teschner is on a distinguished road
I think the paraview mailing list (http://www.paraview.org/mailing-lists/) is a better place to ask for a solution. Are you using this script here: https://uk.mathworks.com/matlabcentr...t/vtktrisurf.m ? I'm not familiar with the VTK format but wouldn't it be easiest to simply modify this file to suit your needs (i.e. output the vector/scalars you want in the first place)?
fportela likes this.
t.teschner is offline   Reply With Quote

Old   November 21, 2016, 09:16
Default RE
  #15
New Member
 
Chaitanya Raj Goyal
Join Date: Nov 2016
Posts: 4
Rep Power: 9
crg123 is on a distinguished road
Thanks for your reply Tom! Yes, that is exactly the tool I m using. As I described the problem in my question, could you kindly suggest how would you modify the file? I can send you a sample .csv, if you could spare some time.

Thanks a lot for your time!
Chaitanya
crg123 is offline   Reply With Quote

Old   December 7, 2017, 04:09
Default
  #16
New Member
 
Join Date: Feb 2016
Posts: 20
Rep Power: 10
DaveD! is on a distinguished road
In the most recent version 5.4.1, Paraview supports loading of multiple CGNS files at a time. Paraview "groups" cgns files with the same prefix but different numbering. By Clicking File > Open... you are able to open the whole group or single files. In my case, I have cgns files from a transient run of Ansys CFX. It was not necessary to also import the *_mesh.cgns file from Ansys.
DaveD! is offline   Reply With Quote

Reply

Tags
cgns, paraview, visit


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[swak4Foam] Installation Problem with OF 6 version Aurel OpenFOAM Community Contributions 14 November 18, 2020 16:18
[swak4Foam] Problem installing swak_2.x for OpenFoam-2.4.0 towanda OpenFOAM Community Contributions 6 September 5, 2015 21:03
[Other] Adding solvers from DensityBasedTurbo to foam-extend 3.0 Seroga OpenFOAM Community Contributions 9 June 12, 2015 17:18
[swak4Foam] Error bulding swak4Foam sfigato OpenFOAM Community Contributions 18 August 22, 2013 12:41
[swak4Foam] funkySetFields compilation error tayo OpenFOAM Community Contributions 39 December 3, 2012 05:18


All times are GMT -4. The time now is 19:04.