I am new to fortran. I am trying to write a Flow solution in CGNS format using fortran 95. I wrote the fortran code and created a library of this fortran code for python. I want to use this library to write my mesh and flow data which is in *.npy format to *.cgns format. My fortran code snippet is as follows
subroutine un_2d_tr(filename, zoneName)
implicit none
include 'cgnslib_f.h'
character(*) fileName, zoneName
integer :: ier, cellDim, physDim, nelem_start, nelem_end, nbdyelem
integer :: iFile, iB, iCoordX, iCoordY, iSection, iFlow, iu, iv
integer, dimension(1,3) :: isize
character(len=32) :: basename, solname
! --------------------------------------------------------------------
! open CGNS file to write OR edit and create/read base
basename = 'Base'
! In 2D unstr.
cellDim=2
physDim=2
call cg_open_f(fileName,cg_mode_write,iFile,ier)
call check_cg_error_f(ier)
! write base
call cg_base_write_f(iFile,basename,cellDim,physDim, iB,ier)
call check_cg_error_f(ier)
...
And I continued the script to write the mesh and flow velocity into the cgns file. There is no error in opening a new file using cg_open_f() to write (error status ier is 0). But, when I try to write something using cg_write_f() or cg_base_write_f() (for writing the base flow) in the opened file, I am getting the following error
CGNS file 0 is not open
I can post the full fortran subroutine if needed. Does anyone have any suggestions on how to correct this error?. Could this be a problem with my linux distribution? if it helps, I am using Ubuntu 17.10. I have included the check_cg_error_f() below.
subroutine check_cg_error_f(ier)
implicit none
include 'cgnslib_f.h'
integer ier
if (ier .ne. CG_OK) then
call cg_error_exit_f
endif
end
The cmake file I used to build the cgns library is as follows
BUILD_CGNSTOOLS OFF
CGNS_BUILD_SHARED ON
CGNS_USE_SHARED ON
CMAKE_BUILD_TYPE Release
CMAKE_INSTALL_PREFIX /home/adhitya/.local/cgns/3.1.4
ENABLE_64BIT ON
ENABLE_FORTRAN ON
ENABLE_HDF5 ON
ENABLE_SCOPING OFF
ENABLE_TESTS OFF
FORTRAN_NAMING LOWERCASE_
HDF5_INCLUDE_PATH /home/adhitya/.local/hdf5/1.8.16/include
HDF5_LIBRARY /home/adhitya/.local/hdf5/1.8.16/lib/libhdf5.so
HDF5_NEED_MPI OFF
HDF5_NEED_SZIP ON
HDF5_NEED_ZLIB ON
SZIP_LIBRARY /home/adhitya/.local/szip/lib/libsz.so
ZLIB_LIBRARY /home/adhitya/.local/zlib/lib/libz.so
cmake build for version 3.3.1
CGNS_BUILD_CGNSTOOLS OFF
CGNS_BUILD_SHARED ON
CGNS_BUILD_TESTING OFF
CGNS_ENABLE_64BIT ON
CGNS_ENABLE_BASE_SCOPE OFF
CGNS_ENABLE_FORTRAN ON
CGNS_ENABLE_HDF5 ON
CGNS_ENABLE_MEM_DEBUG OFF
CGNS_ENABLE_SCOPING OFF
CGNS_ENABLE_TESTS OFF
CGNS_USE_SHARED ON
CMAKE_BUILD_TYPE Release
CMAKE_INSTALL_PREFIX /home/adhitya/.local/cgns/3.3.1
HDF5_C_LIBRARY_dl /usr/lib/x86_64-linux-gnu/libdl.so
HDF5_C_LIBRARY_hdf5 /home/adhitya/.local/hdf5/lib/libhdf5.so
HDF5_C_LIBRARY_m /usr/lib/x86_64-linux-gnu/libm.so
HDF5_C_LIBRARY_sz /usr/lib/x86_64-linux-gnu/libsz.so
HDF5_C_LIBRARY_z /usr/lib/x86_64-linux-gnu/libz.so
HDF5_DIR HDF5_DIR-NOTFOUND
HDF5_NEED_MPI OFF
HDF5_NEED_SZIP ON
HDF5_NEED_ZLIB ON
SZIP_LIBRARY /home/adhitya/.local/szip/lib/libsz.so
ZLIB_LIBRARY /usr/lib/x86_64-linux-gnu/libz.so
I am not familiar with CGNS but as a first check, I would suggest to verify that a sensible value is assigned to iFile variable after executing cg_open_f(). Just another thought, are you trying to write on a pre-existing file?