DOUG 0.2

Distribution_base.F90

Go to the documentation of this file.
00001 ! DOUG - Domain decomposition On Unstructured Grids
00002 ! Copyright (C) 1998-2006 Faculty of Computer Science, University of Tartu and
00003 ! Department of Mathematics, University of Bath
00004 !
00005 ! This library is free software; you can redistribute it and/or
00006 ! modify it under the terms of the GNU Lesser General Public
00007 ! License as published by the Free Software Foundation; either
00008 ! version 2.1 of the License, or (at your option) any later version.
00009 !
00010 ! This library is distributed in the hope that it will be useful,
00011 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 ! Lesser General Public License for more details.
00014 !
00015 ! You should have received a copy of the GNU Lesser General Public
00016 ! License along with this library; if not, write to the Free Software
00017 ! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00018 ! or contact the authors (University of Tartu, Faculty of Computer Science, Chair
00019 ! of Distributed Systems, Liivi 2, 50409 Tartu, Estonia, http://dougdevel.org,
00020 ! mailto:info(at)dougdevel.org)
00021 
00023 module Distribution_base_mod
00024   use Mesh_class
00025   use SpMtx_class
00026   use SpMtx_operation
00027 
00028   implicit none
00029 
00030 #include<doug_config.h>
00031 
00033   type Distribution
00034     type(Mesh) :: mesh !< Information about mesh and neighbours
00035     type(SpMtx) :: A !< Distributed system matrix
00036     type(SpMtx) :: A_ghost !< Matrix elements needed for ghost values
00037     real(kind=rk),pointer :: rhs(:) !< Distributed RHS
00038 
00040     type(OperationCache) :: cache
00041   end type Distribution
00042 
00043   private
00044   public :: Distribution, Distribution_New
00045 
00046 contains
00047 
00048   function Distribution_New() result (D)
00049     type(Distribution) :: D
00050     D%mesh = Mesh_New()
00051     D%A = SpMtx_New()
00052     D%A_ghost = SpMtx_New()
00053     D%rhs => NULL()
00054 
00055     D%cache%D_PMVM_AUXARRS_INITED = .false.
00056   end function Distribution_New  
00057 
00058 end module Distribution_base_mod