The name Fortran is an abbreviation of formula translation: it is a language that has been pricipally written for re-creating mathematics on computer. Unlike Algol-like languages such as Pascal, Fortran code is generally not elegant and Fortran lacks the inherent brevity of C coding. However Fortran is still popular since it has important constructs that are dear to mathematicians, scientists and engineers - for example a complex numeric type and a good range of mathematical functions. Because of Fortran's early dominance in mathematical programming, a range of library codes for carrying out sophisticated numerical algorithms or the evaluation of special functions have been developed. Fortran software libraries such as NAG , IMSL and Numerical Recipes contain the results of such endeavours.
The subroutines for computing the interior and exterior boundary-value problems ( IBEM* and EBEM*) can be used in an alternative way. If the parameter .LSOL. is set .FALSE. the workspace parameters WKSPC1, WKSPC2, WKSPC3, WKSPC4 contain the information required to solve a wider range of acoustic problems outside the routine.
At a more advanced level, the user may wish to introduce more sophistication and adjust the parameters of H2LC, H3LC and H3ALC accordingly in order to analyse the methods or to improve computational efficiency of the boundary element method. The core routines can be used to introduce the integral equation methods to a much wider range of acoustic problems than those explicitly covered in this text.
(i) A method for solving a linear system of equations
where the matrices are full and complex. The subroutine
CGLS for carrying this out is described in Appendix 3.
(ii) A method for finding the eigenvalues of an interpolating
complex polynomial matrix is implemented by subroutine INTEIG.
INTEIG requires a method for solving a generalised eigenvalue problem,
again with complex matrices is implemented by subroutine CGEIG.
These routines are outlined in Appendix 4.
(iii) A subroutine for computing a spherical hankel function is listed in Appendix 5.
The method (i) is required for all interior and exterior boundary value problems, the methods (ii) are only required for modal analyses and the method (iii) is only necessary for two-dimensional problems.
The method for solving the linear system of equations, necessary in the solution of the interior and exterior boundary value problems of Chapters 4 and 5, is carried out by a subroutine identified by CGLS. The modal analysis problems considered in Chapter 6 each need to call a subroutine identified by INTEIG, for solving a polynomial eigenvalue problem. This is then re-cast as a generalised eigenvalue problem ( CGEIG) and solved by using a standard library routine. The hankel functions are evaluated through calling a subroutine identified by FNHANK.
In the software provided, NAG routines are invoked for solving the generalised eigenvalue problem ( CGLS) and for computing the terms of the Hankel functions ( FNHANK) in the supplied software. If the reader does not have NAG then these codes will need to be developed in some alternative way. The codes for solving the interior and exterior three-dimensional boundary-values problems do not invoke any external routines.
One of the main reasons for using the boundary element method in the first place is that it is often expected to be more computationally efficient than competing methods. For example the finite element method might be rejected as a feasible solution method for exterior acoustic problems because it is awkward to use in an infinite domain. However, the feasibility of the FEM can be equally questioned on the grounds of its poor computational efficiency in this case.
When running the boundary element method on small scale problems, solutions will usually be obtained in a few minutes or even in a matter of seconds. However, if the user is interested in developing boundary element methods for large-scale problems the issue of computational efficiency could be important; adapting the code with a view to reducing computational cost could greatly reduce the execution time in an application without a significant effect on accuracy. Alternatively, the numerical analysis of integral equation methods should ideally include a consideration of computational efficiency.
In Section 3.8 the computational cost of the core routines is tabulated. These can be used to determine the computing time required to compute the matrices in the boundary element method for example. The charateristics of the extra computational cost of running the methods for solving linear systems of equations and eigenvalue problems are documented in numerical analysis literature. The cost of function evaluations and in particular the evaluation of the Hankel functions can be determined experimentally. Hence the execution times of programs can be estimated in terms of number of elements, number of quadrature points etc. The contents of the parameter list of the core routines could be adjusted as a means to reducing the execution time.