|
DOUG 0.2
|
The idea of a component is to abstract operations and define an interface, so that the code can be used without knowing which implementation is underneath - polymorphism.
This allows for code reuse and is a part of Object Oriented Programming (OOP) principles. The Fortran 95 support for OOP is very poor, which caused to create artificial polymorhpism. See for example A Simplified Method for Implementing Run-Time Polymorphism in Fortran95 by Viktor K. Decyk and Charles D. Norton.
There are currently several components that define different parts of DOUG:
Every component has one or several implementations - modules, listed below. These implementations may just delegate interface subroutines to actual implementations.
The two primary modules are Distribution_mod and Distribution_base_mod.
The primary module is Partitioning_mod, others are:
The primary modules are Preconditioner_mod and Preconditioner_base_mod
Fine preconditioner uses coarse partitions as subdomains. Fine preconditioner modules are:
Coarse preconditioner uses fine partitions as coarse space basis function support.
1.7.3-20110217