[comp.sources.misc] REPOST: v18i001: planet - planet generation simulator, Part01/04

allen@viewlogic.com (Dave Allen) (04/09/91)

Submitted-by: Dave Allen <allen@viewlogic.com>
Posting-number: Volume 18, Issue 1
Archive-name: planet/part01
Supersedes: tec: Volume 10, Issue 77-78

[After I took the time to repackage this up due to a problem creating the
directories during unsharing, I went ahead and posted the original version 
and removed my repackaged version... Lets try it again... -Kent+]

This is version 1 of a scientific planet generator (as opposed to a
die-rolling planet generator).  It is written in C and runs in graphics
mode under Xwindows, or in text-only mode under UN*X.  There are three
programs: 

   - tec: a continental drift simulator
   - clim: a climate generator
   - globe: computes and displays a rotating planet

Dave
----
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# Contents:  . ./doc ./example ./example/globe.in ./src ./src/Makefile
#   ./src/rain.c
# Wrapped by kent@sparky on Mon Apr  8 22:39:14 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo '          "shar: End of archive 1 (of 4)."'
if test ! -d './doc' ; then
    echo shar: Creating directory \"'./doc'\"
    mkdir './doc'
fi
if test ! -d './example' ; then
    echo shar: Creating directory \"'./example'\"
    mkdir './example'
fi
if test -f './example/globe.in' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'./example/globe.in'\"
else
  echo shar: Extracting \"'./example/globe.in'\" \(40677 characters\)
  sed "s/^X//" >'./example/globe.in' <<'END_OF_FILE'
X(LAND (
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   1   1   2
X   2   2   2   2   2   2   2   2   2   2   2   2   1   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   1   2   3   3   3   3   3   3   3   3
X   3   3   3   3   3   3   3   3   3   3   3   3   3   2   1
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   1   4   4   3   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
X   3  18  22  22  22  22  22  22  22  22  22  22  22  22  22
X  22  22  22  22  23  24  26  25  23   6   3   1   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   1   5  10  31  26
X   8   4   3   3   3   3   3   3   2   1   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   2  19  24  27  29  29
X  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29
X  29  32  31  31  25  24   1   0   0   4   5   5   1   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   5  30  35  38  35  30  25  23  23  24
X  24  24  20  17   2   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3  23  28  31  32  32  32  32  32  32  32
X  32  32  32  32  32  32  32  32  34  34  34  34  35  36  29
X   9   1   0   4  13  29  35  10   5   1   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X  10  38  48  45  40  32  32  31  31  27  26  27  24  21   3
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
X  25  29  33  34  35  35  35  35  35  35  35  35  35  35  35
X  35  35  34  34  35  36  37  39  39  30   9   0   0   8  30
X  40  42  35  35  10   5   1   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   2  17  43  51  49  43
X  35  33  32  32  33  34  33  29  23  18   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  27  31  35  37  37
X  37  37  37  37  37  37  37  37  37  37  37  37  36  36  36
X  36  37  38  36  27   6   0   0  11  33  47  48  45  44  37
X  35  10   5   1   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   6  37  48  57  47  43  37  37  37  38  34
X  33  32  31  26  20   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3  26  32  35  38  38  38  38  38  38  38
X  38  38  38  38  38  38  38  39  38  38  38  38  37  31  12
X   3   0   3  13  36  44  43  48  48  47  45  37  32   7   2
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   2  13
X  43  53  55  47  44  39  38  36  37  38  39  36  32  26  22
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
X  25  33  35  40  40  40  40  40  40  40  40  40  40  40  40
X  40  40  39  40  40  39  39  38  30   9   0   0   6  28  39
X  43  44  46  47  49  51  52  44  31   7   1   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   6  34  48  54  51  45  43
X  39  39  40  40  40  40  35  33  25  22   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  27  33  35  39  39
X  39  39  39  39  39  39  39  39  39  39  39  39  39  39  39
X  40  40  40  31   9   0   0   9  33  42  44  45  43  46  47
X  52  56  53  43  32   5   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   2  13  40  49  55  49  45  41  39  38  38  37  37
X  36  35  33  27  22   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3  26  31  34  37  37  37  37  37  37  37
X  37  37  37  37  37  37  37  37  37  38  39  39  39  32   9
X   0   0  10  34  44  42  43  43  44  45  51  57  57  52  36
X   9   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   1   5  11  36  42
X  49  48  42  41  39  37  36  37  36  37  37  35  30  26  20
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
X  24  29  32  34  34  34  34  34  34  34  34  34  34  34  34
X  34  35  36  37  38  38  38  40  33   9   0   0  11  31  43
X  44  44  43  43  44  52  58  59  55  37  10   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   1   5  10  32  32  40  44  43  41  41  38  37
X  35  35  34  33  32  33  31  28  24   3   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  23  28  29  31  31
X  31  31  31  31  31  31  31  31  32  33  34  35  35  35  35
X  37  39  40  34   9   0   0  12  34  46  46  45  43  43  45
X  52  56  59  49  32   6   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   2   7  32
X  34  38  44  41  41  40  39  37  36  35  34  33  32  33  34
X  32  31  27  23   3   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3  21  26  29  30  31  31  31  31  31  31
X  31  31  32  33  31  33  33  33  33  36  38  40  40  33   9
X   0   0  12  32  44  44  43  42  42  47  53  60  57  42  13
X   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   2   9  32  42  44  45  41  38  38
X  38  37  35  34  33  32  31  31  29  29  28  28  25  21   3
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
X  20  23  28  28  28  28  28  28  28  28  29  30  31  31  31
X  31  32  34  35  36  38  40  40  33   9   0   0  11  31  42
X  40  39  38  38  47  54  62  54  38   8   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   6  30  40  47  46  44  40  38  36  35  35  34  32  31
X  30  30  31  30  30  28  27  24  19   3   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  20  22  25  25  25
X  25  25  25  26  27  29  30  31  31  32  33  34  35  36  37
X  39  39  41  31   9   0   0  10  33  40  41  40  37  39  46
X  52  60  54  38   8   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0  11  39  48  53
X  46  43  39  37  36  36  35  34  32  31  31  28  28  27  27
X  27  26  24  19   3   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3  21  24  28  30  31  31  31  31  31  32
X  32  32  32  32  33  34  36  37  38  39  39  39  39  29   9
X   0   0   8  28  35  36  35  34  34  41  53  58  58  42  13
X   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0  14  40  52  51  46  42  39  38  37
X  38  35  33  33  32  30  30  29  27  26  26  26  22  19   3
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
X  22  26  29  29  30  31  31  31  31  31  31  32  33  34  35
X  35  37  39  38  37  38  37  37  28   9   0   0   7  29  35
X  33  33  33  34  38  45  52  58  49  33   6   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0  12  35  50  49  47  42  40  39  40  39  37  35  34  33
X  32  31  32  31  31  31  28  24  21   3   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  23  26  31  34  35
X  36  36  37  37  37  37  36  35  35  36  37  38  37  37  36
X  37  36  35  26   8   0   0   6  27  32  31  30  31  31  35
X  41  54  56  55  41  12   1   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   7  30  41  45
X  48  43  43  43  41  39  39  38  36  35  33  32  32  31  31
X  30  28  27  22   3   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3  23  27  31  33  34  35  35  36  36  36
X  36  36  36  37  37  37  36  36  34  35  35  34  33  27   7
X   0   0   6  24  30  29  28  30  30  33  37  48  55  61  46
X  33   3   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   2   7  31  36  40  47  47  47  45
X  43  40  38  38  36  36  37  38  37  37  37  34  30  26  21
X   1   0   0   0   0   0   0   0   0   0   0   0   0   0   3
X  22  28  31  36  38  38  39  39  39  39  38  38  39  38  37
X  35  35  34  34  34  33  32  31  25   6   0   0   6  23  28
X  29  30  31  30  32  35  44  53  58  51  37   7   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   1   5  12  33  40  46  51  47  45  43  40  40  38
X  37  36  36  36  36  36  35  33  28  21   2   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  21  27  32  36  39
X  38  40  40  40  41  41  41  39  37  35  34  33  32  32  32
X  31  30  30  25   6   0   0   6  24  31  31  29  29  28  31
X  34  38  51  59  57  41  12   1   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   2
X   9  33  43  50  52  48  45  42  40  40  40  39  39  40  40
X  41  39  35  31  24   4   1   0   0   0   0   0   0   0   0
X   0   0   0   0   2  20  25  32  35  39  40  39  39  40  40
X  41  40  38  36  34  32  32  31  29  30  31  31  30  25   4
X   0   0   6  25  30  29  28  27  27  28  31  37  46  53  59
X  49  37   5   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   2   9  33  42  48
X  50  47  45  43  41  41  40  40  41  41  40  38  38  33  25
X  19   2   0   0   0   0   0   0   0   0   0   0   0   0   3
X  23  28  31  35  38  38  38  37  36  37  36  37  38  35  34
X  32  30  29  30  30  32  32  27   8   2   0   2   8  25  28
X  27  26  25  25  26  29  32  40  51  59  54  41  11   1   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   2   9  33  43  49  47  45  44  43
X  40  39  40  41  41  41  41  38  33  26  21   3   0   0   0
X   0   0   0   0   0   0   0   0   0   2  18  26  29  33  35
X  36  37  38  38  38  38  37  36  35  33  33  32  32  31  31
X  31  30  23   6   0   0   3  20  26  27  26  24  23  23  26
X  27  34  37  48  56  58  50  35   5   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   2   7  33  38  45  50  45  44  42  41  40  39  39
X  38  39  37  33  25  20   2   0   0   0   0   0   0   0   0
X   0   0   0   0   2   4  25  28  31  33  34  35  36  35  34
X  33  32  31  31  32  32  32  31  31  29  29  28  22   5   0
X   0   4  23  25  25  24  23  22  22  25  26  31  34  42  53
X  59  55  37   9   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   1   5
X  14  34  41  45  47  44  43  41  41  38  37  37  34  31  26
X  22   2   0   0   0   0   0   0   0   0   0   0   0   0   0
X   1  21  23  29  31  32  34  34  34  35  34  33  32  31  31
X  30  30  29  28  28  27  26  23   4   0   0   3  22  24  23
X  22  22  22  22  24  27  29  34  40  51  56  57  41  12   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   4  11  32  40  45
X  47  46  44  43  39  39  35  33  30  25  21   2   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   3  23  26  29
X  30  31  32  31  30  30  30  30  30  29  29  28  27  27  26
X  25  25  21   3   0   0   3  20  22  22  22  22  22  22  24
X  28  29  33  39  52  54  52  36   9   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   1   1   1
X   0   0   0   0   0   0   2   7  33  36  42  46  48  44  41
X  40  35  35  29  26  21   3   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   2  18  24  26  29  29  30  31  31
X  30  29  29  28  27  26  26  26  25  24  23  23  19   3   0
X   0   3  19  22  22  22  22  22  22  24  28  28  37  46  51
X  53  44  32   5   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   1   5  20  23   3   0   0   0   0
X   0   0   1   5  12  34  41  46  49  43  40  36  32  29  27
X  20   3   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   1   3  21  24  26  28  28  27  26  25  26  27  27  27
X  26  25  24  23  22  22  22  19   3   0   0   3  19  22  22
X  22  22  22  22  23  28  29  38  46  53  49  35   7   1   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   1   3  23  22  19   3   0   0   0   0   0   0   0   0   2
X   9  33  42  46  46  43  38  34  31  29  21   4   1   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   2  22  22
X  25  25  25  25  27  26  25  25  25  25  24  23  22  22  22
X  22  21  18   2   0   0   3  19  22  22  22  22  22  22  24
X  28  33  44  53  59  46  17   3   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   1   4  23  26  26   7
X   3   0   0   0   0   0   0   0   0   0   2   9  32  41  44
X  43  38  36  31  26  23  17   2   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   1  17  20  23  22  22  22  23
X  23  23  22  22  22  22  22  22  22  22  22  20   4   1   0
X   1   4  20  22  22  22  22  22  22  24  25  31  40  51  56
X  47  36   5   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   2  25  30  29   7   2   0   0   0   0   0
X   0   0   0   0   0   0   2   7  32  34  39  41  36  33  28
X  24  18   3   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   1  19  19  22  22  22  22  22  22  22  22  22  22
X  22  22  22  22  22  22  19   3   0   0   2  18  21  22  22
X  22  22  22  22  24  25  31  38  48  53  54  41  14   4   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4
X  33  36  38  26   5   2   1   0   0   0   0   0   0   0   0
X   0   0   1   5  11  29  32  33  33  27  23  20   5   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0  18  19
X  21  21  21  22  22  22  22  22  22  22  22  22  22  22  22
X  22  19   3   0   0   3  19  22  22  22  22  22  22  22  23
X  27  28  34  42  50  54  53  37  10   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0  10  40  44  44  33  29
X  23   6   4   2   1   0   0   0   0   0   0   0   0   0   2
X   6  11  30  23   6   6  14   4   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0  19  19  18  19  21  21
X  22  22  22  22  22  22  22  22  22  22  22  19   3   0   0
X   3  19  22  22  22  22  22  22  22  23  25  29  30  38  47
X  54  58  48  35   1   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0  17  43  56  50  40  35  30  26  24  21   3
X   1   0   0   0   0   0   0   0   0   0   0   1   4   4   3
X   3   3   3   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0  19  19  19  21  21  21  22  22
X  22  22  22  22  22  21  18   2   0   0   3  19  22  22  22
X  22  23  23  24  25  25  29  31  34  42  53  59  54  40   5
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  23
X  49  65  55  48  44  38  37  30  28  23   4   1   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0  19  19  18  19  20  20  20  21  21  22  23
X  22   4   1   0   1   4  23  25  25  25  25  25  25  25  26
X  27  28  31  36  40  51  57  58  46   8   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0  24  52  71  63  55  50
X  44  43  36  34  27  24   3   1   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0  19  19  17  18  19  18  19  20  18   2   0   0   1
X  18  21  21  21  21  22  24  26  27  28  28  30  32  35  41
X  52  57  54  40   8   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0  25  56  75  68  61  56  51  48  42  40  34
X  29  22   2   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   1  18  19  20  19   1   0   0   1  19  19  19  20  18
X  19  23  24  26  29  29  31  32  36  44  51  58  48  35   5
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  26
X  56  79  73  65  61  57  53  49  42  37  31  26  22   1   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   1   2  20  19  23  23  26
X  27  28  31  39  47  53  52  38  11   1   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0  27  59  80  77  72  68
X  62  59  54  48  43  37  31  24   5   2   1   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   1   3  18  21  21  24  27  31  38  44
X  47  42  31   5   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0  27  61  86  83  76  73  69  62  57  49  43
X  37  32  26  23  18   3   1   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   1   2   3  20  23  20  25  31  36  35  33   6   1   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  28
X  63  89  88  84  82  77  71  62  54  45  40  34  28  27  24
X  18   2   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   1   2   5   9  28  10   5   1   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0  29  62  93  93  91  88
X  84  75  65  56  47  40  36  31  29  24  23  22   1   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1
X   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0  28  60  90  91  90  89  85  80  65  55  44
X  40  35  32  30  27  24  21  21   2   1   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   1   1   1   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  20
X  54  80  78  79  76  86  79  68  54  43  41  34  34  29  28
X  26  24  20  17   2   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   2   4  24  23   6   3   1   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0  11  45  57  62  52  60
X  79  68  68  50  43  40  34  33  29  28  27  25  23  20  19
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   1   5  23  28  29
X  27  24   4   1   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   4  34  44  47  48  47  67  66  67  50  42
X  38  35  34  28  27  26  26  24  21  21  18   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   1   4  27  32  35  38  35  31  25   3   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4
X  27  36  40  44  44  59  57  62  48  42  38  35  33  27  27
X  25  25  24  22  21  19  19  19   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   2
X  21  27  35  42  43  41  37  29   7   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   4  25  34  35  37  39
X  56  55  59  45  41  41  36  32  30  25  22  22  22  22  22
X  21  21  19  19   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3  26  35  41  45  47
X  46  40  35  25   2   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   6  27  31  36  37  38  48  47  59  45  42
X  40  37  31  28  25  22  22  22  22  22  22  22  22  19  19
X  19  19  19   1   1   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   1   5  27  35  42  47  50  47  42  38  29   4
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4
X  24  33  33  31  27  26  42  50  47  46  41  39  32  29  25
X  22  22  22  22  22  22  22  22  21  21  21  21  19  19  20
X  20   3   3   2   1   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   2  21
X  28  37  44  46  48  48  43  37  29   4   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   3   7  24  24  11   6
X  10  30  36  41  41  44  39  33  30  25  22  22  22  22  22
X  22  22  22  22  22  22  23  24  24  23  20  20  18  17   4
X   2   1   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   1   5  26  33  39  43  46  48
X  45  41  34  24   4   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   3   6   6   3   0   1   5  10  39  44
X  48  41  34  30  25  22  22  22  22  22  22  22  23  24  25
X  25  25  23  23  26  27  27  26  25  23  21   4   3   2   1
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   1   2  22  24  27  33  37  43  43  45  42  36  30   7   2
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   1  10  36  42  40  35  30  25
X  22  22  22  22  23  24  25  26  25  26  28  28  30  31  30
X  29  29  30  29  27  27  27  24  22   7   6   5   4   3   2
X   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   2  19  24  26  33
X  37  38  43  44  42  38  32  26   3   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   5  35  39  40  33  30  24  22  23  24  25  27
X  26  25  28  30  32  31  32  33  33  35  34  35  34  34  36
X  35  34  32  31  28  27  27  28  23  18   1   0   0   0   0
X   0   0   1   3   5   6   5   4   3   3   3   2   1   0   0
X   0   0   0   1   2   5  23  26  30  33  38  39  43  43  40
X  36  29   6   1   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   1  12
X  33  40  33  29  26  25  26  25  27  28  29  31  33  32  35
X  36  38  39  41  43  43  43  43  44  44  44  44  42  41  40
X  40  37  34  29  24   2   0   0   0   0   0   1   4  23  24
X  27  27  30  30  30  28  26  24   7   6   5   5   5   7  24
X  25  27  29  30  35  36  39  41  41  37  32  25   3   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   7  27  33  32  28  29
X  30  31  31  32  33  35  36  39  39  42  43  46  48  49  51
X  51  52  50  50  50  50  50  50  50  50  49  47  41  33  23
X   2   0   0   0   0   0   3  25  31  37  41  41  38  38  37
X  35  38  34  33  31  29  31  28  30  29  29  29  30  33  36
X  35  39  38  38  34  27   6   1   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   3   9  31  31  30  32  32  33  35  36  38
X  40  43  45  46  49  52  53  53  53  54  54  54  54  54  54
X  54  54  54  54  54  54  51  44  34  24   2   0   0   0   0
X   1   7  31  40  46  48  49  50  50  49  49  48  48  49  47
X  46  44  41  37  34  30  32  32  32  33  34  34  34  33  29
X  24   3   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   1   2   3   4
X  25  29  33  36  36  37  39  43  44  45  48  51  52  53  54
X  55  56  57  58  58  57  57  57  58  59  59  59  59  58  57
X  56  51  43  31   7   1   0   0   0   0   3  28  36  46  51
X  53  53  53  54  56  57  59  61  61  64  60  54  46  39  33
X  32  29  28  27  28  30  31  29  29  22   4   1   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   3   6  25  27  28  31  36  40  43  44
X  45  48  50  52  54  55  55  55  57  58  59  59  58  58  57
X  56  56  55  53  53  53  53  53  53  54  53  47  39  29   5
X   0   0   0   0   0   5  28  38  49  53  55  54  56  58  60
X  62  68  72  72  71  64  55  45  35  32  28  27  27  24  24
X  24  23  24   5   2   1   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   5  27  35  38  40  45  47  50  51  52  53  56  57  56  57
X  57  58  59  59  57  56  56  54  53  54  53  53  52  51  50
X  50  50  50  51  49  46  41  32  24   2   0   0   0   0   1
X   7  32  41  47  50  51  52  54  59  62  66  72  76  75  72
X  60  48  37  29  24  23  22  20   4   3   3   3   2   1   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   1  11  37  47  50  53
X  57  58  62  63  63  63  62  63  63  61  60  58  57  57  54
X  53  53  50  49  47  46  47  46  46  46  46  46  46  43  40
X  33  29  25   4   1   0   0   0   0   2  25  30  37  45  46
X  47  51  51  57  61  67  72  75  68  58  44  35  26  22  22
X   3   3   2   1   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   1   2  19  30  42  56  61  64  65  69  71  69  71
X  70  67  65  61  62  58  56  54  52  49  47  44  43  41  38
X  37  38  39  40  40  40  40  39  36  32  26   7   3   1   0
X   0   0   0   1   5  27  34  38  39  42  43  47  50  56  60
X  64  66  60  51  43  32  25   4   2   1   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   2  17  21
X  37  48  62  66  69  73  72  75  75  75  73  70  70  64  61
X  58  53  50  45  43  39  37  36  35  34  33  32  31  31  31
X  31  31  31  29  25   5   1   0   0   0   0   0   0   2  21
X  26  28  31  33  38  42  47  51  56  60  60  56  46  37  25
X   5   2   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   3  19  23  38  50  68  71  72
X  71  75  78  79  79  75  72  67  64  61  56  52  46  42  40
X  36  33  31  30  31  27  29  28  28  28  28  28  28  25  21
X   3   0   0   0   0   0   0   1  22  22  27  29  32  37  38
X  44  48  55  57  59  56  49  35   9   2   1   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   3  20  25  36  45  58  65  74  76  77  75  73  75
X  74  73  70  65  60  56  50  46  41  38  34  31  29  28  27
X  26  26  25  25  25  25  25  24  21  17   2   0   0   0   0
X   0   0   2  20  22  28  30  33  36  43  48  52  58  57  56
X  50  39  27   4   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   3  22  26
X  31  40  53  55  59  63  68  74  77  77  72  69  66  65  61
X  58  53  48  43  41  35  34  31  29  28  27  26  25  25  25
X  25  25  22  21   3   1   0   0   0   0   0   0   3  20  23
X  28  32  37  42  49  54  57  60  57  52  40  31   7   2   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   3  22  25  29  33  38  45  51
X  57  56  60  62  64  69  66  64  62  60  59  54  53  46  45
X  39  37  34  32  31  31  31  31  31  31  30  28  24  18   1
X   0   0   0   0   0   0   1   5  23  26  32  36  42  50  56
X  59  61  59  53  42  32   7   2   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   3  18  26  27  31  33  34  36  41  45  50  55  57
X  58  61  62  65  64  63  56  57  51  52  44  44  40  39  37
X  34  34  34  34  34  33  30  24  19   1   0   0   0   0   0
X   0   3  23  28  33  39  43  50  55  59  61  59  52  40  33
X   8   2   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   2  15  21
X  25  26  30  30  31  32  33  34  37  44  48  49  49  53  56
X  64  58  61  55  57  53  51  48  46  45  42  42  41  41  41
X  39  35  27  22   1   0   0   0   0   0   2  25  31  38  42
X  47  51  55  57  57  54  48  42  31   9   3   1   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   1   2   3  22  21  25  26  30
X  32  32  34  34  36  40  42  44  48  47  55  53  63  58  58
X  57  55  54  53  52  50  51  52  52  51  46  40  31  21   1
X   0   0   0   0   2   7  31  37  47  52  56  58  60  54  51
X  43  38  29   7   4  17  18  19  18  17  18   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   1   2   5  20  24  25  25  28  30  32
X  33  34  34  37  39  46  46  54  52  60  59  58  57  55  55
X  54  52  52  52  51  49  41  30   7   1   0   0   0   0   5
X  25  41  50  57  60  62  59  57  47  40  34  26  23  22  21
X  21  21  20  20  18  17   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   1   2   3   5  21  25  28  29  32  32  34  35  34
X  37  37  45  44  50  49  59  61  62  59  55  56  56  56  54
X  49  41  28   5   0   0   0   0   0   8  31  45  55  61  61
X  62  57  47  39  30  25  23  22  21  21  22  22  21  19  17
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   1   2   4  20  24  26  30  31  33  33  35  32  34  36  41
X  40  45  46  49  53  49  50  51  51  51  45  38  28   3   0
X   0   0   0   2  11  35  48  58  61  60  55  47  40  33  28
X  24  22  22  24  24  24  21  19  16   1   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   1   2   5
X  23  25  30  31  32  34  33  31  29  29  31  35  41  41  40
X  38  34  35  35  35  35  28   7   1   0   0   0   1   4  24
X  34  44  51  52  48  46  40  33  27  24  24  25  23  23  21
X  21  17  20   2   1   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   1   4  22  25  27  28
X  29  30  31  30  28  26  24  25  26  29  29  30  31  31  30
X  29  25  22  19  20  21  22  22  23  26  33  38  43  43  42
X  39  35  33  31  29  28  27  22  21  17  21   2   1   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   1   3  20  22  25  28  30  30  30  29
X  27  25  24  23  22  21  21  21  22  22  22  22  20  19  19
X  20  22  23  26  29  32  34  36  37  36  35  32  32  31  30
X  28  27  21   5   2   1   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   1   2   3  23  23  23  27  27  29  28  27  26  25  24
X  23  22  22  22  22  22  22  22  23  24  25  27  29  31  30
X  32  34  36  36  37  37  38  36  35  34  30  25  22   3   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
X   4  20  24  25  27  29  29  28  26  26  25  24  23  22  22
X  22  22  23  23  24  26  28  30  32  34  35  37  39  40  42
X  40  38  37  36  33  32  25  21   3   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   1   2  22  22  26
X  29  30  29  28  28  26  25  24  24  23  23  23  25  26  28
X  29  30  33  35  36  38  39  40  40  41  41  41  39  37  31
X  32  25  21   3   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   2  23  25  28  30  31  30  29
X  28  27  27  26  25  25  24  25  27  28  31  32  34  35  38
X  40  39  40  40  40  40  39  38  36  31  29  25  19   2   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   2  22  23  30  29  33  32  31  30  29  28  27  27
X  27  29  28  29  29  31  33  35  36  37  39  40  41  41  40
X  39  37  35  32  31  26  21   3   1   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   1  19  22
X  28  29  32  33  33  32  31  32  30  30  29  29  29  30  31
X  32  34  35  36  34  35  34  35  33  35  33  33  31  29  26
X  21  20   1   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   1   4  21  28  30  32  34  34
X  34  33  32  31  32  33  32  33  33  32  33  34  34  34  35
X  36  35  34  33  32  31  28  27  22  23   2   1   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   3  20  26  28  32  32  36  36  35  34  33  33
X  32  31  32  33  34  35  34  32  31  30  28  27  26  26  27
X  25  21  23   2   1   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   2  18
X  23  25  31  32  36  37  36  36  35  36  37  36  35  35  36
X  36  33  30  29  28  25  23  23  22  22   3   2   1   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   1   3  21  26  29  33  35
X  37  38  38  38  37  36  37  38  37  36  35  32  30  27  21
X   4   3   3   2   1   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   1   3  22  26  30  34  35  37  38  39  39
X  40  40  39  38  36  34  32  28  24   4   1   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   1   4  24  27  31  34  33  35  36  35  36  36  35  36  34
X  31  30  26  20   2   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   2  20  26  28
X  30  31  33  34  34  35  35  33  32  32  30  26  24  21   1
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
X   0   0   0   0   0   0   0   0   0   0))
END_OF_FILE
  if test 40677 -ne `wc -c <'./example/globe.in'`; then
    echo shar: \"'./example/globe.in'\" unpacked with wrong size!
  fi
  # end of './example/globe.in'
fi
if test ! -d './src' ; then
    echo shar: Creating directory \"'./src'\"
    mkdir './src'
fi
if test -f './src/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'./src/Makefile'\"
else
  echo shar: Extracting \"'./src/Makefile'\" \(1309 characters\)
  sed "s/^X//" >'./src/Makefile' <<'END_OF_FILE'
XLIBS  = -lm -lXaw -lXt -lXmu -lX11 -lXext
XFLAGS =
XCOBJ  = clim.o heat.o pressure.o wind.o rain.o climate.o fileio.o
XTOBJ  = tec1.o tec2.o tec3.o fileio.o
XGOBJ  = globe.o fileio.o
XGRAF  = x
X
X# Change GRAF from x to unix to produce text-only versions
X
Xall: clim tec globe
X
Xclim:       $(COBJ) $(GRAF).o; cc $(FLAGS) -o clim  $(COBJ) $(GRAF).o $(LIBS)
Xtec:        $(TOBJ) $(GRAF).o; cc $(FLAGS) -o tec   $(TOBJ) $(GRAF).o $(LIBS)
Xglobe:      $(GOBJ) $(GRAF).o; cc $(FLAGS) -o globe $(GOBJ) $(GRAF).o $(LIBS)
X
Xtec1.o:     tec1.c const.h tec.h;      cc $(FLAGS) -c tec1.c
Xtec2.o:     tec2.c const.h tec.h;      cc $(FLAGS) -c tec2.c
Xtec3.o:     tec3.c const.h tec.h;      cc $(FLAGS) -c tec3.c
X
Xglobe.o:    globe.c const.h;           cc $(FLAGS) -c globe.c
X
Xclim.o:     clim.c const.h clim.h;     cc $(FLAGS) -c clim.c
Xheat.o:     heat.c const.h clim.h;     cc $(FLAGS) -c heat.c
Xpressure.o: pressure.c const.h clim.h; cc $(FLAGS) -c pressure.c
Xwind.o:     wind.c const.h clim.h;     cc $(FLAGS) -c wind.c
Xrain.o:     rain.c const.h clim.h;     cc $(FLAGS) -c rain.c
Xclimate.o:  climate.c const.h clim.h;  cc $(FLAGS) -c climate.c
X
Xfileio.o:   fileio.c const.h clim.h;   cc $(FLAGS) -c fileio.c
Xunix.o:     unix.c const.h;            cc $(FLAGS) -c unix.c
Xx.o:        x.c const.h clim.h;        cc $(FLAGS) -c x.c
END_OF_FILE
  if test 1309 -ne `wc -c <'./src/Makefile'`; then
    echo shar: \"'./src/Makefile'\" unpacked with wrong size!
  fi
  # end of './src/Makefile'
fi
if test -f './src/rain.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'./src/rain.c'\"
else
  echo shar: Extracting \"'./src/rain.c'\" \(7151 characters\)
  sed "s/^X//" >'./src/rain.c' <<'END_OF_FILE'
X/* This program is Copyright (c) 1991 David Allen.  It may be freely
X   distributed as long as you leave my name and copyright notice on it.
X   I'd really like your comments and feedback; send e-mail to
X   allen@viewlogic.com, or send us-mail to David Allen, 10 O'Moore
X   Avenue, Maynard, MA 01754. */
X
X/* This file contains the routines to compute rainfall. */
X
X#include "const.h"
X#include "clim.h"
X
X/* The input data arrays are l and lm, from main.c, wd, from wind.c,
X   and pr, from pressure.c.  Output arrays are rm and rn; fr and fs are
X   used as temporary storage. */
X
Xextern unsigned char l[MAXX][MAXY], lm[MAXX][MAXY], wd[MAXB][MAXX][MAXY];
Xextern unsigned char pr[MAXB][MAXX][MAXY];
Xunsigned char rn[MAXB][MAXX][MAXY];
Xstatic unsigned char fr[2][MAXX][MAXY], fs[MAXX][MAXY];
X
X
X/* The externs below are parameters defined in main.c; the ints are
X   parameters defined here. */
X
Xextern int BSIZE, XSIZE, YSIZE;
Xint MAXFETCH = 5, RAINCONST = 32, LANDEL = 10, MOUNTDEL = 32, FETCHDEL = 4;
Xint NRFDEL = 3, HEQDEL = 32, NRHEQDEL = 24, FLANKDEL = -24, PRINTRAIN = 0;
X
X
Xrainpar (s) char *s; {
X   /* This function is called by mainpar() in main.c; it simply tests input
X   parameter names to see if they are defined in this file.  Each of the
X   above ints are defined in this file.  If the input string matches here,
X   the function returns true. */
X
X   if      (CMP ("MAXFETCH"))  getlng  (&MAXFETCH,  M_RAIN);
X   else if (CMP ("RAINCONST")) getlng  (&RAINCONST, M_RAIN);
X   else if (CMP ("LANDEL"))    getlng  (&LANDEL,    M_RAIN);
X   else if (CMP ("MOUNTDEL"))  getlng  (&MOUNTDEL,  M_RAIN);
X   else if (CMP ("FETCHDEL"))  getlng  (&FETCHDEL,  M_RAIN);
X   else if (CMP ("HEQDEL"))    getlng  (&HEQDEL,    M_RAIN);
X   else if (CMP ("NRHEQDEL"))  getlng  (&NRHEQDEL,  M_RAIN);
X   else if (CMP ("FLANKDEL"))  getlng  (&FLANKDEL,  M_RAIN);
X   else if (CMP ("NRFDEL"))    getlng  (&NRFDEL,    M_RAIN);
X   else if (CMP ("PRINTRAIN")) getlng  (&PRINTRAIN, M_RAIN);
X   else return (0);
X   return (1); }
X
X
Xraincomp () {
X   /* This is the main rain computation function.  It calls the functions
X   getfetch () and getrain () to do all the work for each buffer, then
X   prints out the results if needed. */
X
X   register int buf;
X
X   for (buf=0; buf<BSIZE; buf++) {
X      status (M_RAIN, buf); checkmouse (); 
X      getfetch (buf); checkmouse (); getrain (buf); }
X
X   if (PRINTRAIN) for (buf=0; buf<BSIZE; buf++)
X      putmat ("RAIN", buf, PRINTMODE_SCALE, rn[buf], lm); }
X
X
Xraindraw (n) int n; { draw (DRAW_GREY, LINE_CORN, rn[n], lm); }
X   /* This function calls draw with the right arguments to display rain */
X
X
Xfetchinc (x, y, dest) int x, y, dest; {
X   /* This is the workhorse function for getfetch(), below.  It is called
X   several times per square.  It changes x to account for wraparound, so it
X   won't work as a macro.  If y is out of range it does nothing, else it
X   "marks" the new square in fr[dest] and increments fs to record the number
X   of times the square has been marked. */
X
X   if (x == -1) x = XSIZE-1; else if (x == XSIZE) x = 0;
X   if ((y == -1) || (y == YSIZE)) return (0);
X   fr[dest][x][y] = 1; fs[x][y]++; return (0); }
X
X
Xgetfetch (buf) int buf; {
X   /* "Fetch" is the term that describes how many squares a given wind line
X   travels over water.  It measures how moist the wind is.  The algorithm to
X   measure fetch looks like many simultaneous tree walks, where each water
X   square is a root square, and every wind edge is a tree edge.  A counter
X   for each square determines how many times that square is reached during
X   the tree walks; that is the fetch. */
X
X   register int i, j, k; int src, dest;
X
X   /* Initialize the counter fs to zero.  Array fr, which records the */
X   /* list of active edges in the walks, is set so that all ocean squares */
X   /* are active.  Also, the result array rn is cleared. */
X   for (i=0; i<XSIZE; i++) for (j=0; j<YSIZE; j++) {
X      fr[0][i][j] = l[i][j] ? 0 : 1; fs[i][j] = 0; rn[buf][i][j] = 0; }
X
X   /* Each time through the loop, each square is examined.  If it's */
X   /* active, disable the mark in the current time step (thus ensuring */
X   /* that when the buffers are flipped, the new destination is empty). */
X   /* If the square is a mountain, don't pass the mark, but instead add */
X   /* some amount to the square -- implementing rain shadows and rainy */
X   /* mountain squares.  Finally, for each of the eight cardinal */
X   /* directions, if there is wind blowing in that direction, carry a */
X   /* marker to that square using fetchinc(), above. */
X
X   for (k=0; k<MAXFETCH; k++) {
X      src = k % 2; dest = 1 - src;
X      for (i=0; i<XSIZE; i++) for (j=0; j<YSIZE; j++) if (fr[src][i][j]) {
X         fr[src][i][j] = 0;
X         if (l[i][j] == 2) rn[buf][i][j] += MOUNTDEL;
X         else switch (wd[buf][i][j]) {
X            case N|E: fetchinc (i+1, j-1, dest); break;
X            case N|W: fetchinc (i-1, j-1, dest); break;
X            case S|E: fetchinc (i+1, j+1, dest); break;
X            case S|W: fetchinc (i-1, j+1, dest); break;
X            case N:   fetchinc (i,   j-1, dest); break;
X            case S:   fetchinc (i,   j+1, dest); break;
X            case E:   fetchinc (i+1, j,   dest); break;
X            case W:   fetchinc (i-1, j,   dest); break; } } } }
X
X
X/* This macro is called several times per square by getrain(), below.  It
X   simply tests the square for several conditions: if the square is on the
X   heat equator, itcz is set to one; if the wind blows south in this square,
X   it is on the flank of a circular wind zone (and thus less rainy); the local
X   rain sum, x, is increased according to the fetch sum in the square. */
X#define RAINTEST(xx,yy) \
X   if (pr[buf][xx][yy] == PR_HEQ) itcz = 1; \
X   if (wd[buf][xx][yy] & S) flank = 1; \
X   x += (fs[xx][yy] * NRFDEL);
X
X
Xgetrain (buf) int buf; {
X   /* Once the fetch array is computed, this function looks at each square to
X   determine the amount of rainfall there.  The above macro is called five
X   times, once for the square and each of its four neighbors; this determines
X   whether the square is near the ITCZ or the flank of an air cycle.  The
X   sum of fetches for the neighbors is also determined.   Finally, each of the
X   factors is weighted and added to the rainfall value:  the local fetch value,
X   a land factor, the nearness of the heat equator, and the nearness of a
X   flank.  Note that while rn is zeroed in getfetch(), it may be increased by
X   rain falling on mountains, so it is nonzero when this function is called. */
X
X   register int i, j, x; int itcz, flank;
X
X   for (i=0; i<XSIZE; i++) for (j=0; j<YSIZE; j++) {
X      flank = 0; itcz = 0; x = rn[buf][i][j];
X      if (i < XSIZE-1) { RAINTEST (i+1, j) } else { RAINTEST (0, j) }
X      if (i) { RAINTEST (i-1, j) } else { RAINTEST (XSIZE-1, j) }
X      if (j < YSIZE-1) { RAINTEST (i, j+1) }
X      if (j) { RAINTEST (i, j-1) }
X      RAINTEST (i, j);
X
X      x += (RAINCONST + FETCHDEL * fs[i][j]);
X      if (l[i][j]) x += LANDEL;
X      if (pr[buf][i][j] == PR_HEQ) x += HEQDEL;
X      if (itcz) x += NRHEQDEL;
X      if (flank) x += FLANKDEL;
X      if (x < 0) x = 0; if (x> 255) x = 255;
X      rn[buf][i][j] = x; } }
END_OF_FILE
  if test 7151 -ne `wc -c <'./src/rain.c'`; then
    echo shar: \"'./src/rain.c'\" unpacked with wrong size!
  fi
  # end of './src/rain.c'
fi
echo shar: End of archive 1 \(of 4\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 4 archives.
    rm -f ark[1-9]isdone
else
    echo You still must unpack the following archives:
    echo "        " ${MISSING}
fi
exit 0
exit 0 # Just in case...
-- 
Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD           UUCP:     uunet!sparky!kent
Phone:    (402) 291-8300         FAX:      (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.