00001 
00026 #ifndef RothFuelModel_H
00027 #define RothFuelModel_H
00028 
00029 #include <stdlib.h>
00030 #include <stdio.h>
00031 #include <math.h>
00032 
00033 #include "Units.h"
00034 #include "FStreamIO.h"
00035 #include "Err.h"
00036 #include "FuelSizeClasses.h"
00037 #include "RothPipeline.h"
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00047 
00048 #define ROTH_FM_FMD_SEPARATOR_CHARS         (" =,\t")
00049 #define ROTH_FM_FMD_COMMENT_CHAR            ("#")
00050 #define ROTH_FM_FMD_KEYWORD_METRIC          ("METRIC")
00051 #define ROTH_FM_FMD_KEYWORD_ENGLISH         ("ENGLISH")
00052 
00053 #endif 
00054 
00055 
00056 
00057 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00058 
00059 #define ROTH_FM_FMD_D1H_LOAD                (0)
00060 #define ROTH_FM_FMD_D10H_LOAD               (1)
00061 #define ROTH_FM_FMD_D100H_LOAD              (2)
00062 #define ROTH_FM_FMD_LH_LOAD                 (3)
00063 #define ROTH_FM_FMD_LW_LOAD                 (4)
00064 #define ROTH_FM_FMD_1H_SAV                  (5)
00065 #define ROTH_FM_FMD_LH_SAV                  (6)
00066 #define ROTH_FM_FMD_LW_SAV                  (7)
00067 #define ROTH_FM_FMD_FBED_DEPTH              (8)
00068 #define ROTH_FM_FMD_EXT_MOIST               (9)
00069 #define ROTH_FM_FMD_DHC                     (10)
00070 #define ROTH_FM_FMD_LHC                     (11)
00071 #define ROTH_FM_FMD_NUM_VALUES              (12)
00072 
00073 #endif 
00074  
00080 #define ROTH_FM_STD_TOTAL_SILICA_UNITLESS   (0.0555)
00081 
00086 #define ROTH_FM_STD_EFF_SILICA_UNITLESS     (0.0100)
00087 
00092 #define ROTH_FM_STD_FP_DENSITY_ENGLISH      (32.0)
00093 
00098 #define ROTH_FM_D10H_STD_SAV_ENGLISH        (109.0)
00099 
00104 #define ROTH_FM_D100H_STD_SAV_ENGLISH       (30.0)
00105 
00110 #define ROTH_FM_ZERO_ROS_ADJ_FACTOR         (0.0)
00111 
00118 enum EnumRothFuelType_  {
00119     EnumRothBurnable        = 0,
00120     EnumRothUnBurnable      = 1
00121     };
00122  
00123 
00124 
00125 
00126 
00127 
00128 
00132 typedef enum EnumRothFuelType_ EnumRothFuelType;
00133 
00137 typedef struct RothFuelModel_ RothFuelModel;
00138     
00142 struct RothFuelModel_   {
00144     EnumRothFuelType brntype;               
00146     EnumUnitType units;                     
00148     float fdepth;                           
00150     float mex;                              
00152     float ros_adj;                          
00154     int   num_fp;                           
00156     float fdens;                            
00158     float fsav;                 
00160     float pkrat;                            
00162     float load  [EnumNumSizeClasses];       
00164     float sav   [EnumNumSizeClasses];       
00166     float dens  [EnumNumSizeClasses];       
00168     float hc    [EnumNumSizeClasses];       
00170     float stot  [EnumNumSizeClasses];       
00172     float seff  [EnumNumSizeClasses];       
00174     float sarea [EnumNumSizeClasses];       
00176     float effhn [EnumNumSizeClasses];
00178     float awtg  [EnumNumSizeClasses];
00180     float larea;                            
00182     float darea;
00184     float fm    [EnumNumSizeClasses];       
00186     RothPipeline * rp;                      
00187     };
00188      
00189 
00190 
00191 
00192 
00193 
00194  
00195 
00196 
00197 
00198 
00199 
00200 
00207 RothFuelModel * InitRothFuelModelEmpty();
00208 
00218 RothFuelModel * InitRothFuelModelFMDFile(FILE * fstream, int model_num);
00219 
00225 RothFuelModel * InitRothFuelModelUnBurnable();
00226 
00242 int RothFuelModelMetricToEnglish(RothFuelModel * rfm);
00243 
00260 int RothFuelModelEnglishToMetric(RothFuelModel * rfm);
00261 
00268 void RothFuelModelDumpToStream(RothFuelModel * rfm, FILE * fstream);
00269 
00277 void FreeRothFuelModel(void * vptr);
00278   
00279 #endif RothFuelModel_H