% 12/30/2010
% -- fixed an error in H8_to_H64
% -- added linear box buckling examples with reference values from ABAQUS
%
% 01/13/2011
% -- fixed missing attributes in system matrix classes get() method
% -- completed and corrected documentation for system vector and matrix
% -- completed and corrected documentation for classes up to feblock
% -- completed and corrected documentation for algorithms, documents,
% and utilities
% -- completed and corrected documentation for meshing
%
% 01/14/2011
% -- completed documentation for examples (acoustics,
% electrical thermomechanical, heat diffusion,
% miscellaneous, taut wire, instability, stress)
% -- Fixed an incorrect implementation of in_parametric
% for the triangles and tetrahedra.
% -- completed and corrected documentation for gcellset,
% integration_rule, graphic_viewer, fenode_to_gcell_map
%
% 01/21/2011
% -- imported hyperelastic finite element block and hyper elastic neo-Hookean
% material classes from Sofea legacy code; not all examples have been ported though as yet
%
% 01/23/2011
% -- Error in the transformation of arrows in draw_arrow: parallel vectors
% in cross product. Corrected.
%
% 01/26/2011
% -- Fixed signature and description of H8_hexahedron()
% -- Enhanced the numbering of equations to allow for node linkages; see
% the method numbereqns of the field class.
% -- Concatenation of geometric cells corrected so that the label attribute
% is concatenated correctly.
% -- Setting of essential boundary conditions in set_ebc. The arguments
% may now be supplied as scalars and expanded into arrays as needed.
% -- update_box documentation updated.
%
% 02/01/2011
% -- Trying to plot a geometric cell with empty conductivity resulted in
% Matlab crash (R2009b and R2010a) because the Java graphics framework
% couldn't handle empty faces. This is now treated in FAESOR.
%
% 02/08/2011
% -- Added an implementation of a linear model of a beam, and implementation
% of examples for the corotational nonlinear beam model.
%
% 02/16/2011
% -- Implemented acoustic-structural coupling matrix.
% -- Implemented the ability of the graphic viewer to draw into given axes.
% -- Updated feblock documentation for acoustics, heat diffusion, electrostatics.
%
% 02/22/2011
% -- Fixed broken sizing of graphics axes for 2-D plots.
%
% 03/13/2011
% -- Implemented plotting of level curves. (At this point for T3,T6.)
% -- The interfaces to the methods of the corotational beam were redesigned
% to be more consistent with the theoretical formulation.
%
% 03/17/2011
% -- Implemented linewidth in graphics viewer.
% -- Implemented plotting of level curves for Q4.
%
% 03/22/2011
% -- Fixed incorrect data aspect ratio in 2-D plots.
% -- Fixed invalid reference to interpreter in draw_colorbar.
% -- Tested with Matlab R2009b, R2011a. 
% -- Updated nonlinear heat conduction examples.
%
% 03/23/2011
% -- Updated and completed documentation of the corotational beam (classes
% and examples). 
%
% 03/26/2011
% -- Enhanced the operation of view3d (speeding up and slowing down of
% rotation). 
%
% 03/27/2011
% -- Corrected the slice() method of the field class: all the attributes
% are now being sliced not just the values. 
%
% 04/01/2011
% -- Added documentation for beam meshing functions. 
% -- Revised documentation of beam examples 
%
% 04/04/2011
% -- Extrusion functions (L2_extrude,Q4_extrude) were corrected to exclude 
% extraneous nodes.
% -- Added fuse_nodes function. 
% -- Added merge_n_meshes function to merge multiple meshes.
%
% 04/16/2011
% -- Enhanced the graphic_viewer view manipulation by completely rewriting the
% rotate() method. 
% -- Added arch-buckling 3-D solid example. 
% -- Redesigned physical_units() function. 
%
% 04/17/2011
% -- gcell_select with flooding was found to have a bug. The selection
% algorithm was redesigned, for the moment without the option to select
%     based on distance from the start node. 
%
% 04/20/2011
% -- Speeded up computation of nz_ebc loads (typically by an order of
% magnitude). 
%
% 04/22/2011
% -- Fixed constructor of tet_rule. 
%
% 05/04/2011
% -- ipdm: Inter-Point Distance Matrix By  John D'Errico added.
% -- gcell_select enhanced with the option to search for the cell nearest
% to a given location (nearestto). Courtesy of Richard Crozier.
% -- subset() For gcellset_beam3 added to properly distribute cross section
% properties. 
%
% 05/07/2011
% -- Any call to the method set_ebc() of field invalidates the current
% equation numbering. The logic of set_ebc() was modified to  erase any
% current numbering of equations. 
% 
% 05/13/11
% -- Revised physical_units(). 
% -- Revised graphic_viewer() methods. Added draw_xlabel, ..., draw_zlabel.
%    Added  draw_box() method.
% -- Corrected subset() method of class gcellset_beam3.
% -- Corrected a number of meshing functions (rotate_mesh, merge_nodes,
% merge_n_meshes). 
%
% 06/01/2011
% -- Corrected a coefficient in the bulk-shear split of the elastic moduli
% (tangent_moduli_bulk_shear). 
% -- targe2_mesher enhancement: If the mesher fails (for instance because the input was
% inconsistent or just plain wrong), the function reports an error message
% and the input is plotted in figure to help the user in debugging the
% input.
%
% 06/03/2011
% -- Speeded up some methods (scatter_sysvec, in particular). Credits Richard Crozier.
%
% 06/23/2011
% -- Update to the subset and get methods of the gcellset_beam3 class
%      to correctly handle access to all attributes.
% -- Additional methods for the @feblock_defor_ss_corot_beam class.
% -- cleanup of image_meshing examples. 
% 
% 06/30/2011
% -- Updated the vibration-in-fluids example (including the boundary element solver).
% 
% 07/13/2011
% -- Updates and fixes to the graphic_viewer class (draw_polyline, draw_text, rotate
% methods). Fix of clear() and a reset() methods.
% -- The class feblock_defor_ground now supports
% translational and rotational springs and dampers.
% 
% 07/17/2011
% -- Replaced view3d with the rotate method of graphic_viewer in all examples.
%
% 07/25/2011
% -- Fixed incorrect indexing in Q4_to_T3.
%
% 07/26/2011
% -- Implemented meshing examples that construct
% various surfaces (sphere, cylinder, capped cylinder)
% -- New meshing functions (Q4_circle_n, H8_cylinder_n, Q4_sphere_n).
% -- Fixed L2_extrude. 
% 
% 09/13/2011
% –- Implemented conversion of quadrilateral meshes into 
%    triangles using the shortest diagonal Q4_to_T3_sd.
% –- Updated documentation.
% –- Zoom function in the graphic_viewer class method rotate() 
%    made more robust.
% -- Updated documentation for the clear() and reset() methods.
%
% 10/01/2011
% –- Update of meshing generation examples.
% -- Reorganization of acoustic/structural coupling examples.
% -- Added a function for writing animated gifs.
%
% 11/06/2011
% –- Added general mesh import function, mesh_import(), and 
%    Comsol_mesh_import() for Comsol ASCII mesh files.
%
% 11/20/2011
% –- Added function to export a mesh to a VTK file (vtk_export_mesh).
% -- Updated reset() method to correctly display a 3-D view with limits.
%
% 11/22/2011
% –- Added function to export a regular grid to a VTK file (vtk_export_grid).
% -- Corrected vertex coordinates in voximg_to_H8() and voximg_to_T4()
%    to account for the location  of the corner of the grid volume at 0,0,0.
% -- Added shortcut functions (paraview() and pvpython()) to invoke 
%    the visualization software paraview (http://www.paraview.org/).
%
% 12/12/2011
% -- Added function mesh import function, geo_mesh_import(), for Cosmos
%    ASCII mesh files.
% -- Added conversion from T4 tetrahedra to H8 hexahedra.
%
% 12/13/2011
% -- Update of acoustic/structural coupling examples: resolved issues with 
%    normalization of the modes.
%
% 01/13/2012
% –- simplex_nq_rule class constructor did not handled properly called with
%    no arguments:fixed
%
% 01/30/2012
% -- Optimized conn_to_sparse and genconn  by removing unnecessary calls to 
%    functions.
%
% 02/05/2012
% -- Changed configuration of CXSparse. It may now be initialized from  within
%    FAESOR_init.
%
% 02/08/2012
% -- Added the function physical_units_struct() to provide definitions
% of physical units  in a structure.
%
% 02/16/2012
% -- Added the function native_mesh_import().
%
% 02/21/2012
% –- Added  a rotate_mesh()  function.
%
% 02/25/2012
% –- The draw_integration_points () method of the heat conduction block did not properly
% account for transformation from local to global material directions.
% -- Added heat  conduction  examples (runway_wire, squareinsquarec_q)..
%
% 03/25/2012
% –- Added Spherical_shell_mesh(): Create a mesh of a spherical shell.
%
% 03/29/2012
% -- All the small-strain plasticity examples  are now running.
% (That does not necessarily mean the solutions are 100% verified.)
%
% 03/31/2012
% –– Many hyper elasticity examples are now running. Some of the functionality 
% in examples  that run is not available yet. 
%
% 04/05/2012
% -- Initial revision of the nonlinear NICE implementation.
% Pre-computation of the basis function gradients will be considered.
%
% 04/11/2012
% -- Corrected definitions of variables in the Arch_buckling* examples.
% 
% 04/15/2012
% -- Speeded up computation of the node-to-gcell map almost by an order of magnitude.
% -- Added connected_gcells().
% 
% 04/17/2012
% -- incompressible/2D: updated cookstrain_compare, hughes87beam_compare, 
% driven_cavity, cookstress_compare, thick_pipe (w/ problems), 
% slot, slot_grad, slot_q4, thin_ring, transviso_trac
% -- Fixed T3_annulus meshing function.
% 
% 04/19/2012
% -- incompressible/3D: Beam3D_vibration
% drum_t4_nice
%
% 04/29/2012
%–– Fixed names of T3 meshing functions.
%-- Q4_to_Q8, Q4_to_Q9, Q4_to_Q16 now accounts correctly for thickness.
%-- nodal_bfun_gradients() in all NICE implementations
%   was incorrectly computing the spatial derivatives by using the volume Jacobian
%   instead of the Jacobian appropriate to the manifold dimension of the gcell.
%
% 05/04/2012
% -- H8_to_H20 function now correctly transfers the label attribute
%    from the source cells to the destination cells.  This will need to be done
%    for all conversion functions.
%
% 06/06/2012
% -- t4util_coarsen () mesh coarsening utility was enhanced with graded-mesh
%    capability.   Also, it was to some degree speeded up (around 20%).
% -- Added draw_annotation ()
%
% 07/24/2012
% -- Richard Crozier: Updates to the functions
%    L2_blockx and Q4_blockx and to their specializations L2_block and Q4_block.
%
% 09/14/2012
% –- reset() method of the graphic_viewer class can now be called
%    without the second argument (context).
%
% -- Fixed mismatch between number of elements in number of nodes in L2_block().
% -- The ID array  corrected to be column in L2_blockx().
%
% -- An additional argument to the material orientation matrix function
% is to support local material axes based on gcell IDs.  Example scripts
% needed to be updated to redefine the material orientation matrix functions.
%
% -- Improved the documentation of mirror_mesh() to incorporate
% the renumbering of the connectivity.
%
% -- New example (two_color_sphere_2) to test the transfer of labels in Q4_extrude().