CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   On compiling examples of CGNS (https://www.cfd-online.com/Forums/main/153185-compiling-examples-cgns.html)

nba1942 May 20, 2015 01:02

On compiling examples of CGNS
 
2 Attachment(s)
Hi

I am working on installing CGNS on Ubuntu. Well, actually I am already done with installing it but the problem is about actually using it.

I followed the guide I found from a personal blog which is like as below; (in case I did it in a wrong way)

================================================== ================================================== ===============
1. installing "cmake-gt-gui" from Ubuntu Software Center.

2. installing "libx11-dev", "libxmu-dev" from Synaptic Package Manager

3. installing "OpenGL";
* sudo apt-get install libg11-mesa-dev
* sudo apt-get install libglul-mesa-dev
* sudo apt-get install mesa-common-dev

4. installing "szip", "zlib", "HDF5", "tcl/tk";

4.1 zlib
- downloading "zlib-1.2.8" from http://zlib.net
- unzip it
* ./configure -prefix=/opt/hdf5-1.8.14
* make
* make check
* sudo make install

4.2 szip
- downloading "szip-2.1"
- unzip it
* ./configure -prefix=/opt/hdf5-1.8.14
* make
* make check
* sudo make install

4.3 HDF5
- downloading "hdf5-1.8.14"
- unzip it
* ./configure -prefix=/opt/hdf5-1.8.14 --with-zlib=/opt/hdf5-1.8.14 --with-szip=/opt/hdf5-1.8.14
* make
* make check
* sudo make install

% if C++ error occurs : * sudo apt-get install build-essential

4.4 tcl/tk
- downloading "tcl8.6.4-src" & "tk8.6.4-src"
- unzip them
* ./configure -prefix=/opt/tcl8.6.4
* make
* make check
* sudo make install
&
* ./configure -prefix=/opt/tcl8.6.4
* make
* make check
* sudo make install

5. cmake
* sudo cmake-gui
- options are like figure 1
- configure & generate

6. make install(@ /home/kim/Downloads/build)
* sudo make
* sudo make install
================================================== ================================================== ===============

This is what I did to intall CGNS on Ubuntu.

I tried to use the library on an example(cgns_test.f90) but an error occures saying;

"Error: Can't open included file 'cgnslib_f.h"

I thought maybe I need to make a link of "cgnslib_f.h" in the directory in which "cgns_test.f90" is.

then tons of errors occure like figure 2.

I really don't know what to do. Can anyone help me?

I am desperately waiting for any help.

Thank you for reading.

nba1942 May 20, 2015 01:03

by the way, "cgns_test.f90" is like this;
 
program cgns_test
implicit none
include 'cgnslib_f.h'

integer :: i, j, k
integer :: ni, nj, nk
real, allocatable :: x(:,:,: ), y(:,:,: ), z(:,:,: )
ni=21
nj=17
nk=9
allocate(x(ni,nj,nk),y(ni,nj,nk),z(ni,nj,nk))
do k=1, nk
do j=1, nj
do i=1, ni
x(i,j,k)=real(i-1)
y(i,j,k)=real(j-1)
z(i,j,k)=real(k-1)
enddo
enddo
enddo

write(6,'(''created simple 3-D grid points'')')
call cg_open_f('grid.cgns',CG_MODE_WRITE,index_file,ier )
end program

mfolusiak October 8, 2015 15:34

Hi,
I assume you didn't solve this yet.
Did you add the path to the header file to the include path during compilation?
See also the header comment of the file that you include. It says to use the module cgns from file cgns_f.F90
Regards,
Michal

nba1942 October 8, 2015 21:28

@ Michal
 
Yes you are right:)

I solved the problem by adding the path as you said.

Now I am facing another problem..:(

Anyway thanks for your reply!:D

mfolusiak October 9, 2015 03:27

Use cmake if possible
 
It is me again,
let me just use this thread to encourage anyone starting with CGNS to use CMake if only possible. It will save you a lot of time and nerves, while trying to set correct include and linking paths.
Here is my test project with CGNS used as a subproject:
Code:

> tree -L 1 .
.
├── CGNS
├── cgns_test.f90
└── CMakeLists.txt

Code:

> cat CMakeLists.txt
cmake_minimum_required(VERSION 2.6)

##########################################################
# configure CGNS subproject
# the following must be here for the DSGNS to build
set(CMAKE_BUILD_TYPE "release" CACHE STRING
  "one of: Release, Debug, RelWithDebInfo or MinSizeRel")
# variables passed to CGNS subproject
set(CGNS_ENABLE_HDF5    "ON" CACHE INTERNAL "Force CGNS to use HDF5.")
set(CGNS_ENABLE_FORTRAN "ON" CACHE INTERNAL "Force CGNS to use Fortran.")
set(FORTRAN_NAMING      "LOWERCASE_" CACHE INTERNAL "Configures how to link the Fortran components into the C library.")
add_subdirectory(CGNS)
##########################################################

project("CGNS test" Fortran)
set(EXE_NAME CGNS_test)

include_directories(
  ${PROJECT_BINARY_DIR}/CGNS/src/ # module cgns
)

add_executable(${EXE_NAME} cgns_test.f90)

# link to cgns_static library and other libraries if necessary
target_link_libraries(${EXE_NAME} cgns_static)
if (CGNS_ENABLE_HDF5)
  find_library(HDF5_LIBRARY hdf5)
  target_link_libraries(${EXE_NAME} hdf5)
endif (CGNS_ENABLE_HDF5)

Code:

> cat cgns_test.f90
program cgns_test
use cgns
implicit none
write(*,*) 'Hello world, cgns_test'
call cg_error_exit_f()
end program cgns_test

Now, from Build directory just type:
Code:

cmake /path/to/Source && make && ./CGNS_test


All times are GMT -4. The time now is 02:21.