Meteorology 301 - Lab 2


Introduction

In this lab, you will be introduced to a computing tool known as Matlab. We will use matlab to study how atmospheric pressure and density are sensitive to temperature.

GOALS:

  1. Perform and plot some Matlab computations.
  2. Observe temperature sensitivity of pressure vs. height distribution.


    Instructions

    1. As with Lab 1, follow the instructions for accessing meteorology computers to log into your Meteorology account. Using your netISU password will allow you to access the software available on the ISU computer system.

    If you are sharing a computer, the second student should open a second window, as per the instructions, and then login as her/himself, entering in the second window,

    su -l LOGNAME

    where the student's login name should be substituted for LOGNAME. Then take turns completing the rest of the lab.

    2. Start matlab:

    From the meteorology computers, open a terminal window. This is can be done by right clicking on the desktop and selecting 'New Terminal'. You will need to enter:

    telnet -x isua.iastate.edu

    (login using your ISU netID and password)

    Once logged in, enter:

    hostname

    This will return the name of the ISU machine you have reached. Open a second terminal window on the meteorology machine you are on (see instructions above). In the new terminal (not the one logged on to the ISU machine) type:

    xhost + hostname

    where hostname is the full machine name returned from the hostname command issued above. Once this has been done, you are now ready to launch matlab from the ISU machine and have the windows appear on your meteorology machines. You can now close the second terminal window if you wish. From the terminal you used to log on to the ISU machine enter:

    add matlab6

    and, finally,

    matlab

    3. A window with a fancy 3-d graph may appear and then disappear, followed by a window with 3 panels.

    You may need to move the window to center it. This can be done by holding down the mouse button when the mouse pointer is on the upper bar of the window and dragging the window to where you want it.

    The main Matlab panel is on the right side of the window. When you see the Matlab prompt

    >>

    in it, Matlab is ready for your commands. First make sure that Matlab is working in your home directory (where presumably all your Matlab files are located):

    >>cd ~

    You can make the window bigger by moving the mouse pointer into a corner. When the pointer changes into an arrow pointing into a corner, hold down the left button and drag the window bigger.

    The other two panels provide access to some tools (upper panel) and a record of your previous commands (lower panel), including commands from previous Matlab sessions, which you can re-enter by dragging them into the work panel on the right.

    4. Matlab gives lots of help. Try

    >>help

    Note the 'help' instruction in the last line of the list that appears. One choice on the list is " - Operators and special characters." Let's look at these. Enter

    >>help ops

    Note that addition and subtraction are performed using their usual symbol. Multiplcation and division are somewhat more complicated, because Matlab can work with arrays (vectors) and matrices.

    Matlab can also compute trigonometric and exponential functions:

    >>help elfun

    5. First do some simple computations. Enter the following. In each case, you should get an answer when you hit return.

    >>1+1
    >>5.25*4
    >>17/11
    >>8472.35-2281.9675

    6.You can assign values to variables. Thus,
    >>a=3
    >>b=4
    >>c=sqrt(a^2+b^2)

    If you did not notice it on the "ops" help, the carat (^) is used to signify an exponent (i.e., raise a number to some power).

    7. Matlab is a very powerful tool. Part of its power comes from being able to write your own functions to compute. Matlab language constructs contribute to this power. Entering

    >>help lang

    will give you information on them.

    We will write a function of our own that we will save in a file. We will save the file in such a way that Matlab can invoke the function.

    Matlab function files are ascii files, so you can edit them using your favorite editor (pico, vi, emacs, or nedit). They must be in the same directory from which you start Matlab. They must also end with the suffix ".m", e.g. "test.m". Because of this naming convention, Matlab function files are called M files.

    8. Let's create a function file called pressure.m
    Use your favorite editor to create this file. Do this by either opening a new window or by entering

    >>quit

    in Matlab. In either case, once you have a Vincent prompt, enter

    pico pressure.m (feel free to use your favorite editor)

    9. In lecture, we derived from the hydrostatic relation an equation for the change in atmospheric pressure as a function of a change in the geopotential height Z for an isothermal atmosphere. Let's assume that we are looking at changes from the level Z=0, where p = p(0) = 1000 mb. Our equation is then

    	p(Z) = p(0)exp{-Z/H}	                             (Equation 1)
    
    Since geopotential height Z is approximately the geometric height (distance from sea-level) in the troposphere, then Z = z, and equation #1 tells us how p changes with height.

    We want to use this formula in our function file. In the editor window for pressure.m, enter these lines

    
    function [p]=pressure(Z,T)
    
    % define some constants
    
    Rd=287;
    g0=9.8;
    p0=1000;
    
    % compute scale height
    
    H=Rd*T/g0;
    
    % compute pressure at geopotential height Z
    
    p=p0*exp(-Z/H);
    
    
    Note that "%" identifies comment lines. These are not executed. Note especially that there is a semi-colon at the end of each executed line. This tells Matlab NOT to echo these lines to the screen when it is executing the function.

    The first line of the file tells Matlab that we are defining a function called pressure that has two arguments, Z & T, which are used to compute the value returned in the variable p.

    Be careful! Matlab variables and functions are case-sensitive. Make sure you are consistent in how you use upper and lower case letters.

    10. Save the file and exit the editor and go back into Matlab. If you quit it in step 8, then start it again, like you did in step 3.

    11. Back in Matlab, we need to make sure it looks in the correct directory for the file you created. At the top of your Matlab window is a line that says, "Current Directory" with a box to its right. That box needs to have the name of the directory with your file pressure.m . Unless you have done more than I asked with your directories, the file should be in /mthome/USERNAME, where USERNAME is your login name. To change to the correct directory, enter

    >>cd ~ Note that there is a space between "cd" and "~".

    12.Enter
    >>p=pressure(0,273)
    >>p=pressure(0,300)

    The second number of course is the temperature we assign to the atmosphere in pressure.m. In each case, the answer should come back p = 1000. Why? (You will have to give me your written answer - see below.)

    13. Now assign an array (vector) of values to Z:

    >>Z = [0,2000,4000,6000,8000,10000,12000]

    Because our formula is in MKS units, Z is in meters. Thus we have assigned a vector of Z values ranging from 0 to 12 km.

    Then enter

    >>p200=pressure(Z,200)

    After entering this command, you should see

    p200 =
    
       1.0e+03 *
    
        1.0000    0.7107    0.5051    0.3590    0.2552    0.1814    0.1289
    
    which gives pressure as a function of increasing Z. Note that all values should be multiplied by 1.0e+03 (that is, 1000), as indicated by the second line of the three shown here. Each pressure value corresponds to one of the input Z values. Thus, the pressure at 8 km (8000 meters) is 255.2 mb (255.2 hPa in MKS units).

    14. Changing the temperature of the atmosphere changes the pressure vs. height relationship.
    (a) Use different input temperatures in your pressure function, e.g.,

    >>p250=pressure(Z,250)
    >>p300=pressure(Z,300)

    Find the range of temperatures for which pressure at 8 km falls in the range 300-350 mb. What is this range? Does higher or lower temperature give higher or lower pressure?
    (b)Find the approximate temperature for which the 8-km pressure is at the middle of this range, 325 mb. Is it closer to the upper or lower end of the temperature range you found in (a)?

    15. Make a plot of one of your (p,Z) relations:

    >>plot(p200,Z)

    Now plot two curves, one solid, the other dashed, where "p:

    >>plot(p200,Z,'y-',p300,Z,'c--')

    What you have done here is give the plot software two pairs of vectors that associate a "p" with a "Z". The items in single quote, such as 'y-', assign a color and line pattern. For more on plotting, enter

    >>help plot

    Looking at your plots and thinking about what you had to do to answer questions in 14(a), why does pressure at a given level change the way it does when temperature changes? Think about the hydrostatic relation and what it implies for how rapidly pressure changes with height. In particular, use a version of the hydrostatic relationship that uses the ideal gas law to eliminate density. This version will give you a relationship between dp/dz and temperature.
    Why is the "middle-pressure" temperature in 14(b) closer to one end of the range in 14(a) than the other? (This is a subtle one.)

    EXTRA CREDIT: Using "help" and/or experimenting with the menus in your plot window, learn how to put on your plot (1) axis labels, (2) a title, and (3) text labels for each curve. Then add any or all of these to the plot, using Matlab commands.

    Finally, whether or not you do the extra credit, save the current plot by "printing" it to a file called pressure.ps:

    >>print -dps pressure.ps

    This will create a file called pressure.ps in the directory you are working in. (The file is in so-called postscript format.)

    Then exit Matlab using the exit command in the pull-down "file" menu in the Matlab window.

    16. You will need to answer the questions under steps 12., 14. and 15. above. You will also need to print and hand in copies of your M file and your plot. Following the instructions here will cause the files to print at Durham and then appear in a mailbox (bin) there. I also give an alternative method in case the primary one does not work for you.

    Primary method To do this, first determine a bin number where you want the file to go. Durham bin numbers are between 200 - 475. You choose a number, but it is best to avoid commonly used simple numbers like 200, 300, 400, 222,333,444. You will also need to specify that you want to use your ISU subsidied account for the print charges. To print your files, enter (after exiting Matlab):

    lpr -B ### -G subsidy_USERNAME pressure.m
    lpr -B ### -G subsidy_USERNAME pressure.ps

    where ### is the bin number you choose and the option "-B" uses an uppercase letter. The printouts will go that bin in the large computer lab on the first floor of Durham (Durham 139).

    Alternative method This entails copying the file to your netISU storage space, then logging in to a netISU machine and printing from there:

    cp pressure.m /afshome/LOGNAME/
    cp pressure.ps /afshome/LOGNAME/
    telnet -x isua.iastate.edu
    lpr -B ### -G subsidy_USERNAME pressure.m
    lpr -B ### -G subsidy_USERNAME pressure.ps
    logout
    In these lines, LOGNAME = your netISU login name. Note also that in both "cp" (copy) commands, there is a space before the "/afshome..."


    Acknowledgement. Thanks go to Dr. John Iselin (ISU Ph.D. 1999) for providing much of the introductory Matlab material used here.