forked from 3rdparty/wrf-python
13 changed files with 511 additions and 22 deletions
@ -0,0 +1,302 @@
@@ -0,0 +1,302 @@
|
||||
WRF Workshop 2017 |
||||
===================== |
||||
|
||||
Welcome wrf-python tutorial attendees! |
||||
|
||||
The instructions below should be completed prior to arriving at the tutorial. |
||||
There will not be enough time to do this during the tutorial. |
||||
|
||||
Prerequisites |
||||
--------------- |
||||
|
||||
This tutorial assumes that you have basic knowledge of how to type commands |
||||
in to a command terminal using your preferred operating system. The student |
||||
should know some basic directory commands like *cd*, *mkdir*, *cp*, *mv*. |
||||
|
||||
Regarding Python, to understand the examples in this tutorial, the student |
||||
should have some experience with Python basics. This includes: |
||||
|
||||
- Opening a Python interpreter and entering commands. |
||||
- Importing packages via the import statement. |
||||
- Using the basic Python types: str, list, tuple, dict, boolean, numeric, None. |
||||
- Creating a list, tuple, or dict with "[ ]", "( )", "{ }" syntax. |
||||
- Accessing dict/list/tuple items with the "x[ ]" syntax. |
||||
- Slicing str/list/tuple with the ":" syntax. |
||||
- Using object methods and attributes with the "x.y" syntax. |
||||
- Familiarity with numpy would be helpful, as only a very brief introduction |
||||
is provided. |
||||
- Familiarity with matplotlib would be helpful, as only a very brief |
||||
introduction is provided. |
||||
|
||||
If a student is completely new to Python, that shouldn't be a problem, since |
||||
most of the examples consist of basic container types and function calls. It |
||||
would be helpful to look at some introductory material before arriving at the |
||||
tutorial. If you've programmed before, picking up Python is fairly easy. |
||||
|
||||
Here are some links: |
||||
|
||||
https://www.learnpython.org/ |
||||
|
||||
https://developers.google.com/edu/python/ |
||||
|
||||
|
||||
Step 1: Open a Command Terminal |
||||
-------------------------------- |
||||
|
||||
To begin, you will first need to know how to open a command line terminal for |
||||
your operating system. |
||||
|
||||
For Windows: |
||||
|
||||
.. code-block:: none |
||||
|
||||
WINDOWS + r |
||||
type cmd in the run window |
||||
|
||||
For Mac: |
||||
|
||||
.. code-block:: none |
||||
|
||||
Finder -> Applications -> Utilities -> Terminal |
||||
|
||||
For Linux: |
||||
|
||||
.. code-block:: none |
||||
|
||||
Try one of the following: |
||||
|
||||
CTRL + ALT + T |
||||
CTRL + ALT + F2 |
||||
|
||||
|
||||
Step 2: Download Miniconda |
||||
---------------------------- |
||||
|
||||
For this tutorial, you will need to download and install Miniconda. We are |
||||
going to use Python 2.7, but it should also work with Python 3.5+. However, |
||||
due to limitations with open source compilers on conda-forge, only Python 2.7 |
||||
is available for Windows. |
||||
|
||||
**What is Miniconda?** |
||||
|
||||
If you have used the Anaconda distribution for Python before, then you will be |
||||
familiar with Miniconda. The Anaconda Python distribution includes numerous |
||||
scientific packages out of box, which can be difficult for users to build and |
||||
install. More importantly, Anaconda includes the conda package manager. |
||||
|
||||
The conda package manager is a utility (similar to yum or apt-get) that installs |
||||
packages from a repository of pre-compiled Python packages. These repositories |
||||
are called channels. Conda makes it easy for Python users to install and |
||||
uninstall packages, and also can be used to create isolated Python environments |
||||
(more on that later). |
||||
|
||||
Miniconda is a bare bones implementation of Anaconda and only includes the |
||||
conda package manager. Since we are going to use the conda-forge channel to |
||||
install our scientific packages, Miniconda avoids any complications between |
||||
packages provided by Anaconda and conda-forge. |
||||
|
||||
Please use the appropriate link below to download Miniconda for your operating |
||||
system. |
||||
|
||||
.. note:: |
||||
|
||||
64-bit OS recommended |
||||
|
||||
`Win64 <https://repo.continuum.io/miniconda/Miniconda2-latest-Windows-x86_64.exe>`_ |
||||
|
||||
`Mac <https://repo.continuum.io/miniconda/Miniconda2-latest-MacOSX-x86_64.sh>`_ |
||||
|
||||
`Linux <https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh>`_ |
||||
|
||||
For more information, see: https://conda.io/miniconda.html |
||||
|
||||
|
||||
Step 3: Install Miniconda |
||||
---------------------------- |
||||
|
||||
Windows: |
||||
|
||||
1. Browse to the directory where you downloaded Miniconda2-latest-Windows-x86_64.exe. |
||||
2. Double click on Miniconda2-latest-Windows-x86_64.exe. |
||||
3. Follow the instructions. |
||||
4. Restart your command terminal. |
||||
|
||||
Mac and Linux: |
||||
|
||||
For Mac and Linux, the installer is a bash script. |
||||
|
||||
1. Using a terminal, you need to execute the shell script that you downloaded by |
||||
doing:: |
||||
|
||||
bash /path/to/Miniconda2-latest-MacOSX-x86_64.sh [Mac] |
||||
|
||||
bash /path/to/Miniconda2-latest-Linux-x86_64.sh [Linux] |
||||
|
||||
2. Follow the instructions. |
||||
|
||||
3. At the end of the installation, it will ask if you want to add the |
||||
miniconda2 path to your bash environment. If you are unsure what to do, |
||||
you should say "yes". If you say "no", we're going to assume you know |
||||
what you are doing. |
||||
|
||||
If you said "yes", then once you restart your shell, the miniconda2 Python |
||||
will be found instead of the system Python when you type the "python" |
||||
command. If you want to undo this later, then you can edit |
||||
either ~/.bash_profile or ~/.bashrc (depending on OS used) and |
||||
comment out the line that looks similar to:: |
||||
|
||||
# added by Miniconda2 4.1.11 installer |
||||
export PATH="/path/to/miniconda2/bin:$PATH" |
||||
|
||||
4. Restart your command terminal. |
||||
|
||||
.. note:: |
||||
|
||||
If you have already installed another Python distribution, like Enthought |
||||
Canopy, you will need to comment out any PATH entries for that distribution |
||||
in your .bashrc or .bash_profile. Otherwise, your shell environment may |
||||
pick to wrong Python installation. You can use the command "which python" |
||||
to verify the Python installation being used. |
||||
|
||||
|
||||
|
||||
Step 4: Set Up the Conda Environment |
||||
-------------------------------------- |
||||
|
||||
If you are new to the conda package manager, one of the nice features of conda |
||||
is that you can create isolated Python environments that prevent package |
||||
incompatibilities. This is similar to the virtualenv package that some |
||||
Python users may be familiar with. However, conda is not compatible with |
||||
virtualenv, so only use conda environments when working with conda. |
||||
|
||||
The name of our conda environment for this tutorial is: **tutorial_2017**. |
||||
|
||||
Follow the instructions below to create the tutorial_2017 environment. |
||||
|
||||
1. Open a command terminal if you haven't done so. |
||||
|
||||
2. [Linux and Mac Users Only] The conda package manager only works with bash, |
||||
so if bash is not your current shell, type:: |
||||
|
||||
bash |
||||
|
||||
3. Add the conda-forge channel to your conda package manager. |
||||
|
||||
Type or copy this command in to your command terminal:: |
||||
|
||||
conda config --add channels conda-forge |
||||
|
||||
.. note:: |
||||
|
||||
Conda-forge is a community driven collection of packages that are |
||||
continually tested to ensure compatibility. We highly recommend using |
||||
conda-forge when working with conda. See https://conda-forge.github.io/ |
||||
for more details on this excellent project. |
||||
|
||||
4. Create the conda environment for the tutorial. |
||||
|
||||
Type or copy this command in to your command terminal:: |
||||
|
||||
conda create -n tutorial_2017 python=2.7 matplotlib=1.5.3 cartopy netcdf4 jupyter git wrf-python |
||||
|
||||
Type "y" when prompted. It will take several minutes to install everything. |
||||
|
||||
This command creates an isolated Python environment named *tutorial_2017*, and installs |
||||
the python interpreter, matplotlib, cartopy, netcdf4, jupyter, git, and wrf-python |
||||
packages. |
||||
|
||||
.. note:: |
||||
|
||||
In this tutorial, we need to use matplotlib v1.5.3 due to some issues with cartopy, which |
||||
should be fixed in a later version of cartopy. Be sure to supply the version number as |
||||
indicated in the command above. |
||||
|
||||
5. Activate the conda environment. |
||||
|
||||
To activate the tutorial_2017 Python environment, type the following |
||||
in to the command terminal:: |
||||
|
||||
source activate tutorial_2017. |
||||
|
||||
You should see (tutorial_2017) on your command prompt. |
||||
|
||||
To deactivate your conda environment, type the following in to the |
||||
command terminal:: |
||||
|
||||
source deactivate |
||||
|
||||
|
||||
Step 5: Download the Student Workbook |
||||
--------------------------------------- |
||||
|
||||
The student workbook for the tutorial is available on GitHub. The tutorial_2017 |
||||
conda environment includes the git application needed to download the repository. |
||||
|
||||
These instructions download the tutorial in to your home directory. If you want |
||||
to place the tutorial in to another directory, we're going to assume you know |
||||
how to do this yourself. |
||||
|
||||
To download the student workbook, follow these instructions: |
||||
|
||||
1. Activate the tutorial_2017 conda environment following the instructions |
||||
in the previous step (*source activate tutorial_2017*). |
||||
|
||||
2. Change your working directory to the home directory by typing the |
||||
following command in to the command terminal: |
||||
|
||||
For Linux and Mac:: |
||||
|
||||
cd ~ |
||||
|
||||
For Windows:: |
||||
|
||||
cd %HOMEPATH% |
||||
|
||||
3. Download the git repository for the tutorial by typing the following |
||||
in to the command terminal:: |
||||
|
||||
git checkout https://github.com/NCAR/wrf_python_tutorial |
||||
|
||||
4. There may be additional changes to the tutorial after you have downloaded |
||||
it. To pull down the latest changes, type the following in to the |
||||
command terminal: |
||||
|
||||
For Linux and Mac:: |
||||
|
||||
source activate tutorial_2017 |
||||
|
||||
cd ~/wrf_python_tutorial |
||||
|
||||
git pull |
||||
|
||||
For Windows:: |
||||
|
||||
source activate tutorial_2017 |
||||
|
||||
cd %HOMEPATH%\wrf_python_tutorial |
||||
|
||||
git pull |
||||
|
||||
|
||||
Step 6: Obtain WRF Output Files |
||||
---------------------------------- |
||||
|
||||
For this tutorial, we strongly recommend that you use your own WRF output files. |
||||
The tutorial includes an easy way to point to your own data files. The WRF |
||||
output files should all be from the same WRF run and use the same domain. |
||||
If your files are located on another system (e.g. yellowstone), then copy 2 or |
||||
3 of these files to your local computer prior to the tutorial. |
||||
|
||||
If you do not have any of your own WRF output files, then you can download the |
||||
instructor data files from a link that should have been provided to you in an |
||||
email prior to the tutorial. |
||||
|
||||
|
||||
Getting Help |
||||
---------------- |
||||
|
||||
If you experience problems during this installation, please send a question |
||||
to the :ref:`google-group` support mailing list. |
||||
|
||||
|
||||
We look forward to seeing you at the tutorial! |
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
! NCLFORTSTART |
||||
SUBROUTINE DCOMPUTEWSPD(wspd, u, v, nx, ny) |
||||
|
||||
IMPLICIT NONE |
||||
|
||||
!f2py threadsafe |
||||
!f2py intent(in,out) :: wspd |
||||
|
||||
INTEGER, INTENT(IN) :: nx, ny |
||||
REAL(KIND=8), DIMENSION(nx,ny), INTENT(OUT) :: wspd |
||||
REAL(KIND=8), DIMENSION(nx,ny), INTENT(IN) :: u, v |
||||
! NCLEND |
||||
|
||||
INTEGER i, j |
||||
|
||||
DO j = 1,ny |
||||
DO i = 1,nx |
||||
wspd(i,j) = SQRT(u(i,j)*u(i,j) + v(i,j)*v(i,j)) |
||||
END DO |
||||
END DO |
||||
|
||||
END SUBROUTINE DCOMPUTEWSPD |
||||
|
||||
|
||||
! NCLFORTSTART |
||||
SUBROUTINE DCOMPUTEWDIR(wdir, u, v, nx, ny) |
||||
USE wrf_constants, ONLY : DEG_PER_RAD |
||||
|
||||
IMPLICIT NONE |
||||
|
||||
!f2py threadsafe |
||||
!f2py intent(in,out) :: wdir |
||||
|
||||
INTEGER, INTENT(IN) :: nx, ny |
||||
REAL(KIND=8), DIMENSION(nx,ny), INTENT(OUT) :: wdir |
||||
REAL(KIND=8), DIMENSION(nx,ny), INTENT(IN) :: u, v |
||||
! NCLEND |
||||
|
||||
INTEGER i, j |
||||
|
||||
DO j = 1,ny |
||||
DO i = 1,nx |
||||
wdir(i,j) = MOD(270.0 - ATAN2(v(i,j), u(i,j)) * DEG_PER_RAD, 360.) |
||||
END DO |
||||
END DO |
||||
|
||||
END SUBROUTINE DCOMPUTEWDIR |
||||
|
@ -1,2 +1,2 @@
@@ -1,2 +1,2 @@
|
||||
__version__ = "1.0.1" |
||||
__version__ = "1.0.2" |
||||
|
||||
|
Loading…
Reference in new issue