[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
1990105: new parameter calculation
- Subject: 1990105: new parameter calculation
- Date: Tue, 05 Jan 1999 13:14:43 -0700
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
>=========================================================================
>
>
>