/CVmix

This WAS a mirror of https://code.google.com/p/cvmix/ which has now moved to https://github.com/orgs/CVMix. Please use the official github repository:

Primary LanguagenesC

Last update:
$Id$
----------------------------------------------------------------------
Right now, there are only three options for the stand-alone driver which can be
used to test two different mixing methods. The first test is to output Bryan-
Lewis mixing on two columns (a high latitude column and a tropical column),
and output the diffusivity coefficients at each level. This can be run using
pointers (allocate memory in the driver, have CVMix data structures point to
it) or using pure memory copies (allocate memory in the driver AND CVMix).

The third driver sets up a single column using the shear mixing formula found in
the Large, et al. KPP paper. For this test, each level is a different local
gradient Richardson number rather than a different depth to show how viscosity
varies with different choices of Ri.


DIRECTORY STRUCTURE
-------------------

bin/ -- Default location for the cvmix executable.

lib/ -- Default location for libcvmix.a, the library that can be linked in
        to an ocean model.

include/ -- Default location for the .o and .mod files that need to be included
            with libcvmix.a.

doc/ -- Contains documentation. At this point, it only has a PDF of the latest
        protex in-code notes and a script to generate said PDF.

manual/ -- This may be moved into doc/ at some point, it is the scientific
           description of the CVMix package.

bld/ -- Contains auxiliary files needed by the build system. CompileFlags.mak
        has default compile flags for 5 different compilers -- gfortran, 
        pgf90, ifort, xlf90, and nagfor, as well as ftn (the Cray wrapper for
        pgf90). At this time, no other compilers are supported on Cray systems.
        cvmix_setup is a python script that saves information about what
        compiler to use and where netCDF is installed in .CVMix_env.

  bld/obj -- Where .o  and .mod files for the stand-alone drivers are stored.

src/ -- Contains the source code, organized as follows. The top directory
        contains modules needed by the stand-alone driver (output, for example)
        as well as the driver routine itself. Also contains the Makefile used
        to build the cvmix executable.

  src/drivers -- Subroutines called by the driver (one per tests).

  src/shared  -- Where all the modules that are needed to use CVMix with an 
                 outside model are stored. (Use as an svn:external!) Also
                 contains the Makefile used to build the libcvmix.a library.

reg_tests/ -- I envision this becoming a way to do regression tests as we
              develop the code, but for now it just contains two functional
              tests. One outputs the diffusivity coefficients when using
              Bryan-Lewis mixing on two columns (with each column having its
              own B-L parameterization) and the other outputs the viscosity
              coefficients when using the shear mixing scheme in the KPP
              paper. (At this time the tests for double diffusion and tidal
              mixing return all 0s because those modules are not complete.)

              Note that all scripts have a "-h" (or "--help") flag to print
              usage options and a "-nc" (or "--netcdf") flag to turn on netCDF
              output.

              BL Pointer test
              ---------------
              reg_tests/Bryan-Lewis]$ ./BL_test.sh

              BL Mem copy test
              ----------------
              reg_tests/Bryan-Lewis]$ ./BL_test.sh -mc

              Shear mixing test
              -----------------
              reg_Tests/shear-KPP]$ ./Large_test.sh

              Both directories also contain a basic NCL script to produce a
              plot.

              Bryan-Lewis/plot_diff_coeffs.ncl -- makes a plot with depth on
                   the y-axis and diffusivity (for both columns) on the x-axis.
              shear-KPP/plot_visc_coeffs.ncl -- makes a plot with local gradient
                   Richardson number on the x-axis and normalized viscosity
                   coefficient on the y-axis.


INSTALLATION NOTES
------------------

The src directory contains a Makefile and a simple 'make' should be sufficient
to build the standalone driver. The first time you build, the 'cvmix_setup'
utility will run and prompt you for compiler and netcdf information - it will
only run once, and the info is saved in bld/.CVMix_env.

To build with netcdf, run 'make netcdf'.

The default executable is $CVMix/bin/cvmix, but it can be overwritten with
'make EXE=[executable]'.