Welcome Guest!
 QC Method Forum
 Previous Message All Messages Next Message 
QC Method - version 1.3 release  tad-@techunix.technion.ac.il
 May 24, 2007 11:05 PDT 


Dear Colleague,

You are receiving this email because you downloaded a copy of the
Quasicontinuum (QC) Method code. We hope that you are finding the code
useful.

It is a pleasure to announce the release of version 1.3 of the QC code.
The main focus of this release is improved portability. The code has been
significantly rewritten and restructured to meet the Fortran 90 standard.
As a result the code compiles without modification on ten different
compilers and runs on a variety of platforms. The new code structure will
serve as the basis for future code development. In addition, the code has
been improved and extended in a number of ways as detailed below.

Together with the new code, the Reference Manual and Tutorial Guide have
been significantly expanded, providing much more information on developing
user routines.

Main features in the new version:

* Improved code portability. The new code compiles and runs on a large
number of platforms and compilers.

* Improved makefile system allowing for easy porting from one system to
another. (We thank Dr. Marcel Arndt at the University of Minnesota for his
assistance with this aspect of the new release.)

* Various code optimizations were performed resulting in a speed up of
about %30-40 (depending on the platform).

* Significant reduction in memory usage allowing for larger problems to be
run.

* New "fully-nonlocal zone" option added to the zone macro.

* New user capabilities allowing the user to apply boundary conditions
through an external potential and to construct specialized plots. The
entire user code interface has been streamlined and made more robust (i.e.
less likely to cause the code to fail through user programming errors).

* Greatly expanded Reference Manual and Tutorial Guide.

* Numerous minor bugs fixed. One particularly important bug that could
result in incorrect repatom status after adaption was found and corrected.
THE OLD CODE COULD GIVE INCORRECT RESULTS IN CERTAIN CASES.

A more detailed explanation of the changes is given at the end of this
email and in the README file bundled with the code. You may download the
new version from:

http://www.qcmethod.com/NewVersion/QCv1.3.tar.gz

This download site will be available for the next two week (until June 7,
2007). After that you will be able to get the code from the QC site
(www.qcmethod.com) by clicking on "downloads" and reregistering.

Best wishes,

Ellad Tadmor and Ron Miller
---------------------------
www.qcmethod.com


Detailed list of changes in QC version 1.3:

1. The QC Code was largely rewritten and restructured to conform to the
    Fortran 90 standard. As a result the code is very portable. It has been
    tested with ten different Fortran compilers. In all cases it compiles and
    runs without modifications. Some of the main changes introduced are:

    (a) All functions and subroutines were placed within modules. This ensures
        explicit interfaces for called subroutines and functions.. As a result,
        a variety of potentially non-portable Fortran 77 "tricks" no longer work.
        These have been removed.

    (b) "double precision" variables were replaced with "real(kind=dp)", where
        dp is defined in mod_global as "selected_real_kind(p=15,r=307)". This
        ensures that the same precision is used on any machine. The change
        to "dp" means generic routines must be used such as sin(x), sqrt(x)
        and not the specific double precision routines dsin(x), dsqrt(x), etc.
        Also, type change to "dp" precision is done with real(n,dp), where n is
        an integer, and not dble(n).

     (c) Obsolete features in Fortran 90 were removed. For example,
         "character*n" were changed to "character(len=n)". Arithmetic
         if statements removed, etc.

     (d) Passing of array sections to subroutines were replaced by passing a
         temporary array containing the relevant section. Technically, this
         is not necessary since Fortran 90 allows passing array sections.
         However, in practice some compilers failed to do do this correctly
         especially, when the array was part of a derived type.

     (e) Dynamic memory allocation of variables was done automatically
         whenever possible, otherwise the "allocatable" clause was used.
         The use of pointers was limited to cases where this was unavoidable.

2. Greatly improved streamlined make architecture designed to allow easy
    porting from one platform to another. The new approach is very easy
    to use and robust. It has been tested on a variety of Unix and Linux
    systems as well as OS X 10.4.9.

3. The code was optimized in a number of ways. A speed-up of about 30-40%
    was observed for typical applications when switching from version 1.2 to
    1.3.

4. The memory requirement of the code were greatly reduced. This was done
    by doing the following:

    (a) A number of memory leaks were detected and fixed.

    (b) The irel() array was reduced from storing all neighbors of
        a repatom within the cutoff radius to only its nearest neighbors.

    (c) The arrays xl() and ul() were removed.

5. Restart file size was greatly reduced due to the changes in item 4. Note
    that version 1.3 will still read in restart files from older versions
    of the code. This is done automatically without user intervention.

6. Numerous bugs fixed. Most are minor and will not be mentioned. The more
    major ones are listed below. The subroutine containing the bug appears
    in parentheses.

    (a) (StatusCalc) The calculation of deformation gradients and
        eigenvalues could be corrupted after adaption. As a result
        repatom status (local or nonlocal) could be incorrectly computed.
        This would be corrected in subsequent steps but could explain some
        "jerky" behavior that was sometimes observed in simulations. This was
        fixed. Note: The corrected code gives results that can be different
        from earlier versions because the set of nonlocal atoms can be different.

    (b) (pmacr) When calling restart b() was stored in blstat()
        for 'read' but not for 'txrd'. This was fixed.

    (c) (delaunay) Bug related to convex hull triangulation for the special
        case where ncb=0 and nce/=0 fixed.

    (d) (GetCellData) For "bad" crystallographic orientations with very large
        repeat distance the algorithm to find the repeating cell could fail.
        This was fixed.

7. A number of changes were introduced to the structure of the required
    user routines that interface with QC. The changes make the routines
    easier to work with and safer (i.e. less likely to "break" QC due
    to any errors in them). The main changes are:

    (a) All user routines are now in a single file called "user_APP.f" where
        APP is a particular application (e.g. user_gb.f). This file contains:

        user_mesh        -- mesh generator
        user_bcon        -- boundary conditions
        user_pdel        -- force versus displacement
        user_potential   -- user-specified external potential
        user_plot        -- user-specified plot option

        The last two are new in this release. See the reference manual for
        details.

     (b) Direct access to many module variables is no longer possible to
         prevent a user inadvertently "breaking" the code. Instead routines
         were added to allow a user to query a module for the value of a
         particular variable. These routines include:

         In mode_grain:

         NumGrains             - return number of grains
         GetGrainCellSize      - Get the repeating cell dimensions for a
                                 given grain
         GetGrainNumCell       - Get the number of atoms in the repeating cell
                                 for a given grain
         GetGrainCellAtom      - Get coordinates of a given atom in the repeating
                                 cell for a given grain
         GetGrainRefStiff      - reference stiffness matrix for a given grain
         GetGrainBvec          - Get Bravais vector matrix for a given grain
         GetGrainBinv          - Get inverse Bravais vector matrix for a given
                                 grain
         GetGrainRefatom       - Get reference atom for a given grain
         GetGrainSpecies       - Get species for a given grain
         GetGrainNumVrts       - Get number of vertices for polygon of a given
                                 grain
         GetGrainVertex        - Get given vertex of the polygon of a given grain
         GetGrainXlatvect      - Get crystallographic axes for a given grain

         In mod_pload:

         GetLoadTime           - Get current loading time
         GetLoadTimeStep       - Get current loading timestep
         GetLoadPropFact       - Get current loading proportional factor
         GetLoadOldPropFact    - Get previous loading proportional factor

     (c) "only" clause added to all use statements.

     (d) Calling header to subroutine qsortr() (called from user_mesh)
         was changed to:

         subroutine qsortr(n,list,xkey,sign,listdim,keydim)

         The variables 'ndim' and 'ind' that appeared between 'xkey' and 'sign'
         in the old header were dropped.

    A file user_template.f is included in the QC directory as an aid to
    porting user routines from older versions to version 1.3. The file
    contains a skeleton of the file along with instructions on where and
    how to place the older user routines.

8. The version 1.3 release is focused more on a restructuring of the code
    as a basis for future development. However, there are a number of
    minor extensions in this version:

    (a) Two user routines user_potential and user_plot were added, allowing
        the user to define a user-specified external potential and plot option.
        See the reference manual for more information.

     (b) The zone macro (formerly used to defined no-adaption zones) was
         generalized to describe "special-attribute" zones. This currently
         includes nonlocal zones and no-adaption zones. See the reference manual
         for details.

     (c) More input verification was added to the code to catch user input
         errors.

     Version 1.3 is downward compatible being able to read input files
     used with earlier versions of the code.

9. The QC Reference Manual and QC Tutorial Guide were significantly
    expanded. The Reference Manual, in particular, has an entirely new
    chapter on the structure of the QC code and on writing the user
    routines.

10. The utility program "dynpots.f" was updated from f77 to conform to
    the f90 standard.

__________________________________________________________________

Ellad B. Tadmor, Professor

Aerospace Engineering and Mechanics       tel 612-625-6642
University of Minnesota                   fax 612-626-1558
107 Akerman Hall, 110 Union St SE
Minneapolis, MN 55455, USA

on leave from

Department of Mechanical Engineering
Technion -- Israel Institute of Technology
32000 Haifa, Israel

tel +972-4-829-3466     email tad-@tx.technion.ac.il
fax +972-4-829-5711     web    http://tx.technion.ac.il/~tadmor
__________________________________________________________________
	
 Previous Message All Messages Next Message 
  Check It Out!

  Topica Channels
 Best of Topica
 Art & Design
 Books, Movies & TV
 Developers
 Food & Drink
 Health & Fitness
 Internet
 Music
 News & Information
 Personal Finance
 Personal Technology
 Small Business
 Software
 Sports
 Travel & Leisure
 Women & Family

  Start Your Own List!
Email lists are great for debating issues or publishing your views.
Start a List Today!

© 2001 Topica Inc. TFMB
Concerned about privacy? Topica is TrustE certified.
See our Privacy Policy.