Computational science (also scientific computing or scientific computation (SC)) is a rapidly growing multidisciplinary field that uses advanced computing capabilities to understand and solve complex problems. Computational science fuses three distinct elements:
- Algorithms (numerical and non-numerical) and modeling and simulation software developed to solve science (e.g., biological, physical, and social), engineering, and humanities problems
- Computer and information science that develops and optimizes the advanced system hardware, software, networking, and data management components needed to solve computationally demanding problems
- The computing infrastructure that supports both the science and engineering problem solving and the developmental computer and information science
In practical use, it is typically the application of computer simulation and other forms of computation from numerical analysis and theoretical computer science to solve problems in various scientific disciplines.
The field is different from theory and laboratory experiment which are the traditional forms of science and engineering. The scientific computing approach is to gain understanding, mainly through the analysis of mathematical models implemented on computers.
Scientists and engineers develop computer programs, application software, that model systems being studied and run these programs with various sets of input parameters. In some cases, these models require massive amounts of calculations (usually floating-point) and are often executed on supercomputers or distributed computing platforms.
Numerical analysis is an important underpinning for techniques used in computational science.
Applications of computational science
Problem domains for computational science/scientific computing include:
Numerical simulations have different objectives depending on the nature of the task being simulated:
- Reconstruct and understand known events (e.g., earthquake, tsunamis and other natural disasters).
- Predict future or unobserved situations (e.g., weather, sub-atomic particle behaviour, and primordial explosions).
Model fitting and data analysis
- Appropriately tune models or solve equations to reflect observations, subject to model constraints (e.g. oil exploration geophysics, computational linguistics).
- Use graph theory to model networks, such as those connecting individuals, organizations, websites, and biological systems.
- Optimize known scenarios (e.g., technical and manufacturing processes, front-end engineering).
- Machine learning
Methods and algorithms
Algorithms and mathematical methods used in computational science are varied. Commonly applied methods include:
- Numerical analysis
- Application of Taylor series as convergent and asymptotic series
- Computing derivatives by Automatic differentiation (AD)
- Computing derivatives by finite differences
- Finite element method
- Graph theoretic suites
- High order difference approximations via Taylor series and Richardson extrapolation
- Methods of integration on a uniform mesh: rectangle rule (also called midpoint rule), trapezoid rule, Simpson's rule
- Runge Kutta method for solving ordinary differential equations
- Monte Carlo methods
- Molecular dynamics
- Linear programming
- Branch and cut
- Branch and Bound
- Numerical linear algebra
- Computing the LU factors by Gaussian elimination
- Cholesky factorizations
- Discrete Fourier transform and applications.
- Newton's method
- Space mapping
- Time stepping methods for dynamical systems
Both historically and today, Fortran remains popular for most applications of scientific computing. Other programming languages and computer algebra systems commonly used for the more mathematical aspects of scientific computing applications include GNU Octave, Haskell, Julia, Maple, Mathematica, MATLAB, Python (with third-party SciPy library), Perl (with third-party PDL library), R, SciLab, and TK Solver. The more computationally intensive aspects of scientific computing will often use some variation of C or Fortran and optimized algebra libraries such as BLAS or LAPACK.
Computational science application programs often model real-world changing conditions, such as weather, air flow around a plane, automobile body distortions in a crash, the motion of stars in a galaxy, an explosive device, etc. Such programs might create a 'logical mesh' in computer memory where each item corresponds to an area in space and contains information about that space relevant to the model. For example, in weather models, each item might be a square kilometer; with land elevation, current wind direction, humidity, temperature, pressure, etc. The program would calculate the likely next state based on the current state, in simulated time steps, solving equations that describe how the system operates; and then repeat the process to calculate the next state.
The term computational scientist is used to describe someone skilled in scientific computing. This person is usually a scientist, an engineer or an applied mathematician who applies high-performance computing in different ways to advance the state-of-the-art in their respective applied disciplines in physics, chemistry or engineering. Scientific computing has increasingly also impacted on other areas including economics, biology and medicine.
Computational science is now commonly considered a third mode of science, complementing and adding to experimentation/observation and theory. The essence of computational science is numerical algorithm and/or computational mathematics. In fact, substantial effort in computational sciences has been devoted to the development of algorithms, the efficient implementation in programming languages, and validation of computational results. A collection of problems and solutions in computational science can be found in Steeb, Hardy, Hardy and Stoop, 2004.
Reproducibility and open research computing
The complexity of computational methods is a threat to the reproducibility of research. Jon Claerbout has become prominent for pointing out that reproducible research requires archiving and documenting all raw data and all code used to obtain a result. Nick Barnes, in the Science Code Manifesto, proposed five principles that should be followed when software is used in open science publication. Tomi Kauppinen et al. established and defined Linked Open Science, an approach to interconnect scientific assets to enable transparent, reproducible and transdisciplinary research.
Most scientific journals do not accept software papers because a description of a reasonably mature software usually does not meet the criterion of novelty. Outside computer science itself, there are only few journals dedicated to scientific software. Established journals like Elsevier's Computer Physics Communications publish papers that are not open-access (though the described software usually is). To fill this gap, a new journal entitled Open research computation was announced in 2010; it closed in 2012 without having published a single paper, for a lack of submissions probably due to excessive quality requirements. A new initiative was launched in 2012, the Journal of Open Research Software. In 2015, a new journal dedicated to the replication of computational results has been started on GitHub.
Scientific computation is most often studied through an applied mathematics or computer science program, or within a standard mathematics, sciences, or engineering program. At some institutions a specialization in scientific computation can be earned as a "minor" within another program (which may be at varying levels). However, there are increasingly many bachelor's and master's programs in computational science. Some schools also offer the Ph.D. in computational science, computational engineering, computational science and engineering, or scientific computation.
- Computational archaeology
- Computational biology
- Computational chemistry
- Computational economics
- Computational electromagnetics
- Computational engineering
- Computational finance
- Computational fluid dynamics
- Computational forensics
- Computational geophysics
- Computational informatics
- Computational intelligence
- Computational law
- Computational linguistics
- Computational mathematics
- Computational mechanics
- Computational neuroscience
- Computational particle physics
- Computational physics
- Computational sociology
- Computational statistics
- Computer algebra
- Computer simulation
- Financial modeling
- Geographic information system (GIS)
- High-performance computing
- Machine learning
- Network analysis
- Numerical linear algebra
- Numerical weather prediction
- Pattern recognition
- Scientific visualization
- Computational science and engineering
- Comparison of computer algebra systems
- List of molecular modeling software
- List of numerical analysis software
- List of statistical packages
- Timeline of scientific computing
- Simulated reality
- Extensions for Scientific Computation (XSC)
- Computational Science: Ensuring America’s Competitiveness. Computational Science: Ensuring America’s Competitiveness. President’s Information Technology Advisory Committee. June 2005.
- Phillips, Lee (2014-05-07). "Scientific computing's future: Can any coding language top a 1950s behemoth?". Ars Technica. Retrieved 2016-03-08.
- Landau, Rubin (2014-05-07). "A First Course in Scientific Computing" (PDF). Princeton University. Retrieved 2016-03-08.
- Mathematica 6 Scientific Computing World, May 2007
- Graduate Education for Computational Science and Engineering.Siam.org, Society for Industrial and Applied Mathematics (SIAM) website; accessed Feb 2013.
- Nonweiler T. R., 1986. Computational Mathematics: An Introduction to Numerical Approximation, John Wiley and Sons
- Steeb W.-H., Hardy Y., Hardy A. and Stoop R., 2004. Problems and Solutions in Scientific Computing with C++ and Java Simulations, World Scientific Publishing. ISBN 981-256-112-9
- Marwick, Ben. "How computers broke science – and what we can do to fix it". The Conversation. The Conversation. Retrieved 14 November 2016.
- Marwick, Ben (2016). "Computational reproducibility in archaeological research: Basic principles and a case study of their implementation". Journal of Archaeological Method and Theory. doi:10.1007/s10816-015-9272-9.
- Sergey Fomel and Jon Claerbout, "Guest Editors' Introduction: Reproducible Research," Computing in Science and Engineering, vol. 11, no. 1, pp. 5–7, Jan./Feb. 2009, doi:10.1109/MCSE.2009.14
- J. B. Buckheit and D. L. Donoho, "WaveLab and Reproducible Research," Dept. of Statistics, Stanford University, Tech. Rep. 474, 1995.
- The Yale Law School Round Table on Data and Core Sharing: "Reproducible Research", Computing in Science and Engineering, vol. 12, no. 5, pp. 8–12, Sept/Oct 2010, doi:10.1109/MCSE.2010.113
- Science Code Manifesto homepage. Accessed Feb 2013.
- Kauppinen, T.; Espindola, G. M. D. (2011). "Linked Open Science-Communicating, Sharing and Evaluating Data, Methods and Results for Executable Papers". Procedia Computer Science. 4: 726. doi:10.1016/j.procs.2011.04.076.
- CameronNeylon.net, 13 December 2010. Open Research Computation: An ordinary journal with extraordinary aims. Retrieved 04 Nov 2012.
- Gaël Varoquaux's Front Page, 04 Jun 2012. A journal promoting high-quality research code: dream and reality. Retrieved 04 Nov 2012.
- The Journal of Open Research Software ; announced at software.ac.uk/blog/2012-03-23-announcing-journal-open-research-software-software-metajournal
- The ReScience Journal announced during EuroScipy 2015
- E. Gallopoulos and A. Sameh, "CSE: Content and Product". IEEE Computational Science and Engineering Magazine, 4(2):39-43 (1997)
- G. Hager and G. Wellein, Introduction to High Performance Computing for Scientists and Engineers, Chapman and Hall (2010)
- A.K. Hartmann, Practical Guide to Computer Simulations, World Scientific (2009)
- Journal Computational Methods in Science and Technology (open access), Polish Academy of Sciences
- Journal Computational Science and Discovery, Institute of Physics
- R.H. Landau, C.C. Bordeianu, and M. Jose Paez, A Survey of Computational Physics: Introductory Computational Science, Princeton University Press (2008)
- John von Neumann-Institut for Computing (NIC) at Juelich (Germany)
- The National Center for Computational Science at Oak Ridge National Laboratory
- Educational Materials for Undergraduate Computational Studies
- Computational Science at the National Laboratories
- Bachelor in Computational Science, University of Medellin, Colombia, South America
- Simulation Optimization Systems (SOS) Research Laboratory, McMaster University, Hamilton, ON