*IF DEF,C93_1A,OR,DEF,C93_2A                                               GNF0F402.6      
C ******************************COPYRIGHT******************************    GTS2F400.1819   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.1820   
C                                                                          GTS2F400.1821   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.1822   
C restrictions as set forth in the contract.                               GTS2F400.1823   
C                                                                          GTS2F400.1824   
C                Meteorological Office                                     GTS2F400.1825   
C                London Road                                               GTS2F400.1826   
C                BRACKNELL                                                 GTS2F400.1827   
C                Berkshire UK                                              GTS2F400.1828   
C                RG12 2SZ                                                  GTS2F400.1829   
C                                                                          GTS2F400.1830   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.1831   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.1832   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.1833   
C Modelling at the above address.                                          GTS2F400.1834   
C ******************************COPYRIGHT******************************    GTS2F400.1835   
C                                                                          GTS2F400.1836   
CLL  SUBROUTINE DEL SQUARED FFT P -------------------------------------    DEL2P1A.3      
CLL                                                                        DEL2P1A.4      
CLL  PURPOSE: Solves DEL SQUARED Q = RHS on surface of sphere.             DEL2P1A.5      
CLL           Uses Fast Fourier Fransforms to decompose right-hand-        DEL2P1A.6      
CLL           side in x-direction and then solves in y-direction           DEL2P1A.7      
CLL           for the fourier coefficients of the solution.                DEL2P1A.8      
CLL                                                                        DEL2P1A.9      
CLL  N.B.  1. This version is for a problem where the solution Q and       DEL2P1A.10     
CLL           the right-hand-side RHS are held at pressure points.         DEL2P1A.11     
CLL        2. A solution to this equation exists uniquely, upto            DEL2P1A.12     
CLL           an arbitrary constant if and only if the sum of the          DEL2P1A.13     
CLL           right-hand-side values over the sphere is equal to zero.     DEL2P1A.14     
CLL           This is known as the Compatability Condition.                DEL2P1A.15     
CLL           This routine assumes that this condition is satisfied.       DEL2P1A.16     
CLL           This routine chooses the arbitrary constant as follows;      DEL2P1A.17     
CLL           If A(y) is the coefficient of wave number 0 then the         DEL2P1A.18     
CLL           constant is chosen by setting the mean of A to zero.         DEL2P1A.19     
CLL                                                                        DEL2P1A.20     
CLL  NOT SUITABLE FOR SINGLE CLOUMN USE.                                   DEL2P1A.21     
CLL  VERSION FOR CRAY Y-MP                                                 DEL2P1A.22     
CLL                                                                        DEL2P1A.23     
CLL M.Mawson    <- programmer of some or all of previous code or changes   DEL2P1A.24     
CLL                                                                        DEL2P1A.25     
CLL  Model            Modification history from model version 3.0:         DEL2P1A.26     
CLL version  Date                                                          DEL2P1A.27     
CLL  3.1  6/1/92   FPP directives to fix bug   (R.S.Bell)                  SB210293.1      
CLL   3.1     24/02/93  Tidy code to remove QA Fortran messages.           MM240293.29     
CLL vn4.2  07/11/96:Allow this routine to be used in C93_2A (Farnon)       GNF0F402.5      
CLL                                                                        DEL2P1A.28     
CLL  PROGRAMMING STANDARD: UNIFIED MODEL DOCUMENTATION PAPER NO. 4         DEL2P1A.29     
CLL                        STANDARD B.                                     DEL2P1A.30     
CLL                                                                        DEL2P1A.31     
CLL  SYSTEM COMPONENTS COVERED:                                            DEL2P1A.32     
CLL                                                                        DEL2P1A.33     
CLL  SYSTEM TASK:                                                          DEL2P1A.34     
CLL                                                                        DEL2P1A.35     
CLL  DOCUMENTATION: U.M.D.P. No 14 by M.H. Mawson                          DEL2P1A.36     
CLL                                                                        DEL2P1A.37     
CLLEND-------------------------------------------------------------        DEL2P1A.38     
                                                                           DEL2P1A.39     
C                                                                          DEL2P1A.40     
C*L  ARGUMENTS:---------------------------------------------------         DEL2P1A.41     

      SUBROUTINE DEL_SQUARED_FFT_P                                         ,2DEL2P1A.42     
     1                            (Q,RHS,SEC_P_LATITUDE,COS_U_LATITUDE,    DEL2P1A.43     
     2                             TRIGS,IFAX,LATITUDE_STEP_INVERSE,       DEL2P1A.44     
     3                             EARTH_RADIUS_INVERSE,P_FIELD,           DEL2P1A.45     
     4                             ROW_LENGTH)                             DEL2P1A.46     
                                                                           DEL2P1A.47     
      IMPLICIT NONE                                                        DEL2P1A.48     
                                                                           DEL2P1A.49     
      INTEGER                                                              DEL2P1A.50     
     &  P_FIELD            !IN Horizontal dimension of pressure field      DEL2P1A.51     
     &, ROW_LENGTH         !IN Number of points on a row.                  DEL2P1A.52     
     &, IFAX(10)           !IN Holds factors of row_length used in FFT's   DEL2P1A.53     
                                                                           DEL2P1A.54     
      REAL                                                                 DEL2P1A.55     
     & RHS(P_FIELD)            !IN Holds right-hand-side.                  DEL2P1A.56     
     &,SEC_P_LATITUDE(P_FIELD) !IN  1./cos(lat) at pressure points         DEL2P1A.57     
     &,COS_U_LATITUDE(P_FIELD-ROW_LENGTH) !IN cos(lat) at velocity point   DEL2P1A.58     
     &,LATITUDE_STEP_INVERSE   !IN. 1/(delta phi)                          DEL2P1A.59     
     &,EARTH_RADIUS_INVERSE    !IN  1./(radius of earth).                  DEL2P1A.60     
                                                                           DEL2P1A.61     
      REAL                                                                 DEL2P1A.62     
     & TRIGS(ROW_LENGTH)   !IN Holds trigonometric terms used in FFT's     DEL2P1A.63     
                                                                           DEL2P1A.64     
      REAL                                                                 DEL2P1A.65     
     & Q(P_FIELD)          !OUT Holds solution.                            DEL2P1A.66     
                                                                           DEL2P1A.67     
C*---------------------------------------------------------------------    DEL2P1A.68     
                                                                           DEL2P1A.69     
C*L  DEFINE ARRAYS AND VARIABLES USED IN THIS ROUTINE-----------------     DEL2P1A.70     
C   DEFINE LOCAL ARRAYS: 5 ARE REQUIRED                                    DEL2P1A.71     
                                                                           DEL2P1A.72     
      REAL                                                                 DEL2P1A.73     
     &  RHS_DATA(ROW_LENGTH+2,P_FIELD/ROW_LENGTH) ! Fourier modes of       DEL2P1A.74     
     &, Q_DATA(ROW_LENGTH+2,P_FIELD/ROW_LENGTH)   ! Q and RHS.             DEL2P1A.75     
     &, A_DIAG(P_FIELD/ROW_LENGTH,ROW_LENGTH+2)   ! Matrix diagonal        DEL2P1A.76     
     &, A_SUB_DIAG(P_FIELD/ROW_LENGTH,ROW_LENGTH+2) ! Sub diagonal         DEL2P1A.77     
     &, A_SUP_DIAG(P_FIELD/ROW_LENGTH,ROW_LENGTH+2) ! Super diagonal       DEL2P1A.78     
                                                                           DEL2P1A.79     
C*---------------------------------------------------------------------    DEL2P1A.80     
C   DEFINE LOCAL VARIABLES                                                 DEL2P1A.81     
                                                                           DEL2P1A.82     
C   COUNT VARIABLES FOR DO LOOPS ETC.                                      DEL2P1A.83     
      INTEGER                                                              DEL2P1A.84     
     &  I,J,K,IK                                                           DEL2P1A.85     
     &, ROWS                ! Number of rows in field.                     DEL2P1A.86     
     &, LOT                 ! Number of data vectors passed to FFT's.      DEL2P1A.87     
     &, JUMP                ! Number of storage locations between the      DEL2P1A.88     
     &                      ! start of consecutive data vectors.           DEL2P1A.89     
     &, INCREMENT           ! Number of storage locations between each     DEL2P1A.90     
     &                      ! element of the same data vector, 1, if       DEL2P1A.91     
     &                      ! consecutive.                                 DEL2P1A.92     
     &, FFT_ISIGN            ! Parameter determining whether spectral      MM240293.30     
     &                       ! to grid-point (1) or grid-point to          MM240293.31     
     &                       ! spectral (-1) FFT's are required.           MM240293.32     
                                                                           DEL2P1A.97     
      REAL                                                                 DEL2P1A.98     
     & SCALAR               ! Generic real work variable.                  DEL2P1A.99     
     &,FACTOR               ! Holds factor in matrix gaussian              DEL2P1A.100    
     &                      ! elimination.                                 DEL2P1A.101    
     &,WAVE_NUMBER          ! Holds wave number for which fourier          DEL2P1A.102    
     &                      ! coefficients are being calculated.           DEL2P1A.103    
                                                                           DEL2P1A.104    
C*L  EXTERNAL SUBROUTINE CALLS:------------------------------------        DEL2P1A.105    
      EXTERNAL FOURIER                                                     DEL2P1A.106    
C*---------------------------------------------------------------------    DEL2P1A.107    
                                                                           DEL2P1A.108    
CL  MAXIMUM VECTOR LENGTH ASSUMED IS ROW_LENGTH+2                          DEL2P1A.109    
CL---------------------------------------------------------------------    DEL2P1A.110    
CL    INTERNAL STRUCTURE.                                                  DEL2P1A.111    
CL---------------------------------------------------------------------    DEL2P1A.112    
CL                                                                         DEL2P1A.113    
                                                                           DEL2P1A.114    
CL---------------------------------------------------------------------    DEL2P1A.115    
CL    SECTION 1.     Put all RHS data in bigger array before calling       DEL2P1A.116    
CL                   fourier decomposition. Two extra addresses per row    DEL2P1A.117    
CL                   required.                                             DEL2P1A.118    
CL---------------------------------------------------------------------    DEL2P1A.119    
                                                                           DEL2P1A.120    
      ROWS = P_FIELD/ROW_LENGTH                                            DEL2P1A.121    
                                                                           DEL2P1A.122    
CFPP$ NODEPCHK                                                             DEL2P1A.123    
! Fujitsu vectorization directive                                          GRB0F405.595    
!OCL NOVREC                                                                GRB0F405.596    
      DO 100 J=1,ROWS                                                      DEL2P1A.124    
        IK = (J-1)*ROW_LENGTH                                              DEL2P1A.125    
        DO 110 I=1,ROW_LENGTH                                              DEL2P1A.126    
          RHS_DATA(I,J) = RHS(IK+I)                                        DEL2P1A.127    
 110    CONTINUE                                                           DEL2P1A.128    
 100  CONTINUE                                                             DEL2P1A.129    
                                                                           DEL2P1A.130    
CL---------------------------------------------------------------------    DEL2P1A.131    
CL    SECTION 2.     Call FOURIER to get fourier decomposition of data.    DEL2P1A.132    
CL---------------------------------------------------------------------    DEL2P1A.133    
                                                                           DEL2P1A.134    
      INCREMENT = 1                                                        DEL2P1A.135    
      JUMP = ROW_LENGTH+2                                                  DEL2P1A.136    
      FFT_ISIGN = -1                                                       MM240293.33     
      LOT = ROWS                                                           DEL2P1A.138    
      CALL FOURIER(RHS_DATA,TRIGS,IFAX,INCREMENT,JUMP,ROW_LENGTH,          DEL2P1A.139    
     &             LOT,FFT_ISIGN)                                          MM240293.34     
                                                                           DEL2P1A.141    
CL---------------------------------------------------------------------    DEL2P1A.142    
CL    SECTION 3.     Solve equation.                                       DEL2P1A.143    
CL---------------------------------------------------------------------    DEL2P1A.144    
                                                                           DEL2P1A.145    
C ---------------------------------------------------------------------    DEL2P1A.146    
CL    SECTION 3.1 Solve for real constant term.                            DEL2P1A.147    
C ---------------------------------------------------------------------    DEL2P1A.148    
                                                                           DEL2P1A.149    
CL i) Set up tri-diagonal matrix left-hand-side.                           DEL2P1A.150    
                                                                           DEL2P1A.151    
      SCALAR = EARTH_RADIUS_INVERSE*EARTH_RADIUS_INVERSE*                  DEL2P1A.152    
     &         LATITUDE_STEP_INVERSE*LATITUDE_STEP_INVERSE                 DEL2P1A.153    
      J=1                                                                  DEL2P1A.154    
      WAVE_NUMBER = 0.                                                     DEL2P1A.155    
      A_SUB_DIAG(1,J) = 0.                                                 DEL2P1A.156    
      A_SUP_DIAG(ROWS,J) = 0.                                              DEL2P1A.157    
                                                                           DEL2P1A.158    
C set up A matrix.                                                         DEL2P1A.159    
C Northern boundary condition.                                             DEL2P1A.160    
      I=1                                                                  DEL2P1A.161    
      K = (I-1)*ROW_LENGTH+1                                               DEL2P1A.162    
      A_DIAG(I,J) = -2.*SEC_P_LATITUDE(K)*SCALAR*                          DEL2P1A.163    
     &                     COS_U_LATITUDE(K)                               DEL2P1A.164    
      A_SUP_DIAG(I,J) = 2.*SEC_P_LATITUDE(K)*SCALAR*                       DEL2P1A.165    
     &                        COS_U_LATITUDE(K)                            DEL2P1A.166    
                                                                           DEL2P1A.167    
C Inner points.                                                            DEL2P1A.168    
      DO 310 I=2,ROWS-1                                                    DEL2P1A.169    
        K = (I-1)*ROW_LENGTH+1                                             DEL2P1A.170    
        A_DIAG(I,J) = -SEC_P_LATITUDE(K)*SCALAR*                           DEL2P1A.171    
     &                  (COS_U_LATITUDE(K)+COS_U_LATITUDE(K-ROW_LENGTH))   DEL2P1A.172    
        A_SUP_DIAG(I,J) = SEC_P_LATITUDE(K)*SCALAR*                        DEL2P1A.173    
     &                      COS_U_LATITUDE(K)                              DEL2P1A.174    
        A_SUB_DIAG(I,J) = SEC_P_LATITUDE(K)*SCALAR*                        DEL2P1A.175    
     &                      COS_U_LATITUDE(K-ROW_LENGTH)                   DEL2P1A.176    
 310  CONTINUE                                                             DEL2P1A.177    
                                                                           DEL2P1A.178    
C Southern boundary condition.                                             DEL2P1A.179    
      I=ROWS                                                               DEL2P1A.180    
      K = (I-1)*ROW_LENGTH+1                                               DEL2P1A.181    
      A_DIAG(I,J) = -2.*SEC_P_LATITUDE(K)*SCALAR*                          DEL2P1A.182    
     &                   COS_U_LATITUDE(K-ROW_LENGTH)                      DEL2P1A.183    
      A_SUB_DIAG(I,J) = 2.*SEC_P_LATITUDE(K)*SCALAR*                       DEL2P1A.184    
     &                      COS_U_LATITUDE(K-ROW_LENGTH)                   DEL2P1A.185    
                                                                           DEL2P1A.186    
CL ii) Solve matrix system.                                                DEL2P1A.187    
                                                                           DEL2P1A.188    
      A_DIAG(1,J) = 1./A_DIAG(1,J)                                         DEL2P1A.189    
      DO 312 I=2,ROWS                                                      DEL2P1A.190    
        FACTOR = A_SUB_DIAG(I,J) * A_DIAG(I-1,J)                           DEL2P1A.191    
        A_DIAG(I,J) = 1./(A_DIAG(I,J) - FACTOR*A_SUP_DIAG(I-1,J))          DEL2P1A.192    
        RHS_DATA(J,I) = RHS_DATA(J,I) - FACTOR*RHS_DATA(J,I-1)             DEL2P1A.193    
 312  CONTINUE                                                             DEL2P1A.194    
                                                                           DEL2P1A.195    
C Back substitute to get solution.                                         DEL2P1A.196    
                                                                           DEL2P1A.197    
      Q_DATA(J,ROWS) = A_DIAG(ROWS,J)*RHS_DATA(J,ROWS)                     DEL2P1A.198    
      DO 314 I= ROWS-1,1,-1                                                DEL2P1A.199    
        Q_DATA(J,I) = A_DIAG(I,J)*(RHS_DATA(J,I)-                          DEL2P1A.200    
     &                             A_SUP_DIAG(I,J)*Q_DATA(J,I+1))          DEL2P1A.201    
 314  CONTINUE                                                             DEL2P1A.202    
                                                                           DEL2P1A.203    
C Set constant imaginery mode to zero.                                     DEL2P1A.204    
C Remove arbitrary constant from real constant mode.                       DEL2P1A.205    
C Remove mean value as guess to arbitrary constant.                        DEL2P1A.206    
                                                                           DEL2P1A.207    
      DO I=1,ROWS                                                          DEL2P1A.208    
        Q_DATA(2,I) = 0.                                                   DEL2P1A.209    
      END DO                                                               DEL2P1A.210    
      SCALAR = 0.                                                          DEL2P1A.211    
      DO I=1,ROWS                                                          DEL2P1A.212    
        SCALAR = SCALAR + Q_DATA(1,I)                                      DEL2P1A.213    
      END DO                                                               DEL2P1A.214    
      SCALAR = SCALAR / ROWS                                               DEL2P1A.215    
CFPP$ NOINNER                                                              SB210293.2      
      DO I=1,ROWS                                                          DEL2P1A.216    
        Q_DATA(1,I) = Q_DATA(1,I) - SCALAR                                 DEL2P1A.217    
      END DO                                                               DEL2P1A.218    
                                                                           DEL2P1A.219    
C ---------------------------------------------------------------------    DEL2P1A.220    
CL    SECTION 3.2 Solve for wave-number > 0 modes.                         DEL2P1A.221    
CL                Solution at poles is zero and this is thus the           DEL2P1A.222    
CL                boundary condition for the solver.                       DEL2P1A.223    
C ---------------------------------------------------------------------    DEL2P1A.224    
                                                                           DEL2P1A.225    
CL Set solution at poles = 0 for wave numbers > 0                          DEL2P1A.226    
                                                                           DEL2P1A.227    
CFPP$ NOINNER                                                              SB210293.3      
      DO I=3,ROW_LENGTH+2                                                  DEL2P1A.228    
        Q_DATA(I,1)    = 0.                                                DEL2P1A.229    
        Q_DATA(I,ROWS) = 0.                                                DEL2P1A.230    
      END DO                                                               DEL2P1A.231    
                                                                           DEL2P1A.232    
CL i) Set up tri-diagonal matrix system left-hand-side.                    DEL2P1A.233    
C     Real coefficients only.                                              DEL2P1A.234    
                                                                           DEL2P1A.235    
      SCALAR = EARTH_RADIUS_INVERSE*EARTH_RADIUS_INVERSE*                  DEL2P1A.236    
     &         LATITUDE_STEP_INVERSE*LATITUDE_STEP_INVERSE                 DEL2P1A.237    
      DO J=3,ROW_LENGTH+2,2                                                DEL2P1A.238    
        WAVE_NUMBER = (J+1)/2-1                                            DEL2P1A.239    
        A_SUB_DIAG(2,J) = 0.                                               DEL2P1A.240    
        A_SUP_DIAG(ROWS-1,J) = 0.                                          DEL2P1A.241    
                                                                           DEL2P1A.242    
C Set up A matrix.                                                         DEL2P1A.243    
C Northern boundary condition.                                             DEL2P1A.244    
        I=2                                                                DEL2P1A.245    
        K = (I-1)*ROW_LENGTH+1                                             DEL2P1A.246    
                                                                           DEL2P1A.247    
        A_SUP_DIAG(I,J) = SEC_P_LATITUDE(K)*SCALAR*COS_U_LATITUDE(K)       DEL2P1A.248    
        A_DIAG(I,J) = -SEC_P_LATITUDE(K)*SCALAR*                           DEL2P1A.249    
     &                  (COS_U_LATITUDE(K)+COS_U_LATITUDE(K-ROW_LENGTH))   DEL2P1A.250    
     &                  - WAVE_NUMBER*WAVE_NUMBER*EARTH_RADIUS_INVERSE     DEL2P1A.251    
     &                    *EARTH_RADIUS_INVERSE*SEC_P_LATITUDE(K)          DEL2P1A.252    
     &                    *SEC_P_LATITUDE(K)                               DEL2P1A.253    
                                                                           DEL2P1A.254    
C Inner points.                                                            DEL2P1A.255    
        DO 320 I=3,ROWS-2                                                  DEL2P1A.256    
          K = (I-1)*ROW_LENGTH+1                                           DEL2P1A.257    
          A_SUP_DIAG(I,J) = SEC_P_LATITUDE(K)*SCALAR*                      DEL2P1A.258    
     &                        COS_U_LATITUDE(K)                            DEL2P1A.259    
          A_SUB_DIAG(I,J) = SEC_P_LATITUDE(K)*SCALAR*                      DEL2P1A.260    
     &                        COS_U_LATITUDE(K-ROW_LENGTH)                 DEL2P1A.261    
          A_DIAG(I,J) = -SEC_P_LATITUDE(K)*SCALAR*                         DEL2P1A.262    
     &                  (COS_U_LATITUDE(K)+COS_U_LATITUDE(K-ROW_LENGTH))   DEL2P1A.263    
     &                  - WAVE_NUMBER*WAVE_NUMBER*EARTH_RADIUS_INVERSE     DEL2P1A.264    
     &                    *EARTH_RADIUS_INVERSE*SEC_P_LATITUDE(K)          DEL2P1A.265    
     &                    *SEC_P_LATITUDE(K)                               DEL2P1A.266    
 320    CONTINUE                                                           DEL2P1A.267    
                                                                           DEL2P1A.268    
C Southern boundary condition.                                             DEL2P1A.269    
        I=ROWS-1                                                           DEL2P1A.270    
        K = (I-1)*ROW_LENGTH+1                                             DEL2P1A.271    
        A_SUB_DIAG(I,J) = SEC_P_LATITUDE(K)*SCALAR*                        DEL2P1A.272    
     &                        COS_U_LATITUDE(K-ROW_LENGTH)                 DEL2P1A.273    
        A_DIAG(I,J) = -SEC_P_LATITUDE(K)*SCALAR*                           DEL2P1A.274    
     &                  (COS_U_LATITUDE(K)+COS_U_LATITUDE(K-ROW_LENGTH))   DEL2P1A.275    
     &                  - WAVE_NUMBER*WAVE_NUMBER*EARTH_RADIUS_INVERSE     DEL2P1A.276    
     &                    *EARTH_RADIUS_INVERSE*SEC_P_LATITUDE(K)          DEL2P1A.277    
     &                    *SEC_P_LATITUDE(K)                               DEL2P1A.278    
      END DO                                                               DEL2P1A.279    
                                                                           DEL2P1A.280    
C Matrix for imaginery coefficients is copy of real one for same wave      DEL2P1A.281    
C number.                                                                  DEL2P1A.282    
      DO 322 J=4,ROW_LENGTH+2,2                                            DEL2P1A.283    
        DO I=2,ROWS-1                                                      DEL2P1A.284    
          A_DIAG(I,J) = A_DIAG(I,J-1)                                      DEL2P1A.285    
          A_SUB_DIAG(I,J) = A_SUB_DIAG(I,J-1)                              DEL2P1A.286    
          A_SUP_DIAG(I,J) = A_SUP_DIAG(I,J-1)                              DEL2P1A.287    
        END DO                                                             DEL2P1A.288    
 322  CONTINUE                                                             DEL2P1A.289    
                                                                           DEL2P1A.290    
CL ii) Solve matrix system for all right-hand-sides.                       DEL2P1A.291    
                                                                           DEL2P1A.292    
CFPP$ NOINNER                                                              SB210293.4      
      DO 324 J=3,ROW_LENGTH+2                                              DEL2P1A.293    
        A_DIAG(2,J) = 1./A_DIAG(2,J)                                       DEL2P1A.294    
 324  CONTINUE                                                             DEL2P1A.295    
      DO 326 I=3,ROWS-1                                                    DEL2P1A.296    
        DO J=3,ROW_LENGTH+2                                                DEL2P1A.297    
          FACTOR = A_SUB_DIAG(I,J) * A_DIAG(I-1,J)                         DEL2P1A.298    
          A_DIAG(I,J) = 1./(A_DIAG(I,J) - FACTOR*A_SUP_DIAG(I-1,J))        DEL2P1A.299    
          RHS_DATA(J,I) = RHS_DATA(J,I) - FACTOR*RHS_DATA(J,I-1)           DEL2P1A.300    
        END DO                                                             DEL2P1A.301    
 326  CONTINUE                                                             DEL2P1A.302    
                                                                           DEL2P1A.303    
C Back substitute to get solution.                                         DEL2P1A.304    
                                                                           DEL2P1A.305    
      DO 328 J=3,ROW_LENGTH+2                                              DEL2P1A.306    
        Q_DATA(J,ROWS-1) = A_DIAG(ROWS-1,J)*RHS_DATA(J,ROWS-1)             DEL2P1A.307    
 328  CONTINUE                                                             DEL2P1A.308    
      DO 329 I= ROWS-2,2,-1                                                DEL2P1A.309    
        DO J=3,ROW_LENGTH+2                                                DEL2P1A.310    
          Q_DATA(J,I) = A_DIAG(I,J)*(RHS_DATA(J,I)-                        DEL2P1A.311    
     &                              A_SUP_DIAG(I,J)*Q_DATA(J,I+1))         DEL2P1A.312    
        END DO                                                             DEL2P1A.313    
 329  CONTINUE                                                             DEL2P1A.314    
                                                                           DEL2P1A.315    
CL---------------------------------------------------------------------    DEL2P1A.316    
CL    SECTION 4.     Call FOURIER to create grid-point fields from         DEL2P1A.317    
CL                   fourier solution modes.                               DEL2P1A.318    
CL---------------------------------------------------------------------    DEL2P1A.319    
                                                                           DEL2P1A.320    
      INCREMENT = 1                                                        DEL2P1A.321    
      JUMP = ROW_LENGTH+2                                                  DEL2P1A.322    
      FFT_ISIGN = 1                                                        MM240293.35     
      CALL FOURIER(Q_DATA,TRIGS,IFAX,INCREMENT,JUMP,ROW_LENGTH,            DEL2P1A.324    
     &             LOT,FFT_ISIGN)                                          MM240293.36     
                                                                           DEL2P1A.326    
CL---------------------------------------------------------------------    DEL2P1A.327    
CL    SECTION 5.     Copy solution into output array.                      DEL2P1A.328    
CL---------------------------------------------------------------------    DEL2P1A.329    
                                                                           DEL2P1A.330    
      DO 500 J=1,ROWS                                                      DEL2P1A.331    
        IK = (J-1)*ROW_LENGTH                                              DEL2P1A.332    
        DO 510 I=1,ROW_LENGTH                                              DEL2P1A.333    
            Q(IK+I) = Q_DATA(I,J)                                          DEL2P1A.334    
 510    CONTINUE                                                           DEL2P1A.335    
 500  CONTINUE                                                             DEL2P1A.336    
                                                                           DEL2P1A.337    
CL END OF ROUTINE DEL_SQUARED_FFT_P                                        DEL2P1A.338    
                                                                           DEL2P1A.339    
      RETURN                                                               DEL2P1A.340    
      END                                                                  DEL2P1A.341    
*ENDIF                                                                     DEL2P1A.342