Research into using a machine learning (ML) approach for climate modeling
Using the results of the NCAR Community Atmosphere Model (CAM) as a basis
we attempt to create a ML model that matches CAM results in order to
demonstrate suitability.
Goals
Develop a ML-based climate model using Keras/TensorFlow and/or fastai which accurately predicts the results produced by CAM, using CAM inputs/outputs for training and evaluation, in order to approximately duplicate the capabilities of that model.
Refine the ML-based model for observational inputs/outputs, for use in later comparisons of model results vs. observed climatologies.
Initial Use Cases
Develop a model that learns and can predict the results of the Held-Suarez test case. This test case computes time tendency forcing values for temperature (PTTEND), zonal wind (PUTEND), and meridional wind (PVTEND). Inputs to the original equation used for this computation include temperature (T), zonal wind (U), meridional wind (V), and surface pressure (PS). The inputs and outputs of a series of runs of the NCAR CAM will be used to train and test the ML model as it's being developed.
SHFLX (surface sensible heat flux) and LHFLX (surface latent heat flux) are results of the CAM's processing of the Q (specific humidity) and PRECL (large-scale (stable) precipitation rate (liquid + ice)) input variables. This is a non-linear function.
Score various non-linear models and corresponding parameters to determine which works best for these features/labels.
Add information to README regarding approach and methodologies used for building model to reproduce results of CAM for global climate modeling using ML algorithms.
The NCAR Community Atmospheric Model that we're basing some of this work upon operates in the same way on the northern and southern hemispheres, so we can use this as a convenient split for train/test datasets, as opposed to using scikit-learn's train_test_split() function that we've been using for train/test splits.
Create PBS batch processing script for running a ML model using CAM inputs/outputs.
Script template:
#### PBS preamble
#PBS -N PBS_test_script
#PBS -M [email protected]
#PBS -m abe
#PBS -A example_flux
#PBS -l qos=flux
#PBS -q flux
#PBS -l nodes=4:ppn=2,pmem=2gb
#PBS -l walltime=1:15:00
#PBS -j oe
#PBS -V
#### End PBS preamble
if [ -s "$PBS_NODEFILE" ] ; then
echo "Running on"
cat $PBS_NODEFILE
fi
if [ -d "$PBS_O_WORKDIR" ] ; then
cd $PBS_O_WORKDIR
echo "Running from $PBS_O_WORKDIR"
fi
# Put your job commands after this line
echo "Hello, world."
Using Keras with the TensorFlow backend we'll create a simple artificial neural network (ANN) using two layers, 1) convolutional neural network and 2) LSTM, for predicting the CAM PTTEND forcing tendency variable from PS, T, U, and V inputs. We'll split our input data into train/test datasets on northern and southern hemispheres.
We now have access to new data sets for our project that use a more complicated
(non-linear) forcing mechanism for temperature and also for a new moisture variable ‘Q’.
The new state variables in the ‘h0’ (feature/input) files are ‘Q’ and the large-scale rainfall rate ‘PRECL’ as a diagnostic quantity. The ‘h1’ (output/target) files now contain the new forcing ‘PTEQ’ for the moisture variable ‘Q’. Basically, PTEQ is the time tendency of the moisture, just like the time tendencies for T, U, V.
We'll incorporate this new feature variable into existing fits/tests as well as adding new model types to explore how these will perform.
Determine which model works best for features: [PS, T, U, and V] and label: PTTEND
PTTEND (T total physics tendency) is the result of the CAM's processing of the PS (surface pressure), T (temperature), U (zonal wind), and V (meridional wind) input variables. This is a linear function.
We assume this process is suited to a simple linear regression model.
Score various linear models and corresponding parameters to determine which works best for these features/label.