source: branches/nanovis2/examples/app-fermi/octave/octave2/fermi.m @ 3305

Last change on this file since 3305 was 3305, checked in by ldelgass, 11 years ago

sync with trunk

File size: 2.1 KB
Line 
1% ----------------------------------------------------------------------
2%  EXAMPLE: Fermi-Dirac function in Octave.
3%
4%  This script represents a newly written application with rappture
5%  bindings and interface.
6%
7% ======================================================================
8%  AUTHOR:  Michael McLennan, Purdue University
9%  AUTHOR:  Derrick Kearney, Purdue University
10%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
11%
12%  See the file "license.terms" for information on usage and
13%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
14% ======================================================================
15
16% get input file from the command line
17% open our xml input file.
18infile = sprintf("%s",argv(1,:));
19lib = rpLib(infile);
20
21% retrieve user specified data out of the input file
22% convert values to correct units.
23Ef = rpLibGetString(lib,"input.number(Ef).current");
24[Ef,err] = rpUnitsConvertDbl(Ef,"eV");
25T = rpLibGetString(lib,"input.number(temperature).current");
26[T,err] = rpUnitsConvertDbl(T,"K");
27
28% do fermi calculations (science)...
29kT = 8.61734e-5 * T;
30Emin = Ef - 10*kT;
31Emax = Ef + 10*kT;
32
33E = linspace(Emin,Emax,200);
34f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
35
36% prepare out output section
37% label graphs
38rpLibPutString(lib,"output.curve(f12).about.label","Fermi-Dirac Factor",0);
39rpLibPutString(lib,"output.curve(f12).xaxis.label","Fermi-Dirac Factor",0);
40rpLibPutString(lib,"output.curve(f12).yaxis.label","Energy",0);
41rpLibPutString(lib,"output.curve(f12).yaxis.units","eV",0);
42
43% this is a slow and inefficient method of putting
44% large amounts of data back in to the rappture library object
45%for j=1:200
46%  rpUtilsProgress((j/200*100),'Iterating');
47%  putStr = sprintf('%12g  %12g\n', f(j), E(j));
48%  % put the data into the xml file
49%  rpLibPutString(lib,"output.curve(f12).component.xy",putStr,1);
50%end
51
52% a better way is to take advantage of octave's vector operations.
53outData = [f;E];
54putStr = sprintf('%12g  %12g\n', outData);
55rpLibPutString(lib,'output.curve(f12).component.xy',putStr,0);
56
57% signal the end of processing
58rpLibResult(lib);
Note: See TracBrowser for help on using the repository browser.