Robodocing Functions: Always put a robodoc function header just before the function it documents. Use the letter 'f' for the robodoc type for every function, whether it is a c function, a fortran function, or a fortran subroutine. The name of the header (on the first line of the comment) is composed of the name of the FLASH module in which the function resides and the name of the function. The header name indicates the place where the function logically falls in the FLASH component (module) structure-- the name here is not the filename in which the function is written although it might look similar since the module name corresponds to the directory path, and functions in FLASH are often implemented in fortran files with the same name as the function. The FLASH module path should start at the FLASH directory root, for example, the io/amr module name would be written source/io/amr, because we robodoc things contained in the setups directory. Function Header Sections: Put the header sections in the following order: NAME (mandatory) SYNOPSIS (mandatory) DESCRIPTION (mandatory) ARGUMENTS (mandatory) PARAMETERS (optional if no runtime parameters) RESULT (optional) EXAMPLE (optional) SIDE EFFECTS (optional) NOTES (optional) SEE ALSO (optional) This is similar to man page section order. The NAME section contains the name of the function optionally followed by a hyphen and a one line description. The SYNOPSIS section indicates how the function is called including the order and type of arguments and ".h" files that it needs. The DESCRIPTION section should go into detail about how the function works and how it is used. This lets the user know what to expect from the operation of the function. It could include a description of side effects or those could be broken off in their own sections. Describe the algorithm used. The ARGUMENTS section contains the list of arguments to the function with a short description for each. For subroutines, indicate the intent. The PARAMETERS section indicates which FLASH runtime parameters are used by the function. Do not use this for the function arguments. The RESULTS section should be for functions that return something, like a fortran subroutine that modifies an argument or a fortran function. Below is an example of a robodoc header for the Grid_fillGCLevel routine in source/Grid top level FLASH unit. !!****f* source/Grid/Grid_fillGCLevel !! !! NAME !! Grid_fillGCLevel !! !! SYNOPSIS !! #include Grid.h !! !! Grid_fillGCLevel(integer, intent(in) level, !! logical, intent(in) validDataFinestOnly, !! integer, intent(in) variable, !! real, intent(in) simTime) !! !! DESCRIPTION !! !! Fills guard cells for blocks on a level. !! !! ARGUMENTS !! !! level - fill GC for blocks on level !! validDataFinestOnly - if true, fill GC using data from !! finest level neighbors only. !! if false, fill GC using data !! from neighbors on the same level, !! even if they are covered by finer blocks. !! variable - fill GC for only this variable, !! if WILDCARD, fill CC for all variables. !! simTime - for time dependant problems, that might !! have time dependant boundary conditions !! !!***