https://github.com/CFMIP/COSPv1
Raw File
Tip revision: 08f4cce0cde8431403f71ff8fa2c8b5ba7232e29 authored by dustinswales on 17 September 2018, 18:01:01 UTC
Merge pull request #4 from CFMIP/modisLidarBugFix
Tip revision: 08f4cce
mac_info.txt
# Basic system info
-------------------------------------------------------------

Hardware Overview:

  Model Name:	Mac Pro
  Model Identifier:	MacPro4,1
  Processor Name:	Quad-Core Intel Xeon
  Processor Speed:	2.26 GHz
  Number Of Processors:	2
  Total Number Of Cores:	8
  Memory:	16 GB


System Software Overview:

  System Version:	Mac OS X 10.6.4 (10F569)
  Kernel Version:	Darwin 10.4.0
  64-bit Kernel and Extensions:	No

Xcode:
  Version:	3.2.3
  Kind:	Universal
  64-Bit (Intel):	Yes



$ ifort -v
> Version 11.1 

$ icc -v 
> Version 11.1 

$ gcc -v
> Using built-in specs.
> Target: i686-apple-darwin10
> Configured with: /var/tmp/gcc/gcc-5664~38/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-> slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
> Thread model: posix
> gcc version 4.2.1 (Apple Inc. build 5664)




# Turn on super user
-------------------------------------------------------------

Some make commands fail when issued as "sudo make XXX" so enable su

Here's how to enable root in Snow Leopard:

1) Open Directory Utility in its new home, which is /System/Library/CoreServices.

2) Unlock the application by clicking the padlock icon and entering your Administrator login.

3) Select Edit Č Enable Root User.

4) Choose Edit Č Change Root Password, and choose a password for the root user.

$ su

# Environmental Setup
-------------------------------------------------------------

I use macports and have versions of netcdf, HDF etc installed that are incompatible with COSP.
Thus I need a secondary install and a setup where they don't see each other.

Edit ~/.profile and temporarily alter path and other environmental items so the system doesn't look to /opt 1st but /usr/local

$ echo $PATH
> /usr/local:/opt/local/bin:É.

Set environmental variables (this can be in .bashrc) but be sure
$ source /opt/intel/Compiler/11.1/089/bin/ifortvars.sh intel64
$ source /opt/intel/Compiler/11.1/089/bin/iccvars.sh intel64

$ set
edited relevant output
CC=gcc
CFLAGS='-arch x86_64  -fPIC'
CPATH=/opt/intel/Compiler/11.1/089/Frameworks/ipp/Headers:/opt/intel/Compiler/11.1/089/Frameworks/mkl/include:/opt/intel/Compiler/11.1/089/Frameworks/tbb/include:/opt/intel/Compiler/11.1/089/Frameworks/ipp/Headers:/opt/intel/Compiler/11.1/089/Frameworks/mkl/include:/opt/intel/Compiler/11.1/089/Frameworks/tbb/include
CXX=g++
CXXFLAGS='-arch x86_64'
DYLD_LIBRARY_PATH=/usr/local/lib:/usr/local/hdf5/:/usr/local/netcdf4:/usr/local/szip/lib:/opt/intel/Compiler/11.1/089/lib:/opt/intel/Compiler/11.1/089/lib/intel64:/opt/intel/Compiler/11.1/089/Frameworks/ipp/Libraries:/opt/intel/Compiler/11.1/089/Frameworks/mkl/lib/em64t:/opt/intel/Compiler/11.1/089/Frameworks/tbb/ia32/cc4.0.1_os10.5.4/lib:/opt/intel/Compiler/11.1/089/lib:/opt/intel/Compiler/11.1/089/lib/intel64:/opt/intel/Compiler/11.1/089/Frameworks/ipp/Libraries:/opt/intel/Compiler/11.1/089/Frameworks/mkl/lib/em64t:/opt/intel/Compiler/11.1/089/Frameworks/tbb/ia32/cc4.0.1_os10.5.4/lib
F77=ifort
F90=ifort
F9X=ifort
FC=ifort
FFLAGS='-arch x86_64 -m64  -fPIC'
FPATH=/opt/intel/Compiler/11.1/089/Frameworks/mkl/include:/opt/intel/Compiler/11.1/089/Frameworks/mkl/include
INCLUDE=/opt/intel/Compiler/11.1/089/Frameworks/ipp/Headers:/opt/intel/Compiler/11.1/089/Frameworks/mkl/Headers:/opt/intel/Compiler/11.1/089/Frameworks/ipp/Headers:/opt/intel/Compiler/11.1/089/Frameworks/mkl/Headers
INTEL_LICENSE_FILE='/opt/intel/Compiler/11.1/089/licenses:/opt/intel/licenses:/Users/mbauer/intel/licenses:/Users/Shared/Library/Application Support/Intel/Licenses:/opt/intel/Compiler/11.1/089/licenses:/opt/intel/licenses:/Users/mbauer/intel/licenses:/Users/Shared/Library/Application Support/Intel/Licenses'
LDFLAGS='-arch x86_64'
LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/089/Frameworks/tbb/ia32/cc4.0.1_os10.5.4/lib:/opt/intel/Compiler/11.1/089/Frameworks/tbb/ia32/cc4.0.1_os10.5.4/lib
LIB=/opt/intel/Compiler/11.1/089/Frameworks/ipp/lib:/opt/intel/Compiler/11.1/089/Frameworks/ipp/lib:
LIBRARY_PATH=/opt/intel/Compiler/11.1/089/lib:/opt/intel/Compiler/11.1/089/Frameworks/ipp/lib:/opt/intel/Compiler/11.1/089/Frameworks/mkl/lib/em64t:/opt/intel/Compiler/11.1/089/Frameworks/tbb/ia32/cc4.0.1_os10.5.4/lib:/opt/intel/Compiler/11.1/089/lib:/opt/intel/Compiler/11.1/089/Frameworks/ipp/lib:/opt/intel/Compiler/11.1/089/Frameworks/mkl/lib/em64t:/opt/intel/Compiler/11.1/089/Frameworks/tbb/ia32/cc4.0.1_os10.5.4/lib
MACHTYPE=x86_64-apple-darwin10.0
MACOSX_DEPLOYMENT_TARGET=10.6

This is in my .profile just in case
export CC=gcc
export F9X=ifort 
export CXX=g++
export FC=ifort
export F77=ifort 
export F90=ifort 

# -arch x86_64 forces 64-bit compiles for gcc/icc
# -m64 forces 64-bit compiles for ifort
# -fPIC forces non-shared libraries (see below)
export CFLAGS="-arch x86_64 -fPIC"
export CXXFLAGS="-arch x86_64 -fPIC"
export FFLAGS="-arch x86_64 -m64 -fPIC"
export MACOSX_DEPLOYMENT_TARGET=10.6
export LDFLAGS="-arch x86_64"
export PATH=/usr/local:/opt/local/bin:$PATH

****NOTES from cmor INSTALL: it strongly recommend to use the --disable-shared argument to the 
        ./configure when building udunits2, hdf5 and netcdf4. 

# zlib 1.2.5
-------------------------------------------------------------
http://www.zlib.net/

$ cd /usr/local/src
$  mv ~/Downloads/zlib-1.2.5.tar.gz .
$  tar -zxvf zlib-1.2.5.tar.gz
$ cd zlib-1.2.5
$ vim README

$ ./configure -help
$ ./configure --static --64
Scan Makefile
$ more Makefile
$ make

gcc -arch x86_64  -fPIC -m64   -c -o example.o example.c
gcc -arch x86_64  -fPIC -m64   -c -o adler32.o adler32.c
gcc -arch x86_64  -fPIC -m64   -c -o compress.o compress.c
gcc -arch x86_64  -fPIC -m64   -c -o crc32.o crc32.c
gcc -arch x86_64  -fPIC -m64   -c -o deflate.o deflate.c
gcc -arch x86_64  -fPIC -m64   -c -o gzclose.o gzclose.c
gcc -arch x86_64  -fPIC -m64   -c -o gzlib.o gzlib.c
gcc -arch x86_64  -fPIC -m64   -c -o gzread.o gzread.c
gcc -arch x86_64  -fPIC -m64   -c -o gzwrite.o gzwrite.c
gcc -arch x86_64  -fPIC -m64   -c -o infback.o infback.c
gcc -arch x86_64  -fPIC -m64   -c -o inffast.o inffast.c
gcc -arch x86_64  -fPIC -m64   -c -o inflate.o inflate.c
gcc -arch x86_64  -fPIC -m64   -c -o inftrees.o inftrees.c
gcc -arch x86_64  -fPIC -m64   -c -o trees.o trees.c
gcc -arch x86_64  -fPIC -m64   -c -o uncompr.o uncompr.c
gcc -arch x86_64  -fPIC -m64   -c -o zutil.o zutil.c
ar rc libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o 
gcc -arch x86_64  -fPIC -m64 -o example example.o -L. libz.a
gcc -arch x86_64  -fPIC -m64   -c -o minigzip.o minigzip.c
gcc -arch x86_64  -fPIC -m64 -o minigzip minigzip.o -L. libz.a

$ make check

hello world
zlib version 1.2.5 = 0x1250, compile flags = 0xa9
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek:  hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
		*** zlib test OK ***

$ make install

cp libz.a /usr/local/lib
cp  /usr/local/lib
cp: missing destination file operand after `/usr/local/lib'
Try `cp --help' for more information.
make: *** [install-libs] Error 1

The install partly fails because it expects a shared lib so do manually

$ cp zlib.h zconf.h /usr/local/include/

# SZIP 2.1
-------------------------------------------------------------
ftp://ftp.hdfgroup.org/lib-external/szip/

$ cd /usr/local/src
$ mv ~/Downloads/szip-2.1.tar.gz .
$ tar -zxvf szip-2.1.tar.gz
$ cd szip-2.1
$ vim INSTALL

Installation with encoder
$ ./configure -help
$ ./configure --prefix=/usr/local/szip  --disable-shared
Scan Makefile
$ more Makefile
$ make
$ make check
> All test passed.
$ make install

Libraries have been installed in:
   /usr/local/szip/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
     during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
-----------------------------------------------------------------

Add to  .profile

export DYLD_LIBRARY_PATH=/usr/local/lib:/usr/local/szip/lib:${DYLD_LIBRARY_PATH}

Restart the terminal and check

$ echo $DYLD_LIBRARY_PATH
> /usr/local/lib:/usr/local/szip/lib:...


# UDUNITS2 2.1.19
-------------------------------------------------------------
http://www.unidata.ucar.edu/software/udunits/udunits-2/udunits2.html
ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.1.19.tar.gz

$ cd /usr/local/src
$ mv ~/Downloads/udunits-2.1.19.tar.gz .
$ tar -zxvf udunits-2.1.19.tar.gz
$ cd udunits-2.1.19

$ ./configure -help
$  ./configure  --prefix=/usr/local --disable-shared
Scan Makefile
$ more Makefile
$  make
$  make check
$  make install

Libraries have been installed in:
   /usr/local/lib

# ossp-uuid 1.6.2	
-------------------------------------------------------------
http://www.ossp.org/pkg/lib/uuid/

$ cd /usr/local/src
$  mv ~/Downloads/uuid-1.6.2.tar.gz .
$  tar -zxvf uuid-1.6.2.tar.gz
$ cd uuid-1.6.2
$ vim INSTALL

$ ./configure -help
$  ./configure --disable-shared --without-perl --without-php --without-pgsql --includedir=/usr/local/include/ossp
Scan Makefile
$ more Makefile
$  makefile
$  make check
$  make install

Libraries have been installed in:
   /usr/local/lib

Some Make files look for uuid.h in different placesÉ help them out
$  ln -s /usr/local/include/ossp/uuid.h /usr/local/include/uuid.h

# HDF5 hdf5-1.8.5-patch1
-------------------------------------------------------------

http://www.hdfgroup.org/HDF5/

$ cd /usr/local/src
$ mv ~/Downloads/hdf5-1.8.5-patch1.tar.bz2 .
$ tar -zxvf hdf5-1.8.5-patch1.tar.bz2
$ cd hdf5-1.8.5-patch1
$ vim release_docs/INSTALL

For some reason the icc compile link fails but the gcc one works. So I've used gcc throughout these installs.

$ ./configure -help

$  ./configure --prefix=/usr/local/hdf5 --disable-shared --enable-fortran --with-zlib=/usr/local --with-szlib=/usr/local/szip 

	    SUMMARY OF THE HDF5 CONFIGURATION
	    =================================

General Information:
-------------------
		   HDF5 Version: 1.8.5-patch1
		  Configured on: Tue Sep 14 10:17:45 EDT 2010
		  Configured by: root@boreas.giss.nasa.gov
		 Configure mode: production
		    Host system: i386-apple-darwin10.4.0
	      Uname information: Darwin boreas.giss.nasa.gov 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386 i386 MacPro4,1 Darwin
		       Byte sex: little-endian
		      Libraries: 
	     Installation point: /usr/local/hdf5

Compiling Options:
------------------
               Compilation Mode: production
                     C Compiler: /usr/bin/gcc ( (GCC) 4.2.1 (Apple Inc. build 5664))
                         CFLAGS: -arch x86_64  -fPIC
                      H5_CFLAGS: -std=c99 -pedantic -Wall -Wextra -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wfloat-equal -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wdisabled-optimization -Wformat=2 -Wunreachable-code -Wendif-labels -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros -Wunsafe-loop-optimizations -Wc++-compat -Wvolatile-register-var -Wstrict-overflow -O3 -fomit-frame-pointer -finline-functions
                      AM_CFLAGS: 
                       CPPFLAGS: 
                    H5_CPPFLAGS:   -DNDEBUG -UH5_DEBUG_API
                    AM_CPPFLAGS: -I/usr/local/szip/include -I/usr/local/include 
               Shared Libraries: no
               Static Libraries: yes
  Statically Linked Executables: no
                        LDFLAGS: -arch x86_64
                     AM_LDFLAGS:  -L/usr/local/lib -L/usr/local/szip/lib
 	 	Extra libraries:  -lsz -lz -lm 
 		       Archiver: ar
 		 	 Ranlib: ranlib
 	      Debugged Packages: 
		    API Tracing: no

Languages:
----------
                        Fortran: yes
               Fortran Compiler: /opt/intel/Compiler/11.1/089/bin/intel64/ifort
                  Fortran Flags: 
               H5 Fortran Flags:  -O3
               AM Fortran Flags:  -arch x86_64 -m64  -fPIC
                            C++: no

Features:
---------
                  Parallel HDF5: no
             High Level library: yes
                   Threadsafety: no
            Default API Mapping: v18
 With Deprecated Public Symbols: yes
         I/O filters (external): deflate(zlib),szip(encoder)
         I/O filters (internal): shuffle,fletcher32,nbit,scaleoffset
                            MPE: no
                     Direct VFD: no
                        dmalloc: no
Clear file buffers before write: yes
           Using memory checker: no
         Function Stack Tracing: no
                           GPFS: no
      Strict File Format Checks: no
   Optimization Instrumentation: no
       Large File Support (LFS): yes
             H5dump Packed Bits: yes


$ make > make.log 2>&1
$ more make.log 
$ make check > make_check.log 2>&1
$ more make_check.log 
All PASSED or SKIPPED including the fortran tests
$ make install > make_install.log 2>&1
$ more make_install.log
Libraries have been installed in:
   /usr/local/hdf5/lib
  
$ make check-install 

$ export HDF5_DIR=/usr/local/hdf5
$ export HDF5_LIB_DIR=/usr/local/lib
$ export HDF5DIR=/usr/local/hdf5
$ export DYLD_LIBRARY_PATH=/usr/local/hdf5/:${DYLD_LIBRARY_PATH}

Also modify .profile accordingly

$ echo $HDF5_DIR
> /usr/local/hdf5

$ echo $DYLD_LIBRARY_PATH
> /usr/local/hdf5/:/usr/local/lib:É.

# NetCDF4 4.1.1
-------------------------------------------------------------

http://www.unidata.ucar.edu/software/netcdf

$ cd /usr/local/src
$ mv ~/Downloads/netcdf.tar.gz .
$ tar -zxvf netcdf.tar.gz
$ cd netcdf-4.1.1
$ vim INSTALL

Warning:
    A bug in the 4.1.1 release means the "make clean" wipes out the
    documentation files, though it should not. This leads to a
    need latex warning on make.
    To fix, unpack the tarball again.

**** Ah, configure sees curl from macports and adds /opt/ to the link paths which sees the netcdf and hdf5 libraries there!
use --with-curl to stop this!

*** According to netcdf guys the file
	libnetcdff.a
    is not created if you follow the --disable-shared recommendation of the cmor INSTALL file
    this can be over rode with --enable-separate-fortran

$ ./configure -help
$ ./configure --prefix=/usr/local/netcdf4 --with-curl-config=/usr/bin --with-curl=/usr/lib --disable-shared --enable-netcdf4 --enable-fortran --with-zlib=/usr/local --with-szlib=/usr/local/szip  --with-hdf5=/usr/local/hdf5 --enable-separate-fortran
Scan Makefile
$ more Makefile

$ make > make.log 2>&1
$ more make.log 
$ make check > make_check.log 2>&1
$ more make_check.log 

All tests seemed to pass there are these warnings about the HDF5, but on the web I found that is is not an issue and the test passes in any event.

HDF5-DIAG: Error detected in HDF5 (1.8.5-patch1) thread 0:
  #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found
    major: Symbol table
    minor: Object not found
  #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object
    major: Symbol table
    minor: Object not found
  #002: H5Gtraverse.c line 964 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #003: H5Gtraverse.c line 887 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5Gloc.c line 522 in H5G_loc_find_by_idx_cb(): link not found
    major: Symbol table
    minor: Object not found
  #005: H5Gobj.c line 1204 in H5G_obj_lookup_by_idx(): no creation order index to query
    major: Symbol table
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.5-patch1) thread 0:
  #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found
    major: Symbol table
    minor: Object not found
  #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object
    major: Symbol table
    minor: Object not found
  #002: H5Gtraverse.c line 964 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #003: H5Gtraverse.c line 887 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5Gloc.c line 522 in H5G_loc_find_by_idx_cb(): link not found
    major: Symbol table
    minor: Object not found
  #005: H5Gobj.c line 1204 in H5G_obj_lookup_by_idx(): no creation order index to query
    major: Symbol table
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.5-patch1) thread 0:
  #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found
    major: Symbol table
    minor: Object not found
  #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object
    major: Symbol table
    minor: Object not found
  #002: H5Gtraverse.c line 964 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #003: H5Gtraverse.c line 887 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5Gloc.c line 522 in H5G_loc_find_by_idx_cb(): link not found
    major: Symbol table
    minor: Object not found
  #005: H5Gobj.c line 1204 in H5G_obj_lookup_by_idx(): no creation order index to query
    major: Symbol table
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.5-patch1) thread 0:
  #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found
    major: Symbol table
    minor: Object not found
  #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object
    major: Symbol table
    minor: Object not found
  #002: H5Gtraverse.c line 964 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #003: H5Gtraverse.c line 887 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5Gloc.c line 522 in H5G_loc_find_by_idx_cb(): link not found
    major: Symbol table
    minor: Object not found
  #005: H5Gobj.c line 1204 in H5G_obj_lookup_by_idx(): no creation order index to query
    major: Symbol table
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.5-patch1) thread 0:
  #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found
    major: Symbol table
    minor: Object not found
  #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object
    major: Symbol table
    minor: Object not found
  #002: H5Gtraverse.c line 964 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #003: H5Gtraverse.c line 887 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5Gloc.c line 522 in H5G_loc_find_by_idx_cb(): link not found
    major: Symbol table
    minor: Object not found
  #005: H5Gobj.c line 1204 in H5G_obj_lookup_by_idx(): no creation order index to query
    major: Symbol table
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.5-patch1) thread 0:
  #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found
    major: Symbol table
    minor: Object not found
  #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object
    major: Symbol table
    minor: Object not found
  #002: H5Gtraverse.c line 964 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #003: H5Gtraverse.c line 887 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5Gloc.c line 522 in H5G_loc_find_by_idx_cb(): link not found
    major: Symbol table
    minor: Object not found
  #005: H5Gobj.c line 1204 in H5G_obj_lookup_by_idx(): no creation order index to query
    major: Symbol table
    minor: Bad value

*** Testing HDF5/NetCDF-4 interoperability...
*** Creating a HDF5 file with one var with two dimension scales...ok.
*** Checking that HDF5 file can be read by netCDF-4, and adding an att...ok.
*** Checking that one var, two dimscales, one att file can still be read by HDF5...ok.
*** Creating a HDF5 file with one var and no dimension scales...ok.
*** Creating a HDF5 file with one var and no dimension scales, without creation ordering...ok.
*** Creating a HDF5 file with two vars and no dimension scales, without creation ordering...ok.
*** Creating a HDF5 file with fixed length string...ok.
*** Checking a HDF5 file with scalar, fixed-length string dataset...ok.
*** Tests successful!
PASS: tst_interops

$ make install > make_install.log 2>&1
$ more make_install.log

Libraries have been installed in:
   /usr/local/netcdf4/lib

+-------------------------------------------------------------+
| Congratulations! You have successfully installed netCDF!    |
|                                                             |
| You can use script "nc-config" to find out the relevant     |
| compiler options to build your application. Enter           |
|                                                             |
|     nc-config --help                                        |
|                                                             |
| for additional information. 

$ /usr/local/netcdf4/bin/nc-config --libs
> -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl

$ /usr/local/netcdf4/bin/nc-config --fflags
> -arch x86_64 -m64 -fPIC -I/usr/local/netcdf4/include

$ /usr/local/netcdf4/bin/nc-config --cflags
> --I/usr/local/netcdf4/include

$ export NETCDF4_DIR=/usr/local/netcdf4

$ export DYLD_LIBRARY_PATH=/usr/local/netcdf4:${DYLD_LIBRARY_PATH}

Also modify .profile accordingly

$ echo $NETCDF4_DIR
> /usr/local/netcdf4

$ echo $DYLD_LIBRARY_PATH
> /usr/local/netcdf4:É

# for cmor 2.2 (9/8/2010)
-------------------------------------------------------------
http://www2-pcmdi.llnl.gov/cmor

$ cd /usr/local/src
$ git clone http://esgf.org/git/cmor.git
$ cd /usr/local/src/cmor
$ vim INSTALL

**WATCH OUT THIS REEFERS TO NETCDF, HDF ETC not COSP!
   NOTES2: You only need to install the C libraries for these. Usually you can turn off
	   the fortran using --disable-fortran


$ ./configure -help
$ ./configure --prefix=/usr/local --with-netcdf=/usr/local/netcdf4 --with-hdf5=/usr/local/hdf5 --with-udunits2=/usr/local --with-uuid=/usr/local/

configure: ************************************************************************
configure:                               SUMMARY
configure:                             VERSION: 2.2.1 (commit: 4bbd53da1c465cd825e7c3150813dad699f6f894)
configure: ************************************************************************
configure: 
configure: ........................................................................
configure: ...                             COMPILERS
configure: ........................................................................
configure: 
configure:             FORTRAN
configure:  FC=ifort
configure:  F77=ifort
configure:  FFLAGS=-arch x86_64 -m64  -fPIC
configure:  FCFLAGS=-g
configure: ........................................................................
configure: ...                             EXTERNALS                            ...
configure: ........................................................................
./configure: line 5667: test: !=: unary operator expected
configure: 
configure: UUID
configure:  CFLAGS  :  -I/usr/local//include
configure:  LDFLAGS :  -L/usr/local//lib  -R/usr/local//lib -luuid
configure: 
configure: UDUNITS2
configure:  CFLAGS  :  -I/usr/local/include
configure:  LDFLAGS :  -L/usr/local/lib  -R/usr/local/lib -ludunits2 -lexpat
configure: 
configure: NetCDF4
configure:  CFLAGS  : -I/usr/local/netcdf4/include
configure:  LDFLAGS : -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl
configure: 
configure:  PYTHON
configure:  Not built, not used it tests
configure: 
configure: Type "make" to build cmor
configure: Type "make install" to build and install cmor to /usr/local
configure: 
configure: Type "make test" to build and test cmor code only
configure: Type "make test_C" to build cmor and test C only
configure: Type "make test_fortran" to build cmor and test fortran only
configure: 
configure: You can compile C or FORTRAN code using the compilation lines shown in file: compile_line.txt and printed bellow:
configure: 
configure: 
# The following line will compile "C" code mycode.c with cmor, additional libraries mycode.c may requires should be added to this line
 gcc -g  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime   mycode.c -L/usr/local/lib -I/usr/local/include  -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib  -R/usr/local/lib -ludunits2 -lexpat  -I/usr/local/include  -L/usr/local//lib  -R/usr/local//lib -luuid  -I/usr/local//include  -o mycode

# The following line will compile "FORTRAN" code mycode.f90 with cmor, additional libraries mycode.f90 may requires should be added to this line
ifort -g -g mycode.f90 -L/usr/local/lib -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib  -R/usr/local/lib -ludunits2 -lexpat  -I/usr/local/include  -L/usr/local//lib  -R/usr/local//lib -luuid  -I/usr/local//include   -o mycode

Scan Makefile
$ more Makefile

**** Note no matter what I pass in for CFLAGS or FCFLAGS.FFLAGSsome tests fail in configure and I always get the default    
	CFLAGS=-g,CFFLAGS=-g

This helps for ifort but not gcc

$ ./configure --prefix=/usr/local --with-netcdf=/usr/local/netcdf4 --with-hdf5=/usr/local/hdf5 --with-udunits2=/usr/local --with-uuid=/usr/local/  "CFLAGS=-arch x86_64 -fPIC" "FFLAGS=-arch x86_64 -m64 -fPIC" "FCFLAGS=-arch x86_64 -m64 -fPIC" "FC=ifort" "CXXFLAGS=-arch x86_64 -fPIC"

also make test issues a bunch of 
 > ifort: command line warning #10006: ignoring unknown option '-R/usr/local/lib'
These being somesort of Sun computer specific things I don't need to worry about or affect the results

$ ./configure --prefix=/usr/local --with-netcdf=/usr/local/netcdf4 --with-hdf5=/usr/local/hdf5 --with-udunits2=/usr/local --with-uuid=/usr/local/

So force the matter by editing the Makefile as so

#!/usr/bin/env sh
FC=ifort
CPPFLAGS_USER=""
FFLAGS_USER="-fPIC"
#MODULE_SUFFIX="mod"
PREFIX=/usr/local
FCFLAGS=-arch x86_64 -m64 -fPIC -c -g
CFLAGS=-arch x86_64 -fPIC -c -g
PYTHONEXEC= 
NO_COLOR2=\x1b[0m
OK_COLOR2=\x1b[2;34m
NO_COLOR=${NO_COLOR2}
OK_COLOR=${OK_COLOR2}


# Library name
LIBNAME = libcmor.a

# Library sources
#LIBSOURCES = Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c
LIBSOURCES = Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c Src/cmor_cfortran_interface.c Src/cmor_md5.c
LIBFSOURCES = Src/cmor_fortran_interface.f90

LIBFILES = cmor.o cmor_axes.o cmor_variables.o cmor_tables.o cdTimeConv.o cdUtil.o timeConv.o timeArith.o cmor_grids.o cmor_md5.o  cmor_cfortran_interface.o cmor_fortran_interface.o

#Include Files
INCFILES = include/cmor.h  include/cmor_func_def.h include/cmor_md5.h include/cdTime/cddrs.h	include/cdTime/cddrsint.h  include/cdTime/cdms.h  include/cdTime/cdmsint.h  include/cdTime/cdmsint_new.h  include/cdTime/cdrra.h  include/cdTime/cdunif.h  include/cdTime/cdunifint.h  include/cdTime/cdunifpp/cdunifpp.h  include/cdTime/cdunifpp/cdunifpp_frename.h  include/cdTime/cdunifpp/crayio.h  include/cdTime/cdunifpp/util.h  include/cdTime/cdunifpp/vardef.h  include/cdTime/cfortran.h  include/cdTime/drscdf.h  include/cdTime/drsdef.h	include/cdTime/fcddrs.h  include/cdTime/gaussLats.h  include/cdTime/grads.h  include/cdTime/gx.h  include/cdTime/isdb.h

# Temporary Files
TMPFILES = *~ $(LIBFILES) *.mod a.out *.stb Test/*.nc Test/IPCC_Fourth_Assessment *.LOG* *.dSYM Test/IPCC Test/CMIP5 CMIP5
DISTFILES = libcmor.a
DEPEND= makedepend $(CFLAGS) -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include 

all:    cmor
	@echo
depend:  $(LIBSOURCES)
	${DEPEND}  $(LIBSOURCES)
cmor.o: Src/cmor.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor.c
cmor_variables.o: Src/cmor_variables.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor_variables.c
cmor_axes.o: Src/cmor_axes.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor_axes.c
cmor_tables.o: Src/cmor_tables.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor_tables.c
cmor_grids.o: Src/cmor_grids.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor_grids.c
cmor_md5.o: Src/cmor_md5.c include/cmor.h include/cmor_func_def.h include/cmor_md5.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor_md5.c
cmor_cfortran_interface.o: Src/cmor_cfortran_interface.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cmor_cfortran_interface.c
cdTimeConv.o: Src/cdTime/cdTimeConv.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cdTime/cdTimeConv.c
cdUtil.o: Src/cdTime/cdUtil.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cdTime/cdUtil.c
timeConv.o: Src/cdTime/timeConv.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cdTime/timeConv.c
timeArith.o:Src/cdTime/timeArith.c include/cmor.h include/cmor_func_def.h
	gcc $(CFLAGS)  -DCOLOREDOUTPUT -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime  -I/usr/local/netcdf4/include  -I/usr/local/include  -I/usr/local//include  Src/cdTime/timeArith.c
cmor_fortran_interface.o: Src/cmor_fortran_interface.f90
	ifort $(FCFLAGS)  -DCOLOREDOUTPUT Src/cmor_fortran_interface.f90
cmor:  $(LIBFILES)  
	@ar crv $(LIBNAME) $(LIBFILES) 
	@ranlib $(LIBNAME)
clean:
	@echo "Cleaning [$(WHEREAMI)] ..."
	@rm -rf $(TMPFILES)
distclean: clean
	@echo "Completely cleaning [$(WHEREAMI)]..."
	@rm -f $(DISTFILES)
install: cmor
	mkdir -p /usr/local/lib
	mkdir -p /usr/local/include
	mkdir -p /usr/local/include/cdTime
	mkdir -p /usr/local/include/cdTime/cdunifpp
	cp -p $(LIBNAME) /usr/local/lib
	cp -pr include/*.h cmor_users_functions.* /usr/local/include
	cp -pr include/cdTime/*.h /usr/local/include/cdTime
	cp -pr include/cdTime/cdunifpp/*.h /usr/local/include/cdTime/cdunifpp
uninstall: distclean 
	rm /usr/local/lib/$(LIBNAME)    
	cd /usr/local ; rm $(INCFILES)  
backup: clean
	@echo "Creating full backup tar file..."
	@(cd ..; \
	@TGZNAME=$(TGZDIR)/cmor_`$(TIMESTAMP)`_full.tgz; \
	@tar cfz $$TGZNAME Cmor; \
	@touch $(TIMESTAMPDIR)/cmor_`$(TIMESTAMP)`_full.time; \
	@echo "Full backup tar file created : $$TGZNAME")
test:  cmor test_C test_fortran  
	@echo "All C and Fortran Test passed successfully"
test_C: cmor 
	@rm -f ./ipcc_test_code ; gcc $(CFLAGS) -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime   Test/ipcc_test_code.c -L/usr/local/lib -I/usr/local/include  -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib  -R/usr/local/lib -ludunits2 -lexpat  -I/usr/local/include  -L/usr/local//lib  -R/usr/local//lib -luuid  -I/usr/local//include -o ipcc_test_code  >/dev/null 2>/dev/null; ./ipcc_test_code >/dev/null 2>/dev/null
	@rm -f test_grid ; gcc $(CFLAGS) -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime   Test/test_grid.c -L/usr/local/lib -I/usr/local/include  -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib  -R/usr/local/lib -ludunits2 -lexpat  -I/usr/local/include  -L/usr/local//lib  -R/usr/local//lib -luuid  -I/usr/local//include -o test_grid >/dev/null 2>/dev/null; ./test_grid >/dev/null 2>/dev/null;
	@rm -f test_lots_of_variables ; gcc $(CFLAGS) -I/usr/local/netcdf4/include -Iinclude -Iinclude/cdTime   Test/test_lots_of_variables.c -L/usr/local/lib -I/usr/local/include  -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib  -R/usr/local/lib -ludunits2 -lexpat  -I/usr/local/include  -L/usr/local//lib  -R/usr/local//lib -luuid  -I/usr/local//include -o test_lots_of_variables >/dev/null 2>/dev/null; ./test_lots_of_variables >/dev/null 2>/dev/null;
python:
	@echo "Building Python interface"
	@${PYTHONEXEC} setup.py install  
test_a_python:
	@echo "${OK_COLOR}Testing ${TEST_NAME} ${NO_COLOR}"
	${PYTHONEXEC} ${TEST_NAME} >/dev/null 2>/dev/null
test_python: python
	@env TEST_NAME=Test/test_python_direct_calls.py make test_a_python
	@env TEST_NAME=Test/test_python_user_interface_00.py make test_a_python
	@env TEST_NAME=Test/test_python_user_interface_01.py make test_a_python
	@env TEST_NAME=Test/test_python_user_interface_03.py make test_a_python
	@env TEST_NAME=Test/test_python_common.py make test_a_python
	@env TEST_NAME=Test/cmor_speed_and_compression.py make test_a_python
	@env TEST_NAME=Test/cmor_speed_and_compression_01.py make test_a_python
#	@env TEST_NAME=Test/cmor_speed_and_compression_02.py make test_a_python
	@env TEST_NAME=Test/test_compression.py make test_a_python
	@env TEST_NAME=Test/test_python_appending.py make test_a_python
	@env TEST_NAME=Test/test_python_bounds_request.py make test_a_python
	@env TEST_NAME=Test/test_python_new_tables.py make test_a_python
#	@env TEST_NAME=Test/test_python_index_coord.py make test_a_python
	@env TEST_NAME=Test/test_python_jamie.py make test_a_python
	@env TEST_NAME=Test/test_python_jamie_2.py make test_a_python
	@env TEST_NAME=Test/test_python_jamie_3.py make test_a_python
	@env TEST_NAME=Test/test_python_jamie_4.py make test_a_python
	@env TEST_NAME=Test/test_python_jamie_6.py make test_a_python
	@env TEST_NAME=Test/test_python_memory_check.py make test_a_python
	@env TEST_NAME=Test/test_python_open_close_cmor_multiple.py make test_a_python
	@env TEST_NAME=Test/test_python_jamie_7.py make test_a_python
	@env TEST_NAME=Test/test_python_joerg_1.py make test_a_python
	@env TEST_NAME=Test/test_python_joerg_2.py make test_a_python
	@env TEST_NAME=Test/test_python_joerg_3.py make test_a_python
	@env TEST_NAME=Test/test_python_YYYMMDDHH_exp_fmt.py make test_a_python
	@env TEST_NAME=Test/test_python_region.py make test_a_python

test_case:
	@echo "${OK_COLOR}Testing: "${TEST_NAME}" with input file: ${INPUT_FILE}${NO_COLOR}"
	@rm -f ./${TEST_NAME} 2>/dev/null ; ifort $(FCFLAGS)  Test/${TEST_NAME}.f90 -L/usr/local/lib -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib  -I/usr/local/include  -L/usr/local//lib  -luuid  -I/usr/local//include   -o ${TEST_NAME} ;
	@./${TEST_NAME} >/dev/null 2>/dev/null < ${INPUT_FILE} ;
	@ rm ./${TEST_NAME}
ifeq ( ,python)
	@env TEST_NAME="Test/check_results.py ${TEST_NAME}" make test_a_python
endif
test_case_old_cmor_tables:
	@echo "Testing: "${TEST_NAME}" with input file: "${INPUT_FILE}
	@rm -f ./${TEST_NAME} 2>/dev/null ; ifort $(FCFLAGS)  Test/old_cmor_tables/${TEST_NAME}.f90 -L/usr/local/lib -L. -lcmor -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl  -L/usr/local/lib -ludunits2 -lexpat  -I/usr/local/include  -L/usr/local//lib -luuid  -I/usr/local//include   -o ${TEST_NAME} ;
	@./${TEST_NAME} >/dev/null 2>/dev/null < ${INPUT_FILE} ;
	@ rm ./${TEST_NAME}
ifeq ( ,python)
	@env TEST_NAME="Test/check_results.py old_cmor_tables_${TEST_NAME}" make test_a_python
endif
test_fortran_old_cmor_tables: cmor
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/tas_3D_noreorder.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_txy.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_txy_split_lon.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_xty_split_lon.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/tas_3D_noreorder.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/3D_txy.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/3D_txy_split_lon.input" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/3D_xty_split_lon.input" make test_case_old_cmor_tables
	@env TEST_NAME="karls_test" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test1" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test2" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test3" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test4" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="main_prog" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_any_from_asc_i" INPUT_FILE="Test/tas_mytest_3d_i.input" make test_case_old_cmor_tables
	@env TEST_NAME="mytest_4d_r" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="rewrite_harvardf_data" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_3h" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_dimensionless" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_fortran_example_00" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_fortran_example_01" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_station_data" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_region" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_sigma" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_singleton" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="mytest_4d_r_big_array" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="mytest_4d_d_big_array_2" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="mytest_4d_d_big_array_3" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="mytest_4d_d_big_array_4" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="mytest_4d_d_big_array_5" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="climatology_test_code" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_lots_of_variables" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_shrt_exp_nm_set_att_initi" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
	@env TEST_NAME="test_sophie" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
test_fortran: cmor
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/tas_3D_noreorder.input" make test_case
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_txy.input" make test_case
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_txy_split_lon.input" make test_case
	@env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_xty_split_lon.input" make test_case
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/tas_3D_noreorder.input" make test_case
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/3D_txy.input" make test_case
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/3D_txy_split_lon.input" make test_case
	@env TEST_NAME="test_any_from_asc_d" INPUT_FILE="Test/3D_xty_split_lon.input" make test_case
	@env TEST_NAME="karls_test" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test1" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test2" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test3" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test4" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="main_prog" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_any_from_asc_i" INPUT_FILE="Test/tas_mytest_3d_i.input" make test_case
	@env TEST_NAME="mytest_4d_r" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="rewrite_harvardf_data" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_3h" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_dimensionless" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_fortran_example_00" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_fortran_example_01" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_station_data" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_cmor_grid_alejandro" INPUT_FILE="Test/alejandro.txt" make test_case
	@env TEST_NAME="test_cmor_grid_alejandro" INPUT_FILE="Test/alejandro_1.txt" make test_case
	@env TEST_NAME="test_cmor_grid_alejandro" INPUT_FILE="Test/alejandro_2.txt" make test_case
	@env TEST_NAME="test_region" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_sigma" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_singleton" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="mytest_4d_r_big_array" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="mytest_4d_d_big_array_2" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="mytest_4d_d_big_array_3" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="mytest_4d_d_big_array_4" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="mytest_4d_d_big_array_5" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="climatology_test_code" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_lots_of_variables" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_shrt_exp_nm_set_att_initi" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_sophie" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="ipcc_test_code" INPUT_FILE="Test/noinput" make test_case
atest: cmor
#	@env TEST_NAME="mytest_4d_d_big_array_2" INPUT_FILE="Test/noinput" make test_case
	@env TEST_NAME="test_lots_of_variables" INPUT_FILE="Test/noinput" make test_case
#	@env TEST_NAME="wegner_test" INPUT_FILE="Test/noinput" make test_case


$ make > make.log 2>&1
$ more make.log 
$ make test > make_test.log 2>&1
$ more make_test.log 
> make: *** [test_C] Error 126

Okay, well let's go back to the default Makefile 
$ rm Makefile

$  ./configure --prefix=/usr/local --with-netcdf=/usr/local/netcdf4 --with-hdf5=/usr/local/hdf5 --with-udunits2=/usr/local --with-uuid=/usr/local/  "CFLAGS=-arch x86_64 -fPIC" "FFLAGS=-arch x86_64 -m64 -fPIC" "FCFLAGS=-arch x86_64 -m64 -fPIC" "FC=ifort" "CXXFLAGS=-arch x86_64 -fPIC"

$ make > make.log 2>&1
$ more make.log 
$ make test > make_test.log 2>&1
$ more make_test.log 
> All C and Fortran Test passed successfully

Well, the C libraries don't seem like they are the same as those from netcdf/hdf but the fortran ones should beÉ.

$  make install
> cp -p libcmor.a /usr/local/lib
> cp -pr include/*.h cmor_users_functions.* /usr/local/include
> cp -pr include/cdTime/*.h /usr/local/include/cdTime
> cp -pr include/cdTime/cdunifpp/*.h /usr/local/include/cdTime/cdunifpp

$ grep "cmor_users_functions" /usr/local/lib/*
>  Binary file libcmor.a matches

so it seems the fortran API is working.

# COSP 1.3
-------------------------------------------------------------
http://cfmip.metoffice.com/COSP.html

$ cd /usr/local/src
$  tar -zxvf cosp.v1.3.rev597.tar.gz
$ cd COSP
$ vim README.txt
$ vim Makefile

Start Modify Makefile

########################################################################
#              Adapt these variables to your environment
########################################################################
F90      = ifort
F90FLAGS = -arch x86_64 -m64 -fPIC
# -------- Third Party Libraries -----------
NCDF_INC = /usr/local/netcdf4/include
NCDF_LIB = /usr/local/netcdf4/lib
UDUNITS_LIB = /usr/local/lib
UUID_INC = /usr/local/include
UUID_LIB = /usr/local/lib
HDF5_INC = /usr/local/hdf5/include
HDF5_LIB = /usr/local/hdf5/lib
CMOR_INC = /usr/local/include
CMOR_LIB = /usr/local/lib
# These are to find the szip library                                                                                                                                            
INC = /usr/local/szip/include             
LIB = /usr/local/szip/lib 
# Help the linker
LD_LIBRARY_PATH=/usr/local/lib:/usr/local/hdf5/:/usr/local/netcdf4:/usr/local/szip/lib

# ---------------- RTTOV ---------------------
RTTOV_PATH     = /usr/local/src/rttov93
RTTOV_LIB_PATH = $(RTTOV_PATH)/lib
RTTOV_INC_PATH = $(RTTOV_PATH)/include
RTTOV_MOD_PATH = $(RTTOV_PATH)/mod
# --------- Non-optional simulators ----------
RS_PATH = quickbeam
CS_PATH = actsim
LLNL_PATH = llnl
ISCCP_PATH = icarus-scops-4.1-bsd
MISR_PATH = MISR_simulator
MODIS_PATH = MODIS_simulator
########################################################################
#              End of modifications
########################################################################

also modify the line

	-L${RTTOV_LIB_PATH} -lrttov9.1 \    
to

	-L${RTTOV_LIB_PATH} -lrttov9.3 \    

END Modify Makefile
	

Get RTTOV WorkingÉ.

	# for RTTOV 9.3 
	-------------------------------------------------------------

	http://research.metoffice.gov.uk/research/interproj/nwpsaf/rtm/rtm_rttov9.html

	$ cd /usr/local/src
	$  tar -zxvf rttov93.tar.gz
	$ cd rttov93
	$ vim readme.txt

	Downloaded (9/9/2010)
 	  $  tar -zxvf rttov93_bugfixes.tar.gz
	  $ cd rttov93_bugfixes
  
    	  $  mv rttov_id.ksh ../scripts
          $  mv *.F90 ../src

	  copied contents over originals
		/scripts/rttov_id.ksh

		/src/rttov_cldstr_ad.F90
		/src/rttov_eddington_ad.F90  
		/src/rttov_integrate_tl.F90  
		/src/rttov_opdep_9_solar.F90     
		/src/rttov_opdep_9_tl.F90         
		/src/rttov_refsun.F90
		/src/rttov_cldstr_k.F90   
		/src/rttov_eddington_tl.F90  
		/src/rttov_layeravg_ad.F90  
		/src/rttov_opdep_9_solar_ad.F90  
		/src/rttov_opdpscattir.F90        
		/src/rttov_types.F90
		/src/rttov_const.F90      
		/src/rttov_initcoeffs.F90    
		/src/rttov_opdep_9_ad.F90    
		/src/rttov_opdep_9_solar_k.F90   
		/src/rttov_readcoeffs_ascii.F90   
		/src/tstrad.F90
		/src/rttov_eddington.F90  
		/src/rttov_integrate_ad.F90  
		/src/rttov_opdep_9_k.F90     
		/src/rttov_opdep_9_solar_tl.F90  
		/src/rttov_readcoeffs_binary.F90

	Downloaded (9/9/2010)
		rtcoef_eos_2_airs_43lev_lblrtm.dat.bz2  		
		rtcoef_metop_2_iasi_lblrtm.dat.bz2
	  	rtcoef_mtsat_1_imager_pw.dat.bz2 
	 	rtcoef_mtsat_2_imager_pw.dat.bz2  
		ss_rttov9_ssmis.tar.bz2
    
	     Manually Moved/Replaced 
		rttov93/rtcoef_rttov9/rtcoef_dmsp_16_ssmis.dat
	  	rttov93/rtcoef_rttov9/rtcoef_dmsp_17_ssmis.dat
		rttov93/rtcoef_rttov9/rtcoef_dmsp_18_ssmis.dat
		rttov93/rtcoef_rttov9/rtcoef_metop_2_iasi_lblrtm.dat
		rttov93/rtcoef_rttov9/rtcoef_eos_2_airs_43lev_lblrtm.dat

		rttov93/rtcoef_rttov9/rtcoef_mtsat_1_imager_pw.dat
		rttov93/rtcoef_rttov9/rtcoef_mtsat_2_imager_pw.dat

		and

		rttov93/rtcoef_rttov7/rtcoef_mtsat_1_imager_pw.dat
		rttov93/rtcoef_rttov7/rtcoef_mtsat_2_imager_pw.dat


	$  cp /usr/local/src/rttov93/build/arch/ifort /usr/local/src/rttov93/build/arch/ifort-local
	$  vim /usr/local/src/rttov93/build/arch/ifort-local
		rttov93/build/arch/ifort

	FC=ifort
	FC77=ifort
	LDFLAGS_ARCH=
	FFLAGS_ARCH=-cm -w95 -arch x86_64 -m64 -fPIC
	AR=ar r

	Compile

	    $ cd /usr/local/src/rttov93/src/
	    $  ../build/Makefile.PL
	    $ make ARCH=ifort-local > make.log 2>&1 

	Test
            $ cd /usr/local/src/rttov93/scripts
	    $  sh test_all.ksh
	    > Test RTTOV9 successfully completed
            $ cd /usr/local/src/rttov93/test
	    $ ls -l *fwd*.diff
	     Files should be zero size for some rounding differences are documented in the users guide.
	     only non-zero size file
	     > -rw-r--r-- 1 root 1280 728 Sep 13 14:36 tstrad_fwd_ssmis_01.diff

Back to COSP

$ cd /usr/local/src/COSP/
$  vim /usr/local/src/COSP/cosp_defs.h
   Uncomment the following line in /usr/local/src/COSP/cosp_defs.h:
   !#define RTTOV rttov
$  make rttov > make_rttov.log 2>&1

Good until

ifort -arch x86_64 -m64 -fPIC cosp_test.F90 cosp_radar.o cosp_types.o cosp_constants.o cosp_simulator.o cosp_utils.o scops.o prec_scops.o cosp.o cosp_stats.o pf_to_mr.o cosp_lidar.o radar_simulator_types.o zeff.o array_lib.o atmos_lib.o dsd.o format_input.o gases.o load_hydrometeor_classes.o math_lib.o mrgrnk.o optics_lib.o radar_simulator.o lidar_simulator.o cosp_io.o llnl_stats.o lmd_ipsl_stats.o cosp_isccp_simulator.o icarus.o cosp_misr_simulator.o MISR_simulator.o cosp_modis_simulator.o modis_simulator.o cosp_rttov_simulator.o cosp_rttov.o \
        -I/usr/local/netcdf4/include -L/usr/local/netcdf4/lib -lnetcdff -lnetcdf  \
        -I/usr/local/szip/include -L/usr/local/szip/lib -lsz \
        -I/usr/local/include -L/usr/local/lib -lcmor \
        -I/usr/local/include -L/usr/local/lib -luuid \
        -L/usr/local/lib -ludunits2 -lexpat \
        -L/usr/local/src/rttov93/lib -lrttov9.3 \
        -o cosp_test
Undefined symbols:
  "_H5DSset_scale", referenced from:
      _var_create_dataset in libnetcdf.a(nc4hdf.o)
      _write_dim in libnetcdf.a(nc4hdf.o)
É

Note that 

Try to modify the Makefile after looking at Makefile.cmor1

.SUFFIXES : .F .f .c .o .a .f90 .f95 .F90
########################################################################
#              Adapt these variables to your environment
########################################################################
F90      = ifort
F90FLAGS = -arch x86_64 -m64 -fPIC
# -------- Third Party Libraries -----------
NCDF_INC = /usr/local/netcdf4/include
NCDF_LIB = /usr/local/netcdf4/lib
UDUNITS_LIB = /usr/local/lib
UUID_INC = /usr/local/include
UUID_LIB = /usr/local/lib
CMOR_INC = /usr/local/include
CMOR_LIB = /usr/local/lib
HDF5_INC = /usr/local/hdf5/include
HDF5_LIB = /usr/local/hdf5/lib
SZIP_INC = /usr/local/szip/include
SZIP_LIB = /usr/local/szip/lib
INC = /usr/local/include
LIB = /usr/local/lib
# Help the linker
LD_LIBRARY_PATH=/usr/local/lib:/usr/local/hdf5/:/usr/local/netcdf4:/usr/local/szip/lib
# ---------------- RTTOV ---------------------
RTTOV_PATH     = /usr/local/src/rttov93
RTTOV_LIB_PATH = $(RTTOV_PATH)/lib
RTTOV_INC_PATH = $(RTTOV_PATH)/include
RTTOV_MOD_PATH = $(RTTOV_PATH)/mod
# --------- Non-optional simulators ----------
RS_PATH = quickbeam
CS_PATH = actsim
LLNL_PATH = llnl
ISCCP_PATH = icarus-scops-4.1-bsd
MISR_PATH = MISR_simulator
MODIS_PATH = MODIS_simulator
########################################################################
#              End of modifications
########################################################################

PROG =  cosp_test
OBJS =  cosp_radar.o cosp_types.o cosp_constants.o cosp_simulator.o \
        cosp_utils.o scops.o prec_scops.o cosp.o cosp_stats.o \
        pf_to_mr.o \
        cosp_lidar.o radar_simulator_types.o zeff.o \
        array_lib.o atmos_lib.o dsd.o format_input.o \
        gases.o load_hydrometeor_classes.o \
        math_lib.o mrgrnk.o optics_lib.o radar_simulator.o \
        lidar_simulator.o cosp_io.o llnl_stats.o lmd_ipsl_stats.o \
        cosp_isccp_simulator.o icarus.o \
        cosp_misr_simulator.o MISR_simulator.o \
        cosp_modis_simulator.o modis_simulator.o \
        cosp_rttov_simulator.o

all: $(PROG)


$(PROG): $(OBJS)
	$(F90) $(F90FLAGS) $(PROG).F90 $(OBJS) \
	-I$(NCDF_INC) -L${NCDF_LIB} -lnetcdff -lnetcdf \
	-I$(HDF5_INC) -L${HDF5_LIB} -lhdf5_hl -lhdf5 \
	-I$(INC) -L${LIB} -lm -lz \
	-I$(SZIP_INC) -L${SZIP_LIB} -lsz -lcurl \
	-I$(CMOR_INC) -L${CMOR_LIB} -lcmor \
	-I$(UUID_INC) -L${UUID_LIB} -luuid \
	-L${UDUNITS_LIB} -ludunits2 -lexpat -o $(PROG)

cmor1: $(OBJS)
	$(F90) $(F90FLAGS) $(PROG).F90 $(OBJS) -I$(CMOR_INC) -L${CMOR_LIB} -lcmor \
	-I$(NCDF_INC) -L${NCDF_LIB} -lnetcdf -o $(PROG)
 
rttov: $(OBJS) cosp_rttov.o
	$(F90) $(F90FLAGS) $(PROG).F90 $(OBJS) cosp_rttov.o \
	-I$(NCDF_INC) -L${NCDF_LIB} -lnetcdff -lnetcdf  \
	-I$(HDF5_INC) -L${HDF5_LIB} -lhdf5_hl -lhdf5 \
	-I$(SZIP_INC) -L${SZIP_LIB} -lsz -lcurl \
	-I$(INC) -L${LIB} -lm -lz \
	-I$(CMOR_INC) -L${CMOR_LIB} -lcmor \
	-I$(UUID_INC) -L${UUID_LIB} -luuid \
	-L${UDUNITS_LIB} -ludunits2 -lexpat \
	-L${RTTOV_LIB_PATH} -lrttov9.3 \
	-o $(PROG)
        
%.o: %.f90
	@echo $(F90) $(F90FLAGS) -c -I$(NCDF_INC) -I$(CMOR_INC) $<
	$(F90) $(F90FLAGS) -c -I$(NCDF_INC) -I$(CMOR_INC) $<
	@echo "-----------------------------"

%.o: %.F90
	@echo $(F90) $(F90FLAGS) -c -I$(NCDF_INC) -I$(CMOR_INC) $<
	$(F90) $(F90FLAGS) -c -I$(NCDF_INC) -I$(CMOR_INC) $<
	@echo "-----------------------------"

$(PROG).o     : cosp_constants.o cosp_types.o cosp.o cosp_io.o
cosp_io.o       : cosp_constants.o cosp_types.o cosp_modis_simulator.o
cosp.o          : cosp_simulator.o cosp_types.o cosp_modis_simulator.o
cosp_lidar.o    : cosp_constants.o cosp_types.o
cosp_radar.o    : cosp_constants.o cosp_types.o radar_simulator_types.o \
	              array_lib.o atmos_lib.o format_input.o math_lib.o optics_lib.o
cosp_simulator.o: cosp_types.o cosp_radar.o cosp_lidar.o \
                  cosp_isccp_simulator.o cosp_misr_simulator.o \
                  cosp_modis_simulator.o cosp_rttov_simulator.o cosp_stats.o
cosp_stats.o    : cosp_constants.o cosp_types.o llnl_stats.o lmd_ipsl_stats.o
cosp_types.o    : cosp_constants.o cosp_utils.o radar_simulator_types.o
cosp_utils.o    : cosp_constants.o
lmd_ipsl_stats.o : llnl_stats.o
array_lib.o    : mrgrnk.o
dsd.o          : array_lib.o math_lib.o
format_input.o : array_lib.o
load_hydrometeor_classes.o: radar_simulator_types.o
math_lib.o                : array_lib.o mrgrnk.o
radar_simulator.o         : array_lib.o math_lib.o mrgrnk.o optics_lib.o \
	                        radar_simulator_types.o
zeff.o                    : math_lib.o optics_lib.o
cosp_isccp_simulator.o    : cosp_constants.o cosp_types.o
cosp_misr_simulator.o     : cosp_constants.o cosp_types.o
cosp_modis_simulator.o    : cosp_constants.o cosp_types.o modis_simulator.o
cosp_rttov_simulator.o    : cosp_constants.o cosp_types.o cosp_rttov.o

clean_objs:
	rm -f $(OBJS) *.mod *.o

clean:
	rm -f $(PROG) $(OBJS) *.mod *.o fort.*

scops.o : $(ISCCP_PATH)/scops.f
	$(F90) $(F90FLAGS) -c -I$(ISCCP_PATH) $<

icarus.o : $(ISCCP_PATH)/icarus.f
	$(F90) $(F90FLAGS) -c $<

prec_scops.o : $(LLNL_PATH)/prec_scops.f
	$(F90) $(F90FLAGS) -c $<

pf_to_mr.o : $(LLNL_PATH)/pf_to_mr.f
	$(F90) $(F90FLAGS) -c $<

radar_simulator_types.o : $(RS_PATH)/radar_simulator_types.f90
	$(F90) $(F90FLAGS) -c $<

atmos_lib.o : $(RS_PATH)/atmos_lib.f90
	$(F90) $(F90FLAGS) -c $<

zeff.o : $(RS_PATH)/zeff.f90
	$(F90) $(F90FLAGS) -c $<

array_lib.o : $(RS_PATH)/array_lib.f90
	$(F90) $(F90FLAGS) -c $<

dsd.o : $(RS_PATH)/dsd.f90
	$(F90) $(F90FLAGS) -c $<

format_input.o : $(RS_PATH)/format_input.f90
	$(F90) $(F90FLAGS) -c $<

gases.o : $(RS_PATH)/gases.f90
	$(F90) $(F90FLAGS) -c $<

load_hydrometeor_classes.o : $(RS_PATH)/load_hydrometeor_classes.f90
	$(F90) $(F90FLAGS) -c $<

math_lib.o : $(RS_PATH)/math_lib.f90
	$(F90) $(F90FLAGS) -c $<

mrgrnk.o : $(RS_PATH)/mrgrnk.f90
	$(F90) $(F90FLAGS) -c $<

optics_lib.o : $(RS_PATH)/optics_lib.f90
	$(F90) $(F90FLAGS) -c $<

radar_simulator.o : $(RS_PATH)/radar_simulator.f90
	$(F90) $(F90FLAGS) -c $<

lidar_simulator.o : $(CS_PATH)/lidar_simulator.F90
	$(F90) $(F90FLAGS) -c $<

lmd_ipsl_stats.o : $(CS_PATH)/lmd_ipsl_stats.F90
	$(F90) $(F90FLAGS) -c $<

llnl_stats.o : $(LLNL_PATH)/llnl_stats.F90
	$(F90) $(F90FLAGS) -c $<

cosp_radar.o : $(LLNL_PATH)/cosp_radar.F90
	$(F90) $(F90FLAGS) -c $<

MISR_simulator.o : $(MISR_PATH)/MISR_simulator.f
	$(F90) $(F90FLAGS) -c $<

modis_simulator.o : $(MODIS_PATH)/modis_simulator.F90 
	$(F90) $(F90FLAGS) -c $<

cosp_rttov.o : cosp_rttov.F90 
	$(F90) $(F90FLAGS) -c -I $(RTTOV_INC_PATH) -I $(RTTOV_MOD_PATH) $<

$ make clean
$ make rttov > make_rttov1.log 2>&1

This seems to work!

$ ln -s /usr/local/src/rttov93/rtcoef_rttov9/*[.dat] .

The logical Lrttov_sim, in cosp_output_nl.txt switches on/off RTTOV within COSP. 
Ltbrttov switches on/off the RTTOV outputs, i.e. the brighness temperatures. 
The COSP input arguments that control which instrument and channels you want to 
simulate are found in cosp_input_nl.txt, below the lines
  !----------------------------------------------------------------------------------
  !-------------- RTTOV inputs
  !----------------------------------------------------------------------------------
The possible values for the arguments Platform, Satellite, Instrument, Nchannels, Channels can
be found in the RTTOV documentation.

NOTE: the current implementation of RTTOV in COSP only computes clear-sky brightness temperatures. All sky support will be
added in the future.

Next Compile COSP w/RTTOV

$ vim /usr/local/src/COSP/cosp_defs.h
  Comment the following line in /usr/local/src/COSP/cosp_defs.h:
  !#define RTTOV rttov

$ make clean
$ make > make.log 2>&1
$ more make.log 

Seems to work too.

### Testing

$ vim cosp_test.sh
Change top line to
#/bin/sh

    Oops, need to install nccmp

	# for nccmp 1.1.0
	-------------------------------------------------------------
	http://nccmp.sourceforge.net/

   	$ cd /usr/local/src
	$ mv ~/Downloads/nccmp-1.1.0.tgz .
	$ tar -zxvf nccmp-1.1.0.tgz
	$ cd nccmp-1.1.0/src
	$ vim README

	For some reason need to do this to get it to work as missing
	$ cp /usr/local/src/netcdf-4.1.1/libsrc4/error.h /usr/local/src/nccmp-1.1.0/src/ncinfo/include/error.h
	
	Also need to cut out this lines as they aren't needed
	$ vim /usr/local/src/nccmp-1.1.0/src/src/getopt.c
	
	int
	getopt_long (argc, argv, options, long_options, opt_index)
	     int argc;
	     char *const *argv;
	     const char *options;
	     const struct option *long_options;
	     int *opt_index;
	{
	  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
	}

	/* Like getopt_long, but '-' as well as '--' can indicate a long option.
	   If an option that starts with '-' (not '--') doesn't match a long option,
	   but does match a short option, it is parsed as a short option
	   instead.  */

	int
	getopt_long_only (argc, argv, options, long_options, opt_index)
	     int argc;
	     char *const *argv;
	     const char *options;
	     const struct option *long_options;
	     int *opt_index;
	{
	  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
	}

	$ ./configure -help
	$ export LDFLAGS="-arch x86_64 -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl"
	$ export LIBS="-L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl"
	$ export CPPFLAGS="-I/usr/local/netcdf4/include -I/usr/local/hdf5/include"
	$ ./configure --prefix=/usr/local	

	Scan Makefile
	$ more Makefile
	$ make > make.log 2>&1

	Need to edit the this to give it the correct path
	
	$ vim /usr/local/src/nccmp-1.1.0/src/ncinfo/
	
	change 
		ncgen=/usr/local/bin/ncgen
	to
		ncgen=/usr/local/netcdf4/bin/ncgen

	$ make check > make_check.log 2>&1
    > more  make_check.log
    Making check in src
    make[1]: Nothing to be done for `check'.
    Making check in test
    make  padheader test_strlist
    gcc -DHAVE_CONFIG_H -I. -I..   -I/usr/local/netcdf4/include -I/usr/local/hdf5/include  -arch x86_64  -fPIC -MT padheader.o -MD -MP -MF .deps/padheader.Tpo -c -o padheader.o padheader.c
    mv -f .deps/padheader.Tpo .deps/padheader.Po
    gcc  -arch x86_64  -fPIC  -arch x86_64 -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl -o padheader padheader.o -lnetcdf -lnetcdf -lm -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl
    gcc -DHAVE_CONFIG_H -I. -I..  -I../src -I/usr/local/netcdf4/include -I/usr/local/hdf5/include  -arch x86_64  -fPIC -MT test_strlist-test_strlist.o -MD -MP -MF .deps/test_strlist-test_strlist.Tpo -c -o test_strlist-test_strlist.o `test -f 'test_strlist.c' || echo './'`test_strlist.c
    mv -f .deps/test_strlist-test_strlist.Tpo .deps/test_strlist-test_strlist.Po
    gcc  -arch x86_64  -fPIC  -arch x86_64 -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl -o test_strlist test_strlist-test_strlist.o ../src/nccmp-xmalloc.o ../src/nccmp-strlist.o -lnetcdf -lm -L/usr/local/netcdf4/lib -lnetcdf -L/usr/local/hdf5/lib -lhdf5_hl -lhdf5 -L/usr/local/lib -lz -lm -L/usr/local/szip/lib -lsz -lcurl
    make  check-TESTS
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    PASS: nccmp_test.sh
    =============
    1 test passed
    =============
    Making check in ncinfo
    make  check-TESTS
    + ncgen=/usr/local/netcdf4/bin/ncgen
    + /usr/local/netcdf4/bin/ncgen -o test1.nc test1.ncgen
    + /usr/local/netcdf4/bin/ncgen -k 2 -o test2.nc test2.ncgen
    + /usr/local/netcdf4/bin/ncgen -k 3 -o test3.nc test2.ncgen
    + /usr/local/netcdf4/bin/ncgen -k 4 -o test4.nc test2.ncgen
    + rm -f tmp.stdout
    + touch tmp.stdout
    + echo test1.nc
    + ./ncinfo test1.nc
    + echo '\ntest2.nc'
    + ./ncinfo test2.nc
    + echo '\ntest3.nc'
    + ./ncinfo test3.nc
    + echo '\ntest4.nc'
    + ./ncinfo test4.nc
    + cmp tmp.stdout test.stdout
    tmp.stdout test.stdout differ: char 47, line 3
    + test 1 = 0
    + echo

    + echo 'Test failed: cmp tmp.stdout test.stdout'
    Test failed: cmp tmp.stdout test.stdout
    + exit 1
    FAIL: test.sh
    ==============================================
    1 of 1 test failed
    Please report to =Remik.Ziemlinski_at_noaa.gov
    ==============================================
    make[2]: *** [check-TESTS] Error 1
    make[1]: *** [check-am] Error 2
    make: *** [check-recursive] Error 1

    So I emailed Remik Ziemlinski  and got the following advice:
    ... It's perfectly acceptable to edit nccmp-1.1.0/src/Makefile and remove "ncinfo" from the line:
        SUBDIRS = src test *ncinfo*
    
    $ vim /usr/local/src/nccmp-1.1.0/src/Makefile
    $ make clean
    $ make > make_fixed.log 2>&1
	$ make check > make_check_new.log 2>&1
    > more  make_check_new.log
    PASS: nccmp_test.sh
    =============
    1 test passed
    =============

    $ make install

Okay, back to testing cosp
$ cd /usr/local/src/COSP

1) Setting up the namelists

The input parameters for cosp_test are provided through the namelist COSP_INPUT,
which can be found in the file cosp_input_nl.txt. You can run two tests by changing
the input file:

 FINPUT='cosp_input_um.nc', ! NetCDF file with 1D inputs
 or
 FINPUT='cosp_input_um_2d.nc', ! NetCDF file with 2D inputs

You will also need to modify the CMOR namelist
in ~/cosp/cosp.vN.N/cmor/cosp_cmor_nl.txt. Specifically, you will need to use
   
   TABLE = 'CMIP5_cf3hr' for 'cosp_input_um.nc'
   TABLE = 'COSP_table_2D' for 'cosp_input_um_2d.nc'
   
COSP_table_2D contains the definitions of the variables in a lon/lat grid.

Try 1d inputs 1st
$ vim cosp_input_nl.txt

Uncomment
FINPUT='cosp_input_um.nc', ! NetCDF file with 1D inputs
Comment
!FINPUT='cosp_input_um_2d.nc', ! cosp_input_um_2d.nc NetCDF file with 2D inputs

$ vim cmor/cosp_cmor_nl.txt

Alter line with TABLE= to
  TABLE = 'CMIP5_cf3hr',

$ ./cosp_test
>  Processing file: 
 cosp_input_um.nc                                                               
                                                                                                                                                                              
 Reading year ...
 Reading month ...
 Reading day ...
 Reading hour ...
 Reading minute ...
 Reading second ...
 Reading t ...
 Reading tUM ...
 Reading lst ...
 Reading lon ...
 Reading lat ...
 Reading landmask ...
 Reading orography ...
 Reading psfc ...
 Reading height ...
 Reading height_half ...
 Reading T_abs ...
 Reading qv ...
 Reading rh ...
 Reading pfull ...
 Reading phalf ...
 Reading mr_lsliq ...
 Reading mr_lsice ...
 Reading mr_ccliq ...
 Reading mr_ccice ...
 Reading fl_lsrain ...
 Reading fl_lssnow ...
 Reading fl_lsgrpl ...
 Reading fl_ccrain ...
 Reading fl_ccsnow ...
 Reading tca ...
 Reading cca ...
 Reading Reff ...
 Reading dtau_s ...
 Reading dtau_c ...
 Reading dem_s ...
 Reading dem_c ...
 Reading skt ...
 Reading sunlit ...
 Reading u_wind ...
 Reading v_wind ...
 Reading mr_ozone ...
 Reading emsfc_lw ...
 Allocating memory for gridbox type...
 Populating input structure...
 Defining new vertical grid...
 Allocating memory for other types...
 Calling simulator...
 ---------ix:            1         100
 ---------ix:          101         153
 Writing outputs...
Definition of "kt" in "/usr/local/share/udunits/udunits2-common.xml", line 90, overrides prefixed-unit "1000000 kilogram"
Definition of "microns" in "/usr/local/share/udunits/udunits2-common.xml", line 308, overrides prefixed-unit "1e-15 second"
Definition of "ft" in "/usr/local/share/udunits/udunits2-common.xml", line 405, overrides prefixed-unit "1e-12 kilogram"
Definition of "yd" in "/usr/local/share/udunits/udunits2-common.xml", line 413, overrides prefixed-unit "8.64e-20 second"
Definition of "pt" in "/usr/local/share/udunits/udunits2-common.xml", line 634, overrides prefixed-unit "1e-09 kilogram"
Definition of "at" in "/usr/local/share/udunits/udunits2-common.xml", line 1031, overrides prefixed-unit "1e-15 kilogram"
Definition of "ph" in "/usr/local/share/udunits/udunits2-common.xml", line 1549, overrides prefixed-unit "3.6e-09 second"
Definition of "nt" in "/usr/local/share/udunits/udunits2-common.xml", line 1556, overrides prefixed-unit "1e-06 kilogram"
 ---------------Define dataset
 ---------------Define axis
 ---------------Fill in
 ---------------Find list
 ---------------Define variables

C Traceback:
In function: cmor_variable


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!                                                                     !
! Error: Could not find a matching variable for name: 'cltlidarradar' !
!                                                                     !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Hmmm. Have to ask about this.

Okay try 2d inputs

$ vim cosp_input_nl.txt

Comment
!FINPUT='cosp_input_um.nc', ! NetCDF file with 1D inputs
UnComment
FINPUT='cosp_input_um_2d.nc', ! cosp_input_um_2d.nc NetCDF file with 2D inputs

$ vim cmor/cosp_cmor_nl.txt

Alter line with TABLE= to
  TABLE = 'COSP_table_2D',

$ ./cosp_test
>  Processing file: 
 cosp_input_um_2d.nc                                                            
                                      
 Reading lon ...
 Reading lat ...
 Reading lon_bnds ...
 Reading lat_bnds ...
 Reading height ...
 Reading pfull ...
 Reading phalf ...
 Reading T_abs ...
 Reading qv ...
 Reading rh ...
 Reading tca ...
 Reading cca ...
 Reading mr_lsliq ...
 Reading mr_lsice ...
 Reading mr_ccliq ...
 Reading mr_ccice ...
 Reading fl_lsrain ...
 Reading fl_lssnow ...
 Reading fl_lsgrpl ...
 Reading fl_ccrain ...
 Reading fl_ccsnow ...
 Reading orography ...
 Reading landmask ...
 Reading height_half ...
 Reading psfc ...
 Reading Reff ...
 Reading dtau_s ...
 Reading dtau_c ...
 Reading dem_s ...
 Reading dem_c ...
 Reading skt ...
 Reading sunlit ...
 Reading emsfc_lw ...
 Reading mr_ozone ...
 Reading u_wind ...
 Reading v_wind ...
 Allocating memory for gridbox type...
 Populating input structure...
 Defining new vertical grid...
 Allocating memory for other types...
 Calling simulator...
 ----- WARNING: COSP_CHECK_INPUT_2D: minimum value of snow_ls set to: 
  0.0000000E+00
 ---------ix:            1         100
 ---------ix:          101         153
 Writing outputs...
Definition of "kt" in "/usr/local/share/udunits/udunits2-common.xml", line 90, overrides prefixed-unit "1000000 kilogram"
Definition of "microns" in "/usr/local/share/udunits/udunits2-common.xml", line 308, overrides prefixed-unit "1e-15 second"
Definition of "ft" in "/usr/local/share/udunits/udunits2-common.xml", line 405, overrides prefixed-unit "1e-12 kilogram"
Definition of "yd" in "/usr/local/share/udunits/udunits2-common.xml", line 413, overrides prefixed-unit "8.64e-20 second"
Definition of "pt" in "/usr/local/share/udunits/udunits2-common.xml", line 634, overrides prefixed-unit "1e-09 kilogram"
Definition of "at" in "/usr/local/share/udunits/udunits2-common.xml", line 1031, overrides prefixed-unit "1e-15 kilogram"
Definition of "ph" in "/usr/local/share/udunits/udunits2-common.xml", line 1549, overrides prefixed-unit "3.6e-09 second"
Definition of "nt" in "/usr/local/share/udunits/udunits2-common.xml", line 1556, overrides prefixed-unit "1e-06 kilogram"
------
CMOR is now closed.
------

We encountered no warnings or errors during execution
------
Congratulations!
------
 Deallocating memory...
   1.100100 

Good 2d seemed to work. Now test against provided data.

$ ./cosp_test.sh 2D 1 ./outputs_test.slev ./outputs

Okay says "No such file" because of mis-matches:
    ./outputs_test.slev/albisccp_2D_HadGEM2-ES_amip_r1i1p1_20080102000000-20080102000000.nc
    ./outputs/albisccp_2D_HadGEM2-ES_amip_r1i1p1_20080102000000-20080102000000.nc
but in fact ./outputs files are like this
    ./outputs/albisccp_2D_HadGEM2-ES_amip_r0i0p0_20080102000000-20080102000000.nc
Note the _r1i1p1_ versus _r0i0p0_

Not sure about the nature of that difference (more questions).

For fun I made a copy of the ./output files exchanging _r1i1p1_ for _r0i0p0_

$ ./cosp_test.sh 2D 1 ./outputs_test.slev ./outputs > cosp_test.log 2>&1
$ more cosp_test.log
> ------------------------- Comparing  albisccp_2D_HadGEM2-ES_amip_r1i1p1_20080102000000-20080102000000.nc ...
DIFFER : VARIABLE : albisccp : POSITION : 0 0 13 : VALUES : 0.239806 <> 0.239806
DIFFER : VARIABLE : albisccp : POSITION : 0 1 10 : VALUES : 0.422034 <> 0.422034

and more lots of differences but all of the  0.239806 <> 0.239806 nature which I'm not sure are
significant. 

As advised in README.txt: "Sometimes these differences are caused by small differences in floating-point arithmetics when using different compilers, and are usually negligible. Therefore, if you find differences it is advised to run cosp_test.sh again, now with arg2=2, to see if those differences are significant. cosp_test.sh will show the differences that are greater than the fourth signifcant digit. You can adapt this by changing the variable PRECISION within cosp_test.sh."

Of course that means installing NCO... oh boy, not sure about that bag of hurt...

I'll stop here for now.

# NCO 4.0.3
-------------------------------------------------------------

http://www.unidata.ucar.edu/software/netcdf

Notes:
Mac OS X build hints: Mac OS X users report success building NCO without patches so long as they (1) Install the latest version of bison, (2) Disable shared libraries and (3) Disable extended regular expressions. This is done with ./configure --disable-regex --disable-shared Building NCO with shared libraries on Mac OS X on may be possible. To try, first re-build and re-install the netCDF library using CFLAGS=-fno-common. Apparently netCDF, unlike most codes, does not set this automatically. Then build NCO normally. Mac OS X ships with a broken version of the POSIX cut utility which causes many NCO regression tests to appear to fail. In fact the NCO commands succeed, but the cut output fails. The workaround is not to heed the regression tests, or to install a working cut, e.g., from the GNU coreutils package.

Best Practices: The recommended first steps to build (i.e., compile, for the most part) NCO from source code are to install ANTLR 2.7.x (required for ncap2), GSL (desirable for ncap2), netCDF (absolutely required), OPeNDAP (enables network transparency), and UDUnits (allows dimensional unit transformations) before building NCO.

In my case I have a new version of bison, antler, gsl installed via macports in /opt/local/bin/bison

need to install port installed libdap

$ cd /usr/local/src
$ mv ~/Downloads/nco-4.0.3.tar.gz  .
$ tar -zxvf nco-4.0.3.tar.gz 
$ cd netcdf-4.1.1
$ vim INSTALL
back to top