In order for the solver to access the user-defined functions, the functions must be
compiled and linked into a shared library. The script acuMakeLib (for Linux) and acuMakeDll (for Windows) may be used for this
purpose.
Assume you have the files
usrCover.c and
usrGrav.f
containing the C and
Fortran functions given in the
previous section. To compile and link into the shared library
libusr.so simply issue the
command:
acuMakeLib -src usrCover.c,usrGrav.f
This script writes the makefile, Makefile, and invokes make to compile and
link the routines. The makefile has two targets: make all (or equivalently make
install) and make clean.
Once the file is successfully compiled and linked, the solver may be invoked
as
acuSolve -libs ./libusr.so
or through the use of
AcuRun
as
acuRun -libs ./libusr.so
Multiple user-defined functions may be provided by one or more libraries. To run the solver with
multiple libraries, give a comma separated list of libraries to the configuration
option
-libs. For example, given the libraries
libgrav1.so and
libgrav2.so stored in
directory
~/acusim_libs, the solver may be invoked
as
acuRun -libs ~/acusim_libs/libgrav1.so,~/acusim_libs/libgrav2.so
The libraries are searched sequentially in the order given for the user functions. Libraries that
do not exist are ignored. To see what libraries and what routines are accessed by
the solver, invoke the solver with the option -verbose 2.
Note: For most computer platforms, the functions within a given user shared library can
access all functions in that library, plus all system and solver functions. However,
they may not access functions in other user shared libraries. This behavior is a
platform dependent.
Note: On most platforms the shared library has a .so extension,
however on some it may be .sl (such as HP) or
.dll (Windows).