[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

1990105: new parameter calculation



Maureen,

To calculate your PMSA (percent soil moisture availability) in
GEMPAK surface programs, do the following:

1) Edit the $GEMTBL/parms/pcconv.tbl and add to the end:

PSMA = PR_SOIL ( SOIL )

----> The above line will tell GEMPAK that when you ask to plot PMSA,
to use the parameter called SOIL, and do a calculation on it using
the function PR_SOIL. If you call your soil moisture values something
other than "SOIL", just substitute that name for the value
of the parameter in the parentheses.

2) Edit the file $GEMPAKHOME/src/gemlib/pc/pcfunc.f and add the
   PR_SOIL call like:

...cut...
          ELSE IF ( fff .eq. 'PR_D100') THEN
            data ( iout (i) ) = PR_D100 (d1)
C*
          ELSE IF ( fff .eq. 'PR_SOIL') THEN       <-- add these 2 lines
            data ( iout (i) ) = PR_SOIL (d1)       <--/
C*
          ELSE IF ( fff .eq. 'PR_M100') THEN
            data ( iout (i) ) = PR_M100 (d1)
...cut...

3) create $GEMPAKHOME/src/gemlib/pr/prsoil.f

        FUNCTION PR_SOIL  ( value )
C************************************************************************
C* PR_SOIL                                                              *
C*                                                                      *
C* This function computes soil moisture availability.                   *
C*                                                                      *
C* PR_SOIL  ( VALUE )                                                   *
C*                                                                      *
C* Input parameters:                                                    *
C*      VALUE           REAL            Value                           *
C*                                                                      *
C* Output parameters:                                                   *
C*      PR_SOIL         REAL                                            *
C* if (soil_moisture >.32) then                                         *
C*    soil_moisture = .32                                               *
C* else if (soil_moisture <.13) then                                    *
C*    soil_moisture = .13                                               *
C* end                                                                  *
C*                                                                      *
C* percent_of_soil_moisture available =                                 *
C*                                  [(soil_moisture - 0.13)/0.19] *100  *
C*                                                                      *
C**                                                                     *
C* Log:                                                                 *
C* Chiz/Unidata         01/99   Original source                         *
C************************************************************************
        INCLUDE   'GEMINC:GEMPRM.PRM'
        INCLUDE   'GEMINC:ERMISS.FNC'
        REAL    value, tval
C-----------------------------------------------------------------------
C*      Check for missing value.
C
        tval = value
        IF  ( ERMISS ( tval ) )  THEN
            PR_SOIL = RMISSD
        ELSE
            if (tval .gt. 0.32) tval = .32
            if (tval .lt. 0.13) tval = .13
            tval = (tval - .13)/.19
            PR_SOIL = tval * 100.
        END IF
C*
        RETURN
        END

4) Add the prsoil.o target to the Makefile in the PR subdirectory (tabs
   are important in Makefiles!

...cut...
        $(ALIB)(prskyx.o) \
"tab"   $(ALIB)(prsoil.o) \    <--- add this target
        $(ALIB)(prsped.o) \
...cut...

5) compile the 2 fortran routines

cd $GEMPAKHOME/src/gemlib/pr
make clean
make all
make clean

cd $GEMPAKHOME/src/gemlib/pc
make clean
make all
make clean

6) Now recompile and install the surface programs (like sfmap and sflist) that
   you want to be able to use your function

cd $GEMPAKHOME/src/programs/sf
make clean
make all
make install
make clean

7) Your done. Now, in any surface file you have the parameter "SOIL" in,
   you can plot, list, graph PSMA simply by using SFPARM=PSMA

   Once you have compiled the routines, the pcconv.tbl table is the only
   place you have to change if you call your parameter something
   other than "SOIL".

   If you have lots of variables for soil moisture, for example at different 
depths
   like SOL2, SOL4, SOL6 for 2, 4 and 6 inches respectively, then you would add 
a 
   line for each calc in the pcconv.tbl
   PSM2 = PR_SOIL ( SOL2 )
   PSM4 = PR_SOIL ( SOL4 )
   PSM6 = PR_SOIL ( SOL6 )

** Note, I made the assumption you meant "if moisture < .13, moisture = .13
   in your message below for the subroutine above.

Steve Chiswell
Unidata User Support



>From: Maureen Moore <address@hidden>
>Organization: UK Ag Weather Center
>Keywords: 199812092008.NAA15361

>Steve,
>
>I had written before about what my options were to create a mph - knot
>conversion within GEMPAK. I chose the easier of the two options at the
>time but now I think I have a use for actually creating a library
>function.
>
>Let me give you a quick background on what I need. We have some research
>stations that are geared for agricultural use and 2 of the sensors read
>soil moisture. This soil moisture value can be any where in between 0.00
>and 0.50. For agricultural purposes, the first 0.13 inches are not
>available and the most that can be taken is up to 0.32 inches. (I'm
>still learning about this so if that was unclear, sorry!) We want to be
>able to plot these values as a percentage but there is a little math
>involved prior to multiplying by 100.
>
>Logically, what I need to be able to do is the following:
>
>if (soil_moisture >.32) then
>    soil_moisture = .32
>else if (soil_moisture <.13) then
>    soil_moisture = 0
>end
>
>percent_of_soil_moisture available = [(soil_moisture - 0.13)/0.19] *100
>
>
>Would I be correct in saying that this could be written into GEMPAK as a
>library function? Looking at the files in the $GEMPAKHOME/src/gemlib/pr/
>I see that about half of them are ascii files and the remaining are
>fortran programs. If I do need to develop a library function, would it
>have to be in fortran?
>
>Thanks for any help on this one. It took us a while to put in the 2 soil
>moisture probes (one at 4 inches and the other at 30) and we will be
>adding a 3rd one for in between. We then have 2 other stations which
>will be receiving the probes soon (hopefully!)
>
>Any guidance would be greatly appreciated!
>
>Maureen
>
>--
>========================================================================
>
>Maureen Moore Ballard                   address@hidden
>Staff Meteorologist                           ph:  606-257-3000ext244
>Ag. Weather Center                         fax: 606-257-5671
>243 Ag. Engineering Bldg
>Dept. of Biosystems and Ag. Engr.
>University of Kentucky
>Lexington, KY 40546-0276
>HOMEPAGE   http://wwwagwx.ca.uky.edu
>=========================================================================
>
>
>