wasorawasora's an advanced suite for optimization & reactor analysis  
wasorawasora is a free computational tool designed to aid a cognizant expert—i.e. you, whether an engineer, scientist, technician, geek, etc—to analyze complex systems by solving mathematical problems by means of a highlevel plaintext input file containing algebraic expressions, data for function interpolation, differential equations and output instructions amongst other facilities.At a first glance, it may look as another highlevel interpreted programming language, but—hopefully—it is not: wasora should be seen as a syntacticallysweetened way to ask a computer to perform a certain mathematical calculation. For example, see below to see how the famous Lorenz system may be solved by writing the three differential equations into a plaintext input file as humanlyfriendly as possible. Although its ultimate subject is optimization of nuclear reactors, it may hopefully help you with the tough calculations that usually appear when working with problems that have some kind of complexity, allowing the user to focus on what humans perform best—expert judgment and reaching conclusions. Explaining what a certain piece of software does—especially if it is a technical one—is very hard, as shown by the cryptic description most scientific software package present at their web pages, version control system logs, README files and repository sources. This is by no means an exception, so please before flying away take the time to look at the quick start and examples to see. Maybe after all wasora can help you. Last modification: Wed, 18 Jun 2014 19:25:50 0400. downloadThe recommended way to get wasora is to download the latest (0.2.141) source tarball and compile wasora from scratch. However, libraries may be tricky to get running so binary versions are also provided:
Other nonstandard libraries such as SUNDIALS or Readline are optional. See the projects wasora relies on. bazaar repositoryIf you plan to contribute to wasora, modify its sources or just want to get updated versions easily, you will need to branch the development tree of wasora, which is hosted at Launchpad using bazaar as a control revision tool. The wasora tree can be browsed online or branched into a local copy withIf you use bzr to get the development version, you will need automake, autoconf, libtool and GNU m4. See details in the README file. Regular users just downloading the tarballs listed above will not need such advanced tools. quickstartFirst, download the source code, uncompress, configure, make, check, install and go to examples directory: See the documentation for detailed installation instructions and configuration options. If you do not like compiling source code, try downloading one of the binary versions of wasora. the fibonacci sequenceCompute the first 15 elements of the Fibonacci sequence:VECTOR f SIZE 15
f(i)<1:2> = 1
f(i)<3:vecsize(f)> = f(i2) + f(i1)
PRINT_VECTOR f FORMAT %g
See The Fibonacci sequence at the wasora Real Book for two other ways of computing the same sequence. the logistic mapSolve the logistic map for 1000 values of the parameter r in the range [2.6:4] (chosen from the commandline) using a reverse Halton quasirandom sequence of numbers:# the logistic map
PARAMETRIC r $1 $2 1000 TYPE REVERSEHALTON
static_steps = 800
x_init = 0.5
x = r*x*(1x)
IF step_static>static_steps50
PRINT %g r x
ENDIF
Click on the bitmap to access a mouseable vector figure generated with gnuplot's html5 canvas terminal out of wasora's output. the lorenz systemBuild your own version of the Lorenz attractor by first stating which variables belong to the phase space, setting the integration time, defining the constant parameters and the initial conditions. Finally write down the differential equations as naturally as it is possible to do so in a plaintext computer file:# lorenz' seminal dynamical system
PHASE_SPACE x y z
end_time = 40
CONST sigma r b
sigma = 10 # parameters
r = 28
b = 8/3
x_0 = 11 # initial conditions
y_0 = 16
z_0 = 22.5
# the dynamical system
x_dot .= sigma*(y  x)
y_dot .= x*(r  z)  y
z_dot .= x*y  b*z
PRINT t x y z
# exercise: play with the system! change
# the parameters and plot, plot plot!
This example illustrates the kind of syntactic sugar wasora tries to provide. See also the section about The Lorenz chaotic system and The chaotic Lorenzian waterwheel amongst other further examples in The wasora Real Book. documentationCurrently wasora has a serious lack of complete and uptodate documentation. There exist a kind of manual which is halfwritten and refers mainly to version 0.1, although the functions and functionals reference are correct. In principle, the documentation about syntax of the keywords should be updated by the wasora developer at the same time a modification in the code is done, but time is something he is really missing these days. Indeed, the manual section that describes the syntax is generated with scripts that parse the source code. Sadly, this task is not complete. the wasora manualAs incomplete as it is, at least the wasora manual includes a list of keywords, functions and functionals as a reference section. It is converted from a set of source files and a set of scripts that parse the actual wasora source code to different formats using DocOnce:
the wasora real bookAs with jazz, wasora is best mastered when played. Visit The wasora Real Book which, as the original, will guide you through wasora with fullyusable examples of increasing complexity and difficulty. The examples come with introductions, wasora inputs, terminal mimics, figures, videos and discussions. This book—that is not a book—is a living document that is eager to be fed by users willing to share experiences.Noteworthy sections include:
the examples subdirectoryFollowing the idea of the wasora Real Book which consists of examples of application, the wasora source tarball includes a subdirectory called examples which contain some readytouse examples. They can be browsed online at the bazaar repository.pluginsAs illustrated in the Finding prime numbers section of the wasora real book, wasora's capabilities can be extended by loading userprovided routines in the form of sharedobject files. However, if the desired extension is fairly complex, the best choice is to use the plugins mechanism, which consist of adhoc libraries that interact with some sort of API wasora provides (and of course is not yet documented). The two most useful plugins are besssugo and milonga, although more are being written:
mailing listThere exist a mailing list < wasora @ talador.com.ar > where questions can be posted about any aspect of the code, including intallation, usage and development. Besides suscribing and directly asking a question, you can also browse the archives. Bugs reports are also welcome. plaformswasora is free software, and as such it is developed under a free operating system, namely Debian GNU/Linux. The distribution tarball is based on GNU Autoconf & friends, so wasora should build in any POSIXcompliant environment. However, wasora is a fairly complex piece of software, so portability is not guaranteed (but improvements are welcome). Running wasora in nonfree operating systems is discouraged, and such topic is not of the interest of the author of wasora. However, contributions and experiences may be well received if discussed in the mailing list. licensewasora is released under the terms of the GNU General Public License version 3, or at your option, any later version. Bottomline is, you get the four software freedoms
projects wasora relies onFollowing good practices in UNIX programming, by design wasora tries to reuse as much as possible alreadyavailable highquality free software (especially regarding numerical methods, which are better analyzed by mathematicians and better coded by professional programmers than by myself). required libraries
optional libraries
other useful packagespublicationsThe following technical papers have directly or indirectly used wasora to perform different kinds of computations: © jeremy theler 2004—2014 
