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

20051108: Gempak - GARP forecast soundings crash



Dave,

Attached is the source code for $GARPHOME/object/displayvprof.c

Replace the existing copy, and then:
cd $GARPHOME
make clean
make all
make install
make clean

Steve Chiswell

****************************************************************************
Unidata User Support                                    UCAR Unidata Program
303 497 8643                                                  P.O. Box 3000
address@hidden                                   Boulder, CO 80307
----------------------------------------------------------------------------
Unidata WWW Service              http://my.unidata.ucar.edu/content/support
****************************************************************************

On Wed, 9 Nov 2005, David S. Nolan wrote:

>
> Dear Steve,
>
> Thank you for your very fast reply. I believe we compiled
> the code, so please send me the link to the fix. Some brief
> instructions on how to install it would help, because the
> person who installs these things is out of town right now.
>
> Best regards,
>
> Dave Nolan
>
>
>
> >
> > David,
> >
> > This "new" bug in model soundings is caused by gcc's handling of string
> > constants
> > when passed to a Fortran routine. The code hasn't changed in many years,
> > but now
> > gcc is having trouble. I have patched this routine for the upcoming 5.8.4
> > release
> > but you can update your current version as needed. It you want to patch
> > the source code,
> > I can send you the reference to our site where I posted the fix. If you
> > are running
> > a binary release, I can send you the new executable.
> >
> > Steve Chiswell
> > Unidata User Support
> >
> >
> >
> >>From: "David Nolan" <address@hidden>
> >>Organization: UCAR/Unidata
> >>Keywords: 200511081743.jA8HhDCs014535
> >
> >>Institution: University of Miami
> >>Package Version: 2.1
> >>Operating System: Linux
> >>Hardware Information: x86
> >>Inquiry: Greetings from Miami.
> >>
> >>I'm using GARP to teach a course on Weather Analysis here at the
> >> University of
> >>  Miami. The program works quite well, but I just discovered that it
> >> crashes e
> >> very time I try to plot a model forecast sounding - either Skew-T or
> >> Stuve. I
> >> t works if I choose Linear or Logarithmic vertical coordinates - but
> >> those ar
> >> e hard to infer stability from.
> >>
> >>When it crashes, it gives the "Segmentaion Error" message.
> >>
> >>Do you have any suggestions?
> >>
> >>Thanks!
> >>
> >>Dave Nolan
> >>
> >>
> >>
> > --
> > ****************************************************************************
> > Unidata User Support                                    UCAR Unidata
> > (303)497-8643                                                  P.O. Box
> > address@hidden                                   Boulder, CO
> > ----------------------------------------------------------------------------
> > Unidata WWW Service
> > ----------------------------------------------------------------------------
> > NOTE: All email exchanges with Unidata User Support are recorded in the
> > Unidata inquiry tracking system and then made publicly available
> > through the web.  If you do not want to have your interactions made
> > available in this way, you must let us know in each email you send to us.
> >
>
>
> --
> David S. Nolan
> Assistant Professor
> Division of Meteorology and Physical Oceanography
> Rosenstiel School of Marine and Atmospheric Science
> University of Miami
> 4600 Rickenbacker Causeway
> Miami, FL 33149
> 305-421-4930
> address@hidden
> http://www.rsmas.miami.edu/personal/dnolan
>
> "Comprehensive complexity is no virtue in modeling,
> but rather, an admission of failure." - Ian James.
>
>
/***********************************************************************
 *
 *      Copyright 1996, University Corporation for Atmospheric Research.
 *
 *      displayprof.c
 *
 *      Vertical profile display driver.
 *
 *      History:
 *
 *      12/96   COMET   Original copy
 *       1/97   COMET   Use title string in mot for consistency across
 *                      data types.
 *       3/97   COMET   Added wind position indicator.
 *       3/97   COMET   Added frame number
 *      11/97   COMET   Added titleIndex to pvprof arg list.
 *
 ***********************************************************************/


#include "underscore.h"
#include "winobj.h"
#include "wincb.h"
#include "genglobs.h"


int DisplayVerticalProfile( WindowObjectType *wo, MetObjectType *mot )
{
        char                    title[FILENAMESTRING], wind[GEMPAKSTRING];
        char                    tmp_datim[GEMPAKSTRING];
        char                    line[GEMPAKSTRING];
        char                    file[GEMPAKSTRING];
        char                    sizestr[GEMPAKSTRING], widthstr[GEMPAKSTRING];
        char                    fontstr[GEMPAKSTRING];
        int                     size, width, font_size;
        int                     i, verbose, frame, iret;
        char                    gfunc[GEMPAKSTRING], gvect[GEMPAKSTRING];

        VertProfileObjectType   *pot;
        MetObjectType           *gmobj;

        verbose = GetVerboseLevel();
        if( verbose > VERBOSE_0 )
            printf ( "DisplayVerticalProfile\n" );

        frame = GetActivePixmapObjectIndex (wo) + 1;

        pot = (VertProfileObjectType *) mot->metObjectContent;

        assert( pot );

/*
 *      Save original FDF settings.
 */
        strcpy ( sizestr, pot->symbol_size );
        strcpy ( widthstr, pot->symbol_width );
        strcpy ( fontstr, pot->text );

/*
 *      Set plotting parameters according to generalized values.
 */
        GetDepictableValue ( "SYMBOLSIZE", &size );
        GetDepictableValue ( "SYMBOLWIDTH", &width );
        GetDepictableValue ( "FONTSIZE", &font_size );

        SetGemFloatVar (TIMEHEIGHTOBJECT, sizestr, "SYMBOLSIZE", size );
        SetGemFloatVar (TIMEHEIGHTOBJECT, widthstr, "SYMBOLWIDTH", width );
        SetGemText (TIMEHEIGHTOBJECT, fontstr, "FONTSIZE", font_size );

/*
 *      Set contour line characteristics.
 */
        sprintf ( line, "%s/%s/%s", pot->line_color, pot->line_type,
                                    pot->line_width );

        sprintf ( wind, "%s%s/%s/%s/%s/%s",
                        pot->wind_symbol, pot->line_color,
                        sizestr         , widthstr       ,
                        pot->symbol_type, pot->symbol_headsize );

        strcpy ( title, mot->titleString );
        SetGemTitle ( line, mot->titleIndex, title );

        if(strcspn(pot->ftime,"/") > 6)
           strcpy(tmp_datim,pot->ftime+2);
        else
           strcpy(tmp_datim,pot->ftime);

/*
 *      Gempak driver.
 */
        if ( strstr ( pot->ptype, "skewt" ) ||
             strstr ( pot->ptype, "stuve" ) ) {

/*
 *      Use red for the TMPC line color for the first plot.
 */
        if ( strcmp ( pot->winpos, "1" ) == 0 )
            sprintf ( line, "2/%s/3", pot->line_type );
        else
            sprintf ( line, "%s/%s/3", pot->line_color, pot->line_type );

        sprintf(gfunc,"tmpc"); sprintf(gvect,"wind");
        pvprof( mot->filename,          tmp_datim,
                pot->vcoord,            gfunc,
                pot->point,             gvect,
                pot->ptype,             pot->xaxis,
                pot->yaxis,             line,
                wind,                   pot->refvec,
                pot->winpos,            pot->thtaln,
                pot->thteln,            pot->mixrln,
                pot->filter,            title,
                pot->scale,             fontstr,
                &frame,                 &(mot->titleIndex),
                &verbose,               &iret,
                strlen(mot->filename),  strlen(tmp_datim),
                strlen(pot->vcoord),    strlen(gfunc),
                strlen(pot->point),     strlen(gvect),
                strlen(pot->ptype),     strlen(pot->xaxis),
                strlen(pot->yaxis),     strlen(line),
                strlen(wind),           strlen(pot->refvec),
                strlen(pot->winpos),    strlen(pot->thtaln),
                strlen(pot->thteln),    strlen(pot->mixrln),
                strlen(pot->filter),    strlen(title),
                strlen(pot->scale),     strlen(fontstr) );

/*
 *      Use green for the DWPC line color for the first plot.
 */
        if ( strcmp ( pot->winpos, "1" ) == 0 )
            sprintf ( line, "3/%s/3", pot->line_type );
        else
            sprintf ( line, "%s/%s/3", pot->line_color, pot->line_type );

        sprintf(gfunc,"dwpc"); sprintf(gvect," ");
        pvprof( mot->filename,          tmp_datim,
                pot->vcoord,            gfunc,
                pot->point,             gvect,
                pot->ptype,             pot->xaxis,
                pot->yaxis,             line,
                wind,                   pot->refvec,
                pot->winpos,            pot->thtaln,
                pot->thteln,            pot->mixrln,
                pot->filter,            title,
                pot->scale,             fontstr,
                &frame,                 &(mot->titleIndex),
                &verbose,               &iret,
                strlen(mot->filename),  strlen(tmp_datim),
                strlen(pot->vcoord),    strlen(gfunc),
                strlen(pot->point),     strlen(gvect),
                strlen(pot->ptype),     strlen(pot->xaxis),
                strlen(pot->yaxis),     strlen(line),
                strlen(wind),           strlen(pot->refvec),
                strlen(pot->winpos),    strlen(pot->thtaln),
                strlen(pot->thteln),    strlen(pot->mixrln),
                strlen(pot->filter),    strlen(title),
                strlen(pot->scale),     strlen(fontstr) );
        }
        else 

        pvprof( mot->filename,          tmp_datim,
                pot->vcoord,            pot->field,
                pot->point,             pot->vector,
                pot->ptype,             pot->xaxis,
                pot->yaxis,             line,
                wind,                   pot->refvec,
                pot->winpos,            pot->thtaln,
                pot->thteln,            pot->mixrln,
                pot->filter,            title,
                pot->scale,             fontstr,
                &frame,                 &(mot->titleIndex),
                &verbose,               &iret,
                strlen(mot->filename),  strlen(tmp_datim),
                strlen(pot->vcoord),    strlen(pot->field),
                strlen(pot->point),     strlen(pot->vector),
                strlen(pot->ptype),     strlen(pot->xaxis),
                strlen(pot->yaxis),     strlen(line),
                strlen(wind),           strlen(pot->refvec),
                strlen(pot->winpos),    strlen(pot->thtaln),
                strlen(pot->thteln),    strlen(pot->mixrln),
                strlen(pot->filter),    strlen(title),
                strlen(pot->scale),     strlen(fontstr) );

        SetMetObjectDrawnFlag( mot, True );

        return(0);

}