diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0416f8f..b636cb8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,11 +16,12 @@ PROJECT(behave)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/behave)
# optional test executable
-OPTION(TEST_BEHAVE "Enable Testing" ON)
-OPTION(TEST_MORTALITY "Enable Mortality Testing" ON)
+OPTION(TEST_BEHAVE "Enable Testing" OFF)
+OPTION(TEST_MORTALITY "Enable Mortality Testing" OFF)
# optional stand-alone executables
-OPTION(EXAMPLE_APP "Example client application" ON)
+OPTION(EXAMPLE_APP "Example client application" OFF)
+OPTION(LIBRARY "DLL with wrapper for C#" ON)
OPTION(RAWS_BATCH "Enable Behave RAWS Data Batch Reader" OFF)
OPTION(COMPUTE_SPOT_PILE "Build pile spot fire distance calculator" OFF)
OPTION(COMPUTE_SPOT_SURFACE "Build surface spot fire distance calculator" OFF)
@@ -200,3 +201,12 @@ IF(COMPUTE_SPOT_TORCHING_TREES)
src/spotDistanceTorchingTrees/computeTorchingTreesSpottingDistance.cpp
${HEADERS})
ENDIF()
+
+IF(LIBRARY)
+ ADD_LIBRARY(Behave
+ SHARED
+ ${SOURCE}
+ swig/behave_csharp_wrap.cxx
+ ${HEADERS})
+ TARGET_LINK_LIBRARIES(Behave)
+ENDIF()
\ No newline at end of file
diff --git a/docs/classCrown-members.html b/docs/classCrown-members.html
index cf61f10..88fc27b 100644
--- a/docs/classCrown-members.html
+++ b/docs/classCrown-members.html
@@ -138,10 +138,12 @@
-
-
-
193 enum CrownModelTypeEnum
-
-
-
-
-
+
159 double getDirectionOfMaxSpread(){
return surfaceFuel_.getDirectionOfMaxSpread(); }
+
160 double getFireEccentricity() {
return surfaceFuel_.getFireEccentricity(); }
+
161 int getFuelModelNumber()
const;
+
162 double getMoistureOneHour(FractionUnits::FractionUnitsEnum moistureUnits)
const;
+
163 double getMoistureTenHour(FractionUnits::FractionUnitsEnum moistureUnits)
const;
+
164 double getMoistureHundredHour(FractionUnits::FractionUnitsEnum moistureUnits)
const;
+
165 double getMoistureLiveHerbaceous(FractionUnits::FractionUnitsEnum moistureUnits)
const;
+
166 double getMoistureLiveWoody(FractionUnits::FractionUnitsEnum moistureUnits)
const;
+
167 int getNumberOfMoistureScenarios();
+
168 int getMoistureScenarioIndexByName(std::string name);
+
169 bool getIsMoistureScenarioDefinedByName(std::string name);
+
170 std::string getMoistureScenarioDescriptionByName(std::string name);
+
171 double getMoistureScenarioOneHourByName(std::string name, FractionUnits::FractionUnitsEnum moistureUnits);
+
172 double getMoistureScenarioTenHourByName(std::string name, FractionUnits::FractionUnitsEnum moistureUnits);
+
173 double getMoistureScenarioHundredHourByName(std::string name, FractionUnits::FractionUnitsEnum moistureUnits);
+
174 double getMoistureScenarioLiveHerbaceousByName(std::string name, FractionUnits::FractionUnitsEnum moistureUnits);
+
175 double getMoistureScenarioLiveWoodyByName(std::string name, FractionUnits::FractionUnitsEnum moistureUnits);
+
176 bool getIsMoistureScenarioDefinedByIndex(
int index);
+
177 std::string getMoistureScenarioNameByIndex(
int index);
+
178 std::string getMoistureScenarioDescriptionByIndex(
int index);
+
179 double getMoistureScenarioOneHourByIndex(
int index, FractionUnits::FractionUnitsEnum moistureUnits);
+
180 double getMoistureScenarioTenHourByIndex(
int index, FractionUnits::FractionUnitsEnum moistureUnits);
+
181 double getMoistureScenarioHundredHourByIndex(
int index, FractionUnits::FractionUnitsEnum moistureUnits);
+
182 double getMoistureScenarioLiveHerbaceousByIndex(
int index, FractionUnits::FractionUnitsEnum moistureUnits);
+
183 double getMoistureScenarioLiveWoodyByIndex(
int index, FractionUnits::FractionUnitsEnum moistureUnits);
+
184 double getWindSpeed(SpeedUnits::SpeedUnitsEnum windSpeedUnits, WindHeightInputMode::WindHeightInputModeEnum windHeightInputMode)
const;
+
185 double getWindDirection()
const;
+
186 double getSlope(SlopeUnits::SlopeUnitsEnum slopeUnits)
const;
+
187 double getAspect()
const;
+
188 double getCanopyCover(FractionUnits::FractionUnitsEnum canopyCoverUnits)
const;
+
189 double getCanopyHeight(LengthUnits::LengthUnitsEnum canopyHeighUnits)
const;
+
190 double getCrownRatio(FractionUnits::FractionUnitsEnum crownRatioUnits)
const;
+
+
+
+
+
+
195 enum CrownModelTypeEnum
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
210 void memberwiseCopyAssignment(
const Crown& rhs);
-
211 void calculateCrownFireActiveWindSpeed();
-
212 void calculateCanopyHeatPerUnitArea();
-
213 void calculateCrownFireHeatPerUnitArea();
-
214 void calculateCrownFuelLoad();
-
215 void calculateCrownFirelineIntensity();
-
216 void calculateCrownFlameLength();
-
217 void calculatePassiveCrownFlameLength();
-
218 void calculateSurfaceFireCriticalSpreadRateScottAndReinhardt();
-
219 void calculateCrownCriticalFireSpreadRate();
-
220 void calculateCrownCriticalSurfaceFireIntensity();
-
221 void calculateCrownCriticalSurfaceFlameLength();
-
222 void calculateCrownFireTransitionRatio();
-
223 void calculateCrownFireActiveRatio();
-
224 void calculateFireTypeRothermel();
-
225 void calculateFireTypeScottAndReinhardt();
-
226 void calculateWindSpeedAtTwentyFeet();
-
227 void calculateCrowningSurfaceFireRateOfSpread();
-
228 void calculateCrownFractionBurned();
-
229 void assignFinalFireBehaviorBasedOnFireType(CrownModelType::CrownModelTypeEnum);
-
-
-
232 FireType::FireTypeEnum fireType_;
-
233 double surfaceFireHeatPerUnitArea_;
-
234 double surfaceFirelineIntensity_;
-
235 double surfaceFireSpreadRate_;
-
236 double surfaceFireFlameLength_;
-
237 double surfaceFireCriticalSpreadRate_;
-
238 double crownFuelLoad_;
-
239 double canopyHeatPerUnitArea_;
-
240 double crownFireHeatPerUnitArea_;
-
241 double crownFirelineIntensity_;
-
242 double crownFlameLength_;
-
243 double crownFireSpreadRate_;
-
244 double crownCriticalSurfaceFirelineIntensity_;
-
245 double crownCriticalFireSpreadRate_;
-
246 double crownCriticalSurfaceFlameLength_;
-
247 double crownFireActiveRatio_;
-
248 double crownFireTransitionRatio_;
-
249 double crownFireLengthToWidthRatio_;
-
250 double crownFireActiveWindSpeed_;
-
251 double crownFractionBurned_;
-
252 double crowningSurfaceFireRos_;
-
253 double windSpeedAtTwentyFeet_;
-
-
255 double finalSpreadRate_;
-
256 double finalHeatPerUnitArea_;
-
257 double finalFirelineIntesity_;
-
258 double finalFlameLength_;
-
-
260 double passiveCrownFireSpreadRate_;
-
261 double passiveCrownFireHeatPerUnitArea_;
-
262 double passiveCrownFireLineIntensity_;
-
263 double passiveCrownFireFlameLength_;
-
-
-
266 bool isPassiveCrownFire_;
-
267 bool isActiveCrownFire_;
-
-
+
+
+
+
+
+
+
+
+
+
+
+
212 void memberwiseCopyAssignment(
const Crown& rhs);
+
213 void calculateCrownFireActiveWindSpeed();
+
214 void calculateCanopyHeatPerUnitArea();
+
215 void calculateCrownFireHeatPerUnitArea();
+
216 void calculateCrownFuelLoad();
+
217 void calculateCrownFirelineIntensity();
+
218 void calculateCrownFlameLength();
+
219 void calculatePassiveCrownFlameLength();
+
220 void calculateSurfaceFireCriticalSpreadRateScottAndReinhardt();
+
221 void calculateCrownCriticalFireSpreadRate();
+
222 void calculateCrownCriticalSurfaceFireIntensity();
+
223 void calculateCrownCriticalSurfaceFlameLength();
+
224 void calculateCrownFireTransitionRatio();
+
225 void calculateCrownFireActiveRatio();
+
226 void calculateFireTypeRothermel();
+
227 void calculateFireTypeScottAndReinhardt();
+
228 void calculateWindSpeedAtTwentyFeet();
+
229 void calculateCrowningSurfaceFireRateOfSpread();
+
230 void calculateCrownFractionBurned();
+
231 void assignFinalFireBehaviorBasedOnFireType(CrownModelType::CrownModelTypeEnum);
+
+
+
234 FireType::FireTypeEnum fireType_;
+
235 double surfaceFireHeatPerUnitArea_;
+
236 double surfaceFirelineIntensity_;
+
237 double surfaceFireSpreadRate_;
+
238 double surfaceFireFlameLength_;
+
239 double surfaceFireCriticalSpreadRate_;
+
240 double crownFuelLoad_;
+
241 double canopyHeatPerUnitArea_;
+
242 double crownFireHeatPerUnitArea_;
+
243 double crownFirelineIntensity_;
+
244 double crownFlameLength_;
+
245 double crownFireSpreadRate_;
+
246 double crownCriticalSurfaceFirelineIntensity_;
+
247 double crownCriticalFireSpreadRate_;
+
248 double crownCriticalSurfaceFlameLength_;
+
249 double crownFireActiveRatio_;
+
250 double crownFireTransitionRatio_;
+
251 double crownFireLengthToWidthRatio_;
+
252 double crownFireActiveWindSpeed_;
+
253 double crownFractionBurned_;
+
254 double crowningSurfaceFireRos_;
+
255 double windSpeedAtTwentyFeet_;
+
+
257 double finalSpreadRate_;
+
258 double finalHeatPerUnitArea_;
+
259 double finalFirelineIntesity_;
+
260 double finalFlameLength_;
+
+
262 double passiveCrownFireSpreadRate_;
+
263 double passiveCrownFireHeatPerUnitArea_;
+
264 double passiveCrownFireLineIntensity_;
+
265 double passiveCrownFireFlameLength_;
+
+
+
268 bool isPassiveCrownFire_;
+
269 bool isActiveCrownFire_;
+
+
-