Personal tools

Difference between revisions of "*NIX platforms"

From MohidWiki

Jump to: navigation, search
(Building MohidWater)
 
m (1 revision)
(No difference)

Revision as of 15:54, 3 December 2008

Installing

Prerequisites

NOTE: this article was written assuming the fortran compiler is Intel. If this is not the case then change where there is written "ifort" with the fortran compiler in use (ex: pgf90, g90, etc...).

HDF5 libraries

To compile Mohid it is mandatory to have the HDF5 [1] libraries compiled. In HDF5's web page it is possible to obtain both binary distribuitions and the source code. Most of the times it is necessary to build from source which takse the following steps:

  1. download the source code, e. g. hdf5-1.6.5.tar.gz;
  2. > tar -zxvf hdf5-1.6.5.tar.gz
  3. > cd hdf5-1.6.5
  4. > F9X=ifort ./configure --enable-fortran (--prefix=$HDF5ROOTDIR --enable-parallel)
  5. > make
  6. > make check
  7. > make install

Libraries may be found in ./hdf5/lib/ and, typically, in /opt/hdf5/hdf5/lib. Detailed information may be found in file ./release_docs/INSTALL .

Zlib libraries

To use the HDF5 libraries it is mandatory to have installed the zlib libraries. So install the zlib package for your linux distro. Also, keep a record of where the libz.a library is installed (it might come in handy later on).#

Netcdf libraries

The netcdf libraries are optional since they are not required to run MohidWater. However they are useful for other modules of the Mohid Suite such as ConvertToHDF5. You can get them from the official site. Here's the report on how to build them for windows.

Makefiles

Make sure you always have the latest version of the Makefiles from the SourceSafe. Or, get a test version of the makefiles from the hydrogroup page.

Soscmd (optional)

The Source-Off site is a program that allows you to obtain the latest version of the code. This is for advanced users only. If you already have a mohid distro with the source code, then don't bother with this.

To obtain the soscmd client go to this page.

To obtain the latest Mohid version

  1. configure the file > makefiles/nix.sos
    1. Give it the server name usually SERVER=sos.mohid.com
    2. Type in your sourcesafe username and password in USER and in PASS
    3. Type in you home directory where the .iky and .key files are enclosed. That's it for the configuration!
#--------Users: fill these lines with your sourcesafe data-------------
SERVER  := 
USER    := 
PASS    := 
SOSHOME := 
PROJECT := $(basename $(TARGET))
GET     := soscmd -command GetFile \
          -server $(SERVER):8890 \
          -name $(USER) -password $(PASS) \ 
          -database "W:\SourceSafe\Mohid_v4\srcsafe.ini" \
           -project $(PROJECT) \
           -soshome $(SOSHOME) \
           -file
S       := sos
#--------End of sourcesafe data------------- 
  1. type > make nix.sos

Building MohidWater

To compile MohidWater using the makefiles from the main path, first make sure the source file ending is capitalized (F90, not f90). Afterwards, execute the compilation steps:

  1. > for i in `find . | grep .f90 | grep -v 'GOTMvar'`; do mv $i `echo $i | sed -e 's/f90/F90/'`;done
  2. > source /opt/intel/fc/9.0/bin/ifortvars.sh
  3. > make nix

The first line is required because linux is sensitive to capitalization whereas windows wasn't. The second line is required in order to properly configure intel fortran 9.0 to work. It may be unnecessary in future versions of intel fortran.

To clean the distribution, type:

  1. > make nix.clean

Developping makefiles

To develop new makefiles for future or current modules, edit the makefile in the Module Shell from the Mohid SourceSafe. Please bear in mind that it must work under in windows, as well as under linux.

Using SourceOffSite in the makefile

An interesting feature of the makefiles would be that they automatically access the SourceSafe repository. To do so one can use the soscmd command line client. An example can be found on the Sample makefile.

To use it type:

  1. > make nix.sos

TroubleShooting

Q: the makefile keeps giving me errors :(

A:Here's a list of what could be causing these errors:

  1. Open the makefiles and check that fields are properly filled.
  2. Make sure that mod and bin directories exist in the module's folder. Otherwise simply make them with the mkdir command.
  3. Make sure that "ifort" is a valid command. If it isn't then you probably didn't loaded its environment variables. Type "source /opt/intel/fc/9.0/bin/ifortvars.sh" for that.
  4. Make sure that the intel fortran compiler was properly installed.

Q: the makefile complains when compiling ModuleGOTM.f90

A: Probably you have to rename

GOTMVariables_in.f90 ---> GOTMvariables_in.f90
GOTMVariables_out.f90 ---> GOTMvariables_out.f90.

This error shows up in linux because it's case-sensitive whereas windows isn't. Also, make sure that the extension is written in lower case.

Q: By the time i'm linking the final MohidWater binary I get some error about unreferenced functions "compress2" and others in HDF5 files...

A: Probably you need to specify to link against the libz.a library. Identify the exactly the location of libz.a (ex: in my system it can be found at /opt/zlib/lib/libz.a) then add the following line in MohidWater makefile:

LIBS_NIX = \
          $(BASE2LIB) \
          $(BASE1LIB) \
          $(LIB_HDF5_NIX)/libhdf5_fortran.a \
          $(LIB_HDF5_NIX)/libhdf5.a \
          $(LIB_HDF5_NIX)/libhdf5_hl.a \
          $(LIB_NETCDF_NIX)/libnetcdf.a \
          /opt/zlib/lib/libz.a

See also