next up previous
Next: neBEM toolkit - a Up: Manual for the nearly Previous: Prerequisites

Installtion

Download neBEM<Version>.tar.gz (preferably, the latest version).

1. Unpack the archieve at a convenient location. The necessary directory structure is created as a result. Have a look into the lib directory and you'll find that both 32 and 64 bit versions of the libIsles are present in this directory. Based on your system architecture, copy the relevant binary as lib/libIsles.a which is the one that is linked during a make.

2. The libraries and some example binaries will be there in the lib and bin directories. However, it is safer to issue make cleanall to remove the older object files, libraries and binaries.

3. Create new objects, libraries and binaries by issuing for example,

make
or,

make -f src/Applications/MakeExampleDev
or, ./CreateApplications

In order to remove binaries related to a specific application, a command similar to the following may be issued
make -f src/Applications/MakeExampleDev clean
In order to remove all binaries related to all applications, issue ./CleanApplications

4. In a similar manner, individual examples or several of them can be tried out.

5. There are some initialization files in the InitFiles directory.

Please note the following:

Since the former uses gcc and the latter g++, it is better to clean the directories of old binaries by issuing a make cleanall or a ./CleanApplications.

Please note that when being invoked from Garfield, no init-file is used and all the parameters are passed to neBEM via parameters. For details, please check the Garfield help files:
(http://consult.cern.ch/writeup/garfield/help/).

The init-files, when present and relevant, provide certain default values to carry out the computations using neBEM for any given problem. It even allows control over the phase in which the computation is started. For example, if only a new post-processing is necessary for a device that has already been solved for a specific electrostatic configuration and whose charge densities have been saved, it is possible to change the flags related as NewModel=0, NewMesh=0, NewBC=0, NewPP=1. It is necessary to maintain the correct counters for these parameters so that the correct model, mesh, boundary conditions are used for the necessary post-processing. One initialization file is usually maintained for each application and they are expected to be stored in $HOME/.neBEMv<version number>/<ApplicationSpecific>.init This default behaviour can surely be modified by editing the interface file specific for an application. If an initialization file is not found, the computation is carried out by the parameter-set defined in the neBEMSetDefaults function. So, after the files are unpacked and before you start executing neBEM, it may be useful to create a directory $HOME/.neBEMv<version-counter> and copy the initialization files from InitFiles to that directory. If necessary, keep a copy of older initialization files.

In the following table, we have explained in brief the different parameters that may be controlled using the init files:

Parameter Explanation
MinNbElementsOnLength Minimum number of elements allowed along the length of a primitive.
MaxNbElementsOnLength Maximum number of elements allowed along the length of a primitive.
ElementLengthRqstd Preferred length of the side of an element. neBEM tries to adapt to this
but is over-ridden by the minimum and maximum number of elements.
A log is maintained in MeshLog.out file.
LengthScale Specifies the length scale to be used during a given computation. This can be useful
to maintain accuracy of solution for problems very small or very large.
New or old? These parameters, including the accompanying counters have been described below.
DeviceOutDir Output directory. Internal subdirectories are created
by neBEM automatically within this directory.
OptDeviceFile 1 implies that the user will specify the device
by means of input files - useful for stand-alone applications.
DeviceInputFile User specified input file. Check stand-alone applications
described below.
OptPrint(s) Determines the level of terminal outputs.
OptGnuplot(s) Determines whether files are to be maintained
for use with the gnuplot routine.
OptPrimitiveFiles Determines whether files describing the primitives are to be stored.
OptElementFiles Determines whether files describing the elements are to be stored.
OptReuseDir Determines whether the output directories are allowed to be overwritten.
OptInvMatProc Procedure to be adopted for inverting the influence matrix (0 or default: LU, 1: SVD).
OptValidateSolution Whether a cross-check on satisfaction of boundary conditions is done (XChk.out).
OptForceValidation Whether cross-check is forced, if needed by recomputing influence matrix (XChk.out).
OptStorePrimitive Determines whether primitive details are stored.
OptStoreElements Determines whether element details are stored.
OptStoreInflMatrix Determines whether the influence matrix is stored.
OptStoreInvMatrix Determines whether the inverted matrix is stored.
OptFormattedMatrix Determines whether files are stored in formatted mode.
OptUnformattedMatrix Determines whether files are stored in unformatted mode.
OptRepeatLHMatrix Determines whether the influence matrix computations are
to be repeated in order to validate solution.
OptSystemChargeZero Determines whether the total charge of the system is
to be made zero. This usually means addition of a
voltage shift throughout the device.

Note that the parameter NewBC is of special importance. If this parameter is set to 1, while maintaining NewModel = NewMesh = 0, it is assumed that we are delaing with the same geometry and discretization, while having a different boundary condition. The inverted matrix from an earlier calculation (where NewModel and NewMesh were equal to 1) needs to have been stored for this to proceed. In such an event, the inverted matrix is read in, and the solution for the relevant boundary condition is easily and very quickly obtained. This can save an enormous amount of time, especially for a complex device for which generartion of the influence matrix, as well as its inversion is of significant computational expense. Through Garfield, this is achieved by invoking parameters such as new-model, reuse-model, keep-inverted-matrix (please see relevant portion of the Garfield manual).


next up previous
Next: neBEM toolkit - a Up: Manual for the nearly Previous: Prerequisites
Supratik Mukhopadhyay 2019-03-05