GiD - The personal pre and post processor

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

C / C++ language:

Include the file header file gidpost.h to use the libray gidpost

#include "gidpost.h"


Small examples:

  • testpost.c, is provided to show the use of the library from C/C++.
  • testpost_fd.c that use the *f functions where the file handler is explicitly specified (to allow multiple files)
  • IGA_test_1.c, to show the use of OnNurbsSurface isogeometric results

FORTRAN language:


A small example, called testpostfor.f, is provided to show the use of the library with FORTRAN 77
the same case is implemented with FORTRAN 90 in the example testpost.f90, using the gidpost.F90 interface module


Note: The gidpost fortran 90 module use the new ISO_C_BINDING intrinsic module defined in the Fortran 2003 standard.
(Tested in intel fortran >= 10.1, Sun/Oracle studio >= 12.1, and GNU gfortran >= XX)


Link libraries: gidpost.lib zlib.lib hdf5.lib (Linker - Input - Additional Dependencies)
and remember set the path to these libraries (e.g. Linker - General - Additional Library Directories - ..\..\binaries\win\x32)


Note: the hdf5.lib library is only required to write files with HDF5 format.
Note: For Linux platforms the extension of libraries is .a instead of .lib


Python module:

Inside the folder gidpost/gidpost-swig there are a couple of examples on how to use gidpost python module.

Once the module has been built and installed, then you can use it like this:

gidpost_test.py
$ python3
Type "help", "copyright", "credits" or "license" for more information.
>>> import gidpost
gidpost.GiD_PostInit()
file_id = gidpost.GiD_fOpenPostResultFile( "gidpost-test-array.post.h5", gidpost.GiD_PostHDF5)

# helper functions
def copy_to_intArray( int_array, list):
    idx = 0
    for value in list:
        gidpost.intArray_setitem( int_array, idx, value)
        idx = idx + 1

def copy_to_doubleArray( double_array, list):
    idx = 0
    for value in list:
        gidpost.doubleArray_setitem( double_array, idx, value)
        idx = idx + 1

# define mesh
# Create coordinates:
num_nodes = 6
# we could have skipped the id's as they are all consecutive
coords_list_ids = gidpost.new_intArray( num_nodes)
copy_to_intArray( coords_list_ids, range( 1, 7))  # list = 1, 2, 3, 4, 5, 6
coords_list_xyz = gidpost.new_doubleArray( num_nodes * 3)
copy_to_doubleArray( coords_list_xyz, [ 
    0.0, 0.0, 0.0,
    1.0, 0.0, 0.0,
    1.0, 1.0, 0.0,
    0.0, 1.0, 0.0,
    2.0, 0.0, 0.0, 
    2.0, 1.0, 0.0
    ])
# Create connectivity array
# two triangles
num_triangles = 2
triangs_list_ids = gidpost.new_intArray( num_triangles)
copy_to_intArray( triangs_list_ids, [ 1, 2])
triangs_connectivities = gidpost.new_intArray( num_triangles * 3)
copy_to_intArray( triangs_connectivities, [ 
    1 , 2, 3,
    1 , 3, 4
    ])
# 1 quadrilateral
num_quads = 1
quads_list_ids = gidpost.new_intArray( num_quads)
copy_to_intArray( quads_list_ids, [ 3])
quads_connectivities = gidpost.new_intArray( num_quads * 4)
copy_to_intArray( quads_connectivities, [ 2 , 5, 6, 3])

gidpost.GiD_fBeginMeshColor( file_id, "test gp_py triangles", gidpost.GiD_3D, gidpost.GiD_Triangle, 3, 0.6, 0.5, 0.4)
fail = gidpost.GiD_fWriteCoordinatesIdBlock( file_id, num_nodes, coords_list_ids, coords_list_xyz)

fail = gidpost.GiD_fWriteElementsIdBlock( file_id, num_triangles, triangs_list_ids, triangs_connectivities)

gidpost.GiD_fBeginMeshColor( file_id, "test gp_py quadrilaterals", gidpost.GiD_3D, gidpost.GiD_Quadrilateral, 4, 0.8, 0.2, 0.5)
# if we had more coordinates, like nodes 5 and 6 above, we could have written them here...
fail = gidpost.GiD_fWriteElementsIdBlock( file_id, num_quads, quads_list_ids, quads_connectivities)

# Create results
# nodal result for all nodes
scalar_nodes = gidpost.new_doubleArray( num_nodes * 1)
copy_to_doubleArray( scalar_nodes, [ 10.1, 20.2, 30.3, 40.4, 50.5, 60.6])
# elemental result for all elements
num_elements = num_triangles + num_quads
elements_list_ids = gidpost.new_intArray( num_elements)
copy_to_intArray( elements_list_ids, range( 1, num_elements + 1)),
scalar_elemental = gidpost.new_doubleArray( num_elements * 1)
copy_to_doubleArray( scalar_elemental, [ 11.1, 22.2, 33.3])

# Writing results
# id's are the same as nodes
list_comp_names = gidpost.new_stringArray( 0);
fail = gidpost.GiD_fWriteResultBlock( file_id, "test nodal", "gidpost", 1.0, 
                                     gidpost.GiD_Scalar, gidpost.GiD_OnNodes, "", "", 0, list_comp_names, 
                                     num_nodes, coords_list_ids, 1, scalar_nodes)

fail = gidpost.GiD_fWriteResultBlock( file_id, "test elemental", "gidpost", 1.0, 
                                     gidpost.GiD_Scalar, gidpost.GiD_OnGaussPoints, "GP_ELEMENT_1", "", 0, list_comp_names, 
                                     num_elements, elements_list_ids, 1, scalar_elemental)

fail = gidpost.GiD_fClosePostResultFile( file_id)
fail = gidpost.GiD_PostDone()

gidpost.delete_intArray( coords_list_ids)
gidpost.delete_intArray( triangs_list_ids)
gidpost.delete_intArray( triangs_connectivities)
gidpost.delete_intArray( quads_list_ids)
gidpost.delete_intArray( quads_connectivities)
gidpost.delete_intArray( elements_list_ids)

gidpost.delete_doubleArray( coords_list_xyz)
gidpost.delete_doubleArray( scalar_nodes)
gidpost.delete_doubleArray( scalar_elemental)




  • No labels