LIMS 5.0 LBASIC Command Reference

 

LBASIC REFERENCE GUIDE (LIMS 5.0.7)

 

 

LBASIC REFERENCE
GUIDE

LIMS 5.0.7

Commands


CALL <Procedure Name>

LIMS command

Does

Calls procedure Procedure Name.

Notes

The procedure is executed till (a) RETURN statement returns the
execution back, (b) ENDPROC is encountered which is essentially the
same or (c) STOP statement stops the execution of whole process.

Under ordinary circumstances, error will also terminate all the
procedures currently being executed.

Example

This is a typical Auto procedure but this time the
results are displayed by a subroutine PrintFilled. Note that
redefinition of PrintFilled now results in change of output from
Auto.

PROC PrintFilled
DEFINT i
SORESETFILLED()
FOR i=1 TO SONUMBERFILLED()
PRINT SONEXTFILLED()
NEXT i
PRINT SONUMBEREMPTY()," To Go!"
ERASE i
ENDPROC
PROC Auto
WHILE SONUMBEREMPTY()>0
SOLVE
CALL PrintFilled
LOOP
ENDPROC

See also

PROC, ENDPROC, RETURN,
STOP


CHANGEDIR <Directory Name>

LBASIC (System Module) keyword

Does

Changes the current working directory to Directory Name,
which might be absolute or relative BUT shorter than 256 chars.

Notes

Currently Win32 only.

See also

CREATEDIR


CLOSETRACER Name

Output (tracer) extension keyword

Does

Closes the tracing in tracer Name

Notes

The tracer must have been opened using OPENTRACER

Example

See OPENTRACER

See also

OPENTRACER


COMPUTEFLOWS <True|False>

Solver extension keyword

Does

For vacuumed molds it sets the flag in order to compute resp. Not
to compute ‘unnecessary’ flow rates, i.e., flow rates that have to be
0. Default is FALSE (0), i.e.,faster algorithm is being used. There
is no need to change this unless for debugging purposes, i.e., one
suspects that flow rates are wrong.

Notes

New to maintenance release 4.0.02. Previously, all flow rates were
always computed in any case. Speeds up computations on vacuumed molds
by some 25% if set to default value of FALSE

When mold is not vacuumed, this constant does not have any effect.

See also

SOLVE


CREATEDIR <Directory Name>

LBASIC (System Module) keyword

Does

Creates the directory with name Name, which might be absolute or
relative BUT shorter than 256 chars.

Notes

Currently Win32 only.

See also

CHANGEDIR


DEFDBL Variable1 [,Variable2…]

LBASIC keyword

Does

Declares variable Variable1 (and optionally Variable2
…) as a numeric value

Notes

All numeric values are stored as double. Re-declaring a variable
creates a new copy that temporarily hides the old one.

See also

DEFINT, DEFSTRING,
DIM, ERASE


DEFINT Variable1 [,Variable2…]

LBASIC keyword

Does

Declares variable Variable1 (and optionally Variable2
…) as a numeric value

Notes

All numeric values are stored as double anyway. DEFINT is
a compatibility trick. Re-declaring a variable creates a new copy
that temporarily hides the old one.

See also

DEFDBL, DEFSTRING,
DIM, ERASE


DEFSTRING Variable1
[,Variable2…]

LBASIC keyword

Does

Declares variable Variable1 (and optionally Variable2
…) as a string value

Notes

Strings are stored as a variable length entity; however, their
maximal length is limited by 255 by the allocated storage.
Re-declaring a variable creates a new copy that temporarily hides the
old one.

See also

DEFINT, DEFDBL, DIM,
ERASE


DIM Variable1(n[,m])
[,Variable2(n2[,m2]) …]

LBASIC keyword

Does

Declares variable Variable1 (and optionally Variable2
…) as a numeric array of dimension n (one dimensional) or
nxm (2 dimensional).

Notes

Only numeric arrays are allowed. Array indices are one based as
this is the way BASIC usually works. OPTION BASE is not
supported. Re-declaring a variable creates a new copy that
temporarily hides the old one.

See also

DEFINT, DEFSTRING,
DEFDBL, ERASE


DO [WHILE Exp|UNTIL Exp]

LBASIC keyword, compile only

Does

Starts a conditional or unconditional loop.

Notes

This is a part of one of four possible conditional and one
unconditional loop commands, which are: DO WHILE ex ….. LOOP,
DO UNTIL ex ….. LOOP, DO …. LOOP WHILE ex, DO
…. LOOP UNTIL ex
and DO …. LOOP. Obviously, more
combination are possible. Note that UNTIL ex corresponds to
WHILE NOT(ex).

Loop (even unconditional) can be also terminated via EXITIF.

Can be used in procedure definition only.

Example

The following fragment just reads numbers from keyboard and prints
square roots. It is terminated by negative value or 0. In the first
case, however, the error is captured by EXITIF. Note that
this code has to be a part of procedure and will not run from command
line

DEFDBL Val
DO
INPUT Val
EXITIF (Val<0)
PRINT "SQRT(",Val,")=",SQRT(Val)
LOOP WHILE(Val>0.0)
ERASE Val

See also

LOOP, EXITIF


ECHO [File Name]

LIMS directive

Does

Records the following input lines to file FileName. If no
argument is given, closes the current file and stops recording.

Notes

The session can be replayed by LOAD File Name. This is
useful for debugging, creating fast PROCEDURE files etc. Since it is
a directive, filename has to be constant and should not be quoted.
Also, it has to be called from command line, not from procedure.

See also

LOAD


ELSE

LIMS keyword, compile only

Does

Starts alternative part of IF ex THEN …. ELSE … ENDIF
that gets executed when ex is false.

Notes

IF THEN … ELSE … ENDIF blocks can be nested and span
multiple lines of code.Can be used in procedure definition only.

Example

This version of PrintFilled will print nicer and more compact
record of each step according to the number of nodes filled within
that step–one or two node numbers if one or two nodes were filled;
two node numbers and ellipses if more than two were filled.:

PROC PrintFilled
DEFINT NF
SORESETFILLED()
LET NF=SONUMBERFILLED()
IF (NF=1) THEN
PRINT SONEXTFILLED()," : ",SONUMBEREMPTY()," To Go!"
ELSE
IF (NF=2) THEN
PRINT ,SONEXTFILLED(),SONEXTFILLED()," : ",SONUMBEREMPTY()," To Go!"
ELSE
PRINT ,SONEXTFILLED(),SONEXTFILLED(),"... : ",SONUMBEREMPTY()," To Go!"
ENDIF
ENDIF
ERASE NF
ENDPROC

See also

IF, ENDIF


ENDIF

LBASIC keyword, compile only

Does

Terminates IF ex THEN … ENDIF or IF ex THEN …
ELSE … ENDIF
block.

Notes

IF blocks can be nested. Can be used in procedure
definition only.

Example

See ELSE example

See also

IF, ELSE


ENDPROC

LIMS keyword, compile only

Does

Terminates the current procedure definition.

Notes

Compiles RETURN into the procedure code. Can be used only
in procedure definition. On successful termination of this command,
the procedure can be executed (X flag is set).

See also

PROC, RETURN, CALL


ERASE <Variable1>
[,<Variable2>…]

LBASIC keyword

Does

Erases variable(s) Variable1 (and optionally Variable2
…) from memory

Notes

Any variable type can be erased. Erasing removes only the latest
definition of Variable1 etc.

See also

DEFINT, DEFSTRING,
DIM, DEFDBL


EXECUTE s1 [, s2, ….]

System extension keyword

Does

Executes external application using system function.
Command is specified in string s1, additional strings may
specify parameters or switches for the command.

Notes

The command line is created by concatenation of all string
arguments, adding single space between them. LIMS waits for the
command to finish before resuming execution. If command is a console
application, its output will be redirected to LIMS console.

Example

To list the contents of current directory into LIMS console (on
Windoze system, use ls otherwise):

EXECUTE "dir"

To list all LBASIC  files, use

EXECUTE "dir", "*.lb"

or

EXECUTE "dir *.lb"

See also

SPAWN


EXIT

Quits LIMS.

See also

QUIT


 

EXITIF <Exp>

LIMS keyword, compile only

Does

Terminates current DO…LOOP or FOR … NEXT
loop if Exp is true.

Notes

Provides loop termination from the middle. It is necessary for
error handling, especially as there is no GOTO statement,
but it should not be used otherwise in sake of–blah,
blah–structured programming.

Example

See DO example

See also

DO, LOOP, FOR,
NEXT


FICLOSE (i)

File extensions keyword

Does

Closes the file i and frees the handle for other file
requests.

Notes

Necessary if you want to re-use handle, recommendable as soon as
possible to preserve data integrity.

Example

See FIOPEN example.

See also

FIOPEN, FIFREEFILE


FIFORMAT [s]

File extensions keyword

Does

Specifies that numbers printed to files are to be formatted using
C formatting string s.

Notes

Default is “%lg” and is restored whenever the
command is called without parameter. See any C-programming text for
available formats.

See also

FIPRINT


FIINPUT i,…

File extensions keyword

Does

Tries to read values of variables following i from file
i. The value of file handle might be given as either
immediate number or a variable. This means no expressions in
this situation. If you need one, use LET statement
before this one.

Notes

That file should have been opened for READ. Values are
expected separated by commas, whitespace or newlines. Strings have to
be quoted in double quotes and may enclose whitespace characters,
however, there is no way to put a double quote inside a string. As a
whole file extension unit this is an emergency way to deal with
imminent needs rather than a stable and comprehensive facility for
programming file handling tasks.

Note the spelling of the word: “FIINPUT” and the
“feature” restriction on i.

See also

INPUT, FIOPEN, FICLOSE


FIOPEN i,s1,[s2]

File extensions keyword

Does

Opens file number i with name s1 for access
described by string s2. S2 can be either “R”
for read, “W” for write and “A” for write-append
access.

Notes

Case of s2 is not significant, following letters in s2
are ignored. i is a handle that should have been obtained
via FIFREEFILE(). Number of files that can be opened is
limited to 5.

Example

This subroutine prints tabulator separated values of fill time on
rectangular grid. It assumes nodes numbered by row, arranged on MxN
grid. M and N are passed as first two arguments, the third one is the
file name:

PROC PrintTSV
defint M,N,i,j,k,Index
defstring FName
IF (ARGC<>3 OR NOT ISSTRING(ARGUMENT(3)) OR ISSTRING(ARGUMENT(2)) OR \
ISSTRING (ARGUMENT(1))) THEN
CONSMESSAGE "Call As PrintCSV M,N,Filename"
STOP
ENDIF
LET M=ARGUMENT(1)
LET N=ARGUMENT(2)
LET FName=ARGUMENT(3)
LET Index=0;
LET i=FIFREEFILE()
IF ((i>5) OR (i<1)) THEN
CONSMESSAGE "No More Files Available"
STOP
ENDIF
FIOPEN i,FName
FOR j=1 TO N
FOR k=1 to M
FIPRINT i,SOTIMETOFILL(Index)
IF k<M THEN
FIPRINT i,CHRS(9)
ENDIF
LET Index=Index+1
NEXT K
FIPRINTNL i
NEXT j
FICLOSE i
ERASE FName,M,N,i,j,k,Index
ENDPROC

See also

FICLOSE, FIFREEFILE


FIPRINT i,…

File extensions keyword

Does

Prints whatever values are following file specifier i
into the file i.

Notes

This file should have been opened for WRITE or APPEND.
No extras are inserted – commas, spaces or tabs have to be printed
using string arguments (this is different than PRINT).

Example

See FIOPEN example

See also

FIOPEN, FICLOSE,
FIPRINTNL


FIPRINTNL i

File extensions keyword

Does

Prints newline into the file i.

Notes

Might work better if the file has been opened for WRITE
or APPEND.

Example

See FIOPEN example

See also

FIPRINT, FIOPEN,
FICLOSE


FOR Var=<Start Exp> TO <End
Exp>

LBASIC keyword, compile only

Does

Starts the FOR … NEXT counted loop

Notes

Numerical value Val is assigned value of Start Exp.
If it is larger than End Exp, loop is skipped. Otherwise
commands between FOR and corresponding NEXT are
executed, Var is incremented by 1 and loop is tried again
til Var exceeds End Exp.

Var should exist. DOWNTO or STEP
modifiers are not supported. Changing the value of Var is
possible but repulsive practice.

Example

Prints table of squares for 1 to 10:

PROC Table
DEFINT i
FOR i=1 TO 10
PRINT i,i*i
NEXT i
ERASE i
ENDPROC

See also

NEXT, EXITIF


FORGET Var1 [,Var2…]

LBASIC keyword

Does

Erases variables Var1, Var2 ….

Notes

If multiple variables with same name exist, the last one is
erased. Number of variables is limited, so procedures should clean
their mess. The type of variables is irrelevant.

See also

DEFINT, DEFDBL,
DEFSTRING, DIM


FORMAT [s]

LBASIC keyword

Does

Sets the format of numerical values printed to correspond to C
formatting string s.

Notes

Check your C text for formats. If s is missing, default
is used.

Example

Prints several precisions of a number PI:

PRINT PI
FORMAT "%12.6lg"
PRINT PI
FORMAT "%16.10lg"
PRINT PI
FORMAT
PRINT PI

See also

FIFORMAT, PRINT


HELP Topics

LIMS Directive

Does

Displays help for Topics if available. This command opens the reference
in default HTML browser. Topics can be one of the LBASIC keywords. If no help for
this topics is available, the file is opened at beginning

Notes

Directive — no quotes or expressions. Implemented since 5.0.3, but system dependent.

See also

HINT


HINT Topics

LIMS Directive

Does

Displays short help for Topics if available. Otherwise displays topics list.
Topics can be one of the LBASIC keywords or a few categories (HINT will list them).
The information is displayed in console.

Notes

Directive — no quotes or expressions. Implemented since 5.0.3, system independent.

See also

HELP


IF Exp THEN

LIMS keyword, compile only

Does

Starts IF … THEN … ELSE … ENDIF or IF … THEN … ENDIF
construct

Notes

Expression should evaluate to numeric value; 0 is taken to be
false, non-zero to be true. Nesting is possible. For simple value
selection, function IFF() might be used.

Example

See ELSE example.

See also

ELSE, ENDIF, IFF


IGNOREERR Proc1

LIMS directive

Does

Sets Proc1 attributes to ignore errors within the
procedure.

Notes

Ordinarily, error triggers abortion of the program. Within
ignoreerr procedure, however, execution continues with next
statement. The error number is, however, present and may be recovered
by LASTERR() function. 0 means proper execution. May cause
problems with breaking program execution.

Example

Procedure Annoy is forcing user to get a file name till
it is successfully read. It assumes that “Auto” format
selection works, i.e., the file name extension will work. Note that
there might be unhandled errors occurring in this procedure.

PROC Annoy
DEFSTRING Name
DO
Name=GETFILENAME("Input File to be Read","")
SETINTYPE "AUTO"
READ Name
LOOP WHILE LASTERR()
ENDPROC
IGNOREERR Annoy

See also

PROTECT


INPUT V1,….

LBASIC keyword

Does

Reads value into variable(s) V1 etc. from console.

Notes

Whether keyboard or file is read depends on LOAD
statements preceding INPUT. One value per line is expected,
either number or string, depending on variable type.

Example

Procedure Browse reads node number and displays
information about the node as long as the number is valid. To abort,
input -1:

PROC Browse
DEFINT i
DO
INPUT i
EXITIF ( (i<0) OR (i>=SONUMBERNODES) )
PRINT "Node",i," : p=",SOPRESSURE(i)," Fill=",SOFILLFACTOR(i)
LOOP
ENDPROC

See also

FINPUT


LET Var1=Exp

LBASIC keyword.

Does

Assigns value of Exp to variable Var1.

Notes

Variable Var1 might be string, numerical value or
specified array element. Exp should evaluate to appropriate
type. Unlike most BASIC dialects LET is not optional but
required. Multiple assignments are not possible either.

See also

DEFDBL, DEFSTRING,
DEFINT, DIM, ERASE


LOAD [<File Name>]

LBASIC directive

Does

Loads file File Name as if it were typed from command
line. If file name is missing, opens “file open” dialog box
to select one.

Notes

If file File Name does not exist, it tries File
Name.lb
. Loaded files can be nested. File config.lim
from the current directory is actually loaded every time LIMS is
started. Can be use to replay sessions, if proper ECHO
command was given.

Since it is directive, do not quote the strings.

See also

ECHO


LOOP [WHILE Exp|UNTIL Exp]

LBASIC keyword, compile only

Does

Ends DO … LOOP block.

Notes

Both conditional and unconditional forms are supported. With WHILE
the looping takes place only if Exp is true (non zero), with
UNTIL if it is false (0). Unconditional LOOP jumps
always to the corresponding DO.

Example

See DO example.

See also

DO, EXITIF


MARK

LBASIC Directive

Does

Marks (increases mark number) current state of procedures and
variables. Used in conjunction with RELEASE to restore the
state of interpreter after loading and running strange
scripts/procedures

Example

MARK
REM Loading strange version of auto
LOAD ns_7
AUTO
RELEASE
REM Back to our normal auto
LOAD auto

Notes

The MARKRELEASE operation wipes out any new
variables and procedures created after MARK. It can not
restore the values in variables defined prior to MARKing. It
also cannot ressurect procedures and variables explicitly FORGETed
or ERASEd after MARK.

The directives were created to avoid naming conflicts between
procedure names and possible variable space overflow.

See Also

RELEASE, FORGET,
ERASE


MESSAGE s

Console extension keyword

Does

Displays string s on console as a message appropriate for
given interface.

Notes

s can be any string expression.

See also

GETFILENAME, YESORNO


NEWWIDOW

Console extension keyword

Does

Switches interpret input and output (i.e., PRINT and
INPUT) to a different window if the system supports it.

Notes

Even if there is a teletype window, this statement has some subtle
effects. Most importantly, LOADing files will no longer
influence INPUT. There is only one extra window available,
repeated calls do nothing.

See also

OLDWINDOW


NEXT Var

LBASIC keyword, compile only

Does

Terminates FOR … NEXT loop.

Notes

It has to have a corresponding FOR statement with
appropriate variable.

Example

See FOR example

See also

FOR, EXITIF


OLDWINDOW

Console extension keyword

Does

Switches interpret input and output (i.e., PRINT and
INPUT) to the same window as LIMS system uses.

Notes

Even if there is a teletype window, this statement has some subtle
effects. Most importantly, LOADing files will influence
INPUT again. It is meaningful only if NEWWINDOW was
executed.

See also

NEWWINDOW


OPENTRACER Name, Type, Value, Node

Tracer extensions keyword

Does

Starts tracing of Value at Node

Notes

Name is a string that identifies tracer (needed for
CLOSETRACER, too). For file output it is name of the file.
Type determines tracer type. 1 means file, 2 means screen.
Value determines what is traced. 1 is pressure, 2 is fill
factor, 3 is flowrate. Value of 0 means that node numbers
being filled are traced. Node is the node number.

Since version 4.2, thermal and cure values may be traced as well,
assuming that thermal solution is possible and enabled. In this case,
additional values of Type are 4 for mid-plane temperature, 5
for top temperature, 6 for bottom temperature and 7 for cure value.

Example

The following will open files to record state of node Gate
(Numeric value). Code fragment:

OPENTRACER "Gatepres",1,1,Gate
OPENTRACER "Gateflow",1,3,Gate
REM Do as you wish here
CLOSETRACER "Gatepres"
CLOSETRACER "Gateflow"

See also

CLOSETRACER


PRESCAN <File name>[,<File Type>]

Input keyword

Does

Checks file File name for validity and obtains some
useful information.

Notes

File type is optional string specifying type of the file,
in case SETINTYPE information or file name extension is
wrong. Information is available in PS…() functions after
PRESCAN is called.

See also

READ, SETINTYPE,
PSISOK(), PSISTHERMAL(),
PSNUMBERNODES(), PSNUMBERELEMS()


PRINT Var1, …

LBASIC keyword

Does

Prints values of whatever expressions are following to screen.

Notes

Expressions should be in comma separated, optionally bracketed,
list. For numerical values, format is influenced by last FORMAT
command issued.

Example

Procedure NI will print information concerning node passed as
argument to it:

PROC NI
DEFINT i
LET i=ARGUMENT(1)
PRINT "Node(",i,"):"
PRINT "p=",SOPRESSURE(i),"Fill=",SOFILLFACTOR(i),"Flow=",SOFLOWRATE(i)
ERASE i
ENDPROC

See also

FORMAT, FIPRINT,
STR()


PROC <Proc Name>

LBASIC keyword, interpret only

Does

Starts definition of procedure Proc Name

Notes

Whatever follows PROC prior to ENDPROC is, with
exception of directives, going to be compiled into that procedure.
The compiled code can be run by typing Proc Name or CALL
ing it, either from command line or from another procedure.

Example

This example just saves some typing. Procedure will set the input
format to auto and then load the file mentioned–without quotes–on
its command line:

PROC RE
SETINTYPE "AUTO"
READ ARGSTRING()
ENDPROC

See also

ENDPROC, RETURN,
STOP, FORGET


PROTECT Procname

LBASIC directive

Does

Sets erase protection for procedure Procname.

Notes

No way to revert this thing. Procname becomes a system
command after this.

See Also

IGNOREERR


QUIT

LBASIC directive

Does

Quits LIMS system

Notes

Directive! Not useful to terminate procedures!

See Also

STOP, EXIT


RANDOMIZE [<Seed>]

LBASIC (System extension) keyword

Does

Sets the seed for the next pseudorandom sequence. If Seed
is omitted, the value of system timer is used.

Notes

By specifying the same Seed you should obtain the same random
number sequence. If RANDOMIZE is not called prior to first evaluation
of RANDOM(), RANDOMIZE is called implicitly prior to this evaluation.
There might be a problem if the host system does not provide system
timer. Then RANDOMIZE without seed would generate always the same
sequence.

See Also

RANDOM()


READ [<File Name>[,<File Type>]]

Input extension keyword

Does

Reads File Name into solver.

Notes

File Type allows to specify a format the file is in, in
case it does not end in proper extension (.in or .dmp) or a different
input format was set using the SETINTYPE. If file name is
not provided, standard “file open” dialog box will pop up.

Example

This will read crap.in as a dump file (LIMS 4 format),
regardless of extension that is default for LIMS 3.x input files:

READ "crap.in", "DMP"

See Also

SETINTYPE, PRESCAN


REGAPPEND Name,Type,i1,i2….

Does

Creates a region with name Name and type given by the first
letter in Type. Type in as much as you want, can be “Element”,
“Node” or “Gate”.

Notes

The “gate” region is just a node region restricted to
gate setting.

If region with Name exists, listed nodes or elements are
appended to it, assuming that the type matches!

See Also

REGCREATE, REGEXCLUDE,
REGREMOVE


REGCREATE Name,Type,i1,i2….

Does

Creates a region with name Name and type given by the first
letter in Type. Type in as much as you want, can be “Element”,
“Node” or “Gate”

Notes

The “gate” region is just a node region restricted to
gate setting.

If region with Name exists, command fails.

Example

REGCREATE "bottom","elems",1,2,3,4,5,6,7,8,9,10,11,12,13,14
SCALEPERM("bottom",10)

See Also

REGAPPEND, REGEXCLUDE,
REGREMOVE


REGEXCLUDE Name,Type,i1,i2….

Does

Searches for a region with name Name and type given by the
first letter in Type. If it is found, entities i1, i2 … are
removed from the list. If entity is not in, nothing happens, if
region remains empty after exclusion, it is removed.

Notes

If Name does not exist, command fails.

See Also

REGCREATE, REGAPPEND,
REGREMOVE


REGIONS Wildcard

Does

Directive that will list the defined regions and their type.

Notes

Wildcards are really very simple. Star at the end expands into any
string. Thus “*” matches all. No comparison is done after
*, so “*a” matches all as well. Otherwise it behaves like
WORDS ore VARS, so no quotes or expressions around wildcard.


REGLOAD FileName, Wildcard, Append

Does

Loads all regions matching Wildcard from file FileName
into the active
region list. If append is non-zero, existing file
is appended to existing
regions, otherwise those are erased first.

Notes

The file format is repetition of the following block:

  Name
  Type
  Count
  <data 5 numbers per line>

Type is really established using the first letter only.

As of version 5.0, the format is much more flexible. Essentially,
each block consists of name line (name followed by whatever user
wishes – it is not read), type line (where only first non-white space
character matters), count line (where the first number matters) and a
set of lines containing numbers – 1 or more per line. White space and
empty lines should not matter any longer (They used to fail reading
in 4.2). Note that regions are still saved in the format described
above and this format is used by GUI as well.

Wildcards are really very simple. Star at the end expands into any
string. Thus “*” matches all. No comparison is done after
*, so “*a” matches all as well. Otherwise it behaves like
WORDS ore VARS, so no quotes or expressions around wildcard.

See Also

REGSAVE


REGREMOVE Wildcard

Does

Removes any region whose name matches the wildcard string
Wildcard.

Notes

Wildcards are really very simple. Star at the end expands into any
string. Thus “*” matches all. No comparison is done after
*, so “*a” matches all as well.

See Also

REGCREATE, REGAPPEND,
REGEXCLUDE


REGSAVE FileName, Wildcard, Append

Does

Saves all regions matching Wildcard into file FileName.
If Append is non-zero, existing file is appended to, otherwise
it is truncated.

Notes

The file format is repetition of the following block:

  Name
  Type
  Count
  <data 5 numbers per line>

Type is really established using the first letter only.

Wildcards are really very simple. Star at the end expands into any
string. Thus “*” matches all. No comparison is done after
*, so “*a” matches all as well. Otherwise it behaves like
WORDS ore VARS, so no quotes or expressions around wildcard.

See Also

REGLOAD


RELEASE

LBASIC Directive

Does

Restores the state of procedures and variables to the state
“recorded” by MARK. Brings the state of interpreter
after loading and running strange scripts/procedures into normal

Example

See MARK example.

Notes

The MARKRELEASE operation wipes out any new
variables and procedures created after MARK. It can not
restore the values in variables defined prior to MARKing. It
also cannot ressurect procedures and variables explicitly FORGETed
or ERASEd after MARK.

The directives were created to avoid naming conflicts between
procedure names and possible variable space overflow.

See Also

MARK, FORGET, ERASE


REM

LBASIC command

Does

Nothing

Notes

Useful to insert remarks as it ignores arguments and comment out
code.

Example

REM This line does nothing
REM PRINT "And this will not print"

RESETFILLED

Solver extension keyword

Does

Resets the queue of filled/emptied node indices to beginning.

Notes

The solver can fill more than one node in a time step. The indices
of filled nodes are available to user via SONEXTFILLED() and
SONEXTEMPTIED() functions. However, this functions read each
node once; next call returns next node index or -1 if no other node
is available. If RESETFILLED is issued, next call to this
functions will return first filled/emptied node again.

Example

Procedure that prints all filled nodes. RESETFILLED is
needed just in case the caller already tinkered with the indices.
Demonstrates also handling of indices without counter (opposite to
tutorial):

PROC Filled
DEFINT i
RESETFILLED
DO
LET i=SONEXTFILLED()
EXITIF (i=-1)
PRINT i
LOOP
ERASE i
ENDPROC

See Also

SONEXTFILLED(), SONEXTEMPTIED(),
SONUMBERFILLED()


RETURN

LBASIC keyword

Does

Terminates current procedure and returns to caller.

Notes

ENDPROC really compiles RETURN to the end of
currently defined procedure; there is no need to use it unless
several exit points are desirable. Generally, it is considered good
programming practice to avoid multiple entry/exit points.

Example

Rather silly one:

PROC tst
PRINT "Got Here "
RETURN
PRINT "You will not see this"
ENDPROC

See Also

ENDPROC, STOP


SCALEPERM ElNumber, Factor1 [, Factor2[,
Factor 3]]

Solver extension keyword

Does

Scales permeability within element ElNumber by Factor1.
If Factor2 or Factor 3 are given, scaling is
anisotropic – by Factor1 in major principal direction, by
Factor2 in the second largest one, and — if the element is
3D — by Factor3 in the last principal direction.

Notes

Element region name can be used instead of element number.

Negative scaling or scaling to 0 is not permitted. You can not
specify more factors than is the dimension of element(s) to be
scaled. Be very careful to build regions from elements of same
dimension!

If anisotropic scaling is used, there must be two or three
distinct principal values of permeability. Otherwise, command fails.

Also, the major and minor principal directions might switch places
if the minor principal permeability is scaled to be bigger than the
major one. This has the effect that in some cases scaling by
reciprocal values of Factor1 and Factor2 does not
revert the permeability to the original state!

If an error occurs (nonexisting element, 0 scaling, etc.) solver’s
state is not changed.

Example

To reduce permeability by 10% throughout the mold:

...
DEFINT i
....
FOR i=1 TO SONUMBERELEMS()
SCALEPERM i,0.90
NEXT i
...

This might be used to accommodate changes of viscosity due to resin
reacting with time etc., but such generally some expertise is
required to use this command.

See also

SETPERM, SCALETHICK,
SETTHICK


SCALETHICK ElNumber, ThScale [, VfScale,
Kscale]

Solver extension keyword

Does

Scales thickness of element ElNumber by factor ThScale.
If optional parameters are given, volume fraction and permeability
are scaled independently by factors of VfScale and Kscale
respectively. Otherwise, VfScale is taken to be 1/ThScale
and Kscale to be ThScale2, which
corresponds to usual physical reality, i.e., the volume of
reinforcement being constant and flow governed by lubrication
theory..

Notes

Element region name can be used instead of element number.

For 1D (bar) element the command scales cross section. For 3D
element it fails.

Many things can go wrong with this command! If error occurs, no
change happened.

Physically, as of release 4.0.03 this command is proper only if
the associated control volumes are empty. If the volumes contain
resin, no attempt is made to satisfy the continuity. Note that in
such a case the change in thickness can not occur instantly as this
command assumes, due to viscous nature of the flow.

See also

SETPERM, SCALEPERM,
SETTHICK


SELECTSTRING Prompt, String1
[,String2…]

Console extension keyword

Does

Displays proper selection menu to allow user to pick from strings
String 1 etc., Prompt is used for title of this
menu.

Notes

Does not return value. Use function SELECTEDSTRING()
to get users choice. This is a result of calling conventions for
functions — no variable number of arguments.

See Also

SELECTEDSTRING()


SETELEMDATA (Element,DataIndex,Value)

Does

Sets property determined by DataIndex within the element
Element to Value if possible. Connectivity can not be
changed.

Possible Index Table

1 Type (1=Triangle, 2= Quadrangle, 3=Tetrahedron, 4=Wedge, 5=
Brick, 6= 1D Bar) (GET only)
2 Thickness
3 Fiber volume fraction
4 Preform conductivity k
5 Preform Alfa
10 Permeability Kxx (x aligned with two first nodes in element)
11 Permeability Kxy
12 Permeability Kyy (y orthogonal to x, into the element)
13 Permeability Kzz (z orthogonal to x,y, into the element)
14 Permeability Kzx
15 Permeability Kyz
20 Temperature at top surface
21 Boundary condition coefficient (BCC) at top surface
22 Temperature at bottom surface
23 Boundary condition coefficient (BCC) at bottom surface
24 Temperature of preform
100 Number of nodes (2, 3, 4, 6 or 8 now) (GET only)
101 First node (GET only)
102 Second Node (GET only)
103 Possibly third Node (GET only)
104 Possibly fourth node (GET only), etc.

Notes

Element region name can be used instead of element number.

Some settings are ignored, some violate physics.

Performance suffers by using general SET… command. Instead, use
specific commands like SETPERM whenever
possible.

The boundary conditions on the upper and lower surface is
determined from equation (? stands for top or bot, n is outer
normale):

dT/dn+BCC?.(T-T?)=0

See Also

GETELEMDATA


SETFILLFACTOR Node,<Fill factor>

Solver extension keyword

Does

Sets fill factor of node Node to Fill factor.

Notes

Fill factor should be between 0 and 1. May be useful for resetting
some action or opening vents in filled parts.

Example

Clear the mold (may wreak havoc on gates if any open):

PROC Clear
DEFINT i
FOR i=0 TO SONUMBERNODES()
SETFILLFACTOR i,0.0
NEXT i
ERASE i
ENDPROC

See Also

SOFILLFACTOR(), SETGATE


SETGATE Node, Type, Val [,Val2|Cure]
[,Cure|T][,T]

Solver extension keyword

Does

Opens gate/vent at node Node. Type of the gate is
specified by Type, Val and possibly Val2,
Cure and T parameters.

Notes

Node or gate region name can be used instead of element number.

Type may be (1) Pressure (2) Flow rate (3) Temperature
(4) Cure (5) Vent and (6) Mixed or, (0) for no gate (close existing).
Val gives pressure for vent or pressure gate, flow rate for
flow rate gate, temperature or cure value for appropriate gates. It
is ignored for “no gate” and may be ommitted. In case of
mixed gate, Val2 is used in

Flow rate = Val + Val2.Pressure.

relation in mixed gate. In cases of inlet gates (pressure, flow
rate, mixed) values of cure and temperature (T) might follow
directly to avoid repeating calls

Fill factor is set to 1 for inlets and not changed for vents. If
this is not what you want, use SETFILLFACTOR in parallel.

Example

gate switching:

SETGATE OldGate,0,0
SETGATE NewGate,1,500000,0.0,273.0

or

SETGATE NewGate,1,500000
SETGATE NewGate,5,0.0
SETGATE NewGate,4,273.0

See Also

SETFILLFACTOR, SETORIGPRESSURE


SETGLOBALTEMP(T)

Does

Sets the global temperature for cure-only solution to T.


SETINTYPE s

Input extension keyword

Does

Sets expected input format to s.

Notes

Currently, five or six types are supported. “IN” is a
LIMS 3.x input file, “DMP” is a LIMS 4 text dump file,
“BND” is LIMS 4 binary dump file, “GMSH” is GNUMesh mesh file and “AUTO”
switches according to the file name extension. The optional sixth
type, “MEM” reads data from BinPad, a shared memory area,
provided by another application via lcmaster.dll and lcbinpad.dll.
This is possible only on Win 32 platform and must be enable during
compilation.

See Also

READ, PRESCAN


SETMESSAGELEVEL n

Input extension keyword. New to 4.1.

Does

In slave version of LIMS it sets the amount of information various
messages send out to the master. In interactive version it just sets
proper internal variables. N has to be 0, 1 or 2, with the
following meaning:

0

No communication, dialogs (GETFILENAME(),
etc.)fail, MESSAGE returns success but is
ignored. INPUT also fails.

1

The same as above, but notification string is sent to master.

2

Interactive mode, notification strings and dialog text are
sent, master must respond.

Notes

LIMS behavior is influenced only in the slave version but
variables are set in interactive version too (debugging?). For more
details, see LIMSCOMM Programming Guide

See Also

SETOUTPUTLEVEL, GETMESSAGELEVEL()


SETMODE(n)

Does

Sets solution mode to isothermal (n=0), cure-only (n=1) or full
temperature-cure-flow (n=2).

Notes

It is only easy to go to simpler mode. Adding cure, and especially
the temperature solution to the problem is likely to leave you with
insufficiently specified problem and you will have to specify extra
boundary conditions, etc.. Also, when going to cure-only mode from
non-isothermal mode, do not forget to set the global temperature.

In 3D problems, non-isothermal solution is not available (and
cure-only is untested).

To include temperature but not cure you will have to set inlet
cure to zero and reaction to zero, by giving proper table or setting
Kamal parameters A1 and A2 to 0. The solution
for cure is not skipped anyway, but if you are using iterative solver
it will only run a single iteration, thus saving you some time.

See Also

SETGLOBALTEMP ,
SETTEMPSOLVER


SETNODALDATA(Node,NData_Index,Value)

Does

Sets the property designated by NData_Index of node Node
to Value.

Possible Index Table

1 X coordinate
2 Y coordinate
3 Z coordinate
10 Pressure
11 Flow rate
12 Fill factor
13 Time to fill
14 Cure
15 Midplane temperature
16 Top temperature
17 Bottom temperature
50 Gate type (0 for none, see SETGATE)
51 First gate parameter
52 Second gate parameter
53 Gate cure
54 Gate temperature
100 Number of elements the node is in (Can not set)
101 First element (Can not set)
102 Second element (Can not set)
103+ Additional elements (Can not set)

Notes

Node region name can be used instead of element number.

Use with care. Some indices are ignored for set, some other might
cause violation of fundamental physical principles and some, being
results, have no influence whatsoever.

Use proper one-purpose commands whenever possible.

Using generic “SET” command may drastically reduce
performance!

See Also

GETNODALDATA


SETORIGPRES Pres

Solver extension keyword

Does

Sets the pressure in mold cavity to Pres.

Notes

Once a pressure is set, more complex algorithm is used for void
tracking etc. As long as no vents were opened and this is not
specified, mold is supposed to be perfectly vacuumed. If vent is
opened or original pressure set, this state is violated.

See Also

SETGATE


SETOUTPUTLEVEL n

Input extension keyword. New to 4.1.

Does

In slave version of LIMS it sets the amount of information PRINT
command send out to the master. In interactive version it just sets
proper internal variables. N has to be 0, 1 or 2, with the
following meaning:

0

All printouts are discarded.

1

Printouts going to NEWWINDOW console
are sent to master, the rest (OLDWINDOW
console) is discarded.

2

Everyting printed goes to master.

Notes

Functional only in the slave mode binary but variable value is
maintained even in interactive version (debugging?). For more
details, see LIMSCOMM Programming Guide

See Also

SETMESSAGELEVEL, SILENT,
GETOUTPUTLEVEL()


SETOUTTYPE s

Output extension keyword

Does

Sets the format for subsequent WRITE operation to s.

Notes

Recognized types are “MESH” for LIMS 3.x mesh file,
“HIST” for data in LIMS 3.x history file, “DUMP”
for LIMS 4 text dump file (can be read in), “TPLT” for
TECPLOT 7 format, “NEUT” for PATRAN 2.5 neutral file and
“PRES” for PATRAN 2.5 result file. In 4.1, additional types
are “BIND” for LIMS 4 binary dump – faster but non-portable
version than the text based “DUMP” and – optionally –
“MEMO” which writes data to shared memory provided by
lcmaster.dll and lcbinpad.dll from within another application. Needles
to say, that is Win32 only feature and must be enabled during
compilation.From 5.0.7, “GMSH” allows output for GNUMesh open source package.

Example

See WRITE example

See Also

WRITE


SETPERM ElNumber|Region, CSFlag, Kxx[, Kxy,
Kyy[, Kzx, Kyz, Kzz ]]

Solver extension keyword

Does

Sets the permeability of element number ElNumber or all
elements within region Region to Kxx, Kxy,
Kyy, etc., depending on element dimension. The coordinates
for permeability components are specified by CSFlag. :

 

CSFlag

Coordinate System

0

Element coordinate system. This one is constructed using first
two nodes for x axis, first and third for y axis (orthogonalized)
and, for 3D elements, first and last for z axis (orthogonalized).
This is the C.S. LIMS uses internally, so no transforms are
needed. Since the node numbering may be uncertain, it is best
suited for isotropic permeability only.

1

Global coordinate system (x,y for 2D, x,y,z for 3D elements).
Permeability is transformed into element C.S. internally.

2

User specified coordinate system. The axes are specified using
SETREFAXIS command prior to SETPERM.
Default values are x-y-z coordinate axes. Permeability is
transformed into element C.S. internally.

Notes

Dimension of element(s) and number of permeability components
should match.

The specified C.S should be appropriate for the element (i.e.,
parallel for 2D elements).

For 1D elements C.S. does not matter.

Also, note that permeability has to be a positive definite tensor.
This is checked by the program, as the solver might fail if this is
not the case. If this assumption is violated, error occurs and
element state is not changed.

See also

SCALEPERM, SCALETHICK,
SETTHICK, SETREFAXIS


SETREFAXIS Axis, X, Y, Z

This command sets the internal coordinate system used with SETPERM
command. Axis is integer that specifies which axis is to be
set (1=x, 2=y and 3=z). X, Y and Z are
components of the directional vector in global Coordinates

Notes

Vector is normalized internally. However, user must take care that
the coordinate system he or she specifies is orthogonal, otherwise
strange things will happen.

See also

SETPERM


SETTEMPBC
(Elem,Ttop,BCCtop,Tbot,BCCbot,Tpref)

Does

sets the thermal boundary conditions at element Elem. Tpref
is temperature of preform, Ttop, BCCtop, Tbot
and BCCbot provide the boundary conditions on the upper and
lower surface by (? stands for top or bot, n is outer normale):

dT/dn+BCC?.(T-T?)=0

Notes

Element region name can be used instead of element number.

Note that the preform temperature works only for empty
elements. Also, to use this meaningfully, the solution mode should be
set to 2.

See Also

SETMODE


SETTEMPSOLVER UseIter [,Tolerance]

Solver extension keyword

Does

Selects iterative (UseIter is nonzero) or direct solver.
Optional parameter Tolerance gives the tolerance used to stop
iterations.

Notes

The tolerance is the euclidean norm of correction over the
euclidean norm of result (relative). The default values are iterative
solver and tolerance 10-4. The iterative solver is somehow
faster than the direct in many cases. Also, if you set the cure
reaction to 0 — and this can be done only by adjusting the
parameters in equation or table — it will skip the cure computation
in one step, as the system is now homogenous. Overall, you may have
your computations running three times faster with iterative solver.

If there are problems with convergence and warnings are enabled,
you get the warning. Direct solver should be used in such a case.

See Also

SETMODE, WARNINGS


SETTHICK ElNumber, NewH [, NewVf]

Solver extension keyword

Does

Sets the thickness of element ElNumber to NewH.
If NewVf is omitted, the volume fraction is scaled to keep
the reinforcement volume constant, otherwise it is changed to new
value NewVf.

Notes

Element region name can be used instead of element number.

Many things might go wrong here!. Error check should capture
nonexistent elements and improper volume fraction. If error occurs,
no changes were made to solver internal data.

The elements associated control volumes should be empty, otherwise
continuity of flow is violated in a serious manner.

If permeability is to be set too, use SETPERM.

The usage of SETTHICK might extract heavy performance penalty.

See also

SETPERM, SCALETHICK,
SCALEPERM


SETTIME Time

Solver extension keyword

Does

Sets the current time in simulation.

Notes

Simulation deals with relative time. When LIMS is loaded, time is
0. Then it is always incremented with each filling step. Set it to 0
between problems.

See Also

SOCURRENTTIME()


SILENT <Switch>

LBASIC keyword

Does

If Switch is true, disables PRINT. Otherwise
enables it.

Notes

This is useful if procedure prints some text you do not wish to
see, say tracing information. Do not forget to re-enable it
afterwards. Works even in the interactive version, not just the slave
one!

Example

SILENT 1
CALL NI 10
REM Guess what you will see ....
SILENT 0

See Also

WARNINGS


SLEEP(n)

LBASIC (System extension) keyword

Does

Suspends program for n millisconds (better than those endless
loops and PRINTs).

Notes

Currently Win32 only. This keyword should help to
synchronize slave version with master.


SOLVE

Solver extension keyword.

Does

Solves the problem. If it can fill or empty a node within certain
time limits (cca. 10E9 sec.), it will do so and advance flow. If not,
error is given and no progress is computed.

Notes

Does not allow the very worst things, like filling full mold with
no vents. Time is incremented.

Example

Standard one which fills the mold:

PROC Auto
DO WHILE SONUMBEREMPTY>0
SOLVE
LOOP
ENDPROC

See Also

SONUMBERFILLED(), UPDATEPQ


SPAWN s1 [, s2, ….]

System extension keyword

Does

Executes external application without waiting for its results.
Command is specified in string s1, additional strings may
specify parameters or switches for the command.

Notes

The command has been currently implemented for Windows 32 only, as
this OS does not know how to start application on background from
command line.

The command line is created by concatenation of all string
arguments, adding single space between them. LIMS continues execution
immediately. If the command is a console application, it will be
given new console window. LIMS console.

Example

To start external editor

SPAWN "notepad.exe"

unless you have better editor.

See also

EXECUTE


STOP

LBASIC keyword

Does

Stops program execution

Notes

Terminates whole hierarchy of currently running procedures with
error message

See Also

RETURN, ENDPROC


UPDATEPQ

Solver extension keyword.

Does

Solves the problem but does not advance flow or time. both
pressures and flowrates are updated.

Notes

This is an experimental feature used to iterate pressure dependent
material properties. It is bound to be very slow to do
anything with such an iteration, so stick to SOLVE if you can.

See Also

SOLVE


VARS [Letters]

LBASIC directive

Does

Lists Variables beginning with Letters

Notes

If there is no Letters argument, lists all variables. Do
not quote Letters.

See Also

WORDS, HELP


WARNINGS Switch

SOLVER Extensions

Does

Allows/disallows using warnings and switches in solver.

Notes

Basically, if something might go wrong, solver puts up a warning
message and waits for user to decide. This happens especially if the
nodes get emptied. WARNINGS 0 will stop annoying qustions at
the price of lesser robustness.

Example

WARNINGS 0
CALL AUTO
WARNINGS 1

See Also

SILENT


WORDS [Letters]

LBASIC directive

Does

Lists defined procedures

Notes

Tries to list procedures beginning with Letters. If no
Letters are given, lists all.

See Also

HELP, VARS


WRITE [<File name>[,Mode]]

Output extensions keyword

Does

Writes output file File name. If no file name is given,
opens standard dialog box for selection.

Notes

File type is preselected through SETOUTTYPE. Mode
can be used to select how the file is written. Default value of 1
overwrites existing files. Value of 2 will append the date to
existing files and value of 3 will abort with error if file exists,
mimicking the brain-dead behavior of previous versions.

Example

Writes LIMS 3 – like history:

SETOUTTYPE "MESH"
WRITE "HISTORY",1
SETOUTTYPE "HIST"
WRITE "HISTORY",2

See Also

SETOUTTYPE

Functions

x, resp. x1 etc. stands for numbers, i,
resp. i1 stands for integer value and s or s1
etc represents string value. Unless stated otherwise, functions
return numerical value. True/false means non-zero or zero, according
to usual evaluation rules.

It is always error to call function with wrong number of arguments
and usually an error if a wrong type is supplied.


-(x)

Returns negative of x.


ABS(x)

Returns absolute value of x.


ACOS(x)

Returns inverse cosine of x in radians. x should
be between -1 and 1, results between 0 and .


ARGC()

Returns a number of arguments passed into function, error on
command line


ARGSTRING()

Returns the command line passed to procedure as a string. No
parsing is provided. Can be used in procedures only, not from command
line.


ARGUMENT(i)

Returns a value of i-th argument passed to the procedure.
Can be either number or a string. Error if fewer than i
arguments passed or when used from command line.


ASIN(x)

Returns inverse sine of its argument, x, in radians.
Argument should range from -1 to 1, result will be between -/2 and
/2.


ATAN(x)

Returns inverse tan of its argument, x, in radians.
Argument is unlimited, result will be between -/2 and /2.


AVERAGE(x1,x2)

Returns an arithmetic average of x1 and x2.


CHRS(x)

Returns a string containing character of code x.
Allowable range varies with system, however, only first 127
characters are standard to all “ASCII” sets.


COS(x)

Returns cosine of its argument, result will be between -1 and 1.
Argument in radians.


EXP(x)

Returns e to x-th power. Result will be positive, x
is limited by the range of double precision numbers.


FIFREEFILE()

Returns index of next free file to be used for FIOPEN
etc.. This is a file extension. Will be 1 to 5, 0 for none available.


FLOOR(f)

Returns the largest integer smaller than f.


GETDIR()

Returns string value of current working directory if it fits to
256 chars.

See Also

CHANGEDIR


GETELEMDATA(Elem,DataIndex)

Returns anything you want to know about element Elem. The
value is specified by DataIndex.

Allowable Index Values

1 Type (1=Triangle, 2= Quadrangle, 3=Tetrahedron, 4=Wedge, 5=
Brick, 6= 1D Bar) (GET only)
2 Thickness
3 Fiber volume fraction
4 Preform conductivity k
5 Preform Alfa
10 Permeability Kxx (x aligned with two first nodes in element)
11 Permeability Kxy
12 Permeability Kyy (y orthogonal to x, into the element)
13 Permeability Kzz (z orthogonal to x,y, into the element)
14 Permeability Kzx
15 Permeability Kyz
20 Temperature at top surface
21 Boundary condition coefficient (BCC) at top surface
22 Temperature at bottom surface
23 Boundary condition coefficient (BCC) at bottom surface
24 Temperature of preform
100 Number of nodes (2, 3, 4, 6 or 8 now) (GET only)
101 First node (GET only)
102 Second Node (GET only)
103 Possibly third Node (GET only)
104 Possibly fourth node (GET only), etc.

Notes

-1 or 0 is returned (the function never fails) if nonexistent data
is requested. Example might be request for temperature boundary
condition in isothermal mode. For some data, -1 or 0 can be a valid
value. In such a case you are at your own.

Even in isothermal mode there might be previously set
non-isothermal data, and these will be returned if asked for. Be
careful and do not assume that you are solving for temperature if
boundary conditions are set.

The boundary conditions on the upper and lower surface is
determined from equation (? stands for top or bot, n is outer
normale):

dT/dn+BCC?.(T-T?)=0

See Also

SETELEMDATA


GETFILENAME(s1,s2,d)

Returns a string value selected from filename selection element.
S1 is a prompt, s2 wildcard used for selection if
supported by the interface. The last argument, d, is an
integer describing mode the file should be opened in, as open
and save dialog boxes usually differ. The possible values
are:

0

Open for reading

1

Open for writing, zap existing file if any

2

Open for writting, append to an existing file if any (Append)

This is a console extension.


GETMESSAGELEVEL()

New to 4.1.

Returns the number describing message level, i.e., how much
interactive communication with user is possible. Valid always, but
really meaningful only for the slave version.

See also

SETMESSAGELEVEL


GETNODALDATA(Node,NData_Index)

Returns anything you want to know about any node (Node),
including the element connectivity. The value you want is specified
by a numerical index NData_Index.

Allowable Index Values

1 X coordinate
2 Y coordinate
3 Z coordinate
10 Pressure
11 Flow rate
12 Fill factor
13 Time to fill
14 Cure
15 Midplane temperature
16 Top temperature
17 Bottom temperature
50 Gate type (0 for none, see SETGATE)
51 First gate parameter
52 Second gate parameter
53 Gate cure
54 Gate temperature
100 Number of elements the node is in
101 First element
102 Second element
103+ Additional elements

Notes

-1 or 0 is returned (the function never fails) if nonexistent data
is requested. Example might be request for temperature value in
isothermal mode. For some data, -1 or 0 can be a valid value. In such
a case you are at your own.
Even in isothermal mode there might
be previously set non-isothermal data, and these will be returned if
asked for. Be careful and do not assume that you are solving for cure
if gate specifies one.
Gate data, if any, are accessible via NODE
number not by any special gate/vent function set.

See Also

SETNODALDATA


GETNUMBER(s)

New to maintenance release 4.0.3.

Returns a number user typed into something like a dialog box. S
is used as a prompt in the dialog box. Might be used instead of
INPUT. Console extension, useful only in GUI environment.


GETOUTPUTLEVEL()

New to 4.1.

Returns the number describing output level, i.e., how much of the
LBASIC output is visible to master. Valid always, but really
meaningful only for the slave version.

See also

SETOUTPUTLEVEL


GETSTRING(s)

New to maintenance release 4.0.3.

Returns a string user typed into something like a dialog box. S
is used as a prompt in the dialog box. Might be used instead of
INPUT. Console extension, useful only in GUI environment.


GETSYSTEMDATA (Index)

Returns any information about currently loaded problem. Data is
selected by Index.

Possible Index Values

1 Number of nodes
2 Number of elements
3 True number of gates
4 Number of vents
5 Number of filled nodes
6 Number of empty nodes
10 Mode (0=isothermal, 1=cure, 2=cure&temperature)
11 Current time
12 Is vented
13 Global temperature (Mode=1 only)
20 Number of 1D Elements
21 Number of 2D Elements
22 Number of 3D Elements

Notes

Some of these data are available by calling other functions.


IFF(x1,x2,x3)

Arithmetic if. If x1 evaluates to non-zero (true),
returns x2, otherwise x3.


INSTRING(s1,s2)

Returns the first location of s2 within s1. -1
means not found. This will be a zero based value.


INT(f)

Returns numerical value of f rounded to nearest integer.


ISDEFINED(s)

Checks for definition of variable or procedure with name in s.
Returns 0 if the identifier is not defined, 1 if it is a procedure, 2
for number, 3 for string and 4 for array. If it is both a procedure
and variable, 1 is returned. For multiple variables with the same
name, the information about the last one (visible) is returned. May
be useful for conditional definitions and includes.


ISGUISTYLE()

Returns true/false depending whether the user interface supports
true dialogs, message boxes etc.


ISINTERACTIVE()

Returns true/false depending whether the current lims console is
meant to have a user at it or to be run by a program (slave version).


ISSTRING(?)

Returns true/false depending whether the argument is string or
not. Useful to sort out arguments without triggering error.


LASTERR()

Returns the value of global “error number” variable.
This is basically useful only if you try to create IGNOREERR
procedures or if you use conditional interpretation #IF in
your sources. 0 should mean no error.


LCASE(s)

Returns the string s converted to
lowercase letters.


LEN(s)

Returns length of string s. Should be 0
to 255.


LN(x)

Returns natural (base e) logarithm of x.
x should be positive value.


LOG(x)

Returns base 10 logarithm of x. x should be
positive.


MIDS(s,i1,i2)

Returns substring from string s, spanning characters i1
to i2, 1-based.


NOT(x)

Returns logical negation of x, i.e., 1 for x
being 0, 0 otherwise.


PI()

Returns value of .


PSISOK()

Returns logical value, true if last PRESCAN worked, zero
otherwise.


PSISTHERMAL()

Returns logical value, true if last PRESCANned file
contains a non-isothermal problem worked, zero otherwise.


PSNUMBERELEMS()

Returns number of elements in the last PRESCANned file.


PSNUMBERNODES()

Returns number of nodes in the last PRESCANned file.


RANDOM()

Returns next pseudo-random number in sequence.

See Also

RANDOMIZE


SELECTEDSTRING()

Returns the selection number from last SELECTSTRING
command.


SIN(x)

Returns the value of sine of x. Argument in radians.
Result should be between -1 and 1.


SOBOTTEMP(Node)

Gives the temperature at bottom plane at node. Valid only if the
solution mode is 2.

See Also

SETMODE


SOCLOSESTNODE(x1,x2,x3,Tolerance)

This is a solver extension function. Returns index of node closest
to the coordinates (x1,x2,x3). Tolerance is a limit
on how close the node might be. If the distance between requested
coordinates and found node is bigger than Tolerance,
function returns -1.

Example

This allows to set the pressure gate of 500kPa at the point
closest to the origin, regardless of mesh. 1000 m is used to escape
problems with realistic tolerance:

LET i=SOCLOSESTNODE(0,0,0,1000)
IF i < 0 THEN
PRINT "That is far!"
ELSE
SETGATE i,1,500000
ENDIF

SOCPTEMP(Node)

Gives the temperature at midplane at node. Works only if solution
mode is 2.

See Also

SETMODE


SOCURE(Node)

Gives the cure at node. Valid only if mode is 1 or 2

See Also

SETMODE


SOCURRENTTIME()

This is a solver extension function. Returns current time as seen
by solver.

See also

SETTIME


SOFILLFACTOR(i)

This is a solver extension function. Returns fill factor of node
i.


SOFLOWRATE(i)

This is a solver extension function. Returns flow rate through the
node (control volume) i. Should be about 0 unless there is a
gate or the volume is not completely filled.


SONEXTEMPTIED()

This is a solver extension function. Returns index of next node
emptied during the last step. The function value steps through all
the nodes emptied and finally, when all have been returned, returns
-1. There are no emptied nodes if mold is vacuumed, but they may
appear if voids at finite pressure are created.

See also

RESETFILLED


SONEXTFILLED()

This is a solver extension function. Returns index of next node
filled during the last step. The function value steps through all the
nodes emptied and finally, when all have been returned, returns -1.

See also

RESETFILLED


SONODECOORD(i1,i2)

This is a solver extension function. Returns coordinate of node
i1. Coordinate to return is specified by i2: 1 is
x, 2 y and 3 z.


SONUMBERELEMS()

This is a solver extension function. Returns number of elements in
the system currently loaded into solver.


SONUMBEREMPTIED()

This is a solver extension function. Returns number of nodes
emptied during last step, i.e., execution of last SOLVE.


SONUMBEREMPTY()

This is a solver extension function. Returns number of empty nodes
in the system currently loaded into solver.


SONUMBERFILLED()

This is a solver extension function. Returns number of nodes
filled during last step, i.e., execution of last SOLVE.


SONUMBERGATES()

This is a solver extension function. Returns number of gates
(minus vents) in the system currently loaded into solver.


SONUMBERNODES()

This is a solver extension function. Returns number of nodes in
the system currently loaded into solver.


SONUMBERVENTS()

This is a solver extension function. Returns number of vents in
the system currently loaded into solver.


SOPOROUSVOL(Node)

Gives the empty volume (i.e., minus reinforcement) at a given
node.


SOPRESSURE(i)

This is a solver extension function. Returns pressure at node i.
This might be of importance even if the node is not filled, as the
pressure of air bubble is returned.


SOTIMETOFILL(i)

This is a solver extension function. Returns time to fill node i,
assuming it has been already filled. LIMS 3 used to initialize this
time to large value, LIMS 4 initializes it to 0 and this is the value
returned if node is not filled.


SOTOPTEMP(Node)

Gives the temperature at top plane at node. Valid only if mode is
2.

See Also

SETMODE


SQRT(x)

Returns square root of argument x. x should be
nonnegative.


STR(x)

Returns string representing the value of x. String is
cropped as tightly as possible, but it gives up to 6 decimal places
if needed.

SYSTIME()

Returns number of seconds since the program was started. It allows
benchmarking the performance and slowing down the simulation
to actual flow speed if needed.


TAN(x)

Returns tangent of argument x. Argument in radians.


UCASE(s)

Returns string S converted to upper case.


VAL(s)

Returns value of expression in string S.

Value can be either a string or a numerical value. String S
is interpreted as any expression in the program. Consequently it can
use variables and functions, not just numerical digits as in common
BASICs. Similar behavior as Sinclair BASIC.

Example

DEFSTRING Fn
LET Fn="sin(x)*cos(x)"
DO
PRINT "Enter value of x:"
INPUT x
PRINT "Fn(",x," )=",VAL(Fn)
LOOP

Obviously, the great advantage is that the string Fn can be
input by user as well.


VERSION()

Returns a version number of the LIMS. For 4.2.0 it would be
4.0200, i.e., major, minor in two digits and build in two digits. For
5.0.0 it is 5.0000


YESORNO(s)

This is console extension. Asks user question given in string s,
returns reply (TRUE for ‘yes’, FALSE for ‘no’)

Operators

Operators are actually implemented as functions. They all have two
operands and the calling convention is a usual infix. Only “+”
and “=” can be applied to string values.


a1 + a2

Returns a sum of its arguments. For numbers it is algebraic sum,
for strings concatenation.


x1 – x2

Returns difference of numerical arguments


x1 / x2

Returns ratio of numerical arguments. x2 should be
nonzero.


x1 * x2

Returns product of numerical arguments.


x1 ^ x2

Returns x1 to x2 power. x1 should be
positive; algorithm is not smart enough to tell integer powers that
might take negative base.


a1 = a2

Returns 1 if a1 is equal a2, 0 otherwise.
Strings are allowed, but both operands have to be strings. If string
containing number is to be compared with number, use VAL()
to convert string to number.


x1 < x2

Returns 1 if x1 is less than x2, 0 otherwise.


x1 <= x2

Returns 1 if x1 is less or equal to x2, 0
otherwise.


x1 “<> x2

Returns 1 if x1 is not equal to x2, 0 otherwise.


x1 =”>= x2

Returns 1 if x1 is bigger or equal to x2, 0
otherwise.x1 x2


x1 “> x2

Returns 1 if x1 is bigger than x2, 0 otherwise.


x1 AND x2

Returns logical product of arguments, i.e, 1 if both x1
and x2 are nonzero, 0 otherwise.


x1 DIV x2

Returns integer ratio of x1 and x2. Argument x2
should be nonzero.


x1 MOD x2

Returns modulus (remainder) of x1 and x2.
Argument x2 should be nonzero.


x1 OR x2

Returns logical sum of arguments, i.e, 1 if either x1 or
x2 are nonzero, 0 otherwise.

Conditional
Compilation/Interpreting Directives

Currently there are three directives (or one?) to allow for
conditional interpretation. These are:


#IF expression

Starts conditional interpretation. If expression is false, it
skips lines till matching #ELSE or #ENDIF is found.


#ELSE

This starts the alternative branch. Lines beyond this point till
matching #ENDIF are only interpreted if expression in #IF
was false.


#ENDIF

Terminates the conditional interpretation block.


Example

The intended use is primarily to avoid duplicating loads, as these
trigger errors. Thus, the file to load auto procedure might
look like:

#IF ISDEFINED("AUTO") <> 1
PROC Auto
REM Load it ...
ENDPROC
#ELSE
DEFINT Ans
LET Ans=YESORNO ("Procedure AUTO is already loaded. Replace? ")
#IF Ans
FORGET Auto
PROC Auto
REM Load it ...
ENDPROC
#ENDIF
ERASE Ans
#ENDIF

Operator Precedence Table

The operators and functions are evaluated in the following order:

  1. Constants (quoted strings,
    numbers, functions with no arguments)

  2. Array dereferencing

  3. Functions with arguments

  4. Unary minus

  5. Power ‘^’

  6. Multiplication, Division, Modulo

  7. Addition, substraction

  8. Comparison

  9. NOT

  10. AND

  11. OR

If two operators have the same precedence, they are evaluated left
to right. Use brackets to enforce desired evaluation order and
improve readability.

List of Reserved Identifiers

+ BO Addition in expressions
BO,UO Subtraction in expressions, Unary
minus
* BO Multiplication
/ BO Floating point division
^ BO Power operator
< BO Smaller than relation operator
<= BO Smaller than or equal to relation operator
<> BO Not equal to relation operator
= BO Equal to relation operator
> BO Bigger than relation operator
>= BO Bigger than or equal relation operator
#else PD Else clause of conditional interpretation
#endif PD End of conditional interpretation
#if PD Start of conditional interpretation
ABS F1 Absolute value
ACOS F1 Inverse cosine
AND BO Logical and operator
ARGC F0 Number of passed arguments
ARGSTRING F0 All arguments passed to procedure in a
single string
ARGUMENT F1 Argument passed to procedure
ASIN F1 Inverse sine
ATAN F1 Inverse tangent
AVERAGE F2 Average of two values
CALL K Call to a procedure
CHANGEDIR EK Change the working directory
CHRS F1 String containing given ASCII character
CLOSETRACER EK Close tracing of given quantity
COMPUTEFLOWS EK Selects the algorithm for flow advance
COS F1 Cosine
CREATEDIR EK Create a directory
DEFDBL K Create numerical variable(s)
DEFINT K Create numerical variable(s)
DEFSTRING K Create string variable(s)
DIM K Create array variable(s)
DIV BO Integer division
DO CK Beginning of a DO…LOOP construct
ECHO IK Logs user input in a given file
ELSE CK Part of IF…ELSE…ENDIF construct
ENDIF CK Part of IF…ELSE…ENDIF construct
ENDPROC CK Ends procedure definition
ERASE K Erases variable(s)
EXECUTE EK Executes external command
EXIT IK Quits LIMS
EXITIF K Breaks from DO…LOOP or FOR…NEXT construct
EXP F1 Value of e to argument
FICLOSE EK Closes an open file
FIFORMAT EK Sets formatting for file output
FIFREEFILE EF0 Returns index of unused file
FIINPUT EK Reads value(s) from a file
FIOPEN EK Opens a file for given access
FIPRINT EK Prints value(s) to file
FIPRINTNL EK Prints newline to file
FLOOR F1 Returns larges integer smaller than argument
FOR CK FOR…NEXT construct
FORGET IK Clears procedure definition
FORMAT K Sets numeric format for PRINT
GETDIR F0 Obtains current directory
GETELEMDATA EF2 Obtains element properties
GETFILENAME EF3 Obtains filename in possibly GUI way
GETMESSAGELEVEL EF0 Obtains communication option for
slave
GETNODALDATA EF2 Obtains nodal properties
GETNUMBER EF1 Obtains numeric input via dialog box
GETOUTPUTLEVEL EF0 Obtains communication option for
slave
GETSTRING EF1 Obtains string input via dialog box
GETSYSTEMDATA EF1 Obtains information about the
currently loaded problem
HELP IK Gets help if any available
HINT IK Gets short help
IF CK Start of IF…ELSE…ENDIF construct
IFF F3 Arithmetic if function
IGNOREERR IK Controls behavior of a procedure if error
occurs
INPUT K Reads value(s) into variable(s)
INT F1 Returns integer closest to argument
INSTRING F2 Position of substring within string
ISDEFINED F1 Determines whether identifier exists
ISGUISTYLE EF0 Determines whether LIMS supports dialogs
ISINTERACTIVE EF0 Determines whether LIMS is used by an
operator or another process
ISSTRING F1 Determines whether argument is string
LASTERR F0 Returns last error code
LCASE F1 Converts string to lowercase
LEN F1 Returns length of a string
LET K Assigns value to variable
LN F1 Returns natural logarithm
LOAD IK Inserts a file into input stream
LOG F1 Returns decimal logarithm
LOOP CK Part of DO…LOOP construct
MARK IK Marks the state of procedures and variables
MESSAGE EK Notifies user
MIDS F3 Returns substring
MOD BO Modulo operator
NEWWINDOW EK Creates new IO window for LBASIC
NEXT CK Part of FOR…NEXT construct
NOT F1 Logical negation
OLDWINDOW EK Sets LBASIC IO back to system console
OPENTRACER EK Starts tracking some value
OR BO Logical OR
PI F0 Value of number pi
PRESCAN EK Checks input file
PRINT K Prints value(s) on display
PROC IK Defines procedure
PROTECT IK Prevents procedure erasing/redefinition
PSISOK EF0 Status of last prescan
PSISTHERMAL EF0 Was the prescanned file non-isothermal
PSNUMBERELEMS EF0 Number of elements in the last
prescanned file
PSNUMBERNODES EF0 Number of nodes in the last prescanned
file
QUIT IK Terminates LIMS
RANDOM F0 Returns random number
RANDOMIZE EK Seeds the random number sequence
READ EK Reads input file into solver
REGAPPEND EK Appends list to region
REGCREATE EK Creates a region
REGEXCLUDE EK Excludes entities from region
REGIONS IK Lists existing regions
REGLOAD EK Loads regions from file
REGREMOVE EK Removes region(s)
REGSAVE EK Saves regions to File
RELEASE IK Restores the state of procedures and
variables
REM K Starts comment line
RESETFILLED EK Resets the reader of filled nodes
SCALEPERM EK Scales permeability of element
SCALETHICK EK Scales thickness of element
SELECTEDSTRING EF0 String selected during last
SELECTSTRING
SELECTSTRING EK Select string from list
SETELEMDATA EK Sets various element options
SETFILLFACTOR EK Sets fill factor in element
SETGATE EK Sets gate parameters and location
SETGLOBALTEMP EK Sets global temperature for cure only
solution
SETINTYPE EK Sets default input format
SETMESSAGELEVEL EK Sets communication option for slave
version
SETMODE EK Sets the solution mode
SETORIGPRES EK Sets initial pressure in mold
SETNODALDATA EK Sets various nodal properties
SETOUTPUTLEVEL EK Sets communication option for slave
version
SETOUTTYPE EK Sets output format
SETPERM EK Sets element permeability
SETREFAXIS EK Sets permeability coordinates
SETTEMPBC EK Set thermal boundary conditions
SETTEMPSOLVER EK Selects solver for cure/temperature
SETTHICK EK Sets element thickness and volume fraction
SETTIME EK Sets solver time
SILENT K Silences prints
SIN F1 Sine value
SLEEP EK Suspends the execution
SOBOTTEMP EF1 Returns temperature at bottom
SOCLOSESTNODE EF4 Node closest to global position
SOCPTEMP EF1 Returns centerline temperature
SOCURE EF1 Returns cure value
SOCURRENTTIME EF0 Current solver time
SOFILLFACTOR EF1 Fill factor at given node
SOFLOWRATE EF1 Flowrate at given node
SOLVE EK Solve one step.
SONEXTEMPTIED EF0 Next node emptied in this step
SONEXTFILLED EF0 Next node filled in this step
SONODECOORD EF2 Coordinate of a given node
SONUMBERELEMS EF0 Number of elements in solver
SONUMBEREMPTIED EF0 Number of nodes emptied in this step
SONUMBEREMPTY EF0 Number of empty nodes in the system
SONUMBERFILLED EF0 Number of nodes filled in this step
SONUMBERGATES EF Number of gates in the system
SONUMBERNODES EF0 Number of nodes in the system
SONUMBERVENTS EF0 Number of vents in the system
SOPOROUSVOL EF1 Returns porous volume
SOPRESSURE EF1 Pressure at given node
SOTIMETOFILL EF1 Time to fill given node
SOTOPTEMP EF1 Temperature at top
SPAWN EK Execute external command in background
SQRT F1 Square root value
STOP CK Stops execution
STR F1 String out of number
SYSTIME F0 Program running time (s)
TAN F1 Value of tangent
THEN T See IF
TO T See FOR
UCASE F1 String in uppercase
UNTIL T See DO, LOOP
UPDATEPQ EK Updates pressure without advancing flow
VAL F1 Value of expression in string
VARS IK Lists defined variables
VERSION F0 Returns LIMS version
WARNINGS K Enables/disables warnings in solver
WHILE T See DO, LOOP
WORDS IK Lists defined procedures
WRITE EK Writes LIMS output
YESORNO EF1 Asks user to confirm something

BO means binary operator

UO means unary operator (same as F1)

PD means pre-processor directive

IK means directive

K means LBASIC keyword

CK means compile only LBASIC keyword

EK means keyword supplied by an extension, i.e., by LIMS

Fn means function of n arguments

EFn means extension function of n arguments

T means other token, usually valid only in very special settings
(required or understood by some keyword)