NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
>what if i want to evaluate this dynamic formula for a >point (for example x=3.8 , y=4.5)such that it will >return to me f(x,y) as a float number >what should i do? >i'm a beginner with visad and data object please >explain the answer to me by a code example for these >values for x and y Bader, I've included a little application below that does what you want. To run it using the data and formula you gave in your example, type "java Eval 3.8 4.5 x+2*y" at the command line. Note that you can provide the program with whatever formula and whatever values of x and y that you want. By the way, when writing this little app, I uncovered a bug in the visad.formula package's waitForFormula() method. It's been fixed, but the change probably won't appear on the VisAD FTP site for a few days. In the meantime, you can get the updated FormulaVar.java file from http://palm.ssec.wisc.edu/FormulaVar.java. Alternatively, you could replace the waitForFormula() command below with a call to Thread.sleep(500). Let me know if you have any more questions. Curtis --------------- // Eval.java import java.rmi.RemoteException; import visad.*; import visad.formula.*; public class Eval { public static void main(String[] argv) throws VisADException, RemoteException { // get arguments from command line if (argv.length < 3) { System.out.println("Please enter three arguments: " + "two numbers and a formula."); System.exit(1); } double d1 = 0; double d2 = 0; try { d1 = Double.parseDouble(argv[0]); d2 = Double.parseDouble(argv[1]); } catch (NumberFormatException exc) { System.out.println("First two arguments must be numbers."); System.exit(2); } String formula = argv[2]; // create two VisAD Data objects that store floating point values Real x = new Real(d1); Real y = new Real(d2); // create formula manager FormulaManager fman = FormulaUtil.createStandardManager(); // register Data objects with formula manager fman.setThing("x", x); fman.setThing("y", y); // assign formula to new variable fman.assignFormula("f", formula); // wait for formula to finish computing, just to be safe fman.waitForFormula("f"); // get value of function from formula manager Real f = (Real) fman.getThing("f"); // print out results System.out.println("x = " + x.getValue() + ", y = " + y.getValue()); System.out.println("f(x,y) = " + formula + " = " + f.getValue()); } }
visad
archives: