The OOFEMlib provides the abstraction for integer vectors (IntArray)
and for real vectors and matrices (FloatArray and
FloatMatrix). The usual arithmetic operations (like vector and
matrix additions, substractions, matrix vector multiplication, matrix
inverse, solution of linear system, finding eigenvalues and
eigenvectors) are provided. Hovewer, the usual math operators ('+','*')
are not overloaded, user has to call specific routines.
The vector and matrices provide both 0-based and 1-based component
access, they allow for dynamicall resize with optinal chunk. In fact,
the current implementation of resize only grows the
receiver, the possible request for shring does not cause the
realocation of memory, since allocated memory is kept for future possible resize. If
resize operation wants to force allocation, then hardResize
should be invoked instead.
The prefered argument passing is by reference, even for function or
procedure return values.
The called function performs resize and fills up
the return parametr(s). This is motivated by aim to avoid memory
allocation/dealocation problems. The programer should always avoid to
return pointers to newly allocated arrays or matrices.
See section ``Coding Standards'' for
details.
Borek Patzak
2018-01-02