CROCO is a new oceanic modeling system built upon ROMS_AGRIF and the non-hydrostatic kernel of SNH  gradually including algorithms from MARS3D. CROCO project contains source code and croco_tools pre-and-post-processing matlab toolbox. CROCO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. CROCO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  


CROCO stable release V1.1 (25 October 2019):  Download croco-v1.1
CROCO_TOOLS stable release V1.1 (25 October 2019):  Download croco_tools-v1.1
CROCO_TOOLS uses several Matlab Utilities, and Datasets also available for download.

Known problems and fixes :



25 October 2019 : CROCO V1.1 RELEASE


CROCO sources and CROCO_TOOLS (the follow-on of ROMS_TOOLS) are now distributed separately (for croco_tools releases, see associated tab at ). ROMS_AGRIF is not maintained anymore and we strongly encourage ROMS_AGRIF users to switch to CROCO. CROCO version available directly from the git repository is an unstable development version. Standard users should use the stable one downloaded from the web site.

New in v1.1 :

  • architecture : slight changes

    • CROCO doesn’t come with a default Run directory anymore, first step as a user will be to run the script create_run.bash to create your own
    • as a consequence TEST_CASES files are now stored in croco/TEST_CASES and the scripts for running the model in croco/SCRIPTS
  • parallelisation : in MPI (not OPENMP), CROCO now has the capacity to save computation in MPI partitions set over land. A pre-processing step is required. The corresponding tool is located under croco/MPP_PREP : the namelist has to be filled with the maximum number of CPUs available, then compile and execute the code. It returns the optimal partitioning parameter values for NP_XI, NP_ETA and NNODES.

# define MPI
# define MPI_NOLAND   (default undef)
  • outputs :

    • NetCDF4 parallel capability is available. When running with MPI activated, the outputs are stored in a single file (different from PARALLEL_FILES) but faster than with serial netcdf writing.
    # define MPI
    # define NC4PAR   (default undef)
    # define MPI
    # define XIOS   (default undef)
  • diagnostics : several budget equations added. Each of them has its corresponding section in

    • vorticity :
    # define  DIAGNOSTICS_VRT
    • eddy kinetic energy :
    # define  DIAGNOSTICS_EK
    • potential vorticity
    # define  DIAGNOSTICS_PV
  • grid : the resolution of a mesh can be locally refined to account for a section reduction (example : keep realistic sections for an under-resolved river canal in a realistic configuration)

# define REDUC_SECTION  (default undef)`
  • bottom friction :

    • Spatialisation of roughness length Z0 coefficient
    # define Z0B_VAR   (default undef)
    • Use sub-timesteps for computation of fast bottom friction. In this case, bottom friction is computed in step3d_fast routine
    # default BSTRESS_FAST `
  • functional : Use of calendar to define start and end date : The user can choose the beginning and the end of the simulation in , then the number of time steps will be calculated. Also print the date at each time step in screen log.

# define USE_CALENDAR   (default undef)

adding additional lines in : run_start_date: 01/04/2015 00:00:00 run_end_date: 12/04/2015 00:00:00

  • atmospheric forcing :

    • Use MeteoFrance inputs (Arome/Arpege) for online atmospheric reading and interpolation
    # define AROME        (default undef)
    • Read atmospherical pressure from meteo files, use it in bulk flux and apply atmospherical pressure gradient in the momentum equations
    # define READ_PATM	  (default undef)
    • Current feedback added in bulk and forcing cases. Three possibilities: feedback on the stress (CFB_STRESS, default) using a coefficient based on the wind speed, or based on the wind stress (CFB_STRESS2), or feedback on the wind speed (CFB_WIND, less physical)
    # define SMFLUX_CFB (default undef)
  • ocean/wave coupling : add wave average outputs. Add wave-to-ocean stress accounting for wave model bulk

  • tides : Introduction of a new method for harmonic composition : use of Simon (SHOM) method to build tide elevation from harmonic constituents.

# define TIDES_MAS    (default undef)
  • open boundaries : reduced-form equation for barotropic velocities at boundary conditions in case when tidal currents are not available (#undef UV_TIDES). It’s also useful for test cases, forcing the model with analytical sea surface elevation (for example a M2 tide). In both cases it replaces M2_FRC_BRY (in this case set #undef M2_FRC_BRY to avoid confusion) and it works with M2FLATHER and M2CHARACT obc conditions. This development comes from ROMS-Rutgers source code. This option has been tested in a tidal flat test case for each open boundary condition (north, south, west and east)
# define OBC_REDUCED_PHYSICS (default undef)

OBC_M2FLATHER was suppressed (redondant with OBS_M2CHARACT). Use OBS_M2CHARACT instead.

  • vertical mixing : GLS scheme was rewritten. GLS_MIX2017 cpp key was suppressed and only GLS_MIXING stays.
#define GLS  (KEPSILON model and CANUTO stability function are chosen by default if no other key selected in cppdefs.h)

Dedicated configuration : SINGLE_COLUMN, a 1D vertical model with several subsettings to test.

  • test cases : additions/changes
    • I_SOLITON : was previously within GRAV_ADJ (#define GRAV_ADJ_SOLITON)
    • FLUME : now SANDBAR
    • TS_HADV_TEST : new case to test horizontal advection for tracers


26 June 2018 : CROCO V1.0 RELEASE

CROCO stable release V1.0 (26 June 2018):  Download croco-v1.0

CROCO_TOOLS stable release V1.0 (26 June 2018):  Download croco_tools-v1.0

CROCO sources and CROCO_TOOLS (the follow-on of ROMS_TOOLS) are now distributed separately (for croco_tools releases, see associated tab at ).

CROCO has now a new architecture tree. The OCEAN directory contains the sources.

New in CROCO v1.0 (associated cppkey names and dedicated configuration in cppdefs.h are presented):

  • Non-hydrostatic kernel: a (3D) non-Boussinesq “fast-mode” is available.  
    • #define NBQ
    • Dedicated configurations : #define TANK, ACOUSTIC, GRAV_ADJ (NBQ), KH_INST, S2DV, MILES
    • set CSOUND_NBQ (sound speed) to a minimum of 5 times the max external gravity wave phase speed (sqrt(gh)). Max is real sound speed of 1500 m/s. Lower sound speed allows larger time steps.
    • cppdefs.h: choice of the full scheme (NBQ_PRECISE) or for faster integration a simplified one (NBQ_PERF). In this case, the vertical grid and some non-dominant terms of the fast mode equations are only updated at the internal (slow) step. NBQ_PERF is the default option and is recommended for submesoscale applications (>10m resolution), while NBQ_PRECISE should be used for LES applications (e.g., KH_INST)
    • cppdefs.h: choice of advection scheme for vertical velocity w includes TVD and WENO (see below); default choice is W_HADV_C4 and W_VADV_SPLINES for horizontal and vertical advection respectively (see cppdefs_dev.h for default choices).
    • AGRIF nesting (1-WAY for now) is possible with NBQ and for NBQ integration in child grid only: #define NBQ_CHILD_ONLY
  • Updated Ocean-Wave-Atmosphere coupling using the generic coupler OASIS3-MCT  
    • #define OA_COUPLING and/or #define OW_COUPLING
    • See specific documentation for coupling in the Documentation section of our website ;  ; dedicated Coupling_tools are also available in croco_tools
  • Updated Wave-Current interactions (McWilliams et al., JFM 2004)  
    • #define MRL_WCI
    • Dedicated configuration : SHOREFACE
  • Built-in wave propagation model (WKB) for nearshore applications
    • #define WKB_WAVE
  • Updates in sediments modules based on Warner et al. (2008): bedload transport, hydro-morphodynamics coupling and morphological acceleration factor
    • #define SEDIMENT and associated cppkeys
    • Dedicated configuration :  FLUME, RIP
  • Additional IO module (XIOS) providing more flexibility and better performances for HPC
    • # define XIOS
  • Choice of monotonic horizontal and vertical advection schemes for all variables (WENO5 &  TVD)
  • Semi-implicit vertical advection for avoiding CFL limitation associated with “hot spots” (Shchepetkin, OM 2015)
    • # define  VADV_ADAPT_IMP
  • GLS turbulent closure sub-model (in addition to KPP)  
    • # define GLS_MIXING_2017
  • Wave‐induced (non breaking) vertical mixing in KPP modified according to Wang et al. (JGR 2010) based on Qiao et al (JPO 2004)  
    • # define WAVE_NONBRK_VMIX_QIAO in mrl_wci.F
  • Basic 3D Smagorinsky model for LES-type applications   
    • # define UV_VIS_SMAGO_3D (with NBQ)
  • Built-in diffusion in barotropic time stepping as an alternative to fast mode filtering (used in NBQ applications)  
    • # define M2FILTER_NONE
  • Updated PISCES version (Aumont et Bopp, GBC 2006)  
    • # define PISCES
  • New vertical coordinate (not dependent on minimum depth), by default,  suited for decreasing pressure gradient errors in the thermocline above steep topography (Shchepetkin and McWilliams, 2009)
    • # define NEW_S_COORD
  • Dedicated log output file croco.log
    • # define LOGFILE

ROMS_AGRIF  is not maintained anymore and we strongly encourage ROMS_AGRIF users to switch  to CROCO.

Known problems and fixes : 

29 July 2019

  • In croco_tools/Rivers : Update and Bug fix in River (  Bug fixes in the T/S_src seasonal cycle ;  Bug fix in direction/sense in case of not using all the rivers detected ; New rivers detection criteria, new plots, ..)
  • In croco_tools/Aforc_NCEP : Update url security level https
  • In croco_tools/Oforc_OGCM : Bug fix  to download SODA oceanic data using make_OGCM ; ( use Opendap_tools_noloaddap ;  cancel dimension shifting for 3D variables )

17 June 2019 :

  • In croco/OCEAN, fixes in analytical.F : bug fix and improvements from the development branch. Thanks to P. Marchesiello
    • the treatment of the ramp when using the cpp keys #define PSOURCE_NCFILE and /or #define PSOURCE_NCFILE_TS
    • other stuff …
  • In croco_tools/Rivers ; Thanks to Joaquim Ballabrera and Lionel Renault.
    • Fixes in make_runoff.m :  A bug in the way the runoff forcing file is created  has been identified. It impact the way do the time interpolation of the runoff flow and concentration when using the cpp keys  PSOURCE_NCFILES and/or PSOURCE_NCFILE_TS

Fixes in check_domain_runoff.m  : to manage rotated grid.

05 September 2018 : in croco/OCEAN, fixes in get_psource_ts.F  . Thanks to S. Pous

30 July 2018 : in croco/OCEAN, fixes in read_inp.F : to read wind stress from files in case of #define BULK_FLUX  and #!define BULK_SMFLUX


25 October 2019:  CROCO_TOOLS V1.1 RELEASE

New in v1.1 :

  • Aforc_CFSR : new specific directory dedicated to CFSR atmospheric forcing processing

  • croco_pyvisu : a new powerful visualization gui (as croco_gui) in Python (Thanks to S. Le Gentil, LOPS/Ifremer), portable on every supercomputer.

  • Preprocessing_tools:

  • Insert Easy interactive grid maker (adapted from J. Molemaker (UCLA) package) within make_grid and the croco_tools package (allows grid rotation and parameter adjustment)

  • Add new filter used in smoothgrid.m (adapted by P. Penven from A. Shchepetkin) with option set in crocotools_param.h

  • Rivers : several update to manage variable flows and/or concentration (temperature, salinity, bigeochemical tracers, …) from input netCDF files.


  • start.m: script to set the Matlab paths

  • crocotools_param.m: script that contains the necessary parameters for the generation of the CROCO input NetCDF files

  • Aforc_ECMWF/: Scripts for the recovery of surface forcing data (based on ECMWF reanalysis) for inter-annual simulations

  • Aforc_CFSR/: Scripts for the recovery of surface forcing data (based on CFSR reanalysis) for inter-annual simulations

  • Aforc_NCEP/: Scripts for the recovery of surface forcing data (based on NCEP reanalysis) for inter-annual simulations

  • Aforc_QuikSCAT/ : Scripts for the recovery of wind stress from satellite scatterometer data (QuickSCAT)

  • Coupling_tools/: Scripts for building and running coupled configurations (with atmosphere and/or wave models)

  • croco_pytools/ : Preprocessing Python scripts for preparing the grid, forcing, initialization files

  • croco_pyvisu/ : A new portable visualization gui (as croco_gui) but in Python

  • Diagnostic_tools/ : A few Matlab scripts for animations and basic statistical analysis

  • Forecast_tools/ : Scripts for the generation of an operational oceanic forecast system

  • Nesting_tools/ : Preprocessing tools used to prepare nested models

  • Oforc_OGCM/ : Scripts for the recovery of initial and lateral boundary conditions from global OGCMs (SODA (Carton et al., 2005) or ECCO (Stammer et al., 1999)) for inter-annual simulations

  • Opendap_tools/ : LoadDAP mexcdf and several scripts to automatically download data over the Internet

  • Opendap_tools_no_loaddap/ : same as Opendap_tools but use the built-in support for OPeNDAP from Matlab >= 2012a. You do not need to install libdap and loaddap library. Note that you can also access to local data.

  • Preprocessing_tools/ : Preprocessing Matlab scripts (make_grid.m, make_forcing, etc…)

  • Rivers/ : Scripts to prepare time-varying runoff forcing file and compute the runoff location

  • RUNOFF_DAI/ : runoff global climatology

  • Tides/ : Matlab routines to prepare CROCO tidal simulations. Tidal data are derived from the Oregon State University global models of ocean tides TPXO6 and TPXO7 (Egbert and Erofeeva, 2002):

  • Town/:

  • UTILITIES/: Matlab utilities

  • Visualization_tools/ : Matlab scripts for the CROCO visualization graphic user interface


  • 28 June 2018:  CROCO_TOOLS V1.0 RELEASE

    • – former OASIS directory has been moved to Junk/oasis_old_scripts as new tools are available in Coupling_tools directory
  • March 2018: New tools:

    • – Coupling_tools scripts: scripts to help you build and run a coupled configuration
    • – croco_pytools: Python scripts, some are equivalent of croco Preprocessing_tools
    • – new default s vertical coordinate (vtransform=2, #define NEW_S_COORD) and new values of theta_s, theta_b and hc accordingly
    • – new topographic filter adapted from ucla tools
    • – all matlab utilities moved to new UTILITIES directory


  • 4 Feb. 2016 : In Aforc_NCEP/, if you were using the ROMSTOOLS v3.1.1, there was a bug in the download_CFSR.m routines.
    • We were downloading heat fluxes variable for Upward Long wave, Downward and Upward Short wave. We were using the variables AT THE TOP OF THE ATMOSPHERE that was inducing large biais in SST in all the CFSR simulation. To use the right fluxes at THE SURFACE OF THE OCEAN, the vname values in download_CFSR.m
    • Here are the fixes:

Access the  CROCO project on Inria GITLAB.

The following items are then available on our Git server :

  • the CROCO ocean model
  • the pre- and post- processing tools CROCO_TOOLS

We strongly advise non-developers to stick on the tar file available on the front page of the site


Request an account on the Gitlab

Only if not already registered:

Once login, request an access to the project


Finally get the code

Join the commits mailing list

Developers and advanced users can subscribe to the mailing list to follow the developments.  To subscribe to this mailing-list, simply send an email to . To unsubscribe the mailing list, simply send an email to