4. Version 1.5.2

The 1.5.2 version of baspl++ brings, in addition to a number of improvements and fixes in baspl++ itself, improvements to third-party software packages that are used in baspl++. Also for the first time, with Mac OS X, a major consumer operating system is supported.

4.1. Miscellanous Changes

  • ADDED: Mac OS X 10.4.x is now supported. This has become possible thanks to OS X's close relationship with UNIX-like systems and thanks to improvements to third-party software that is being used by baspl++.

  • IMPROVED: The baspl++ main window has been augmented with a split pane control. Using the split pane control handle, it is now possible to resize the left and the right part of the main window.

  • IMPROVED: Error handling and reporting has been made more robust and more user-friendly. Errors at start-up are now reported much more reliably.

  • IMPROVED: The TecPlot converter has been made more robust. Also, support for 1-dimensional structured meshes has been added.

  • FIXED/ADDED: Extrapolation of gradients from Gauss points to the element nodes has been corrected for 20-node hexahedral elements. Added branch-global to global-global transformation for stress tensors. This is needed for elements that store gradients in the branch-global system. Added support for tetrahedral elements (but gradients must be defined at the element nodes).

  • CHANGED/ADDED: The handling of NSMB face fields (like CF and CH) has been modified; they are expanded in memory to ordinary fields. As a consequence, face fields can now be displayed also with the (old) Part object in addition to the NPart object.

  • IMPROVED: The ColourMap object now handles and interpolates colours more precisely.

  • IMPROVED/FIXED: The Curve editor has been improved. In the Graph, a tolerance measure was added such that line segments and symbols that lie almost exactly on the Graph's boundaries, are still displayed.

  • IMPROVED: The view_pstrs helper class has been enhanced such that it now supports hexahedral volume elements in additon to quadrilateral shell elements. The OpenGL display routines have been optimized.

  • FIXED: In the dptools wizard, the computation of the axes orthogonal to the line direction would, under certain conditions, have length zero, leading to a segmentation fault.

  • FIXED: Font support when printing to PostScript or to PDF has been improved. PostScript fonts should now scale properly in all cases.

  • FIXED: Several memory leaks and buffer overruns have been detected and fixed.

  • IMPROVED: The OpenGL code has been modified such that, in the case of a programming error leading to a Python exception inside a draw routine (for example in a custom-written Python class derived from the Hook class) will not lead to OpenGL context stack overflow problems anymore.

  • ADDED: baspl++ can now be used to interpolate field values inside a volume mesh. The existing C++ functions have been complemented with a Python interface. Given a physical coordinate inside a volume, baspl++ returns the field value interpolated at that coordinate. Interpolation is done on a per-element basis, using isoparametric shape functions.

4.2. Improvements to the NPart object

  • IMPROVED: ColourMap handling in the NPart object has been improved. In addition to the colmap attribute, there is now also a colmap_default read-only attribute, which can be used to access the NPart object's own ColourMap object. Example:

    # Get a Field object from the Model.
    f=m.get_field('PRES', cycle=1)
    
    # Create two NParts, one for the skin and one for a cut.
    p=NPart(m)
    p.extract='elements'
    p.colour.field=f
    q=NPart(m)
    q.extract='cut'
    q.colour.field=f
    
    # now use the same ColourMap for both NParts.
    q.colour.colmap=p.colour.colmap
    
    # restore to use q's own ColourMap object
    q.colour.colmap=q.colour.colmap_default
  • IMPROVED: Isoline extraction in the NPart object no longer divides quadrilateral elements into triangles. Instead, the iso-lines are computed directly using the first-order quadrilateral shape functions. Also improved is the OpenGL display of the iso-lines, they are drawn such that the small gaps between consecutive line segments (visible with large line widths) should not occur anymore.

  • CHANGED: In the NPart object, the Python API has been changed: All string values 'none' are to be replaced by the Python value None in the scripts. Example:

    p.extract='none' # old, will now result in an error
    
    p.extract=None   # new behaviour 
    p.extract=''     # alternative new behaviour
  • IMPROVED/CHANGED: The border extraction feature in the NPart object has been improved. With it comes a change in the Python API. It is now possible to define what makes exactly the "border". This can be the Model boundary, branch numbers, group numbers, panel numbers, and NSMB SFV bc codes. These attributes can be combined, for instance

    p.att.border_plot='boundary,branch'

    will draw the border at the boundary and at branch borders.

  • IMPROVED/ADDED: Vector display in the NPart object has been improved in many respects; there are now also a vector.threshold_lower and a vector.threshold_upper property which can be used to display only vectors for those values inside an interval.

  • FIXED: The isosurface code in the NPart object has been further improved. The algorithm may fail however when there are two joining isosurfaces in a single element.

4.3. Replacement of Numeric by numpy

The Numeric extension for Python which was previously used has been replaced by the numpy extension. Since numpy is largely backwards-compatible with Numeric, most users will not notice any difference when using baspl++. For scripts that explicitely reference Numeric, it is often sufficient to perform a search/replace on the following strings:

  • Replace Numeric by numpy.

  • Replace Float64 by float64.

  • Replace matrixmultiply by dot.

It is also possible to use both Numeric and numpy extensions at the same time. However, the pymemcom extension (Python interface to the MemCom data manager) only accepts numpy arrays. Thus when writing to MemCom databases, numpy should be used.