Welcome to Summer-2008 IDL Domination.

Hosted by Justin Moore
Directed by Hayden Porter
Partnered by Ameer Armaly and Sean Wilson

Date
Activities
Monday 08.04.2008

cluster --

BEHOLD MY CREATION

muahaha

Saturday 08.02.2008 Came in on Saturday to work on the Cluster -- got the second node installed and I took pictures/nodes along the way, so that when I document it will come easier -- I also wrote up a huge document about the steps that are missing from the Microwulf documentation... so look for that.
Friday 08.01.2008

cluster workings - I wired up power/reset buttons to an 8 port dip switch on a breadboard on top of the cluster until I get a little box to add some buttons to it and clean it up.

I also cleaned up the wiring a great deal - so it's ready to go hardware wise, except maybe a KVM.

Thursday 07.31.2008 Cluster workings (: -- HUGE page coming up on this -- I'll be putting it on my blog, and then I'll link to it here - I've got a few more things to do to get it going.
Wednesday 07.30.2008

Worked on the Mathematics of the problem - found an empirical solution, and then Dr. Porter converted it into a solution that would 'make sense.' Sadly, his is even closer than mine... damnit. :<|

Bear with me, there are a lot of images here -- I was refining my empirical solution --, I'll point out later when Dr. Porter and I are battling solutions.

The next four images are my empirical tests -- increasing by a multiplicative factor of pi.
transfer function tests

transfer function tests

transfer function tests

transfer function tests

transfer function tests

This is where I find out there is a limit to my empiricism -- I multiplied by factor of 30 because it appeared to be getting better the more I increased this factor... Eh not so much.
transfer function tests

My test of remapping to this function.
transfer function tests

Porter's test of remapping to this function.It's more correct, BLAH!
transfer function tests

My Test -- pretty good...
transfer function tests

Porter's test.. BLAH ----- AGAIN! He's only marginally better, but whatever.... he won't shhhh about winning the battle -- even using my OWN lingo --, "dominating me." He wouldn't have gotten it without me giving him something to start with !!!

transfer function tests

OKOK, so he wins the battle - I don't know if we'll actually implement the fix here -- but here's what it entails. We were having serious problems in that when we used a function/times and use a Fourier Transform to use this data with the Transfer Function data that we have, especially when times got over 1. After this point, there was not even remote matching of functions.. it was like it wouldn't even notice it.

So , I decided to try and normalize the time values - keeping everything else the same between a value of -1 and 1. OK, so we got some results... What about from -.5 to .5.

It turns out, my best effort normalization range was formulated by the following mathematica command:

y = 12;
t2 = Table[N[k/ (3 y pi )], {k, -y, y, 1}] , which produces something in the range of -0.106103 to 0.106103

Porter's recommendation is:

f = Table[t/24, {t, 0, x - 1, stepsize}]
x = 24;
t = (2 pi ) * f / x - max(f)/(x 2), which produces something in the range of -0.125446 to 0.125446

Again, we don't know if we can actually use this information because the transfer functions are at discrete, non-normalized locations and have to be incorporated in the calculation.

Either way though, it was fun to 'fix' a 20 year old bug. (:

I'll attach the mathematica notebook, though be forewarned that it takes a while to run for many times.... :p The Java implementation is much quicker.

The Mathematica Notebook [ NOTE - I haven't run it in a while, mostly I was using it to generate the right values that I could pass into the following Java Integration Driver Test Program I wrote -- because the Java implementation was so much faster. Early on I tested the two and the evaluated to the same thing, so I knew that the Java version was working properly, at least according to our understanding of the problem and our implementation of our understanding of the problem in Mathematica. ]

The Java Driver Test Program (requires access to JavaWave)

Tuesday 07.29.2008

Today I decided to play around with the Fourier Transfer Functions to see if I could figure out the problem we're having with amplitude decay as well as other curious differences.

I have some interesting results to report, we've got some serious bug in the translation of the function/time --> frequency/L space. Check out these images. (this is the plot of coming BACK from freq/L -> func/time

In these plots, the white line is the original plot, and the blue is the synthesized return value.

You'll notice that in this first plot, it's pretty dead on, but then the amplitudes decay over the length of the interval. Notice also that the interval ends at 0.

weirdplot1

In this Case, you can see that when I have the values go up towards the end, the amplitude decay that was visible in the first mage is no longer clearly visible. However, now the lower end of the teeth is increasingly inaccurate. Weird.

weirdplot2

Now, ideally these two plots would match up exactly, but that would require an infinite number of frequencies, when we're only using some ~140.

Eh, I also re-seated the heatsink on the top right node of the cluster today, and it appears to be stable! weeeee. Now, I can finish that project up as well.

Oh, and I found a great new tool for taking screenshots on Windows. It pains me so much to stop using alt+prt_screen and then windows key+r then mspaint then ctrl+v then save as then png then filename and done. Now all I have to do is double click. WOW. Anyway -- here's the program - it's called Cropper.

Monday 07.28.2008

Bug Monday - Fixed the EPS output, rigged it up so the drag quality resets properly, and disabled turning off elevation shading. Animation pausing in the biggest "bug" / "feature lack" there is left.

Got a workout in postscript output files today, mm.

Friday 07.25.2008 Worked on some bugs in the visualizer. See the bugs page for more details.
Thursday 07.24.2008

Created a Mathematica implementation of the Fourier Transforms to test the Java version for errors. We're running into an interesting defect at 24 hrs.

Tomorrow we will try to increase the resolution and check for the same defects. In the source creation wizard we only allow for piecewise linear functions, so the accuracy should be higher than what we have here, in which we create a function which starts and stops at zero between 0-1 and on retransforming back to the function we are maxing at .86. Weird.

Sean didn't get a chance to own my visualizer -- but no doubt that's coming too.

Wednesday 07.23.2008

I completed the tasks that I outlined yesterday to be completed today.

I added some additional features from Dr. Fanning's xplot into the fsc_surface plot, or what I've constructed from it (:

We've got some numerical integration errors somewhere, so I'm probably going to be assigned to that tomorrow, and that will be fun!! (:

Also, I'm sure Sean will reliably break my plotgraph visualizer so that I have to fix some more bugs. (: that's a good thing.

Tuesday 07.22.2008

OK, so i successfully moved the spherical plots into the same window as the surface plane/mountain plots.

now i am currently working to get the line plot in there in the same fashion, and i'm going to use Dr. Fanning's xplot as a guide for what I want/need to do. We are extremely close to being able to plot an atmospheric response, which should make for a SWEET animated video. That should be tomorrow by the looks of it -- we'll see.

Tomorrow's agenda:

  • Correct / modify line plots so that they work properly inside the same window (not allowed to rotate it)
  • Allow for the switching back and forth of surface plots // get the menus going properly so that each plot's options are available when that particular plot is visible.
Monday 07.21.2008

It's July 21st. JEEZ.

Anyway, I've been working hard today and after consulting the message board post I originally completed last Thursday, there is now new life in the spherical surface plot arena.

I've now compiled a beta animation for use. You can check it out here --> Spherical Surface Plot Animation

Created the BUGS page --> BUGS_PAGE

Friday 07.18.2008 Missed, out of town
Thursday 07.17.2008

Those plots were trouble!

At the end of the day Thursday I did manage to find a few resources, and I hoped I would have some responses on the google message boards when I returned on Monday (I'm writing this on Monday)

Wednesday 07.16.2008

WEEEEEEEE ANIMATION.

added scale option - so if you don't want the scale of the axis to automatically update, like in the above animation, it will take the min/min of the entire dataset and set the axis to those values for you.

Spherical surface plots are a bit of a struggle... Hopefully I can knock em out by tomorrow.

Tuesday 07.15.2008

Today I will be working on animating David Fanning's fsc_surface. For the first hour or so, I prettied up / readied our IDLWave application. See the screenshot below:

idlwave-7-15-2008

Tomorrow I will make an animation of the PlotGraph object for N2 gas for Density -- it will look fun!

Monday 07.14.2008

Struggled throughout the day with the problem of * in array dimensional randomness! Here's the thread I started, and paulv helped me out with the "execute" command, which is cautioned for use -- but it appears to work!

Here's the thread-> Google Groups Thread

Friday 07.11.2008

After some end of the day discussion with Dr. Porter yesterday, Sean and I discussed design changes this morning before getting too deep in work.

This is what will be implemented: the PGDataSet class will now contain a grid object reference, allowing it to be a standalone grid from the grid of the plotgraph who contains it. What this means is that a plotgraph still has a 1:1 ratio with a grid, but the datasets (1:many from plotgraph perspective) have their own grids contained within, so they do not necessarily have to be the same order as the user entered them initially as well as they don't even have to be the same dimensions. This allows ultimate flexibility in that we can contain a source dataset and a response dataset within the same plotgraph despite their grids containing different axes.

Our Algorithms can be smart and pull out axes in the order that we need them to do the calculations // plotting via requiring certain keywords in the axis titles, thereby creating a new grid with that order, and placing it in the dataset for reference when plotting. This is the most efficient means to allow the most user functionality in such a way that the user does not have to remember the order of the axes for each individual algorithm or simulation. Phew.

I'm also including some comments that I wrote to myself in the new code, which I branched off in CVS.

;here we are going to make a new grid object for use within the pgdataset
;in this case it will be the same as before, because I have complete control
;over what happens.
;we want to pass the pgdataset its own object reference so changes to the
;grid in the plotgraph which contains it does not change items in its own grid

; we are adding a grid to the pgdataset, so that the algorithm
; can be smart about the ordering of things
; in the plotgraph, the user can enter the axes in any order they want
; so long as the names that are crucial to the algorithm are provided
; the algorithm can get these names and then create a grid here in the dataset
; with the axes in the right order
; this provides a means for the user to not have to remember which order
; to input the axes

;ok there has been a bit of a change in scenary
;a plotgraph still has a 1:1 ratio with a plotgrid
;however, we have now included a grid object inside of the datasets
;this way the dataset can have a grid in the proper order
;as per the algorithm, as well as a different unique grid from the plotgraph
;for which it is associated
;this means you could potentially have a source dataset and a response dataset
;containted within the same plotgraph despite the inequality of their respective
;grids

Hang in there -- some good images are coming later in the day soon ! (:

Thursday 07.10.2008

worked some on comparing the 2d surface plots from java -> idl for the transfer functions

also working on my visualizer widget which will accept a plotgraph and allow the user to produce line and surface plots as well as surface plots on a sphere -- as well as animate all these things over any variable -- should be fun (:

Wednesday 07.09.2008 Created graphics for tfimporter and jsourceimporter -- we cleaned up the main_widget functionality and tied it to openingwindow, so now we have a semi-functional setup.
Tuesday 07.08.2008

Working on the TransferFunction stuff, and we're creating a generic main_widget which will provide a similar user experience no matter what option they choose.

;YOU HAVE TO HAVE THESE THINGS DEFINED BEFORE YOU ADD STUFF TO THEM
;OTHERWISE THEY WILL BE IN REVERSE ORDER FROM HOW WE NEED THEM
;GOOD-- DEFINE GRID -> THEN DEFINE AXES -> THEN ADD AXES TO GRID --GOOD
;BADxx DEFINE AXES->DEFINE GRID->ADD AXES TO GRID xxBAD

"WHAT DAT DUDE?" H.Porter

Monday 07.07.2008 Spent the greater part of the day trying to get Java to work inside of IDL while preserving the Java model. We were having problems with the initial working directory set to IDL so IDL functions properly. But this broke using java stuff. If we put Java as the initial working directory, then the IDL stuff broke w/o compiling everything. We added the java stuff inside the IDL workspace, and now seem to have it figured out. (only after doing some work Tuesday)
Thursday 07.03.2008 Day before the Holiday -- had hoped to get some work done, but csserver01 went down and even after rebooting it wouldn't come up.
Wednesday 07.02.2008

Plotgrpah and PGDataSet widget classes are done

Created a new project on CVS for "completed" stuff. The other one was getting very congested, and we need to get this thing working right now so we don't have nightmares later.

tomorrow: document how to use them.

Tuesday 07.01.2008 Plotgraph and PGData Set widgets/classes
Monday 06.30.2008

Today I started work helping Ameer with new functionality for where the inconsistencies found by Dr. Porter and Sean appear. I graphed them with the fsc_surface plotter from David Fanning, again, great resource. We're now down to 44 points, which appear linear in nature and appear to be accurate to single precision -- or within 10 ^-6 to 10^-7 -- now we need to figure out why it's not double precision, ie 10^-14 to 10^-16 error. I'll leave that to Ameer =P

In other news, I'm working on the PlotGraph widget, and doing some pointer/object reference hunting as I go instead of trying to do it as a lump sum at the end. I've had many long sessions already, but I think it is generally leak-proof right now. Here I go to add the dataset functionality though, so look for it to break again. (:

plotgraph
Widget PlotGraph concept
pgdataset
A PGDataSet based on a previously created Grid

Can't get the scroll bars off of the widget right now -- maybe will do that some time.

Tomorrow will finish up PGDataSet and interaction of datasets in the plotgraph widget

Friday 06.27.2008 Sean, Ameer, and Dr. Porter worked to fix some interpolation inconsistencies, which were pretty glaring as I left them on Thursday to close on my house in Chapel Hill for next year.
Thursday 06.26.2008

dif

Today I am helping Ameer test to see whether all of his transferfunction classes in IDL function much the same as the classes in Java which he translated from. This is the import , of the cosine -- which shows A-B = 0, or, they're equivalent. Now we must test to see that the interpolations are ~equivalent.

 

Wednesday 06.25.2008

Learned about settings fonts today --> In any widget item you can set the font keyword via font = "" [ a string ] For example: font="Arial*BOLD*18" which does exactly what you would think. Neat.

Fixed the axis widget so now you can import SATAXIS or CARTAXIS from a text file. See Below.

###############AXIS IMPORTER#################
##                SYNTAX:                  ##
#                                           #
# SAT(Satellite) or CART(Cartesian)         #
# Logarithmic Axis(1) or not(0)             #
# dimensionality (Cartesian==1)             #
# directory                                 #
# numPoints                                 #
# Axis Title                                #
#############################################
#   (Comments start with a pound sign(#)    #
################# EXAMPLE ###################
#  Please keep all data together like below #
#############################################
CART
0
1
D:\IDLResearch\JavaWaveIDLConverter\Databases\axesDB\axes
5
N2 Density
0.812483
0.741360
0.652557
0.394409
0.339030
cartgrid
###############AXIS IMPORTER#################
##                SYNTAX:                  ##
#                                           #
# SAT(Satellite) or CART(Cartesian)         #
# Logarithmic Axis(1) or not(0)             #
# dimensionality (Cartesian==1)             #
# directory                                 #
# numPoints                                 #
# Axis Title                                #
#############################################
#   (Comments start with a pound sign(#)    #
################# EXAMPLE ###################
#  Please keep all data together like below #
#############################################
SAT
0
4
D:\IDLResearch\JavaWaveIDLConverter\Databases\axesDB\axes
40
N2 Density,Altitude,Colatitude,Longitude
     0.579724     0.480374     0.380373     0.790596
     0.284764     0.864564    0.0326720     0.211049
     0.123637     0.743498     0.187175     0.871458
     0.919982     0.118009     0.364344     0.867759
     0.875490     0.868926     0.722223     0.534970
     0.400522     0.282780     0.176707     0.240488
     0.741547     0.222293     0.843026     0.858156
     0.975321     0.723878     0.739868     0.559151
    0.0713185     0.372448     0.698323     0.896285
     0.396084     0.649971     0.710792    0.0210429
     0.687564     0.933139     0.359553     0.132327
     0.476962     0.143290     0.133171     0.644487
    0.0571151     0.137204     0.893266     0.668806
     0.105484 4.15496e-005     0.274038    0.0455811
     0.378316     0.618912     0.767887     0.320188
     0.428613    0.0382297    0.0143880    0.0735728
    0.0282699    0.0922045     0.680492     0.238430
     0.964630     0.720284     0.646093     0.116165
     0.292799    0.0620920     0.762961    0.0478695
     0.973254     0.221310     0.112640     0.177480
     0.580404     0.420786     0.870992     0.765706
     0.481470     0.196742     0.982945     0.183040
    0.0576710    0.0643293     0.572196     0.275946
     0.538645     0.886061     0.441497     0.901644
    0.0410932     0.770697     0.408734     0.824011
     0.544938     0.633072     0.486534     0.591947
     0.818340     0.270548     0.843615     0.279418
     0.178023     0.188896     0.851442     0.160731
     0.291628     0.911285     0.227249     0.352241
     0.374614     0.863039     0.730914     0.937971
     0.136309     0.355295    0.0982713     0.115729
     0.355976     0.287342     0.372251     0.974529
     0.177794     0.469826     0.628169     0.336385
     0.543278     0.104738     0.885582     0.976369
     0.833250    0.0375363     0.827381     0.645395
     0.576735     0.632908    0.0728127     0.107623
     0.633295     0.521378     0.221933    0.0218280
    0.0295456     0.478615     0.668506     0.899394
     0.794769     0.680739     0.393106     0.819580
    0.0907998     0.799256     0.900826     0.927286
 					
satGrid

 

Tuesday 06.24.2008

OK -- New project was to get the Source functionality in Java ported over to IDL.

First, nothing showed up - then a window showed up with nothing in it, then I finally got it all this morning. See the progression of screenshots:

physource1
Early -- not working
physource2
Workin

OK! Now, how to set up the IDL-JAVA-BRIDGE correctly. Before, we were jar'ing up the entire java wave directory before we were able to access individual java classes. So long as your stuff is in "D:\SummerResearch2008\Java Wave"

There are several changes that need to be made to the C:\Program Files\ITT\IDL70\resource\bridges\import\idljavabrc file. These have to be ALL ON ONE LINE.

JVM Classpath = $CLASSPATH;D:\SummerResearch2008\Java Wave;D:\SummerResearch2008\Java Wave\cookieJar\AbsoluteLayout.jar;D:\SummerResearch2008\Java Wave\cookieJar\bufr.jar;D:\SummerResearch2008\Java Wave\cookieJar\commons-codec-1.3.jar;D:\SummerResearch2008\Java Wave\cookieJar\commons-httpclient-3.0.jar;D:\SummerResearch2008\Java Wave\cookieJar\commons-logging-1.0.4.jar;D:\SummerResearch2008\Java Wave\cookieJar\gnu-regexp-1.1.4.jar;D:\SummerResearch2008\Java Wave\cookieJar\grib.jar;D:\SummerResearch2008\Java Wave\cookieJar\HTTPClient.jar;D:\SummerResearch2008\Java Wave\cookieJar\j3daudio.jar;D:\SummerResearch2008\Java Wave\cookieJar\j3dcore.jar;D:\SummerResearch2008\Java Wave\cookieJar\j3dutils.jar;D:\SummerResearch2008\Java Wave\cookieJar\jdom.jar;D:\SummerResearch2008\Java Wave\cookieJar\jpeg2000.jar;D:\SummerResearch2008\Java Wave\cookieJar\junit.jar;D:\SummerResearch2008\Java Wave\cookieJar\mpi.jar;D:\SummerResearch2008\Java Wave\cookieJar\netcdf-2.2.16.jar;D:\SummerResearch2008\Java Wave\cookieJar\netcdfUI-2.2.16.jar;D:\SummerResearch2008\Java Wave\cookieJar\nlog4j-1.2.21.jar;D:\SummerResearch2008\Java Wave\cookieJar\prefsAll.jar;D:\SummerResearch2008\Java Wave\cookieJar\resourcesOptional.jar;D:\SummerResearch2008\Java Wave\cookieJar\slf4j-jdk14.jar;D:\SummerResearch2008\Java Wave\cookieJar\slf4j-jdk14-sources.jar;D:\SummerResearch2008\Java Wave\cookieJar\vecmath.jar;D:\SummerResearch2008\Java Wave\cookieJar\visadNoDods.jar;D:\SummerResearch2008\Java Wave\cookieJar\xercesImpl.jar;D:\SummerResearch2008\Java Wave\cookieJar\xml-apis.jar;D:\SummerResearch2008\Java Wave\graphObjects\

#COULD USE THIS IF WE NEED TO :: JMOORE (nTt uses 1.5)

SOME MACHINES BREAK: PUT THIS IN THE IDLJAVABRC

JVM LibLocation = C:\Program Files\Java\jre1.5.0_01\bin\client

JVM Option1 = -Xms32m
JVM Option2 = -Xmx256m

Log Location = c:/temp/
Bridge Logging = CONFIGFINE

You can get my full file from here Full idljavabrc

*Open it with a text editor.


Finally, set up the initial working directory to D:\SummerResearch2008\Java Wave -- See below

preferences

Monday 06.23.2008

Working on Java Bridge import w/o using jar files so that Sean can continue to clean up the GridWidget.

I figured it out ~~ -- Adding additional Classpaths to the idljavabrc, it has to be such that you don't put spaces between locations. I originally posted it on the IDL usenet group - but I answered it myself before I got any response, so I posted the answer.

http://groups.google.com/group/comp.lang.idl-pvwave/browse_thread/thread/c6935ab4850042aa

Friday 06.20.2008

Set up text file import: with format:


###############AXIS IMPORTER################# ## SYNTAX: ## # #
# float array of points, comma delimited #
# dimensionality (1) #
# directory #
# extreme #
# maximum value #
# minimum value #
# numPoints #
# Axis Title #
# total points (numPoints * dimensionality) #
# logarithmic (0 or 1) #
# reverse (0 or 1) #
#############################################
# (Comments start with a pound sign(#) #
################# EXAMPLE ###################
# Please keep all data together like below #
#############################################
0,10,20,30,40,50,60,70,80,90,100
1
D:\IDLResearch\JavaWaveIDLConverter\Databases\axesDB\axes
100
100
0
11
TextFile Import
11
0
0

Now I have a few memory leaks in axis_widget with pointers and objects not being cleaned up properly. Gotta find them! --> CHECK! Each time you press load it was creating a new plotgridaxis object, and IDL does not re-use these things so if you push Load multiple times, it will make multiple objects, of which I do not have a reference to and which I would consider to be memory leaks. Now I check to make sure another plotgridaxis object hasn't already been created and then it limits it to one instance, the one which I am referencing, and can destroy in the widget's cleanup method.

Also --> Watch out for using asterisks on the left hand side of an assignment as that creates temporary variables before placing the data into the array. See -> http://www.dfanning.com/code_tips/asterisk.html

I've been reading the Google Group for IDL and everyone unanimously recommends David Fanning's site. And I've personally heard from him three times after e-mailing him. So he's not a legend who doesn't have time to respond! haha. http://www.dfanning.com

Thursday 06.19.2008

Finished with Axis_Widget_np.

Fixed all bugs that I know of currently.

Sean and I are working on this whole plotgrid builder concept. He is currently making the plotgrid application which will spawn instances of my axisbuilder. Each grid can have up to 8 axes.

Should be done by tomorrow at the earliest, maybe early next week.

working on text file import for plotgridaxis instead of just save file.

Wednesday 06.18.2008

Nearly finished AxisBuilder, it's almostdone and ready to go insofar as I can tell. I have one more problem to troubleshoot -- the plotting of logarithmic / reverse order axes. Once that's fixed it'll be complete.

current axis builder

The draw portion of the widget updates with a new axis, properly unless you put it in logarithmic form. I have to fix this bug tomorrow, then it will be good to go!

Tuesday 06.17.2008

Today I will be building the axis/grid widgets with Sean.

axis_builder

Tomorrow I hope to get the preview part working properly. That's enough for today. You can import/edit/create/save axes now.

Monday 06.16.2008 Got a little more done on the initial design. Sean is working on the axis stuff so then we can make the grid builder widget. that should happen tomorrow
Friday 06.13.2008

worked some more, got my chooser/plotgraph options working

no screenshots today, wrote lots of code and cleaned things up a bit

david fanning, the author of the fsc_surface software package we're using has responded to 2 of my bug emails and fixed them immediately -- i am definitely impressed.

next week i will be dominating the overall general structure of idlwave now that i have a better grasp of how things work.

OKOK I couldn't help myself
after the discussion today of how IDLWAVE should work, I made a graphical interpretation to remind us

idlwave

Thursday 06.12.2008

Screenshot Thursday

OK - first is my TFInfo Chooser

tfinfo_chooser

This allows a user to find the TF info file and it shows the user the filepath in the textbox before moving forward in the program structure.

After picking a TFInfo file, this file is passed to a new screen called the IDLPlotGraph_Setup procedure. This allows the user to pick things interactively about the dataset which is referenced by the TFInfo file.


idlplotgraphbeta1
Click for full image


idlplotgraph 2
Click for full image

OK First one shows that altitude is chosen as the "plot by" -- this allows the end user to select different frequencies to look at with matching gases and atpars.
The second one shows that the user wants to "plot by" -- this allows the end user to select different altitudes to look at with matching gases and atpars.

Finally, a new graph, which comes from the above widget. I was sure to find a cool one for all my fans!

fsc_surface
Click for full image

This is Hydrogen gas at 136 km above the Earth's surface graphing the vertical velocities.

Wednesday 06.11.2008

fixed the problem with ameer's tfinfo import which sean had showed me how to fix
but rebuilding the project was kind of a bad fix. The problem was the code was referenced a procedure called 'open.pro' which was not in the same folder as TFinfo class file, move that over there and boom, it's fixed.

I have originally been using the common technique to save global variables, but after reading in the manual a bit about how to save state information from widgets for use in the events, it pretty much sums up that it's a bad idea to do it that way, even though it will work. The cons include the lack of ability to launch multiple instances of the procedure among others. Instead, they say to use State structures and pointers to said State structures. More on this later today, and lots of screen shots coming from new developments.
I will put some screen shots up when I get it all working. I am 1/3 done.

Tuesday 06.10.2008

Java objects and memory usage:

I was trying to create several objects in java and save their references in IDL so that I could do work on them later in the program. However, after importing about 7 ~8MB files, the program would cause an exception. This exception would be as beautifully explicit as all IDL compiler errors: not at all. Dr. Porter suggested that maybe I was exhausting the JVM's heap space. This doesn't really make much since, though, because I was instantiating the objects into IDL...
So, he had the idea to try to create the same instance to a class over and over again with the same parameters, etc. IDL returned NEW instances to EACH java object every time even though they were all the exact same. So, at first I increased the heap size for the JVM in IDL's files. Find the same file that we edited earlier with Sean's notes that allowed for importing Java objects via the Bridge in the first place.

Increasing heap size for jvm via idl: (
Yellow Highlight is the file location you need to modify,
Red Highlight is what you need to add to the file, I started my JVM with minimum of 32MB and max of 256MB RAM

jvm
Click for larger image

The repository has been updated with all of my stuff for backup purposes. Originally, I put my data files up there too, but it was just too big for everyone and I didn't want to get yelled at, so I took them down.

This is my first version beta of plot graph with option choices, it's getting much more work tomorrow.

IDLPLOTGRAPH

Monday 06.09.2008

Good day overall, lost an hour to some HR stuff for Furman, but whatever.

OK -- so I have a working grid based on an imported serialized file from the JavaWave application. Currently I am using the integrated iSurface, or intelligent surface application available in IDL. I am still bit on the fence about whether to use IDL's integretated solution or to develop our own.
I think that the iSurface would provide a few benefits, such as user familiarity as well as less work on this end, not that I'm not prepared to do the work.

Before I talk about what I did today, I would like to discuss a tip that may help you when you encounter an exception error, either via IDL or via the IDL-to-Java Bridge.
The first time I got an exception, I fixed the error but on subsequent re-runs of the program, the same error appeared. Desperate for a solution I began poking around and eventually landed in the Debug section. The old version of the program was still running in the debugger despite the exception that killed it on the front end. The trick is this:

If your program has an exception, go to the Debug section and push the red "STOP" button before trying the program again. This has saved me some time and I shared the tip with Sean today.

My txfuncimport.pro file got some major work today.

I have imported the file from the serialized run as I completed at the end of the day on Friday. Originally plotting the wrong grid patterns, I have since imported another file called fort.99 which allows us to properly see the frequencies / L values / altitudes imported.
I've also played around with the settings of the iSurface which shows up basically as what I recall when Dr. Porter gave me a demo. Here are a couplescreen shots:

first_graph
Click for full size


2nd_image
Click for full size

I was unable to get Ameer's TFInfo working in IDL. I downloaded it fine, but running the tfinfo_test I get -->
% Attempt to call undefined method: 'TFINFO::READFROMTEXTFILE'.
% Execution halted at: TFINFO_TEST 3 D:\IDLResearch\JavaWaveIDLConverter\Ameer\TFInfo\tfinfo_test.pro
% $MAIN$

and it highlights -> t->readfromtextfile, '' -- so I don't know about that... Hopefully we can get that going tomorrow.

In order to get this thing working, you have to right click on the project and then say "Build Project." If anything has errors afterwords, simply compile that file. Then the whole thing works. weird... Thanks Sean, Ameer

Friday 06.06.2008

Working through some of these exercises: http://www.astro.virginia.edu/class/oconnell/astr511/IDLexercises/

Will post again later. I would like to begin widget creation, but again I have to get a feel for what is available in javawave, so I need access to a graph/dataset whereby I can look at how the visualization works now in an attempt to modularize what I need to make for the IDL implementation.

Did a couple exercises today, one of them was interesting because it made me think in a non-loop fashion. I was raising the constant c, the speed of light (3.0 * 10^8 m/s), to a variable number of powers until infinity was reached. If I define c as a float, one result happens. If I define c as a double, another result happens.

c=3e8 ;define speed of light as float
a=findgen(50) ;creates an array of values 0->49
a=c^a ;for each spot in the array, raise c to that power

NO LOOPS REQUIRED!


It was fun using the "where" function, which will pick out all the indicies which match some expression as well as count how many there are -- this is very nice!
For Example:

keepThese = where(temperatures le 40, count)

This will take the array temperatures, and keep all indicies whose values are less than or equal to 40 in the variable keepThese, and keep track of how many there were in the variable count, in one line!!

Full Code ==> download here

Domination was in order today, with much help from Sean's work and his comments on this page for setting up the Java Bridge to IDL.

It turns out we can use a lot of the Java code that is already created.
Here is my code that will do the following things:

  • Create Transfer Object
  • Create TransferFunctionTypes Object
  • Set the TransferFunctionTypes to Joules
  • Get a TransferFunctionFile from calling a method from the TransferClass passing in a filepath, the just-created TransferFunctionTypes object, and an altitude
  • Create GasTypes Object
  • Set GasTypes to N2
  • Create AtparTypes Object
  • Set AtparTypes to Density
  • Finally, get the data from the TransferFunctionFile by passing in the two GasTypes and AtparTypes objects just created

Thursday
06.05.2008

Packaged a zip of all the PDF's from the website. You can get it here -->>>> README PACKAGE

Worked through the book that came with IDL --> "Getting Started with IDL", i worked most of the examples that pertained to me and those files are included in the zip below. I commented them to tell myself how things work. I learned quite a bit from this thing. Check this out !!

6.05
Click for full size

 

My notes for the day ---->>>> notes-6.05.08
My codes for the day ---->>>> sample_code-6.05.08

IDL is very powerful. Lot more respect than yesterday as I'm actually learning how some of this syntax works.

I'm going to start building my widgets now, so then I can create a visual application. More news on this either at the end of the day or tomorrow when I update.

Goal is to have a sample visual application by end of day tomorrow.


I've decided I need a better interpretation of the feature-packed javawave visualization package so I can develop the individual widgets one at a time before creating the all-encompassing application. This is a better approach and plan to get back on it when I get gain access to the visualizer.
I understand the event-driven structure of the widgets now, though, so that is a good thing and will be useful once I get going on development.

None of the saved graphs in JavaWave allow me to see anything currently... and I don't have a clear enough memory from when I saw it on Monday.
**need a few screenshots of javawave visualizer**

Before the day is out I decided to play with some 2d array operations and plot it. There's got to be a way to put more than one set of places in the declartion because IDL folks love one-liner commands. I haven't figured that out yet, but lines 6,7,8 should be combined into 1!
Here's the code that produced the output image below:

  1. pro test
  2. a = fltarr(60,60)+10
  3. a[28:35,*]=-5
  4. a[5,*] = 20
  5. a[55,*] = 20
  6. a[*,10:12] = 5
  7. a[*,29:31] = 5
  8. a[*,48:50] = 5
  9. iSurface, a
  10. end
array
Click for larger version
Wednesday
06.04.2008

Installed IDL, don't update it to newest version otherwise pushing "new" will create an empty dialog box bug, hah.

Began hunting the internet for IDL howtos, examples, and tutorials
This reminds me of last summer in my quest to conquer Mathematica in more than just a+b=c
Found two great sites so far, one with a code project that is quite similar to what I will actually be producing in the long run.
The two sites are here:
http://www.astro.virginia.edu/class/oconnell/astr511/IDLexercises/
------------ Which is a tutorial for an intro graduate school class.
and
http://www.dfanning.com/
------------ A great resource for lots of IDL code [screenshot below]


Click for full size

Got a bit ahead of myself in that I tried to dive right into code before I knew anything about the structure of the language. Will go into more detail tomorrow, at a reduced pace tomorrow. Hopefully by Friday I will be modifying this program in ways that will be beneficial to what I need to create for JavaWave, and also I will have actual input for which I am to be plotting.

Tuesday
06.03.2008
Missed today.
Monday
06.02.2008

Came late, Got a discussion about what we will do
Set up CVS repository in the java development package -> Eclipse

Received a demo of the current implementation of JavaWave's graphic features as a precursor for what will be necessary to implement in this new IDL design.