[cig-commits] r4026 - geodyn/3D/MAG/trunk/testdir
wei at geodynamics.org
wei at geodynamics.org
Tue Jul 18 15:45:17 PDT 2006
Author: wei
Date: 2006-07-18 15:45:17 -0700 (Tue, 18 Jul 2006)
New Revision: 4026
Added:
geodyn/3D/MAG/trunk/testdir/magvol.pro
Log:
added magvol.pro, a interactive IDL procedure written by Peter Olson
Added: geodyn/3D/MAG/trunk/testdir/magvol.pro
===================================================================
--- geodyn/3D/MAG/trunk/testdir/magvol.pro 2006-07-18 21:55:28 UTC (rev 4025)
+++ geodyn/3D/MAG/trunk/testdir/magvol.pro 2006-07-18 22:45:17 UTC (rev 4026)
@@ -0,0 +1,1028 @@
+;PROCEDURE MAGVOL.PRO
+
+;AN INTERACTIVE IDL PROCEDURE TO DISPLAY VOLUME RESULTS FROM ROTATING CONVECTION,
+;MAGNETOCONVECTION & DYNAMO CALCULATIONS, WRITTEN BY P. OLSON
+;
+;USES g-files WRITTEN BY THE CODE MAG WRITTEN BY G.A.GLATZMAIER WITH
+;MODIFICATIONS BY U.CHRISTENSEN AND P. OLSON
+;
+;SOME LONGITUDINAL SYMMETRY MAY BE ASSUMED IN THE g-file.
+;
+;THIS VERSION USES MODIFIED IDL COLOR TABLES AND ASSUMES
+;FORMATTED OR UNFORMATTED INPUT
+;
+;THIS VERSION ASKS FOR .GIF BUT CREATES .JPG FILES ; IF OTHER
+;OUTPUT FILE FORMATS ARE REQUIRED, MODIFICATIONS OF "LABELOUT" ARE REQUIRED
+;
+;THIS VERSION ASSUMES X-WINDOW SCREEN GRAPHICS; FOR OTHER GRAPHICS DEVICES,
+;CHANGE THE SET_PLOT,'X' AND TVRD() COMMANDS ACCORDINGLY
+;
+;THIS PROCEDURE CREATES VOLUME-RENDERED IMAGES OF TEMPERATURE, HELICITY
+;THE Z-COMPONENT OF VORTICITY, KINETIC AND MAGNETIC ENERGY,
+;JOULE HEATING, WORK BY LORENTZ FORCES AND BUOYANCY FORCES
+;
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;SET UP X-WINDOW FOR COLOR DISPLAY
+SET_PLOT,'X'
+;SET DEVICE FOR COLOR on Mac
+DEVICE, RETAIN=2, DECOMPOSED=0
+
+;DEFINE THE VALUE OF PI:
+ PI= 3.1415926
+
+;ACCESS RGB-VALUES OF COLOR TABLE
+ COMMON COLORS,R_ORIG,G_ORIG,B_ORIG,R_CURR,G_CURR,B_CURR
+
+;READS IN DATA FILENAME.
+ INFILE=''
+ PRINT,'ENTER g-file NAME:'
+ READ,INFILE
+ PRINT,'ENTER g-file FORMAT; FORMATTED=1, UNFORMATTED=-1:'
+ READ,IFORM
+
+;OPEN DATA FILE AND READ PRELIMINARIES
+ OPENR, 1,INFILE ;OPEN FILE FOR READ
+ RUNID=' '
+ IF IFORM GE 1 THEN BEGIN
+ READF,1,RUNID ;IDENTIFYING HEADER: RUNID
+ READF,1,TIME,NN,NI,NJ,NGRAD,NGCOLAT,NGLON,NSYM ;GRID PARAMETERS
+ READF,1,RA,EK,PR,PM,RADRATIO ;CONTROL PARAMETERS
+ END
+ IF IFORM EQ 0 THEN BEGIN
+ READF,1,RUNID ;IDENTIFYING HEADER: RUNID
+ READF,1,TIME,SSCALE,VSCALE,BSCALE ;CONTROL PARAMETERS
+ READF,1,NN,NI,NJ,NGRAD,NGCOLAT,NGLON,NSYM ;GRID PARAMETERS
+ END
+ IF IFORM LE -1 THEN BEGIN
+ READF,1,RUNID
+ READU,1,TIME,NN,NI,NJ,NGRAD,NGCOLAT,NGLON,NSYM ;RECORDS & SYMMETRY
+ READU,1,RA,EK,PR,PM,RADRATIO ; DIMENSIONLESS PARAMETERS
+ END
+
+ PRINT,RUNID
+ RUNID=STRTRIM(RUNID)
+
+;NOTE: NSYM=N-FOLD SYMMETRY IN PHI
+;DEFINES ARRAY SIZES
+ NR=(NN+NGRAD-1)/NGRAD ;# RADIAL GRID POINTS
+ NT=(NI+NGCOLAT-1)/NGCOLAT ;# THETA GRID POINTS
+ NPFULL=(NJ+NGLON-1)/NGLON ;# TOTAL PHI GRID POINTS
+ NP=NPFULL/NSYM ;# PHI-POINTS IN DATA FILE
+ PI2NP = 2*PI/NPFULL
+
+;DECLARE COORDINATE ARRAYS
+ THETA = FLTARR(NT)
+ STHET = FLTARR(NT)
+ CTHET = FLTARR(NT)
+ PHI = FLTARR(NPFULL)
+ PHI3D = FLTARR(NPFULL,NT,NR)
+ TH3D = FLTARR(NPFULL,NT,NR)
+
+
+ ;read in array THETA of colatitudes of data points (radians):
+ IF IFORM GE 0 THEN READF,1,THETA
+ IF IFORM LE -1 THEN READU,1,THETA
+
+;create 3D array TH3D
+ FOR IT=0,NT-1 DO BEGIN
+ TH3D(*,IT,*)=THETA(IT)
+ ENDFOR
+
+;create arrays of sin(theta) and cos(theta)
+ STHET=SIN(THETA)
+ CTHET=COS(THETA)
+
+
+;create array PHI of longitudes of data points (in radians)
+ PHI=PI2NP*FINDGEN(NPFULL)
+
+
+;create phi array for three-d
+ FOR IP=0,NPFULL-1 DO BEGIN
+ PHI3D(IP,*,*)=PHI(IP)
+ ENDFOR
+
+
+;DIMENSION STATEMENTS FOR 2D AND 3D ARRAYS
+ R=FLTARR(NR) ;array of radii to spherical 2D surfaces
+
+ T1 =FLTARR(NP,NT) ;temperature on spherical 2D surface
+ VR1=FLTARR(NP,NT) ;radial velocity on spherical 2D surface
+ VT1=FLTARR(NP,NT) ;theta velocity on spherical 2D surface
+ VP1=FLTARR(NP,NT) ;phi velocity on spherical 2D surface
+ BR1=FLTARR(NP,NT) ;radial field on spherical 2D surface
+ BT1=FLTARR(NP,NT) ;theta field on spherical 2D surface
+ BP1=FLTARR(NP,NT) ;phi field on spherical 2D surface
+
+ R3D =FLTARR(NPFULL,NT,NR) ;3d radii in 3D shell
+
+ TPERT =FLTARR(NPFULL,NT,NR) ;perturbed temp in 3D shell
+ H =FLTARR(NPFULL,NT,NR) ;helicity in 3D shell
+ AZ=FLTARR(NPFULL,NT,NR) ;z angular velocity in 3D shell
+ VR=FLTARR(NPFULL,NT,NR) ;radial velocity in 3D shell
+ VT=FLTARR(NPFULL,NT,NR) ;theta velocity in 3D shell
+ VP=FLTARR(NPFULL,NT,NR) ;phi velocity in 3D shell
+ BR=FLTARR(NPFULL,NT,NR) ;radial field in 3D shell
+ BT=FLTARR(NPFULL,NT,NR) ;theta field in 3D shell
+ BP=FLTARR(NPFULL,NT,NR) ;phi field in 3D shell
+ WR=FLTARR(NPFULL,NT,NR) ;radial vorticity in 3D shell
+ WT=FLTARR(NPFULL,NT,NR) ;theta vorticity in 3D shell
+ WP=FLTARR(NPFULL,NT,NR) ;phi vorticity in 3D shell
+ WZ=FLTARR(NPFULL,NT,NR) ;Z vorticity in 3D shell
+ JR=FLTARR(NPFULL,NT,NR) ;radial current in 3D shell
+ JT=FLTARR(NPFULL,NT,NR) ;theta current in 3D shell
+ JP=FLTARR(NPFULL,NT,NR) ;phi current in 3D shell
+ WORK=FLTARR(NPFULL,NT,NR) ;work against Lorentz force in 3D shell
+ JOULE=FLTARR(NPFULL,NT,NR) ;joule heating in 3D shell
+ Q=FLTARR(NPFULL,NT,NR) ;heat advection in 3D shell
+ EMAG=FLTARR(NPFULL,NT,NR) ;magnetic energy in 3D shell
+ EKIN=FLTARR(NPFULL,NT,NR) ;kinetic energy in 3D shell
+
+ X=FLTARR(NPFULL,NT,NR) ;x-coordinates of grid points
+ Y=FLTARR(NPFULL,NT,NR) ;y-coordinates of grid points
+ Z=FLTARR(NPFULL,NT,NR) ;z-coordinates of grid points
+
+ TMEAN = FLTARR(NR) ; mean temperature as fct of radius
+
+
+;************************************************************************
+;LOOP READS IN DATA ARRAYS FROM FORTRAN DATAFILE INTO IDL ARRAYS.
+;************************************************************************
+ FOR IR=0,NR-1 DO BEGIN
+
+ IF IFORM GE 0 THEN BEGIN
+ READF,1, KC, R1
+ PRINT, IR,R1
+ R(IR)=R1
+ R3D(*,*,IR)=R1
+ READF,1,T1
+ READF,1,VR1
+ READF,1,VT1
+ READF,1,VP1
+ READF,1,BR1
+ READF,1,BT1
+ READF,1,BP1
+ END
+
+ IF IFORM LE -1 THEN BEGIN
+ READU,1, KC, R1
+ PRINT, IR,R1
+ R(IR)=R1
+ R3D(*,*,IR)=R1
+ READU,1,T1
+ READU,1,VR1
+ READU,1,VT1
+ READU,1,VP1
+ READU,1,BR1
+ READU,1,BT1
+ READU,1,BP1
+ END
+
+; ;MEAN TEMPERATURE (APPROXIMATE)
+
+ TM=0.0
+ SM=0.0
+ FOR IT=0,NT-1 DO BEGIN
+ TM=TM+TOTAL(T1(*,IT))*STHET(IT)
+ SM=SM+STHET(IT)
+ ENDFOR
+ TMEAN(IR)=TM/(SM*NP)
+
+; ;MAKES 3D SHELL ARRAYS FROM
+; ;2D SPHERICAL SURFACE ARRAYS:
+
+ FOR J=0,NP-1 DO BEGIN
+ FOR NS=1,NSYM DO BEGIN
+ JNS=(NS-1)*NP+J
+ TPERT(JNS,*,IR) = T1(J,*)-TMEAN(IR)
+ VR(JNS,*,IR)= VR1(J,*)
+ VT(JNS,*,IR)= VT1(J,*)
+ VP(JNS,*,IR)= VP1(J,*)
+ BR(JNS,*,IR)= BR1(J,*)
+ BT(JNS,*,IR)= BT1(J,*)
+ BP(JNS,*,IR)= BP1(J,*)
+
+ ENDFOR
+ ENDFOR
+ ENDFOR
+;***********************************************************************
+;END OF LOOP
+;***********************************************************************
+
+CLOSE,1 ;CLOSE DATA FILE
+
+
+;NON-DIMENSIONALIZES RADII VALUES SUCH THAT R_CMB = 1.0
+ RADTOP=R(0)
+ R=R/RADTOP
+ RSCALE=RADTOP-R(NR-1)
+ R3D=R3D/RADTOP
+
+;FORM ANGULAR VELOCITY
+ AZ=VP/(R3D*SIN(TH3D))
+
+;FORM ADVECTED HEAT (PRODUCTION OF KE BY BUOYANCY)
+ Q=VR*TPERT
+
+;FORM KINETIC ENERGY DENSITY
+ EKIN=0.5*(VR*VR + VT*VT + VP*VP)
+
+;FORM MAGNETIC ENERGY DENSITY
+ EMAG=0.5*(BR*BR + BT*BT + BP*BP)
+
+;FORM VORTICITY VECTOR COMPONENTS
+
+ WP = (SHIFT(VT,0,0,-1)-SHIFT(VT,0,0,1))/$
+ (SHIFT(R3D,0,0,-1)-SHIFT(R3D,0,0,1))$
+ + VT/R3D $
+ - (SHIFT(VR,0,-1,0)-SHIFT(VR,0,1,0))/$
+ (R3D*(SHIFT(TH3D,0,-1,0)-SHIFT(TH3D,0,1,0)))
+
+ WT = 0.5*(SHIFT(VR,-1,0,0)-SHIFT(VR,1,0,0))/$
+ (R3D*SIN(TH3D)*PI2NP)$
+ - (SHIFT(VP,0,0,-1)-SHIFT(VP,0,0,1))/$
+ (SHIFT(R3D,0,0,-1)-SHIFT(R3D,0,0,1))$
+ - VP/R3D
+ WR = (SHIFT(VP,0,-1,0)-SHIFT(VP,0,1,0))/$
+ (R3D*(SHIFT(TH3D,0,-1,0)-SHIFT(TH3D,0,1,0)))$
+ + COS(TH3D)*VP/(R3D*SIN(TH3D)) $
+ - 0.5*(SHIFT(VT,-1,0,0)-SHIFT(VT,1,0,0))/$
+ (R3D*SIN(TH3D)*PI2NP)
+
+ WR(*,0,*)=WR(*,1,*) & WR(*,NT-1,*)=WR(*,NT-2,*)
+ WT(*,*,0)=WT(*,*,1) & WT(*,*,NR-1)=WT(*,*,NR-2)
+ WP(*,*,0)=WP(*,*,1) & WP(*,*,NR-1)=WP(*,*,NR-2)
+
+;FORM Z-VORTICITY
+ WZ = WR*COS(TH3D) - WT*SIN(TH3D)
+
+;FORM HELICITY
+ H = WR*VR + WT*VT + WP*VP
+
+;FORM CURRENT VECTOR COMPONENTS
+
+ JP = (SHIFT(BT,0,0,-1)-SHIFT(BT,0,0,1))/$
+ (SHIFT(R3D,0,0,-1)-SHIFT(R3D,0,0,1))$
+ + BT/R3D $
+ - (SHIFT(BR,0,-1,0)-SHIFT(BR,0,1,0))/$
+ (R3D*(SHIFT(TH3D,0,-1,0)-SHIFT(TH3D,0,1,0)))
+
+ JT = 0.5*(SHIFT(BR,-1,0,0)-SHIFT(BR,1,0,0))/$
+ (R3D*SIN(TH3D)*PI2NP)$
+ - (SHIFT(BP,0,0,-1)-SHIFT(BP,0,0,1))/$
+ (SHIFT(R3D,0,0,-1)-SHIFT(R3D,0,0,1))$
+ - BP/R3D
+ JR = (SHIFT(BP,0,-1,0)-SHIFT(BP,0,1,0))/$
+ (R3D*(SHIFT(TH3D,0,-1,0)-SHIFT(TH3D,0,1,0)))$
+ + COS(TH3D)*BP/(R3D*SIN(TH3D)) $
+ - 0.5*(SHIFT(BT,-1,0,0)-SHIFT(BT,1,0,0))/$
+ (R3D*SIN(TH3D)*PI2NP)
+
+ JR(*,0,*)=JR(*,1,*) & JR(*,NT-1,*)=JR(*,NT-2,*)
+ JT(*,*,0)=JT(*,*,1) & JT(*,*,NR-1)=JT(*,*,NR-2)
+ JP(*,*,0)=JP(*,*,1) & JP(*,*,NR-1)=JP(*,*,NR-2)
+
+;FORM JOULE HEATING
+ JOULE = JP*JP + JT*JT + JR*JR
+
+;FORM LORENTZ WORK
+ WORK=VR*(BT*JP-JT*BP) - VT*(BR*JP-JR*BP) + VP*(BR*JT-JR*BT)
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; RE-GRID FROM (R,TH,PHI) TO (X,Y,Z)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;FORM NORMALIZED, SHIFTED X,Y,Z-COORDINATE ARRAYS
+ Z=(1.+R3D*COS(TH3D))/2.
+ X=(1.+R3D*SIN(TH3D)*COS(PHI3D))/2.
+ Y=(1.+R3D*SIN(TH3D)*SIN(PHI3D))/2.
+
+;DEFINE REGULAR CARTESIAN ARRAYS FOR RENDERING
+PRINT,'INPUT IMAGE GRID SIZE, ODD (35=NOMINAL; 75=HIGHRES):'
+READ,NGRID
+
+PRINT,'INPUT SMOOTHING FACTOR, ODD (3=NOMINAL; 5=HIGHRES):'
+READ,NSM
+
+
+;SPECIFY DO LOOP ENDINGS
+ IMAX=NGRID-1
+ JMAX=NGRID-1
+ KMAX=NGRID-1
+;INITIALIZE CARTESIAN VARIABLE ARRAYS
+ QGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ AZGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ TPGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ WZGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ HGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ WKGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ JGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ KEGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+ MEGRID=REPLICATE(0,NGRID,NGRID,NGRID)
+
+
+;INITIALIZE CARTESIAN COUNTER
+ COUNT=REPLICATE(0,NGRID,NGRID,NGRID)
+
+;NOW BEGIN BIG, UGLY DO LOOP TO FIND AVERAGE VALUES IN CARTESIAN BOXES
+;FIRST DEFINE AMPLIFICATION FACTORS FOR TEMP
+C=1000
+;BEGIN DO LOOP
+ FOR IR=0, NR-1 DO BEGIN
+ FOR IT=0, NT-1 DO BEGIN
+ FOR IP=0, NPFULL-1 DO BEGIN
+ I=ROUND(X(IP,IT,IR)*IMAX)
+ J=ROUND(Y(IP,IT,IR)*JMAX)
+ K=ROUND(Z(IP,IT,IR)*KMAX)
+;ADD VALUES FROM SPHERICAL POINTS INTO THE CARTESIAN POINT
+ QGRID(I,J,K)=(COUNT(I,J,K)*QGRID(I,J,K)+C*Q(IP,IT,IR))/(COUNT(I,J,K)+1)
+ AZGRID(I,J,K)=(COUNT(I,J,K)*AZGRID(I,J,K)+AZ(IP,IT,IR))/(COUNT(I,J,K)+1)
+ TPGRID(I,J,K)=(COUNT(I,J,K)*TPGRID(I,J,K)+C*TPERT(IP,IT,IR))/(COUNT(I,J,K)+1)
+ WZGRID(I,J,K)=(COUNT(I,J,K)*WZGRID(I,J,K)+WZ(IP,IT,IR))/(COUNT(I,J,K)+1)
+ HGRID(I,J,K)=(COUNT(I,J,K)*HGRID(I,J,K)+H(IP,IT,IR))/(COUNT(I,J,K)+1)
+ WKGRID(I,J,K)=(COUNT(I,J,K)*WKGRID(I,J,K)+WORK(IP,IT,IR))/(COUNT(I,J,K)+1)
+ KEGRID(I,J,K)=(COUNT(I,J,K)*KEGRID(I,J,K)+EKIN(IP,IT,IR))/(COUNT(I,J,K)+1)
+ MEGRID(I,J,K)=(COUNT(I,J,K)*MEGRID(I,J,K)+C*EMAG(IP,IT,IR))/(COUNT(I,J,K)+1)
+ JGRID(I,J,K)=(COUNT(I,J,K)*JGRID(I,J,K)+JOULE(IP,IT,IR))/(COUNT(I,J,K)+1)
+
+;UPDATE COUNTER
+ COUNT(I,J,K)=COUNT(I,J,K)+1
+ ENDFOR
+ ENDFOR
+ ENDFOR
+
+;SMOOTH SOME ARRAYS
+
+ WZGRID=SMOOTH(WZGRID,NSM)
+ WKGRID=SMOOTH(WKGRID,NSM)
+ KEGRID=SMOOTH(KEGRID,NSM)
+ MEGRID=SMOOTH(MEGRID,NSM)
+ TPGRID=SMOOTH(TPGRID,NSM)
+ QGRID=SMOOTH(QGRID,NSM)
+ HGRID=SMOOTH(HGRID,NSM+2)
+ JGRID=SMOOTH(JGRID,NSM)
+ AZGRID=SMOOTH(AZGRID,NSM)
+
+;FIND EXTREME VALUES
+ EPS=0.000001
+ QMAX=MAX(ABS(QGRID))+EPS
+ TPMAX=MAX(ABS(TPGRID))+EPS
+ WMAX=MAX(ABS(WZGRID))+EPS
+ HMAX=MAX(ABS(HGRID))+EPS
+ WKMAX=MAX(ABS(WKGRID))+EPS
+ KEMAX=MAX(ABS(KEGRID))+EPS
+ MEMAX=MAX(ABS(MEGRID))+EPS
+ JUMAX=MAX(ABS(JGRID))+EPS
+ AMAX=MAX(ABS(AZGRID))+EPS
+
+;RE-NORMALIZE ARRAYS
+ QGRID=QGRID/QMAX
+ AZGRID=AZGRID/AMAX
+ TPGRID=TPGRID/TPMAX
+ WZGRID=WZGRID/WMAX
+ HGRID=HGRID/HMAX
+ WKGRID=WKGRID/WKMAX
+ KEGRID=KEGRID/KEMAX
+ MEGRID=MEGRID/MEMAX
+ JGRID=JGRID/JUMAX
+
+
+;CREATE INNER CORE SPHERE
+ SPHERE=FLTARR(NGRID,NGRID,NGRID)
+;DEFINE CENTER GRID POINT
+ CN=IMAX/2
+;DEFINE NESTED SPHERES
+ FOR X=0,IMAX DO BEGIN
+ FOR Y=0,JMAX DO BEGIN
+ FOR Z=0,KMAX DO SPHERE[X,Y,Z]=$
+ SQRT((X-CN)^2 + (Y-CN)^2 + (Z-CN)^2)
+ ENDFOR
+ ENDFOR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;COLOR AND WINDOW SIZE INFORMATION
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ CTABLE2=39 ; DEFAULT COLOR TABLE
+ LOADCT,CTABLE2
+ BWCOL=255
+ EQUCOL=255
+
+;SPECIFY IMAGE DEFAULT COLOR RANGES (FOR COLOR TABLE 39)
+ COLDLOW=20
+ COLDHI=130
+ HOTLOW=253
+ HOTHI=170
+ ICLOW=140
+ ICHI=200
+ OCLOW=10
+ OCHI=60
+
+ XDIM=18.0
+ YDIM=24.0
+ IGIFPS=0
+
+;SPECIFY LIGHTING DIRECTION
+ LIGHTDIR=[0,0,1]
+
+;** WINDOW SIZE IN PIXELS (ALSO SIZE OF GIF FILE)
+ XWINDOW=600
+ YWINDOW=600
+ SCWINDOW=1.4
+ XWIND=XWINDOW*SCWINDOW
+ YWIND=YWINDOW*SCWINDOW
+
+
+;*** Normalized coordinates
+ XY1=[ 0.5/XDIM,12./YDIM, 8.5/XDIM,20./YDIM] & XT1=4.5/XDIM & YT1=20.2/YDIM
+ XY2=[ 9.5/XDIM,12./YDIM,17.5/XDIM,20./YDIM] & XT2=13.5/XDIM & YT2=20.2/YDIM
+ XY3=[ 0.5/XDIM, 2./YDIM, 8.5/XDIM,10./YDIM] & XT3=4.5/XDIM & YT3=10.2/YDIM
+ XY4=[ 9.5/XDIM, 2./YDIM,17.5/XDIM,10./YDIM] & XT4=13.5/XDIM & YT4=10.2/YDIM
+ XS1=[ 3./XDIM,11./YDIM, 7.5/XDIM,20./YDIM] & XTS1=5.0/XDIM & YTS1=20.2/YDIM
+ XS2=[11./XDIM,11./YDIM,15.5/XDIM,20./YDIM] & XTS2=13./XDIM & YTS2=YTS1
+ XS3=[ 3./XDIM, 0.5/YDIM, 7.5/XDIM,9.5/YDIM] & XTS3=XTS1 & YTS3=9.7/YDIM
+ XS4=[11./XDIM, 0.5/YDIM,15.5/XDIM,9.5/YDIM] & XTS4=XTS2 & YTS4=YTS3
+ XC1=[1.5/XDIM,12./YDIM,17./XDIM,20./YDIM]
+ XC2=[1.5/XDIM, 1.5/YDIM,17./XDIM,9.5/YDIM]
+
+;*************************************************************************
+;************** HERE THE PLOTTING MENU STARTS **************************
+;*************************************************************************
+
+LABEL0: PRINT, 'ENTER OPTION: STOP=-1; PERT TEMP=1; Z-VORT=2; HELICITY=3'
+ PRINT, 'ADVECTED HEAT=4; JOULE HEAT=5; LORENTZ WORK=6'
+ PRINT, 'KINETIC ENERGY=7; MAGNETIC ENERGY=8'
+ PRINT, 'KE & ME=9; ANGULAR VELOCITY=10;
+ PRINT, 'WINDOW=11; LIGHTS=12; COLOR & BACKGROUND=13; GIF=22:'
+ READ,IOPTION
+
+ IF (IOPTION GE 1 AND IOPTION LE 10) THEN BEGIN
+ WINDOW,0,xsize=XWIND,ysize=YWIND,title='GRAPHIC WINDOW'
+ !P.THICK=2
+ !P.NOERASE=1
+ !P.FONT=0
+ ENDIF
+
+ CASE IOPTION OF
+ -1: GOTO, LABEL99
+ 0: GOTO, LABEL0
+ 1: GOTO, LABEL1
+ 2: GOTO, LABEL2
+ 3: GOTO, LABEL3
+ 4: GOTO, LABEL4
+ 5: GOTO, LABEL5
+ 6: GOTO, LABEL6
+ 7: GOTO, LABEL7
+ 8: GOTO, LABEL8
+ 9: GOTO, LABEL9
+ 10: GOTO, LABEL10
+ 11: GOTO, LABEL11
+ 12: GOTO, LABEL12
+ 13: GOTO, LABEL13
+ 22: GOTO, LABEL22
+ ELSE: GOTO, LABEL0
+ ENDCASE
+
+
+
+LABEL11: PRINT, FORMAT='("WINDOW SCALE FACTOR? CURRENT=",F7.3)',SCWINDOW
+ READ, SCWINDOW
+ XWIND=XWINDOW*SCWINDOW & YWIND=YWINDOW*SCWINDOW
+ GOTO, LABEL0
+
+LABEL12: PRINT, FORMAT='("LIGHTING DIRECTION CURRENT=",3F3.0)',LIGHTDIR
+ READ, XLIGHT,YLIGHT,ZLIGHT
+ LIGHTDIR=[XLIGHT,YLIGHT,ZLIGHT]
+ GOTO, LABEL0
+
+
+LABEL13: PRINT,' ENTER IMAGE: COLOR=1, BLACK&WHITE=0'
+ READ, LCOLOR
+ PRINT,' ENTER BACKGROUND: BLACK=0, WHITE=1'
+ READ, BACKCOL
+ PRINT,' ENTER TEXT COLOR: BLACK=0, WHITE=1'
+ READ, TXTCOL
+
+ IF (LCOLOR EQ 1) THEN BEGIN
+ CTABLE2=39
+ ;COLOR RANGES (FOR COLOR TABLE 39)
+ COLDLOW=20
+ COLDHI=130
+ HOTLOW=253
+ HOTHI=170
+ ICLOW=140
+ ICHI=200
+ OCLOW=10
+ OCHI=60
+ ENDIF
+
+ IF (LCOLOR EQ 0) THEN BEGIN
+ CTABLE2=0
+ ;B&W RANGES (FOR COLOR TABLE 0)
+ COLDLOW=0
+ COLDHI=150
+ HOTLOW=100
+ HOTHI=250
+ ICLOW=170
+ ICHI=230
+ OCLOW=225
+ OCHI=250
+ ENDIF
+
+ LOADCT,CTABLE2
+
+ IF (BACKCOL EQ 0) THEN BEGIN ;BLACK BACKGROUND
+ R_CURR(000)= 0 & G_CURR(000)= 0 & B_CURR(000)= 0
+ TVLCT,R_CURR,G_CURR,B_CURR
+ EQUCOL=255 ;WHITE FOR EQUATOR
+ BWCOL=TXTCOL*254 + 1 ; WHITE OR BLACK TEXT COLOR
+ ENDIF
+
+ IF (BACKCOL EQ 1) THEN BEGIN ;WHITE BACKGROUND
+ R_CURR(000)=255 & G_CURR(000)=255 & B_CURR(000)=255
+ TVLCT,R_CURR,G_CURR,B_CURR
+ EQUCOL=255 ; WHITE FOR EQUATOR
+ BWCOL=TXTCOL*254 + 1 ; WHITE OR BLACK FOR TEXT
+ ENDIF
+
+ GOTO,LABEL0
+
+
+; *************************************************************************
+; *************** PLOTTING OF VOLUME SURFACES *********************
+; *************************************************************************
+
+
+;;;;;;;;;;;;;;;;;
+; RENDER VOLUME SURFACES
+;;;;;;;;;;;;;;;;;;
+
+
+
+;RENDER TEMPERATURE HERE:
+
+LABEL1: PRINT, 'ENTER FIRST PERTURBATION TEMPERATURE, -1<TP<1: '
+ READ,TPSURF
+ PRINT, 'ENTER SECOND PERTURBATION TEMPERATURE, -1<TP<1:'
+ READ,TPSURFA
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+;DISPLAY TPGRID IMAGE
+ SHADE_VOLUME,TPGRID,TPSURF,VERT1,POLY1
+ SHADE_VOLUME,TPGRID,TPSURFA,VERT1A,POLY1A
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;LOAD INTO Z BUFFER
+ SET_PLOT,'Z'
+;FIRST EMPTY Z BUFFER
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ TPIMAG=POLYSHADE(VERT1,POLY1,/T3D)
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ TPIMAGA=POLYSHADE(VERT1A,POLY1A,/T3D)
+ SET_SHADING,VALUES=[ICLOW,ICHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+; PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+
+;ADD ANNOTATION
+ TPTITLE='TEMPERATURE PERTURBATION'
+ XYOUTS,0.5,20.5/YDIM,TPTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPALY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF TEMP PERT IMAGE
+ GOTO,LABEL0
+
+
+
+;RENDER VORTICITY HERE:
+
+LABEL2: PRINT, 'ENTER FIRST Z-VORTICITY SURFACE, -1<WZ<1:'
+ READ,WZSURF
+ PRINT, 'ENTER SECOND Z-VORTICITY SURFACE, -1<WZ<1:'
+ READ,WZSURFA
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+
+;DISPLAY WZGRID IMAGE HERE
+ SHADE_VOLUME,WZGRID,WZSURF,VERT2,POLY2
+ SHADE_VOLUME,WZGRID,WZSURFA,VERT2A,POLY2A
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ WZIMAG=POLYSHADE(VERT2,POLY2,/T3D)
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ WZIMAGA=POLYSHADE(VERT2A,POLY2A,/T3D)
+ SET_SHADING,VALUES=[ICLOW,ICHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+
+;ADD ANNOTATION
+ WZTITLE='VORTICITY'
+ XYOUTS,0.5,20.5/YDIM,WZTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF VORTICITY IMAGE
+ GOTO,LABEL0
+
+
+;RENDER HELICITY HERE
+
+LABEL3: PRINT, 'ENTER FIRST HELICITY SURFACE, -1<H<1:'
+ READ,HSURF
+ PRINT, 'ENTER SECOND HELICITY SURFACE, -1<H<1:'
+ READ,HSURFA
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+
+;DISPLAY HGRID IMAGE HERE
+ SHADE_VOLUME,HGRID,HSURF,VERT3,POLY3
+ SHADE_VOLUME,HGRID,HSURFA,VERT3A,POLY3A
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.0*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ HIMAG=POLYSHADE(VERT3,POLY3,/T3D)
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ HIMAGA=POLYSHADE(VERT3A,POLY3A,/T3D)
+ SET_SHADING,VALUES=[ICLOW,ICHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+;ADD ANNOTATION
+ HTITLE='HELICITY'
+ XYOUTS,0.5,20.5/YDIM,HTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF HELICITY IMAGE
+ GOTO,LABEL0
+
+
+
+;RENDER HEAT ADVECTION HERE
+
+LABEL4: PRINT, 'ENTER HEAT ADVECTION, 0<Q<1:'
+ READ,QSURF
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+
+;DISPLAY QGRID IMAGE HERE
+ SHADE_VOLUME,QGRID,QSURF,VERT4,POLY4
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.0*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ QIMAG=POLYSHADE(VERT4,POLY4,/T3D)
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+;ADD ANNOTATION
+ QTITLE='ADVECTED HEAT'
+ XYOUTS,0.5,20.5/YDIM,QTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF ENERGY IMAGE
+ GOTO,LABEL0
+
+
+
+;RENDER JOULE HEATING HERE
+
+LABEL5: PRINT, 'ENTER JOULE HEATING SURFACE, 0<J<1:'
+ READ,JSURF
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+
+;DISPLAY JGRID IMAGE HERE
+ SHADE_VOLUME,JGRID,JSURF,VERT5,POLY5
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.0*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ JIMAG=POLYSHADE(VERT5,POLY5,/T3D)
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+;ADD ANNOTATION
+ JTITLE='JOULE HEATING'
+ XYOUTS,0.5,20.5/YDIM,JTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF JOULE IMAGE
+ GOTO,LABEL0
+
+
+
+;RENDER LORENTZ WORK HERE
+
+LABEL6: PRINT, 'ENTER WORK SURFACE, 0<WK<1:'
+ READ,WKSURF
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+;DISPLAY WKGRID IMAGE HERE
+ SHADE_VOLUME,WKGRID,WKSURF,VERT6,POLY6
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ WKIMAG=POLYSHADE(VERT6,POLY6,/T3D)
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+
+;ADD ANNOTATION
+ WKTITLE='WORK AGAINST LORENTZ FORCE'
+ XYOUTS,0.5,20.5/YDIM,WKTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF WORK IMAGE
+ GOTO,LABEL0
+
+
+;RENDER KINETIC ENERGY HERE:
+
+LABEL7: PRINT, 'ENTER KE SURFACE, 0<KE<1:'
+ READ,KESURF
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+
+;DISPLAY WKGRID IMAGE HERE
+ SHADE_VOLUME,KEGRID,KESURF,VERT7,POLY7
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ KEIMAG=POLYSHADE(VERT7,POLY7,/T3D)
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+
+;ADD ANNOTATION
+ KETITLE='KINETIC ENERGY DENSITY'
+ XYOUTS,0.5,20.5/YDIM,KETITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF KE IMAGE
+ GOTO,LABEL0
+
+
+;RENDER MAGNETIC ENERGY HERE:
+
+LABEL8: PRINT, 'ENTER MAGNETIC ENERGY SURFACE, 0<ME<1:'
+ READ,MESURF
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+
+;DISPLAY MEGRID IMAGE HERE
+ SHADE_VOLUME,MEGRID,MESURF,VERT8,POLY8
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ MEIMAG=POLYSHADE(VERT8,POLY8,/T3D)
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+
+;ADD ANNOTATION
+ METITLE='MAGNETIC ENERGY DENSITY'
+ XYOUTS,0.5,20.5/YDIM,METITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF ME IMAGE
+ GOTO,LABEL0
+
+;RENDER MAGNETIC & KINETIC ENERGY HERE:
+
+LABEL9: PRINT, 'ENTER MAGNETIC ENERGY SURFACE, 0<ME<1:'
+ READ,MESURF
+ PRINT, 'ENTER KINETIC ENERGY SURFACE, 0<KE<1:'
+ READ,KESURF
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+
+;DISPLAY MEGRID and KEGRID IMAGE HERE (USE OLD ARRAYS)
+ SHADE_VOLUME,MEGRID,MESURF,VERT8,POLY8
+ SHADE_VOLUME,KEGRID,KESURF,VERT7,POLY7
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ MEIMAG=POLYSHADE(VERT8,POLY8,/T3D)
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ KEIMAG=POLYSHADE(VERT7,POLY7,/T3D)
+ SET_SHADING,VALUES=[ICLOW,ICHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+
+;ADD ANNOTATION
+ MKTITLE='MAGNETIC AND KINETIC ENERGIES'
+ XYOUTS,0.5,20.5/YDIM,MKTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF KE&ME IMAGE
+ GOTO,LABEL0
+
+
+;RENDER ANGULAR VELOCITY HERE:
+
+LABEL10: PRINT, 'AZ(MAX)=', MAX(AZGRID), ' AZ(MIN)=', MIN(AZGRID)
+ PRINT, 'ENTER FIRST ANGULAR VELOCITY SURFACE, -1<AZ<1:'
+ READ,AZSURF
+ PRINT, 'ENTER SECOND ANGULAR VELOCITY SURFACE, -1<AZ<1:'
+ READ,AZSURFA
+ PRINT, 'ENTER X-AXIS ROTATION IN DEGREES (DEFAULT=30):'
+ READ,XROT
+
+ LOADCT,CTABLE2
+;DISPLAY AZGRID IMAGE HERE
+ SHADE_VOLUME,AZGRID,AZSURF,VERT10,POLY10
+ SHADE_VOLUME,AZGRID,AZSURFA,VERT10A,POLY10A
+ SHADE_VOLUME,SPHERE,0.35*CN,VERTS,POLYS
+ SHADE_VOLUME,SPHERE,1.00*CN,VERTSA,POLYSA,LOW=1
+ SCALE3,XRANGE=[0,IMAX],YRANGE=[0,JMAX],ZRANGE=[0,KMAX],AX=XROT
+;OPEN Z BUFFER
+ SET_PLOT,'Z'
+;CLEAR Z BUFFER CONTENTS
+ ERASE
+ DEVICE,SET_RESOLUTION=[850,850]
+ SET_SHADING,VALUES=[COLDLOW,COLDHI],LIGHT=LIGHTDIR
+ AZIMAG=POLYSHADE(VERT10,POLY10,/T3D)
+ SET_SHADING,VALUES=[HOTLOW,HOTHI],LIGHT=LIGHTDIR
+ AZIMAGA=POLYSHADE(VERT10A,POLY10A,/T3D)
+ SET_SHADING,VALUES=[ICLOW,ICHI],LIGHT=LIGHTDIR
+ SPIMAG=POLYSHADE(VERTS,POLYS,/T3D)
+ SET_SHADING,VALUES=[OCLOW,OCHI],LIGHT=LIGHTDIR
+ SPIMAGA=POLYSHADE(VERTSA,POLYSA,/T3D)
+
+;PLOT OUTER RADIUS
+ CONTOUR,SPHERE(*,*,CN),/OVERPLOT,/T3D,ZVALUE=0.5,LEVELS=[CN],$
+ /NOCLIP,COLOR=EQUCOL
+;ADD ANNOTATION
+ AZTITLE='ANGULAR VELOCITY'
+ XYOUTS,0.5,20.5/YDIM,AZTITLE,/NORM,SIZE=2,ALIGNMENT=0.5,COLOR=BWCOL
+ XYOUTS,0.5,3.5/YDIM,RUNID,/NORM,SIZE=1.4,ALIGNMENT=0.5,COLOR=BWCOL
+ IMAGE=TVRD()
+;DISPLAY IMAGE ON SCREEN
+ SET_PLOT,'X'
+ TVSCL,IMAGE
+;END OF ANGULAR VELOCITY IMAGE
+ GOTO,LABEL0
+
+
+;**************************************************************************
+;********* OPTION FOR CREATING GIF_FILE ***********************
+;**************************************************************************
+
+LABEL22:
+OUTFILE=''
+PRINT,"ENTER GIF FILE NAME:"
+ READ,OUTFILE
+;READS A 24-BIT SCREEN IMAGE AND CONVERTS TO JPEG
+;(IDL NO LONGER SUPPORTS GIF)
+ AJPEG=TVRD(TRUE=3)
+ WRITE_JPEG,OUTFILE,AJPEG,TRUE=3
+ GOTO,LABEL0
+
+
+ DEVICE,/CLOSE
+ SET_PLOT,'X'
+
+
+
+;***********************************************************************
+
+LABEL99: !P.MULTI=0 ;RETURN TO ONE PLOT PER PAGE
+;ENDS PROCEDURE MAGVOL
+ END
More information about the cig-commits
mailing list