# -*- mode: cmake -*-

# Standard utilities
add_subdirectory(error_handling)
add_subdirectory(utils)

# Functions
add_subdirectory(functions)

# Geometry
add_subdirectory(geometry)

# Grid-option agnostic chemistry and interfaces
if (ENABLE_Physics)
  add_subdirectory(common/chemistry)

  if (ENABLE_ALQUIMIA)
    # Use Alquimia as a chemistry engine.
    add_definitions(-DALQUIMIA_ENABLED)
    add_subdirectory(common/alquimia)
  endif()
endif()

add_subdirectory(common/interface_platform)

if (ENABLE_Unstructured)

  # Mesh
  add_subdirectory(mesh)

  # Debug helpers
  add_subdirectory(debug)

  # Discretization
  add_subdirectory(whetstone)

  # Data structures
  add_subdirectory(data_structures)

  # Mesh functions
  add_subdirectory(mesh_functions)

  # Output
  add_subdirectory(output)

  # Solvers
  add_subdirectory(solvers)

  # Operators
  add_subdirectory(operators)

  # Time integration
  add_subdirectory(time_integration)

  # Build State
  add_subdirectory(state)

endif()

if (ENABLE_Unstructured AND ENABLE_Physics)  
  add_subdirectory(pks)

  # Multiprocess coordinator
  add_subdirectory(mpc)

  # unstructured grid simualtion driver, and Amanzi binaries
  add_subdirectory(executables)
endif()

# structured grid
if (ENABLE_Structured AND ENABLE_Physics)
  add_subdirectory(structured_grid)
endif()

# standalone driver (produces mesh-independent executable)
if (ENABLE_Physics)
  add_subdirectory(common/standalone_simulation_coordinator)
endif()
