[MITgcm-support] problem reading binary grid file ...

Ufuk Turuncoglu ufuk.turuncoglu at itu.edu.tr
Fri Apr 22 07:00:53 EDT 2016


Hi,

I am trying to create a grid file in binary format using python. In this 
case, the script is very simple and it writes numpy array using 
following command in big-endian format,

var.astype('>f4').tofile('BATHY_BS.data')

Then i am running MITgcm and it produces intermediate files such as 
Depth.data etc. Then, if i check the Depth.data using following NCL script,

begin
   ;--- parameters ---
   endian = "BigEndian"
   nlat = 280 ;264 ;280
   nlon = 466 ;;570 ;466

   ;--- set file option ---
   setfileoption("bin", "ReadByteOrder", endian)

   ;--- read bathymetry ---
   h = fbindirread("Depth.data", 0, (/ nlat, nlon /), "float")

   ;--- plot data ---
   wks  = gsn_open_wks ("newpdf", "check")
   gsn_define_colormap (wks, "matlab_jet")
   i = NhlNewColor(wks,0.8,0.8,0.8)

   ;--- define plot resource ---
   res = True
   res at gsnAddCyclic = False
   res at gsnFrame = False
   res at gsnLeftString = ""
   res at gsnRightString = ""
   res at gsnSpreadColors = True
   res at gsnSpreadColorEnd = -3
   res at cnFillOn = True
   res at cnFillMode = "RasterFill"
   res at cnInfoLabelOn = False
   res at cnLinesOn = False
   res at cnLineLabelsOn = False
   res at lbLabelBarOn = False
   res at pmTickMarkDisplayMode = "Always"
   res at tiXAxisFontHeightF = 0.008
   res at tiYAxisFontHeightF = 0.008
   res at tmXBLabelFontHeightF = 0.008
   res at tmYLLabelFontHeightF = 0.008

   plot = gsn_csm_contour(wks, h, res)
   draw(plot)
   frame(wks)
end

The output seems wrong and i could not see the correct data and plot 
have full of zeros. First i thought that it is an issue related with the 
Python and binary data file but the same NCL script could read other 
data files (i.e. DXC.data - the delx, dely and delz are provided in data 
file) generated by MITgcm and BATHY_BS.data file produced by Python 
script without any problem. As i know that the binary files must be 
written using single record direct access and the Python script must 
work at this point. I think that MITgcm could not read Python generated 
file correctly but i don't know why. Anyway, do you have similar 
experience? Any suggestion could be helpful. I also try to generate grid 
data using Fortran but the result is same. You can find the content of 
my config file to install MITgcm.

Regards,

--ufuk

#!/bin/bash
#
# $Header: /u/gcmpack/MITgcm/tools/build_options/linux_amd64_ifort11,v 
1.6 2011/07/07 22:58:36 jmc Exp $
# $Name: checkpoint63a $
#
#  Constantinos Evangelinos
#
#  Build options for the intel 11 & 12 fortran compiler
#
#  Tested on baudelaire (FC 13) with intel compiler v.11.1.073 (20100806)

# OpenMP : tested on danton (FC 14) using intel compiler v.11.1.046 
(20090630)
#                                              and also v.12.0.4   
(20110427)

#-------
# run with OpenMP: needs to set environment var. OMP_NUM_THREADS
#    and generally, needs to increase the stack-size:
#   -  sh,bash:
#     > export OMP_NUM_THREADS=2
#     > export KMP_STACKSIZE=400m
#   - csh,tcsh:
#     > setenv OMP_NUM_THREADS 2
#     > setenv KMP_STACKSIZE 400m
#-------

FC=mpif90
F90C=mpif90
CC=icc
LINK=mpif90

DEFINES='-DWORDLENGTH=4'
CPP='cpp  -traditional -P'
F90FIXEDFORMAT='-fixed -Tf'
EXTENDED_SRC_FLAG='-132'
GET_FC_VERSION="--version"
OMPFLAG='-openmp'

NOOPTFLAGS='-O3 -g -fp-model strict'
NOOPTFILES=''

INCLUDEDIRS=''
INCLUDES=''
LIBS=''

if test "x$GENERIC" != x ; then
     PROCF=-axSSE4.2,SSE4.1,SSSE3,SSE3,SSE2
else
     PROCF=-xHost
fi

#FFLAGS="$FFLAGS -m64 -fPIC -convert big_endian -assume byterecl 
-mcmodel=large"
FFLAGS="$FFLAGS -m64 -convert big_endian -assume byterecl -mcmodel large 
-shared-intel"
#FFLAGS="$FFLAGS -m64 -assume byterecl -mcmodel large -shared-intel"

#- might want to use '-r8' for fizhi pkg:
#FFLAGS="$FFLAGS -r8"

if test "x$IEEE" = x ; then     #- with optimisation:
     FOPTIM="-O3 -fp-model strict -align -ip -opt-streaming-stores auto 
$PROCF -extend_source"
else
   if test "x$DEVEL" = x ; then  #- no optimisation + IEEE :
     FOPTIM="-O3 -fp-model strict -fp-model source -noalign $PROCF 
-extend_source"
   else                          #- development/check options:
    #FFLAGS="$FFLAGS -debug all -debug-parameters all -fp-model strict"
     FFLAGS="$FFLAGS -warn all -warn nounused"
     FOPTIM="-fpe0 -ftz -fp-stack-check -check all -ftrapuv"
     FOPTIM="$FOPTIM -O3 -fp-model strict  -noalign -g -traceback $PROCF"
   fi
fi

F90FLAGS=$FFLAGS
F90OPTIM=$FOPTIM
CFLAGS="-O3 -fp-model strict -ip -m64 -mcmodel large -shared-intel $PROCF"

#LIBS='-lmpi -L /opt/netcdf/4.1.2/intel/2011/lib -lnetcdf'
LIBS='-lmpi -L /RS/progs/netcdf/4.3.1.1/intel/lib -lnetcdf'
#LIBS='-lmpi -L/afs/enea.it/fra/user/sannino2/netcdf-4.1.3/GM/lib -lnetcdf'
#INCLUDES='-I/opt//openmpi/1.5.3/intel/2011/include/ 
-I/opt/netcdf/4.1.2/intel/2011/include/'
INCLUDES='-I/RS/progs/openmpi/1.10.1/intel/include/ 
-I/RS/progs/netcdf/4.3.1.1/intel/include/'




More information about the MITgcm-support mailing list