PLASMAKIN makes extensive use of derived data types. However, only two of them are public and even so they are not intended to be used outside the PLASMAKIN MODULE. The only reason why they are public is that they are used in NAMELIST reading and therefore should be public as required by the Fortran 95 rules.
Hiding of data structures guarantees that any future modification of the data model would have a limited, if any, impact on the calling programs. It also considerably simplifies mixed language programming.
Public data include parameters, scalars and arrays variables, the above derived types and procedure interfaces. Most of these procedure interfaces are overloaded, meaning that different type of variables can be used for the same arguments, and have optional arguments.
With the previous exception, all public variables and arguments in PLASMAKIN procedures have intrinsic Fortran data types. This allows using the library with a code conforming to FORTRAN 77 with little modifications .
Particle or reaction properties are only accessible through access routines. This allows a strict control of which data can be inquired about or modified by the calling program.
The calling program should not modify the value of any of the public variables, as they are extensively used by PLASMAKIN to internal processing. A possibility of modification of any of those variables is a potential source of errors. Again this could be avoided by use of access routines but it would be cumbersome and introduce time penalties, as these variables are frequently used in the calling program. The author has decided to rely on the user experience to avoid this kind of errors.
To use PLASMAKIN one needs of course a Fortran 95 compiler.