12 #ifndef _ssMaterialSet_
13 #define _ssMaterialSet_
26 #define NUM_DC_LABELS 10
31 class DtTaskScheduler;
32 class DtDynamicThermalSpinupTask;
68 char materialName[256];
152 float *getResponseData(
ssSensor *sensor,
unsigned int &numMaterials,
unsigned int &numBins,
unsigned int &numParameters);
164 float *getBRDFResponseData(
ssSensor *sensor,
unsigned int &numMaterials,
unsigned int &numBins,
unsigned int &numParameters);
176 float *getPhongResponseData(
ssSensor *sensor,
unsigned int &numMaterials,
unsigned int &numBins,
unsigned int &numParameters);
188 float *getSandfordRobertsonResponseData(
ssSensor *sensor,
unsigned int &numMaterials,
unsigned int &numBins,
unsigned int &numParameters);
201 float *getRadarResponseData(
ssSensor *sensor,
unsigned int &numMaterials,
unsigned int &numBins,
unsigned int &numParameters);
213 float *getSonarResponseData(
ssSensor *sensor,
unsigned int &numMaterials,
unsigned int &numBins,
unsigned int &numParameters);
226 float *getVisualData(
unsigned int &numMaterials,
ssSensor *sensor);
257 void getBRDFMaterialResponse(
ssSensor *sensor,
unsigned int matCode,
float &ambient,
float &emission,
float &cosEmission);
275 void getPhongMaterialResponse(
ssSensor *sensor,
unsigned int matCode,
276 float &ambient,
float &emission,
float &cosEmission);
293 void getSanfordRobertson(
ssSensor *sensor,
unsigned int matCode,
float &reflectance,
float &lobeWidth,
float &emissivity,
float &grazingB) ;
314 unsigned int getNumberResponses();
322 unsigned int getNumberResponseValues();
341 void getEmatBulkProps(
double &inertia,
double &latconduct,
unsigned int index);
357 void getEmatEmission(
double &baseEmission,
double &cosEmission,
double &twoSideFlag,
double &absorbRatio,
double &conductionFactor,
double &shadowFlag,
ssSensor *sensor,
unsigned int index);
365 int getEmatIndex(
unsigned int ematIndex);
379 bool setThermalSpinUpTime(
double spinUp);
387 double getThermalSpinUpTime();
399 void setFullResponseEnable(
bool flag);
407 bool getFullResponseEnable();
417 void setIncludeEmissivity(
bool flag);
425 bool getIncludeEmissivity();
433 double getMaximumTemperature();
441 double getMinimumTemperature();
449 unsigned int getNumberTemperatures();
457 void setNumberTemperatures(
unsigned int n);
465 void setAutoRadianceScale(
bool flag);
475 bool isAutoRadianceScale();
484 double getAverageAbsorbRatio();
493 double getAverageTwoSidedFlag();
502 double getConductionFactor(
int mtlIndex);
511 double getAverageConductionFactor();
522 void setAbsorbRatio(
double absorbRatio);
531 double getAbsorbRatio();
542 void setTwoSidedFlag(
double twoSidedFlag);
551 double getTwoSidedFlag();
561 void setAppendLightData(
bool flag);
571 bool isAppendLightData();
588 void setEmatType(
bool flag);
596 void setNumberEMats(
unsigned int numEmats);
604 unsigned int getNumberEMats();
646 void forceCacheUpdate();
654 bool getUseInstance();
661 void setUseInstance(
bool flag);
668 void initActiveRegions();
692 bool setActiveRegion(
unsigned int index,
bool activeFlag);
701 bool sendActiveRegionImpulse(
unsigned int index);
709 int getActiveRegionImpulseCount(
unsigned int index);
717 double getActiveRegionImpulseDeltaTime(
unsigned int index);
726 bool getActiveRegion(
unsigned int index);
735 int getNumberActiveRegions();
744 char *getActiveRegionName(
int index);
754 bool hasActiveRegionsFile(
char *msName = NULL);
766 float *getAcousticImpedanceData(
unsigned int &nmats,
unsigned int &ncomps);
781 float *getRCSData(
ssSensor *sensor,
unsigned int &numBins,
unsigned int &
x,
unsigned int &
y);
785 float *getRCSData(
ssSensor *sensor,
unsigned int &numBins,
unsigned int &
x,
unsigned int &
y,
unsigned int &
z);
795 void setNumberRCSangle(
unsigned int angles);
804 unsigned int getNumberRCSangle();
813 bool hasIntensityModulationFile();
821 bool loadIntensityModulationFile();
829 void writeIntensityModulationFile();
843 void setIntensityModulationParameters(
double visAvg,
double visDev,
double IMType,
double NVGGain,
double IRGain,
double RFGain,
int index);
859 void getIntensityModulationParameters(
double &visAvg,
double &visDev,
double &IMType,
double &NVGGain,
double &FLIRGain,
double &RFGain,
int index);
867 const char *getMSfilename();
877 void setFixedTempBCs();
884 void setWeakSelfPointer(std::shared_ptr<ssMaterialSet>&
set);
894 bool initialize(
ssEnvironment *env,
char *dataDir,
char* cacheDir);
913 bool insertMaterialTable(
ssSensor *sensor);
916 bool insertBRDFMaterialTable(
ssSensor *sensor);
918 bool insertPhongMaterialTable(
ssSensor *sensor);
919 bool insertSRMaterialTable(
ssSensor *sensor);
921 bool insertRadarMaterialTable(
ssSensor *sensor);
922 bool insertSonarMaterialTable(
ssSensor *sensor);
932 void updateSonar(
bool dirty);
963 bool dynamicThermalSpinUp(
ssEnvironment *env,
float deltaTime, std::atomic<bool>* cancelled);
984 void computeBaseAndLoadedRadiances(
ssTemperature inTemp,
double ax,
985 double bx,
double emissivity,
ssEmission &emission);
1037 bool compareFloat(
float float1,
float float2);
1047 bool loadActiveRegionsFile();
1058 void dynamicThermalSpinUpAsync(
ssEnvironment* env,
float deltaTime, makSigSim::DtTaskScheduler* ts);
1066 bool needResponseBufferUpdate()
const;
1133 struct Implementation;
1139 friend class makSigSim::DtDynamicThermalSpinupTask;
1142 #endif // _ssMaterialSet_