14 
\chapter{Introduction} 
\chapter{Introduction} 
15 
\label{CHAP INTRO} 
\label{CHAP INTRO} 
16 
\section{Why \esc?} 
\section{Why \esc?} 
17 
\esc is a scripting environment for mathematical modeling based on the solutions partial differential equations (PDEs). It provides a highlevel of abstraction from the underlying numerical schemes and their implementation. By absolving the user from numerical requirements like data constructs, meshing and parallelization, the user can concentrate on the modeling aspects of his problem while still properly utilising the powerful mathematical capabilities of PDEs. 
\esc is a scripting environment for mathematical modeling based on the solutions of partial differential equations (PDEs). It provides a highlevel of abstraction from the underlying numerical schemes and their implementations. By absolving the user from numerical requirements like data constructs, meshing and parallelisation, the user can concentrate on the modeling aspects of his problem and still properly utilise the powerful mathematical capabilities of PDEs. 
18 


19 
\esc is built upon the interpretive programming language \pyt\footnote{see \url{www.python.org}}; a basic scripting language with many intrinsic functions and capabilities. Additionally, there are also a large number of software packages for \pyt which can be used in conjunction with \esc. These include functions and data constructs for linear algebra, statistics, visualisation, image processing and data plotting among others. Furthermore, most \esc scripts are scalable as they are able to run on single core desktop computers right through to multicore supercomputers\footnote{\esc supports distributed memory architectures with multicore processors through MPI and threading. See the \esc user guide at \url{https://launchpad.net/escriptfinley/+download} for details.} with no modifications to the scripts. 
\esc is built upon the interpretive programming language \pyt\footnote{see \url{www.python.org}}; a basic scripting language with many intrinsic functions and capabilities. Additionally, there are also a large number of software packages for \pyt which can be used in conjunction with \esc. These packages include functions and data constructs for linear algebra, statistics, visualisation, image processing and data plotting among others. Furthermore, most \esc scripts are scalable as they are able to run on single core desktop computers right through to multicore supercomputers\footnote{\esc supports distributed memory architectures with multicore processors through MPI and threading. See the \esc user guide at \url{https://launchpad.net/escriptfinley/+download} for details.} with no modifications to the scripts. 
20 


21 
There are many benefits for using a software platform like \esc for mathematical modeling projects. Developing upon an existing environment such as \esc is in many cases much simpler and more cost effective than building an original implementation from the ground up. Any modeling environment needs a data structure and solution algorithm which takes time to develop and test properly, \esc has already covered these problems and their implementations has been widely tested for bugs. While developed environments may not provide the user with the fastest algorithms for their problem, it is generally the case, that the overall time needed to identify, implement and test the optimal algorithm will exceed the time needed to implement and solve the problem with predeveloped and tested software. This is particularly true if a simulation does not need to be executed repetitively, or has relatively short lifetime. A model for a publication or thesis would be one such instance. 
There are many benefits for using a software platform like \esc for projects that involve mathematical modeling. Developing upon an existing environment such as \esc, is in many cases much simpler and more cost effective than building an original implementation from the ground up. Any modeling environment needs a data structure and solution algorithm which takes time to develop and test properly, \esc has already covered these problems and their implementations have been widely tested for bugs. Although developed environments may not provide the user with the fastest algorithms for their problems, it is generally the case, that the overall time needed to identify, implement and test the optimal algorithm will exceed the time needed to implement and solve the problem with predeveloped and tested software. This is particularly true if a simulation does not need to be executed repetitively, or has relatively short lifetime. A model for a publication or thesis would be one such instance. 
22 


23 
When it comes to solving partial differential equations \esc is ideal, as it is especially designed for this task. Other implementations are merely an addon to a linear algebra focused system (\textit{i.e.} MATLAB). The \esc approach gives the user a cleaner environment to work with and provides better efficiency when dealing with PDE coefficients. Data structures in \esc allow the user to abstract them self from problems like the data type of these coefficients. For example; if a model has been tested with a constant PDE coefficient the unchanged script can be run with a variable coefficient set from a data base or as a function of a dependent variable. This capability of \esc is possible because \esc uses the language of PDEs (as opposed to linear algebra) to describe a model. As it turns out, the \esc approach can efficiently be applied in very large software projects as it leads to a clearer structure for the code by separating modeling issues from lowlevel numerical and computational performance issues. At the same time, this arrangement also allows for the implementation of complex model coupling on a higherlevel. 
When it comes to solving partial differential equations \esc is ideal, as it is especially designed for this task. Other implementations are merely an addon to a linear algebra focused system (\textit{i.e.} MATLAB). The \esc approach gives the user a cleaner environment to work with and provides better efficiency when dealing with PDE coefficients. Data structures in \esc allow the user to abstract them self from problems like the data type of these coefficients. For example; if a model has been tested with a constant PDE coefficient the unchanged script can be run with a variable coefficient set from a data base or as a function of a dependent variable. This capability of \esc is possible because \esc uses the language of PDEs (as opposed to linear algebra) to describe a model. As it turns out, the \esc approach can efficiently be applied in very large software projects as it leads to a clearer structure for the code by separating modeling issues from lowlevel numerical and computational performance issues. At the same time, this arrangement also allows for the implementation of complex model coupling on a higherlevel. 
24 

