<p>For fundamentals on numerical methods applied in atmosphere and ocean modeling, see the GARP publication by Mesinger and Arakawa: <a href="http://twister.caps.ou.edu/CFD2013/Mesinger_ArakawaGARP.pdf">Numerical Methods Used in Atmospheric Models</a>. This old, but certainly not outdated text provides the basics on time and space discretization and stability, with particular focus on solving advection equations, and gravity-inertia wave (read: shallow water) equations, and is relatively easy to digest. A must read for any meteorologist or oceanographer using or developing numerical models.</p>

<p>Then, an excellent textbook by Dale Durran, <a href="http://www.atmos.washington.edu/numerical_methods/">Numerical Methods for Fluid Dynamics: with Applications in Geophysics</a> maintains similar application focus as Mesinger and Arakawa, but expanded with more numerical algorithms and in-depth analysis. It covers the basics as well, so it can be used as a stand-alone text.  </p>

<p>There are many other more general CFD textbooks that contain material applicable to ocean and atmosphere modeling. The majority are more geared towards mechanical engineering applications, so you may need to apply a filter (hur hur).</p>

<p>On the other hand, if you are more interested in physics parameterization schemes used in atmosphere models, such as cumulus convection, microphysics, or boundary layer parameterization schemes, a book by David Stensrud, <a href="http://rads.stackoverflow.com/amzn/click/0521126762">Parameterization Schemes: Keys to Understanding Numerical Weather Prediction Models</a>, is an excellent summary of current state-of-the-art. It covers a wide area of unresolved physical processes in the atmosphere, so it does not go into too many details - if you are interested in fully understanding a particular scheme, you will need to follow the reference chain and read the particular papers on the topic. I highly recommend this one if you are interested in gaining an overall understanding of parameterizing atmospheric physics processes.</p>

CC BY-SA 3.0
2014-11-15T17:33:08.190Z
This is a great start and exactly what I was looking for. Thank you.
Will Luce
CC BY-SA 3.0
2014-11-15T17:41:14.543Z
The only thing I can add is "learn Fortran (not FORTRAN)!"  Great selection of books to get started.  Implementing a shallow water model is a great introduction to modeling.
casey
CC BY-SA 3.0
2014-11-15T17:53:20.920Z
I'm looking into that. I've heard that most models are written in it and I've also heard that we continuously add onto these older models. That's my big area of interest.
Will Luce
CC BY-SA 3.0
2014-11-15T18:01:10.893Z
@willluce even new development is done in Fortran. Its (arguably) the best tool for the job (still). Also look into OpenMP and MPI as our problems tend to be embarrassingly parallel.
casey
CC BY-SA 3.0
2014-11-16T08:21:12.290Z
@casey - The difference between FORTRAN and Fortran is similar to the difference between krill and the shrimp I like to eat. Both are archaic animals that have changed hardly at all in the last 400 million years. Besides, if you learn Fortran, you'll almost certainly need to learn FORTRAN for the simple reason that there's so much legacy code written in FORTRAN out there. Fortran, along with FORTRAN, are **incredibly** lousy languages. This is coming from someone who used to write in FORTRAN, then Fortran. Thank goodness I don't have to do that anymore.
David Hammen
CC BY-SA 3.0
2014-11-16T15:41:12.230Z
@DavidHammen Incredibly lousy? Sounds to me like you were not doing it right. Whoever does or did research in high performance computing knows very well why Fortran still dominates their application domain. Comments like yours are becoming very old.
milancurcic
CC BY-SA 3.0
2014-12-13T02:08:36.150Z
@DavidHammen What language do you suggest in the context of HPC applied to ocean-atmospheric simulations?
Isopycnal Oscillation
CC BY-SA 3.0
2014-12-13T08:59:00.210Z
@IRO-bot - Yep. Incredibly lousy, and that's being nice. I have a weird mix of education and employment that mixes physics, engineering, and computer science. The computer science part of me has been fully indoctrinated into not liking Fortran. Most computer scientists lump Fortran with COBOL as the two worst programming languages ever invented. Even Basic doesn't come close when it comes to the extreme degree of contempt that computer scientists have toward Fortran (and COBOL).
David Hammen
CC BY-SA 3.0
2014-12-13T09:12:04.860Z
@IsopycnalOscillation - The "best" language to use depends on context. If you're developing an app for an Android phone, you use Java. For an iPhone, you're best off if you use Objective C. With regard to your question, it's whatever language in which the majority of existing ocean-atmospheric simulations are already written (almost certainly Fortran). A team of hundreds could not rewrite the hundreds of thousands of lines of code that form the basis of those numerical codes. The easiest solution is to work with the code that already exists, and in your case, it's almost certainly Fortran.
David Hammen
CC BY-SA 3.0
2014-12-13T13:47:47.547Z
Please, please, please, let's not start this here! :)
milancurcic
CC BY-SA 3.0
2015-02-21T04:30:08.783Z
I disagree... I think you need to learn python.  All the slick super fast cross-data-type functions are done in python.  That is, if you want to learn a language that is actually fun to use and runs super fast.  Though... there are a lot of calls to Fortran.  Or is it FORTRAN?
f.thorpe
CC BY-SA 3.0
2014-11-15T17:23:56.100Z
2014-11-15T17:29:17.430Z
2014-11-15T17:29:17.430Z
milancurcic
<p>I'm a computer/atmospheric science undergrad and I'm trying to get into atmospheric modeling. Any recommendations for resources to get going or to learn about approaches? I can handle fairly technical stuff so don't be shy.</p>

CC BY-SA 3.0
2014-11-15T16:08:43.487Z
I think it would be helpful if you distinguished what type of atmospheric modeling you are interested in.  For instance, meteorological models used in weather forecasts, climate models that focus on carbon transfer and energy budgets, chemical transport models that focus on air quality, or dispersion models that focus on the immediate effects of known pollution sources.
f.thorpe
CC BY-SA 3.0
2014-11-15T16:16:16.370Z
Also, see this post: http://earthscience.stackexchange.com/questions/20/what-are-the-major-differences-between-weather-models-and-climate-models?rq=1
f.thorpe
<meteorology><atmosphere><models><numerical-modelling>
Resources for learning the technical parts of atmospheric modeling
Will Luce
# Resources for learning the technical parts of atmospheric modeling

(Asked by: username_0 on 2014-11-15)

I'm a computer/atmospheric science undergrad and I'm trying to get into atmospheric modeling. Any recommendations for resources to get going or to learn about approaches? I can handle fairly technical stuff so don't be shy.

**Tags:** meteorology, atmosphere, models, numerical-modelling

> **Comments:**
> **username_1**: I think it would be helpful if you distinguished what type of atmospheric modeling you are interested in.  For instance, meteorological models used in weather forecasts, climate models that focus on carbon transfer and energy budgets, chemical transport models that focus on air quality, or dispersion models that focus on the immediate effects of known pollution sources.  
> **username_1**: Also, see this post: http://earthscience.stackexchange.com/questions/20/what-are-the-major-differences-between-weather-models-and-climate-models?rq=1  

---

## 1 answers

### Answer by username_2 on 2014-11-15. Score: 14

For fundamentals on numerical methods applied in atmosphere and ocean modeling, see the GARP publication by Mesinger and Arakawa: [Numerical Methods Used in Atmospheric Models](http://twister.caps.ou.edu/CFD2013/Mesinger_ArakawaGARP.pdf). This old, but certainly not outdated text provides the basics on time and space discretization and stability, with particular focus on solving advection equations, and gravity-inertia wave (read: shallow water) equations, and is relatively easy to digest. A must read for any meteorologist or oceanographer using or developing numerical models.

Then, an excellent textbook by Dale Durran, [Numerical Methods for Fluid Dynamics: with Applications in Geophysics](http://www.atmos.washington.edu/numerical_methods/) maintains similar application focus as Mesinger and Arakawa, but expanded with more numerical algorithms and in-depth analysis. It covers the basics as well, so it can be used as a stand-alone text.

There are many other more general CFD textbooks that contain material applicable to ocean and atmosphere modeling. The majority are more geared towards mechanical engineering applications, so you may need to apply a filter (hur hur).

On the other hand, if you are more interested in physics parameterization schemes used in atmosphere models, such as cumulus convection, microphysics, or boundary layer parameterization schemes, a book by username_4 Stensrud, [Parameterization Schemes: Keys to Understanding Numerical Weather Prediction Models](http://rads.stackoverflow.com/amzn/click/0521126762), is an excellent summary of current state-of-the-art. It covers a wide area of unresolved physical processes in the atmosphere, so it does not go into too many details - if you are interested in fully understanding a particular scheme, you username_0 need to follow the reference chain and read the particular papers on the topic. I highly recommend this one if you are interested in gaining an overall understanding of parameterizing atmospheric physics processes.

> **Comments:**
> **username_0**: This is a great start and exactly what I was looking for. Thank you.  
> **username_3**: The only thing I can add is "learn Fortran (not FORTRAN)!"  Great selection of books to get started.  Implementing a shallow water model is a great introduction to modeling.  
> **username_0**: I'm looking into that. I've heard that most models are written in it and I've also heard that we continuously add onto these older models. That's my big area of interest.  
> **username_3**: @username_0 even new development is done in Fortran. Its (arguably) the best tool for the job (still). Also look into OpenMP and MPI as our problems tend to be embarrassingly parallel.  
> **username_4**: @username_3 - The difference between FORTRAN and Fortran is similar to the difference between krill and the shrimp I like to eat. Both are archaic animals that have changed hardly at all in the last 400 million years. Besides, if you learn Fortran, you'll almost certainly need to learn FORTRAN for the simple reason that there's so much legacy code written in FORTRAN out there. Fortran, along with FORTRAN, are **incredibly** lousy languages. This is coming from someone who used to write in FORTRAN, then Fortran. Thank goodness I don't have to do that anymore.  
> **username_2**: @username_4 Incredibly lousy? Sounds to me like you were not doing it right. Whoever does or did research in high performance computing knows very well why Fortran still dominates their application domain. Comments like yours are becoming very old.  
> **username_5**: @username_4 What language do you suggest in the context of HPC applied to ocean-atmospheric simulations?  
> **username_4**: @IRO-bot - Yep. Incredibly lousy, and that's being nice. I have a weird mix of education and employment that mixes physics, engineering, and computer science. The computer science part of me has been fully indoctrinated into not liking Fortran. Most computer scientists lump Fortran with COBOL as the two worst programming languages ever invented. Even Basic doesn't come close when it comes to the extreme degree of contempt that computer scientists have toward Fortran (and COBOL).  
> **username_4**: @username_5 - The "best" language to use depends on context. If you're developing an app for an Android phone, you use Java. For an iPhone, you're best off if you use Objective C. With regard to your question, it's whatever language in which the majority of existing ocean-atmospheric simulations are already written (almost certainly Fortran). A team of hundreds could not rewrite the hundreds of thousands of lines of code that form the basis of those numerical codes. The easiest solution is to work with the code that already exists, and in your case, it's almost certainly Fortran.  
> **username_2**: Please, please, please, let's not start this here! :)  
> **username_1**: I disagree... I think you need to learn python.  All the slick super fast cross-data-type functions are done in python.  That is, if you want to learn a language that is actually fun to use and runs super fast.  Though... there are a lot of calls to Fortran.  Or is it FORTRAN?  

---

