Developer's Guide

Here we will document some of the actual code details in Enzo, and how to perform basic (and not so basic) tasks in Enzo. Before tackling any modification, please read the Enzo primary refernces, a basic knowledge of AMR and numerical methods is assumed throughout this documentation.

Modifying Enzo

Table of Contents

  1. Introduction to Enzo Modification
  2. Programming Guide
    1. Remember that other programmers will read your code
    2. Funciton/File Names
    3. Comments
    4. float is double
    5. Header Files
    6. Accessing BaryonField
    7. Accessing the Hierarchy
    8. enum
  3. lcatest Tutorial
    1. Get lcatest
    2. Configure lcatest
      1. lcatest Configuration File
    3. lcatest Job Templates
      1. interactive.template
      2. batch.template
    4. ~/.lcatestrc
    5. Building lcatest
    6. Run lcatest
  4. Merging Branches
    1. Phase I: Branching the Trunk
      1. Create a New Branch
      2. Check Out the Branch
      3. Time Passes
    2. Phase II: Testing
    3. Phase III: Merging Back
      1. Check Out the Trunk
      2. Merge From the Branch
      3. Check Updated Files
      4. Build and Test
      5. Commit
    4. Phase IV: Delete Branch
  5. Branching and Merging: The Short Version
  6. Diffing Copies
    1. Set Up: Add and remove a file
    2. Revision vs. Working Directory
    3. Diffing Between Copies
    4. Copy vs. Working Directory
    5. Copy vs. Copy
  7. More Diff
    1. Local vs Repository
    2. Brief Diffing
    3. Lazy?
  8. Enzo Flow Chart, Source Browser
    1. Flow Chart Errors
      1. Return CPU Time
  9. Float is double (controlling variable precision in Enzo)
    1. Floating-point precision
    2. Integer precision
    3. precision macros and printf/scanf
    4. The Fortran-C++ interface
    5. If you need more details…
  10. Adding a new parameter to Enzo
  11. Accessing Data in BaryonField
  12. Adding new refinement criteria
    1. Writing your code to flag cells
    2. Call your method
  13. Adding a new Test Problem.
    1. Overview
    2. Setup and Installation
    3. MyProblemInitialize
      1. Function Signature
      2. Necessary Headers
      3. Necessary Assignments
      4. Reading from the Parameter File
      5. Calling the Grid Initializer: Unigrid
    4. MyProblemInitializeGrid
      1. Necessary Actions
      2. Particles
    5. Initializing AMR problems
    6. Using ParallelRootGridIO
  14. How to add a new baryon field
  15. Adding a new Local Operator.

Enzo Internals