PHAML User's Guide
Total Page:16
File Type:pdf, Size:1020Kb
NISTIR 7374 PHAML User's Guide William F. Mitchell U. S. Department of Commerce Technology Administration National Institute of Standards and Technology Information Technology Laboratory Gaithersburg, MD 20899 USA Revised August 28, 2018 for Version 1.20.0 PHAML User's Guide, Version 1.20.0 William F. Mitchell1 Applied and Computational Mathematics Division 100 Bureau Drive Stop 8910 National Institute of Standards and Technology Gaithersburg, MD 20899-8910 email: [email protected] 1Contribution of NIST, not subject to copyright in the United States. The mention of specific products, trademarks, or brand names is for purposes of identification only. Such mention is not to be interpreted in any way as an endorsement or certification of such products or brands by the National Institute of Standards and Technology. All trademarks mentioned herein belong to their respective owners. Abstract PHAML (Parallel Hierarchical Adaptive MultiLevel) is a Fortran module for the solution of elliptic partial differential equations. It uses finite elements, adaptive grid refinement (h, p or hp) and multigrid solution techniques in a message pass- ing parallel program. It has interactive graphics via OpenGL. This document is the user's guide for PHAML. The first part tells how to obtain any needed software, how to build and test the PHAML library, and how to compile and run the example programs. The second part explains the use of PHAML, in- cluding program structure and the various options that are available. The third part is a reference manual which describes the API (application programming interface) of PHAML. The reference manual begins with a 2 page Quick Start section for the impatient. Keywords: adaptive grid refinement, dynamic load balancing, elliptic eigen- value problems, elliptic partial differential equations, high order finite elements, hp-adaptivity, multigrid, parallel programming 1 Contents 1 Introduction 6 2 Software 8 2.1 Obtaining Software . .8 2.1.1 PHAML . .8 2.1.2 Fortran 90 and C Compilers . .8 2.1.3 BLAS and LAPACK . .9 2.1.4 MPI . .9 2.1.5 OpenGL (or Mesa), GLUT and f90gl . .9 2.1.6 Triangle . 10 2.1.7 Gmsh . 10 2.1.8 SLEPc . 10 2.1.9 ARPACK . 10 2.1.10 BLOPEX . 10 2.1.11 PETSc . 10 2.1.12 MUMPS . 11 2.1.13 SuperLU . 11 2.1.14 hypre ............................. 11 2.1.15 ML . 11 2.1.16 Zoltan . 12 2.2 Compiling PHAML . 12 2.2.1 Creating the Makefiles . 12 2.2.2 Compiling the Library . 15 2.3 Testing the Library . 15 2.4 Compiling and Running the Examples . 16 3 Scalar Linear Elliptic Boundary Value Problems 19 3.1 Main program . 19 3.1.1 Parallelism . 19 3.1.2 Program structure . 20 3.1.2.1 Master/slave and Sequential . 20 3.1.2.2 SPMD . 21 3.2 Defining the problem . 23 3.2.1 Defining the PDE . 23 2 3.2.2 Defining the boundary conditions . 24 3.2.3 Defining the domain and initial grid . 26 3.2.4 The true solution . 28 3.3 Solution method . 29 3.3.1 Discretization . 29 3.3.2 Refinement . 30 3.3.3 Error indicator . 37 3.3.4 Linear system solver . 39 3.3.4.1 Hierarchical basis multigrid solver . 39 3.3.4.2 Krylov space solvers . 41 3.3.4.3 Alternative direct solvers . 41 3.3.4.4 Alternative iterative solvers . 42 3.3.5 Load balancing . 45 3.3.6 Termination . 47 3.4 I/O . 48 3.4.1 I/O files . 48 3.4.2 Printed I/O . 49 3.4.3 Pausing . 50 3.5 Graphics . 50 3.5.1 Overview . 50 3.5.2 Example visualizations . 52 3.5.3 View modifier . 58 3.5.4 Colors . 59 3.5.5 Functions . 60 3.5.6 Lights . 61 3.5.7 Contour plots . 61 3.5.8 Multiple solutions . 61 3.5.9 Miscellaneous features . 62 3.5.10 Development aids . 64 3.5.11 Postscript . 64 3.6 Post-solution utilities . 65 3.6.1 Store and Restore . 65 3.6.2 Store Matrix . 65 3.6.3 Store Grid . 66 3.6.4 Query . 67 3.6.5 Solution evaluation . 67 3.6.6 Functionals . 68 4 Problem Extensions 69 4.1 Eigenvalue Problems . 69 4.2 Coupled Systems or Multicomponent Solutions . 71 4.3 Parabolic, Nonlinear, Etc. Problems . 72 4.4 3D Problems . 73 5 Examples 78 3 6 Reference Manual 80 6.1 Quick Start . 80 6.1.1 Obtaining the software . 80 6.1.2 Compiling the PHAML library . 81 6.1.3 Compiling an Example . 81 6.1.4 Running the Example . 81 6.1.5 Now what? . 82 6.2 Public Entities in PHAML . 82 6.2.1 phaml solution type ..................... 82 6.2.2 my real . 82 6.2.3 pde and my pde id...................... 82 6.2.4 symbolic constants . 83 6.3 User Provided Routines . 83 6.3.1 bconds . 83 6.3.2 boundary point . 84 6.3.3 boundary npiece . 84 6.3.4 boundary param . 84 6.3.5 iconds . 85 6.3.6 pdecoefs . 85 6.3.7 phaml integral kernel . 86 6.3.8 regularity . 86 6.3.9 trues . 87 6.3.10 truexs . 87 6.3.11 trueys . 87 6.3.12 update usermod . 88 6.4 PHAML procedures . 88 6.4.1 phaml compress . 88 6.4.2 phaml connect . 88 6.4.3 phaml copy soln to old . 90 6.4.4 phaml create . 90 6.4.5 phaml destroy . 92 6.4.6 phaml evaluate . 93 6.4.7 phaml get grid soln . 93 6.4.8 phaml evaluate old . 94 6.4.9 phaml integrate . 94 6.4.10 phaml pclose . 95 6.4.11 phaml popen ......................... 95 6.4.12 phaml query . 96 6.4.13 phaml restore . 99 6.4.14 phaml scale . 100 6.4.15 phaml solve pde ....................... 100 6.4.15.1 Miscellaneous arguments . 101 6.4.15.2 Termination arguments . 102 6.4.15.3 Output control arguments . 104 6.4.15.4 Refinement arguments . 110 6.4.15.5 Load balancing arguments . 115 4 6.4.15.6 Assembly arguments . 116 6.4.15.7 Solver arguments . 116 6.4.15.8 Eigenvalue arguments . 121 6.4.16 phaml store . 123 6.4.17 phaml store grid . 123 6.4.18 phaml store matrix . 124 5 Chapter 1 Introduction To start using PHAML immediately, see the Quick Start guide in Section 6.1. PHAML stands for Parallel Hierarchical Adaptive MultiLevel method. It solves systems of linear elliptic partial differential equations (PDEs) of the form @ @u @ @u @ @u @u @u − c − c − c + c + c + c u = f in Ω @x xx @x @x xy @y @y yy @y x @x y @y u (1.1) where cxx, cxy, cyy, cx, cy, cu and f are functions of.