Preprocessor flags are activated in the form -Doption in the cice.buildexe.csh script. Only advanced users should change these options. See the CESM User's Guide or the CICE reference guide for more information on these. The flags specific to the ice model are:
CPPDEFS := $(CPPDEFS) -DCESMCOUPLED -Dcoupled -Dncdf -DNCAT=5 -DNXGLOB=$() -DNYGLOB=$() -DNTR_AERO=3 -DBLCKX=$() -DBLCKY=$() -DMXBLCKS=$()
The options -DCESMCOUPLED and -Dcoupled are set to activate the coupling interface. This will include the source code in ice_comp_mct.F90, for example. In coupled runs, the CESM coupler multiplies the fluxes by the ice area, so they are divided by the ice area in CICE to get the correct fluxes.
The options -DBLCKX=$(CICE_BLCKX) and -DBLCKY=$(CICE_BLCKY) set the block sizes used in each grid direction. These values are set automatically in the scripts for the coupled model. Note that BLCKX and BLCKY must divide evenly into the grid, and are used only for MPI grid decomposition. If BLCX or BLCKY do not divide evenly into the grid, which determines the number of blocks in each direction, the model setup will exit from the setup script and print an error message to the ice.bldlog* (build log) file.
The flag -DMXBLCKS is essentially the threading option. This controls the number of "blocks" per processor. This can describe the number of OpenMP threads on an MPI task, or can simply be that a single MPI task handles a number of blocks.
The flat -DNTR_AERO=n flag turns on the aerosol deposition physics in the sea ice where n is the number of tracer species and 0 turns off the tracers. More details on this are in the section on tracers.
The flag -D_MPI sets up the message passing interface. This must be set for runs using a parallel environment. To get a better idea of what code is included or excluded at compile time, grep for ifdef and ifndef in the source code or look at the *.f90 files in the /obj directory.