NSF Unidata

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

Re: 20050117: Ice bulb temperature

This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.



Patrick,

This means that your dfrmik.o isn't in your gemlib.a file.
Assuming hhere that you have written that routine.

Go to $GEMPAK/source/gemlib/df
and type:
make

I'm assuming you have added the dftmik.o to the Makefile to
build. Assuming you have dftmik.o now, to make sure it is added
to your gemlib.a, type:
ar rv $GEMLIB/gemlib.a dftmik.o


Steve Chiswell
Unidata User Support



On Mon, 2005-01-24 at 07:55, Patrick S. Market wrote:
> Steve:
> 
> This hasn't quite worked.  Have I missed a step.  Make bombs out
> with the following:
> 
> ar: creating /asp/met/GEMPAK5.7.4/lib/sol_gcc/gdgrib.a
> ar: writing /asp/met/GEMPAK5.7.4/lib/sol_gcc/gdgrib.a
> rm -f *.o
> g77 -fno-second-underscore -I/asp/met/GEMPAK5.7.4/gempak/include 
> -I/asp/met/GEMPAK5.7.4/gempak/include/SunOS.gcc  gdgrib.f 
> /asp/met/GEMPAK5.7.4/lib/sol_gcc/gdgrib.a 
> /asp/met/GEMPAK5.7.4/lib/sol_gcc/gemlib.a  
> /asp/met/GEMPAK5.7.4/lib/sol_gcc/appl.a  
> /asp/met/GEMPAK5.7.4/lib/sol_gcc/syslib.a  
> /asp/met/GEMPAK5.7.4/lib/sol_gcc/cgemlib.a -lm -o gdgrib
> Undefined                       first referenced
>  symbol                             in file
> df_tmik_                            
> /asp/met/GEMPAK5.7.4/lib/sol_gcc/gemlib.a(dgdriv.o)
> ld: fatal: Symbol referencing errors. No output written to gdgrib
> collect2: ld returned 1 exit status
> *** Error code 1
> make: Fatal error: Command failed for target `gdgrib'
> Current working directory 
> /asp/met/GEMPAK5.7.4/gempak/source/contrib/hpc/gdgrib
> *** Error code 1
> make: Fatal error: Command failed for target `gdgrib'
> Current working directory 
> /asp/met/GEMPAK5.7.4/gempak/source/programs/na/gd2ndfd
> *** Error code 1
> make: Fatal error: Command failed for target `all'
> Current working directory /asp/met/GEMPAK5.7.4/gempak/source/programs/na
> *** Error code 1
> make: Fatal error: Command failed for target `all'
> Current working directory /asp/met/GEMPAK5.7.4/gempak/source/programs
> *** Error code 1
> make: Fatal error: Command failed for target `all'
> Current working directory /asp/met/GEMPAK5.7.4/gempak/source
> *** Error code 1
> make: Fatal error: Command failed for target `all'
> Current working directory /asp/met/GEMPAK5.7.4/gempak
> *** Error code 1
> make: Fatal error: Command failed for target `all'
> 
> 
> 
> 
> Pat
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> > 
> > Pat,
> > 
> > your PR_ routine would be used for SF and SN programs.
> > You need to add your function to $GEMTBL/parms/pcconv.tbl,
> > 
> > and
> > 
> > Add your PR_TMIB routine to the call list in 
> > $GEMPAK/sounrce/gemlib/pc/pcfunc.f.
> > 
> > To create a grid program function, you would need to create a
> > DF library function to call your PR routine for every grid point
> > and add this routine to the call list of $GEMPAK/source/gemlib/dg/dgdriv.f.
> > 
> > Steve Chiswell
> > 
> > On Mon, 17 Jan 2005, Patrick S. Market wrote:
> > 
> > > Steve:
> > >
> > > I am trying to include a subroutine into GEMPAK that I have modified.
> > >
> > > I have rewritten TMWB to calculate to include the latent heat of fusion
> > > as well (see below).  The code compiles alright, but trying to use it
> > > turns up:
> > >
> > >       [DG -19]  Operator TMIB is not recognized.
> > >
> > > How do I get this new function into GEMPAK?
> > >
> > > Pat
> > >
> > >
> > >
> > > *******************************begin include****************************
> > >         FUNCTION PR_TMIB  ( tmpk, rmix, pres )
> > > C************************************************************************
> > > C* PR_TMIB                                                              *
> > > C*                                                                      *
> > > C* This function computes ice bulb temperature from the temperature,    *
> > > C* mixing ratio, and pressure.  The result is obtained by solving       *
> > > C* for the temperature at which saturation occurs when the latent       *
> > > C* heat required to vaporize/melt ice is provided by a cooling of       *
> > > C* the air.  The equation representing the process is                   *
> > > C*                                                                      *
> > > C*      ( TMPK - TMWB ) * CP - ( Rsat (TMWB) - RMIX ) * LVAP = 0        *
> > > C*                                                                      *
> > > C* This implicit equation is solved by Newton's method, since the       *
> > > C* saturation mixing ratio Rsat is a transcendental function of         *
> > > C* TMWB.                                                                *
> > > C*                                                                      *
> > > C* The expressions for the heat of vaporization (LVAP) and saturation   *
> > > C* vapor pressure are equations (2) and (10) from Bolton (MWR, 1980).   *
> > > C*                                                                      *
> > > C* REAL PR_TMIB  ( TMPK, RMIX, PRES )                                   *
> > > C*                                                                      *
> > > C* Input parameters:                                                    *
> > > C*      TMPK            REAL            Temperature (K)                 *
> > > C*      RMIX            REAL            Mixing ratio (g/kg)             *
> > > C*      PRES            REAL            Pressure (mb)                   *
> > > C*                                                                      *
> > > C* Output parameters:                                                   *
> > > C*      PR_TMIB         REAL            Wet bulb temperature (K)        *
> > > C**                                                                     *
> > > C* Log:                                                                 *
> > > C* K. Brill/NMC          4/94                                           *
> > > C* S. Jacobs/NMC         4/94   Changed input RMIX from kg/kg to g/kg   *
> > > C* G. Krueger/EAI        4/96   Replaced C->K constant with PR_TMKC     *
> > > C* T. Lee/GSC           11/96   Changed constant                        *
> > > C* S. Jacobs/NCEP        8/97   Changed latent heat calc to use PR_LHVP *
> > > C* T. Lee/GSC            8/97   Set TMWB <= temp; Simplify computation  *
> > > C************************************************************************
> > >         INCLUDE         'GEMPRM.PRM'
> > > C*
> > >         PARAMETER       ( A = 6.112, B = 17.67, C = 243.5, EPSI = .622 )
> > >         PARAMETER       ( G = B * C )
> > >         PARAMETER       ( ERRMAX = .001 )
> > > C*
> > >         LOGICAL         convrg
> > > C*
> > >         INCLUDE         'ERMISS.FNC'
> > > C------------------------------------------------------------------------
> > > C*      Check for missing values.
> > > C
> > >         IF  ( ERMISS ( tmpk ) .or. ERMISS ( rmix ) .or. ERMISS ( pres )
> > >      +       .or.  ( pres .le. 0. ) )  THEN
> > >             PR_TMWB = RMISSD
> > >           ELSE
> > > C
> > > C*          Change temperature to degrees Celsius.
> > > C
> > >             tmp = PR_TMKC (tmpk)
> > > C
> > > C*          Compute the latent heat of sublimation.
> > > C
> > >             lvap = PR_LHVP ( tmp ) + (0.333 * 1.0E6)
> > > C
> > > C*          Compute the specific heat of moist air.
> > > C
> > >             rmix = rmix / 1000.
> > >             cp = 1005.7 * ( 1. + .887 * rmix )
> > > C
> > > C*          Compute L / cp.
> > > C
> > >             rlocp = lvap / cp
> > > C
> > > C*          Do Newton iteration.
> > > C
> > >             iter = 0
> > >             tib = tmp
> > >             convrg = .false.
> > >             DO WHILE ( iter .le. 50 .and. .not. convrg )
> > >                 iter = iter + 1
> > >                 bt = B * tib
> > >                 tpc = tib + C
> > >                 d = ( pres / A ) * EXP ( -bt / tpc )
> > >                 dm1 = d - 1.
> > >                 f = ( tmp - tib ) - rlocp * ( EPSI / dm1 - rmix )
> > >                 df = - G  / ( tpc * tpc )
> > >                 df = d * df * rlocp * EPSI / ( dm1 * dm1 ) - 1.
> > >                 cor = f / df
> > >                 tib = tib - cor
> > >                 IF ( ABS ( cor ) .le. ERRMAX ) convrg = .true.
> > >             END DO
> > > C*
> > >             IF ( .not. convrg ) THEN
> > >                 PR_TMWB = RMISSD
> > >               ELSE
> > >                 twk     = PR_TMCK (tib)
> > >                 IF  ( twk .gt. tmpk )  twk = tmpk
> > >                 PR_TMIB = twk
> > >             END IF
> > >         END IF
> > > C*
> > >         RETURN
> > >         END
> > >
> > > *******************************begin include****************************
> > >
> > > --
> > > ========================================================================
> > > Dr. Patrick S. Market
> > > Dept. of Soil, Env. & Atmospheric Sci.
> > > University of Missouri-Columbia                 Phone:  (573) 882 - 1496
> > > 331 ABNR Hall                                   Lab:    (573) 882 - 4401
> > > Columbia, MO 65211 USA          E-mail: address@hidden
> > > ========================================================================
> > >
> > 
>