We present an easy to use and flexible grid library for developing highly scalable parallel simulations. The distributed cartesian cell-refinable grid (dccrg) supports adaptive mesh refinement and allows an arbitrary C++ class to be used as cell data. The amount of data in grid cells can vary both in space and time allowing dccrg to be used in very different types of simulations, for example in fluid and particle codes. Dccrg transfers the data between neighboring cells on different processes transparently and asynchronously allowing one to overlap computation and communication. This enables excellent scalability at least up to 32 k cores in magnetohydrodynamic tests depending on the problem and hardware. In the version of dccrg presented here part of the mesh metadata is replicated between MPI processes reducing the scalability of adaptive mesh refinement (AMR) to between 200 and 600 processes. Dccrg is free software that anyone can use, study and modify and is available at https://gitorious.org/dccrg. Users are also kindly requested to cite this work when publishing results obtained with dccrg. Program summaryProgram title: DCCRGCatalogue identifier: AEOM_v1_0Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AEOM_v1_0.htmlProgram obtainable from: CPC Program Library, Queenâs University, Belfast, N. IrelandLicensing provisions: GNU Lesser General Public License version 3No. of lines in distributed program, including test data, etc.: 54975No. of bytes in distributed program, including test data, etc.: 974015Distribution format: tar.gzProgramming language: C++.Computer: PC, cluster, supercomputer.Operating system: POSIX.The code has been parallelized using MPI and tested with 1â32768 processesRAM: 10 MBâ10 GB per processClassification: 4.12, 4.14, 6.5, 19.3, 19.10, 20.External routines: MPI-2 [1], boost [2], Zoltan [3], sfc++ [4]Nature of problem:Grid library supporting arbitrary data in grid cells, parallel adaptive mesh refinement, transparent remote neighbor data updates and load balancing.Solution method:The simulation grid is represented by an adjacency list (graph) with vertices stored into a hash table and edges into contiguous arrays. Message Passing Interface standard is used for parallelization. Cell data is given as a template parameter when instantiating the grid.Restrictions:Logically cartesian grid.Running time:Running time depends on the hardware, problem and the solution method. Small problems can be solved in under a minute and very large problems can take weeks. The examples and tests provided with the package take less than about one minute using default options.In the version of dccrg presented here the speed of adaptive mesh refinement is at most of the order of 106 total created cells per second.