ISCRUNCH
========

A program to compute the moment (Fourier) expansion of a parametric 
two-dimensional grid representation. The moment expansion is computed
at some critical surfaces, in general the first (non-singular) and last, 
and then interpolated across the grid. A constrained variational 
principle is applied to determine numerically the optimal parametric
angle that minimizes the width of the power spectrum.  at the first
non-singular and last radial surface. 


Input data are two rank-one grid arrays (xin1d, yin1d) of size
nt*ns, where nt is the number of poloidal points and ns the number
of radial surfaces. Indices first iterate over the poloidal nodes and
then over the radial surfaces: e.g. xin1d(k), k=(j-1)*nt + i, represents
the "x" points at the i-th poloidal node and j-th radial surface.

Output data are the COS and SIN radially dependent coefficients of "x" 
and "y".

Date: April 1 1999/Dec 19 2001

o KEYWORDS

Moment, Fourier, parametric representation, minimization of the power
spectrum width.

o LANGUAGE

f90

o PRECISION

8-byte reals and default (4 or 8 byte) integers

o PREREQUISITE

Blas and lapack libraries. 

o PLATFORM/OS

Tested on alpha/OSF1, Solaris 2, Linux (f90/f95 by NAG)

o CONTACT

A. Pletzer (pletzer@pppl.gov)

o  AUTHORS

S. P. Hirshman, R. Wieland, D. McCune. This portable and dynamically 
allocatable version by Alex Pletzer.

o REFERENCES

S. P. Hirshman and H K Meier, Phys Fluids 28, 1387 (1985)

o USAGE

      real*8, dimension(:), allocatable :: xin1d ! x grid coordinates
      real*8, dimension(:), allocatable :: yin1d ! y grid coordinates
      integer nt, ns                             ! poloidal and radial 
                                                 ! grid sizes
      real*8, dimension(:), allocatable :: xmc1d ! COS coefficients of x
      real*8, dimension(:), allocatable :: xms1d ! SIN coefficients of x
      real*8, dimension(:), allocatable :: ymc1d ! COS coefficients of y
      real*8, dimension(:), allocatable :: yms1d ! SIN coefficients of y
      integer ic1                                ! index of first
                                                 ! (non-singular) surface
      integer inc                                ! index of last surface
      integer imom                               ! 0:imom Fourier modes
      integer ier                                ! = 0 if successful

      integer imom1                              ! imom1 = imom+1 modes

      allocate( xin1d(nt*ns), yin1d(nt*ns) )
      allocate(xmc1d(imom1*ns), xms1d(imom1*ns))
      allocate(ymc1d(imom1*ns), yms1d(imom1*ns))


      CALL scriscrunch(xin1d, yin1d, nt, ns, 
     &              xmc1d, xms1d, ymc1d, yms1d,
     &              ic1,inc,imom,ier)


o INPUT/OUTPUT FILES

None

       
o BUGS/PROBLEMS/LIMITATIONS

Unknown.


o TEST PROGRAM AND REFERENCE OUTPUT

 
 INPUT GRID (2nd and last surface)
 
  XIN1D(2nd)   YIN1D(2nd)   XIN1D(last)  YIN1D(last)
    1.087324    -0.057063     0.723762    -0.570634
    1.090799    -0.058937     0.736473    -0.589372
    1.094438    -0.059882     0.754061    -0.598816
    1.098190    -0.059882     0.777532    -0.598816
    1.101998    -0.058937     0.807755    -0.589372
    1.105797    -0.057063     0.845298    -0.570634
    1.109523    -0.054290     0.890252    -0.542896
    1.113105    -0.050660     0.942044    -0.506597
    1.116475    -0.046231     0.999307    -0.462308
    1.119563    -0.041073     1.059813    -0.410728
    1.122304    -0.035267     1.120537    -0.352671
    1.124638    -0.028905     1.177848    -0.289052
    1.126512    -0.022087     1.227840    -0.220875
    1.127883    -0.014921     1.266767    -0.149214
    1.128719    -0.007520     1.291511    -0.075200
    1.129000     0.000000     1.300000     0.000000
    1.128719     0.007520     1.291511     0.075200
    1.127883     0.014921     1.266768     0.149214
    1.126512     0.022087     1.227840     0.220875
    1.124638     0.028905     1.177848     0.289052
    1.122304     0.035267     1.120537     0.352671
    1.119563     0.041073     1.059813     0.410728
    1.116475     0.046231     0.999307     0.462308
    1.113105     0.050660     0.942044     0.506597
    1.109523     0.054290     0.890252     0.542896
    1.105797     0.057063     0.845298     0.570634
    1.101998     0.058937     0.807755     0.589372
    1.098190     0.059882     0.777532     0.598816
    1.094438     0.059882     0.754061     0.598816
    1.090799     0.058937     0.736473     0.589372
    1.087324     0.057063     0.723762     0.570634
    1.084061     0.054290     0.714913     0.542896
    1.081049     0.050660     0.708989     0.506597
    1.078322     0.046231     0.705185     0.462308
    1.075908     0.041073     0.702848     0.410728
    1.073831     0.035267     0.701478     0.352671
    1.072109     0.028905     0.700715     0.289052
    1.070756     0.022087     0.700313     0.220875
    1.069783     0.014921     0.700113     0.149214
    1.069196     0.007520     0.700025     0.075200
    1.069000     0.000000     0.700000     0.000000
    1.069196    -0.007520     0.700025    -0.075200
    1.069783    -0.014921     0.700113    -0.149214
    1.070756    -0.022087     0.700313    -0.220875
    1.072109    -0.028905     0.700715    -0.289052
    1.073831    -0.035267     0.701478    -0.352671
    1.075908    -0.041073     0.702848    -0.410728
    1.078322    -0.046231     0.705185    -0.462308
    1.081049    -0.050660     0.708989    -0.506597
    1.084061    -0.054290     0.714913    -0.542896
    1.087324    -0.057063     0.723762    -0.570634
 
 ORDERING SURFACE POINTS
  Average elongation =    2.03467450191600     

 ITERATIONS    RMS ERROR    FORCE GRADIENT    <M>    m #'s <= ON

                  Fitting toroidal plane #   1
       1       4.642E-03       4.252E-03      4.94      15
     100       6.011E-04       4.363E-03      3.30      15
     200       2.538E-04       9.449E-04      2.21      15
     300       1.269E-04       3.734E-04      1.84      15
     400       5.533E-05       1.689E-04      1.74      15
     500       6.729E-05       8.061E-05      1.75      15
     600       8.024E-05       4.068E-05      1.77      15
     700       7.846E-05       3.229E-05      1.77      15
     800       7.472E-05       3.127E-05      1.76      15
     900       7.765E-05       3.578E-05      1.75      15
    1000       8.573E-05       4.332E-05      1.72      15
    1100       9.285E-05       5.532E-05      1.68      15
    1200       9.721E-05       7.132E-05      1.63      15
    1300       1.012E-04       9.310E-05      1.57      15
    1400       1.047E-04       1.231E-04      1.48      15
    1500       1.034E-04       1.609E-04      1.36      15

 COMPUTATIONAL TIME =    7.031E-01 SECONDS

 ANGLE CONSTRAINTS WERE APPLIED 
 BASED ON RM**2 + ZM**2 SPECTRUM WITH P =     4.00 AND Q =     1.00


c  mb  nb    RmncB       RmnsB       ZmncB       ZmnsB
    0   0  1.0976E+00  0.0000E+00 -1.4692E-03  0.0000E+00
    1   0  2.9696E-02  3.8535E-04  3.8535E-04  6.0462E-02
    2   0  1.5708E-03  8.6426E-04 -1.2845E-03 -1.5950E-04
    3   0  3.1086E-04 -3.1437E-04  2.6114E-04  4.3411E-04
    4   0 -2.0481E-04 -1.2084E-04  2.1752E-04 -1.2728E-04
    5   0 -1.9379E-05  1.6431E-04 -1.2902E-04 -9.6458E-05
    6   0  1.0558E-04 -1.8459E-05 -4.4981E-05  8.5913E-05
    7   0 -3.7015E-05 -6.8024E-05  6.6386E-05  1.5090E-05
    8   0 -3.8564E-05  4.0723E-05 -6.8322E-07 -4.5890E-05
    9   0  3.8545E-05  1.7779E-05 -3.2849E-05  8.8734E-06
   10   0  5.0209E-06 -3.2112E-05  1.3075E-05  2.0914E-05
   11   0 -2.5517E-05  4.4920E-06  1.2783E-05 -1.3818E-05
   12   0  7.4195E-06  1.7494E-05 -1.3589E-05 -5.5783E-06
   13   0  1.1805E-05 -1.0225E-05 -8.4646E-07  1.1655E-05
   14   0 -8.7945E-06 -5.4352E-06  9.4961E-06 -1.3527E-06
   15   0 -1.9167E-06  8.9014E-06 -3.0729E-06 -7.6435E-06
  At the end of descur, fsq =  1.034187741311299E-004
 ORDERING SURFACE POINTS
  Average elongation =    2.11049202667661     

 ITERATIONS    RMS ERROR    FORCE GRADIENT    <M>    m #'s <= ON

                  Fitting toroidal plane #   1
       1       4.508E-03       4.011E-03      3.52      15
     100       4.065E-04       3.063E-04      1.67      15
     200       6.601E-05       1.164E-04      1.17      15
     300       1.318E-05       2.240E-05      1.16      15
     352       6.168E-06       9.875E-06      1.16      15

 COMPUTATIONAL TIME =    8.594E-01 SECONDS

 ANGLE CONSTRAINTS WERE APPLIED 
 BASED ON RM**2 + ZM**2 SPECTRUM WITH P =     4.00 AND Q =     1.00


c  mb  nb    RmncB       RmnsB       ZmncB       ZmnsB
    0   0  1.0274E+00  0.0000E+00 -8.0091E-05  0.0000E+00
    1   0  1.7868E-01  8.9199E-05  8.9199E-05  3.5698E-01
    2   0  3.6034E-02  4.0806E-05 -3.5441E-05 -1.8377E-02
    3   0  9.0822E-04 -6.4263E-05  7.7779E-05 -2.9605E-04
    4   0  6.0848E-04 -2.7391E-05  5.8335E-06  1.7385E-03
    5   0  4.1080E-04  2.4308E-05 -2.4269E-05  3.5555E-05
    6   0 -8.9974E-05  3.0139E-06  3.2260E-06 -2.1615E-04
    7   0  4.7820E-06 -1.3188E-05  9.9859E-06  7.5990E-05
    8   0  4.4185E-05  1.7477E-06 -4.2492E-06  4.5824E-05
    9   0 -1.4675E-05  6.3495E-06 -3.9067E-06 -3.2052E-05
   10   0 -6.9888E-06 -1.8145E-06  3.5375E-06 -3.0077E-06
   11   0  1.0180E-05 -2.7117E-06  1.3044E-06  1.3444E-05
   12   0 -8.2869E-07  8.6638E-07 -1.7641E-06 -4.0095E-06
   13   0 -4.6622E-06  9.1258E-07 -4.8328E-07 -3.7557E-06
   14   0  6.6600E-07 -8.3740E-08  7.3147E-07  5.1341E-06
   15   0  1.9039E-06 -1.2815E-07  1.1961E-07  8.3754E-07
  At the end of descur, fsq =  6.168104920326876E-006
 ORDERING SURFACE POINTS
  Average elongation =    2.21317467301387     

 ITERATIONS    RMS ERROR    FORCE GRADIENT    <M>    m #'s <= ON

                  Fitting toroidal plane #   1
       1       4.678E-03       4.637E-03      2.91      15
     100       4.054E-04       4.171E-04      1.47      15
     200       9.123E-05       3.378E-05      1.32      15
     285       3.905E-05       9.887E-06      1.31      15

 COMPUTATIONAL TIME =    9.844E-01 SECONDS

 ANGLE CONSTRAINTS WERE APPLIED 
 BASED ON RM**2 + ZM**2 SPECTRUM WITH P =     4.00 AND Q =     1.00


c  mb  nb    RmncB       RmnsB       ZmncB       ZmnsB
    0   0  9.4014E-01  0.0000E+00  2.2729E-03  0.0000E+00
    1   0  2.6440E-01 -3.4082E-04 -3.4082E-04  5.3039E-01
    2   0  7.8742E-02 -1.2467E-03  1.9682E-03 -3.8464E-02
    3   0  4.4106E-03 -8.5103E-04  2.5978E-04 -1.4078E-03
    4   0 -2.1438E-06  1.4653E-05 -4.0129E-04  3.8333E-03
    5   0  1.2556E-03  4.9109E-05  1.1337E-04  2.5910E-04
    6   0  1.8054E-05 -8.4528E-05  1.0938E-04 -5.7876E-04
    7   0 -1.0243E-04  1.0086E-06 -7.7353E-05  1.7850E-04
    8   0  1.1432E-04  2.9587E-05 -3.3165E-08  1.6085E-04
    9   0  2.2976E-05 -1.4720E-05  3.0617E-05 -9.4427E-05
   10   0 -3.0866E-05 -1.3429E-05 -1.3220E-05 -9.4285E-06
   11   0  4.1665E-06  1.1327E-05 -2.3552E-07  3.9323E-05
   12   0  1.3534E-05  5.7118E-06  1.6665E-06 -1.7491E-05
   13   0 -2.4836E-06 -1.0879E-05 -2.9576E-06 -5.9297E-07
   14   0 -1.0061E-05  7.2060E-07  8.1189E-06  1.1310E-05
   15   0  6.1003E-06  1.1983E-05 -1.2371E-06 -1.5322E-05
  At the end of descur, fsq =  3.904686400075312E-005
 ORDERING SURFACE POINTS
  Average elongation =    2.25851437972348     

 ITERATIONS    RMS ERROR    FORCE GRADIENT    <M>    m #'s <= ON

                  Fitting toroidal plane #   1
       1       4.768E-03       4.962E-03      2.79      15
     100       3.120E-04       3.455E-04      1.39      15
     200       7.014E-05       1.587E-05      1.36      15
     232       4.832E-05       9.999E-06      1.36      15

 COMPUTATIONAL TIME =    1.078E+00 SECONDS

 ANGLE CONSTRAINTS WERE APPLIED 
 BASED ON RM**2 + ZM**2 SPECTRUM WITH P =     4.00 AND Q =     1.00


c  mb  nb    RmncB       RmnsB       ZmncB       ZmnsB
    0   0  9.0518E-01  0.0000E+00  2.8143E-03  0.0000E+00
    1   0  2.9208E-01 -4.9059E-04 -4.9059E-04  5.8707E-01
    2   0  9.5114E-02 -1.5184E-03  2.5106E-03 -4.7640E-02
    3   0  6.3850E-03 -1.1356E-03  2.8757E-04 -1.6173E-03
    4   0 -5.3258E-04 -6.2126E-05 -5.0114E-04  4.7885E-03
    5   0  1.6314E-03  8.4150E-05  1.6612E-04  2.9975E-04
    6   0  9.6590E-05 -9.2838E-05  1.2164E-04 -7.6171E-04
    7   0 -1.6522E-04 -2.0593E-05 -9.2282E-05  2.3926E-04
    8   0  1.5849E-04  3.5456E-05  7.6932E-06  2.2518E-04
    9   0  4.2472E-05 -9.1911E-06  2.8021E-05 -1.3116E-04
   10   0 -5.4859E-05 -2.0302E-05 -1.3948E-05 -1.8284E-05
   11   0  8.5172E-06  1.0860E-05  4.7796E-06  5.9931E-05
   12   0  2.6205E-05  9.6221E-06 -4.9753E-06 -1.9726E-05
   13   0 -1.0474E-05 -1.2205E-05 -1.2384E-06 -5.6538E-06
   14   0 -1.5669E-05  6.9801E-07  1.5302E-05  1.5276E-05
   15   0  1.3444E-05  1.2386E-05 -8.3176E-06 -1.5026E-05
  At the end of descur, fsq =  4.831631991201872E-005
 
 OUTPUT MOMENTS
 
 surface #           1
 
 m    X-COS      X-SIN      Z-COS      Z-SIN
 0  1.100000   0.000000   0.000000   0.000000
 1  0.000000   0.000000   0.000000   0.000000
 2  0.000000   0.000000   0.000000   0.000000
 3  0.000000   0.000000   0.000000   0.000000
 4  0.000000   0.000000   0.000000   0.000000
 5  0.000000   0.000000   0.000000   0.000000
 6  0.000000   0.000000   0.000000   0.000000
 7  0.000000   0.000000   0.000000   0.000000
 8  0.000000   0.000000   0.000000   0.000000
 9  0.000000   0.000000   0.000000   0.000000
10  0.000000   0.000000   0.000000   0.000000
11  0.000000   0.000000   0.000000   0.000000
12  0.000000   0.000000   0.000000   0.000000
13  0.000000   0.000000   0.000000   0.000000
14  0.000000   0.000000   0.000000   0.000000
15  0.000000   0.000000   0.000000   0.000000
 
 surface #           5
 
 m    X-COS      X-SIN      Z-COS      Z-SIN
 0  1.067869   0.000000  -0.001890   0.000000
 1  0.119494   0.000573   0.000738   0.239557
 2  0.015685   0.001036  -0.001493  -0.009407
 3  0.000393  -0.000225   0.000372   0.000466
 4  0.000402  -0.000220   0.000226   0.000983
 5  0.000081   0.000216  -0.000234  -0.000113
 6  0.000047   0.000023  -0.000036   0.000059
 7  0.000001  -0.000098   0.000104   0.000071
 8 -0.000016   0.000038  -0.000020  -0.000009
 9  0.000038   0.000034  -0.000039   0.000015
10  0.000015  -0.000037   0.000028   0.000015
11 -0.000021  -0.000003   0.000010  -0.000021
12  0.000003   0.000021  -0.000019  -0.000006
13  0.000010  -0.000008   0.000003   0.000006
14 -0.000006  -0.000008   0.000010  -0.000008
15 -0.000004   0.000006  -0.000009  -0.000007
 
 surface #          11
 
 m    X-COS      X-SIN      Z-COS      Z-SIN
 0  0.905179   0.000000   0.002814   0.000000
 1  0.292080  -0.000500  -0.000472   0.587073
 2  0.095114  -0.001525   0.002508  -0.047640
 3  0.006385  -0.001136   0.000287  -0.001617
 4 -0.000533  -0.000062  -0.000501   0.004789
 5  0.001631   0.000084   0.000166   0.000300
 6  0.000097  -0.000093   0.000121  -0.000762
 7 -0.000165  -0.000021  -0.000092   0.000239
 8  0.000158   0.000035   0.000008   0.000225
 9  0.000042  -0.000009   0.000028  -0.000131
10 -0.000055  -0.000020  -0.000014  -0.000018
11  0.000009   0.000011   0.000005   0.000060
12  0.000026   0.000010  -0.000005  -0.000020
13 -0.000010  -0.000012  -0.000001  -0.000006
14 -0.000016   0.000001   0.000015   0.000015
15  0.000013   0.000012  -0.000008  -0.000015
SUCCESSFUL END OF TEST DRIVE
