Menu

Tree [3e5854] master /
 History

HTTPS access


File Date Author Commit
 config 2024-06-25 Mike Romberg Mike Romberg [55579f] version -> 1.17.1
 data 2024-08-08 Mike Romberg Mike Romberg [3e5854] IceAmt -> IceAccum
 doc 2017-02-09 Mike Romberg Mike Romberg [b47cfd] link to top
 etc 2024-07-25 Mike Romberg Mike Romberg [69d07f] Increase the resolution of most sites.
 examples 2024-06-11 Mike Romberg Mike Romberg [4c77ac] use operator // when dividing by 3500 (seconds ...
 gfe 2024-08-04 Mike Romberg Mike Romberg [68ce22] Fix crash in getZeroPhrase().
 ifpServer 2024-08-04 Mike Romberg Mike Romberg [522e96] move the end time of the EditTopo grid to max i...
 libs 2024-08-08 Mike Romberg Mike Romberg [4a1b3f] IceAccum for NAM12 and GFS75.
 scripts 2024-07-01 Mike Romberg Mike Romberg [53af34] condense the server file name mangling into one...
 .gitignore 2020-04-15 Mike Romberg Mike Romberg [98b5a1] fix PointerState and add test cases for it.
 CHANGES 2024-08-06 Mike Romberg Mike Romberg [853110] Wind20ft for NAM12 and GFS75.
 Makefile 2023-11-14 Mike Romberg Mike Romberg [0add3f] pylint tweaks.
 README 2022-05-21 Mike Romberg Mike Romberg [488cd5] Make a note on the openssl-3 renegotiation config.
 Rules.make 2023-11-14 Mike Romberg Mike Romberg [ebac42] turn on a couple warning flags for swig.
 TODO 2024-08-04 Mike Romberg Mike Romberg [ad5ab9] update.
 gpl.txt 2014-01-23 Mike Romberg Mike Romberg [6953fd] add GPL

Read Me

PREREQUISITES

  The GFE builds and runs on fedora linux.  In the past it has run on a
variety of unix like platforms such as BSD, osx etc.  But it has not done so
recently.

  Examine the rpm spec file (config/gfe.spec).  The software should build
if you have all the packages mentioned in BuildRequires.  The packages listed
in Requires will be needed at runtime.  All packages refer to the standard
fedora versions.  Even if you don't plan on using the rpms, it might be easier
to use them as a reference for dependent packages.


BUILDING

  From the top directory after unpacking the sources:

  - "make links"  This creates some symlinks that are used to find
                  header files.  You only need to run it once.  (Well once
                  after each time header files are created or deleted).

  - "make"  or "make -j 4"  Builds all the libraries and executables.  The
                            GFE makefiles support parallel builds so you can
                            use the -j switch to enable more parallel tasks.

                            The makefiles use gcc by default.  However one can
                            invoke the build using 'make COMP=clang' to use the
                            clang++ compiler.

RUNNING FROM THE DEV ENVIRONMENT

  The GFE can run from the development tree.  Follow these steps:

  - "make dev"  This will create a small subtree called release under the
                top level directory.  It is mostly symlinks to create an
                environment that can be used to run the executables.  All
                the python files and C++ executables are run straight from
                the main tree. So, no install needs to be done.  This step just
                needs to be done once.  Then additional "make" commands can be
                run as development is done.

   - "cd release/[s]bin"  These are the main directories to run GFE
                          programs from.

      "./ifpServer -t"  Starts the server part of the GFE.  The -t switch
                        causes the server to not become a daemon and stay
                        attached to the console.  Without the -t switch it
                        daemonizes and you can then use "./stopIFPServer"
                        to shut it down.

      "./gfe"           Runs a GFE client process.  You can start as many
                        clients as you like.

      "./gfei"          The gfe interpreter.  A python interpreter which
                        contains gfe specific code linked into it.  All utility
                        programs mentioned in the documentation are run with
                        this command.

INSTALL

  "make install"  This will install the GFE using the default prefix of
                  /usr/local.  It is recomended that you use some other
      OR          prefix as there is no uninstall target.  So somthing
                  like:

  "make install prefix=/usr/local/gfe"  will allow for easier removal.

  Once installed the server start script is sbin/ifpServer and the gfe is
/bin/gfe

  If you wish to pull data from the NOAA NOMADS server make the directory
/scratch/data and ensure it is writeable by the user running the command:
  gfei -m ifp.ingest

  This will poll for and ingest the nam and (optionally) gfs models.

RPMS

  The config/gfe.spec file can be used to build rpms for the GFE.  Once built
and installed they will use the system prefix and hooks into systemd will be
setup for the server.  The server is set to run under a non privladged account
called "gfe".  The service for ifpServer will need to be enabled:

  as root:
     systemctl enable ifpServer.service # to enable the service at startup
     systemctl start ifpServer.service  # to start it up now.


Ingesting data

  The gfe now has a new module to download and decode data for the NAM and
DGEX weather models from the NOAA NOMADS server.  This support is new and
considered alpha.  To ingest this data:

  - Create the directory /scratch and make it readable/writeable by the user
    running the ifpServer.  Creating it with the same permissions as /tmp
    should work fine.

  - Run the ingest code "gfei -m ifp.ingest"

  After running the gfe ingest code will put "D2D" style netcdf files under
the /scratch/data directory.

  The GFS model is now working again since pygrib has been patched to work with
large (>2gb) files.  It is not enabled by default.  To ingest GFS use the new
--models command line option to ifp.ingest like so:

  gfei -m ifp.ingest --models nam,dgex,gfs

  NOTE: Fedora-36/openssl-3 disables support for insecure legacy
        renegotiation as this was fixed 10 years ago.  The NCEP servers
        do not have fix yet.  So, the connections will fail.  There are
        two (feasable) options:

        1 - Talk NCEP into upgrading their server (good luck with that).

        2 - Re-enable the legacy support (system-wide) by adding this
            line to /etc/pki/tls/openssl.cnf:

            [ crypto_policy ]
+           Options = UnsafeLegacyRenegotiation
            .include = /etc/crypto-policies/back-ends/opensslcnf.config


LICENSE

  All changes since the initial version of this repository are released
under terms of the GPL (see gpl.txt).