Skip to main content


Showing posts from August, 2018

The problem of geographic coordinate system in global scale simulation

Earlier I have discussed some idea about the hexagon-based grid system. Now I have provided some tests and materials to support this project.

90% percent of global maps you can find online are using the geographic coordinate system (GCS). You can try to search "global map" in Google image.

There might be 9% of them are using various map projection. The reason why there are so many different ways to represent the Earth is that Earth is NOT flat. Google know it so they changed the Google Map recently.
So these are some basic GIS knowledge but you can also learn it from this video.
While it is generally OK to view these types of global map for daily usage, it can cause problems for large scale to global scale simulations.

In Earth science, GCS is most commonly used as the grid system for terrestrial ecosystem simulations. For example, a 1* 1 degree grid will discrete the global into a 360 * 180 matrix.

However, it will be problematic for several reasons.
For example, the area a…

A visual decomposition of the land grid in the E3SM/CESM model

One of my recent development projects needs to exchange several variables between different components using the Common Infrastructure for Modeling the Earth (CIME) model. However, different components have different grid systems. Therefore, I have to get familiar with the grid system of these two component before assigning any variables.

One of them is the land grid used in Community Land Model (CLM)/ELM, which is the land component in the Energy Exascale Earth System Model (E3SM) model. Because CLM is also part of CESM, this post should also apply to the CESM land component.

In short, the land component distributes all the land units across multiple nodes/cores and each grid cell is run by clump.

Here I developed a small Python utility to illustrate the concept.

First we define a sample problem as follow:

Variable Value Description npes 4 CPU/Node clump_pproc 10 Core per CPU nsegspc 2 Segment per clump nclumps 40 Core count lni 20