Page 308 - The Combined Finite-Discrete Element Method
P. 308

10





           Implementation of some of

           the Core Combined

           Finite-Discrete Element

           Algorithms









           Combined finite-discrete element simulations are computationally much more complex
           than the more familiar finite element methods, and this must be taken into account
           both in terms of software design and implementation. In this chapter, some problems
           associated with the implementation of the combined finite-discrete element method are
           addressed. This is done through listing and explaining the implementation of the core
           combined finite-discrete element algorithms such as contact detection, contact interaction
           and deformability.
             Originally the combined finite-discrete element method was implemented in an object
           oriented fashion using C++. However, because many readers may not be familiar with
           C++, a much simpler C-based implementation of these core algorithms is described in
           this chapter.

           10.1 PORTABILITY, SPEED, TRANSPARENCY AND REUSABILITY

           10.1.1   Use of new data types

           C enables the definition of new data types. This is used, for instance, for object-orientated
           programming. However, very often one may wish to use the combined finite-element
           program in a single precision mode for one problem (or machine), and in double precision
           mode for another problem (or machine). This flexibility can save both programming and
           CPU time and reduce memory requirements.


           10.1.2   Use of MACROS

           Combined finite-discrete element simulations are CPU intensive, thus it is very important
           that the features of the C language that speed up C programs are used when implementing

           The Combined Finite-Discrete Element Method  A. Munjiza
            2004 John Wiley & Sons, Ltd ISBN: 0-470-84199-0
   303   304   305   306   307   308   309   310   311   312   313