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!