Upload
gervase-doyle
View
218
Download
0
Tags:
Embed Size (px)
Citation preview
Cooperative FVS !
Functional Requirements for a Shared Library Version of FVS, or
Calling FVS from R!
Nicholas L. Crookston Rocky Mountain Research Station
December 9, 2011
Growth Model Users Group
World Forestry Center Portland, Oregon
Cooperative FVS !
Contents:• Goals: my vision for opening FVS to more
model builders and more uses.• Strategy: my current direction and progress.• Your feedback: what do you think?
Cooperative FVS !
Goals:• Provide a for interaction between FVS and
other models at each time step of a simulation. Make it easy for other models to:– modify growth and mortality rates,– define harvests, – predict establishment (add trees), and– create custom reports.
Cooperative FVS !
Goals:• Provide for interaction at each time step for
collections of stands. – Run FVS for a time step for thousands of stands,
stop the program, and restart from the stopping point perhaps at a later date.
– Support parallel computing for this class of problem.
Cooperative FVS !
Goals:• Replace the obsolete commercial library that
supports the FVS database connectivity with code that runs on 64 bit Windows, Linux, and Mac OSX.
• Achieve these new capabilities without making major changes to the current code.
• Keep the current capabilities, that is, don’t break what we have (including Suppose).
Cooperative FVS !
Goals:• Provide a way forward where we can
incrementally “build and replace” existing tools.
• A motive is to eventually replace the keyword commands and the Event Monitor with R scripts.
Cooperative FVS !
Strategy:• Build FVS as a shared library (.dll in
Windows, .so otherwise).• Create an Application Program Interface (API)
that provides for interaction between FVS and other programs.
• Demonstrate the use of the API in R• Use the same source for the shared library as
used in the full program.
Cooperative FVS !
Strategy:• Provide for using these new capabilities from
the traditional program when appropriate. • Other systems besides R can use the library,
but make sure it works with R.• For the database problem, replace the library
with a custom built C language layer that translates the Fortran callable functions to the ODBC library functions.
Cooperative FVS !
Progress:• The database problem is solved. It runs on
Linux using unixODBC and Windows.• FVS is built as a shared library using gfortran
and gcc (using the Rtools tools set).• Most of the goals have been addressed.
Cooperative FVS !
Progress:• I have demonstrated that this code works as a
shared library from R and provides the same output when run as a stand alone program from a command line. This is done on Linux (64 bit) and Windows.
Cooperative FVS !
Progress:• The API is taking shape. Functions to get and
set tree attributes have been tested in R. • A function to “add trees” has been written but
not tested.• A function to set the “proportion to Cut” for
each tree is being built.• A function to add “FVS activities” on the fly
is planned.
Cooperative FVS !
Progress:• The ability to store the FVS memory, stop the
program, restart the program and continue from where computation left off has been built and tested from both R and the command line.
• A strategy for using all this with Suppose as the GUI has been thought through.
Cooperative FVS !
Closing remarks:• I’m concentrating on the highest priorities,
mostly centered on interoperation with other models.
• Absent, for example, is a way to enter inventory data from scratch directly from R and to set the run options (I still rely on the keyword file and FVS’s initialization code).
• Suppose is still relevant.
Cooperative FVS !
Open discussion:• What is important to you?• Questions/comments?• Write to me at: [email protected]