The testing constraints require HOMME executables to be separated into two classes: "test executables" and "development executables". Test executables are those whose compile time macros are not modifiable and correspond to values required by regression tests. Development executables, on the other hand, are fully configurable; these should be used for development or other purposes not related to running the regression tests.

There is one development executable for each algorithm: preqx, sweqx, swdgx, primdgx, prim, swim, fvm, and spelt. However, only preqx, sweqx, swdgx, and primdgx are enabled by default, the others can be enabled by using the options in the table below.

The development executables are independently configurable and have different default compile time macro variables associated with them (NP,PLEV,etc.). When HOMME is configured a summary of the compile time variables is output for each development executable. By default, preqx has the following compile time variables set.

-- Building preqx with:
--   NP = 8
--   NC = 4
--   PLEV = 20
--   PIO = FALSE
--   ENERGY = FALSE

To change the compile time macro variables you need to configure (run the cmake command) with options specific to that executable. As an example, to configure preqx with NP=5, PLEV=23, NC=4, you can use the following options.

-DPREQX_NP=5 \
-DPREQX_PLEV=23 \
-DPREQX_NC=5 \

When configure is run the summary for preqx looks like the following.

-- Building preqx with:
--   NP = 5
--   NC = 5
--   PLEV = 23
--   PIO = TRUE
--   ENERGY = TRUE

Similarly you can replace PREQX, with the name of the development executable that you would like to configure ie. "-DSWEQX_NP" for sweqx. 

The output of the configure will gives a summary of the development executables to be built and the compile time options. Use the options in the following table to enable or disable a particular executable.

Configure Option, Type, Default, Effect
-DBUILD_HOMME_PREQX, Bool, TRUE, Build the primitive equations FEM executable
-DBUILD_HOMME_SWEQX, Bool, TRUE, Build the shallow water FEM executable
-DBUILD_HOMME_PRIMDGQX, Bool, TRUE, Build the primitive equations DG executable
-DBUILD_HOMME_SWDGX, Bool, TRUE, Build the shallow water DG executable
-DBUILD_HOMME_SWIM, Bool, FALSE, Build the implicit shallow water FEM executable
-DBUILD_HOMME_PRIM, Bool, FALSE, Build the implicit primitive equations FEM executable
-DBUILD_HOMME_FVM, Bool, FALSE, Build the standalone FVM tracer executable
-DBUILD_HOMME_SPELT, Bool, FALSE, Build the standalone SPELT tracer executable
-DBUILD_PREQX_FVM, Bool, FALSE, Build the primitive equations executable with FVM tracers
-DBUILD_PREQX_SPELT, Bool, FALSE, Build the primitive equations executable with SPELT tracers
-DSWEQX_ONLY, Bool, FALSE, Only build the shallow water FEM executable
-DPREQX_ONLY, Bool, FALSE, Only build the primitive equations FEM executable
-DSWDGX_ONLY, Bool, FALSE, Only build the shallow water DG executable
-DPRIMDGX_ONLY, Bool, FALSE, Only build the shallow water DG executable
-DSWEQX_ONLY, Bool, FALSE, Only build the shallow water FEM executable
-DPRIM_ONLY, Bool, FALSE,Only build the implicit primitive equations FEM executable
-DSWIM_ONLY, Bool, FALSE, Only build the implicit shallow water FEM executable
-DCG_ONLY, Bool, FALSE, Only build the FEM executables
-DDG_ONLY, Bool, FALSE, Only build the DG executables
-D3D_CG_ONLY, Bool, FALSE, Only build the 3d DG executables