This document describes the difference between CGNS 3.2.1 and
CGNS 3.3.0, and contains information on known problems in CGNS 3.3.0.
Links to the CGNS 3.3.0 source code can be found at:
User documentation for the current release can be found at:
For more information, see the CGNS home page:
- New Features
- Support for new platforms and languages
- Bug Fixes since CGNS 3.2.1
- Known Problems
Configuration: ------------------ * Example build scripts for supercomputer systems can be found in src/SampleScripts of the CGNS source code. They include scripts for building zlib, hdf5 (assuming the user does not already have them installed system wide) and a script for building CGNS. All the scripts use autotools; cmake remains untested. * The Fortran compiler environment variable can now be set with "FC", this is the preferred method. * The Fortran compiler flags can now be set with "FCFLAGS", this is the preferred method. If both FFLAGS (which predates FCFLAGS) and FCFLAGS are set then FCFLAGS is ignored. (CGNS-23) Library: ------------ * Replaced the hid_t to double (and vice-versa) utilities to_HDF_ID and to_ADF_ID from a type cast to a function which uses memcpy for the conversion. This is needed for the upcomming release of HDF5 1.10 where hid_t was changed from a 32 bit integer to a 64 bit integer. Should be transparent to user. * Implemented CPEX0039 : To enable with CGNS_ENABLE_BASE_SCOPE * Implemented CPEX0038 : Quadratic Elements for High Order Parallel Library: --------------------- * The default parallel input/output mode was changed from CGP_INDEPENDENT to CGP_COLLECTIVE. * A new function was added for passing MPI info to the CGNS library: cgp_mpi_info (cgp_mpi_info_f) * A new parallel example benchmark program, benchmark_hdf5.c, was added to directory ptests. * The cgp_*_read/write_dataset APIs now excepts non-allocated arrays, or NULL, as valid parameters for the datasets. Additionally, the dimensional arrays, rmin and rmax, can also be NULL. If the data array is NULL and the dimensional arrays are not NULL, then the validity of the dimensional arrays, rmin and rmax, is not checked. For collective parallel IO, this is used as a mechanism to indicated that processes with NULL API parameters will not write any data to the file. * cgp_queue_set and cgp_queue_flush were depreciated in this release. Fortran Library: -------------------- * SUPPORT WAS DROPPED FOR NON-FORTRAN 2003 COMPLIANT COMPILERS. * Configure was changed to check if the Fortran compiler is Fortran 2003 compliant. * The predefined CGNS constant parameters data types were changed from INTEGER to ENUM, BIND(C) for better C interoperability. The users should use the predefined constants whenever possible and not the numerical value represented by the constants. A variable expecting an enum value returned from a Fortran API should be declared, INTEGER(cgenum_t). * INCLUDE "cgslib_h" was changed in favor of using a module, USE CGNS. - This allows defining a KIND type for integers instead of the current way of using the preprocessor dependent cgsize_t. * The user should be sure to declare the arguments declared int in the C APIs as INTEGER in Fortran. The ONLY Fortran arguments declared as type cgsize_t should be the arguments which are also declared cgsize_t in the C APIs. This is very important when building with option --enable-64bit. The test programs were updated in order to conform to this convention. * Assuming the rules in step [enu:int64] were followed, users should not need to use parameter CG_BUILD_64BIT since Fortran's cgsize_t is now guaranteed to match C's cgsize_t. * Fortran programs defining CGNS data types with a default INTEGER size of 8 bytes also then need to compile the CGNS library with the default INTEGER size of 8 bytes. This is independent of whether or not --enable-64bit is being used. For clarification, using --enable-64bit allows for data types (i.e. those declared as cgsize_t) to be able to store values which are too large to be stored as 4 byte integers (i.e. numbers greater than 2,147,483,647). It is not necessary, or advisable (since it waste memory), to have CGNS INTEGER types (types declared int in C) to be 8 bytes; the variables declared as cgsize_t will automatically handle data types that can not be stored as 4 byte integers when --enable-64bit is being used. If the CGNS library was not compiled with a default INTEGER of 8 bytes, but the calling program was, then all integers passed to CGNS with C type int should be declared INTEGER(C_INT). * A new Fortran API was added for determining the CGNS data type of a variable which is interoperable with the C data type. Function cg_get_type(var) type, INTENT(IN) :: var INTEGER(KIND(enumvar)) :: cg_get_type An example of using the new function to automatically specify the CGNS type corresponding to the Fortran data type is, INTEGER, DIMENSION(1:10) :: Array_i CALL cgp_array_write_f("ArrayI",cg_get_type(Array_i(1)),1,INT(nijk(1),cgsize_t),Ai, err) * Removed all parallel flush/queue functions (CGNS-9) * Removed support of "include cgns_f.h", all examples and tests were updated to reflect these changes (CGNS-34) Tools: ---------- - None
Bug Fixes since CGNS 3.2.1 release
Configuration: ------------------ * Fixed issue with autotools putting a blank "-l" in "MPILIBS =" when compiling the library using mpi. * Added a new PGI fortran compiler flag fix issue when passing to C varags (CGNS-40) * CMake find_package was added for HDF5, users should use -D CMAKE_PREFIX_PATH=$HDF_DIR to specify a specific version of HDF5. Library: ------------ * Generally improved the performance of cgp_open (cgp_open_f). * Fixed elemtest.c to compile for SunOS 5.12 (CGNS-29) * Fixed parallel issue when not all processors involved in reading/writing (CGNS-51) * Fixed argument being passed to H5Pget_driver in ADFH.c (CGNS-50) * Fixed issue with writing/reading 4D and higher arrays in parallel (CGNS-19) Fortran: ------------ * cgio_link_size_f -- file_len and name_len were changed from cgsize_t to integer to match the C API, CGNS-37. * cgio_is_link_f -- cgio_num was changed from type cgsize_t to an integer to match the C API, CGNS-36. * cgio_is_supported_f -- ier changed from cgsize_t to integer to match the C API, CGNS-35. * Added PGI flag to fix cg_goto_f failing with the PGI compilers on x86_64 platforms, CGNS-40. Tools: ---------- * None
- Building CGNS with Fortran enabled is not working on Windows.
- When building with PGI and gcc compilers it might be necassary to set the
The following platforms are supported and have been tested for this release.
They are built with the configure process unless specified otherwise.
Linux 2.6.32-573.3.1.el6 GNU C (gcc), Fortran (gfortran) compilers: #1 SMP x86_64 GNU/Linux Version 4.4.7 20120313 (platypus) Version 4.8.4, Version 5.2.0 PGI C, Fortran for 64-bit target on x86-64; Version 15.7-0 Intel(R) C (icc), C++ (icpc), Fortran (icc) compilers: Version 220.127.116.11 Build 20150407 MPICH 3.1.4 compiled with GCC 4.9.3 Linux 2.6.32-504.8.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11) #1 SMP ppc64 GNU/Linux GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11) (ostrich) IBM XL C/C++ V13.1 IBM XL Fortran V15.1 Linux 3.10.0-229.14.1.el7 GNU C (gcc), Fortran (gfortran) #1 SMP x86_64 GNU/Linux compilers: (kituo/moohan) Version 4.8.3 20140911 (Red Hat 4.8.3-9) Version 5.2.0 Intel(R) C (icc), Fortran (icc) compilers: Version 18.104.22.168 Build 20150407 MPICH 3.1.4 compiled with GCC 4.9.3 SunOS 5.11 32- and 64-bit Sun C 5.12 SunOS_sparc (emu) Sun Fortran 95 8.6 SunOS_sparc Mac OS X Yosemite 10.10.5 Apple clang/clang++ version 6.0 from Xcode 7.0.0 64-bit gfortran GNU Fortran (GCC) 4.9.2 (osx1010dev/osx1010test) Intel icc/icpc/ifort version 15.0.3