Collection of codes

Last modified by aipentti@helsinki_fi on 2024/01/09 08:29

Collection of codes

This is a list of various computer codes that I have developed. They are written either with Fortran 95 programming language, or for Mathematica software. All of the codes are free to use or distribute, but please mention source*Collection of codes if publishing something using these codes.

Code tree

Download the whole code tree, or separate branches. The tree and branches include GNU Makefile tools for automatic compiling. Codes should compile with gfortran compiler which is used by default in the makefiles, but other choices can be done by editing the makefile.

Whole tree

  • Utilities
    • AP_library
      Collection of my utility modules. Includes tools for input parsing, error handling, Fortran 95 hashtable and quicksort implementations and other math-related utilities. Individual modules in the collection are listed next. All the individual files will produce a Fortran module file, and the object files are collected to a library in AP_library.
      • ErrorCapsule
        Module for unified error messaging. Fortran 95 lacks proper error handling and this module tries to overcome that problem.
      • AP_quicksort
        Implements recursive in-place quicksort and list partition algorithms in Fortran 95. Implementation works with integer and real arrays, as well as with integer and real tables.
      • AP_utils
        Collected general-use math and related algorithms, e.g. random number generation, list interpolation and some 3-d vector operations.
      • Hashtable
        Provides versatile hashtable to store various datatypes in Fortran 95. Can store, modify and read values from key/value pairs, where key is a string, and value can have different datatypes.
      • InputParser
        Provides input parser in Fortran 95. Can be used to set default values for input parameters, automatically process command line or input file parameters, and get their values.
    • PaulV_utility
      Collection of utility modules, written by Paul van Delst. These are redistributed here because they are used in many of my modules, original source is here.
  • Programs
    • MeshConvert or zip with makefile
      Command line tool for converting different polygon mesh and voxel file formats. Currently, possible input formats are OBJ (Wavefront), MRT (Macke Ray Tracing format), and possible output formats are POV (POV-Ray), ADD (Adda voxel format), OBJ (Wavefront), and NFO (general information about the structure).
    • Scattering at interface (Mathematica package, example notebook and implementation note, or all in one zip)
      This Mathematica package implements Snell's law and Fresnel coefficients for both non-absorbing media and homogeneous plane wave and for absorbing media and inhomogeneous plane wave in the case of planar interface between two semi-infinite media.
    • Cubic spline (Mathematica package, example notebook, or all in one zip). Mathematica package that implements natural, periodic and clamped cubic splines.

Documentation tree

Doctree gives further information on the packages, including module/variable/type/interface/function/subroutine names and descriptions.


References

If you use these codes, please make reference to:
A. Penttilä, Collection of codes, http://wiki.helsinki.fi/display/~aipentti@helsinki.fi/Collection+of+codes (2012).
or
A. Penttilä, [Fortran 95/Mathematica] implementation of [code name] (computer code), http://wiki.helsinki.fi/display/~aipentti@helsinki.fi/Collection+of+codes (2012).