| 1 | 
dgoldberg | 
1.1 | 
C $Header: /u/gcmpack/MITgcm/model/inc/CG3D.h,v 1.10 2010/03/16 00:04:00 jmc Exp $ | 
| 2 | 
  | 
  | 
C $Name:  $ | 
| 3 | 
  | 
  | 
 | 
| 4 | 
  | 
  | 
#ifdef ALLOW_NONHYDROSTATIC | 
| 5 | 
  | 
  | 
CBOP | 
| 6 | 
  | 
  | 
C     !ROUTINE: CG3D.h | 
| 7 | 
  | 
  | 
C     !INTERFACE: | 
| 8 | 
  | 
  | 
C     include "CG3D.h" | 
| 9 | 
  | 
  | 
C     !DESCRIPTION: \bv | 
| 10 | 
  | 
  | 
C     *==========================================================* | 
| 11 | 
  | 
  | 
C     | CG3D.h | 
| 12 | 
  | 
  | 
C     | o Three-dimensional conjugate gradient solver header. | 
| 13 | 
  | 
  | 
C     *==========================================================* | 
| 14 | 
  | 
  | 
C     | The common blocks set up here are used in the elliptic | 
| 15 | 
  | 
  | 
C     | equation inversion. They are also used as the interface | 
| 16 | 
  | 
  | 
C     | to the rest of the model. To set the source term for the | 
| 17 | 
  | 
  | 
C     | solver set the appropriate array below. To read the | 
| 18 | 
  | 
  | 
C     | solution read from the appropriate array below. | 
| 19 | 
  | 
  | 
C     *==========================================================* | 
| 20 | 
  | 
  | 
C     \ev | 
| 21 | 
  | 
  | 
CEOP | 
| 22 | 
  | 
  | 
 | 
| 23 | 
  | 
  | 
C--   COMMON /CG3D_R/ DEL**2 Laplacian operators | 
| 24 | 
  | 
  | 
C     aW3d :: East-west operator. | 
| 25 | 
  | 
  | 
C     aS3d :: North-south operator. | 
| 26 | 
  | 
  | 
C     aV3d :: Vertical operator. | 
| 27 | 
  | 
  | 
C     aC3d :: 3D operator main diagonal term. | 
| 28 | 
  | 
  | 
C     zMC, zML, zMU :: preconditioner 3D solver | 
| 29 | 
  | 
  | 
C     cg3dNorm - A matrix normalisation factor. | 
| 30 | 
  | 
  | 
 | 
| 31 | 
  | 
  | 
#ifdef ALLOW_PETSC | 
| 32 | 
  | 
  | 
      INTEGER MAX_CG3D_PETSC_CPUINVERT | 
| 33 | 
dgoldberg | 
1.2 | 
      parameter ( MAX_CG3D_PETSC_CPUINVERT = 1 ) | 
| 34 | 
dgoldberg | 
1.1 | 
#endif | 
| 35 | 
  | 
  | 
 | 
| 36 | 
  | 
  | 
      COMMON /CG3D_R/ | 
| 37 | 
  | 
  | 
     &      aW3d, aS3d, aV3d, | 
| 38 | 
  | 
  | 
     &      aC3d, | 
| 39 | 
  | 
  | 
     &      zMC, zML, zMU, | 
| 40 | 
  | 
  | 
     &      cg3dNorm | 
| 41 | 
  | 
  | 
      _RS  aW3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 42 | 
  | 
  | 
      _RS  aS3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 43 | 
  | 
  | 
      _RS  aV3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 44 | 
  | 
  | 
      _RS  aC3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 45 | 
  | 
  | 
      _RS  zMC  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 46 | 
  | 
  | 
      _RS  zML  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 47 | 
  | 
  | 
      _RS  zMU  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 48 | 
  | 
  | 
      _RL  cg3dNorm | 
| 49 | 
  | 
  | 
 | 
| 50 | 
  | 
  | 
C--   COMMON /CG3D_WK_R/  Work array common block | 
| 51 | 
  | 
  | 
C     cg3d_q - Intermediate matrix-vector product term | 
| 52 | 
  | 
  | 
C     cg3d_r -   idem | 
| 53 | 
  | 
  | 
C     cg3d_s -   idem | 
| 54 | 
  | 
  | 
      COMMON /CG3D_WK_R/ | 
| 55 | 
  | 
  | 
     & cg3d_q, cg3d_r, cg3d_s | 
| 56 | 
  | 
  | 
      _RL  cg3d_q(1-1  :sNx+1  ,1-1  :sNy+1  ,Nr,nSx,nSy) | 
| 57 | 
  | 
  | 
      _RL  cg3d_r(1-1  :sNx+1  ,1-1  :sNy+1  ,Nr,nSx,nSy) | 
| 58 | 
  | 
  | 
      _RL  cg3d_s(1-1  :sNx+1  ,1-1  :sNy+1  ,Nr,nSx,nSy) | 
| 59 | 
  | 
  | 
 | 
| 60 | 
  | 
  | 
#ifdef ALLOW_PETSC | 
| 61 | 
  | 
  | 
      COMMON /CG3D_PETSC_DOFS_RS/ | 
| 62 | 
  | 
  | 
     &      cg3d_petsc_dofs, cg3d_petsc_color | 
| 63 | 
  | 
  | 
      _RS cg3d_petsc_dofs | 
| 64 | 
  | 
  | 
     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 65 | 
  | 
  | 
      _RS cg3d_petsc_color | 
| 66 | 
  | 
  | 
     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 67 | 
  | 
  | 
 | 
| 68 | 
  | 
  | 
      COMMON /CG3D_PETSC_DOFS_I/ | 
| 69 | 
  | 
  | 
     &      cg3d_dofs_process, cg3d_color_rank | 
| 70 | 
  | 
  | 
      INTEGER cg3d_dofs_process (0:nPx*nPy*MAX_CG3D_PETSC_CPUINVERT-1) | 
| 71 | 
  | 
  | 
      INTEGER cg3d_color_rank ( MAX_CG3D_PETSC_CPUINVERT ) | 
| 72 | 
  | 
  | 
 | 
| 73 | 
  | 
  | 
#endif | 
| 74 | 
  | 
  | 
 | 
| 75 | 
  | 
  | 
 | 
| 76 | 
  | 
  | 
#endif /* ALLOW_NONHYDROSTATIC */ |