#### import the simple module from the paraview
from paraview.simple import *
#### disable automatic camera reset on 'Show'
paraview.simple._DisableFirstRenderCameraReset()

# create a new 'VisItNek5000Reader'
VisItNek5000Reader1 = VisItNek5000Reader(FileName='/cluster/scratch/pcorso/nek_Re2100_newInflow/allInstF/stnInst.nek5000')
VisItNek5000Reader1.Meshes = ['mesh']
VisItNek5000Reader1.PointArrays = ['pressure','velocity']

SetActiveSource(VisItNek5000Reader1)

gradInst = GradientOfUnstructuredDataSet(Input=VisItNek5000Reader1)
gradInst.ScalarArray = ['POINTS', 'velocity']
gradInst.ResultArrayName = 'Gradients1'

SetActiveSource(gradInst)

print "Gradients done"

# get active view
# renderView1 = GetActiveViewOrCreate('RenderView')
# uncomment following to set a specific view size
# renderView1.ViewSize = [1032, 399]

# show data in view
# VisItNek5000Reader1_Display = Show(VisItNek5000Reader1, renderView1)
# trace defaults for the display properties.
# VisItNek5000Reader1_Display.Representation = 'Outline'
#VisItNek5000Reader1_Display.AmbientColor = [0.0, 0.0, 0.0]
#VisItNek5000Reader1_Display.ColorArrayName = [None, '']
#VisItNek5000Reader1Display.GlyphType = 'Arrow'
#VisItNek5000Reader1Display.CubeAxesColor = [0.0, 0.0, 0.0]
#VisItNek5000Reader1_Display.ScalarOpacityUnitDistance = 0.0014000092831692186

velOff = Calculator(Input=gradInst)
velOff.ResultArrayName = 'velocityOff'
velOff.Function = 'velocity_X*velocity_Y*iHat + velocity_X*velocity_Z*jHat + velocity_Y*velocity_Z*kHat'

SetActiveSource(velOff)

print "VelOff done"

calcSqSinst = Calculator(Input=velOff)
calcSqSinst.ResultArrayName = 'SqNormSinst'
calcSqSinst.Function = '4*(Gradients1_0^2+2*(1/2*(Gradients1_1+Gradients1_3))^2+2*(1/2*(Gradients1_2+Gradients1_6))^2+2*(1/2*(Gradients1_5+Gradients1_7))^2+Gradients1_4^2+Gradients1_8^2)'

SetActiveSource(calcSqSinst)

print "Inst gradients done"

calcSqSxx = Calculator(Input=calcSqSinst)
calcSqSxx.ResultArrayName = 'Sinst_XX'
calcSqSxx.Function = 'Gradients1_0'

SetActiveSource(calcSqSxx)

print "Sxx done"

calcSqSxy = Calculator(Input=calcSqSxx)
calcSqSxy.ResultArrayName = 'Sinst_XY'
calcSqSxy.Function = '(1/2*(Gradients1_1+Gradients1_3))'

SetActiveSource(calcSqSxy)

print "Sxy done"

calcSqSxz = Calculator(Input=calcSqSxy)
calcSqSxz.ResultArrayName = 'Sinst_XZ'
calcSqSxz.Function = '(1/2*(Gradients1_2+Gradients1_6))'

SetActiveSource(calcSqSxz)

print "Sxz done" 

calcSqSyy = Calculator(Input=calcSqSxz)
calcSqSyy.ResultArrayName = 'Sinst_YY'
calcSqSyy.Function = 'Gradients1_4'

SetActiveSource(calcSqSyy)

print "Syy done"

calcSqSyz = Calculator(Input=calcSqSyy)
calcSqSyz.ResultArrayName = 'Sinst_YZ'
calcSqSyz.Function = '(1/2*(Gradients1_5+Gradients1_7))'

SetActiveSource(calcSqSyz)

print "Syz done"

calcSqSzz = Calculator(Input=calcSqSyz)
calcSqSzz.ResultArrayName = 'Sinst_ZZ'
calcSqSzz.Function = 'Gradients1_8'

SetActiveSource(calcSqSzz)

print "Szz done"

temporalStat = TemporalStatistics(Input=calcSqSzz)
temporalStat.ComputeMinimum = 0
temporalStat.ComputeMaximum = 0
temporalStat.ComputeStandardDeviation = 0

SetActiveSource(temporalStat)

print "Temporal stastistics done"

slice1 = Slice(Input=temporalStat)
slice1.SliceType = 'Plane'
slice1.SliceOffsetValues = [0.0]
slice1.SliceType.Origin = [-0.9578917746932955, -0.778772098232473, 3.750692805789275]
slice1.SliceType.Normal = [0.8385608217394656, -0.5314718814268357, 0.11980562380895057]

SetActiveSource(slice1)

print "Slice done"
#mergeBlock1 = MergeBlocks(Input=temporalStat)

#SetActiveSource(mergeBlock1)

#print "Merger of blocks done"

# save data
SaveData('/cluster/scratch/pcorso/nek_Re2100_newInflow/allInstF/RANSfromDNS_Avg.e', proxy=slice1 )
#writer = CreateWriter("/cluster/scratch/pcorso/nek_Re2100/mean_only_highRes/stenosis/Re_2100/mean_only/allInst/NSfromDNS.vtm",temporalStat)
#writer.UpdatePipeline()

print "Data saved"

# # hide data in view
# Hide(calcepsSGS, renderView1)

# # create a new 'Calculator'
# calcRxx = Calculator(Input=temporalStat)
# calcRxx.ResultArrayName = 'Rxx'
# calcRxx.Function = 'velocity_stddev_X^2'

# # set active source
# SetActiveSource(calcRxx)

# # hide data in view
# Hide(temporalStat, renderView1)

# # create a new 'Calculator'
# calcRyy = Calculator(Input=calcRxx)
# calcRyy.ResultArrayName = 'Ryy'
# calcRyy.Function = 'velocity_stddev_Y^2'

# # set active source
# SetAct:iveSource(calcRyy)

# # hide data in view
# Hide(calcRxx, renderView1)

# # create a new 'Calculator'
# calcRzz = Calculator(Input=calcRyy)
# calcRzz.ResultArrayName = 'Rzz'
# calcRzz.Function = 'velocity_stddev_Z^2'

# # set active source
# SetActiveSource(calcRzz)

# # hide data in view
# Hide(calcRyy, renderView1)

# # create a new 'Calculator'
# calcRxy = Calculator(Input=calcRzz)
# calcRxy.ResultArrayName = 'Rxy'
# calcRxy.Function = 'velOff_average_X-velocity_average_X*velocity_average_Y'

# # set active source
# SetActiveSource(calcRxy)

# # hide data in view
# Hide(calcRzz, renderView1)

# # create a new 'Calculator'
# calcRxz = Calculator(Input=calcRxy)
# calcRxz.ResultArrayName = 'Rxz'
# calcRxz.Function = 'velOff_average_Y-velocity_average_X*velocity_average_Z'

# # set active source
# SetActiveSource(calcRxz)

# # hide data in view
# Hide(calcRxy, renderView1)

# # create a new 'Calculator'
# calcRyz = Calculator(Input=calcRxz)
# calcRyz.ResultArrayName = 'Ryz'
# calcRyz.Function = 'velOff_average_Z-velocity_average_Y*velocity_average_Z'

# # set active source
# SetActiveSource(calcRyz)

# # hide data in view
# Hide(calcRxz, renderView1)

# # create a new 'Calculator'
# calcLNH = Calculator(Input=calcRyz)
# calcLNH.ResultArrayName = 'LNH'
# calcLNH.Function = '(velocity_average_X*Vorticity_average_X+velocity_average_Y*Vorticity_average_Y+velocity_average_Z*Vorticity_average_Z)/(mag(Vorticity_average)*mag(velocity_average))'

# # set active source
# SetActiveSource(calcLNH)

# # hide data in view
# Hide(calcRyz, renderView1)

# # create a new 'Calculator'
# calcTKE = Calculator(Input=calcLNH)
# calcTKE.ResultArrayName = 'TKE'
# calcTKE.Function = '1/2*(Rxx+Ryy+Rzz)'

# # set active source
# SetActiveSource(calcTKE)

# # hide data in view
# Hide(calcLNH, renderView1)

# # create a new 'Calculator'
# calcMKE = Calculator(Input=calcTKE)
# calcMKE.ResultArrayName = 'MKE'
# calcMKE.Function = '1/2*(velocity_average_X^2+velocity_average_Y^2+velocity_average_Z^2)'

# # set active source
# SetActiveSource(calcMKE)

# # hide data in view
# Hide(calcTKE, renderView1)

# # create a new 'Calculator'
# calcEnRatio = Calculator(Input=calcMKE)
# calcEnRatio.ResultArrayName = 'TKE/MKE'
# calcEnRatio.Function = 'TKE/MKE'

# # set active source
# SetActiveSource(calcEnRatio)

# # hide data in view
# Hide(calcMKE, renderView1)

# # create a new 'Calculator'
# calcMagVel = Calculator(Input=calcEnRatio)
# calcMagVel.ResultArrayName = 'MagMeanVel'
# calcMagVel.Function = 'mag(velocity_average)'

# # set active source
# SetActiveSource(calcMagVel)

# # hide data in view
# Hide(calcEnRatio, renderView1)

# # create a new 'Gradient Of Unstructured DataSet'
# gradMean = GradientOfUnstructuredDataSet(Input=calcMagVel)
# gradMean.ResultArrayName = 'GradientsMean'
# gradMean.FasterApproximation = 1
# gradMean.ComputeDivergence = 1
# gradMean.ComputeVorticity = 1
# gradMean.ComputeQCriterion = 1
# gradMean.ScalarArray = ['POINTS', 'velocity_average']

# # set active source
# SetActiveSource(gradMean)

# # hide data in view
# Hide(calcMagVel, renderView1)

# # create a new 'Calculator'
# calcmeanSxy = Calculator(Input=gradMean)
# calcmeanSxy.ResultArrayName = 'meanStress_XY'
# calcmeanSxy.Function = '1/2*(GradientsMean_1+GradientsMean_3)'

# # set active source
# SetActiveSource(calcmeanSxy)

# # hide data in view
# Hide(gradMean, renderView1)

# # create a new 'Calculator'
# calcmeanSxz = Calculator(Input=calcmeanSxy)
# calcmeanSxz.ResultArrayName = 'meanStress_XZ'
# calcmeanSxz.Function = '1/2*(GradientsMean_2+GradientsMean_6)'

# # set active source
# SetActiveSource(calcmeanSxz)

# # hide data in view
# Hide(calcmeanSxy, renderView1)

# # create a new 'Calculator'
# calcmeanSyz = Calculator(Input=calcmeanSxz)
# calcmeanSyz.ResultArrayName = 'meanStress_YZ'
# calcmeanSyz.Function = '1/2*(GradientsMean_5+GradientsMean_7)'

# # set active source
# SetActiveSource(calcmeanSyz)

# # hide data in view
# Hide(calcmeanSxz, renderView1)

# # create a new 'Calculator'
# calcNormMeanS = Calculator(Input=calcmeanSyz)
# calcNormMeanS.ResultArrayName = 'normMeanStress'
# calcNormMeanS.Function = 'sqrt(GradientsMean_0^2+2*meanStress_XY^2+2*meanStress_XZ^2+2*meanStress_YZ^2+GradientsMean_4^2+GradientsMean_8^2)'

# # set active source
# SetActiveSource(calcNormMeanS)

# # hide data in view
# Hide(calcmeanSyz, renderView1)

# # create a new 'Calculator'
# calcmeanSPa = Calculator(Input=calcNormMeanS)
# calcmeanSPa.ResultArrayName = 'meanStressPa'
# calcmeanSPa.Function = '1200*4.85e-6*normMeanStress'

# # set active source
# SetActiveSource(calcmeanSPa)

# # hide data in view
# Hide(calcNormMeanS, renderView1)

# # create a new 'Calculator'
# calcinstS = Calculator(Input=calcmeanSPa)
# calcinstS.ResultArrayName = 'instStress'
# calcinstS.Function = 'sqrt((1200*4.85e-6)^2*SqNormSinst_average)'

# # set active source
# SetActiveSource(calcinstS)

# # hide data in view
# Hide(calcmeanSPa, renderView1)

# # create a new 'Calculator'
# calcSgsS = Calculator(Input=calcinstS)
# calcSgsS.ResultArrayName = 'SgsStress'
# calcSgsS.Function = 'sqrt(1200^2*4.85e-6*epsilonSGSInst_average)'

# # set active source
# SetActiveSource(calcSgsS)

# # hide data in view
# Hide(calcinstS, renderView1)

# # create a new 'Calculator'
# calcTotS = Calculator(Input=calcSgsS)
# calcTotS.ResultArrayName = 'totStress'
# calcTotS.Function = 'meanStressPa+instStress+SgsStress'

# # set active source
# SetActiveSource(calcTotS)

# # hide data in view
# Hide(calcSgsS, renderView1)
