Skip to main content
Log in

Toward interoperable mesh, geometry and field components for PDE simulation development

  • Original Article
  • Published:
Engineering with Computers Aims and scope Submit manuscript

Abstract

Mesh-based PDE simulation codes are becoming increasingly sophisticated and rely on advanced meshing and discretization tools. Unfortunately, it is still difficult to interchange or interoperate tools developed by different communities to experiment with various technologies or to develop new capabilities. To address these difficulties, we have developed component interfaces designed to support the information flow of mesh-based PDE simulations. We describe this information flow and discuss typical roles and services provided by the geometry, mesh, and field components of the simulation. Based on this delineation for the roles of each component, we give a high-level description of the abstract data model and set of interfaces developed by the Department of Energy’s Interoperable Tools for Advanced Petascale Simulation (ITAPS) center. These common interfaces are critical to our interoperability goal, and we give examples of several services based upon these interfaces including mesh adaptation and mesh improvement.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

Notes

  1. While C++ could handle the relationships among interfaces using inheritance, not all languages can, so Babel does not use this idiom in C++ either.

References

  1. Abaqus webpage (2005) http://www.abaqus.com/

  2. ANSYS webpage (2005) http://www.ansys.com

  3. Fluent webpage (2005) http://www.fluent.com

  4. Kiva webpage (2003) http://www.lanl.gov/orgs/t/t3/codes/kiva.shtml

  5. Beall MW, Shephard MS (1999) An object-oriented framework for reliable numerical simulations. Eng Comput 15(1):61–72

    Article  Google Scholar 

  6. Brown DL, Henshaw WD, Quinlan DJ (1999) Overture: object-oriented tools for overset grid applications. Technical report, Lawrence Livermore National Laboratory, UCRL-JC-134018

  7. Brown SA (1993) PACT user’s guide. Lawrence Livermore National Laboratory, UCRL-MA-112087

  8. Bruaset AR, Langtangen HP (1997) A comprehensive set of tools for solving partial differential equations; DIFFPACK. In: Numerical methods and software tools in industrial mathematics. Brinkhauser Boston, Boston, pp 61–90

  9. Devloo PRB (1997) PZ: an object oriented environment for scientific programming. Comput Methods Appl Mech Eng 150(1-4):133–153

    Article  MATH  Google Scholar 

  10. Donescu P, Laursen TA (1996) A generalized object oriented approach to solving ordinary and partial differential equations using finite elements. Finite Elem Analy Des 22:93–107

    Article  MATH  Google Scholar 

  11. Steward JR, Edwards HC (2004) A framework approach for developing parallel adaptive multiphysics applications. Finite Elem Analy Des 40(12):1599–1617

    Article  Google Scholar 

  12. Ascher U, Petzold L (1998) Computer methods for ordinary differential equations and differential-algebraic equations. SIAM, Philadelphia

    MATH  Google Scholar 

  13. Balay S, Buschelman K, Gropp D, Kaushik WD, Knepley M, McInnes BF, Smith LC, Zhang H (2004) PETSc home page. http://www.mcs.anl.gov/petsc

  14. Balay S, Gropp WD, McInnes LC, Smith BF (1997) Efficient management of parallelism in object-oriented numerical software libraries. In: Bruaset AM, Arge E, Langtangen HP (eds) Modern software tools in scientific computing. Birkhauser, New York, pp 163–202

  15. Eispack webpage (2004) http://www.netlib.org/eispack/

  16. Lapack webpage (2004) http://www.netlib.org/lapack/

  17. Linpack webpage (2004) http://www.netlib.org/linpack/

  18. Keahey K, Beckman P, Ahrens J (2000) Ligature: Component architecture for high performance applications. Int J High Perf Comput Appl 14(4):347–356

    Article  Google Scholar 

  19. Kenny JP, Benson SJ, Alexeev Y, Sarich J, Janssen CL, McInnes LC, Krishnan M, Nieplocha J, Jurrus E, Fahlstrom C, Windus TL (2004) Component-based integration of chemistry and optimization software. J Comput Chem 25(14):1717–1725

    Article  Google Scholar 

  20. Larson JW, Norris B, Ong ET, Bernholdt DE, Drake JB, Elwasif WR, Ham MW, Rasmussen CE, Kumfert G, Katz DS, Zhou S, DeLuca C, Collins NS (2004) Components, the common component architecture, and the climate/weather/ocean community. In: 84th American Meteorological Society Annual Meeting, Seattle, Washington, American Meteorological Society, 11–15 January 2004

  21. Lefantzi S, Ray J (2003) A component-based scientific toolkit for reacting flows. In: Proceedings of the second MIT conference on computational fluid and solid mechanics, 17–20 June 2003, vol 2. Elsevier, Cambridge, pp 1401–1405

  22. Lefantzi S, Ray J, Najm HN (2003) Using the common component architecture to design high performance scientific simulation codes. In: Proceedings of the 17th international parallel and distributed processing symposium (IPDPS 2003), 22–26 April 2003, IEEE Computer Society, Nice, France

  23. Norris B, Balay S, Benson S, Freitag L, Hovland P, McInnes L, Smith B (2002) Parallel components for PDEs and optimization: some issues and experiences. Parallel Comput 28(12):1811–1831

    Article  MATH  Google Scholar 

  24. Parker SG (2002) A component-based architecture for parallel multi-physics PDE simulation. In: Proceedings of the international conference on computational science-part III. Springer, Heidelberg, pp 719–734.

  25. Zhou S, da Silva A, Womack B, Higgins G (2003) Prototyping the ESMF using DOE’s CCA. In: NASA earth science technology conference 2003, College Park, MD, 24–26 June

  26. Allan BA, Lefantzi S, Ray J (2004) ODEPACK++: refactoring the LSODE fortran library for use in the CCA high performance component software architecture. In: Proceedings of the 9th international workshop on high-level parallel programming models and supportive environments (HIPS 2004). IEEE, Santa Fe

  27. Smith K, Ray J, Allan BA (2003) CVODE component user guidelines. Technical report SAND2003-8276, Sandia National Laboratory, May 2003

  28. Bernholdt D, Allan B, Armstrong R, Bertrand F, Chiu K, Dahlgren T, Damevski K, Elwasif W, Epperly T, Govindaraju M, Katz D, Kohl J, Krishnan M, Kumfert G, Larson J, Lefantzi S, Lewis M, Malony A, McInnes L, Nieplocha J, Norris B, Parker S, Ray J, Shende S, Windus T, Zhou S (2005) A component architecture for high-performance scientific computing. Int J High Perf Comput Appl ( ACTS Collection Spec Issue) (to appear)

  29. Michael E. Mortenson (1997) Geometric Modeling, 2nd edn. Wiley, New York

  30. Luo X, Shephard MS, Remacle J-F, O’Bara RM, Beall MW, Szabo BA, Actis R (2002) p-version mesh generation issues. In: Proceedings of the 11th international meshing roundtable. Sandia National Laboratories, pp 343–354

  31. Beall MW, Shephard MS (1997) A general topology-based mesh data structure. Int J Numer Methods Eng 40(9):1573–1596

    Article  MathSciNet  Google Scholar 

  32. Dey S, O’Bara RM, Shephard MS (2001) Curvilinear mesh generation in 3D. Comput Aided Des 33:199–209

    Article  Google Scholar 

  33. Tautges TJ (2000) The common geometry module (CGM): a generic, extensible geometry interface. In: Proceedings of the 9th international meshing roundtable, Sandia report SAND 2000–2207, Sandia National Laboratories, pp 337–359

  34. Shephard MS, Georges MK (1992) Reliability of automatic 3-D mesh generation. Comput Methods Appl Mech Eng 101:443–462

    Article  MATH  MathSciNet  Google Scholar 

  35. CCA Forum homepage (2004) http://www.cca-forum.org/

  36. Dahlgren T, Epperly T, Kumfert G (2004) Babel User’s Guide. CASC, Lawrence Livermore National Laboratory, version 0.9.0 edn, January 2004

  37. Remacle J-F, Shephard MS (2003) An algorithm oriented mesh database. Int J Numer Methods Eng

    Article  MATH  Google Scholar 

  38. Tautges TJ (2004) MOAB: a mesh-oriented database. http://cubit.sandia.gov/MOAB

  39. Trease H, Trease L (2004) NorthWest grid generation code. http://www.emsl.pnl.gov/nwgrid/index_nwgrid.html

  40. Carl F, Ollivier-Gooch (1998–2005) GRUMMP—generation and refinement of unstructured, mixed-element meshes in parallel. http://tetra.mech.ubc.ca/GRUMMP

  41. Krysl P, Ortiz M (2001) Extraction of boundary representation from surface triangulations. Int J Numer Methods Eng 50:1737–1758

    Article  MATH  MathSciNet  Google Scholar 

  42. Pandofi A, Ortiz M (2002) An efficient procedure for fragmentation simulations. Eng Comput 18(2):148–159

    Article  Google Scholar 

  43. Wan J, Kocak S, Shephard MS (2004) Automated adaptive 3D forming simulation process. Eng Comput 21(1):47–75

    Article  Google Scholar 

  44. Cirak F, Ortiz M, Schroder P (2000) Subdivision surfaces: a new paradigm for thin shell finite-element analysis. Int J Numer Methods Eng 47:2039–2072

    Article  MATH  Google Scholar 

  45. The TSTT Software Webpage (2005) http://www.tstt-scidac.org/software/software.html

  46. Beall MW, Walsh J, Shephard MS (2004) Accessing CAD geometry for mesh generation. Eng Comput 20(3):210–221

    Article  Google Scholar 

  47. Beju I, Soos E, Teodorescu PP (1983) Euclidean tensor calculus with applications. Abacus, London

    Google Scholar 

  48. Ainsworth M, Oden JT (2000) A posteriori error estimation in finite element analysis. Wiley-Interscience, Wiley, New York

  49. Babuska I, Strouboulis T (2001) The reliability of the FE method. Oxford Press, Oxford

    Google Scholar 

  50. Bangerth W, Rannacher R (2003) Adaptive finite element methods for differential equations. In: Lectures in Mathematics VIII, vol 207. Birkhauser, New York

  51. Li X, Shephard MS, Beall MW (2005) 3D anisotropic mesh adaptation by mesh modifications. Comput Methods Appl Mech Eng 194(48–49):4915–4950

    Article  MATH  MathSciNet  Google Scholar 

  52. Li X, Shephard MS, Beall MW (2003) Accounting for curved domains in mesh adaptation. Int J Numer Methods Eng 58:246–276

    Article  Google Scholar 

  53. Ge L, Lee L, Zenghai L, Ng C, Ko K, Luo K, Shephard MS (2004) Adaptive mesh refinement for high accuracy wall loss determination in accelerating cavity design. In: IEEE conference on electromagnetic field computations, June

  54. Spatial Inc (2004) http://www.spatial.com/components/acis/

  55. Simmetrix Inc (2004) Simulation modeling suite. http://www.simmetrix.com/

  56. Fluhrer J (2004) DEFORM-3D Version 5.0 user’s manual. Scientific Forming Technologies Corporation

  57. Brewer M, Diachin LF, Knupp P, Leurent T, Melander D (2003) The mesquite mesh quality improvement toolkit. In: 12th international meshing roundtable, Sandia National Laboratories. pp 239–250

  58. Ollivier-Gooch CF (2006) A mesh-database-independent edge- and face-swapping tool. AIAA Paper 2006-0533. Presented at the 44th AIAA Aerospace Sciences Meeting, January 2006

  59. Babel website (2004), Lawrence Livermore National Laboratory. http://www.llnl.gov/CASC/components/babel.html

Download references

Acknowledgments

We would like to thank Tamara Dahlgren of LLNL for her insightful comments on the ITAPS interface design. This work was performed under the auspices of the US Department of Energy by the University of California Lawrence Livermore National Laboratory under contract No. W-7405-Eng-48 (UCRL-JRNL-213577); the Canadian Natural Sciences and Engineering Research Council under Special Research Opportunities Grant SRO-299160; and by Rensselaer Polytechnic Institute under DOE grant number DE-FC02-01ER25460.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Lori Freitag Diachin.

A Elementary examples of ITAPS mesh interface usage

A Elementary examples of ITAPS mesh interface usage

This appendix presents very simple examples illustrating usage of the ITAPS mesh interface. These examples are meant to be illustrative rather than exhaustive; much of the functionality of the mesh interface is not showcased here. The examples are written as stand-alone programs that can be compiled and run with any ITAPS-compliant mesh database.

We note that the interface examples described here were developed during the first round of SciDAC funding under the predecessor of the ITAPS center, the Terascale Simulation Tools and Technologies (TSTT) center. With the advent of the SciDAC-2 program, the center was renamed to ITAPS, but the team, philosophy and interface definition efforts remain largely the same. In the examples given here, each interface is in the ITAPS namespace to avoid potential function definition collisions. The “base” functionality described in Sect. 3.1, which includes tags, sets, and error handling is in the iBase interface; the mesh functionality described in Sect. 3.2 is in the iMesh interface.

Full SIDL descriptions of the interfaces are available at http://www.itaps-scidac.org/ under the Software link. For those interested in providing feedback on the interface definitions or participating in the interface definition activity, please contact the ITAPS management team at itaps-mgmt@lists.llnl.gov.

1.1 A.1 Language Interoperability

The ITAPS interface is designed to be not only data-structure neutral, but also programming language neutral. That is, a mesh server can be written in one language and client code in another. The ITAPS interface is specified using an interface description language (SIDL), and translated into language-specific interfaces through a tool called Babel [36, 59]. Babel also generates glue code that mediates all inter-language issues, including function name mangling and passage of string and array arguments. As an example of how this works in practice, consider the case of a request for mesh adjacency information. An application code using the ITAPS interface makes an adjacency request by calling a stub function (auto-generated by Babel) in the language of the application. This function re-packages function arguments and calls an internal object representation function (auto-generated by Babel, in C), which again repackages arguments and calls a skeleton function (auto-generated by Babel) in the language of the server. This function, finally, calls the server implementation of the original SIDL function. This approach eliminates all language-specific issues, including name mangling schemes and the treatment of strings and arrays, including dynamic array handling. In exchange, four versions of each SIDL function exist (three of which are auto-generated), and a call from client code must pass through all these layers. Not surprisingly, this complexity in call sequences can have a significant impact on application efficiency.

As an example of the function signatures that Babel creates in various languages, let us examine the mesh interface function for retrieving the entities adjacent to a single entity. The SIDL declaration for this function is

figure a

Clients call this function in different ways depending on the language in which the client is written. The C++ binding most nearly duplicates the SIDL function declaration;

figure b

In the C binding, the function name has been decorated to prevent naming clashes between SIDL interfaces, and two arguments have been added. One of these ( self ) is a handle for the iMesh data and the other ( _ex ) is used to return exceptions.

figure c

In Fortran77, all arguments are passed by address, and SIDL uses 64-bit integers when passing handles. Like the C binding, arguments have been added for the iMesh data and exception return.

figure d

Finally, the Fortran90 API is organized into modules and takes advantage of user-defined types, in a manner quite similar to the C API.

figure e

1.2 A.2 Mesh adjacency example

This example shows two ways in which entity adjacencies can be retrieved using the ITAPS iMesh interface. This example is written in C++; because the ITAPS team uses Babel for interlanguage calls, the underlying implementation could be in any Babel-supported language.

In line 9, a new mesh instance is created, using a factory. This factory is implementation-specific, but its interface is not, freeing an application from any compile-time dependence on a single implementation. The ITAPS implementation is supplied at link time or, with dynamically-loaded libraries, at run time. In lines 10–12, mesh data is read from a file into the root set of the mesh.

Lines 14–28 iterate through all the three-dimensional entities (regions) of the mesh, counting their total number of vertices. The iteration is controlled by an entity-by-entity iterator, initialized in line 17. Note that this iterator is not defined as part of the iMesh::Mesh base interface but in a more specialized interface, iMesh::Entity; line 15 casts the Mesh object to Entity. Footnote 1 In line 19, the iterator provides both a boolean value indicating whether more data is available and the handle of the next available entity if there is one. This syntax is admittedly somewhat awkward, but if a mesh is modified, it is impossible in general to be certain whether there will be another entity until one tries to retrieve the next one. Line 24 is the heart of the adjacency retrieval loop, returning an array of all vertices adjacent to the current region in the iteration.

figure f

Lines 30–41 illustrate block retrieval of entity adjacency information. Line 32 first retrieves all regions in the mesh. Then, in line 39, all vertices adjacent to the entities whose handles are in ents (i.e., all regions) are returned; the contents of offsets identifies, for each ent , where its list of vertices begins in allverts .

Finally, lines 42–44 report whether the total numbers of adjacent vertices retrieved by these alternate approaches are consistent.

1.3 A.3 Set and tag example

This example shows simple retrieval of entity sets and identification of tags attached to those sets. Again, the underlying ITAPS implementation could be in any Babel-supported language.

After reading a mesh as in the previous example, all the entity sets defined for the mesh are retrieved (line 20).

Lines 22–31 retrieve tag information for the sets. Specifically, line 27 retrieves all tags attached to a particular entity set, and the loop from lines 28–30 populates a standard template library set of tag handles.

Finally, the loop from lines 33–39 output information about each tag found, in order of increasing tag handle. For each tag handle, the name of the tag (retrieved in line 35) and its size in bytes (retrieved in line 36) are output.

figure g

Rights and permissions

Reprints and permissions

About this article

Cite this article

Chand, K.K., Diachin, L.F., Li, X. et al. Toward interoperable mesh, geometry and field components for PDE simulation development. Engineering with Computers 24, 165–182 (2008). https://doi.org/10.1007/s00366-007-0080-z

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00366-007-0080-z

Keywords

Navigation