Real programming: if's and do's
In addition to the vectors and matrices that physica manipulates as a
whole, it knows about scalars, and, in fact, it knows how to divide up its
vectors and matrices into their elements. In physica, one addresses say,
the fifth element of a vector v as v[5] or v(5), and an
element of a matrix m as, say, m[5,6] or m(5,6). Thus we
have another way of creating the matrices of the previous section, by writing a
short macro like this, and then executing it:
do j=[1:10]
do k=[1:10]
m[j,k]=(10*(j-6))**2*exp(-0.1*(k-6)**2)
enddo
enddo
surface m
You can see the immediate similarity with Fortran that was mentioned in
the beginning. This similarity is, in fact, more extensive:
physica macros can contain labels, logical ifthen
statements, and goto's. These allow you to perform fairly
complicated routines without leaving physica. There are many
examples of such macros shown in the User's Guide. A word of
caution: physica macros are interpreted line-by-line, and so
an equivalent but pre-compiled Fortran program will run much faster.
Thus you should reserve your physica programming for relatively
simple things; when the computations get complicated and long it is
best to leave physica; write, compile, and run a Fortran
program; and then return to physica to look at the produced
output data. Always use the tools that are appropriate to the task at
hand!
Congratulations! - you have reached the end of our brief tutorial. It
should have given you a taste of the capabilities
of physica. For a more comprehensive discussion you are, as
always, referred to the manuals.
Up: Table of contents
Next: Appendix: On the Unix end
Previous: Generating 3D data
|