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

199915: 1990105: new parameter calculation



Maureen,

Solaris is just a little more picky about having all the variables
declared before the function in the ERMISS.FNC.
You can move the line: REAL    value, tval
up 2 lines before the INCLUDE statements.

Steve Chiswell
Unidata User Support

>From: Maureen Ballard <address@hidden>
>Organization: UK Ag Weather Center
>Keywords: 199901052049.NAA14088

>Steve,
>
>Well, I've made it as far as step 5. When I attempted to make all in the pr di
> rectory,
>I got the following error:
>
>dalton% make all
>f77 -O  -c prsoil.f
>prsoil.f:
>        pr_soil:
>"prsoil.f", line 29: Error: declaration among executables
>*** Error code 1
>make: Fatal error: Command failed for target `/export/home/gempak/NAWIPS-5.4/l
> ib
>/sol/gemlib.a(prsoil.o)'
>
>Line 29 of prsoil.f is the
>REAL    value, tval
>line - any ideas?
>
>Thanks!
>
>Maureen
>
>Unidata Support wrote:
>
>> 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) th
> at
>>    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
>> >=========================================================================
>> >
>> >
>> >
>>
>> ****************************************************************************
>> Unidata User Support                                    UCAR Unidata Program
>> (303)497-8644                                                  P.O. Box 3000
>> address@hidden                                   Boulder, CO 80307
>> ----------------------------------------------------------------------------
>> Unidata WWW Service                        http://www.unidata.ucar.edu/     
>> ****************************************************************************
>
>
>
>--
>========================================================================
>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
>=========================================================================
>
>