The Fortran conventions that the author of the code in this directory
aspired to are as follows:

 - Module names are prefixed by the static library name, in this case
   "radiation" (no need to suffix by "_mod" since this is always
   obvious from the context).

 - Names of derived types are suffixed by "_type".

 - Implicit none everywhere.

 - Logicals are prefixed by "do_", "use_" or "is_", and should have
   clear descriptive names.

 - All variables in SI units by default.

 - Variables not in SI units have the units in the variable name,
   e.g. pressure_hPa.

 - Integers either prefixed by "j" to indicate loop counter, "n" to
   indicate the size of an array dimension, or "i" otherwise.

 - Loop counters should be brief and contain no underscores.

 - No variable names should be only one letter, since then they are
   difficult to search for in an editor.

 - Integers variables beginning with "n" or "i" should either contain
   no underscores (e.g. "naerosoltypes"), or should have an underscore
   immediately after the "n" or "i" (e.g. "n_aerosol_types"). Thus, a
   variable beginning with "n" or "i" containing an underscore but not
   as its second character need not be an integer (would normally then
   be a real or a derived type), in order to enable real variables
   such as "ice_water_content".

 - All variables and procedure names in lower case using descriptive
   names, and if not too long these will be composed of complete words
   separated by underscores.

 - All parameters are in CamelCase, and integer parameters are
   prefixed by "I" or "N".

 - C-style enumerations (using "enum, bind(c)" and "enumerator")
   should be preferred over integer parameters when they refer to a
   specific setting, because "if (solver_sw==ISolverTripleclouds)" is
   clearer than "if (solver_sw==5)".

 - Variable character strings are suffixed by "_name" or "_str", while
   parameter character strings (in CamelCase) are suffixed by "Name"
   or "Str".

 - Global data included in modules must be constant; any variable data
   must be passed to procedures via dummy arguments.

 - Long argument lists avoided by grouping variables thematically into
   derived types.

 - Any variable used in a source file should be defined in a comment
   earlier in the source file (if this is not obvious from the
   variable name) including its units if it has them (even if they are
   SI units).

 - All functions and subroutines to be defined in modules and their
   explicit interfaces to be revealed via the "use" command, which
   should use "only".

 - Data are read in at run-time from NetCDF files rather than being
   embedded in the code (e.g. using data statements).

 - Fortran "statement functions" should not be used.

 - "if" statements should always be followed by "then" with the action
   given on the next line, rather than one-line if statements.

 - "end" should always be followed by a space, i.e. "end do" ,"end if"
   rather than "enddo", "endif"

 - Lots of comments!