c Copyright (C) Stichting Deltares, 2005-2017. c c This file is part of iMOD. c c This program is free software: you can redistribute it and/or modify c it under the terms of the GNU General Public License as published by c the Free Software Foundation, either version 3 of the License, or c (at your option) any later version. c c This program is distributed in the hope that it will be useful, c but WITHOUT ANY WARRANTY; without even the implied warranty of c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the c GNU General Public License for more details. c c You should have received a copy of the GNU General Public License c along with this program. If not, see . c c Contact: imod.support@deltares.nl c Stichting Deltares c P.O. Box 177 c 2600 MH Delft, The Netherlands. MODULE PKSMODULE integer, save :: insms = 0 #ifdef PKSUNS REAL, SAVE, POINTER, DIMENSION(:) ::CRDUM REAL, SAVE, POINTER, DIMENSION(:) ::CCDUM REAL, SAVE, POINTER, DIMENSION(:) ::CVDUM REAL, SAVE, POINTER, DIMENSION(:) ::HCOFDUM REAL, SAVE, POINTER, DIMENSION(:) ::RHSDUM #endif INTEGER,SAVE,POINTER :: ISOLVER INTEGER,SAVE,POINTER :: INNERIT,NPC,NOPT,NCORESM,NCORESV INTEGER,SAVE,POINTER :: NRPROC !JV INTEGER,SAVE,POINTER :: ICNVGOPT INTEGER,SAVE,POINTER :: IEPFACT INTEGER,SAVE,POINTER :: NITERC,NNZC,NIAC,NIABCGS INTEGER,SAVE,POINTER :: NGMRES, NREST INTEGER,SAVE,POINTER :: NIAPC,NJAPC,NNZAPC INTEGER,SAVE,POINTER :: NIAPCM,NJAPCM INTEGER,SAVE,POINTER :: NIWC,NWC REAL ,SAVE,POINTER :: HCLOSEPKS,RCLOSEPKS INTEGER,SAVE,POINTER :: NDAMPPKS REAL ,SAVE,POINTER :: DAMPPKS,DAMPTPKS,RELAXPKS INTEGER,SAVE,POINTER :: NRESUP DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: HPKS C MILUT INTEGER,SAVE,POINTER :: IFILL INTEGER,SAVE,POINTER :: NLEVELS REAL ,SAVE,POINTER :: DROPTOL C REORDERING INTEGER,SAVE,POINTER :: IORD INTEGER,SAVE,POINTER :: NIARO INTEGER,SAVE,POINTER :: NNZRO INTEGER, SAVE, POINTER, DIMENSION(:) :: LORDER INTEGER, SAVE, POINTER, DIMENSION(:) :: IORDER INTEGER, SAVE, POINTER, DIMENSION(:) :: IARO INTEGER, SAVE, POINTER, DIMENSION(:) :: JARO DOUBLE PRECISION, SAVE, POINTER, DIMENSION(:) :: ARO C CONVERGENCE AND TIMING VARIABLES INTEGER,SAVE,POINTER :: IPKSO,IPKSI REAL ,SAVE,POINTER :: PKST,PKSPCU,PKSPCA INTEGER,SAVE,POINTER :: IPRPKS,MUTPKS,IUNITPKS INTEGER,SAVE,POINTER :: PKSCLEN INTEGER,SAVE,POINTER, DIMENSION(:) :: PKSIT INTEGER,SAVE,POINTER, DIMENSION(:,:) :: PKSHMXLOC REAL ,SAVE,POINTER, DIMENSION(:) :: PKSHMX INTEGER,SAVE,POINTER, DIMENSION(:,:) :: PKSRMXLOC REAL ,SAVE,POINTER, DIMENSION(:) :: PKSRMX REAL ,SAVE,POINTER, DIMENSION(:) :: PKSL2NORM REAL ,SAVE,POINTER, DIMENSION(:) :: PKSRL2NORM C SOLVER ARRAYS INTEGER, SAVE, POINTER, DIMENSION(:,:,:) :: NODEC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: BC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: XC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: AC #ifndef PKSUNS INTEGER, SAVE, POINTER, DIMENSION(:) :: IAC INTEGER, SAVE, POINTER, DIMENSION(:) :: JAC #endif INTEGER, SAVE, POINTER, DIMENSION(:) :: IXMAP C PRECONDITIONER DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: APC INTEGER, SAVE, POINTER, DIMENSION(:) :: IAPC INTEGER, SAVE, POINTER, DIMENSION(:) :: JAPC INTEGER, SAVE, POINTER, DIMENSION(:) :: IAPCM INTEGER, SAVE, POINTER, DIMENSION(:) :: JAPCM C WORKING ARRAYS INTEGER, SAVE, POINTER, DIMENSION(:) :: IWC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: WC C PCG WORKING ARRAYS DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: DC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: ZC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: PC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: QC C BICGSTAB WORKING ARRAYS DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: VC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: DTILC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: PHATC DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: DHATC C GMRES WORKING ARRAYS DOUBLEPRECISION, POINTER, DIMENSION(:) :: CSG DOUBLEPRECISION, POINTER, DIMENSION(:) :: SNG DOUBLEPRECISION, POINTER, DIMENSION(:) :: SG DOUBLEPRECISION, POINTER, DIMENSION(:) :: YG DOUBLEPRECISION, POINTER, DIMENSION(:,:) :: HG DOUBLEPRECISION, POINTER, DIMENSION(:,:) :: VG C DIAGONAL SCALING VECTOR INTEGER,SAVE,POINTER :: ISCL DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: SCL DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: SCLI C POINTERS FOR USE WITH BOTH ORIGINAL AND RCM ORDERINGS DOUBLEPRECISION, SAVE, POINTER, DIMENSION(:) :: A0 INTEGER, SAVE, POINTER, DIMENSION(:) :: IA0 INTEGER, SAVE, POINTER, DIMENSION(:) :: JA0 LOGICAL, SAVE, POINTER :: EXPLINSYS TYPE PKSTYPE #ifdef PKSUNS REAL, POINTER, DIMENSION(:) ::CRDUM REAL, POINTER, DIMENSION(:) ::CCDUM REAL, POINTER, DIMENSION(:) ::CVDUM REAL, POINTER, DIMENSION(:) ::HCOFDUM REAL, POINTER, DIMENSION(:) ::RHSDUM #endif INTEGER,POINTER :: ISOLVER INTEGER,POINTER :: INNERIT,NPC,NOPT,NCORESM,NCORESV INTEGER,POINTER :: NRPROC !JV INTEGER,POINTER :: ICNVGOPT INTEGER,POINTER :: IEPFACT INTEGER,POINTER :: NITERC,NNZC,NIAC,NIABCGS INTEGER,POINTER :: NGMRES, NREST INTEGER,POINTER :: NIAPC,NJAPC,NNZAPC INTEGER,POINTER :: NIAPCM,NJAPCM INTEGER,POINTER :: NIWC,NWC REAL ,POINTER :: HCLOSEPKS,RCLOSEPKS INTEGER,POINTER :: NDAMPPKS REAL ,POINTER :: DAMPPKS,DAMPTPKS,RELAXPKS INTEGER,POINTER :: NRESUP DOUBLE PRECISION, POINTER, DIMENSION(:) :: HPKS C MILUT INTEGER,POINTER :: IFILL INTEGER,POINTER :: NLEVELS REAL ,POINTER :: DROPTOL C REORDERING INTEGER,POINTER :: IORD INTEGER,POINTER :: NIARO INTEGER,POINTER :: NNZRO INTEGER, POINTER, DIMENSION(:) :: LORDER INTEGER, POINTER, DIMENSION(:) :: IORDER INTEGER, POINTER, DIMENSION(:) :: IARO INTEGER, POINTER, DIMENSION(:) :: JARO DOUBLEPRECISION, POINTER, DIMENSION(:) :: ARO C CONVERGENCE AND TIMING VARIABLES INTEGER,POINTER :: IPKSO,IPKSI REAL ,POINTER :: PKST,PKSPCU,PKSPCA INTEGER,POINTER :: IPRPKS,MUTPKS,IUNITPKS INTEGER,POINTER :: PKSCLEN INTEGER,POINTER, DIMENSION(:) :: PKSIT INTEGER,POINTER, DIMENSION(:,:) :: PKSHMXLOC REAL ,POINTER, DIMENSION(:) :: PKSHMX INTEGER,POINTER, DIMENSION(:,:) :: PKSRMXLOC REAL ,POINTER, DIMENSION(:) :: PKSRMX REAL ,POINTER, DIMENSION(:) :: PKSL2NORM REAL ,POINTER, DIMENSION(:) :: PKSRL2NORM C SOLVER ARRAYS INTEGER, POINTER, DIMENSION(:,:,:) :: NODEC DOUBLEPRECISION, POINTER, DIMENSION(:) :: BC DOUBLEPRECISION, POINTER, DIMENSION(:) :: XC DOUBLEPRECISION, POINTER, DIMENSION(:) :: AC C INTEGER, POINTER, DIMENSION(:) :: IAC ! UNCOMMENT FOR STRUCTURED C INTEGER, POINTER, DIMENSION(:) :: JAC ! UNCOMMENT FOR STRUCTURED INTEGER, POINTER, DIMENSION(:) :: IXMAP C PRECONDITIONER DOUBLEPRECISION, POINTER, DIMENSION(:) :: APC INTEGER, POINTER, DIMENSION(:) :: IAPC INTEGER, POINTER, DIMENSION(:) :: JAPC INTEGER, POINTER, DIMENSION(:) :: IAPCM INTEGER, POINTER, DIMENSION(:) :: JAPCM C WORKING ARRAYS INTEGER, POINTER, DIMENSION(:) :: IWC DOUBLEPRECISION, POINTER, DIMENSION(:) :: WC C PCG WORKING ARRAYS DOUBLEPRECISION, POINTER, DIMENSION(:) :: DC DOUBLEPRECISION, POINTER, DIMENSION(:) :: ZC DOUBLEPRECISION, POINTER, DIMENSION(:) :: PC DOUBLEPRECISION, POINTER, DIMENSION(:) :: QC C BICGSTAB WORKING ARRAYS DOUBLEPRECISION, POINTER, DIMENSION(:) :: VC DOUBLEPRECISION, POINTER, DIMENSION(:) :: DTILC DOUBLEPRECISION, POINTER, DIMENSION(:) :: PHATC DOUBLEPRECISION, POINTER, DIMENSION(:) :: DHATC C GMRES WORKING ARRAYS DOUBLEPRECISION, POINTER, DIMENSION(:) :: CSG DOUBLEPRECISION, POINTER, DIMENSION(:) :: SNG DOUBLEPRECISION, POINTER, DIMENSION(:) :: SG DOUBLEPRECISION, POINTER, DIMENSION(:) :: YG DOUBLEPRECISION, POINTER, DIMENSION(:,:) :: HG DOUBLEPRECISION, POINTER, DIMENSION(:,:) :: VG C DIAGONAL SCALING VECTOR INTEGER,POINTER :: ISCL DOUBLEPRECISION, POINTER, DIMENSION(:) :: SCL DOUBLEPRECISION, POINTER, DIMENSION(:) :: SCLI C POINTERS FOR USE WITH BOTH ORIGINAL, RCM, AND MINIMUM DEGREE ORDERINGS DOUBLEPRECISION, POINTER, DIMENSION(:) :: A0 INTEGER, POINTER, DIMENSION(:) :: IA0 INTEGER, POINTER, DIMENSION(:) :: JA0 LOGICAL, POINTER :: EXPLINSYS END TYPE PKSTYPE TYPE(PKSTYPE), SAVE ::PKSDAT(10) END MODULE PKSMODULE