#
# FD stencils demo 
#
from rsf.proj import *
import sys
sys.path.append('../../PYUTIL')
import wplot
from steLOP import *
from DPTEST import *

# ------------------------------------------------------------
do3D = 'y'
doINV = 'n'
# ------------------------------------------------------------

par = dict(
    nx=25,  ox=0, dx=1.0,  lx='x', ux='',
    ny=11,  oy=0, dy=1.0,  ly='y', uy='',
    nz=15,  oz=0, dz=1.0,  lz='z', uz='',
    otype = "c",
    N = 4
    )
wplot.param(par)

# ------------------------------------------------------------
M = 2 # derivative order
N = 1 # half stencil

Flow('demoC',None,
    '''
    ../../CODE/STENCIL.x M=%d N=%d type=c verb=y
    '''%(M,N),stdout=0)

Flow('demoF',None,
    '''
    ../../CODE/STENCIL.x M=%d N=%d type=f verb=y
    '''%(M,N),stdout=0)

Flow('demoB',None,
    '''
    ../../CODE/STENCIL.x M=%d N=%d type=b verb=y
    '''%(M,N),stdout=0)

# ------------------------------------------------------------

Flow('s2D',None,
    '''
    spike nsp=1 mag=1 k1=8 k2=13
    n1=%(nz)d o1=%(oz)g d1=%(dz)g label1="" unit1=""
    n2=%(nx)d o2=%(ox)g d2=%(dx)g label2="" unit2=""
    '''%par)
Result('s2D',wplot.igrey2d('xll=1.9 wantscalebar=y',par))

if(do3D=='y'):
    Flow('s3D',None,
    '''
    spike nsp=1 mag=1 k1=8 k2=13 k3=6
    n1=%(nz)d o1=%(oz)g d1=%(dz)g label1="" unit1=""
    n2=%(nx)d o2=%(ox)g d2=%(dx)g label2="" unit2=""
    n3=%(ny)d o3=%(oy)g d3=%(dy)g label3="" unit3=""
    '''%par)
    Result('s3D',
        'byte gainpanel=a pclip=100|'+wplot.igrey3d('',par))

# ------------------------------------------------------------

Flow('f2D','s2D',
    '''
    ../../CODE/STEST2D.x M=%d N=%d type=c verb=y adj=n
    '''%(M,N))
Result('f2D',wplot.igrey2d('xll=1.9 wantscalebar=y',par))

if(do3D=='y'):
    Flow('f3D','s3D',
    '''
    ../../CODE/STEST3D.x M=%d N=%d type=c verb=y adj=n
    '''%(M,N))
Result('f3D','byte gainpanel=a pclip=100|'+wplot.igrey3d('',par))

# ------------------------------------------------------------
# ------------------------------------------------------------
# ------------------------------------------------------------
# ------------------------------------------------------------
S2D = ste2d()
S2D.FORW('s2D',   'S2Dfor')
S2D.ADJT('S2Dadj','S2Dfor')

D2D = DPTEST(S2D,['S2Dadj'],['S2Dfor'])           
D2D.RUN()

if(do3D=='y'):
    S3D = ste3d()
    S3D.FORW('s3D',   'S3Dfor')
    S3D.ADJT('S3Dadj','S3Dfor')
    
    D3D = DPTEST(S3D,['S3Dadj'],['S3Dfor'])           
    D3D.RUN()

End()
