*COMMENT
 THE FIRST BIG SET STATEMENT WAS ADDED FOR ILLUSTRATION PURPOSES WHEN
 THIS TEMPLATE IS USED AS A TEST FILE FOR THE TEMPLATE PROCESSOR.
*ENDCOM
*SET
     L1TWOD='.TRUE.'
     PDERHS='0.0'
     L1CRST='.FALSE.'
     L1MIXD='.FALSE.'
     I0MODN='1'
     XROT  = '1$$/2'
     YROT  = '3$$/4'
     AX    = '0.0$$/1.0'
     AY    = '0.0$$/1.0'
     I1BCST= '1$$/1$$/1$$/1'
     I1BCTY= '1$$/1$$/1$$/1'
     I1CF2D= 1
     I1CF3D= 0
     R1BRHS= 'TRUE(X,Y)'
     R0CBC = '1.0$$/0.0$$/0.0'
     R0SOLV=
      R1QD2I(X, Y, R1TABL, IDERIV)
*
*ENDSET
*OPTION(LSUB=.FALSE.)
*SET(UXX='1')
*SET(UXY='2')
*SET(UYY='3')
*SET(UX='4')
*SET(UY='5')
*SET(U='6')
*SET(UZZ='7')
*SET(UXZ='8')
*SET(UYZ='9')
*SET(UZ='10')
*SET(CUXX='0.0')
*SET(CUXY='0.0')
*SET(CUYY='0.0')
*SET(CUX='0.0')
*SET(CUY='0.0')
*SET(CU='0.0')
*SET(CUZZ='0.0')
*SET(CUXZ='0.0')
*SET(CUYZ='0.0')
*SET(CUZ='0.0')
*SET(NX='-1')
*SET(NY='-1')
*SET(NZ='1')
*SET(PLOTS='.FALSE.')
*SET(LABEL='20000')
*SET(NEEDR1TABL='.FALSE.')
*SET(HAVEDIS='.FALSE.')
*SET(HAVEGRX='.FALSE.')
*SET(HAVEGRY='.FALSE.')
*SET(HAVEGRZ='.FALSE.')
*SET(SPLINES='.FALSE.')
*SET(QUADRATICS='.TRUE.')
*SET(NGRMXX='1')
*SET(NGRMXY='1')
*SET(NGRMXZ='1')
*SET(L1POLY='.TRUE.')
*SET(L1PRDX='.TRUE.')
*SET(L1PRDY='.TRUE.')
*SET(L1PRDZ='.TRUE.')
*SET(L1PRDC='.TRUE.')
*SET(L1RECT='.TRUE.')
*SET(L1HOLE='.FALSE.')
*SET(L1DRCH='.TRUE.')
*SET(L1NEUM='.TRUE.')
*SET(L1CSTB='.FALSE.')
*SET(GLOBAL)
      COMMON  / C1RVGL /  R1EPSG, R1EPSM, PI
*ENDSET
*SET(MDECLARE)
C
*ENDSET
*SET(DECLARE)
*INCLUDE(MDECLARE)
*ENDSET
*SET(SRCALLS)
C
*ENDSET
*SET(GRIDEND)
      L1UNFG = L1UNFX .AND. L1UNFY .AND. L1UNFZ
*IF (L1RECT)
*ELSE
C
*RESET(R1BRNG)
*DO (I=1,I1NBND)
      R1BRNG(1,$I) = $LIST(R1BRNG)
      R1BRNG(2,$I) = $LIST(R1BRNG)
*ENDDO
*ENDIF
*ENDSET
*SET(BEGINMODULE)
C
C============   $MODNAME
C
*IF (L1TIME)
      CALL Q1TIME (R0TBEG)
*ENDIF
*ENDSET
*SET(AFTERTR)
      I0MODN = $I0MODN
      L0HVAN = .TRUE.
      L1NEWD = .TRUE.
*ENDSET
*SET(AFTERDI)
      I0DISM = $I0DISM
      L0HVDI = .TRUE.
      L1UINI = .FALSE.
      CALL Q0ASIS
*ENDSET
*SET(BEFOREIN)
      IF (.NOT. L0HVDI)  CALL Q0ERPP(1)
      L1ASIS = .FALSE.
      L1RDBL = .FALSE.
*ENDSET
*SET(BEFORESO)
      IF (.NOT. L0HVDI)  CALL Q0ERPP(2)
*ENDSET
*SET(AFTERSO)
      I0MODN = I0DISM
      L0HVAN = .TRUE.
      L1NEWD = .TRUE.
      CALL Q0UNDX
*ENDSET
*SET(BEGINSOLUT)
C
C============   $MODNAME
C
*ENDSET
*SET(ENDSETUP)
*IF (L1TIME)
      CALL Q1TIME(R0TEND)
      R0TIME = R0TEND - R0TBEG
*SET(L ='$LABEL')
      WRITE(I0TIME,$L) R0TIME
$L FORMAT(4X,F14.2,5X,'$MODNAME SETUP')
      CALL Q1TIME (R0TBEG)
*ENDIF
      IF (L1FATL)  CALL Q1FATL
*ENDSET
*SET(ENDMODULE)
*IF(L1TIME)
      CALL Q1TIME (R0TEND)
      R0TIME = R0TEND - R0TBEG
*SET(L='$LABEL')
      WRITE(I0TIME,$L) R0TIME
$L FORMAT(4X,F14.2,5X,'$MODNAME')
*ENDIF
      IF (L1FATL)  CALL Q1FATL
*ENDSET
*SET(INTERPOLATE)
*IF(L1RECT)
*ELSE
      IF (L1NEWD)  CALL Q2XTMN($TABLE)
*ENDIF
*IF(SPLINES)
*IF(L1TWOD)
      R0SOLV = R1BS2I(X, Y, $TABLE, $I1KORD, IDERIV)
*ELSE
      R0SOLV = R1BS3I(X, Y, Z, $TABLE, $I1KORD, IDERIV)
*ENDIF
*ENDIF
*IF(QUADRATICS)
*IF(L1TWOD)
      R0SOLV = R1QD2I(X, Y, $TABLE, IDERIV)
*ELSE
      R0SOLV = R1QD3I(X, Y, Z, $TABLE, IDERIV)
*ENDIF
*ENDIF
*ENDSET
*SET(INITOPT)
C
*ENDSET
*SET (SRGRIDX)
C
C============   SETUP GRIDX
C
      I1NGRX = $I0NGRX
      L1UNFX = $L1UNFX
*IF (L1UNFX)
*IF (L1RECT)
*ELSE
*RESET(AX)
      R1AXGR = $LIST(AX)
      R1BXGR = $LIST(AX)
*ENDIF
      CALL Q0GRUF(R1AXGR, R1BXGR, R1GRDX, I1NGRX, R1HXGR, $I1NGRX, 'X')
*ELSE
*RESET(R1GRDX)
*DO (I=1,I0NGRX)
      R1GRDX($I) = $LIST(R1GRDX)
*ENDDO
      CALL Q0GRNU(R1AXGR, R1BXGR, R1GRDX, I1NGRX, R1HXGR, $I1NGRX, 'X')
*ENDIF
*ENDSET
*SET (SRGRIDY)
C
C============   SETUP GRIDY
C
      I1NGRY = $I0NGRY
      L1UNFY = $L1UNFY
*IF (L1UNFY)
*IF (L1RECT)
*ELSE
*RESET(AY)
      R1AYGR = $LIST(AY)
      R1BYGR = $LIST(AY)
*ENDIF
      CALL Q0GRUF(R1AYGR, R1BYGR, R1GRDY, I1NGRY, R1HYGR, $I1NGRY, 'Y')
*ELSE
*RESET(R1GRDY)
*DO (I=1,I0NGRY)
      R1GRDY($I) = $LIST(R1GRDY)
*ENDDO
      CALL Q0GRNU(R1AYGR, R1BYGR, R1GRDY, I1NGRY, R1HYGR, $I1NGRY, 'Y')
*ENDIF
*ENDSET
*SET (SRGRIDZ)
C
C============   SETUP GRIDZ
C
      I1NGRZ = $I0NGRZ
      L1UNFZ = $L1UNFZ
*IF (L1UNFZ)
*IF (L1RECT)
*ELSE
*RESET(AZ)
      R1AZGR = $LIST(AZ)
      R1BZGR = $LIST(AZ)
*ENDIF
      CALL Q0GRUF(R1AZGR, R1BZGR, R1GRDZ, I1NGRZ, R1HZGR, $I1NGRZ, 'Z')
*ELSE
*RESET(R1GRDZ)
*DO (I=1,I0NGRZ)
      R1GRDZ($I) = $LIST(R1GRDZ)
*ENDDO
      CALL Q0GRNU(R1AZGR, R1BZGR, R1GRDZ, I1NGRZ, R1HZGR, $I1NGRZ, 'Z')
*ENDIF
*ENDSET
*SET(DC=1)
*SET(DC=2)
*SET(DC=3)
*SET(MEMORY='.FALSE.')
*SET(PPDEBUG='.FALSE.')
*SET(NOEXECUTION='.FALSE.')
*SET(L0CSTC='.TRUE.')
*SET(L1CSTC='$L0CSTC')
*SET(ALCONSTANTCOEFFICIENTS='L1CSTC')
*SET(L1CLKW='.FALSE.')
*SET(ALCLOCKWISE='L1CLKW')
*SET(L0HMBC='.TRUE.')
*SET(L1HMBC='$L0HMBC')
*SET(ALHOMOGENEOUSBC='L1HMBC')
*SET(OTL1HMBC=3)
*SET(L0HMEQ='.TRUE.')
*SET(L1HMEQ='$L0HMEQ')
*SET(ALHOMOGENEOUSPDE='L1HMEQ')
*SET(OTL1HMEQ=3)
*SET(L0LAPL='.FALSE.')
*SET(L1LAPL='$L0LAPL')
*SET(ALLAPLACE='L1LAPL')
*SET(OTL1LAPL=3)
*SET(I1LEVL='1')
*SET(ALLEVEL='I1LEVL')
*SET(OTI1LEVL=1)
*SET(I0NGRX='1')
*SET(I1NGRX='$I0NGRX')
*SET(ALMAXXPOINTS='I1NGRX')
*SET(I0NGRY='1')
*SET(I1NGRY='$I0NGRY')
*SET(ALMAXYPOINTS='I1NGRY')
*SET(I0NGRZ='1')
*SET(I1NGRZ='$I0NGRZ')
*SET(ALMAXZPOINTS='I1NGRZ')
*SET(L0POIS='.FALSE.')
*SET(L1POIS='$L0POIS')
*SET(ALPOISSON='L1POIS')
*SET(OTL1POIS=3)
*SET(L0SELF='.FALSE.')
*SET(L1SELF='$L0SELF')
*SET(ALSELFADJOINT='L1SELF')
*SET(OTL1SELF=3)
*SET(L1TIME='.FALSE.')
*SET(ALTIME='L1TIME')
*SET(I1PAGE='1')
*SET(ALPAGE='I1PAGE')
*SET(OTI1PAGE=1)
*SET(I0GRDX='$I1NGRX')
*SET(I0GRDY='$I1NGRY')
*SET(I0GRDZ='$I1NGRZ')
*SET(I0GRTY='$I1NGRX')
*SET(I0GRT2='$I1NGRY')
*SET(I0TABL='$I1NGRX')
*SET(I0TAB2='$I1NGRY')
*SET(I0TAB3='$I1NGRZ')
*SET(I1NBND='1')
*SET(I0BCST='$I1NBND')
*SET(I0BCTY='$I1NBND')
*SET(I0BRNG='$I1NBND')
*SET(I1KWRK='1')
*SET(I0KWRK='$I1KWRK')
*SET(ALWORKSPACE='I0KWRK')
*SET(MINWORKSPACE='1')
*SET(MAXWORKSPACE='$I1KWRK')
*SET(I1KBAN='1')
*SET(I0KBAN='$I1KBAN')
*SET(ALBANDWIDTH='I0KBAN')
*SET(I1MXKO='0')
*SET(I0KORD='$I1MXKO')
*SET(ALORDER='I0KORD')
*SET(I1BSTP='1')
*SET(I0BSTP='$I1BSTP')
*SET(I1MBPT='1')
*SET(I0MBPT='$I1MBPT')
*SET(ALBOUNDARYPOINTS='I0MBPT')
*SET(I0BNGH='$I0MBPT')
*SET(I0BGRD='$I0MBPT')
*SET(I0BPAR='$I0MBPT')
*SET(I0BPTY='$I0MBPT')
*SET(I0PECE='$I0MBPT')
*SET(I0XBND='$I0MBPT')
*SET(I0YBND='$I0MBPT')
*SET(I1MNEQ='1')
*SET(I0MNEQ='$I1MNEQ')
*SET(ALEQUATIONS='I0MNEQ')
*SET(I0BBBB='$I0MNEQ')
*SET(I0COEF='$I0MNEQ')
*SET(I0ENDX='$I0MNEQ')
*SET(I0IDCO='$I0MNEQ')
*SET(I0UNDX='$I0MNEQ')
*SET(I1MNCO='1')
*SET(I0MNCO='$I1MNCO')
*SET(ALCOEFFICIENTS='I0MNCO')
*SET(I0COE2='$I0MNCO')
*SET(I0IDC2='$I0MNCO')
*SET(I1MUNK='1')
*SET(I0MUNK='$I1MUNK')
*SET(ALUNKNOWNS='I0MUNK')
*SET(I0UNKN='$I1MUNK')
*SET(PCDOMAIN='P1')
*SET(TYP1='PR')
*SET(DCP1=4)
*SET(PCHOLE='P2')
*SET(TYP2='PR')
*SET(DCP2=5)
*SET(PCARC='P3')
*SET(TYP3='PR')
*SET(DCP3=6)
*SET(PCDISPLAYMATRIXPATTERN='P4')
*SET(P4MATZER='1H.')
*SET(P4MATNZR='1HX')
*SET(P4MATDZR='1H0')
*SET(P4MATDNZ='1HD')
*SET(P4MATBLK='I1NEQN')
*SET(P4MATLNL='120')
*SET(P4EPSMAT='0.0')
*SET(P4MATNBR='0')
*SET(P4MATNBC='0')
*SET(P4MATOUT='I1OUTP')
*SET(TYP4='PR')
*SET(DCP4=7)
*SET(PCDOMAINFILL='P5')
*SET(P5NFILL='1')
*SET(P5EXTER='.FALSE.')
*SET(TYP5='PR')
*SET(DCP5=8)
*SET(PCSETUNKNOWNSFOR5POINTSTAR='P6')
*SET(P6UEST='ZERO')
*SET(TYP6='PR')
*SET(DCP6=9)
*SET(PCSETUNKNOWNSFORHODIEHELMHOLTZ='P7')
*SET(P7UEST='ZERO')
*SET(TYP7='PR')
*SET(DCP7=10)
*SET(PCNONUNIQUE='P8')
*SET(P8X='R1AXGR')
*SET(P8Y='R1AYGR')
*SET(P8Z='R1AZGR')
*SET(P8U='0.0')
*SET(TYP8='PR')
*SET(PCREMOVE='P9')
*SET(P9V='V')
*SET(P9HXSTEP='-1.')
*SET(P9HYSTEP='-1.')
*SET(P9HZSTEP='-1.')
*SET(TYP9='PR')
*SET(PCREMOVEBYBLENDING='P10')
*SET(TYP10='PR')
*SET(PCREMOVEBYBICUBICS='P11')
*SET(TYP11='PR')
*SET(DCP11=11)
*SET(PCEIGENVALUES='P12')
*SET(P12SCALE='1.0')
*SET(TYP12='PR')
*SET(DCP12=12)
*SET(PCSET='P13')
*SET(P13U='ZERO')
*SET(TYP13='TR')
*SET(DCP13=13)
*SET(PCSETUBYBLENDING='P14')
*SET(TYP14='TR')
*SET(PCSETUBYBICUBICS='P15')
*SET(TYP15='TR')
*SET(DCP15=14)
*SET(PCHODIEFFT='P16')
*SET(P16IORDER='4')
*SET(TYP16='TR')
*SET(DCP16=15)
*SET(PCFFT9POINT='P17')
*SET(P17IORDER='4')
*SET(TYP17='TR')
*SET(DCP17=16)
*SET(PCP2C0TRIANGLES='P18')
*SET(P18MEM='0')
*SET(P18NTRI='0')
*SET(TYP18='TR')
*SET(DCP18=17)
*SET(PCHODIE27POINT3D='P19')
*SET(TYP19='TR')
*SET(DCP19=18)
*SET(PCFISHPAKHELMHOLTZ='P20')
*SET(TYP20='TR')
*SET(DCP20=19)
*SET(PCCMM1='P21')
*SET(P21IWORKR='0')
*SET(P21IWORKI='0')
*SET(P21NUDATA='0')
*SET(TYP21='TR')
*SET(DCP21=20)
*SET(PCCMM2='P22')
*SET(P22IWORKR='0')
*SET(P22IWORKI='0')
*SET(P22NUDATA='0')
*SET(TYP22='TR')
*SET(DCP22=21)
*SET(PCCMM3='P23')
*SET(P23IWORKR='0')
*SET(P23IWORKI='0')
*SET(P23NUDATA='0')
*SET(TYP23='TR')
*SET(DCP23=22)
*SET(PCMULTIGRIDMG00='P24')
*SET(P24METHOD='0')
*SET(P24UINIT='0')
*SET(P24NMIN='2')
*SET(P24INEUM='0')
*SET(P24ITER='0')
*SET(P24IGAMMA='1')
*SET(TYP24='TR')
*SET(DCP24=23)
*SET(PCMARCHINGALGORITHM='P25')
*SET(P25KGMA='2')
*SET(TYP25='TR')
*SET(DCP25=24)
*SET(PCDYAKANOVCG='P26')
*SET(P26MAXIT='100')
*SET(P26DEMAND='3.0')
*SET(TYP26='TR')
*SET(DCP26=25)
*SET(PCDYAKANOVCG4='P27')
*SET(P27MAXIT='100')
*SET(P27DEMAND='3.0')
*SET(TYP27='TR')
*SET(DCP27=26)
*SET(PC5POINTSTAR='P28')
*SET(TYP28='DI')
*SET(DCP28=27)
*SET(PC7POINT3D='P29')
*SET(TYP29='DI')
*SET(DCP29=28)
*SET(PCHODIEHELMHOLTZ='P30')
*SET(P30IORDER='4')
*SET(TYP30='DI')
*SET(DCP30=29)
*SET(PCHODIEACF='P31')
*SET(P31METHOD='-1')
*SET(TYP31='DI')
*SET(DCP31=30)
*SET(PCCOLLOCATION='P32')
*SET(P32BCP1='0.')
*SET(P32BCP2='0.')
*SET(P32DSCARE='.05')
*SET(P32PTSIZE='6.')
*SET(P32GIVOPT='1')
*SET(P32IDPLOT='0')
*SET(P32USECRN='.FALSE.')
*SET(TYP32='DI')
*SET(DCP32=31)
*SET(PCPLOTCOLLOCATIONPOINTS='P33')
*SET(P33BCP1='0.')
*SET(P33BCP2='0.')
*SET(P33DSCARE='.05')
*SET(P33PTSIZE='6.')
*SET(P33GIVOPT='1')
*SET(P33IDPLOT='0')
*SET(P33USECRN='.FALSE.')
*SET(TYP33='PR')
*SET(DCP33=32)
*SET(PCHERMITECOLLOCATION='P34')
*SET(P34BCP1='0.0')
*SET(P34BCP2='0.0')
*SET(TYP34='DI')
*SET(DCP34=33)
*SET(PCINTERIORCOLLOCATION='P35')
*SET(TYP35='DI')
*SET(DCP35=34)
*SET(PCSPLINEGALERKIN='P36')
*SET(P36DEGREE='3')
*SET(P36NDERV='2')
*SET(TYP36='DI')
*SET(DCP36=35)
*SET(PCASIS='P37')
*SET(TYP37='IN')
*SET(PCREDBLACK='P38')
*SET(P38LEVEL='I1LEVL')
*SET(TYP38='IN')
*SET(PCNESTEDDISSECTION='P39')
*SET(P39NDTYPE='5')
*SET(TYP39='IN')
*SET(DCP39=36)
*SET(PCREVERSECUTHILLMCKEE='P40')
*SET(TYP40='IN')
*SET(PCMINIMUMDEGREE='P41')
*SET(TYP41='IN')
*SET(DCP41=37)
*SET(PCHERMITECOLLORDER='P42')
*SET(TYP42='IN')
*SET(PCINTERIORCOLLORDER='P43')
*SET(TYP43='IN')
*SET(DCP43=38)
*SET(PCLINPACKBAND='P44')
*SET(TYP44='SO')
*SET(DCP44=39)
*SET(PCLINPACKSPDBAND='P45')
*SET(TYP45='SO')
*SET(DCP45=40)
*SET(PCBANDGENOPIVOTING='P46')
*SET(TYP46='SO')
*SET(DCP46=41)
*SET(PCBANDGE='P47')
*SET(TYP47='SO')
*SET(DCP47=42)
*SET(PCSPARSELDLT='P48')
*SET(TYP48='SO')
*SET(DCP48=43)
*SET(PCSPARSELUUNCOMPRESSED='P49')
*SET(TYP49='SO')
*SET(DCP49=44)
*SET(PCSPARSELUCOMPRESSED='P50')
*SET(TYP50='SO')
*SET(DCP50=45)
*SET(PCSPARSEGENOPIVOTING='P51')
*SET(TYP51='SO')
*SET(DCP51=46)
*SET(PCSPARSELUPIVOTING='P52')
*SET(P52MAXNZ='0')
*SET(TYP52='SO')
*SET(DCP52=47)
*SET(PCENVELOPELDU='P53')
*SET(TYP53='SO')
*SET(DCP53=48)
*SET(PCENVELOPELDLT='P54')
*SET(TYP54='SO')
*SET(DCP54=49)
*SET(PCSOR='P55')
*SET(P55ITMAX='100')
*SET(P55LEVEL='I1LEVL')
*SET(P55IADAPT='1')
*SET(P55ICASE='1')
*SET(P55IDGTS='0')
*SET(P55ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P55CME='0.')
*SET(P55SME='0.')
*SET(P55FF='.75')
*SET(P55OMEGA='1.')
*SET(P55SPECR='0.')
*SET(P55BETAB='0.25')
*SET(TYP55='SO')
*SET(DCP55=50)
*SET(PCJACOBICG='P56')
*SET(P56ITMAX='100')
*SET(P56LEVEL='I1LEVL')
*SET(P56IADAPT='1')
*SET(P56ICASE='1')
*SET(P56IDGTS='0')
*SET(P56ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P56CME='0.')
*SET(P56SME='0.')
*SET(P56FF='.75')
*SET(P56OMEGA='1.')
*SET(P56SPECR='0.')
*SET(P56BETAB='0.25')
*SET(TYP56='SO')
*SET(DCP56=51)
*SET(PCJACOBISI='P57')
*SET(P57ITMAX='100')
*SET(P57LEVEL='I1LEVL')
*SET(P57IADAPT='1')
*SET(P57ICASE='1')
*SET(P57IDGTS='0')
*SET(P57ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P57CME='0.')
*SET(P57SME='0.')
*SET(P57FF='.75')
*SET(P57OMEGA='1.')
*SET(P57SPECR='0.')
*SET(P57BETAB='0.25')
*SET(TYP57='SO')
*SET(DCP57=52)
*SET(PCREDUCEDSYSTEMCG='P58')
*SET(P58ITMAX='100')
*SET(P58LEVEL='I1LEVL')
*SET(P58IADAPT='1')
*SET(P58ICASE='1')
*SET(P58IDGTS='0')
*SET(P58ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P58CME='0.')
*SET(P58SME='0.')
*SET(P58FF='.75')
*SET(P58OMEGA='1.')
*SET(P58SPECR='0.')
*SET(P58BETAB='0.25')
*SET(TYP58='SO')
*SET(DCP58=53)
*SET(PCREDUCEDSYSTEMSI='P59')
*SET(P59ITMAX='100')
*SET(P59LEVEL='I1LEVL')
*SET(P59IADAPT='1')
*SET(P59ICASE='1')
*SET(P59IDGTS='0')
*SET(P59ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P59CME='0.')
*SET(P59SME='0.')
*SET(P59FF='.75')
*SET(P59OMEGA='1.')
*SET(P59SPECR='0.')
*SET(P59BETAB='0.25')
*SET(TYP59='SO')
*SET(DCP59=54)
*SET(PCSYMMETRICSORCG='P60')
*SET(P60ITMAX='100')
*SET(P60LEVEL='I1LEVL')
*SET(P60IADAPT='1')
*SET(P60ICASE='1')
*SET(P60IDGTS='0')
*SET(P60ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P60CME='0.')
*SET(P60SME='0.')
*SET(P60FF='.75')
*SET(P60OMEGA='1.')
*SET(P60SPECR='0.')
*SET(P60BETAB='0.25')
*SET(TYP60='SO')
*SET(DCP60=55)
*SET(PCSYMMETRICSORSI='P61')
*SET(P61ITMAX='100')
*SET(P61LEVEL='I1LEVL')
*SET(P61IADAPT='1')
*SET(P61ICASE='1')
*SET(P61IDGTS='0')
*SET(P61ZETA='AMAX1(5.E-6,5.E2*R1EPSM)')
*SET(P61CME='0.')
*SET(P61SME='0.')
*SET(P61FF='.75')
*SET(P61OMEGA='1.')
*SET(P61SPECR='0.')
*SET(P61BETAB='0.25')
*SET(TYP61='SO')
*SET(DCP61=56)
*SET(PCMAX='P62')
*SET(TYP62='OU')
*SET(PCRMS='P63')
*SET(TYP63='OU')
*SET(PCNORM='P64')
*SET(TYP64='OU')
*SET(PCTABLE='P65')
*SET(TYP65='OU')
*SET(DCP65=57)
*SET(PCSUMMARY='P66')
*SET(TYP66='OU')
*SET(DCP66=58)
*SET(PCTABLEEQUATIONS='P67')
*SET(TYP67='OU')
*SET(PCTABLEPROBLEM='P68')
*SET(TYP68='OU')
*SET(PCTABLEINDEXES='P69')
*SET(TYP69='OU')
*SET(PCTABLEUNKNOWN='P70')
*SET(TYP70='OU')
*SET(PCPLOTDOMAIN='P71')
*SET(TYP71='OU')
*SET(DCP71=59)
*SET(PCTABLEDOMAIN='P72')
*SET(TYP72='OU')
*SET(PCTABLEBOUNDARY='P73')
*SET(TYP73='OU')
*SET(PCPLOT='P74')
*SET(TYP74='OU')
*SET(DCP74=60)
*SET(PCDATA='P75')
*SET(TYP75='OU')
*OPTION(LSUB=.TRUE.)
*SET(L1HMBC='$L0HMBC')
*SET(L1HMEQ='$L0HMEQ')
*SET(L1LAPL='$L0LAPL')
*SET(L1POIS='$L0POIS')
*SET(L1SELF='$L0SELF')
*IF($DEF(HVP1))
*SET(SRP1)
*SET(MODNAME='DOMAIN')
*INCLUDE(BEGINMODULE)
      L1CLKW = $$L1CLKW
      I1NBND = $$I1NBND
      CALL Q2DPMN
      IF (L1FATL)  CALL Q1FATL
*ENDSET
*ENDIF
*IF($DEF(HVP2))
*SET(SRP2)
*SET(MODNAME='HOLE')
*INCLUDE(BEGINMODULE)
      L1CLKW = $$L1CLKW
      I1NBND = $$I1NBND
      CALL Q2DPHO(.FALSE.)
      IF (L1FATL)  CALL Q1FATL
*ENDSET
*ENDIF
*IF($DEF(HVP3))
*SET(SRP3)
*SET(MODNAME='ARC')
*INCLUDE(BEGINMODULE)
      L1CLKW = $$L1CLKW
      I1NBND = $$I1NBND
      CALL Q2DPHO(.TRUE.)
      IF (L1FATL)  CALL Q1FATL
*ENDSET
*ENDIF
*IF($DEF(HVP4))
*SET(SRP4)
*SET(MODNAME='DISPLAY MATRIX PATTERN')
*INCLUDE(BEGINMODULE)
      MATZER = $$P4MATZER
      MATNZR = $$P4MATNZR
      MATDZR = $$P4MATDZR
      MATDNZ = $$P4MATDNZ
      MATBLK = $$P4MATBLK
      MATLNL = $$P4MATLNL
      EPSMAT = $$P4EPSMAT
      MATNBR = $$P4MATNBR
      MATNBC = $$P4MATNBC
      MATOUT = $$P4MATOUT
      CALL Q7DMMN (MATZER, MATNZR, MATDZR, MATDNZ, MATBLK, MATLNL,
     A             EPSMAT, MATNBR, MATNBC, MATOUT)
*ENDSET
*ENDIF
*IF($DEF(HVP5))
*SET(SRP5)
*SET(MODNAME='DOMAIN FILL')
*INCLUDE(BEGINMODULE)
      NFILL = $$P5NFILL
      EXTER = $$P5EXTER
      CALL Q7DFMN(NFILL,EXTER,I1GRTY,I1NGRX,I1NGRY)
*ENDSET
*ENDIF
*IF($DEF(HVP6))
*SET(SRP6)
*SET(MODNAME='SET UNKNOWNS FOR 5-POINT STAR')
*INCLUDE(BEGINMODULE)
      CALL Q75PIU ($$P6UEST)
*ENDSET
*ENDIF
*IF($DEF(HVP7))
*SET(SRP7)
*SET(MODNAME='SET UNKNOWNS FOR HODIE-HELMHOLTZ')
*INCLUDE(BEGINMODULE)
      CALL Q7HHIU ($$P7UEST)
*ENDSET
*ENDIF
*IF($DEF(HVP8))
*SET(SRP8)
*SET(MODNAME='NON-UNIQUE')
*INCLUDE(BEGINMODULE)
      R1UNQX = $$P8X
      R1UNQY = $$P8Y
      R1UNQZ = $$P8Z
      R1UNQU = $$P8U
      L1NUNQ = .TRUE.
*ENDSET
*ENDIF
*IF($DEF(HVP9))
*SET(SRP9)
*SET(MODNAME='REMOVE')
*INCLUDE(BEGINMODULE)
      HXSTEP = $$P9HXSTEP
      HYSTEP = $$P9HYSTEP
      HZSTEP = $$P9HZSTEP
      CALL Q7RMHS(HXSTEP, HYSTEP, HZSTEP)
*SET(RMFCN='$$P9V')
*IF(L1TWOD)
*SET(RMPRHS='R7RML2($$RMFCN, X, Y)')
*SET(RMBRHS='R7RMB2($$RMFCN, I0SIDE, X, Y)')
*SET(RMSOLV='R7RMV2($$RMFCN, IDERIV, X, Y)')
*ELSE
*SET(RMPRHS='R7RML3($$RMFCN, X, Y, Z)')
*SET(RMBRHS='R7RMB3($$RMFCN, I0SIDE, X, Y, Z)')
*SET(RMSOLV='R7RMV3($$RMFCN, IDERIV, X, Y, Z)')
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP10))
*SET(SRP10)
*SET(MODNAME='REMOVE BY BLENDING')
*INCLUDE(BEGINMODULE)
       CALL Q7RBMN
*SET(RMPRHS = 'R7RBL2(X,Y)')
*SET(RMBRHS = 'R7RBB2(R1BRHS)')
*SET(RMSOLV = 'R7RBV2(X,Y,IDERIV)')
*ENDSET
*ENDIF
*IF($DEF(HVP11))
*SET(SRP11)
*SET(MODNAME='REMOVE BY BICUBICS')
*INCLUDE(BEGINMODULE)
       CALL Q7RHMN
*SET(RMPRHS = 'R7RHL2(X,Y)')
*SET(RMBRHS = 'R7RHB2(R1BRHS)')
*SET(RMSOLV = 'R7RHV2(X,Y,IDERIV)')
*ENDSET
*ENDIF
*IF($DEF(HVP12))
*SET(SRP12)
*SET(MODNAME='EIGENVALUES')
*INCLUDE(BEGINMODULE)
      SCALE = $$P12SCALE
      CALL Q7EIMN  (SCALE)
*ENDSET
*ENDIF
*IF($DEF(HVP13))
*SET(SRP13)
*SET(MODNAME='SET')
*INCLUDE(BEGINMODULE)
*IF (L1TWOD)
*IF (L1RECT)
      CALL Q6IUR2($$P13U)
*ELSE
      CALL Q6IUNR($$P13U)
*ENDIF
*ELSE
      CALL Q6IUR3($$P13U)
*ENDIF
*ENDSET
*SET(SLP13)
*SET(MODNAME='SET')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='4')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP14))
*SET(SRP14)
*SET(MODNAME='SET U BY BLENDING')
*INCLUDE(BEGINMODULE)
      CALL Q6BLMN
*ENDSET
*SET(HVP10=1)
*SET(SLP14)
*SET(MODNAME='SET U BY BLENDING')
*INCLUDE(BEGINSOLUT)
      R0SOLV = R6BLVL(X, Y, IDERIV)
*ENDSET
*ENDIF
*IF($DEF(HVP15))
*SET(SRP15)
*SET(MODNAME='SET U BY BICUBICS')
*INCLUDE(BEGINMODULE)
      CALL Q6HBMN
*ENDSET
*SET(HVP11=1)
*SET(SLP15)
*SET(MODNAME='SET U BY BICUBICS')
*INCLUDE(BEGINSOLUT)
      R0SOLV = R6HBVL(X, Y, IDERIV)
*ENDSET
*ENDIF
*IF($DEF(HVP16))
*SET(SRP16)
*SET(MODNAME='HODIE-FFT')
*INCLUDE(BEGINMODULE)
      IORDER = $$P16IORDER
      I1KORD = IORDER
      CALL Q6H2MN (IORDER)
*ENDSET
*SET(SLP16)
*SET(MODNAME='HODIE-FFT')
*INCLUDE(BEGINSOLUT)
      IF (L1NEWD) CALL Q6H2VL
*SET(TABLE='R1TABL')
*SET(I1KORD='I1KORD')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP17))
*SET(SRP17)
*SET(MODNAME='FFT 9-POINT')
*INCLUDE(BEGINMODULE)
      IORDER = $$P17IORDER
      I1KORD = IORDER
      CALL Q6FFMN (IORDER)
*ENDSET
*SET(SLP17)
*SET(MODNAME='FFT 9-POINT')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='I1KORD')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP18))
*SET(SRP18)
*SET(MODNAME='P2C0-TRIANGLES')
*INCLUDE(BEGINMODULE)
      MEM = $$P18MEM
      NTRI = $$P18NTRI
      MEM = $I1KWRK
      IF (NTRI.EQ.0)  NTRI = 8*I1NGRX*I1NGRY
      CALL Q6TRMN (NTRI, MEM)
*ENDSET
*SET(SLP18)
*SET(MODNAME='P2C0-TRIANGLES')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1UNKN')
*SET(I1KORD='6')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP19))
*SET(SRP19)
*SET(MODNAME='HODIE 27-POINT 3D')
*INCLUDE(BEGINMODULE)
      CALL Q627MN
*ENDSET
*SET(SLP19)
*SET(MODNAME='HODIE 27-POINT 3D')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1UNKN')
*SET(I1KORD='6')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP20))
*SET(SRP20)
*SET(MODNAME='FISHPAK-HELMHOLTZ')
*INCLUDE(BEGINMODULE)
      CALL Q6FHMN
*ENDSET
*SET(SLP20)
*SET(MODNAME='FISHPAK-HELMHOLTZ')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='5')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP21))
*SET(SRP21)
*SET(MODNAME='CMM 1')
*INCLUDE(BEGINMODULE)
      IWORKR = $$P21IWORKR
      IWORKI = $$P21IWORKI
      NUDATA = $$P21NUDATA
      CALL Q6CMMN(IWORKR,IWORKI,NUDATA)
*ENDSET
*SET(SLP21)
*SET(MODNAME='CMM 1')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='3')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP22))
*SET(SRP22)
*SET(MODNAME='CMM 2')
*INCLUDE(BEGINMODULE)
      IWORKR = $$P22IWORKR
      IWORKI = $$P22IWORKI
      NUDATA = $$P22NUDATA
      CALL Q6CIMN(IWORKR,IWORKI,NUDATA)
*ENDSET
*SET(SLP22)
*SET(MODNAME='CMM 2')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='3')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP23))
*SET(SRP23)
*SET(MODNAME='CMM 3')
*INCLUDE(BEGINMODULE)
      IWORKR = $$P23IWORKR
      IWORKI = $$P23IWORKI
      NUDATA = $$P23NUDATA
      CALL Q6CSMN(IWORKR,IWORKI,NUDATA)
*ENDSET
*SET(SLP23)
*SET(MODNAME='CMM 3')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='3')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP24))
*SET(SRP24)
*SET(MODNAME='MULTIGRID MG00')
*INCLUDE(BEGINMODULE)
      METHOD = $$P24METHOD
      UINIT = $$P24UINIT
      NMIN = $$P24NMIN
      INEUM = $$P24INEUM
      ITER = $$P24ITER
      IGAMMA = $$P24IGAMMA
      CALL Q6MGSU(R1UNKN, R1GRDX, R1GRDY, METHOD, UINIT,  NMIN,
     A            INEUM, R1WORK, I6MGWK)
*INCLUDE(ENDSETUP)
      CALL Q6MGMN(R1UNKN, ITER,   IGAMMA, R1WORK, I6MGWK, R1TABL)
*ENDSET
*SET(SLP24)
*SET(MODNAME='MULTIGRID MG00')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1TABL')
*SET(I1KORD='2')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP25))
*SET(SRP25)
*SET(MODNAME='MARCHING ALGORITHM')
*INCLUDE(BEGINMODULE)
      KGMA = $$P25KGMA
      CALL Q6MAMN ( KGMA )
*ENDSET
*SET(SLP25)
*SET(MODNAME='MARCHING ALGORITHM')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1UNKN')
*SET(I1KORD='4')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP26))
*SET(SRP26)
*SET(MODNAME='DYAKANOV-CG')
*INCLUDE(BEGINMODULE)
      MAXIT = $$P26MAXIT
      DEMAND = $$P26DEMAND
      CALL Q6DCMN (MAXIT, DEMAND)
*ENDSET
*SET(SLP26)
*SET(MODNAME='DYAKANOV-CG')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1UNKN')
*SET(I1KORD='4')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP27))
*SET(SRP27)
*SET(MODNAME='DYAKANOV-CG 4')
*INCLUDE(BEGINMODULE)
      MAXIT = $$P27MAXIT
      DEMAND = $$P27DEMAND
      CALL Q6D4MN(MAXIT, DEMAND)
*ENDSET
*SET(SLP27)
*SET(MODNAME='DYAKANOV-CG 4')
*INCLUDE(BEGINSOLUT)
*SET(TABLE='R1UNKN')
*SET(I1KORD='4')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP28))
*SET(SRP28)
*SET(MODNAME='5-POINT STAR')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
      CALL Q35PMN
*ELSE
      CALL Q35GMN
*ENDIF
*ENDSET
*SET(SLP28)
*SET(MODNAME='5-POINT STAR')
*INCLUDE(BEGINSOLUT)
*IF (L1RECT)
      IF (L1NEWD)  CALL Q35PVL
*ELSE
      IF (L1NEWD)  CALL Q35GVL
*ENDIF
*SET(TABLE='R1TABL')
*SET(I1KORD='3')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP29))
*SET(SRP29)
*SET(MODNAME='7-POINT 3D')
*INCLUDE(BEGINMODULE)
      CALL Q37PMN
*ENDSET
*SET(SLP29)
*SET(MODNAME='7-POINT 3D')
*INCLUDE(BEGINSOLUT)
      IF (L1NEWD)  CALL Q37PVL
*SET(TABLE='R1TABL')
*SET(I1KORD='4')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP30))
*SET(SRP30)
*SET(MODNAME='HODIE-HELMHOLTZ')
*INCLUDE(BEGINMODULE)
      IORDER = $$P30IORDER
      I1KORD = IORDER
      CALL Q3HHMN (IORDER)
*ENDSET
*SET(SLP30)
*SET(MODNAME='HODIE-HELMHOLTZ')
*INCLUDE(BEGINSOLUT)
      IF (L1NEWD)  CALL Q3HHVL
*SET(TABLE='R1TABL')
*SET(I1KORD='I1KORD')
*INCLUDE(INTERPOLATE)
*ENDSET
*ENDIF
*IF($DEF(HVP31))
*SET(SRP31)
*SET(MODNAME='HODIE-ACF')
*INCLUDE(BEGINMODULE)
      METHOD = $$P31METHOD
      CALL Q3HAMN(METHOD)
*ENDSET
*SET(SLP31)
*SET(MODNAME='HODIE-ACF')
*INCLUDE(BEGINSOLUT)
      R0SOLV = R3HAEV(IDERIV, X, Y)
*ENDSET
*ENDIF
*IF($DEF(HVP32))
*SET(SRP32)
*SET(MODNAME='COLLOCATION')
*INCLUDE(BEGINMODULE)
      BCP1 = $$P32BCP1
      BCP2 = $$P32BCP2
      DSCARE = $$P32DSCARE
      PTSIZE = $$P32PTSIZE
      GIVOPT = $$P32GIVOPT
      IDPLOT = $$P32IDPLOT
      USECRN = $$P32USECRN
      CALL Q3CGMN(BCP1, BCP2, DSCARE, PTSIZE, GIVOPT, IDPLOT, USECRN)
*ENDSET
*SET(SLP32)
*SET(MODNAME='COLLOCATION')
*INCLUDE(BEGINSOLUT)
      R0SOLV = R3CGEV(X, Y, IDERIV)
*ENDSET
*ENDIF
*IF($DEF(HVP33))
*SET(SRP33)
*SET(MODNAME='PLOT COLLOCATION POINTS')
*INCLUDE(BEGINMODULE)
      BCP1 = $$P33BCP1
      BCP2 = $$P33BCP2
      DSCARE = $$P33DSCARE
      PTSIZE = $$P33PTSIZE
      GIVOPT = $$P33GIVOPT
      IDPLOT = $$P33IDPLOT
      USECRN = $$P33USECRN
      CALL Q7PCMN(BCP1, BCP2, DSCARE, PTSIZE, GIVOPT, IDPLOT, USECRN)
*ENDSET
*SET(HVP32=1)
*ENDIF
*IF($DEF(HVP34))
*SET(SRP34)
*SET(MODNAME='HERMITE COLLOCATION')
*INCLUDE(BEGINMODULE)
      BCP1 = $$P34BCP1
      BCP2 = $$P34BCP2
*IF (L1HMBCNMIXD)
      CALL Q3H0MN
*ELSE
      CALL Q3H1MN(BCP1, BCP2)
*ENDIF
*ENDSET
*SET(SLP34)
*SET(MODNAME='HERMITE COLLOCATION')
*INCLUDE(BEGINSOLUT)
*IF (L1HMBCNMIXD)
      R0SOLV = R3H0EV(X, Y, IDERIV)
*ELSE
      R0SOLV = R3H1EV(X, Y, IDERIV)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP35))
*SET(SRP35)
*SET(MODNAME='INTERIOR COLLOCATION')
*INCLUDE(BEGINMODULE)
      CALL Q3IHMN
*ENDSET
*SET(SLP35)
*SET(MODNAME='INTERIOR COLLOCATION')
*INCLUDE(BEGINSOLUT)
      R0SOLV = R3IHEV(X, Y, IDERIV)
*ENDSET
*ENDIF
*IF($DEF(HVP36))
*SET(SRP36)
*SET(MODNAME='SPLINE GALERKIN')
*INCLUDE(BEGINMODULE)
      DEGREE = $$P36DEGREE
      NDERV = $$P36NDERV
      CALL Q3SGMN(DEGREE,NDERV)
*ENDSET
*SET(SLP36)
*SET(MODNAME='SPLINE GALERKIN')
*INCLUDE(BEGINSOLUT)
      R0SOLV = R3SGPR(X,Y,IDERIV)
*ENDSET
*ENDIF
*IF($DEF(HVP37))
*SET(SRP37)
*SET(MODNAME='AS IS')
*INCLUDE(BEGINMODULE)
      CALL Q4AIMN
*ENDSET
*ENDIF
*IF($DEF(HVP38))
*SET(SRP38)
*SET(MODNAME='RED-BLACK')
*INCLUDE(BEGINMODULE)
      LEVEL = $$P38LEVEL
      CALL Q4RBMN
*ENDSET
*ENDIF
*IF($DEF(HVP39))
*SET(SRP39)
*SET(MODNAME='NESTED DISSECTION')
*INCLUDE(BEGINMODULE)
      NDTYPE = $$P39NDTYPE
      CALL Q4NDMN (NDTYPE)
*ENDSET
*ENDIF
*IF($DEF(HVP40))
*SET(SRP40)
*SET(MODNAME='REVERSE CUTHILL MCKEE')
*INCLUDE(BEGINMODULE)
      CALL Q4RVMN
*ENDSET
*ENDIF
*IF($DEF(HVP41))
*SET(SRP41)
*SET(MODNAME='MINIMUM DEGREE')
*INCLUDE(BEGINMODULE)
      CALL Q4MDMN
*ENDSET
*ENDIF
*IF($DEF(HVP42))
*SET(SRP42)
*SET(MODNAME='HERMITE COLLORDER')
*INCLUDE(BEGINMODULE)
      CALL Q4HCMN
*ENDSET
*ENDIF
*IF($DEF(HVP43))
*SET(SRP43)
*SET(MODNAME='INTERIOR COLLORDER')
*INCLUDE(BEGINMODULE)
      CALL Q4ICMN
*ENDSET
*ENDIF
*IF($DEF(HVP44))
*SET(SRP44)
*SET(MODNAME='LINPACK BAND')
*INCLUDE(BEGINMODULE)
      CALL Q5LBSU(I5BDLW, I5BDUP)
*INCLUDE(ENDSETUP)
      CALL Q5LBMN  (I5BDLW, I5BDUP)
*ENDSET
*ENDIF
*IF($DEF(HVP45))
*SET(SRP45)
*SET(MODNAME='LINPACK SPD BAND')
*INCLUDE(BEGINMODULE)
      CALL Q5LSSU(I5BDUP)
*INCLUDE(ENDSETUP)
      CALL Q5LSMN(I5BDUP)
*ENDSET
*ENDIF
*IF($DEF(HVP46))
*SET(SRP46)
*SET(MODNAME='BAND GE NO PIVOTING')
*INCLUDE(BEGINMODULE)
      CALL Q5BNSU(I5BDNR, I5BDNC, I5BDNU, I5BDNL)
*INCLUDE(ENDSETUP)
      CALL Q5BNMN(I5BDNR, I5BDNC, I5BDNU, I5BDNL)
*ENDSET
*ENDIF
*IF($DEF(HVP47))
*SET(SRP47)
*SET(MODNAME='BAND GE')
*INCLUDE(BEGINMODULE)
      CALL Q5BGSU(I5BGNR, I5BGNC, I5BGNU, I5BGNL)
*INCLUDE(ENDSETUP)
      CALL Q5BGMN(I5BGNR, I5BGNC, I5BGNU, I5BGNL)
*ENDSET
*ENDIF
*IF($DEF(HVP48))
*SET(SRP48)
*SET(MODNAME='SPARSE LDLT')
*INCLUDE(BEGINMODULE)
      CALL Q5YSMN
*ENDSET
*ENDIF
*IF($DEF(HVP49))
*SET(SRP49)
*SET(MODNAME='SPARSE LU UNCOMPRESSED')
*INCLUDE(BEGINMODULE)
      CALL Q5YUMN
*ENDSET
*SET(HVP48=1)
*ENDIF
*IF($DEF(HVP50))
*SET(SRP50)
*SET(MODNAME='SPARSE LU COMPRESSED')
*INCLUDE(BEGINMODULE)
      CALL Q5YCMN
*ENDSET
*SET(HVP48=1)
*ENDIF
*IF($DEF(HVP51))
*SET(SRP51)
*SET(MODNAME='SPARSE GE NO PIVOTING')
*INCLUDE(BEGINMODULE)
      CALL Q5YNMN
*ENDSET
*SET(HVP48=1)
*ENDIF
*IF($DEF(HVP52))
*SET(SRP52)
*SET(MODNAME='SPARSE LU PIVOTING')
*INCLUDE(BEGINMODULE)
      MAXNZ = $$P52MAXNZ
      IF (MAXNZ.EQ.0)  MAXNZ = 3*I1MNEQ*I1MNCO/2
      CALL Q5SPSU (MAXNZ,  NROWD,  NCOLD)
*INCLUDE(ENDSETUP)
      CALL Q5SPMN (NROWD,  NCOLD,  MAXNZ)
*ENDSET
*ENDIF
*IF($DEF(HVP53))
*SET(SRP53)
*SET(MODNAME='ENVELOPE LDU')
*INCLUDE(BEGINMODULE)
      CALL Q5ENMN
*ENDSET
*SET(HVP48=1)
*ENDIF
*IF($DEF(HVP54))
*SET(SRP54)
*SET(MODNAME='ENVELOPE LDLT')
*INCLUDE(BEGINMODULE)
      CALL Q5ESMN
*ENDSET
*SET(HVP48=1)
*ENDIF
*IF($DEF(HVP55))
*SET(SRP55)
*SET(MODNAME='SOR')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P55ITMAX
      LEVEL = $$P55LEVEL
      IADAPT = $$P55IADAPT
      ICASE = $$P55ICASE
      IDGTS = $$P55IDGTS
      ZETA = $$P55ZETA
      CME = $$P55CME
      SME = $$P55SME
      FF = $$P55FF
      OMEGA = $$P55OMEGA
      SPECR = $$P55SPECR
      BETAB = $$P55BETAB
      I5ITMT = 1
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I1MN
*ENDSET
*ENDIF
*IF($DEF(HVP56))
*SET(SRP56)
*SET(MODNAME='JACOBI CG')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P56ITMAX
      LEVEL = $$P56LEVEL
      IADAPT = $$P56IADAPT
      ICASE = $$P56ICASE
      IDGTS = $$P56IDGTS
      ZETA = $$P56ZETA
      CME = $$P56CME
      SME = $$P56SME
      FF = $$P56FF
      OMEGA = $$P56OMEGA
      SPECR = $$P56SPECR
      BETAB = $$P56BETAB
      I5ITMT = 2
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I2MN
*ENDSET
*SET(HVP55=1)
*ENDIF
*IF($DEF(HVP57))
*SET(SRP57)
*SET(MODNAME='JACOBI SI')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P57ITMAX
      LEVEL = $$P57LEVEL
      IADAPT = $$P57IADAPT
      ICASE = $$P57ICASE
      IDGTS = $$P57IDGTS
      ZETA = $$P57ZETA
      CME = $$P57CME
      SME = $$P57SME
      FF = $$P57FF
      OMEGA = $$P57OMEGA
      SPECR = $$P57SPECR
      BETAB = $$P57BETAB
      I5ITMT = 3
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I3MN
*ENDSET
*SET(HVP55=1)
*ENDIF
*IF($DEF(HVP58))
*SET(SRP58)
*SET(MODNAME='REDUCED SYSTEM CG')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P58ITMAX
      LEVEL = $$P58LEVEL
      IADAPT = $$P58IADAPT
      ICASE = $$P58ICASE
      IDGTS = $$P58IDGTS
      ZETA = $$P58ZETA
      CME = $$P58CME
      SME = $$P58SME
      FF = $$P58FF
      OMEGA = $$P58OMEGA
      SPECR = $$P58SPECR
      BETAB = $$P58BETAB
      I5ITMT = 4
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I4MN
*ENDSET
*SET(HVP55=1)
*ENDIF
*IF($DEF(HVP59))
*SET(SRP59)
*SET(MODNAME='REDUCED SYSTEM SI')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P59ITMAX
      LEVEL = $$P59LEVEL
      IADAPT = $$P59IADAPT
      ICASE = $$P59ICASE
      IDGTS = $$P59IDGTS
      ZETA = $$P59ZETA
      CME = $$P59CME
      SME = $$P59SME
      FF = $$P59FF
      OMEGA = $$P59OMEGA
      SPECR = $$P59SPECR
      BETAB = $$P59BETAB
      I5ITMT = 5
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I5MN
*ENDSET
*SET(HVP55=1)
*ENDIF
*IF($DEF(HVP60))
*SET(SRP60)
*SET(MODNAME='SYMMETRIC SOR CG')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P60ITMAX
      LEVEL = $$P60LEVEL
      IADAPT = $$P60IADAPT
      ICASE = $$P60ICASE
      IDGTS = $$P60IDGTS
      ZETA = $$P60ZETA
      CME = $$P60CME
      SME = $$P60SME
      FF = $$P60FF
      OMEGA = $$P60OMEGA
      SPECR = $$P60SPECR
      BETAB = $$P60BETAB
      I5ITMT = 6
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I6MN
*ENDSET
*SET(HVP55=1)
*ENDIF
*IF($DEF(HVP61))
*SET(SRP61)
*SET(MODNAME='SYMMETRIC SOR SI')
*INCLUDE(BEGINMODULE)
      ITMAX = $$P61ITMAX
      LEVEL = $$P61LEVEL
      IADAPT = $$P61IADAPT
      ICASE = $$P61ICASE
      IDGTS = $$P61IDGTS
      ZETA = $$P61ZETA
      CME = $$P61CME
      SME = $$P61SME
      FF = $$P61FF
      OMEGA = $$P61OMEGA
      SPECR = $$P61SPECR
      BETAB = $$P61BETAB
      I5ITMT = 7
      CALL Q5ITSU
*INCLUDE(ENDSETUP)
      CALL Q5I7MN
*ENDSET
*SET(HVP55=1)
*ENDIF
*IF($DEF(HVP62))
*SET(SRP62)
*SET(MODNAME='MAX')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
*IF (L1TWOD)
      CALL Q8MXR2($$FCN, '$$FCN     ', $$NX, $$NY)
*ELSE
      CALL Q8MXR3($$FCN, '$$FCN     ', $$NX, $$NY, $$NZ)
*ENDIF
*ELSE
      CALL Q8MXNR($$FCN, '$$FCN     ', $$NX, $$NY)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP63))
*SET(SRP63)
*SET(MODNAME='RMS')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
*IF (L1TWOD)
      CALL Q8MXR2($$FCN, '$$FCN     ', $$NX, $$NY)
*ELSE
      CALL Q8MXR3($$FCN, '$$FCN     ', $$NX, $$NY, $$NZ)
*ENDIF
*ELSE
      CALL Q8MXNR($$FCN, '$$FCN     ', $$NX, $$NY)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP64))
*SET(SRP64)
*SET(MODNAME='NORM')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
*IF (L1TWOD)
      CALL Q8MXR2($$FCN, '$$FCN     ', $$NX, $$NY)
*ELSE
      CALL Q8MXR3($$FCN, '$$FCN     ', $$NX, $$NY, $$NZ)
*ENDIF
*ELSE
      CALL Q8MXNR($$FCN, '$$FCN     ', $$NX, $$NY)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP65))
*SET(SRP65)
*SET(MODNAME='TABLE')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
*IF (L1TWOD)
      CALL Q8TBR2($$FCN, '$$FCN     ', $$NX, $$NY)
*ELSE
      CALL Q8TBR3($$FCN, '$$FCN     ', $$NX, $$NY, $$NZ)
*ENDIF
*ELSE
      CALL Q8TBNR($$FCN, '$$FCN     ', $$NX, $$NY)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP66))
*SET(SRP66)
*SET(MODNAME='SUMMARY')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
*IF (L1TWOD)
      CALL Q8SMR2($$FCN, '$$FCN     ', $$NX, $$NY)
*ELSE
      CALL Q8SMR3($$FCN, '$$FCN     ', $$NX, $$NY, $$NZ)
*ENDIF
*ELSE
      CALL Q8SMNR($$FCN, '$$FCN     ', $$NX, $$NY)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP67))
*SET(SRP67)
*SET(MODNAME='TABLE-EQUATIONS')
*INCLUDE(BEGINMODULE)
      CALL Q8TEMN
*ENDSET
*ENDIF
*IF($DEF(HVP68))
*SET(SRP68)
*SET(MODNAME='TABLE-PROBLEM')
*INCLUDE(BEGINMODULE)
      CALL Q8TPMN
*ENDSET
*ENDIF
*IF($DEF(HVP69))
*SET(SRP69)
*SET(MODNAME='TABLE-INDEXES')
*INCLUDE(BEGINMODULE)
      CALL Q8TIMN
*ENDSET
*ENDIF
*IF($DEF(HVP70))
*SET(SRP70)
*SET(MODNAME='TABLE-UNKNOWN')
*INCLUDE(BEGINMODULE)
      CALL Q8TUMN
*ENDSET
*ENDIF
*IF($DEF(HVP71))
*SET(SRP71)
*SET(MODNAME='PLOT-DOMAIN')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
      CALL Q8PDR2
*ELSE
      CALL Q8PDNR
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP72))
*SET(SRP72)
*SET(MODNAME='TABLE-DOMAIN')
*INCLUDE(BEGINMODULE)
      CALL Q8TDNR
*ENDSET
*ENDIF
*IF($DEF(HVP73))
*SET(SRP73)
*SET(MODNAME='TABLE BOUNDARY')
*INCLUDE(BEGINMODULE)
      CALL Q8TRNR
*ENDSET
*ENDIF
*IF($DEF(HVP74))
*SET(SRP74)
*SET(MODNAME='PLOT')
*INCLUDE(BEGINMODULE)
*IF (L1RECT)
      CALL Q8PLR2($$FCN, '$$FCN     ', $$NX, $$NY )
*ELSE
      CALL Q8PLNR($$FCN, '$$FCN     ', $$NX, $$NY )
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP75))
*SET(SRP75)
*SET(MODNAME='DATA')
*INCLUDE(BEGINMODULE)
*IF(L1TWOD)
*IF(L1RECT)
      CALL Q8DBR2($I1MEMY)
*ELSE
      CALL Q8DBNR($I1MEMY)
*ENDIF
*ELSE
      CALL Q8DBR3($I1MEMY)
*ENDIF
*ENDSET
*ENDIF
*IF($DEF(HVP5))
*APPEND(MDECLARE)
      COMMON / C7DFXX / R7DFXX($I7DFNF)
      COMMON / C7DFYY / R7DFYY($I7DFNF)
      LOGICAL EXTER
*ENDAPP
*ENDIF
*IF($DEF(HVP9))
*APPEND(MDECLARE)
      COMMON  / C7RMHS /  R7RMHX, R7RMHY, R7RMHZ
*ENDAPP
*ENDIF
*IF($DEF(HVP10))
*APPEND(MDECLARE)
       COMMON  / C6BLSU /   R6BLDM(32), L6BLIC, L6BLSU
       COMMON  / C7RBSU /   L7RBFL
       LOGICAL              L6BLIC, L6BLSU, L7RBFL
*ENDAPP
*ENDIF
*IF($DEF(HVP11))
*APPEND(MDECLARE)
      COMMON  / C6HBIV /  I6HBCF(4,$I0NGRX,$I0NGRY)
      COMMON  / C6HBRV /  R6HBCF(4,$I0NGRX,$I0NGRY)
      COMMON  / C7RHSU /   L7RHFL
      LOGICAL              L7RHFL
*ENDAPP
*ENDIF
*IF($DEF(HVP24))
*APPEND(MDECLARE)
      INTEGER I6MGWK($I6MGWK), UINIT
*ENDAPP
*ENDIF
*IF($DEF(HVP28))
*APPEND(MDECLARE)
      COMMON  / C35PNU /  I35PNU($I1NGRX,$I1NGRY)
*IF (L1RECT)
*ELSE
      COMMON  / C35GBN /  I35GBN($I1MBPT)
*ENDIF
*ENDAPP
*ENDIF
*IF($DEF(HVP30))
*APPEND(MDECLARE)
      INTEGER I3HHNU($I1NGRX,$I1NGRY)
      COMMON / C3HHNU / I3HHNU
*ENDAPP
*ENDIF
*IF($DEF(HVP32))
*APPEND(MDECLARE)
      COMMON /C3CGNE/ I3CGNE($I3CGDM)
      INTEGER         GIVOPT
      LOGICAL         USECRN
*ENDAPP
*ENDIF
*IF($DEF(HVP34))
*APPEND(MDECLARE)
*IF (L1HMBCNMIXD)
      COMMON /C3H0CM/ NUMUNK(4, $I1NGRX, $I1NGRY)
*ENDIF
*ENDAPP
*ENDIF
*IF($DEF(HVP35))
*APPEND(MDECLARE)
      COMMON /C3IHNU/ R3IHNU(4, $I1NGRX, $I1NGRY)
      COMMON /C3IHUN/ R3IHUN(4, $I1NGRX, $I1NGRY)
*ENDAPP
*ENDIF
*IF($DEF(HVP36))
*APPEND(MDECLARE)
      INTEGER DEGREE
*ENDAPP
*ENDIF
*IF($DEF(HVP48))
*APPEND(MDECLARE)
      COMMON / C5YSCO / I5YSCO($I1MNEQ)
*ENDAPP
*ENDIF
*IF($DEF(HVP55))
*APPEND(MDECLARE)
      COMMON  / C5ITPK /  RPARM(12),ZETA,CME,SME,FF,OMEGA,SPECR,BETAB,
     B                    IPARM(12),ITMAX,LEVEL,IADAPT,ICASE,IDGTS,
     C                              NBLACK,I5ITMT
      COMMON  / C5ITIW /  IWKSP($I1MNEQ)
*ENDAPP
*ENDIF
*IF($DEF(HVP75))
*APPEND(MDECLARE)
      COMMON  / C8DBTI /  R8DBTI(3)
*ENDAPP
*ENDIF
*IF (PPDEBUG)
*OPTION(LISTI=.TRUE.)
*OPTION(LISTO=.TRUE.)
*ENDIF
*OPTION(LFORT=.TRUE.)
*OPTION(L1TRIP=.FALSE.)
C     PROGRAM ELPK
*INCLUDE(INITOPT)
C============   PROBLEM DEFINITION INTERFACE
C
      COMMON  / C1RVPR /  R1CUXX, R1CUXY, R1CUYY, R1CCUX, R1CCUY,
     A                    R1CCCU, R1CUZZ, R1CUXZ, R1CUYZ, R1CCUZ,
     B                    R1UNQX, R1UNQY, R1UNQZ, R1UNQU
      COMMON  / C1IVPR /  I1NBND
      COMMON  / C1LVPR /  L1ARCC, L1CLKW, L1CRST, L1CSTB, L1CSTC,
     A                    L1DRCH, L1HMBC, L1HMEQ, L1HOLE, L1LAPL,
     B                    L1MIXD, L1NEUM, L1NUNQ, L1POIS, L1RECT,
     C                    L1SELF, L1TWOD
      LOGICAL             L1ARCC, L1CLKW, L1CRST, L1CSTB, L1CSTC,
     A                    L1DRCH, L1HMBC, L1HMEQ, L1HOLE, L1LAPL,
     B                    L1MIXD, L1NEUM, L1NUNQ, L1POIS, L1RECT,
     C                    L1SELF, L1TWOD
      COMMON  / C1LVBC /  L1PRDC, L1PRDX, L1PRDY, L1PRDZ
      LOGICAL             L1PRDC, L1PRDX, L1PRDY, L1PRDZ
      COMMON  / C1BCST /  I1BCST(4,$I0BCST)
      COMMON  / C1BCTY /  I1BCTY($I0BCTY)
      COMMON  / C1CFST /  I1CFST(10)
*IF(L1RECT)
*ELSE
C
C============   DISCRETE DOMAIN INTERFACE
C
      EXTERNAL            Q1BDRY
      COMMON  / C1BNGH /  I1BNGH($I0BNGH)
      COMMON  / C1BRNG /  R1BRNG(2,$I0BRNG)
      COMMON  / C1BGRD /  I1BGRD($I0BGRD)
      COMMON  / C1BPAR /  R1BPAR($I0BPAR)
      COMMON  / C1BPTY /  I1BPTY($I0BPTY)
      COMMON  / C1GRTY /  I1GRTY($I0GRTY,$I0GRT2)
      COMMON  / C1PECE /  I1PECE($I0PECE)
      COMMON  / C1XBND /  R1XBND($I0XBND)
      COMMON  / C1YBND /  R1YBND($I0YBND)
*ENDIF
      COMMON  / C1GRDX /  R1GRDX($I0GRDX)
      COMMON  / C1GRDY /  R1GRDY($I0GRDY)
*IF(L1TWOD)
*ELSE
      COMMON  / C1GRDZ /  R1GRDZ($I0GRDZ)
*ENDIF
      COMMON  / C1IVGR /  I1NGRX, I1NGRY, I1NGRZ, I1NBPT, I1MBPT,
     A                    I1PACK
      COMMON  / C1LVGR /  L1UNFG, L1UNFX, L1UNFY, L1UNFZ
      LOGICAL             L1UNFG, L1UNFX, L1UNFY, L1UNFZ
      COMMON  / C1RVGR /  R1AXGR, R1AYGR, R1AZGR, R1BXGR, R1BYGR,
     A                    R1BZGR, R1HXGR, R1HYGR, R1HZGR
*IF (HAVEDIS)
C
C============   DISCRETE OPERATOR INTERFACE
C
      COMMON  / C1BBBB /  R1BBBB($I0BBBB)
      COMMON  / C1COEF /  R1COEF($I0COEF,$I0COE2)
      COMMON  / C1IDCO /  I1IDCO($I0IDCO,$I0IDC2)
      COMMON  / C1IVDI /  I1NEQN, I1MNEQ, I1NCOE, I1MNCO
      COMMON  / C1LVDI /  L1SYMM
      LOGICAL             L1SYMM
C
C============   EQUATION/UNKNOWN REORDERING INTERFACE
C
      COMMON  / C1IVIN /  I1MEND, I1MUND
      COMMON  / C1LVIN /  L1ASIS, L1RDBL
      LOGICAL             L1ASIS, L1RDBL
      COMMON  / C1ENDX /  I1ENDX($I0ENDX)
      COMMON  / C1UNDX /  I1UNDX($I0UNDX)
C
C============   ALGEBRAIC EQUATION SOLUTION INTERFACE
C
*ENDIF
      COMMON  / C1IVSO /  I1MUNK
      COMMON  / C1LVSO /  L1UINI
      LOGICAL             L1UINI
      COMMON  / C1UNKN /  R1UNKN($I0UNKN)
C
C============   OTHER GLOBAL CONTROL VARIABLES
C
      COMMON  / C1IVCN /  I1LEVL, I1PAGE, I1INPT, I1OUTP, I1SCRA,
     A                    I1KWRK, I1KORD
      COMMON  / C1LVCN /  L1TIME, L1FATL, L1NEWD
      LOGICAL             L1TIME, L1FATL, L1NEWD
      COMMON  / C1RNRM /  R1NRM1, R1NRM2, R1NRMI
      COMMON              R1WORK($I0KWRK)
      COMMON  / C1RVBS /  R1BSTP($I0BSTP)
*IF(NEEDR1TABL)
      COMMON  / C1TABL /  R1TABL($I0TABL, $I0TAB2, $I0TAB3)
*ENDIF
      COMMON  / C0IVCN /  I0GROT, I0MODN, I0TIME
      INTEGER             I0GROT(6)
      COMMON  / C0LVCN /  L0HVDI, L0HVAN
      LOGICAL             L0HVDI, L0HVAN
*INCLUDE(GLOBAL)
*IF($DEF(EXTERNALS))
      EXTERNAL            $EXTERNALS
*ENDIF
*INCLUDE(DECLARE)
C
*IF (NOEXECUTION)
      STOP
*ENDIF
      I1INPT = I1MACH(1)
      I1OUTP = I1MACH(2)
      I1SCRA = 1
      I0TIME = 2
      PI     = 4.*ATAN(1.)
      R1EPSM = R1MACH(3)
*IF(L1TIME)
      CALL Q1TIME(R0BEGT)
*ENDIF
*DO(I=1,I1NBND)
      I1BCST(1,$I) = $LIST(I1BCST)
*ENDDO
*IF(L1RECT)
      R1AXGR = $LIST(AX)
      R1BXGR = $LIST(AX)
      R1AYGR = $LIST(AY)
      R1BYGR = $LIST(AY)
*IF(L1TWOD)
*ELSE
      R1AZGR = $LIST(AZ)
      R1BZGR = $LIST(AZ)
*ENDIF
      CALL Q0BCTP( $LIST(XROT),$LIST(XROT),$LIST(I1BCTY),$LIST(I1BCTY),
     A             $LIST(YROT),$LIST(YROT),$LIST(I1BCTY),$LIST(I1BCTY),
*IF(L1TWOD)
     B             0,0,0,0)
*ELSE
     C             $LIST(ZROT),$LIST(ZROT),$LIST(I1BCTY),$LIST(I1BCTY))
*ENDIF
*ELSE
      I1MBPT      = $I0MBPT
*DO (I=1,I1NBND)
      I1BCTY($I)   = $LIST(I1BCTY)
*ENDDO
*ENDIF
      CALL Q0INIT( $L1CLKW, $L1CRST, $L1CSTB, $L1CSTC,
     A             $L1DRCH, $L1HMBC, $L1HMEQ, $L1HOLE, $L1LAPL,
     B             $L1MIXD, $L1NEUM, $L1POIS, $L1RECT, $L1SELF,
     C             $L1TWOD, $I1NBND, $L1TIME, $I0UNDX,
     D             $I0ENDX, $I0MNCO, $I0MNEQ, $I0UNKN,
     E             $I0KWRK, $I1CF2D, $I1CF3D, $L1PRDC, $L1PRDX,
     F             $L1PRDY, $L1PRDZ )
*IF($L1CSTC)
*IF(L1TWOD)
      CALL Q1PCOE(0.0, 0.0, R1CUXX)
*ELSE
      CALL Q1PCOE(0.0, 0.0, 0.0, R1CUXX)
*ENDIF
*ENDIF
C
*IF(PLOTS)
      CALL PLOTS
*ENDIF
*INCLUDE(SRCALLS)
*IF(PLOTS)
      CALL PLOT (0.0, 0.0, 999)
*ENDIF
*IF (L1TIME)
*SET(MODNAME='TOTAL TIME')
      R0TBEG = R0BEGT
*INCLUDE(ENDMODULE)
      CALL Q0TIME
*ENDIF
      STOP
      END
*IF (L1TWOD)
      SUBROUTINE Q1PCOE(X, Y, R0CPDE)
*ELSE
      SUBROUTINE Q1PCOE(X, Y, Z, R0CPDE)
*ENDIF
C
C ======= DEFINE EQUATION COEFFICIENTS
C
*INCLUDE(GLOBAL)
*IF (L1TWOD)
      REAL            R0CPDE(6)
*ELSE
      REAL            R0CPDE(10)
*ENDIF
C
      R0CPDE( 1) = $CUXX
      R0CPDE( 2) = $CUXY
      R0CPDE( 3) = $CUYY
      R0CPDE( 4) = $CUX
      R0CPDE( 5) = $CUY
      R0CPDE( 6) = $CU
*IF(L1TWOD)
*ELSE
      R0CPDE( 7) = $CUZZ
      R0CPDE( 8) = $CUXZ
      R0CPDE( 9) = $CUYZ
      R0CPDE(10) = $CUZ
*ENDIF
C
      RETURN
      END
*IF (L1TWOD)
      REAL FUNCTION R1PRHS(X, Y)
*ELSE
      REAL FUNCTION R1PRHS(X, Y, Z)
*ENDIF
C
C ======= DEFINE THE RIGHT SIDE OF THE EQUATION
C
*INCLUDE(GLOBAL)
*IF($DEF(RMFCN))
      EXTERNAL            $RMFCN
*ENDIF
      R1PRHS = $PDERHS
*IF($DEF(RMPRHS))
      R1PRHS = R1PRHS - $RMPRHS
*ENDIF
C
      RETURN
      END
*IF ($L1TWOD)
      SUBROUTINE Q1BCOE(I0SIDE, X, Y, R0CBC)
*ELSE
      SUBROUTINE Q1BCOE(I0SIDE, X, Y, Z, R0CBC)
*ENDIF
C
C ======= DEFINE THE BOUNDARY CONDITIONS
C
*INCLUDE(GLOBAL)
*IF (L1TWOD)
      REAL                R0CBC(3)
*ELSE
      REAL                R0CBC(4)
*ENDIF
      COMMON  / C0IVCN /  I0GROT, I0MODN, I0TIME
      INTEGER             I0GROT(6)
C
*SET (LABEL=10000)
*SET (L=.TRUE.)
*DO (I=1,I1NBND)
*IF (L)
*SET (BGOTO='$LABEL')
*ELSE
*SET (BGOTO='$BGOTO,$LABEL')
*ENDIF
*SET (L=.FALSE.)
*ENDDO
*IF (L1RECT)
      I0BCND = I0GROT(I0SIDE)
*ELSE
      I0BCND = I0SIDE
*ENDIF
      GO TO ($BGOTO), I0BCND
*SET (LABEL=10000)
*DO (I=1,I1NBND)
$LABEL CONTINUE
      R0CBC(1) = $LIST(R0CBC)
      R0CBC(2) = $LIST(R0CBC)
      R0CBC(3) = $LIST(R0CBC)
*IF (L1TWOD)
*ELSE
      R0CBC(4) = $LIST(R0CBC)
*ENDIF
      GO TO 9999
C
*ENDDO
C
 9999 CONTINUE
      RETURN
      END
*IF ($L1TWOD)
      REAL FUNCTION R1BRHS(I0SIDE, X, Y)
*ELSE
      REAL FUNCTION R1BRHS(I0SIDE, X, Y, Z)
*ENDIF
C
C ======= DEFINE THE BOUNDARY CONDITIONS
C
*INCLUDE(GLOBAL)
      COMMON  / C0IVCN /  I0GROT, I0MODN, I0TIME
      INTEGER             I0GROT(6)
*IF($DEF(RMFCN))
      EXTERNAL            $RMFCN
*ENDIF
C
*SET (LABEL=10000)
*SET (L=.TRUE.)
*DO (I=1,I1NBND)
*IF (L)
*SET (BGOTO='$LABEL')
*ELSE
*SET (BGOTO='$BGOTO,$LABEL')
*ENDIF
*SET (L=.FALSE.)
*ENDDO
*IF (L1RECT)
      I0BCND = I0GROT(I0SIDE)
*ELSE
      I0BCND = I0SIDE
*ENDIF
      GO TO ($BGOTO), I0BCND
*SET (LABEL=10000)
*DO (I=1,I1NBND)
$LABEL CONTINUE
      R1BRHS = $LIST(R1BRHS)
      GO TO 9999
C
*ENDDO
C
 9999 CONTINUE
*IF($DEF(RMBRHS))
      R1BRHS = R1BRHS - $RMBRHS
*ENDIF
      RETURN
      END
*IF (L1RECT)
*ELSE
      SUBROUTINE Q1BDRY(R0PARM, X, Y, I0PECE)
C
C ======= DEFINE THE BOUNDARY PIECES
C
*INCLUDE(GLOBAL)
      GO TO ($BGOTO), I0PECE
*SET (LABEL=10000)
*DO (I=1,I1NBND)
$LABEL CONTINUE
$LIST(Q1BDRY)
      GO TO 9999
C
*ENDDO
 9999 RETURN
      END
*ENDIF
*IF($DEF(R0SOLV))
*IF(L1TWOD)
      REAL FUNCTION R0SOLV(IDERIV, X, Y)
*ELSE
      REAL FUNCTION R0SOLV(IDERIV, X, Y, Z)
*ENDIF
C
C ======= RETURN THE SOLUTION AT THE SPECIFIED POINT
C
      COMMON  / C1UNKN /  R1UNKN($I0UNKN)
*IF(NEEDR1TABL)
      COMMON  / C1TABL /  R1TABL($I0TABL, $I0TAB2, $I0TAB3)
*ENDIF
      COMMON  / C1IVCN /  I1LEVL, I1PAGE, I1INPT, I1OUTP, I1SCRA,
     A                    I1KWRK, I1KORD
      COMMON  / C1LVCN /  L1TIME, L1FATL, L1NEWD
      LOGICAL             L1TIME, L1FATL, L1NEWD
      COMMON  / C0IVCN /  I0GROT, I0MODN, I0TIME
      INTEGER             I0GROT(6)
      COMMON  / C0LVCN /  L0HVDI, L0HVAN
      LOGICAL             L0HVDI, L0HVAN
*IF($DEF(RMFCN))
      EXTERNAL            $RMFCN
*ENDIF
C
      IF (.NOT. L0HVAN)  CALL Q0ERPP(3)
*SET (LABEL=10000)
*SET (L=.TRUE.)
*SET (BGOTO='9999')
*DO (I=1,I0MODN)
*IF (L)
*SET (BGOTO='$LABEL')
*ELSE
*SET (BGOTO='$BGOTO,$LABEL')
*ENDIF
*SET (L=.FALSE.)
*ENDDO
      GO TO ($BGOTO), I0MODN
*SET (LABEL=10000)
*DO (I=1,I0MODN)
$LABEL CONTINUE
$LIST(R0SOLV)
      GO TO 9999
C
*ENDDO
C
 9999 CONTINUE
*IF($DEF(RMSOLV))
      R0SOLV = R0SOLV + $RMSOLV
*ENDIF
      L1NEWD = .FALSE.
      RETURN
      END
*ENDIF
*IF(L1TWOD)
*ELSE
      REAL FUNCTION UXX(X, Y, Z)
      UXX = R0SOLV(1, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UXY(X, Y, Z)
      UXY = R0SOLV(2, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UYY(X, Y, Z)
      UYY = R0SOLV(3, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UX(X, Y, Z)
      UX = R0SOLV(4, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UY(X, Y, Z)
      UY = R0SOLV(5, X, Y, Z)
      RETURN
      END
      REAL FUNCTION U(X, Y, Z)
      U = R0SOLV(6, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UZZ(X, Y, Z)
      UZZ = R0SOLV(7, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UXZ(X, Y, Z)
      UXZ = R0SOLV(8, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UYZ(X, Y, Z)
      UYZ = R0SOLV(9, X, Y, Z)
      RETURN
      END
      REAL FUNCTION UZ(X, Y, Z)
      UZ = R0SOLV(10, X, Y, Z)
      RETURN
      END
      REAL FUNCTION ERROR(X, Y, Z)
      ERROR = TRUE(X, Y, Z) - R0SOLV(6, X, Y, Z)
      RETURN
      END
      REAL FUNCTION RESIDU(X, Y, Z)
      RESIDU = R1RSR3(X, Y, Z)
      RETURN
      END
      REAL FUNCTION ZERO(X, Y, Z)
      ZERO = 0.0
      RETURN
      END
*ENDIF
*END
