Codes

You are welcome to look though these codes. Some codes might be downright trivial since they are only examples and demonstrations. Please consider sending me an email if you find something useful.

Fortran SVG (Scalable Vector Graphics) Images

The objective is to create SVG images with Fortran. Two graphics operators and one complex operator are given: lines and circles and rectangles. The primary objective of this module is to show a template for creating further operators. Fortran's output capabilities consistent with XML are limited, so a workaround with writing to string is presented.

Graphical output tremendously helps debugging data structures. Because SVG is by definition scalable, this module is also ideal for CFD grid visualization and publications.

Download Fortran 90 module file at: ForSVG.f90

Update: A much richer module would be Fenia.

Fortran Array Reordering Utility (freo)

Fortran and C order their arrays differently. Fortran is column major; C is row major. There are performance implications to using the wrong order.

What do you do when you inherit a 10k+ line Fortran code written in C order? Regular expressions are not reliable (go look it up if you don't believe me). So, I wrote the freo program in Scheme to flip the indicies of a specified function. Freo transposes Fortran indicies. It correctly converted the entire 12k line code in 54 files without human help in a few seconds.

Download exe file at: freo.exe and .scm code at: freo.scm. The code is not pretty and not optimal, but it does exist and does work. FWIW, code is compiled to exe with Chicken Scheme.

Fortran Intel MKL with a CMake Module

Fortran90 and CMake are critical tools for scientific computing. This code tests Intel's MKL and Fortran with CMake. CMake does not have a native module to find Intel's MKL libraries and include files. The CMake module is FindMKL.cmake. The Fortran files are blastest.f90 and Timing.f90. The Cmake file is CMakeLists.txt. A ReadMe.txt repeated below discusses the test.

Download zipped files at: testIntelMKL.zip.



The objective is to test Intel's MKL with Cmake and Fortran. You will need Intel's ifort compiler and the MKL library. The Cmake module FindMKL.cmake should assist with library path setup for compiling. On a debian machine, the FindMKL.cmake needs to be placed in the /usr/share/cmake-/Modules/ path.

The blastest.f90 tests the mkl library versus native f77 and f90 style vector and matrix operations for both correctness and speed. On my Core 2 Duo machine, the MKL tradeoff for blas 2 (matrix) operations is about n=200 double precision arrays.

I hope this helps you compute faster and smarter. Thanks to Intel and the CMake guys for a nice scientific computing platform! Please send me an email if you have an improvement or comment.

OSU thesis and dissertation for LaTeX and LyX

Latex class and Lyx layout files are given for Oklahoma State University graduate students wisely choosing LaTeX and/or LyX. These class and layout files are slightly modified from the official graduate college files to allow names on the signature page. A small install file and an example dissertation input file(lyx) and pdf output file are also included. Lucky you!

Note to the draft deadline induced panic-stricken graduate student: Contains one (1) preformatted draft copy in the proper osu format. In 10 minutes, you can download LyX, input your information, print it out, and send your draft copy to the graduate college. Your actual data is sadly not included; snide remarks are included.

Conjugate Gradient Minimization and Linear Equation Solver

Fortran Conjugate Gradient: ConjugateGradient.f90 is a simple Fortran module for the iterative solution of r=b-Ax, where A is PSD and symmetric. Compare with Richardson Residual Minimization below.

Fortran Pixmap Image File

Fortran Pixmap Module: PPM.f90 is a simple Fortran module to convert a 2D matrix to an image file. This module supports 3 types of ASCII pixmap files: black and white (pdm), grayscale (pgm), color (ppm).

Richardson Residual Minimization

Fortran Richardson Residual Minimization: RichardsonResMin.f90 is a simple Fortran module for the iterative solution of r=b-Ax.

Fortran Unsigned Integers

Fortran Unsigned Integers: UnsignedIntegers.f90 is a Fortran unsigned integer module.

Fortran Unit Testing and Verification

Fortran Unit Testing and Verification: ForUTV.f90 is a simple Fortran unit testing and verification module. It tracks and reports the number and name of failures. For complex programs, this pure Fortran inline method has some advantages (and disadvantages!) over an external method such as fUnit. Regardless, untested code is by definition broken, so use something.

Morse Code

Morse Code: morse.py is a simple morse code message generator. You supply a string and it outputs the encoded string to the soundcard. Example dit and dah .wav files given in morse.

RK

Runge-Kutta Iterative Implicit Time Integration: Rkiteration.f90 is a simple (non-optimized) module in Fortran to demonstrate an iterative RK2 solver. The difference between iteration convergence and solution convergence is easy to demonstrate with this simple system.

Clock Timing

Fortran Timing module: Timing.f90 provides timing and predicted completion time.

Sparse Matrix

Sparse matrix Fortran module: Sparse.f90 provides a super-simple and non-optimized sparse matrix storage method.

Spline

Fortran code for equally spaced spline: Spline.f90 The documentation is included in the Fortran file as LaTeX.

Plot Generalized Motions and Forces

Python plotting routine for Euler3d's xn.dat files: plotxn.py

Fortran NaN Detection

Trivial Fortran module to simulate IEEE 754 NaN detection (for Intel Fortran): IEEEsimulate.f90 Please check the latest ifort documenation, any update could render this module obsolete.

Paraview

Paraview plugin rough-draft for a netcdf tetrahedra reader: nc3dplugin. This is just a basic reader with no essentials such as timesteps and domain motion. Paraview and Vtk can intimidate a beginner. You should also take a look at C++ FAQ Lite.

CMake

CMake script for a Fortran and C project: CMakeLists.txt I strongly encourage the use of CMake or an equivalent project makefile.

Heading

Matlab script to reconstruct heading from wrapped heading angles: heading.m

Precisions

Trivial Fortran module for precisions: Precisions.f90

Return