Major changes incoporating work from Andrew Kuprat (64bit work) and summer student Adam Cozzette to add more capability.
Changes to make 64bit code more consistent and easier to modify for various platforms.
The code for stack routines are combined into stack_options.f from temptam.f and read_trilayers.f.
The beads algorithm and routines are now all in their
own file beads_ona_ring.f
LaGriT assumes that the size of an integer is the same size as a
pointer. Use the preprocessor and configure settings to select
the integer type so that it matches the size of a pointer.
#if SIZEOF_INT == SIZEOF_VOIDP #define int_ptrsize int #elif SIZEOF_LONG == SIZEOF_VOIDP #define int_ptrsize long Makefile changes for 64 bit compile: -fcray-pointer Enables the Cray pointer extension, which provides a C-like pointer -falign-commons (will try to reorder commons so this is not needed) By default, gfortran enforces proper alignment of all variables in a COMMON block by padding them as needed. On certain platforms this is mandatory, on others it increases performance. If a COMMON block is not declared with consistent data types everywhere, this padding can cause trouble, and -fno-align-commons can be used to disable automatic alignment. The same form of this option should be used for all files that share a COMMON block. To avoid potential alignment issues in COMMON blocks, it is recommended to order objects from largests to smallest.
Andrew Kuprat changes:
filterkd.f - new filter command (called with 'filterkd') uses kd-tree for filter. msgtty.f - added command 'filterkd' reverseform.f - necessary for filterkd.f readgmv_binary.f - Changed gmv routines so read/write gmv works on 64-bit dumpgmv_hybrid.f - Changed gmv routines so read/write gmv works on 64-bit Makefile.depends - updated for filterkd, reverseform
Adam Cozzette changes:
- added several functions for computing the hybrid point of a control volume: tetisOnBoundary, intersectSegmentWithFace, getHybridPoint - added helper functions for computing dot products and distances. - changed the areaOf3dTriangle function to compute a vector area rather than a scalar. - a change computes a unit vector in the direction of an edge between two points in the tetrahedral mesh. We dot this with the facet of the Voronoi cell in order to consider just the component of the area that is in the direction of the edge. - changed the parameter list for initialize3ddiffusionmat_ so that the function also takes arrays for jtet, pmbndry, ifhybrid, and hybridfactor. ifhybrid indicates whether to use hybrid volumes and hybrid_factor is an attribute that the function will fill in order to indicate the extent to which each cell is hybridized - added function prototypes so that gcc can perform type checking - added #if to match format string to size of integers being used
- changed subroutine call to add hybrid_factor subroutine anothermatbld3d_wrapper - x (ifile,io_type,num_area_coef,ifcompress) + x (ifile,io_type,num_area_coef,ifcompress, ifhybrid)
- added the hybrid_volume to the cmo // addatt command - added a metric for quad quality cmo // addatt / quad_quality
- fix bug in 2D delaunay connect where the code doubled the coordinates of the first Voronoi point
- fixed an off-by-one error by making an array one element longer in a call to mmgetblk with length + 1 this was causing segfault errors
- changed subroutine call to add hybrid_factor subroutine dumpfehm(ifile,ifileini,ioption,iomode, - * area_coef_option,compress_opt,attrib_option,area_option) + * area_coef_option,compress_opt,attrib_option,area_option, + * hybrid_option)
- Added support for writing element sets out to a file based on pset logic changed the behavior so that eltset // write will write each element set to a separate file if it is given the -all- option filenames now end with .cellset - fixed a bug where attempting to redefine an element set, the set is now zeroed out and written afresh
- changed loop to check condition before starting, this avoids writing to memory is invalid
- added sort // line_graph after performing the intersection - fixed loop that was looping wrong number of times changed 1,npointsa to 1,npoint
- fixed Warning so it is given once instead of once for every element
- changed pset to verify a point before writing to file - added the -all- option that writes each pset to seperate files with the new file extension .vertexset
- Added support for quad metrics in quality / quad
- fixed reorder so that it doesn't rely on the numerical values to determine whether to sort nodes or elements - added messages to indicate possible WARNINGS for reorder
- Fixed a bug whereby rotateln would rotate some points in one direction and some points in the opposite direction.
- Added support for sort // line_graph. line_graph_sort.cpp does most of the real work. I also had to fix this subroutine to create the sort keys correctly. Previously it used an integer length to decide whether to use 'nnodes' or 'nelements', but now it is careful to choose based on whether it is actually sorting nodes or elements.
- removed unused variables in order to get rid of compiler warnings - added #if for printf to use string according to integer size
- changes to facilitate the 'hybrid' option and Rao's new dump / exo code
* * Program: LaGriT V2.200 Linux m32 *
* * date_compile: 2010/11/22 *
The next release, expected in
early 2011, will have 64 bit memory pointers. This will allow access to
much more real and virtual memory so that the present limitations on
memory and mesh size that can be built and manipulated will be greatly
expanded.Modifications and New Capabilities Index:
|
This includes a minor changes and added error checking. The following are new syntax that are code wrappers for common command calls.
This is a major update to LaGriT and the lg_util library.
Major changes have been made in the core memory management routines to allow
development for a 64 bit release. These changes will be invisible to most users
but allows better reporting of errors and memory usage for useful diagnostic information.
Other changes include: