Commit b8005744 authored by philipan's avatar philipan
Browse files

init

parent 6b46e60f
cost733class
Copyright (C) 2013 Andreas Philipp, Christoph Beck, ...
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
SUBDIRS = netcdf-4.0.1
if GRIB
GRDIR = grib_api-1.9.18
SUBDIRS += $(GRDIR)
endif
if OPENGL
GLDIR = f03gl
SUBDIRS += $(GLDIR)
endif
SUBDIRS += src
This diff is collapsed.
cost733class is a program package for weather and circulation type classification.
Copyright (C) 2013 Andreas Philipp
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Compile with netCDF, GRIB and OpenGL support (default):
./configure
make
Disable GRIB and OpenGL:
./configure --disable-grib --disable-opengl
make
Configure help:
./configure --help
Please note: the software is still under development. Absolutely no warrenty!
The documentation is in some parts outdated. Help appreciated!
This diff is collapsed.
*
* Script to plot a colorbar
*
* The script will assume a colorbar is wanted even if there is
* not room -- it will plot on the side or the bottom if there is
* room in either place, otherwise it will plot along the bottom and
* overlay labels there if any. This can be dealt with via
* the 'set parea' command. In version 2 the default parea will
* be changed, but we want to guarantee upward compatibility in
* sub-releases.
*
*
* modifications by mike fiorino 940614
*
* - the extreme colors are plotted as triangles
* - the colors are boxed in white
* - input arguments in during a run execution:
*
* run cbarn sf vert xmid ymid
*
* sf - scale the whole bar 1.0 = original 0.5 half the size, etc.
* vert - 0 FORCES a horizontal bar = 1 a vertical bar
* xmid - the x position on the virtual page the center the bar
* ymid - the x position on the virtual page the center the bar
*
* if vert,xmid,ymid are not specified, they are selected
* as in the original algorithm
*
function colorbar (args)
sf=subwrd(args,1)
vert=subwrd(args,2)
xmid=subwrd(args,3)
ymid=subwrd(args,4)
if(sf='');sf=1.0;endif
*
* Check shading information
*
'query shades'
shdinfo = result
if (subwrd(shdinfo,1)='None')
say 'Cannot plot color bar: No shading information'
return
endif
*
* Get plot size info
*
'query gxinfo'
rec2 = sublin(result,2)
rec3 = sublin(result,3)
rec4 = sublin(result,4)
xsiz = subwrd(rec2,4)
ysiz = subwrd(rec2,6)
ylo = subwrd(rec4,4)
xhi = subwrd(rec3,6)
xd = xsiz - xhi
ylolim=0.6*sf
xdlim1=1.0*sf
xdlim2=1.5*sf
barsf=0.8*sf
yoffset=0.2*sf
stroff=0.05*sf
strxsiz=0.12*sf
strysiz=0.13*sf
*
* Decide if horizontal or vertical color bar
* and set up constants.
*
if (ylo<ylolim & xd<xdlim1)
say "Not enough room in plot for a colorbar"
return
endif
cnum = subwrd(shdinfo,5)
*
* logic for setting the bar orientation with user overides
*
if (ylo<ylolim | xd>xdlim1)
vchk = 1
if(vert = 0) ; vchk = 0 ; endif
else
vchk = 0
if(vert = 1) ; vchk = 1 ; endif
endif
*
* vertical bar
*
if (vchk = 1 )
if(xmid = '') ; xmid = xhi+xd/2 ; endif
xwid = 0.2*sf
ywid = 0.5*sf
xl = xmid-xwid/2
xr = xl + xwid
if (ywid*cnum > ysiz*barsf)
ywid = ysiz*barsf/cnum
endif
if(ymid = '') ; ymid = ysiz/2 ; endif
yb = ymid - ywid*cnum/2
'set string 1 l 5'
vert = 1
else
*
* horizontal bar
*
ywid = 0.4
xwid = 0.8
if(ymid = '') ; ymid = ylo/2-ywid/2 ; endif
yt = ymid + yoffset
yb = ymid
if(xmid = '') ; xmid = xsiz/2 ; endif
if (xwid*cnum > xsiz*barsf)
xwid = xsiz*barsf/cnum
endif
xl = xmid - xwid*cnum/2
'set string 1 tc 5'
vert = 0
endif
*
* Plot colorbar
*
'set strsiz 'strxsiz' 'strysiz
num = 0
while (num<cnum)
rec = sublin(shdinfo,num+2)
col = subwrd(rec,1)
hi = subwrd(rec,3)
if (vert)
yt = yb + ywid
else
xr = xl + xwid
endif
if(num!=0 & num!= cnum-1)
'set line 1 1 10'
'draw rec 'xl' 'yb' 'xr' 'yt
'set line 'col
'draw recf 'xl' 'yb' 'xr' 'yt
if (num<cnum-1)
if (vert)
xp=xr+stroff
'draw string 'xp' 'yt' 'hi
else
yp=yb-stroff
'draw string 'xr' 'yp' 'hi
endif
endif
endif
if(num = 0 )
if(vert = 1)
xm=(xl+xr)*0.5
'set line 1 1 10'
'draw line 'xl' 'yt' 'xm' 'yb
'draw line 'xm' 'yb' 'xr' 'yt
'draw line 'xr' 'yt' 'xl' 'yt
'set line 'col
'draw polyf 'xl' 'yt' 'xm' 'yb' 'xr' 'yt' 'xl' 'yt
else
ym=(yb+yt)*0.5
'set line 1 1 10'
'draw line 'xl' 'ym' 'xr' 'yb
'draw line 'xr' 'yb' 'xr' 'yt
'draw line 'xr' 'yt' 'xl' 'ym
'set line 'col
'draw polyf 'xl' 'ym' 'xr' 'yb' 'xr' 'yt' 'xl' 'ym
endif
endif
if (num<cnum-1)
if (vert)
xp=xr+stroff
'draw string 'xp' 'yt' 'hi
else
yp=yb-stroff
'draw string 'xr' 'yp' 'hi
endif
endif
if(num = cnum-1 )
if( vert = 1)
'set line 1 1 10'
'draw line 'xl' 'yb' 'xm' 'yt
'draw line 'xm' 'yt' 'xr' 'yb
'draw line 'xr' 'yb' 'xl' 'yb
'set line 'col
'draw polyf 'xl' 'yb' 'xm' 'yt' 'xr' 'yb' 'xl' 'yb
else
'set line 1 1 10'
'draw line 'xr' 'ym' 'xl' 'yb
'draw line 'xl' 'yb' 'xl' 'yt
'draw line 'xl' 'yt' 'xr' 'ym
'set line 'col
'draw polyf 'xr' 'ym' 'xl' 'yb' 'xl' 'yt' 'xr' 'ym
endif
endif
if (num<cnum-1)
if (vert)
xp=xr+stroff
'draw string 'xp' 'yt' 'hi
else
yp=yb-stroff
'draw string 'xr' 'yp' 'hi
endif
endif
num = num + 1
if (vert); yb = yt;
else; xl = xr; endif;
endwhile
return
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break