[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