This is a brief tutorial on getting CCSM 3.0 to compile on Ubuntu Linux using the Intel Fortran Compiler. This This work was carried out during 2007–2008 at North Park University on a Dell Poweredge with 4 processors, running Ubuntu 7.04.
Before beginning, it is recommmended that you read through the first few sections of the CCSM 3.0 user guide.
Here are the list of files needed:
The following input data:
A compiler:
MPI:
The first thing that needs to be done is to untar the CCSM source code using the following command.
tar -xf ccsm3.0.tar.gz
Do the same with the input data tarballs:
For installing IFC see our tutorial here.
For installing MPICH, simply follow the directions given in the
README. The only change that needs to be made is that the
make
command must be run as root.
That is sudo make ...
.
There are a number of things that must be done before CCSM 3.0 will compile on Linux. (Note: At this point, all the source code and input data should be untarred, and the Intel Fortran Compiler should be installed.)
First, there is an issue in the file batch.linux.generic_linux
.
Inside the root CCSM directory:
cd script/ccsm_utils/Machine/
vim batch.linux.generic_linux
On line 3 change:
mach = anchorage
to
mach = generic_linux
At this point we can now create a new case (read the user guide for more info on this). Go to the scripts directory:
cd scripts/
./create_newcase –case
FULLPATH/ccsm3_0/newcase –mach generic_linux
newcase
should not exist before
running this script.)
A bunch of files are now created in the location you just specificed
(.../ccsm3_0/newcase
in this example). The following needs
to be changed in the file env_mach.generic_linux
in that directory:
cd ../newcase
vim env_mach.generic_linux
setenv EXEROOT
)
add the following lines of code:
setenv LIB_NETCDF /opt/netcdf/lib
setenv INC_NETCDF /opt/netcdf/include
setenv INC_MPI /opt/mpich2/include
setenv SCRATCH /home/sysadmin/Desktop/ccsm3_0/scratch
The paths given here are for my personal installations. Be sure to change those to libraries and include paths of your installations. Note: the scratch directory can be anywhere.
The follow variables need to be changed:
setenv DOUT_S_ROOT /$SCRATCH/$LOGNAME/archive/$CASE
setenv DOUT_LOC_ROOT [FULLPATH]/inputdata
setenv DOUT_LOC_USER [FULLPATH]/inputdata_user
Where FULLPATH
is the complete path to the directory that
contains inpudata
and inputdata_user
(these
are directories untarred from the input data).
The commands for the compilers must be set. To do this, go to your CCSM root directory:
cd /models/utils/esmf/build/linux_pqi/
vim base_variables
Change:
pgcc
to gcc
pgCC
to gcc
pgf90
to ifort
And all instances of –V
to -v
.
Some of the Fortran flags need to be changed in order to work with IFC. From the CCSM root directory:
vim /models/bld/Macros.Linux
Change:
-recursive
to –Mrecursive
-free
to -Mfree
-align dcommons
to -Mdalign
-extend_source 132
to -Mextend
-fltconsistency
to -Kieee
This concludes all the changes that need to be made.
newcase-generic_linux.build
should compile correctly.
CCSM is very complex, there are many things that can go wrong. If CCSM does not compile for you, always check the error logs for hints of whats gone wrong. One common and easy to fix problem is that the include or library directories are incorrect. So be sure that they are all written correctly.
The CCSM forums can be very helpful. Be sure to use the search function before posting.
While I was able to compile CCSM without error, I was unable to run it correctly. It would always hang when the coupler started. I have a feeling it was some issue with MPI, but I am unsure. However, this guide should hopefully get CCSM to compile, which is an important first step.
Author: Jonathan Nehring, with editing by Johnny Lin. Updated: Monday, 12-May-2008 17:05:05 PDT. Valid CSS, HTML. This work is licensed under a Creative Commons Attribution-Noncommercial-ShareAlike 3.0 License.