# Reading boundary data in a HDF-CGNS file¶
This tutorial shows how to:
read a turbomachinery configuration stored in HDF-CGNS format
compute the h/H variable
get the base corresponding to the blade given as a family
perform node-to-cell and cell-to-node on this latter base
make profile at some heights of the blade
output all curves in a single HDF-CGNS file
## Reading data
If we have a mesh file mesh.cgns and a solution file elsAoutput.cgns, then we can use the Antares reader hdf_cgns.
reader = antares.Reader('hdf_cgns') reader['filename'] = 'mesh.cgns' reader['shared'] = True base = reader.read()
We put the mesh as shared variables.
reader = antares.Reader('hdf_cgns') reader['base'] = base reader['filename'] = 'elsAoutput.cgns' base = reader.read()
We append the solution to the previous base.
## Computing h/H variable
The letter h means the hub, and the letter H the shroud. The h/H variable is the distance of a point from the hub on a line going from the hub to the shroud.
tr = antares.Treatment('hH') tr['base'] = base tr['row_name'] = 'ROW' tr['extension'] = 0.1 tr['coordinates'] = ['CoordinateX', 'CoordinateY', 'CoordinateZ'] base = tr.execute()
The option ‘row_name’ tells the convention used to prefix the names of rows in the configuration. The option ‘extension’ is 10% of the radius of the configuration.
## Get the family base
Next, we extract the blade given by the family ROW(1)_BLADE(1)
row_1_blade_1 = base[base.families['ROW(1)_BLADE(1)']]
## Perform node-to-cell and cell-to-node on this latter base
The base row_1_blade_1 is a 2D base on which we can perform node2cell and cell2node operations.
row_1_blade_1.node_to_cell(variables=['ro']) row_1_blade_1.cell_to_node(variables=['Pressure', 'Temperature'])
Then, we save the base in a HDF-CGNS file.
writer = antares.Writer('hdf_cgns') writer['base'] = row_1_blade_1 writer['filename'] = 'all_wall_row_1_blade_1.cgns' writer['base_name'] = 'row_1_blade_1' writer['dtype'] = 'float32' writer.dump()
Do not forget to remove the following file due to the append writing
try: os.remove('all_iso.cgns') except OSError: pass
## Make profile at some heights of the blade ## Output all curves in a single HDF-CGNS file
Then, we loop on 5 heights.
for hoH_val in [0.05, 0.25, 0.50, 0.75, 0.95]: t = antares.Treatment('isosurface') t['base'] = row_1_blade_1 t['variable'] = 'CoordinateReducedHeight' t['value'] = hoH_val result = t.execute() writer = antares.Writer('hdf_cgns') writer['base'] = result writer['filename'] = os.path.join('all_iso.cgns') writer['append'] = True writer['base_name'] = '%s' % hoH_val writer['dtype'] = 'float32' writer.dump()
‘CoordinateReducedHeight’ corresponds to the h/H variable. Note the option ‘append’ of the writer to concatenate results in a single file.