easifemClasses
The easifemClasses (henceforth, the Classes) library, forms the second level of EASIFEM library.
This library contains many useful high-level objects, which are important for implementing FEM.
The main programming paradigm of Classes library is object-oriented programming.
Use associationβ
USE easifemClasses
Key featuresβ
Structureβ
- TODO add key-features to
easifemClasses
Similar to the Base library, the Classes library has two directories in the src directory:
- modules
submodules
The modules directory mainly contains following items:
- Type definition including methods
- Header and interface of methods
The πsubmodules directory contains the implementation of the methods that are defined in the modules directory.
- In addition, each class has its own subdirectory in the
modulesandsubmodulesdirectory. - For example, the directory of
Domain_class isDomain, the directory ofMesh_class isMesh. - In this way,
modules/Domainwill define theDomain_class and interface of methods, whereassubmodules/Domainwill include the submodules that implementes the methods defined inside modules. - The name of the module which defines
Domain_class isDomain_Classs, and it is included in the file calledDomain_Class.F90. - The submodule, which defines methods (for example, constructor methods) will be included in
Domain_Class@ConstructorMethods.F90,Domain_Class@IOMethods, etc.
info
If you want to implement a class called XXX_, then perform following task:
- Make a subdirectory
XXXinsrc/modulesandsrc/submodules - In both
XXXmake a subdirectoryXXX/src - Create a file
modules/XXX/src/XXX_Class.F90and define a module calledXXX_Class: - Create submodules in
submodule/XXX/src/XXX_Class@CategoryofMethods.F90and implement the methods.
MODULE XXX_Class
!! Use modules
PRIVATE
!! Define class here
END MODULE XXX_Class
Modulesβ
easifemClasses currently contains following modules:
| Module | Comment | Category |
|---|---|---|
| Gmsh_Class | Interface to Gmsh library | Mesh |
| CommandLine_Method | Fortran library for making comand line applications. | CLI |
| ExceptionHandling_Class | Fortran library for error handling | Utility |
| FPL_Method | Fortran parameter list | FEM |
| Files | Collection of modules related to File IO. | IO |
| ElementFactory | Finite element factory | FEM |
| IntList_Class | Linked list of integers | Container |
| RealList_Class | Linked list of reals | Container |
| StringList_Class | Linked list of strings | Container |
| ElementList_Class | Linked list of finite elements | FEM |
| ElementPointerVector_Class | Dynamic vector of element pointers | FEM |
| Mesh_Class | Finite element mesh class | FEM |
| MeshPointerVector_Class | Dynamic vector of mesh pointers | FEM |
| Domain_Class | Domain class | FEM |
| DomainUtility | A module for additional methods on Domain. | FEM |
| DomainConnectivity_Class | Domain connectivity class | FEM |
| MeshSelection_Class | A class for selecting the region of domain. | FEM |
| MSHFile_Class | Class for Gmsh`s msh file | FEM |
| AbstractVector_Class | Abstract class for vectors. | FEM |
| Vector_Class | Concrete class for vectors. | FEM |
| Field | Collection of modules which defines classes for finite element fields. | FEM |
| FieldFactory | Factory for fields | FEM |
| AbstractLinSolver_Class | Abstract class for linear solver | FEM |
| LinSolver_Class | Native linear solver class. | FEM |
| LinSolver_Factory | Factory for linear solvers. | FEM |
| AbstractBC_Class | Abstract class for boundary conditions | FEM |
| DirichletBC_Class | Class for Dirichlet boundary conditions. | FEM |
| NeumannBC_Class | Class for Neumann boundary conditions. | FEM |
| NitscheBC_Class | Class for Nitsche boundary conditions. | FEM |
| PolynomialFactory | Factory of polynomials | FEM |
| UserFunction_Class | User function class | FEM |
| RefElementFactory | Factory of reference elements | FEM |
| FiniteElementFactory | Factory of finite elements. | FEM |
| Tree3R_Class | Tree data structure for 3 term recurrence relation. | Math |
| Plot_Method | Collection of methods for plotting. | FEM |