[DebianGIS-dev] [SCM] saga branch, master, updated. b8230fab024e83611721aff588e712ea1db1c3e8
Johan Van de Wauw
johan.vandewauw at gmail.com
Thu Mar 18 08:47:36 UTC 2010
The following commit has been merged in the master branch:
commit c6b4af7ee67ff16511535ed67596ad1ff0974c36
Author: Johan Van de Wauw <johan.vandewauw at gmail.com>
Date: Thu Mar 18 08:05:32 2010 +0100
Remove sim_fire_spreading (not DFSG free)
diff --git a/src/modules_simulation/Makefile.am b/src/modules_simulation/Makefile.am
index 71a438b..39e85c9 100644
--- a/src/modules_simulation/Makefile.am
+++ b/src/modules_simulation/Makefile.am
@@ -1 +1 @@
-SUBDIRS = hydrology fire ecosystems cellular_automata
+SUBDIRS = hydrology ecosystems cellular_automata
diff --git a/src/modules_simulation/Makefile.in b/src/modules_simulation/Makefile.in
index a429e4b..cade675 100644
--- a/src/modules_simulation/Makefile.in
+++ b/src/modules_simulation/Makefile.in
@@ -203,7 +203,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = hydrology fire ecosystems cellular_automata
+SUBDIRS = hydrology ecosystems cellular_automata
all: all-recursive
.SUFFIXES:
diff --git a/src/modules_simulation/fire/Makefile.am b/src/modules_simulation/fire/Makefile.am
deleted file mode 100644
index 89a4b6f..0000000
--- a/src/modules_simulation/fire/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = sim_fire_spreading
diff --git a/src/modules_simulation/fire/Makefile.in b/src/modules_simulation/fire/Makefile.in
deleted file mode 100644
index 2027369..0000000
--- a/src/modules_simulation/fire/Makefile.in
+++ /dev/null
@@ -1,556 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/modules_simulation/fire
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-POW_LIB = @POW_LIB@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = sim_fire_spreading
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules_simulation/fire/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/modules_simulation/fire/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic clean-libtool \
- ctags ctags-recursive distclean distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/modules_simulation/fire/sim_fire_spreading/Forecasting.cpp b/src/modules_simulation/fire/sim_fire_spreading/Forecasting.cpp
deleted file mode 100644
index 23f43c7..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/Forecasting.cpp
+++ /dev/null
@@ -1,663 +0,0 @@
-/*******************************************************************************
- Forecasting.cpp
- Copyright (C) Victor Olaya
-
- 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 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, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*******************************************************************************/
-
-//#include "../../../modules/grid/grid_tools/Grid_Gaps.h"
-
-#include "Forecasting.h"
-
-#include <time.h>
-
-#define MS2FTMIN (60.0 / 0.3048)
-#define FTMIN2MMIN 0.3048
-#define MIN_RATIO_BURNT_AREA 2.
-
-CForecasting::CForecasting(void){
-
- Set_Name (_TL("Fire Risk Analysis"));
- Set_Author (_TL("(c) 2004 Victor Olaya"));
- Set_Description (_TW(
- "Fire risk analysis based on the BEHAVE fire modeling system "
- "supported by the U.S. Forest Service, Fire and Aviation Management. "
- "Find more information on BEHAVE at the <i>Public Domain Software for the Wildland Fire Community</i> at "
- "<a target=\"_blank\" href=\"http://fire.org\">http://fire.org</a>\n"
- "\n"
- "Reference:\n"
- "Andrews, P.L. (1986): BEHAVE: Fire Behavior Prediction and Fuel Modeling System - "
- "Burn Subsystem, Part 1. U.S. Department of Agriculture, Forest Service General, Technical Report INT-194. "
- ));
-
- Parameters.Add_Grid(NULL,
- "DEM",
- _TL("DEM"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "FUEL",
- _TL("Fuel Model"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "WINDSPD",
- _TL("Wind Speed"),
- _TL("Wind Speed (m/s)"),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "WINDDIR",
- _TL("Wind Direction"),
- _TL("Wind Direction (degrees clockwise from north)"),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "M1H",
- _TL("Dead Fuel Moisture 1H"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "M10H",
- _TL("Dead Fuel Moisture 10H"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "M100H",
- _TL("Dead Fuel Moisture 100H"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "MHERB",
- _TL("Herbaceous Fuel Moisture"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "MWOOD",
- _TL("Wood Fuel Moisture"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "VALUE",
- _TL("Value"),
- _TL(""),
- PARAMETER_INPUT_OPTIONAL);
-
- Parameters.Add_Grid(NULL,
- "BASEPROB",
- _TL("Base Probability"),
- _TL(""),
- PARAMETER_INPUT_OPTIONAL);
-
- Parameters.Add_Grid(NULL,
- "DANGER",
- _TL("Danger"),
- _TL(""),
- PARAMETER_OUTPUT);
-
- Parameters.Add_Grid(NULL,
- "COMPPROB",
- _TL("Compound Probability"),
- _TL(""),
- PARAMETER_OUTPUT);
-
- Parameters.Add_Grid(NULL,
- "PRIORITY",
- _TL("Priority Index"),
- _TL(""),
- PARAMETER_OUTPUT);
-
- Parameters.Add_Value(NULL,
- "MONTECARLO",
- _TL("Number of Events"),
- _TL("N\xc3\xbamero of Monte-Carlo events"),
- PARAMETER_TYPE_Int,
- 1000,
- 1.,
- true);
-
- Parameters.Add_Value(NULL,
- "INTERVAL",
- _TL("Fire Length"),
- _TL("Fire Length (min)"),
- PARAMETER_TYPE_Double,
- 100,
- 1.,
- true);
-
-
-}//constructor
-
-CForecasting::~CForecasting(void)
-{
-}//destructor
-
-bool CForecasting::On_Execute(void){
-
- AssignParameters();
- CalculateGrids();
-
- delete m_pSlopeGrid;
- delete m_pAspectGrid;
-
- return true;
-
-}//method
-
-bool CForecasting::AssignParameters(){
-
- int x,y;
-
- m_pDEM = Parameters("DEM")->asGrid();
- m_pFuelGrid = Parameters("FUEL")->asGrid();
- m_pWindDirGrid = Parameters("WINDDIR")->asGrid();
- m_pWindSpdGrid = Parameters("WINDSPD")->asGrid();
- m_pM1Grid = Parameters("M1H")->asGrid();
- m_pM10Grid = Parameters("M10H")->asGrid();
- m_pM100Grid = Parameters("M100H")->asGrid();
- m_pMHerbGrid = Parameters("MHERB")->asGrid();
- m_pMWoodGrid = Parameters("MWOOD")->asGrid();
- m_pDangerGrid = Parameters("DANGER")->asGrid();
- m_pValueGrid = Parameters("VALUE")->asGrid();
- m_pBaseProbabilityGrid = Parameters("BASEPROB")->asGrid();
- m_pCompoundProbabilityGrid = Parameters("COMPPROB")->asGrid();
- m_pPriorityIndexGrid = Parameters("PRIORITY")->asGrid();
- m_iInterval = Parameters("INTERVAL")->asInt();
- m_iNumEvents = Parameters("MONTECARLO")->asInt();
-
- /* create a standard fuel model catalog and a flame length table. */
- m_Catalog = Fire_FuelCatalogCreateStandard("Standard", 13);
- Fire_FlameLengthTable(m_Catalog, 500, 0.1);
-
- if (!m_pBaseProbabilityGrid){
- m_pBaseProbabilityGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
- m_pBaseProbabilityGrid->Assign(1);
- }//if
- if (!m_pValueGrid){
- m_pValueGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
- m_pValueGrid->Assign(1);
- }//if
-
- //substitute no-data values
- for(y=0; y<Get_NY() && Set_Progress(y); y++){
- for(x=0; x<Get_NX(); x++){
-
- if (m_pWindSpdGrid->is_NoData(x, y)){
- m_pWindSpdGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pWindDirGrid->is_NoData(x, y)){
- m_pWindDirGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pM1Grid->is_NoData(x, y)){
- m_pM1Grid->Set_Value(x, y, 0.);
- }//if
- if (m_pM10Grid->is_NoData(x, y)){
- m_pM10Grid->Set_Value(x, y, 0.);
- }//if
- if (m_pM100Grid->is_NoData(x, y)){
- m_pM100Grid->Set_Value(x, y, 0.);
- }//if
- if (m_pMHerbGrid->is_NoData(x, y)){
- m_pMHerbGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pMWoodGrid->is_NoData(x, y)){
- m_pMWoodGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pBaseProbabilityGrid->is_NoData(x, y)){
- m_pBaseProbabilityGrid->Set_Value(x, y, 0.);
- }//if
-
- }//for
- }//for
-
-
- //-----------------------------------------------------
- // calculate slope and aspect using CSG_Grid class'
- // built-in function (after Zevenbergen & Thorne)...
-
- m_pSlopeGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
- m_pAspectGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
-
- for(y=0; y<Get_NY() && Set_Progress(y); y++)
- {
- for(x=0; x<Get_NX(); x++)
- {
- double slope, aspect;
-
- if( m_pDEM->Get_Gradient(x, y, slope, aspect) )
- {
- m_pSlopeGrid ->Set_Value(x, y, slope);
- m_pAspectGrid ->Set_Value(x, y, aspect);
- }
- else
- {
- m_pSlopeGrid ->Set_NoData(x, y);
- m_pAspectGrid ->Set_NoData(x, y);
- }
- }
- }
-
-
- //-----------------------------------------------------
- m_pTimeGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
-
- m_pTimeGrid->Assign((double)0);
- m_pDangerGrid->Assign((double)0);
- m_pCompoundProbabilityGrid->Assign((double)0);
-
- //m_pPriorityIndexGrid = Get_SafeNew_Grid(m_pDEM, SG_DATATYPE_Double);
-
- return true;
-
-}//method
-
-
-void CForecasting::CalculateGrids(){
-
- int x,y;
- int i;
- int iRecommendedNumFires;
- double dDanger;
- double dTotalBurntArea = 0;
- CSG_String sMessage;
-
- m_CentralPoints .Clear();
- m_AdjPoints .Clear();
-
- srand(time(NULL));
-
- Process_Set_Text(_TL("Calculating danger..."));
- for(i=0; i<m_iNumEvents && Set_Progress(i, m_iNumEvents); i++){
- x = rand() % (m_pDEM->Get_NX()-1);
- y = rand() % (m_pDEM->Get_NY()-1);
- m_CentralPoints.Clear();
- m_CentralPoints.Add(x,y);
- m_pTimeGrid->Set_Value(x,y,0.0);
- dDanger = CalculateFireSpreading();
- dTotalBurntArea += dDanger;
- m_pDangerGrid->Set_Value(x, y, dDanger);
- }//for
-
- m_CentralPoints .Clear();
- m_AdjPoints .Clear();
-
- m_pDangerGrid->Set_NoData_Value(0.0);
- m_pDangerGrid->Set_Unit(_TL("m2/h"));
-
- Process_Set_Text(_TL("Closing Gaps..."));
-
- if( !Gaps_Close(m_pDangerGrid) )
- {
- return;
- }//if
-
- for (y=0; y<Get_NY(); y++){
- for (x=0; x<Get_NX(); x++){
- m_pCompoundProbabilityGrid->Set_Value(x,y,
- m_pCompoundProbabilityGrid->asFloat(x,y) / (float)m_iNumEvents);
- m_pPriorityIndexGrid->Set_Value(x, y, m_pCompoundProbabilityGrid->asFloat(x,y)*
- m_pDangerGrid->asFloat(x,y));
- }//for
- }//for
-
- float dRatio = (float)(dTotalBurntArea / (m_pDEM->Get_Cellsize() * m_pDEM->Get_Cellsize()));
- if (dRatio < MIN_RATIO_BURNT_AREA){
- iRecommendedNumFires =(int)((float) m_iNumEvents / dRatio * (float) MIN_RATIO_BURNT_AREA);
- sMessage.Printf(
- _TL("** Warning : Number of events might not be representative.\nMinimum number recommended: ")
- );
- sMessage += SG_Get_String(iRecommendedNumFires, 0);
- sMessage += SG_T("\n");
- Message_Add(sMessage.c_str());
- }//if
-
-}//method
-
-double CForecasting::CalculateFireSpreading(){
-
- int x,y;
- int x2,y2;
- int n;
- bool bReturn = false;
- /* neighbor's address*/ /* N NE E SE S SW W NW */
- static int nX[8] = { 0, 1, 1, 1, 0, -1, -1, -1};
- static int nY[8] = { 1, 1, 0, -1, -1, -1, 0, 1};
- double nDist[8]; /* distance to each neighbor */
- double nAzm[8]; /* compass azimuth to each neighbor (0=N) */
- size_t modelNumber; /* fuel model number at current cell */
- double moisture[6]; /* fuel moisture content at current cell */
- double dSpreadRate; /* spread rate in direction of neighbor */
- double dSpreadTime; /* time to spread from cell to neighbor */
- double dIgnTime; /* time neighbor is ignited by current cell */
- double dWindSpd;
- double dBurntValue = 0;
- double dProbability;
-
- m_pTimeGrid->Assign(0.0);
-
- for (n=0; n<8; n++){
- nDist[n] = sqrt ( nX[n] * m_pDEM->Get_Cellsize() * nX[n] * m_pDEM->Get_Cellsize()
- + nY[n] * m_pDEM->Get_Cellsize() * nY[n] * m_pDEM->Get_Cellsize() );
- nAzm[n] = n * 45.;
- }//for
-
- x = m_CentralPoints.Get_X(0);
- y = m_CentralPoints.Get_Y(0);
- dProbability = (float)(rand()) / (float)(RAND_MAX);
-
- if (m_pBaseProbabilityGrid->asFloat(x,y) < dProbability){
- return 0;
- }//if
-
- while (m_CentralPoints.Get_Count()!=0){
-
- for (int iPt=0; iPt<m_CentralPoints.Get_Count();iPt++){
-
- x = m_CentralPoints.Get_X(iPt);
- y = m_CentralPoints.Get_Y(iPt);
-
- if (!m_pDEM->is_NoData(x,y) && !m_pFuelGrid->is_NoData(x,y)){
-
- modelNumber = (size_t) m_pFuelGrid->asInt(x, y);
- moisture[0] = m_pM1Grid->asFloat(x, y);
- moisture[1] = m_pM10Grid->asFloat(x, y);
- moisture[2] = m_pM100Grid->asFloat(x, y);
- moisture[3] = m_pM100Grid->asFloat(x, y);
- moisture[4] = m_pMHerbGrid->asFloat(x, y);;
- moisture[5] = m_pMWoodGrid->asFloat(x, y);
- dWindSpd = m_pWindSpdGrid->asFloat(x,y) * MS2FTMIN;
- Fire_SpreadNoWindNoSlope(m_Catalog, modelNumber, moisture);
- Fire_SpreadWindSlopeMax(m_Catalog, modelNumber, dWindSpd,
- m_pWindDirGrid->asFloat(x,y), tan(m_pSlopeGrid->asFloat(x,y)),
- m_pAspectGrid->asFloat(x,y, true));
-
- for (n=0; n<8; n++){
- x2 = x + nX[n];
- y2 = y + nY[n];
- if (m_pTimeGrid->is_InGrid(x2,y2,false)){
- Fire_SpreadAtAzimuth(m_Catalog, modelNumber, nAzm[n], FIRE_NONE);
- dSpreadRate = Fuel_SpreadAny(m_Catalog, modelNumber); // in ft/min (awkward...)
- dSpreadRate *= FTMIN2MMIN; //a bit better...
- if (dSpreadRate > Smidgen){
- dSpreadTime = nDist[n] / dSpreadRate;
- dIgnTime = m_pTimeGrid->asDouble(x,y) + dSpreadTime;
- if (dIgnTime < m_iInterval){
- if (m_pTimeGrid->asDouble(x2,y2) == 0.0
- || m_pTimeGrid->asDouble(x2, y2)>dIgnTime){
- if (m_pTimeGrid->asDouble(x2, y2)==0.0){
- dBurntValue += m_pValueGrid->asDouble(x2, y2);
- m_pCompoundProbabilityGrid->Set_Value(x2,y2,
- m_pCompoundProbabilityGrid->asFloat(x2,y2) + 1);
- }//if
- m_pTimeGrid->Set_Value(x2, y2, dIgnTime);
- m_AdjPoints.Add(x2,y2);
- }//if
- }//if
- }//if
- }//if
- }//for
- }//if
- }//for
-
- m_CentralPoints.Clear();
- for (int i=0; i<m_AdjPoints.Get_Count(); i++){
- x= m_AdjPoints.Get_X(i);
- y = m_AdjPoints.Get_Y(i);
- m_CentralPoints.Add(x, y);
- }//for
- m_AdjPoints.Clear();
-
- }//while
-
- return dBurntValue;
-
-}//method
-
-
-///////////////////////////////////////////////////////////
-// //
-// //
-// //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-bool CForecasting::Gaps_Close(CSG_Grid *pInput)
-{
- int iStep, iStart, n;
- double max, Threshold;
- CSG_Grid *pResult, *pTension_Keep, *pTension_Temp;
-
- //-----------------------------------------------------
- pResult = pInput;
- pInput = SG_Create_Grid(pInput);
- pInput->Assign(pResult);
-
- //-----------------------------------------------------
- Threshold = 0.1;
-
- n = Get_NX() > Get_NY() ? Get_NX() : Get_NY();
- iStep = 0;
- do { iStep++; } while( pow(2.0, iStep + 1) < n );
- iStart = (int)pow(2.0, iStep);
-
- pTension_Keep = new CSG_Grid(pResult, SG_DATATYPE_Byte);
- pTension_Temp = new CSG_Grid(pResult);
-
- pResult->Assign_NoData();
-
- for(iStep=iStart; iStep>=1; iStep/=2)
- {
- Gaps_Tension_Init(iStep, pTension_Temp, pTension_Keep, pResult, pInput);
-
- do
- {
- max = Gaps_Tension_Step(iStep, pTension_Temp, pTension_Keep, pResult);
- }
- while( max > Threshold && Process_Get_Okay(true) );
- }
-
- //-----------------------------------------------------
- delete(pTension_Keep);
- delete(pTension_Temp);
- delete(pInput);
-
- return( true );
-}
-
-//---------------------------------------------------------
-void CForecasting::Gaps_Tension_Init(int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult, CSG_Grid *pInput)
-{
- int x, y, i, ix, iy, nx, ny, nz;
- double z;
-
- //-----------------------------------------------------
- // 1. Channels...
-
- pTension_Temp->Assign_NoData();
- pTension_Keep->Assign();
-
- for(y=0; y<Get_NY(); y+=iStep)
- {
- ny = y + iStep < Get_NY() ? y + iStep : Get_NY();
-
- for(x=0; x<Get_NX(); x+=iStep)
- {
- if( !pInput->is_NoData(x, y) )
- {
- pTension_Temp->Set_Value(x, y, pInput->asDouble(x, y) );
- pTension_Keep->Set_Value(x, y, 1.0);
- }
- else
- {
- nx = x + iStep < Get_NX() ? x + iStep : Get_NX();
- nz = 0;
- z = 0.0;
-
- for(iy=y; iy<ny; iy++)
- {
- for(ix=x; ix<nx; ix++)
- {
- if( pInput->is_InGrid(ix, iy) )
- {
- z += pInput->asDouble(ix, iy);
- nz++;
- }
- }
- }
-
- if( nz > 0 )
- {
- pTension_Temp->Set_Value(x, y, z / (double)nz );
- pTension_Keep->Set_Value(x, y, 1.0);
- }
- }
- }
- }
-
- //-----------------------------------------------------
- // 2. Previous Iteration...
-
- for(y=0; y<Get_NY(); y+=iStep)
- {
- for(x=0; x<Get_NX(); x+=iStep)
- {
- if( pTension_Keep->asByte(x, y) == false )
- {
- if( !pResult->is_NoData(x, y) )
- {
- pTension_Temp->Set_Value(x, y, pResult->asDouble(x, y));
- }
- else
- {
- nz = 0;
- z = 0.0;
-
- for(i=0; i<8; i++)
- {
- ix = x + iStep * Get_System()->Get_xTo(i);
- iy = y + iStep * Get_System()->Get_yTo(i);
-
- if( pResult->is_InGrid(ix, iy) )
- {
- z += pResult->asDouble(ix, iy);
- nz++;
- }
- }
-
- if( nz > 0.0 )
- {
- pTension_Temp->Set_Value(x, y, z / (double)nz);
- }
- else
- {
- pTension_Temp->Set_Value(x, y, pInput->asDouble(x, y));
- }
- }
- }
- }
- }
-
- //-----------------------------------------------------
- // 3. ...
-
- pResult->Assign(pTension_Temp);
-}
-
-//---------------------------------------------------------
-double CForecasting::Gaps_Tension_Step(int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult)
-{
- int x, y;
- double d, dMax;
-
- dMax = 0.0;
-
- for(y=0; y<Get_NY(); y+=iStep)
- {
- for(x=0; x<Get_NX(); x+=iStep)
- {
- if( pTension_Keep->asByte(x, y) == false )
- {
- d = Gaps_Tension_Change(x, y, iStep, pResult);
-
- pTension_Temp->Set_Value(x, y, d);
-
- d = fabs(d - pResult->asDouble(x, y));
-
- if( d > dMax )
- {
- dMax = d;
- }
- }
- }
- }
-
- for(y=0; y<Get_NY(); y+=iStep)
- {
- for(x=0; x<Get_NX(); x+=iStep)
- {
- if( pTension_Keep->asByte(x, y) == false )
- {
- pResult->Set_Value(x, y, pTension_Temp->asDouble(x, y));
- }
- }
- }
-
- return( dMax );
-}
-
-//---------------------------------------------------------
-double CForecasting::Gaps_Tension_Change(int x, int y, int iStep, CSG_Grid *pResult)
-{
- int i, ix, iy;
- double n, d, dz;
-
- for(i=0, d=0.0, n=0.0; i<8; i++)
- {
- ix = x + iStep * Get_System()->Get_xTo(i);
- iy = y + iStep * Get_System()->Get_yTo(i);
-
- if( pResult->is_InGrid(ix, iy) )
- {
- dz = 1.0 / Get_System()->Get_UnitLength(i);
- d += dz * pResult->asDouble(ix, iy);
- n += dz;
- }
- }
-
- if( n > 0.0 )
- {
- d /= n;
-
- return( d );
- }
-
- return( pResult->asDouble(x, y) );
-}
-
-
-///////////////////////////////////////////////////////////
-// //
-// //
-// //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
diff --git a/src/modules_simulation/fire/sim_fire_spreading/Forecasting.h b/src/modules_simulation/fire/sim_fire_spreading/Forecasting.h
deleted file mode 100644
index 952d44e..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/Forecasting.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- Forecasting.h
- Copyright (C) Victor Olaya
-
- 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 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, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*******************************************************************************/
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#include "MLB_Interface.h"
-#include "fireLib.h"
-
-class CForecasting : public CSG_Module_Grid {
-
-private:
-
- CSG_Grid *m_pDEM;
- CSG_Grid *m_pWindSpdGrid; /* ptr to wind speed map (m/s) */
- CSG_Grid *m_pWindDirGrid; /* ptr to wind direction map (deg from north) */
- CSG_Grid *m_pM1Grid; /* ptr to 1-hr dead fuel moisture map */
- CSG_Grid *m_pM10Grid; /* ptr to 10-hr dead fuel moisture map */
- CSG_Grid *m_pM100Grid; /* ptr to 100-hr dead fuel moisture map */
- CSG_Grid *m_pMHerbGrid; /* ptr to live herbaceous fuel moisture map */
- CSG_Grid *m_pMWoodGrid; /* ptr to live stem fuel moisture map */
- CSG_Grid *m_pFuelGrid; /* ptr to fuel model map */
- CSG_Grid *m_pValueGrid; /* ptr to cell value map */
-
- CSG_Grid *m_pDangerGrid; /* ptr to danger map (in burnt m2 / h) */
- CSG_Grid *m_pBaseProbabilityGrid;
- CSG_Grid *m_pCompoundProbabilityGrid;
-
- CSG_Grid *m_pPriorityIndexGrid;
-
- CSG_Grid *m_pSlopeGrid; /* ptr to slope map (rise/reach) */
- CSG_Grid *m_pAspectGrid; /* ptr to aspect map (degrees from north) */
-
- CSG_Grid *m_pTimeGrid;
-
- FuelCatalogPtr m_Catalog; /* fuel catalog handle */
-
- CSG_Points_Int m_CentralPoints;
- CSG_Points_Int m_AdjPoints;
-
- int m_iInterval;
- int m_iNumEvents;
-
- bool AssignParameters();
- void CalculateGrids();
- double CalculateFireSpreading();
-
- bool Gaps_Close (CSG_Grid *pInput);
- void Gaps_Tension_Init (int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult, CSG_Grid *pInput);
- double Gaps_Tension_Step (int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult);
- double Gaps_Tension_Change (int x, int y, int iStep, CSG_Grid *pResult);
-
-
-public:
-
- CForecasting(void);
- virtual ~CForecasting(void);
-
-protected:
-
- virtual bool On_Execute(void);
-
-};
-
diff --git a/src/modules_simulation/fire/sim_fire_spreading/MLB_Interface.cpp b/src/modules_simulation/fire/sim_fire_spreading/MLB_Interface.cpp
deleted file mode 100644
index 9bb57c4..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/MLB_Interface.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-
-///////////////////////////////////////////////////////////
-// //
-// SAGA //
-// //
-// System for an Automated Geo-Scientific Analysis //
-// //
-// Module Library: //
-// Fire_Spreading //
-// //
-//-------------------------------------------------------//
-// //
-// MLB_Interface.cpp //
-// //
-// Copyright (C) 2003 by //
-// Olaf Conrad //
-// //
-//-------------------------------------------------------//
-// //
-// This file is part of 'SAGA - System for an Automated //
-// Geo-Scientific Analysis'. SAGA 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; version 2 of the License. //
-// //
-// SAGA 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, //
-// write to the Free Software Foundation, Inc., //
-// 59 Temple Place - Suite 330, Boston, MA 02111-1307, //
-// USA. //
-// //
-//-------------------------------------------------------//
-// //
-// e-mail: volaya at saga-gis.org //
-// //
-// contact: Victor Olaya //
-// Spain //
-// //
-///////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////
-// //
-// The Module Link Library Interface //
-// //
-///////////////////////////////////////////////////////////
-
-#include "MLB_Interface.h"
-
-const SG_Char * Get_Info(int i)
-{
- switch( i )
- {
- case MLB_INFO_Name: default:
- return( _TL("Simulation - Fire Spreading Analysis") );
-
- case MLB_INFO_Author:
- return( _TL("Victor Olaya (c) 2004") );
-
- case MLB_INFO_Description:
- return( _TW(
- "Fire spreading analyses based on the BEHAVE fire modeling system "
- "supported by the U.S. Forest Service, Fire and Aviation Management. "
- "Find more information on BEHAVE at the <i>Public Domain Software for the Wildland Fire Community</i> at "
- "<a target=\"_blank\" href=\"http://fire.org\">http://fire.org</a>\n"
- "\n"
- "Reference:\n"
- "Andrews, P.L. (1986): BEHAVE: Fire Behavior Prediction and Fuel Modeling System - "
- "Burn Subsystem, Part 1. U.S. Department of Agriculture, Forest Service General, Technical Report INT-194. "
- ));
-
- case MLB_INFO_Version:
- return( SG_T("1.0") );
-
- case MLB_INFO_Menu_Path:
- return( _TL("Simulation|Fire Spreading") );
- }
-}
-
-#include "Simulate.h"
-#include "Forecasting.h"
-
-CSG_Module * Create_Module(int i)
-{
-
- CSG_Module *pModule;
-
- switch( i )
- {
- case 0:
- pModule = new CForecasting;
- break;
-
- case 1:
- pModule = new CSimulate;
- break;
-
- default:
- pModule = NULL;
- break;
- }
-
- return( pModule );
-}
-
-
-///////////////////////////////////////////////////////////
-// //
-// //
-// //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-//{{AFX_SAGA
-
- MLB_INTERFACE
-
-//}}AFX_SAGA
diff --git a/src/modules_simulation/fire/sim_fire_spreading/MLB_Interface.h b/src/modules_simulation/fire/sim_fire_spreading/MLB_Interface.h
deleted file mode 100644
index 13eb7f2..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/MLB_Interface.h
+++ /dev/null
@@ -1,69 +0,0 @@
-
-///////////////////////////////////////////////////////////
-// //
-// SAGA //
-// //
-// System for Automated Geoscientific Analyses //
-// //
-// Module Library: //
-// Terrain_Analysis //
-// //
-//-------------------------------------------------------//
-// //
-// MLB_Interface.h //
-// //
-// Copyright (C) 2003 by //
-// Olaf Conrad //
-// //
-//-------------------------------------------------------//
-// //
-// This file is part of 'SAGA - System for Automated //
-// Geoscientific Analyses'. SAGA 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; version 2 of the License. //
-// //
-// SAGA 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, //
-// write to the Free Software Foundation, Inc., //
-// 59 Temple Place - Suite 330, Boston, MA 02111-1307, //
-// USA. //
-// //
-//-------------------------------------------------------//
-// //
-// contact: Olaf Conrad //
-// Institute of Geography //
-// University of Goettingen //
-// Goldschmidtstr. 5 //
-// 37077 Goettingen //
-// Germany //
-// //
-// e-mail: oconrad at saga-gis.org //
-// //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-
-
-///////////////////////////////////////////////////////////
-// //
-// Include the SAGA-API here //
-// //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#ifndef HEADER_INCLUDED__MLB_INTERFACE_H
-#define HEADER_INCLUDED__MLB_INTERFACE_H
-
-//---------------------------------------------------------
-#include <saga_api/saga_api.h>
-
-
-//---------------------------------------------------------
-#endif // #ifndef HEADER_INCLUDED__MLB_INTERFACE_H
diff --git a/src/modules_simulation/fire/sim_fire_spreading/Makefile.am b/src/modules_simulation/fire/sim_fire_spreading/Makefile.am
deleted file mode 100644
index ed08c64..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# $Id: Makefile.am,v 1.1 2008/03/07 14:33:39 oconrad Exp $
-#
-if DEBUG
-DBGFLAGS = -g -DDEBUG
-endif
-if SAGA_UNICODE
-UC_DEFS = -D_SAGA_UNICODE
-endif
-DEF_SAGA = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD
-CXX_INCS = -I$(top_srcdir)/src/saga_core -I$(top_srcdir)/src/modules/grid/grid_tools
-AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS)
-AM_LDFLAGS = -fPIC -shared -avoid-version
-pkglib_LTLIBRARIES = libsim_fire_spreading.la
-libsim_fire_spreading_la_SOURCES =\
-fireLib.c\
-Forecasting.cpp\
-MLB_Interface.cpp\
-Simulate.cpp\
-fireLib.h\
-Forecasting.h\
-MLB_Interface.h\
-Simulate.h
-
-libsim_fire_spreading_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
-
diff --git a/src/modules_simulation/fire/sim_fire_spreading/Makefile.in b/src/modules_simulation/fire/sim_fire_spreading/Makefile.in
deleted file mode 100644
index 1f4848f..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/Makefile.in
+++ /dev/null
@@ -1,573 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/modules_simulation/fire/sim_fire_spreading
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkglibdir)"
-LTLIBRARIES = $(pkglib_LTLIBRARIES)
-libsim_fire_spreading_la_DEPENDENCIES = \
- $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
-am_libsim_fire_spreading_la_OBJECTS = fireLib.lo Forecasting.lo \
- MLB_Interface.lo Simulate.lo
-libsim_fire_spreading_la_OBJECTS = \
- $(am_libsim_fire_spreading_la_OBJECTS)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libsim_fire_spreading_la_SOURCES)
-DIST_SOURCES = $(libsim_fire_spreading_la_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-POW_LIB = @POW_LIB@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-#
-# $Id: Makefile.am,v 1.1 2008/03/07 14:33:39 oconrad Exp $
-#
- at DEBUG_TRUE@DBGFLAGS = -g -DDEBUG
- at SAGA_UNICODE_TRUE@UC_DEFS = -D_SAGA_UNICODE
-DEF_SAGA = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD
-CXX_INCS = -I$(top_srcdir)/src/saga_core -I$(top_srcdir)/src/modules/grid/grid_tools
-AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS)
-AM_LDFLAGS = -fPIC -shared -avoid-version
-pkglib_LTLIBRARIES = libsim_fire_spreading.la
-libsim_fire_spreading_la_SOURCES = \
-fireLib.c\
-Forecasting.cpp\
-MLB_Interface.cpp\
-Simulate.cpp\
-fireLib.h\
-Forecasting.h\
-MLB_Interface.h\
-Simulate.h
-
-libsim_fire_spreading_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cpp .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules_simulation/fire/sim_fire_spreading/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/modules_simulation/fire/sim_fire_spreading/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
- @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
- }
-
-uninstall-pkglibLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
- done
-
-clean-pkglibLTLIBRARIES:
- -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
- @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libsim_fire_spreading.la: $(libsim_fire_spreading_la_OBJECTS) $(libsim_fire_spreading_la_DEPENDENCIES)
- $(CXXLINK) -rpath $(pkglibdir) $(libsim_fire_spreading_la_OBJECTS) $(libsim_fire_spreading_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Forecasting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MLB_Interface.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Simulate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fireLib.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-.cpp.o:
- at am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
- for dir in "$(DESTDIR)$(pkglibdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-pkglibLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pkglibLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pkglibLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pkglibLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pkglibLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/modules_simulation/fire/sim_fire_spreading/Simulate.cpp b/src/modules_simulation/fire/sim_fire_spreading/Simulate.cpp
deleted file mode 100644
index f425b48..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/Simulate.cpp
+++ /dev/null
@@ -1,360 +0,0 @@
-/*******************************************************************************
- Simulate.cpp
- Copyright (C) Victor Olaya
-
- 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 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, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*******************************************************************************/
-
-#include "Simulate.h"
-
-#define MS2FTMIN (60.0 / 0.3048)
-#define FTMIN2MMIN 0.3048
-#define BTU2KCAL 0.252164401
-#define FT2M 0.3048
-#define NO_TIME_LIMIT -1
-#define THRESHOLD_FOR_DIFFERENCE 0.1
-
-CSimulate::CSimulate(void){
-
- Set_Name (_TL("Simulation"));
- Set_Author (_TL("(c) 2004 Victor Olaya"));
- Set_Description (_TW(
- "Fire simulation based on the BEHAVE fire modeling system "
- "supported by the U.S. Forest Service, Fire and Aviation Management. "
- "Find more information on BEHAVE at the <i>Public Domain Software for the Wildland Fire Community</i> at "
- "<a target=\"_blank\" href=\"http://fire.org\">http://fire.org</a>\n"
- "\n"
- "Reference:\n"
- "Andrews, P.L. (1986): BEHAVE: Fire Behavior Prediction and Fuel Modeling System - "
- "Burn Subsystem, Part 1. U.S. Department of Agriculture, Forest Service General, Technical Report INT-194. "
- ));
-
- Parameters.Add_Grid(NULL,
- "DEM",
- _TL("DEM"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "FUEL",
- _TL("Fuel Model"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "WINDSPD",
- _TL("Wind Speed"),
- _TL("Wind speed (m/s)"),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "WINDDIR",
- _TL("Wind Direction"),
- _TL("Wind direction (degrees clockwise from north)"),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "M1H",
- _TL("Dead Fuel Moisture 1H"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "M10H",
- _TL("Dead Fuel Moisture 10H"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "M100H",
- _TL("Dead Fuel Moisture 100H"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "MHERB",
- _TL("Herbaceous Fuel Moisture"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "MWOOD",
- _TL("Wood Fuel Moisture"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "IGNITION",
- _TL("Ignition Points"),
- _TL(""),
- PARAMETER_INPUT);
-
- Parameters.Add_Grid(NULL,
- "TIME",
- _TL("Time"),
- _TL(""),
- PARAMETER_OUTPUT);
-
- Parameters.Add_Grid(NULL,
- "FLAME",
- _TL("Flame Length"),
- _TL("Flame Length (m)"),
- PARAMETER_OUTPUT);
-
- Parameters.Add_Grid(NULL,
- "INTENSITY",
- _TL("Intensity"),
- _TL("Intensity (Kcal/m)"),
- PARAMETER_OUTPUT);
-
- Parameters.Add_Value(NULL,
- "UPDATEVIEW",
- _TL("Update View"),
- _TL("Update view during simulation."),
- PARAMETER_TYPE_Bool,
- true);
-
-}//constructor
-
-CSimulate::~CSimulate(void){}
-
-bool CSimulate::On_Execute(void){
-
- AssignParameters();
- CalculateFire();
-
- DeleteObjects();
- return true;
-
-}//method
-
-void CSimulate::DeleteObjects(){
-
- delete m_pAspectGrid;
- delete m_pSlopeGrid;
-
- m_CentralPoints .Clear();
- m_AdjPoints .Clear();
-
-}//method
-
-bool CSimulate::AssignParameters(){
-
- int x,y;
-
- m_pDEM = Parameters("DEM")->asGrid();
- m_pFuelGrid = Parameters("FUEL")->asGrid();
- m_pIgnGrid = Parameters("IGNITION")->asGrid();
- m_pWindDirGrid = Parameters("WINDDIR")->asGrid();
- m_pWindSpdGrid = Parameters("WINDSPD")->asGrid();
- m_pM1Grid = Parameters("M1H")->asGrid();
- m_pM10Grid = Parameters("M10H")->asGrid();
- m_pM100Grid = Parameters("M100H")->asGrid();
- m_pMHerbGrid = Parameters("MHERB")->asGrid();
- m_pMWoodGrid = Parameters("MWOOD")->asGrid();
- m_pTimeGrid = Parameters("TIME")->asGrid();
- m_pFlameGrid = Parameters("FLAME")->asGrid();
- m_pIntensityGrid = Parameters("INTENSITY")->asGrid();
-
- m_Catalog = Fire_FuelCatalogCreateStandard("Standard", 13);
- Fire_FlameLengthTable(m_Catalog, 500, 0.1);
-
- //substitute no-data values
- for(y=0; y<Get_NY() && Set_Progress(y); y++){
- for(x=0; x<Get_NX(); x++){
-
- if (m_pWindSpdGrid->is_NoData(x, y)){
- m_pWindSpdGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pWindDirGrid->is_NoData(x, y)){
- m_pWindDirGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pM1Grid->is_NoData(x, y)){
- m_pM1Grid->Set_Value(x, y, 0.);
- }//if
- if (m_pM10Grid->is_NoData(x, y)){
- m_pM10Grid->Set_Value(x, y, 0.);
- }//if
- if (m_pM100Grid->is_NoData(x, y)){
- m_pM100Grid->Set_Value(x, y, 0.);
- }//if
- if (m_pMHerbGrid->is_NoData(x, y)){
- m_pMHerbGrid->Set_Value(x, y, 0.);
- }//if
- if (m_pMWoodGrid->is_NoData(x, y)){
- m_pMWoodGrid->Set_Value(x, y, 0.);
- }//if
-
- }//for
- }//for
-
-
- //-----------------------------------------------------
- // calculate slope and aspect using CSG_Grid class'
- // built-in function (after Zevenbergen & Thorne)...
-
- m_pSlopeGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
- m_pAspectGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
-
- for(y=0; y<Get_NY() && Set_Progress(y); y++)
- {
- for(x=0; x<Get_NX(); x++)
- {
- double slope, aspect;
-
- if( m_pDEM->Get_Gradient(x, y, slope, aspect) )
- {
- m_pSlopeGrid ->Set_Value(x, y, slope);
- m_pAspectGrid ->Set_Value(x, y, aspect);
- }
- else
- {
- m_pSlopeGrid ->Set_NoData(x, y);
- m_pAspectGrid ->Set_NoData(x, y);
- }
- }
- }
-
-
- //-----------------------------------------------------
- m_pTimeGrid->Assign((double)0);
-
- return true;
-
-}//method
-
-void CSimulate::CalculateFire(){
-
- int x,y;
-
- Process_Set_Text(_TL("Simulating..."));
- m_CentralPoints .Clear();
- m_AdjPoints .Clear();
-
- m_CentralPoints.Clear();
- for(y=0; y<Get_NY(); y++){
- for(x=0; x<Get_NX(); x++){
- if (!m_pIgnGrid->is_NoData(x,y)){
- m_CentralPoints.Add(x,y);
- m_pTimeGrid->Set_Value(x,y,0.0);
- }//if
- }//for
- }//for
- CalculateFireSpreading(NO_TIME_LIMIT);
-
- m_pTimeGrid->Set_NoData_Value(0.);
-
-
-}//method
-
-
-int CSimulate::CalculateFireSpreading(float fTimeLimit){
-
- int x,y;
- int x2,y2;
- int n;
- bool bReturn = false;
- /* neighbor's address*/ /* N NE E SE S SW W NW */
- static int nX[8] = { 0, 1, 1, 1, 0, -1, -1, -1};
- static int nY[8] = { 1, 1, 0, -1, -1, -1, 0, 1};
- double nDist[8]; /* distance to each neighbor */
- double nAzm[8]; /* compass azimuth to each neighbor (0=N) */
- size_t modelNumber; /* fuel model number at current cell */
- double moisture[6]; /* fuel moisture content at current cell */
- double dSpreadRate; /* spread rate in direction of neighbor */
- double dSpreadTime; /* time to spread from cell to neighbor */
- double dIgnTime; /* time neighbor is ignited by current cell */
- double dWindSpd;
- int iBurntCells = 0;
-
- bool bUpdate = Parameters("UPDATEVIEW")->asBool();
-
- for (n=0; n<8; n++){
- nDist[n] = sqrt ( nX[n] * m_pDEM->Get_Cellsize() * nX[n] * m_pDEM->Get_Cellsize()
- + nY[n] * m_pDEM->Get_Cellsize() * nY[n] * m_pDEM->Get_Cellsize() );
- nAzm[n] = n * 45.;
- }//for
-
- while (m_CentralPoints.Get_Count()!=0){
-
- for (int iPt=0; iPt<m_CentralPoints.Get_Count();iPt++){
-
- x = m_CentralPoints.Get_X(iPt);
- y = m_CentralPoints.Get_Y(iPt);
-
- if (!m_pDEM->is_NoData(x,y) && !m_pFuelGrid->is_NoData(x,y)){
-
- modelNumber = (size_t) m_pFuelGrid->asInt(x, y);
- moisture[0] = m_pM1Grid->asFloat(x, y);
- moisture[1] = m_pM10Grid->asFloat(x, y);
- moisture[2] = m_pM100Grid->asFloat(x, y);
- moisture[3] = m_pM100Grid->asFloat(x, y);
- moisture[4] = m_pMHerbGrid->asFloat(x, y);;
- moisture[5] = m_pMWoodGrid->asFloat(x, y);
- dWindSpd = m_pWindSpdGrid->asFloat(x,y) * MS2FTMIN;
- Fire_SpreadNoWindNoSlope(m_Catalog, modelNumber, moisture);
- Fire_SpreadWindSlopeMax(m_Catalog, modelNumber, dWindSpd,
- m_pWindDirGrid->asFloat(x,y), tan(m_pSlopeGrid->asFloat(x,y)),
- m_pAspectGrid->asFloat(x,y, true));
-
- for (n=0; n<8; n++){
- x2 = x + nX[n];
- y2 = y + nY[n];
- if (m_pTimeGrid->is_InGrid(x2,y2,false)){
- Fire_SpreadAtAzimuth(m_Catalog, modelNumber, nAzm[n], FIRE_BYRAMS);
- dSpreadRate = Fuel_SpreadAny(m_Catalog, modelNumber); // in ft/min (awkward...)
- dSpreadRate *= FTMIN2MMIN; //a bit better...
- if (dSpreadRate > Smidgen){
- dSpreadTime = nDist[n] / dSpreadRate;
- if (fTimeLimit == NO_TIME_LIMIT){
- dIgnTime = m_pTimeGrid->asDouble(x,y) + dSpreadTime;
- if (m_pTimeGrid->asDouble(x2,y2) == 0.0
- || m_pTimeGrid->asDouble(x2, y2) > dIgnTime + THRESHOLD_FOR_DIFFERENCE ){
- m_pTimeGrid->Set_Value(x2, y2, dIgnTime);
- m_AdjPoints.Add(x2,y2);
- Fire_FlameScorch(m_Catalog, modelNumber, FIRE_FLAME);
- m_pFlameGrid->Set_Value(x2, y2, Fuel_FlameLength(m_Catalog, modelNumber) * FT2M);
- m_pIntensityGrid->Set_Value(x2, y2, Fuel_ByramsIntensity(m_Catalog, modelNumber)
- * BTU2KCAL / FT2M );
- }//if
- }//if
- }//if
- }//if
- }//for
- }//if
- }//for
-
- m_CentralPoints.Clear();
- for (int i=0; i<m_AdjPoints.Get_Count(); i++){
- x= m_AdjPoints.Get_X(i);
- y = m_AdjPoints.Get_Y(i);
- m_CentralPoints.Add(x, y);
- }//for
- m_AdjPoints.Clear();
-
- if (fTimeLimit == NO_TIME_LIMIT){
- Process_Get_Okay(true);
- }//if
-
- if (bUpdate){
- DataObject_Update(m_pTimeGrid, true);
- }
-
- }//while
-
- return iBurntCells;
-
-}//method
-
diff --git a/src/modules_simulation/fire/sim_fire_spreading/Simulate.h b/src/modules_simulation/fire/sim_fire_spreading/Simulate.h
deleted file mode 100644
index 87498a5..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/Simulate.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- Simulate.h
- Copyright (C) Victor Olaya
-
- 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 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, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*******************************************************************************/
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#include "MLB_Interface.h"
-#include "fireLib.h"
-
-class CSimulate : public CSG_Module_Grid {
-
-private:
-
- CSG_Grid *m_pDEM;
- CSG_Grid *m_pIgnGrid; /* ptr to ignition time map (minutes) */
- CSG_Grid *m_pWindSpdGrid; /* ptr to wind speed map (m/s) */
- CSG_Grid *m_pWindDirGrid; /* ptr to wind direction map (deg from north) */
- CSG_Grid *m_pM1Grid; /* ptr to 1-hr dead fuel moisture map */
- CSG_Grid *m_pM10Grid; /* ptr to 10-hr dead fuel moisture map */
- CSG_Grid *m_pM100Grid; /* ptr to 100-hr dead fuel moisture map */
- CSG_Grid *m_pMHerbGrid; /* ptr to live herbaceous fuel moisture map */
- CSG_Grid *m_pMWoodGrid; /* ptr to live stem fuel moisture map */
- CSG_Grid *m_pFuelGrid; /* ptr to fuel model map */
- CSG_Grid *m_pValueGrid;
-
- CSG_Grid *m_pFlameGrid; /* ptr to flame length map (m) */
- CSG_Grid *m_pIntensityGrid;
-
- CSG_Grid *m_pSlopeGrid; /* ptr to slope map (rise/reach) */
- CSG_Grid *m_pAspectGrid; /* ptr to aspect map (degrees from north) */
-
- CSG_Grid *m_pTimeGrid;
- //CSG_Grid *m_pVolatileTimeGrid;
-
- FuelCatalogPtr m_Catalog; /* fuel catalog handle */
-
- int m_iLength;
-
- CSG_Points_Int m_CentralPoints;
- CSG_Points_Int m_AdjPoints;
-
- int *m_pLength;
- int m_iMaxTime; //in s
- int m_iTimeInterval; //in s
-
- bool AssignParameters();
- void CalculateFire();
- int CalculateFireSpreading(float);
- void DeleteObjects();
-
-public:
-
- CSimulate(void);
- virtual ~CSimulate(void);
-
-protected:
-
- virtual bool On_Execute(void);
-
-};
-
diff --git a/src/modules_simulation/fire/sim_fire_spreading/fireLib.c b/src/modules_simulation/fire/sim_fire_spreading/fireLib.c
deleted file mode 100644
index 585fa0b..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/fireLib.c
+++ /dev/null
@@ -1,1814 +0,0 @@
-/*
- *******************************************************************************
- *
- * fireLib.c
- *
- * Description
- * Library of BEHAVE (Andrews 1986) fire behavior algorithms
- * encapsulated and optimized for fire behavior simulation.
- *
- * Legalities
- * Copyright (c) 1996 Collin D. Bevins.
- * See the file "license.txt" for information on usage and
- * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- *
- * Naming Conventions
- * All function names begin with "Fire_".
- * All fuel model and behavior parameter access macros begin with "Fuel_".
- * All fuel catalog parameter access macros begin with "FuelCat_".
- *
- * Functions
- * There are 8 functions to create and destroy fuel models and catalogs:
- *
- * Fire_FuelCatalogCreate(name, maxModels)
- * Creates a new fuel catalog capable of holding maxModels.
- *
- * Fire_FuelCatalogCreateStandard(name, maxModels)
- * Creates a new fuel catalog capable of holding maxModels,
- * and fills models 0-13 with standard fire behavior models.
- *
- * Fire_FuelModelCreate(catalog, model, name, desc, depth, mext,
- * adjust, maxParticles)
- * Adds or replaces a fuel model in the catalog. The model will
- * accept up to maxParticles particles.
- *
- * Fire_FuelModelExists(catalog, model)
- * Returns 1 if model exists within the catalog.
- *
- * Fire_FuelParticleAdd(catalog, model, live, load, savr, dens, heat,
- * stot, seff)
- * Adds a fuel particle to a fuel model.
- *
- * Fire_FlameLengthTable ( catalog, flameClasses, flameStep )
- * Creates a flame length look-up table containing flameClasses
- * number of classes, with each class spanning "flameStep"
- * feet of flame length. Creating a flame length table can
- * significantly improve performance at the expense of user
- * specified precision.
- *
- * Fire_FuelModelDestroy(catalog, model)
- * Destroys the model within the catalog.
- *
- * Fire_FuelCatalogDestroy(catalog)
- * Destroys the catalog and all models within it.
- *
- * There are 5 functions to process data within fuel models:
- *
- * Fire_FuelCombustion(catalog, model)
- * Computes all the fuel-dependent model variables.
- * Called only once for each fuel model.
- * Called automatically by Fire_SpreadNoWindNoSlope().
- *
- * Fire_SpreadNoWindNoSlope(catalog, model, moisture[6])
- * Determines reaction intensity, heat per unit area, and the
- * no-wind no-slope spread rate.
- *
- * Fire_SpreadWindSlopeMax(catalog, model, windFpm, windDeg, slope,
- * aspectDeg)
- * Determines maximum spread rate and azimuth of maximum spread
- * based upon input parameters and results of the most recent
- * call to Fire_SpreadNoWindNoSlope() for this model.
- *
- * Fire_SpreadAtAzimuth(catalog, model, azimuth, doWhich)
- * Determines the spread rate in the specified azimuth based
- * upon the results of the most recent call to
- * Fire_SpreadWindSlopeMax() for this model. The "doWhich"
- * parameter is the result of ORing the constants FIRE_BYRAMS,
- * FIRE_FLAME, and FIRE_SCORCH to request computation of the
- * associated fire variables.
- *
- * Fire_FlameScorch(catalog, model, doWhich)
- * Determines the flame length and/or scorch height based upon
- * the most recent call to Fire_SpreadAtAzimuth().
- *
- * History
- * 1996/09/04 Version 1.0.0 release.
- * 1999/03/05 Fixed NNFL07 live SAVR from 1500 to 1550.
- *
- *******************************************************************************
- */
-
-#include "fireLib.h"
-
-#ifndef M_PI
-#define M_PI 3.14159
-#endif
-
-/*
- *******************************************************************************
- *
- * Fire_FuelCombustion()
- *
- * Description
- * Calculates and stores all the fuel-dependent combustion variables.
- *
- * Side Effects
- * All combustion varaiables are reclaculated for the model.
- * All behavior and environment variables are reset to zero.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FuelCombustion (FuelCatalogPtr catalog, size_t model )
- //FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- //size_t model; /* fuel model id number [0-maxModels] */
-{
- size_t particle, size, life;
-
- double sizeClassAreaWtg[FIRE_LIFE_CATS][FIRE_SIZE_CLASSES];
- double lifeLoad[FIRE_LIFE_CATS];
- double lifeArea[FIRE_LIFE_CATS];
- double lifeSavr[FIRE_LIFE_CATS];
- double lifeHeat[FIRE_LIFE_CATS];
- double lifeSeff[FIRE_LIFE_CATS];
- double lifeEtaS[FIRE_LIFE_CATS];
-
- double totalArea;
- double fineLive;
- double beta;
- double betaOpt;
- double sigma;
- double ratio;
- double aa;
- double sigma15;
- double gammaMax;
- double gamma;
- double c;
- double e;
-
- /* Validate catalog and fuel model existence. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelCombustion(): el modelo de combustible %d no existe en el catálogo de combuestibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Initialize the model's fuel particle dependent variables. */
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- Fuel_AreaWtg(catalog,model,particle) = 0.;
- Fuel_SizeAreaWtg(catalog,model,particle) = 0.;
- Fuel_Moisture(catalog,model,particle) = 0.;
- }
-
- /* Initialize the model's fuel combustion variables. */
- /* The following are calculated by this function. */
- Fuel_FineDead(catalog,model) = 0.0;
- Fuel_LiveMextFactor(catalog,model) = 0.0;
- Fuel_BulkDensity(catalog,model) = 0.0;
- Fuel_ResidenceTime(catalog,model) = 0.0;
- Fuel_PropFlux(catalog,model) = 0.0;
- Fuel_SlopeK(catalog,model) = 0.0;
- Fuel_WindB(catalog,model) = 0.0;
- Fuel_WindE(catalog,model) = 0.0;
- Fuel_WindK(catalog,model) = 0.0;
-
- for (life=0; life<FIRE_LIFE_CATS; life++)
- {
- Fuel_LifeAreaWtg(catalog,model,life) = 0.;
- Fuel_LifeRxFactor(catalog,model,life) = 0.;
- lifeLoad[life] = 0.;
- lifeArea[life] = 0.;
- lifeSavr[life] = 0.;
- lifeHeat[life] = 0.;
- lifeEtaS[life] = 0.;
- lifeSeff[life] = 0.;
- for ( size=0; size<FIRE_SIZE_CLASSES; size++ )
- sizeClassAreaWtg[life][size] = 0.;
- }
-
- /* Initialize the model's fire behavior variables. */
- /* These are calculated by Fire_SpreadNoWindNoSlope(). */
- Fuel_Spread0(catalog,model) = 0.;
- Fuel_RxIntensity(catalog,model) = 0.;
- Fuel_HeatPerUnitArea(catalog,model) = 0.;
-
- /* Initialize the model's fire behavior variables. */
- /* These are calculated by Fire_SpreadWindSlopeMax(). */
- Fuel_SpreadMax(catalog,model) = 0.;
- Fuel_AzimuthMax(catalog,model) = 0.;
- Fuel_EffectiveWind(catalog,model) = 0.;
- Fuel_PhiSlope(catalog,model) = 0.;
- Fuel_PhiWind(catalog,model) = 0.;
- Fuel_PhiEffWind(catalog,model) = 0.;
- Fuel_LwRatio(catalog,model) = 1.;
- Fuel_Eccentricity(catalog,model) = 0.;
- Fuel_WindLimit(catalog,model) = 0;
-
- /* Initialize the model's fire behavior variables. */
- /* These are calculated by Fire_SpreadAtAzimuth(). */
- Fuel_SpreadAny(catalog,model) = 0.;
- Fuel_AzimuthAny(catalog,model) = 0.;
- Fuel_ByramsIntensity(catalog,model) = 0.;
- Fuel_FlameLength(catalog,model) = 0.;
- Fuel_ScorchHeight(catalog,model) = 0.;
-
- /* Initialize the model's environmental variables. */
- Fuel_WindSpeed(catalog,model) = 0.;
- Fuel_WindDir(catalog,model) = 0.;
- Fuel_Slope(catalog,model) = 0.;
- Fuel_Aspect(catalog,model) = 0.;
- for ( size=0; size<FIRE_MCLASSES; size++ )
- Fuel_EnvMoisture(catalog,model,size) = 0.;
-
- /* Initialize the model's combustion flag. */
- Fuel_CombustionFlag(catalog,model) = 1;
-
- /* If the model has no particles, we're all done. */
- if ( Fuel_Particles(catalog,model) <= 0 )
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-
- /* Initialize local fuel bed and combustion variables. */
- beta = betaOpt = sigma = ratio = aa = sigma15 = 0.;
- gamma = gammaMax = c = e = fineLive = totalArea = 0.;
-
- /* Accumulate surface areas by life category for the entire fuel bed. */
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- life = Fuel_Live(catalog,model,particle);
- lifeArea[life] += Fuel_SurfaceArea(catalog,model,particle);
- totalArea += Fuel_SurfaceArea(catalog,model,particle);
- }
-
- /* If no surface area, we're all done. */
- if ( totalArea <= Smidgen )
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-
- /* Surface area wtg factor for each particle within its life category */
- /* and within its size class category (used to weight loading). */
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- life = Fuel_Live(catalog,model,particle);
- if ( lifeArea[life] > Smidgen )
- {
- Fuel_AreaWtg(catalog,model,particle) =
- Fuel_SurfaceArea(catalog,model,particle) / lifeArea[life];
-
- size = Fuel_SizeClass(catalog,model,particle);
- sizeClassAreaWtg[life][size] +=
- Fuel_AreaWtg(catalog,model,particle);
- }
- }
-
- /* Assign size class surface area weights to each particle. */
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- life = Fuel_Live(catalog,model,particle);
- size = Fuel_SizeClass(catalog,model,particle);
- Fuel_SizeAreaWtg(catalog,model,particle) = sizeClassAreaWtg[life][size];
- }
-
- /* Derive life category surface area weighting factors. */
- for ( life=0; life<FIRE_LIFE_CATS; life++ )
- Fuel_LifeAreaWtg(catalog,model,life) = lifeArea[life] / totalArea;
-
- /* Accumulate life category weighted load, heat, savr, and seff. */
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- life = Fuel_Live(catalog,model,particle);
-
- lifeLoad[life] += Fuel_SizeAreaWtg(catalog,model,particle)
- * Fuel_Load(catalog,model,particle)
- * (1. - Fuel_SiTotal(catalog,model,particle));
-
- lifeSavr[life] += Fuel_AreaWtg(catalog,model,particle)
- * Fuel_Savr(catalog,model,particle);
-
- lifeHeat[life] += Fuel_AreaWtg(catalog,model,particle)
- * Fuel_Heat(catalog,model,particle);
-
- lifeSeff[life] += Fuel_AreaWtg(catalog,model,particle)
- * Fuel_SiEffective(catalog,model,particle);
-
- Fuel_BulkDensity(catalog,model) += Fuel_Load(catalog,model,particle);
-
- if ( Fuel_Density(catalog,model,particle) > Smidgen )
- beta += Fuel_Load(catalog,model,particle)
- / Fuel_Density(catalog,model,particle);
- }
-
- /* Accumulate life category contribution to reaction intensity. */
- for ( life=0; life<FIRE_LIFE_CATS; life++ )
- {
- sigma += Fuel_LifeAreaWtg(catalog,model,life) * lifeSavr[life];
-
- lifeEtaS[life] = 1.;
- if (lifeSeff[life] > 0.)
- {
- if ( (lifeEtaS[life] = 0.174 / pow(lifeSeff[life], 0.19)) > 1.0 )
- lifeEtaS[life] = 1.0;
- }
-
- Fuel_LifeRxFactor(catalog,model,life) =
- lifeLoad[life] * lifeHeat[life] * lifeEtaS[life];
- }
-
- /* Fuel model residence time */
- Fuel_ResidenceTime(catalog,model) = 384. / sigma;
-
- /* Fuel model bulk density */
- if ( Fuel_Depth(catalog,model) > Smidgen )
- {
- Fuel_BulkDensity(catalog,model) /= Fuel_Depth(catalog,model);
- beta /= Fuel_Depth(catalog,model);
- }
-
- /* Propagating flux depends upon sigma and beta only. */
- Fuel_PropFlux(catalog,model) =
- exp((0.792 + 0.681*sqrt(sigma)) * (beta+0.1)) / (192.+0.2595*sigma);
-
- /* Gamma */
- betaOpt = 3.348 / (pow(sigma, 0.8189));
- ratio = beta / betaOpt;
- aa = 133. / (pow(sigma, 0.7913));
- sigma15 = pow(sigma, 1.5);
- gammaMax = sigma15 / (495. + 0.0594*sigma15);
- gamma = gammaMax * pow(ratio, aa) * exp(aa * (1.-ratio));
-
- /* Factor gamma into life category reaction intensity contribution. */
- for ( life=0; life<FIRE_LIFE_CATS; life++ )
- Fuel_LifeRxFactor(catalog,model,life) *= gamma;
-
- /* Slope and wind intermediates constants for the fuel model. */
- Fuel_SlopeK(catalog,model) = 5.275 * pow(beta, -0.3);
- Fuel_WindB(catalog,model) = 0.02526 * pow(sigma, 0.54);
-
- c = 7.47 * exp(-0.133 * pow(sigma, 0.55));
- e = 0.715 * exp(-0.000359 * sigma);
- Fuel_WindK(catalog,model) = c * pow(ratio, -e);
- Fuel_WindE(catalog,model) = pow(ratio, e) / c;
-
- /* If no live fuel, we're done. */
- if ( lifeLoad[FIRE_LIFE_LIVE] < Smidgen )
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-
- /* Fine dead fuel and fine live fuel factors. */
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- if ( Fuel_Live(catalog,model,particle) )
- fineLive
- += Fuel_Load(catalog,model,particle)
- * exp(-500. / Fuel_Savr(catalog,model,particle));
- else
- Fuel_FineDead(catalog,model)
- += Fuel_Load(catalog,model,particle)
- * Fuel_SigmaFactor(catalog,model,particle);
- }
-
- /* Live fuel extinction moisture factor. */
- if ( fineLive > Smidgen )
- Fuel_LiveMextFactor(catalog,model)
- = 2.9 * Fuel_FineDead(catalog,model) / fineLive;
-
- /* That's all, folks!. */
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_SpreadNoWindNoSlope()
- *
- * Description
- * Calculates the fire reaction intensity and no-wind, no-slope spread
- * rate given the fuel model, combustion, and moisture regime inputs.
- *
- * Side Effects
- * Updates the following fire behavior variables:
- * Fuel_RxIntensity(catalog,model).
- * Fuel_HeatPerUnitArea(catalog,model).
- * Fuel_Spread0(catalog,model).
- * Fuel_SpreadMax(catalog,model) = Fuel_Spread0(catalog,model)
- * Fuel_SpreadAny(catalog,model) = Fuel_Spread0(catalog,model)
- * Fuel_AzimuthAny(catalog,model) = 0.
- * Fuel_AzimuthMax(catalog,model) = 0.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_SpreadNoWindNoSlope ( FuelCatalogPtr catalog, size_t model, double moisture[FIRE_MCLASSES] )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model number [0-maxModels] */
- // double moisture[FIRE_MCLASSES]; /* array of fuel moistures (fractions) */
-{
- size_t mclass, particle, life, nlive;
- double wfmd;
- double rbQig;
- double fdmois;
- double qig;
- double ratio;
- double lifeMoisture[FIRE_LIFE_CATS];
- double lifeEtaM[FIRE_LIFE_CATS];
- double lifeMext[FIRE_LIFE_CATS];
-
- static size_t TimeLagClass[FIRE_SIZE_CLASSES] = {0, 0, 1, 1, 2, 2};
-
- /* Validate the catalog and fuel model. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_SpreadNoWindNoSlope(): el modelo de combustible %d no existe en el catálogo de combustibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Check if we must recalculate combustion intermediates. */
- if ( ! Fuel_CombustionFlag(catalog,model) )
- {
- Fire_FuelCombustion(catalog,model);
- }
-
- /* Otherwise check if the moisture environment has changed. */
- else
- {
- for ( mclass=0; mclass<FIRE_MCLASSES; mclass++ )
- if ( ! Equal(moisture[mclass],Fuel_EnvMoisture(catalog,model,mclass)) )
- break;
-
- /* If no change in fuel moisture, no more computation is needed. */
- if ( mclass == FIRE_MCLASSES )
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
- }
-
- /* Store the new moistures in the fuel's environmental moisture array. */
- for ( mclass=0; mclass<FIRE_MCLASSES; mclass++ )
- Fuel_EnvMoisture(catalog,model,mclass) = moisture[mclass];
-
- /* Initialize the model's fire behavior variables. */
- /* These are calculated by this function. */
- Fuel_Spread0(catalog,model) = 0.;
- Fuel_RxIntensity(catalog,model) = 0.;
- Fuel_HeatPerUnitArea(catalog,model) = 0.;
-
- /* Initialize the model's fire behavior variables. */
- /* These are calculated by Fire_SpreadWindSlopeMax(). */
- Fuel_SpreadMax(catalog,model) = 0.;
- Fuel_AzimuthMax(catalog,model) = 0.;
-
- /* Initialize the model's fire behavior variables. */
- /* These are calculated by Fire_SpreadAtAzimuth(). */
- Fuel_SpreadAny(catalog,model) = 0.;
- Fuel_AzimuthAny(catalog,model) = 0.;
- Fuel_ByramsIntensity(catalog,model) = 0.;
- Fuel_FlameLength(catalog,model) = 0.;
- Fuel_ScorchHeight(catalog,model) = 0.;
-
- /* If no fuel particles, return. */
- if (Fuel_Particles(catalog,model) <= 0)
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-
- /* Initialize local variables. */
- wfmd = fdmois = rbQig = 0.;
- for ( life=0; life<FIRE_LIFE_CATS; life++ )
- {
- lifeMoisture[life] = 0.;
- lifeEtaM[life] = 0.;
- lifeMext[life] = 0.;
- }
-
- /* Assign particle moistures based upon their size class. */
- nlive = 0;
- for ( particle=0; particle<Fuel_Particles(catalog,model); particle++ )
- {
- /* if this is a dead fuel, accumulate its wtd fuel moisture. */
- if ( Fuel_Live(catalog,model,particle) == FIRE_LIFE_DEAD )
- {
- mclass = TimeLagClass[Fuel_SizeClass(catalog,model,particle)];
- wfmd += moisture[mclass]
- * Fuel_SigmaFactor(catalog,model,particle)
- * Fuel_Load(catalog,model,particle);
- }
- else
- {
- nlive++;
- mclass = (Fuel_Type(catalog,model,particle) == FIRE_TYPE_HERB) ?
- FIRE_MCLASS_HERB : FIRE_MCLASS_WOOD;
- }
-
- /* Assign this particle the fuel moisture for its size class. */
- Fuel_Moisture(catalog,model,particle) = moisture[mclass];
- }
-
- /* Compute live fuel extinction moisture. */
- if ( nlive )
- {
- fdmois = ( Fuel_FineDead(catalog,model) > Smidgen ) ?
- (wfmd / Fuel_FineDead(catalog,model)) : 0.;
-
- lifeMext[FIRE_LIFE_LIVE]
- = ((Fuel_LiveMextFactor(catalog,model)
- * (1.0 - fdmois/Fuel_Mext(catalog,model))) - 0.226);
-
- if ( lifeMext[FIRE_LIFE_LIVE] < Fuel_Mext(catalog,model) )
- lifeMext[FIRE_LIFE_LIVE] = Fuel_Mext(catalog,model);
- }
-
- /* Dead fuel extinction moisture is a fuel model input. */
- lifeMext[FIRE_LIFE_DEAD] = Fuel_Mext(catalog,model);
-
- /* Compute category weighted moisture and accumulate the rbQig. */
- for (particle=0; particle<Fuel_Particles(catalog,model); particle++)
- {
- qig = 250. + 1116. * Fuel_Moisture(catalog,model,particle);
-
- life = Fuel_Live(catalog,model,particle);
-
- lifeMoisture[life] += Fuel_AreaWtg(catalog,model,particle)
- * Fuel_Moisture(catalog,model,particle);
-
- rbQig += qig
- * Fuel_AreaWtg(catalog,model,particle)
- * Fuel_LifeAreaWtg(catalog,model,life)
- * Fuel_SigmaFactor(catalog,model,particle);
- }
-
- /* Complete the rbQig calculation. */
- rbQig *= Fuel_BulkDensity(catalog,model);
-
- /* Compute moisture damping coeff by life class, and combine with the */
- /* life class's rx factor to get the total reaction intensity. */
- for (life=0; life<FIRE_LIFE_CATS; life++)
- {
- ratio = 0.;
- if ( lifeMext[life] > Smidgen )
- {
- ratio = lifeMoisture[life] / lifeMext[life];
- lifeEtaM[life] =
- 1.0 - 2.59*ratio + 5.11*ratio*ratio - 3.52*ratio*ratio*ratio;
- }
-
- /* If category moisture exceeds category extinction moisture, */
- /* the damping coefficient is zero. */
- if ( lifeMoisture[life] >= lifeMext[life] )
- lifeEtaM[life] = 0.;
-
- /* Accumulate total reaction intensity. */
- Fuel_RxIntensity(catalog,model)
- += Fuel_LifeRxFactor(catalog,model,life)
- * lifeEtaM[life];
- }
-
- /* Calculate heat per unit area from rx intensity and residence time. */
- Fuel_HeatPerUnitArea(catalog,model)
- = Fuel_RxIntensity(catalog,model)
- * Fuel_ResidenceTime(catalog,model);
-
- /* Calculate no-wind, no-slope spread rate. */
- Fuel_Spread0(catalog,model)
- = (rbQig > Smidgen)
- ? Fuel_RxIntensity(catalog,model) * Fuel_PropFlux(catalog,model) / rbQig
- : 0.;
-
- /* Re-initialize spread in maximum and any azimuth to no wind-no slope. */
- Fuel_SpreadMax(catalog,model) = Fuel_Spread0(catalog,model);
- Fuel_SpreadAny(catalog,model) = Fuel_Spread0(catalog,model);
- Fuel_AzimuthMax(catalog,model) = Fuel_AzimuthAny(catalog,model) = 0.;
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_SpreadWindSlopeMax()
- *
- * Description
- * Calculates maximum fire spread rate and direction under the given
- * wind-slope conditions. Results depend only upon:
- * - no wind-slope spread rate
- * - wind speed and direction
- * - aspect and slope
- *
- * Side Effects
- * Updates the following variables:
- * Fuel_Slope() = slope;
- * Fuel_PhiSlope().
- * Fuel_Wind() = windFpm;
- * Fuel_PhiWind().
- * Fuel_Aspect(catalog,model) = aspect;
- * Fuel_WindDir(catalog,model) = windDeg;
- * Fuel_PhiEffWind(catalog,model) = phiEw;
- * Fuel_EffectiveWind(catalog,model) = effectiveWind;
- * Fuel_WindLimit(catalog,model) = windLimit;
- * Fuel_SpreadMax(catalog,model) = spreadMax;
- * Fuel_AzimuthMax(catalog,model) = azimuthMax;
- * Fuel_LwRatio(catalog,model) = lwRatio;
- * Fuel_Eccentricity(catalog,model) = eccentricity;
- *
- * Resets Fire_SpreadAtAzimuth() variables:
- * Fuel_SpreadAny(catalog,model) = spreadMax;
- * Fuel_AzimuthAny(catalog,model) = azimuthMax;
- * Fuel_ByramsIntensity(catalog,model) = 0.;
- * Fuel_FlameLength(catalog,model) = 0.;
- * Fuel_ScorchHeight(catalog,model) = 0.;
- *
- * Previous Fire_SpreadAtAzimiuth() results become obsolete for this model.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_SpreadWindSlopeMax ( FuelCatalogPtr catalog, size_t model, double windFpm, double windDeg, double slope, double aspect )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model number [0-maxModels] */
- // double windFpm; /* wind speed (ft/min) */
- // double windDeg; /* wind bearing vector (compass degrees) */
- // double slope; /* slope (rise/reach) */
- // double aspect; /* aspect (downslope) azimuth (compass deg) */
-{
- double upslope, azimuthMax, phiEw;
- double splitDeg, splitRad;
- double slpRate, wndRate, rv, spreadMax;
- double x, y, al, a;
- double maxWind, effectiveWind, lwRatio, eccentricity;
- size_t doEffectiveWind, checkWindLimit, windLimit;
-
- /* Validate the catalog and fuel model. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_SpreadMax(): el modelo de combustible %d no existe en el catálogo de combustibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Recalculate slope factors ONLY if different from previous model input. */
- if ( ! Equal(Fuel_Slope(catalog,model),slope) )
- {
- Fuel_PhiSlope(catalog,model) =
- Fuel_SlopeK(catalog,model) * slope * slope;
- Fuel_Slope(catalog,model) = slope;
- }
-
- /* Recalculate wind factors ONLY if different from previous model input. */
- if ( ! Equal(Fuel_WindSpeed(catalog,model),windFpm) )
- {
- Fuel_PhiWind(catalog,model) = (windFpm < Smidgen) ? 0. :
- Fuel_WindK(catalog,model) * pow(windFpm, Fuel_WindB(catalog,model));
- Fuel_WindSpeed(catalog,model) = windFpm;
- }
-
- /* Combine wind and slope factors. */
- phiEw = Fuel_PhiSlope(catalog,model) + Fuel_PhiWind(catalog,model);
- windLimit = 0;
- lwRatio = 1.;
- eccentricity = 0.;
- upslope = (aspect>=180.) ? aspect-180. : aspect+180.;
-
- /* Situation 1: no fire spread or reaction intensity. */
- if ( Fuel_Spread0(catalog,model) < Smidgen )
- {
- spreadMax = 0.;
- azimuthMax = 0;
- /* There IS an effective wind even if there is no fire. */
- doEffectiveWind = 1;
- /* But since BEHAVE doesn't calculate effective wind when no spread. */
- /* we wont either. */
- effectiveWind = 0.;
- doEffectiveWind = 0;
- checkWindLimit = 0;
- }
-
- /* Situation 2: no wind and no wind */
- else if ( phiEw < Smidgen )
- {
- phiEw = 0.;
- effectiveWind = 0.;
- doEffectiveWind = 0;
- spreadMax = Fuel_Spread0(catalog,model);
- azimuthMax = 0;
- checkWindLimit = 0;
- }
-
- /* Situation 3: wind with no slope. */
- else if ( slope < Smidgen )
- {
- effectiveWind = windFpm;
- doEffectiveWind = 0;
- spreadMax = Fuel_Spread0(catalog,model) * (1. + phiEw);
- azimuthMax = windDeg;
- checkWindLimit = 1;
- }
-
- /* Situation 4: slope with no wind. */
- else if ( windFpm < Smidgen )
- {
- doEffectiveWind = 1;
- spreadMax = Fuel_Spread0(catalog,model) * (1. + phiEw);
- azimuthMax = upslope;
- checkWindLimit = 1;
- }
-
- /* Situation 5: wind blows upslope. */
- else if ( Equal(upslope,windDeg) )
- {
- doEffectiveWind = 1;
- spreadMax = Fuel_Spread0(catalog,model) * (1. + phiEw);
- azimuthMax = upslope;
- checkWindLimit = 1;
- }
-
- /* Situation 6: wind blows cross slope. */
- else
- {
- /* Recalculate spread rate in the optimal direction. */
- splitDeg = (upslope<=windDeg) ? windDeg-upslope : 360.-upslope+windDeg;
- splitRad = DegreesToRadians(splitDeg);
- slpRate = Fuel_Spread0(catalog,model) * Fuel_PhiSlope(catalog,model);
- wndRate = Fuel_Spread0(catalog,model) * Fuel_PhiWind(catalog,model);
- x = slpRate + wndRate * cos(splitRad);
- y = wndRate * sin(splitRad);
- rv = sqrt(x*x + y*y);
- spreadMax= Fuel_Spread0(catalog,model) + rv;
-
- /* Recalculate phiEw in the optimal direction. */
- phiEw = spreadMax / Fuel_Spread0(catalog,model) - 1.0;
- doEffectiveWind = (phiEw > Smidgen) ? 1 : 0;
- checkWindLimit = 1;
-
- /* Recalculate direction of maximum spread in azimuth degrees. */
- al = asin(fabs(y) / rv);
- if ( x >= 0. )
- a = (y >= 0.) ? al : M_PI + M_PI - al;
- else
- a = (y >= 0.) ? (M_PI - al) : (M_PI + al);
-
- splitDeg = RadiansToDegrees(a);
- if ( (azimuthMax = upslope + splitDeg) > 360. )
- azimuthMax -= 360.;
- }
-
- /* Recalculate effective wind speed based upon phiEw. */
- if ( doEffectiveWind )
- effectiveWind = pow( (phiEw * Fuel_WindE(catalog,model)),
- (1. / Fuel_WindB(catalog,model)) );
-
- /* If effective wind exceeds maximum wind, scale back spread & phiEw. */
- if ( checkWindLimit )
- {
- maxWind = 0.9 * Fuel_RxIntensity(catalog,model);
- if ( effectiveWind > maxWind )
- {
- phiEw = (maxWind < Smidgen) ? 0. :
- Fuel_WindK(catalog,model) * pow(maxWind, Fuel_WindB(catalog,model));
-
- spreadMax = Fuel_Spread0(catalog,model) * (1. + phiEw);
- effectiveWind = maxWind;
- windLimit = 1;
- }
- }
-
- /* Determine fire ellipse parameters from the effective wind speed. */
- /* = 1. + 0.25 * (Fuel_EffectiveWind(catalog,model) / 88.0); */
- if ( effectiveWind > Smidgen )
- {
- lwRatio = 1. + 0.002840909 * effectiveWind;
- eccentricity = sqrt(lwRatio * lwRatio - 1.0) / lwRatio;
- }
-
- /* Store the results. */
- Fuel_Aspect(catalog,model) = aspect;
- Fuel_WindDir(catalog,model) = windDeg;
- Fuel_PhiEffWind(catalog,model) = phiEw;
- Fuel_EffectiveWind(catalog,model)= effectiveWind;
- Fuel_WindLimit(catalog,model) = windLimit;
- Fuel_SpreadMax(catalog,model) = Fuel_SpreadAny(catalog,model) = spreadMax;
- Fuel_AzimuthMax(catalog,model) = Fuel_AzimuthAny(catalog,model) = azimuthMax;
- Fuel_LwRatio(catalog,model) = lwRatio;
- Fuel_Eccentricity(catalog,model) = eccentricity;
-
- /* Initialize behavior variables updated by Fire_SpreadAtAzimuth(). */
- Fuel_ByramsIntensity(catalog,model) = 0.;
- Fuel_FlameLength(catalog,model) = 0.;
- Fuel_ScorchHeight(catalog,model) = 0.;
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_SpreadAtAzimuth()
- *
- * Description
- * Calculates fire spread rate in a specified direction and optionally
- * calculates the fireline intensity, flame length, and scorch height
- * along the fire spread vector.
- *
- * Side Effects
- * The following variables are updated:
- * Fuel_SpreadAny(catalog,model)
- * Fuel_AzimuthAny(catalog,model) == azimuth;
- * Fuel_ByramsIntensity(catalog,model) is updated if FIRE_BYRAMS.
- * Fuel_FlameLength(catalog,model) is updated if FIRE_FLAME.
- * Fuel_ScorchHeight(catalog,model) is updated if FIRE_SCORCH.
- * Notes
- * The calculations depend upon the most recent calls to
- * Fire_SpreadNoWindNoSlope() and Fire_SpreadWindSlopeMax() for this model.
- *
- * The input azimuth is the degrees clockwise from north.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_SpreadAtAzimuth ( FuelCatalogPtr catalog, size_t model, double azimuth, size_t which )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model number [0-maxModels] */
- // double azimuth; /* fire spread azimuth (deg from upslope) */
- // size_t which; /* FIRE_NONE | FIRE_BYRAMS | FIRE_FLAME | FIRE_SCORCH */
-{
- double dir;
- double radians;
- double byrams;
- double mph;
- size_t lo, hi, mid, n;
-
- /* Validate catalog and the fuel model. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_SpreadAtAzimuth(): el modelo de combustible %d no existe en el catálogo de combustibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Situation 1: no fire or reaction intensity, so no Byrams or flame. */
- if ( Fuel_SpreadMax(catalog,model) < Smidgen )
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-
- /* Situation 2: phiEw is zero OR azimuth is in the max spread direction */
- if ( Fuel_PhiEffWind(catalog,model) < Smidgen
- || Equal(Fuel_AzimuthMax(catalog,model),azimuth) )
- {
- Fuel_SpreadAny(catalog,model) = Fuel_SpreadMax(catalog,model);
- }
-
- /* Situation 3: wind and/or slope and azimuth not in max spread direction */
- else
- {
- /* Angle between maximum spread azimuth and requested azimuth. */
- if ( (dir = fabs(Fuel_AzimuthMax(catalog,model) - azimuth)) > 180. )
- dir = 360. - dir;
- radians = DegreesToRadians(dir);
-
- /* Calculate the fire spread rate in this azimuth. */
- Fuel_SpreadAny(catalog,model)
- = Fuel_SpreadMax(catalog,model)
- * (1. - Fuel_Eccentricity(catalog,model))
- / (1. - Fuel_Eccentricity(catalog,model) * cos(radians));
- }
- Fuel_AzimuthAny(catalog,model) = azimuth;
-
- /* Additional fire behavior outputs. */
- if ( which )
- {
- /* Must compute Byram's if any of the three are requested. */
- byrams = Fuel_ResidenceTime(catalog,model)
- * Fuel_SpreadAny(catalog,model)
- * Fuel_RxIntensity(catalog,model)
- / 60.;
-
- /* Byrams intensity is requested. */
- if ( which & FIRE_BYRAMS )
- Fuel_ByramsIntensity(catalog,model) = byrams;
-
- /* Flame length is requested. */
- if ( (which & FIRE_FLAME) )
- {
- if ( byrams < Smidgen )
- {
- Fuel_FlameLength(catalog,model) = 0.;
- }
- else
- {
- /* Use lookup table if it exists & includes this intensity. */
- if ( (n = FuelCat_FlameClasses(catalog)) > 0
- && FuelCat_FlameArray(catalog)[n-1] > byrams )
- {
- hi = n-1;
- lo = 0;
- do {
- mid = lo + (hi-lo)/2;
- if ( FuelCat_FlameArray(catalog)[mid] > byrams )
- hi = mid;
- else
- lo = mid + 1;
- } while (lo != hi);
- Fuel_FlameLength(catalog,model) =
- FuelCat_FlameStep(catalog) * (lo+1);
- }
- /* otherwise compute flame length from scratch. */
- else
- {
- Fuel_FlameLength(catalog,model) = 0.45 * pow(byrams, 0.46);
- }
- }
- }
-
- /* Scorch height is requested. */
- if ( (which & FIRE_SCORCH) )
- {
- if ( byrams < Smidgen )
- {
- Fuel_ScorchHeight(catalog,model) = 0.;
- }
- else
- {
- mph = Fuel_WindSpeed(catalog,model) / 88.;
- Fuel_ScorchHeight(catalog,model) =
- pow(byrams, 1.166667) / sqrt(byrams + (mph * mph * mph));
- /* Fuel_ScorchHeight(catalog,model) *= (63. / (140. - temp_f) ); */
- }
- }
- }
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FlameScorch()
- *
- * Description
- * Calculates the flame length and/or scorch height for the current
- * Byram's intensity and azimuth (as determined by the most recent
- * call to Fire_SpreadAtAzimuth()).
- * Uses the Flame Length Table if it exists.
- * Offers a method of getting flame length if Fire_SpreadAtAzimuth()
- * is not calculating it.
- *
- * Side Effects
- * The following variables are updated:
- * Fuel_FlameLength(catalog,model) is updated.
- * Fuel_ScorchHeight(catalog,model)
- * Notes
- * The calculations depend upon the most recent calls to
- * Fire_SpreadNoWindNoSlope(), Fire_SpreadWindSlopeMax(), and
- * Fire_SpreadAtAzimuth() for this model.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FlameScorch ( FuelCatalogPtr catalog, size_t model, size_t which )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model number [0-maxModels] */
- // size_t which; /* FIRE_NONE | FIRE_BYRAMS | FIRE_FLAME | FIRE_SCORCH */
-{
- double byrams;
- double mph;
- size_t lo, hi, mid, n;
-
- /* Validate catalog and the fuel model. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FlameScorch(): el modelo de combustible %d no existe en el catálogo de combustibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- byrams = Fuel_ResidenceTime(catalog,model)
- * Fuel_SpreadAny(catalog,model)
- * Fuel_RxIntensity(catalog,model)
- / 60.;
-
- /* Flame length is requested. */
- if ( (which & FIRE_FLAME) )
- {
- if ( byrams < Smidgen )
- {
- Fuel_FlameLength(catalog,model) = 0.;
- }
- else
- {
- /* Use lookup table if it exists & includes this intensity. */
- if ( (n = FuelCat_FlameClasses(catalog)) > 0
- && FuelCat_FlameArray(catalog)[n-1] > byrams )
- {
- hi = n-1;
- lo = 0;
- do {
- mid = lo + (hi-lo)/2;
- if ( FuelCat_FlameArray(catalog)[mid] > byrams )
- hi = mid;
- else
- lo = mid + 1;
- } while (lo != hi);
- Fuel_FlameLength(catalog,model) =
- FuelCat_FlameStep(catalog) * (lo+1);
- }
- /* otherwise compute flame length from scratch. */
- else
- {
- Fuel_FlameLength(catalog,model) = 0.45 * pow(byrams, 0.46);
- }
- }
- }
-
- /* Scorch height is requested. */
- if ( (which & FIRE_SCORCH) )
- {
- if ( byrams < Smidgen )
- {
- Fuel_ScorchHeight(catalog,model) = 0.;
- }
- else
- {
- mph = Fuel_WindSpeed(catalog,model) / 88.;
- Fuel_ScorchHeight(catalog,model) =
- pow(byrams, 1.166667) / sqrt(byrams + (mph * mph * mph));
- /* Fuel_ScorchHeight(catalog,model) *= (63. / (140. - temp_f) ); */
- }
- }
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FlameLengthTable()
- *
- * Description
- * Creates a flame length lookup table containing "flameClasses" classes
- * with each class spanning "flameStep" feet.
- *
- * Discussion
- * Since flame length is strictly an output variable (e.g., it is never
- * used as the basis for subsequent computations), we can usually afford
- * to round it to some precision that makes sense to fire managers.
- * Usually this will be in 1 foot or perhaps 6 inch increments. The call
- *
- *
- * creates a flame length table for flame lengths of 1 through 500 feet.
- *
- * Fire_SpreadAtAzimuth() uses the flame table (if one is defined for the
- * catalog) to avoid using the costly pow() function for highly iterative
- * flame length calculations, saving a considerable amount of processing
- * time. Fire_SpreadAtAzimuth() will still use the pow() function to
- * compute flame length if (1) a flame length table is not defined,
- * (2) the fireline intensity exceeds the upper limit of the currently
- * defined flame length table, or (3) the flame length table becomes
- * undefined by a Fire_FlameLengthTable(catalog, 0, 0.) call.
- *
- *
- * Examples
- * Fire_FlameLengthTable(catalog, 200, 1.0);
- * Creates a table for flame lengths of 1 through 200 feet in 1-foot
- * intervals. Any previously defined flame length table for this
- * fuel catalog is destroyed.
- *
- * Fire_FlameLengthTable(catalog, 500, 0.5);
- * Creates a table for flame lengths of 0.5 through 250 feet in 6-inch
- * intervals. ANy previously defined flame length table for this
- * fuel catalog is destroyed.
- *
- * Fire_FlameLengthTable(catalog, 0, 0.);
- * Destroys any existing flame length table for this catalog, and
- * forces actual flame length computation using pow() function.
- *
- * Side Effects
- * If a flame length table currently exists, it is destroyed, and the
- * FuelCat_FlameArray(), FuelCat_FlameClasses(), and
- * FuelCat_FlameStep() are set to NULL, 0, and 0.0, respectively.
- *
- * If fireClasses > 0, allocates a flame length table and fills it with
- * the fireline intensity associated with the upper limit of each flame
- * length class. The FuelCat_FlameArray(), FuelCat_FlameClasses(), and
- * FuelCat_FlameStep() are then updated.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FlameLengthTable ( FuelCatalogPtr catalog, size_t flameClasses, double flameStep )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t flameClasses; /* number of flame length classes */
- // double flameStep; /* flame length step value per class */
-{
- double power, flame;
- size_t i;
-
- /* Validate the catalog. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
-
- /* If a flame table already exists, destroy it. */
- if ( FuelCat_FlameArray(catalog) )
- {
- free(FuelCat_FlameArray(catalog));
- FuelCat_FlameArray(catalog) = NULL;
- FuelCat_FlameClasses(catalog) = 0;
- FuelCat_FlameStep(catalog) = 0.0;
- }
-
- /* If flameClasses is zero, simply return. */
- if ( flameClasses == 0 )
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-
- /* Otherwise create a new flame table. */
- if ( (FuelCat_FlameArray(catalog) = (double *)
- calloc(flameClasses, sizeof(double))) == NULL )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FlameLengthTable(): imposible asignar tabla de longitud de llama con %d clases de %f pies.",
- flameClasses, flameStep);
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Fill the array. */
- power = 1. / .46;
- for ( i=0; i<flameClasses; i++ )
- {
- flame = flameStep * (i+1);
- FuelCat_FlameArray(catalog)[i] = pow((flame / .45), power);
- }
- FuelCat_FlameClasses(catalog) = flameClasses;
- FuelCat_FlameStep(catalog) = flameStep;
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelCatalogCreate()
- *
- * Description
- * Creates a new fuel model catalog capable of holding fuel models with
- * id's in the range [0..maxModel].
- * The catalog is filled by subsequent calls to Fire_FuelModelCreate().
- *
- * Side Effects
- * Allocates a new FuelCatalogData structure.
- * Allocates an error text buffer for the catalog.
- * Allocates a name for the catalog.
- * Allocates an array of pointers to FuelData structures (the FuelData
- * structures themselves are allocated by Fire_FuelModelCreate() and
- * their pointers are stored here).
- *
- * Notes
- * The FuelCatalog contains a dynamically-allocated array of pointers
- * to FuelData blocks. These pointers are initially NULL and are
- * subsequently assigned by Fire_FuelModelCreate(). The array provides
- * the programmer with a means of directly accessing fuel models via
- * their model number, which is handy when simulating fire growth.
- *
- * Function Returns
- * While most FireLib functions return a status code, this one returns
- * a pointer to the new FuelCatalogData on success or NULL if unable
- * to allocate any of the dynamic structures.
- *
- *******************************************************************************
- */
-
-FuelCatalogPtr
-Fire_FuelCatalogCreate ( char *name, size_t maxModels )
- // char *name; /* FuelCatalogData instance name */
- // size_t maxModels; /* maximum modelId allowed in this catalog */
-{
- FuelCatalogPtr catalog;
- static char *blank = {""};
-
- /* Catch a NULL name. */
- if ( name == NULL )
- name = blank;
-
- /* Allocate the FireCatalogData structure. */
- if ( (catalog = (FuelCatalogPtr) malloc(sizeof(FuelCatalogData))) == NULL )
- {
- fprintf(stderr,
- "Fire_FuelCatalogCreate(): imposible asignar el objeto \"%s\" del catálogo de combustibles.\n",
- name);
- return (NULL);
- }
-
- /* Assign the magic cookie right away. */
- FuelCat_MagicCookie(catalog) = FIRE_CATALOG_MAGIC;
-
- /* Allocate and store the catalog instance name. */
- if ( (FuelCat_Name(catalog) = strdup(name)) == NULL )
- {
- fprintf(stderr,
- "Fire_FuelCatalogCreate(): imposible duplicar el nombre \"%s\" del catálogo de combustibles.\n",
- name);
- free(catalog);
- return (NULL);
- }
-
- /* Allocate the FireCatalogData error message buffer. */
- if ( (FuelCat_Error(catalog) =
- (char *) calloc(FIRE_ERROR_BUFFER_SIZE, sizeof(char))) == NULL )
- {
- fprintf(stderr,
- "Fire_FuelCatalogCreate(): imposible asignar el bufer de error \"%s\" del catálogo de combustibles.\n",
- name);
- free(FuelCat_Name(catalog));
- free(catalog);
- return (NULL);
- }
- FuelCat_Status(catalog) = FIRE_STATUS_ERROR;
-
- /* Allocate a FuelModelPtr array to handle models [0..maxModels]. */
- maxModels++;
- FuelCat_MaxModels(catalog) = maxModels;
- if ( (FuelCat_ModelArray(catalog) = (FuelModelPtr *)
- calloc(FuelCat_MaxModels(catalog), sizeof(FuelModelPtr))) == NULL )
- {
- fprintf(stderr,
- "Fire_FuelCatalogCreate(): imposible asignar \"%s\" con %d modelos de combustible del catálogo de combustibles.\n",
- name, maxModels);
- free(FuelCat_Error(catalog));
- free(FuelCat_Name(catalog));
- free(catalog);
- return (NULL);
- }
-
- /* Initialize variables and return ptr to this instance. */
- FuelCat_FlameArray(catalog) = NULL;
- FuelCat_FlameClasses(catalog) = 0;
- FuelCat_FlameStep(catalog) = 0.0;
- FuelCat_Status(catalog) = FIRE_STATUS_OK;
- return (catalog);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelCatalogCreateStandard()
- *
- * Description
- * Creates a new fuel model catalog capable of holding fuel models with
- * id's in the range [0..maxModel].
- * The catalog is then filled with the 13 standard fire behavior fuel
- * models. Other models may be added by subsequent calls to
- * Fire_FuelModelCreate().
- *
- * Side Effects
- * Allocates a new FuelCatalogData structure.
- * Fills the catalog with standard fuels models 0-13.
- *
- * Function Returns
- * While most FireLib functions return a status code, this one returns
- * a pointer to the new FuelCatalogData on success, or NULL if unable
- * to allocate any of the dynamic structures.
- *
- *******************************************************************************
- */
-
-FuelCatalogPtr
-Fire_FuelCatalogCreateStandard (char *name, size_t maxModels )
- // char *name; /* FuelCatalogData instance name */
- // size_t maxModels; /* maximum modelId allowed in this catalog */
-{
- FuelCatalogPtr catalog;
- double stot, seff, heat, dens, adjust;
- size_t m, p;
-
- /* Fuel model definitions. */
- typedef struct {
- char *name; double depth; double mext; size_t maxParticles; char *desc;
- } StandardModels;
-
- StandardModels M[14] = {
- {"NoFuel", 0.1, 0.01, 0, "No Combustible Fuel" },
- {"NFFL01", 1.0, 0.12, 1, "Short Grass (1 ft)" },
- {"NFFL02", 1.0, 0.15, 4, "Timber (grass & understory)" },
- {"NFFL03", 2.5, 0.25, 1, "Tall Grass (2.5 ft)" },
- {"NFFL04", 6.0, 0.20, 4, "Chaparral (6 ft)" },
- {"NFFL05", 2.0, 0.20, 3, "Brush (2 ft)" },
- {"NFFL06", 2.5, 0.25, 3, "Dormant Brush & Hardwood Slash" },
- {"NFFL07", 2.5, 0.40, 4, "Southern Rough" },
- {"NFFL08", 0.2, 0.30, 3, "Closed Timber Litter" },
- {"NFFL09", 0.2, 0.25, 3, "Hardwood Litter" },
- {"NFFL10", 1.0, 0.25, 4, "Timber (litter & understory)" },
- {"NFFL11", 1.0, 0.15, 3, "Light Logging Slash" },
- {"NFFL12", 2.3, 0.20, 3, "Medium Logging Slash" },
- {"NFFL13", 3.0, 0.25, 3, "Heavy Logging Slash" }
- };
-
- /* Fuel particle definitions. */
- typedef struct {
- size_t model; size_t type; double load; double savr;
- } StandardParticle;
-
- static StandardParticle P[39] = {
- { 1, FIRE_TYPE_DEAD, 0.0340, 3500.},
- { 2, FIRE_TYPE_DEAD, 0.0920, 3000.},
- { 2, FIRE_TYPE_DEAD, 0.0460, 109.},
- { 2, FIRE_TYPE_DEAD, 0.0230, 30.},
- { 2, FIRE_TYPE_HERB, 0.0230, 1500.},
- { 3, FIRE_TYPE_DEAD, 0.1380, 1500.},
- { 4, FIRE_TYPE_DEAD, 0.2300, 2000.},
- { 4, FIRE_TYPE_DEAD, 0.1840, 109.},
- { 4, FIRE_TYPE_DEAD, 0.0920, 30.},
- { 4, FIRE_TYPE_WOOD, 0.2300, 1500.},
- { 5, FIRE_TYPE_DEAD, 0.0460, 2000.},
- { 5, FIRE_TYPE_DEAD, 0.0230, 109.},
- { 5, FIRE_TYPE_WOOD, 0.0920, 1500.},
- { 6, FIRE_TYPE_DEAD, 0.0690, 1750.},
- { 6, FIRE_TYPE_DEAD, 0.1150, 109.},
- { 6, FIRE_TYPE_DEAD, 0.0920, 30.},
- { 7, FIRE_TYPE_DEAD, 0.0520, 1750.},
- { 7, FIRE_TYPE_DEAD, 0.0860, 109.},
- { 7, FIRE_TYPE_DEAD, 0.0690, 30.},
- { 7, FIRE_TYPE_WOOD, 0.0170, 1550.},
- { 8, FIRE_TYPE_DEAD, 0.0690, 2000.},
- { 8, FIRE_TYPE_DEAD, 0.0460, 109.},
- { 8, FIRE_TYPE_DEAD, 0.1150, 30.},
- { 9, FIRE_TYPE_DEAD, 0.1340, 2500.},
- { 9, FIRE_TYPE_DEAD, 0.0190, 109.},
- { 9, FIRE_TYPE_DEAD, 0.0070, 30.},
- {10, FIRE_TYPE_DEAD, 0.1380, 2000.},
- {10, FIRE_TYPE_DEAD, 0.0920, 109.},
- {10, FIRE_TYPE_DEAD, 0.2300, 30.},
- {10, FIRE_TYPE_WOOD, 0.0920, 1500.},
- {11, FIRE_TYPE_DEAD, 0.0690, 1500.},
- {11, FIRE_TYPE_DEAD, 0.2070, 109.},
- {11, FIRE_TYPE_DEAD, 0.2530, 30.},
- {12, FIRE_TYPE_DEAD, 0.1840, 1500.},
- {12, FIRE_TYPE_DEAD, 0.6440, 109.},
- {12, FIRE_TYPE_DEAD, 0.7590, 30.},
- {13, FIRE_TYPE_DEAD, 0.3220, 1500.},
- {13, FIRE_TYPE_DEAD, 1.0580, 109.},
- {13, FIRE_TYPE_DEAD, 1.2880, 30.},
- };
-
- /* First, create the catalog. */
- if ( maxModels < 13 )
- maxModels = 13;
- if ( (catalog = Fire_FuelCatalogCreate(name, maxModels)) == NULL )
- return (NULL);
-
- /* Second, create all 14 models. */
- adjust = 1.0;
- for ( m=0; m<14; m++ )
- {
- if ( Fire_FuelModelCreate(catalog, m, M[m].name, M[m].desc, M[m].depth,
- M[m].mext, adjust, M[m].maxParticles) != FIRE_STATUS_OK )
- {
- fprintf(stderr, "%s\n", FuelCat_Error(catalog));
- Fire_FuelCatalogDestroy(catalog);
- return (NULL);
- }
- }
-
- /* Finally, add all the fuel particles. */
- stot = 0.0555;
- seff = 0.0100;
- heat = 8000.0;
- dens = 32.0;
- for ( p=0; p<39; p++ )
- {
- if ( Fire_FuelParticleAdd(catalog, P[p].model, P[p].type, P[p].load,
- P[p].savr, dens, heat, stot, seff) != FIRE_STATUS_OK )
- {
- fprintf(stderr, "%s\n", FuelCat_Error(catalog));
- Fire_FuelCatalogDestroy(catalog);
- return (NULL);
- }
- }
-
- return (catalog);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelCatalogDestroy()
- *
- * Description
- * Destroys the fuel catalog and all its associated models and particles.
- *
- * Side Effects
- * Destroys all FuelData instances belonging to the catalog.
- * Frees the array of pointers to FuelData structures.
- * Frees the catalog name.
- * Frees the catalog error text buffer.
- * Frees the FuelCatalog instance.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FuelCatalogDestroy ( FuelCatalogPtr catalog )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance to destroy. */
-{
- size_t model;
-
- /* Validate the catalog. */
- assert(catalog!=NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
-
- /* First destroy all the fuel models in this catalog. */
- /* The free the catalog's array of FuelData pointers. */
- if ( FuelCat_ModelArray(catalog) )
- {
- for ( model=0; model <= FuelCat_MaxModels(catalog); model++ )
- {
- if ( FuelCat_ModelPtr(catalog,model) )
- Fire_FuelModelDestroy(catalog, model);
- }
- free(FuelCat_ModelArray(catalog));
- FuelCat_ModelArray(catalog) = NULL;
- }
-
- /* Next destroy the flame length table. */
- if ( FuelCat_FlameArray(catalog) )
- {
- free(FuelCat_FlameArray(catalog));
- FuelCat_FlameArray(catalog) = NULL;
- FuelCat_FlameClasses(catalog) = 0;
- FuelCat_FlameStep(catalog) = 0.0;
- }
-
- /* Then free the name and error buffer for this FuelCatalogData instance. */
- if ( FuelCat_Error(catalog) )
- {
- free(FuelCat_Error(catalog));
- FuelCat_Error(catalog) = NULL;
- }
-
- if ( FuelCat_Name(catalog) )
- {
- free(FuelCat_Name(catalog));
- FuelCat_Name(catalog) = NULL;
- }
-
- /* Finally,free the FuelCatalogData instance and return. */
- free(catalog);
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelModelCreate()
- *
- * Description
- * Creates a new fuel model able to hold maxParticles fuel particles.
- * Fuel particles are subsequently added by Fire_FuelParticleAdd().
- *
- * Side Effects
- * Any existing fuel model with modelId in the Fuel Catalog is destroyed.
- * Allocates the fuel model's FuelData block.
- * Allocates the fuel model's name string.
- * Allocates the fuel model's description string.
- * Allocates the fuel model's fuel particle pointer array of maxParticles
- * (the FuelParticleData blocks are actually allocated within
- * Fire_FuelparticleAdd() and thier pointers stored in this array).
- * The fuel model's address is stored in the fuel catalog's pointer array.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FuelModelCreate (FuelCatalogPtr catalog, size_t model, char *name, char *desc, double depth, double mext, double adjust, size_t maxParticles)
- // FuelCatalogPtr catalog; /* FuelCatalogData instance */
- // size_t model; /* fuel model number [0-maxModels] */
- // char *name; /* short name */
- // char *desc; /* longer description */
- // double depth; /* bed depth (ft) */
- // double mext; /* moisture of extinction (dl) */
- // double adjust; /* spread adjustment factor (dl) */
- // size_t maxParticles; /* maximum number of fuel model particles */
-{
- static char *blank = {""};
- size_t particle;
-
- /* Validate the catalog. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
-
- /* Make sure model id is within range. */
- if ( model > FuelCat_MaxModels(catalog) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelModelCreate(): fuel model \"%s\" number %d exceeds fuel catalog \"%s\" range [0..%d].",
- name, model, FuelCat_Name(catalog), FuelCat_MaxModels(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Validate depth and mext. */
- if ( depth < Smidgen )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelModelCreate(): el modelo de combustible \"%s\" número %d de ancho %5.4f es demasiado pequeño.",
- name, model, depth);
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- if ( mext < Smidgen )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelModelCreate(): el modelo de combustible \"%s\" número %d de humedad de extinción %5.4f es demasiado pequeño.",
- name, model, mext);
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* If this model already exists, delete it. */
- if ( FuelCat_ModelPtr(catalog,model) )
- Fire_FuelModelDestroy(catalog, model);
-
- /* Allocate the model's FuelData structure. */
- if ( maxParticles < 1 )
- maxParticles = 1;
- if ( (FuelCat_ModelPtr(catalog,model) =
- (FuelModelPtr) calloc(1, sizeof(FuelModelData))) == NULL
- || (Fuel_ParticleArray(catalog,model) =
- (PartPtr *) calloc(maxParticles, sizeof(PartPtr))) == NULL )
- {
- Fire_FuelModelDestroy(catalog, model);
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelModelCreate(): imposible asignar el modelos de combustible \"%s\" número %d para el catálogo de combustibles \"%s\".",
- name, model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Catch NULL names and descriptions. */
- if ( name == NULL )
- name = blank;
- if ( desc == NULL )
- desc = blank;
-
- /* Store remaining attributes. */
- Fuel_Model(catalog,model) = model;
- Fuel_Depth(catalog,model) = depth;
- Fuel_Mext(catalog,model) = mext;
- Fuel_SpreadAdjustment(catalog,model) = adjust;
- Fuel_Name(catalog,model) = strdup(name);
- Fuel_Desc(catalog,model) = strdup(desc);
- Fuel_CombustionFlag(catalog,model) = 0;
- Fuel_MaxParticles(catalog,model) = maxParticles;
- Fuel_Particles(catalog,model) = 0;
- for ( particle=0; particle<Fuel_MaxParticles(catalog,model); particle++ )
- Fuel_ParticlePtr(catalog,model,particle) = NULL;
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelModelDestroy()
- *
- * Description
- * Deletes the specified fuel model.
- * Note: this is one of only 3 functions that use the modelId instead
- * of a FuelData pointer to identify the model.
- *
- * Side Effects
- * Free's all fuel particles added to the fuel model.
- * Free's the fuel particle pointer array.
- * Free's the fuel model's name.
- * Free's the fuel model's description.
- * Free's the fuel model's FuelData block.
- * Sets the Fuel Catalog's pointer for this fuel model to NULL.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FuelModelDestroy ( FuelCatalogPtr catalog, size_t model )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model id number [0-maxModels] */
-{
- size_t particle;
-
- /* Validate the catalog. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
-
- /* Make sure model id is within range and exists. */
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelModelDestroy(): el modelo de combustible %d no existe en el catálogo de combustibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Free all the fuel model particles and their pointer array. */
- if ( Fuel_ParticleArray(catalog,model) )
- {
- for (particle=0; particle<Fuel_MaxParticles(catalog,model); particle++)
- {
- if ( Fuel_ParticlePtr(catalog,model,particle) )
- {
- free(Fuel_ParticlePtr(catalog,model,particle));
- Fuel_ParticlePtr(catalog,model,particle) = NULL;
- }
- }
- free(Fuel_ParticleArray(catalog,model));
- Fuel_ParticleArray(catalog,model) = NULL;
- }
-
- /* Free the fuel model name and description. */
- if ( Fuel_Name(catalog,model) )
- {
- free(Fuel_Name(catalog,model));
- Fuel_Name(catalog,model) = NULL;
- }
-
- if ( Fuel_Desc(catalog,model) )
- {
- free(Fuel_Desc(catalog,model));
- Fuel_Desc(catalog,model) = NULL;
- }
-
- /* Now free the FuelData instance and reset its catalog entry. */
- free(FuelCat_ModelPtr(catalog,model));
- FuelCat_ModelPtr(catalog,model) = NULL;
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelModelExists()
- *
- * Description
- * Performs a sanity check to make sure the catalog pointer is valid
- * and the fuel model number is within range and exists.
- *
- * Side Effects
- * None.
- *
- * Function Returns
- * 1 if "model" exists, 0 if it is undefined.
- *
- *******************************************************************************
- */
-
-int
-Fire_FuelModelExists ( FuelCatalogPtr catalog, size_t model )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model id number [0-maxModels] */
-{
- /* Validate the model number. */
- if ( model > FuelCat_MaxModels(catalog)
- || ! FuelCat_ModelPtr(catalog,model) )
- return (int) 0;
-
- return (int) 1;
-}
-
-/*
- *******************************************************************************
- *
- * Fire_FuelParticleAdd()
- *
- * Description
- * Adds a fuel particle to the specified fuel model.
- *
- * Side Effects
- * A FuelParticleData is allocated and appended to the model's array.
- * The fuel model's particle counter is incremented.
- * The fuel model's combustion flag set to 0.
- *
- * Function Returns
- * FIRE_STATUS_OK or FIRE_STATUS_ERROR.
- * Return status and error text are stored in the Fire Catalog's buffers.
- *
- *******************************************************************************
- */
-
-int
-Fire_FuelParticleAdd ( FuelCatalogPtr catalog, size_t model, size_t type, double load, double savr, double dens, double heat, double stot, double seff )
- // FuelCatalogPtr catalog; /* FuelCatalogData instance pointer */
- // size_t model; /* fuel model id number [0-maxModels] */
- // size_t type; /* FIRE_TYPE_DEAD, _TYPE_HERB, or _TYPE_WOOD */
- // double load; /* fuel load (lbs/ft2) */
- // double savr; /* surface-area-to-volume ratio (ft2/ft3) */
- // double dens; /* density (lbs/ft3) */
- // double heat; /* heat of combustion (btus/lb) */
- // double stot; /* total silica content (lb/lb) */
- // double seff; /* effective silica content (lb/lb) */
-{
- static double Size_boundary[FIRE_SIZE_CLASSES] =
- {1200., 192., 96., 48., 16., 0.};
- size_t particle, size;
-
- /* Validate the catalog. */
- assert(catalog!= NULL && FuelCat_MagicCookie(catalog)==FIRE_CATALOG_MAGIC);
-
- /* Validate the fuel model. */
- if ( ! Fire_FuelModelExists(catalog,model) )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelParticleAdd(): el modelo de combustible %d no existe en el catálogo de combustibles \"%s\".",
- model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Validate the "type" parameter. */
- if ( type != FIRE_TYPE_DEAD
- && type != FIRE_TYPE_HERB
- && type != FIRE_TYPE_WOOD )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelParticleAdd(): el modelo de combustible %d de tipo de valor (arg #3) no es FIRE_TYPE_DEAD, FIRE_TYPE_HERB, o FIRE_TYPE_WOOD.",
- model);
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Allocate a new FuelParticle */
- particle = Fuel_Particles(catalog,model);
- if ( (Fuel_ParticlePtr(catalog,model,particle) =
- (PartPtr) calloc(1, sizeof(FuelParticleData))) == NULL )
- {
- sprintf(FuelCat_Error(catalog),
- "Fire_FuelParticleAdd(): imposible asignar la partícula de combustible al modelo de combustible \"%s\" número %d en el catálogo de combustibles \"%s\".",
- Fuel_Name(catalog,model), model, FuelCat_Name(catalog));
- return (FuelCat_Status(catalog) = FIRE_STATUS_ERROR);
- }
-
- /* Store the input particle attributes. */
- Fuel_Type(catalog,model,particle) = type;
- Fuel_Load(catalog,model,particle) = load;
- Fuel_Savr(catalog,model,particle) = savr;
- Fuel_Density(catalog,model,particle) = dens;
- Fuel_Heat(catalog,model,particle) = heat;
- Fuel_SiTotal(catalog,model,particle) = stot;
- Fuel_SiEffective(catalog,model,particle)= seff;
-
- /* Fuel life category. */
- Fuel_Live(catalog,model,particle) =
- (type==FIRE_TYPE_DEAD) ? FIRE_LIFE_DEAD : FIRE_LIFE_LIVE;
-
- /* Fuel particle surface area. */
- Fuel_SurfaceArea(catalog,model,particle) =
- (dens > Smidgen) ? load * savr / dens : 0.;
-
- /* Particle SAVR exponent factor. */
- Fuel_SigmaFactor(catalog,model,particle) =
- (savr > Smidgen) ? exp(-138. / savr) : 0.;
-
- /* Particle size class. */
- for ( size=0; savr < Size_boundary[size]; size++ )
- /* NOTHING */ ;
- Fuel_SizeClass(catalog,model,particle) = size;
-
- /* Initialize particle attributes that are bed & environ dependent. */
- Fuel_AreaWtg(catalog,model,particle) = 0.;
- Fuel_SizeAreaWtg(catalog,model,particle) = 0.;
- Fuel_Moisture(catalog,model,particle) = 0.;
-
- /* Increment the fuel model's particle counter and reset it flag. */
- Fuel_Particles(catalog,model)++;
- Fuel_CombustionFlag(catalog,model) = 0;
-
- return (FuelCat_Status(catalog) = FIRE_STATUS_OK);
-}
-
-/*
- *******************************************************************************
- * End of fireLib.c
- *******************************************************************************
- */
diff --git a/src/modules_simulation/fire/sim_fire_spreading/fireLib.h b/src/modules_simulation/fire/sim_fire_spreading/fireLib.h
deleted file mode 100644
index 8745843..0000000
--- a/src/modules_simulation/fire/sim_fire_spreading/fireLib.h
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- *******************************************************************************
- *
- * fireLib.h
- *
- * Description
- * Library of BEHAVE (Andrews 1986) fire behavior algorithms
- * encapsulated and optimized for fire behavior simulation.
- *
- * Legalities
- * Copyright (c) 1996 Collin D. Bevins.
- * See the file "license.txt" for information on usage and
- * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- *
- * Description
- * This header file describes the externally-visible facilities of
- * the Fire Behavior Library C API.
- *
- * This file really needs to be split into public and private portions.
- *
- * History
- * 1996/09/04 Version 1.0.0 release.
- * 1999/03/05 Fixed NNFL07 live SAVR from 1500 to 1550.
- *
- *******************************************************************************
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#ifndef _FIRE_LIB
-#define _FIRE_LIB 1
-
-#define FIRELIB_VERSION "1.0"
-#define FIRELIB_MAJOR_VERSION 1
-#define FIRELIB_MINOR_VERSION 0
-#define FIRELIB_PATCH_LEVEL 1
-
-/*
- *------------------------------------------------------------------------------
- * Definitions that allow this header file to be used either with or
- * without ANSI C features like function prototypes.
- *------------------------------------------------------------------------------
- */
-
-#undef _ANSI_ARGS_
-#undef CONST
-#if ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus)
-# define _USING_PROTOTYPES_ 1
-# define _ANSI_ARGS_(x) x
-# define CONST const
-# ifdef __cplusplus
-# define VARARGS(first) (first, ...)
-# else
-# define VARARGS(first) ()
-# endif
-#else
-# define _ANSI_ARGS_(x) ()
-# define CONST
-#endif
-
-#ifdef __cplusplus
-# define EXTERN extern "C"
-#else
-# define EXTERN extern
-#endif
-
-/*
- *------------------------------------------------------------------------------
- * Macro to use instead of "void" for arguments that must have type "void *"
- * in ANSI C; maps them to type "char *" in non-ANSI systems.
- *------------------------------------------------------------------------------
- */
-
-#ifndef VOID
-# ifdef __STDC__
-# define VOID void
-# else
-# define VOID char
-# endif
-#endif
-
-/*
- *------------------------------------------------------------------------------
- * Macro pseudo functions.
- *------------------------------------------------------------------------------
- */
-
-#define Smidgen (0.000001)
-#define DegreesToRadians(x) ((x)*0.017453293)
-#define RadiansToDegrees(x) ((x)*57.29577951)
-#define IsZero(x) (fabs(x)<Smidgen)
-#define Equal(x,y) (fabs((x)-(y))<Smidgen)
-
-/*
- *------------------------------------------------------------------------------
- * Firelib return status codes.
- *------------------------------------------------------------------------------
- */
-
-#define FIRE_STATUS_OK (0)
-#define FIRE_STATUS_ERROR (-1)
-#define FIRE_STATUS_EOF (1)
-
-/*
- *------------------------------------------------------------------------------
- * Fuel moisture and mass weighting classes.
- *------------------------------------------------------------------------------
- */
-
-#define FIRE_LIFE_CATS (2) /* Number of fuel particle life categories */
-#define FIRE_LIFE_DEAD (0)
-#define FIRE_LIFE_LIVE (1)
-
-#define FIRE_SIZE_CLASSES (6) /* Number of mass weighting classes. */
-
-#define FIRE_MCLASSES (6) /* Number of fuel moisture classes. */
-#define FIRE_MCLASS_1HR (0)
-#define FIRE_MCLASS_10HR (1)
-#define FIRE_MCLASS_100HR (2)
-#define FIRE_MCLASS_1000HR (3)
-#define FIRE_MCLASS_HERB (4)
-#define FIRE_MCLASS_WOOD (5)
-
-/*
- *------------------------------------------------------------------------------
- * FuelParticleData structure: fuel particle input and intermediate attributes.
- *------------------------------------------------------------------------------
- */
-
-typedef struct fuelParticleDataStruct
-{
- /* INPUT */
- double load; /* fuel loading (lb/sqft) */
- double savr; /* surface area-to-volume ratio (1/ft) */
- double dens; /* particle density (lb/cuft) */
- double heat; /* heat of combustion (BTU/lb) */
- double stot; /* total silica content (fraction odw) */
- double seff; /* effective silica content (fraction odw) */
- /* PARTICLE_DEPENDENT */
- double area; /* surface area */
- double sigma; /* exp(-138./sigma) (dl) */
- /* MODEL-DEPENDENT */
- double awtg; /* surface area derived weighting factor (dl) */
- double gwtg; /* size class area weighting factor */
- /* ENVIRONMENT-DEPENDENT */
- double mois; /* particle moisture content (fraction) */
- size_t live; /* life category 0=dead, 1=live */
- size_t type; /* type category 0=dead, 1=herb, 2=live woody */
- size_t sizeClass; /* fuel moisture size class */
-} FuelParticleData, *FuelParticlePtr, *PartPtr;
-
-#define FIRE_TYPE_DEAD (1)
-#define FIRE_TYPE_HERB (2)
-#define FIRE_TYPE_WOOD (3)
-
-/* FuelParticleData structure access macros. */
-
-#define Fuel_Live(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->live)
-
-#define Fuel_Type(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->type)
-
-#define Fuel_SizeClass(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->sizeClass)
-
-#define Fuel_Load(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->load)
-
-#define Fuel_Savr(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->savr)
-
-#define Fuel_Heat(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->heat)
-
-#define Fuel_Density(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->dens)
-
-#define Fuel_SiTotal(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->stot)
-
-#define Fuel_SiEffective(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->seff)
-
-#define Fuel_SurfaceArea(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->area)
-
-#define Fuel_AreaWtg(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->awtg)
-
-#define Fuel_SizeAreaWtg(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->gwtg)
-
-#define Fuel_SigmaFactor(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->sigma)
-
-#define Fuel_Moisture(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)]->mois)
-
-/*
- *------------------------------------------------------------------------------
- * FuelModelData structure: fuel model bed input attributes.
- *------------------------------------------------------------------------------
- */
-
-typedef struct fuelModelDataStruct
-{
- /* Input variables. */
- size_t modelId; /* fuel model number */
- size_t combustion; /* 0 if combustion not yet calculated */
- size_t maxParticles; /* maximum number of FuelParticles */
- size_t particles; /* current number of FuelParticles */
- PartPtr *partPtr; /* array of pointers to Fuel Particles */
- char *name; /* fuel model short name */
- char *desc; /* fuel model description text */
- char *reserved1; /* used for alignment */
- double depth; /* fuel bed depth (ft) */
- double mext; /* dead fuel extinction moisture (fraction) */
- double adjust; /* spread rate adjustment factor (dl) */
- /* Combustion intermediates. */
- double awtg[2]; /* dead & live fuel area weighting factors */
- double rxFactor[2]; /* dead and live fuel rx factors */
- double fineDead; /* fine dead fuel ratio */
- double liveFactor; /* live fuel moisture extinction factor */
- double rhob; /* fuel bed bulk density */
- double taur; /* residence time (min) */
- double propFlux; /* propagating flux ratio */
- double slopeK; /* slope parameter 'k' */
- double windB; /* wind parameter 'b' */
- double windE; /* wind parameter (ratio**e/c) */
- double windK; /* wind parameter (c * ratio**-e) */
- /* Current environment. */
- double moisture[FIRE_MCLASSES]; /* array of fuel moistures (fraction odw) */
- double windFpm; /* wind speed (ft/min) */
- double windDeg; /* wind vector (degrees from upslope) */
- double slope; /* slope (rise/reach) */
- double aspect; /* aspect (downslope) azimuth (compass degs) */
- /* Updated by Fire_SpreadNoWindNoSlope() */
- double rxInt; /* reaction intensity (BTU/sqft/min) */
- double spread0; /* no-wind, no-slope spread rate (ft/min) */
- double hpua; /* heat per unit area (BTU/sqft) */
- /* Updated by Fire_SpreadWindSlopeMax() */
- double spreadMax; /* spread in direction of max spread (ft/min) */
- double azimuthMax; /* direction of maximum spread (degrees) */
- double effWind; /* effective windspeed */
- double lwRatio; /* length-to-width ratio for eff windspeed */
- double eccentricity; /* eccentricity of ellipse for eff windspeed */
- double phiW; /* wind factor */
- double phiS; /* slope factor */
- double phiEw; /* combined wind-slope factor */
- size_t wLimit; /* wind limit 0=not reached, 1=reached */
- size_t reserved2; /* used for alignment */
- /* Updated by Fire_SpreadAtAzimuth() */
- double spreadAny; /* spread rate at arbitrary azimuth (ft/min) */
- double azimuthAny; /* direction of arbitrary spread (degrees) */
- double byrams; /* fireline intensity (BTU/ft/s) */
- double flame; /* flame length (ft) */
- double scorch; /* scorch height (ft) */
-} FuelModelData, *FuelModelPtr;
-
-/* Fuel model input variable macros. */
-#define Fuel_Model(catalog,model) \
- ((catalog)->modelPtr[(model)]->modelId)
-
-#define Fuel_Name(catalog,model) \
- ((catalog)->modelPtr[(model)]->name)
-
-#define Fuel_Desc(catalog,model) \
- ((catalog)->modelPtr[(model)]->desc)
-
-#define Fuel_Depth(catalog,model) \
- ((catalog)->modelPtr[(model)]->depth)
-
-#define Fuel_Mext(catalog,model) \
- ((catalog)->modelPtr[(model)]->mext)
-
-#define Fuel_SpreadAdjustment(catalog,model) \
- ((catalog)->modelPtr[(model)]->adjust)
-
-#define Fuel_CombustionFlag(catalog,model) \
- ((catalog)->modelPtr[(model)]->combustion)
-
-#define Fuel_MaxParticles(catalog,model) \
- ((catalog)->modelPtr[(model)]->maxParticles)
-
-#define Fuel_Particles(catalog,model) \
- ((catalog)->modelPtr[(model)]->particles)
-
-#define Fuel_ParticleArray(catalog,model) \
- ((catalog)->modelPtr[(model)]->partPtr)
-
-#define Fuel_ParticlePtr(catalog,model,particle) \
- ((catalog)->modelPtr[(model)]->partPtr[(particle)])
-
-/* Fuel model combustion intermediates macros. */
-#define Fuel_LifeAreaWtg(catalog,model,life) \
- ((catalog)->modelPtr[(model)]->awtg[(life)])
-
-#define Fuel_LifeRxFactor(catalog,model,life) \
- ((catalog)->modelPtr[(model)]->rxFactor[(life)])
-
-#define Fuel_FineDead(catalog,model) \
- ((catalog)->modelPtr[(model)]->fineDead)
-
-#define Fuel_LiveMextFactor(catalog,model) \
- ((catalog)->modelPtr[(model)]->liveFactor)
-
-#define Fuel_BulkDensity(catalog,model) \
- ((catalog)->modelPtr[(model)]->rhob)
-
-#define Fuel_ResidenceTime(catalog,model) \
- ((catalog)->modelPtr[(model)]->taur)
-
-#define Fuel_PropFlux(catalog,model) \
- ((catalog)->modelPtr[(model)]->propFlux)
-
-#define Fuel_SlopeK(catalog,model) \
- ((catalog)->modelPtr[(model)]->slopeK)
-
-#define Fuel_WindB(catalog,model) \
- ((catalog)->modelPtr[(model)]->windB)
-
-#define Fuel_WindE(catalog,model) \
- ((catalog)->modelPtr[(model)]->windE)
-
-#define Fuel_WindK(catalog,model) \
- ((catalog)->modelPtr[(model)]->windK)
-
-/* Fuel model fire behavior variable macros. */
-#define Fuel_RxIntensity(catalog,model) \
- ((catalog)->modelPtr[(model)]->rxInt)
-
-#define Fuel_Spread0(catalog,model) \
- ((catalog)->modelPtr[(model)]->spread0)
-
-#define Fuel_HeatPerUnitArea(catalog,model) \
- ((catalog)->modelPtr[(model)]->hpua)
-
-#define Fuel_SpreadMax(catalog,model) \
- ((catalog)->modelPtr[(model)]->spreadMax)
-
-#define Fuel_AzimuthMax(catalog,model) \
- ((catalog)->modelPtr[(model)]->azimuthMax)
-
-#define Fuel_SpreadAny(catalog,model) \
- ((catalog)->modelPtr[(model)]->spreadAny)
-
-#define Fuel_AzimuthAny(catalog,model) \
- ((catalog)->modelPtr[(model)]->azimuthAny)
-
-#define Fuel_EffectiveWind(catalog,model) \
- ((catalog)->modelPtr[(model)]->effWind)
-
-#define Fuel_LwRatio(catalog,model) \
- ((catalog)->modelPtr[(model)]->lwRatio)
-
-#define Fuel_Eccentricity(catalog,model) \
- ((catalog)->modelPtr[(model)]->eccentricity)
-
-#define Fuel_PhiWind(catalog,model) \
- ((catalog)->modelPtr[(model)]->phiW)
-
-#define Fuel_PhiSlope(catalog,model) \
- ((catalog)->modelPtr[(model)]->phiS)
-
-#define Fuel_PhiEffWind(catalog,model) \
- ((catalog)->modelPtr[(model)]->phiEw)
-
-#define Fuel_WindLimit(catalog,model) \
- ((catalog)->modelPtr[(model)]->wLimit)
-
-#define Fuel_ByramsIntensity(catalog,model) \
- ((catalog)->modelPtr[(model)]->byrams)
-
-#define Fuel_FlameLength(catalog,model) \
- ((catalog)->modelPtr[(model)]->flame)
-
-#define Fuel_ScorchHeight(catalog,model) \
- ((catalog)->modelPtr[(model)]->scorch)
-
-/* Fuel model environment variable macros. */
-#define Fuel_EnvMoisture(catalog,model,mclass) \
- ((catalog)->modelPtr[(model)]->moisture[(mclass)])
-
-#define Fuel_WindSpeed(catalog,model) \
- ((catalog)->modelPtr[(model)]->windFpm)
-
-#define Fuel_WindDir(catalog,model) \
- ((catalog)->modelPtr[(model)]->windDeg)
-
-#define Fuel_Slope(catalog,model) \
- ((catalog)->modelPtr[(model)]->slope)
-
-#define Fuel_Aspect(catalog,model) \
- ((catalog)->modelPtr[(model)]->aspect)
-
-/*
- *------------------------------------------------------------------------------
- * FuelCatData structure; provides a complete fuel catalog.
- *------------------------------------------------------------------------------
- */
-
-#define FIRE_CATALOG_MAGIC (19520904L)
-#define FIRE_ERROR_BUFFER_SIZE (1024)
-
-typedef struct fuelCatalogStruct
-{
- long magicCookie; /* magic cookie for sanity checking */
- int status; /* return status of most recent call */
- size_t maxModels; /* maximum number of models in this catalog */
- size_t flameClasses; /* size of the flame length array */
- char *name; /* name for this catalog instance */
- char *error; /* error message buffer */
- FuelModelPtr *modelPtr; /* array of ModelPtr[maxModels+1] */
- double *flamePtr; /* flame length lookup array */
- double flameStep; /* size of each flame length table class (ft) */
-} FuelCatalogData, *FuelCatalogPtr;
-
-#define FuelCat_MagicCookie(catalog) (catalog->magicCookie)
-#define FuelCat_MaxModels(catalog) (catalog->maxModels)
-#define FuelCat_Status(catalog) (catalog->status)
-#define FuelCat_FlameClasses(catalog) (catalog->flameClasses)
-#define FuelCat_FlameStep(catalog) (catalog->flameStep)
-#define FuelCat_FlameArray(catalog) (catalog->flamePtr)
-#define FuelCat_Name(catalog) (catalog->name)
-#define FuelCat_Error(catalog) (catalog->error)
-#define FuelCat_ModelArray(catalog) (catalog->modelPtr)
-#define FuelCat_ModelPtr(catalog,model) (catalog->modelPtr[model])
-
-/*
- *------------------------------------------------------------------------------
- * Function prototypes for fire behavior computations.
- *------------------------------------------------------------------------------
- */
-
-#define FIRE_NONE (0)
-#define FIRE_BYRAMS (1)
-#define FIRE_FLAME (2)
-#define FIRE_SCORCH (4)
-
-EXTERN int Fire_FlameScorch _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model, /* fuel model number [0-maxModels] */
- size_t doWhich /* FIRE_NONE | FIRE_BYRAMS | FIRE_FLAME | FIRE_SCORCH */
- )) ;
-
-EXTERN int Fire_FuelCombustion _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model /* fuel model number [0-maxModels] */
- )) ;
-
-EXTERN int Fire_SpreadNoWindNoSlope _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model, /* fuel model number [0-maxModels] */
- double moisture[FIRE_MCLASSES] /* array of fuel moistures (fractions) */
- )) ;
-
-EXTERN int Fire_SpreadWindSlopeMax _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model, /* fuel model number [0-maxModels] */
- double windFpm, /* wind speed (ft/min) */
- double windDeg, /* wind bearing vector (compass degs) */
- double slope, /* slope (rise/reach) */
- double aspect /* aspect (downslope) azimuth (compass degs) */
- )) ;
-
-EXTERN int Fire_SpreadAtAzimuth _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model, /* fuel model number [0-maxModels] */
- double azimuth, /* fire spread azimuth (deg from upslope) */
- size_t doWhich /* FIRE_NONE | FIRE_BYRAMS | FIRE_FLAME | FIRE_SCORCH */
- )) ;
-
-/*
- *------------------------------------------------------------------------------
- * Function prototypes for creating and destroying fuel catalogs, fuel models,
- * fuel particles, and flame length tables.
- *------------------------------------------------------------------------------
- */
-
-EXTERN int Fire_FlameLengthTable _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t flameClasses, /* number of flame length classes */
- double flameStep /* flame length step value per class */
- )) ;
-
-EXTERN FuelCatalogPtr Fire_FuelCatalogCreate _ANSI_ARGS_((
- char *name, /* FuelCatalogData instance name */
- size_t maxModels /* maximum modelId allowed in this catalog */
- )) ;
-
-EXTERN FuelCatalogPtr Fire_FuelCatalogCreateStandard _ANSI_ARGS_((
- char *name, /* FuelCatalogData instance name */
- size_t maxModels /* maximum modelId allowed in this catalog */
- )) ;
-
-EXTERN int Fire_FuelCatalogDestroy _ANSI_ARGS_((
- FuelCatalogPtr catalog /* FuelCatalogData instance pointer */
- )) ;
-
-EXTERN int Fire_FuelModelCreate _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance */
- size_t model, /* fuel model number [0-maxModels] */
- char *name, /* short name */
- char *desc, /* longer description */
- double depth, /* bed depth (ft) */
- double mext, /* moisture of extinction (dl) */
- double adjust, /* spread adjustment factor (dl) */
- size_t maxParticles /* maximum number of fuel model particles */
- )) ;
-
-EXTERN int Fire_FuelModelDestroy _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model /* fuel model id number [0-maxModels] */
- )) ;
-
-EXTERN int Fire_FuelModelExists _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model /* fuel model id number [0-maxModels] */
- )) ;
-
-EXTERN int Fire_FuelParticleAdd _ANSI_ARGS_((
- FuelCatalogPtr catalog, /* FuelCatalogData instance pointer */
- size_t model, /* fuel model id number [0-maxModels] */
- size_t type, /* FIRE_TYPE_DEAD, _TYPE_HERB, or _TYPE_WOOD */
- double load, /* fuel load (lbs/ft2) */
- double savr, /* surface-area-to-volume ratio (ft2/ft3) */
- double dens, /* density (lbs/ft3) */
- double heat, /* heat of combustion (btus/lb) */
- double stot, /* total silica content (lb/lb) */
- double seff /* effective silica content (lb/lb) */
- )) ;
-
-#ifdef NEED_STRDUP
-char *strdup ( const char *str ) ;
-#endif
-
-#endif
-
-/*
- *******************************************************************************
- * End of fireLib.h
- *******************************************************************************
- */
--
Saga GIS
More information about the Pkg-grass-devel
mailing list