The executable is built by linking a driver routine with the code and utility libraries. The driver routine must contain a call to initLaGriT and a call to control_command_lg and must contain a subroutine called user_sub.
The input arguments to initLaGriT are:
mode - set to ‘noisy’ for output to be echoed to the screen - set to ‘silent’ for no echo
log_file - name of log file (if ‘ ‘ or ‘-def-‘ use default name which is lagrit.log) This file will contain a list of commands.
batch_file - name of batch file (if ‘ ‘ or ‘-def-‘ use default name which is lagrit.out). This file will contain a list of commands and the error, warning and informational messages generated by the command. User_sub is used to implement user commands, see User Commands.
A sample Fortran driver routine is listed below (C++ examples are in examples/liblagrit/):
program adrivgen C PURPOSE LaGriT driver implicit none integer ierror_return call initLaGriT('noisy',' ',' ') call control_command_lg(ierror_return) stop end C Subroutine user_sub C C PURPOSE C Process user supplied commands C C INPUT ARGUMENTS C C imsgin - integer array of tokens returned by parser C xmsgin - real array of tokens returned by parser C cmsgin - character array of tokens returned by parser C msgtyp - int array of token types returned by parser C nwds - number of tokens returned by parser C C OUTPUT ARGUMENTS C C ierr1 - 0 for successful completion - -1 otherwise subroutine user_sub(imsgin,xmsgin,cmsgin,msgtyp,nwds,ierr1) character*32 cmsgin(nwds) integer imsgin(nwds),msgtyp(nwds) integer nwds,ierr1,lenc real*8 xmsgin(nwds) C set default error return to fail ierr1=-1 C Insert code here to handle user coded subroutines C For example if(cmsgin(1).eq.'my_cmnd') then call my_rtn(imsgin,xmsgin,cmsgin,msgtyp,nwds,ierr1) else ierr1=-1 endif return end
LaGriT can be compiled on most modern machines including Linux, and Mac. WINDOWS is still under development, but pre-cmake versions were successful under Cygwin. LaGriT now uses cmake to build with or without external libraries such as Seacas Exodus.
The most recent instructions can be found on the github pages.
Simple install, build, and test: LaGriT Github README
Build options and instructions for developers: LaGriT Github cmake README
To execute, use standard unix file redirection for standard input and output. LaGriT will produce two additional files, lagrit.out and lagrit.log. The user can change the names of these files by supplying new names as arguments in the call to initLaGriT before compiling. These files contain detailed output information and the list of commands respectively. LaGriT may also be run interactively in which case the user will be prompted to enter commands at the machine prompt.
lagrit < lagrit_command_file
Sun OS and Sun Solaris forte version 7 compiler:
f90 -O2 -lf77compat -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
if the user wishes to link in user subroutines that contain CRAY type pointer statements, these routines must be compiled using the f77 compiler and then the .o files linked in with f90:
f77 -c -O2 user_routines.f
f90 -O2 -lf77compat -o LaGriTgen adrivgen.f user_routines.o
libLaGriT.a libutil.a
older sun compilers:
f90 -O2 -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
IBM RISC
xlf -g -o LaGriTgen -qintlog -qcharlen=500 -brename:.fdate,.fdate_
adrivgen.f
libLaGriT.a libutil.a
SGI
f90 -O2 -n32 -r10000 -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
Compile for 64 bit I8 SGI:
f90 -O2 -64 -i8 -o LaGriTgen adrivgen.f libLaGriT.a libutil.
HP:
f90 +U77 -R8 -lm -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
DEC COMPAQ compiler
fort -i8 -O -fast -pipeline -transform_loops -o LaGriTgen
adrivgen.f libLaGriT.a libutil.a
ABSOFT compiler:
f90 -YTEXT_NAMES=LCS -o LaGriTgen adrivgen.f fdate.f libLaGriT.a
libutila. -lm -lu77
where fdate.f is
subroutine fdate(string) character*(*) string call fdate_(string) return end
LINUX
if ($OSTYPE == 'Linux') then
set OSTAG = _lin
set F77FLAG = "-c -f -m32 -YEXT_NAMES=ASIS"
set F90FLAG = "-m32 -YEXT_NAMES=ASIS"
set LINKFLAG = "-lm -lU77"
set F90DIR = /opt/absoft10.0/bin
else if ($OSTYPE == 'Darwin') then
set OSTAG = _mac
set F77FLAG = "-c -f -N113 -N90 -B19 -q"
set F90FLAG = ""
set LINKFLAG = " -lU77"
set F90DIR = /Applications/Absoft/bin
else if ($OSTYPE == 'SunOS') then
set OSTAG = _sun
source /n/env/local.forte.7
set F77FLAG = -c
set F90FLAG = "-lf77compat "
set LINKFLAG = " "
set F90DIR = /n/local_SunOS/forte7/SUNWspro/bin
else
echo 'OS $OSTYPE not recognized '
exit 1
endif
set FFILES = "lagrit_main.f lagrit_fdate.f"
set OFILES = "lagrit_main.o lagrit_fdate.o"
set binname = lagrit$OSTAG$COPT
set binname_date = lagrit$OSTAG$COPT$DATETAG
set liblagrit = lagrit$OSTAG$COPT.a
set libutil = util$OSTAG$COPT.a
'rm' -f *.o
$F90DIR/f77 $CFLAG $F77FLAG $FFILES
$F90DIR/f90 $CFLAG $F90FLAG -o $binname $OFILES $LAGRIT_LIBS/$liblagrit $UTIL_LIBS/$libutil $LINKFLAG