![]() |
kspaceFirstOrder3D-OMP 1.0
The C++ implementation of the k-wave toolbox for the time-domain simulation of acoustic wave fields in 3D
|
00001 00031 #ifndef PARAMETERS_H 00032 #define PARAMETERS_H 00033 00034 #include <string> 00035 00036 #include <Parameters/CommandLineParameters.h> 00037 00038 #include <Utils/DimensionSizes.h> 00039 #include <HDF5/HDF5_File.h> 00040 00047 class TParameters { 00048 public: 00049 00051 static TParameters* GetInstance(); 00052 00054 virtual ~TParameters() { 00055 ParametersInstanceFlag = false; 00056 if (ParametersSingleInstance) delete ParametersSingleInstance; 00057 ParametersSingleInstance = NULL; 00058 00059 }; 00060 00062 void ParseCommandLine(int argc, char** argv); 00064 void ReadScalarsFromHDF5InputFile(THDF5_File & HDF5_InputFile); 00066 void SaveScalarsToHDF5File(THDF5_File & HDF5_OutputFile); 00067 00069 TDimensionSizes GetFullDimensionSizes () const {return FullDimensionSizes; }; 00071 TDimensionSizes GetReducedDimensionSizes() const {return ReducedDimensionSizes; }; 00072 00074 long Get_Nt() const {return Nt;}; 00075 00077 float Get_dt() const {return dt;}; 00079 float Get_dx() const {return dx;}; 00081 float Get_dy() const {return dy;}; 00083 float Get_dz() const {return dz;}; 00084 00086 float Get_c_ref() const {return c_ref;}; 00088 float Get_alpha_power() const {return alpha_power; }; 00089 00091 long Get_pml_x_size() const {return pml_x_size;}; 00093 long Get_pml_y_size() const {return pml_y_size;}; 00095 long Get_pml_z_size() const {return pml_z_size;}; 00096 00098 float Get_pml_x_alpha_size() const {return pml_x_alpha;}; 00100 float Get_pml_y_alpha_size() const {return pml_y_alpha;}; 00102 float Get_pml_z_alpha_size() const {return pml_z_alpha;}; 00103 00104 00106 long Get_ux_source_flag() const {return ux_source_flag;}; 00108 long Get_uy_source_flag() const {return uy_source_flag;}; 00110 long Get_uz_source_flag() const {return uz_source_flag;}; 00112 long Get_u_source_many() const {return u_source_many;}; 00114 long Get_u_source_mode() const {return u_source_mode;}; 00115 00117 long Get_p_source_flag() const {return p_source_flag; }; 00119 long Get_p0_source_flag() const {return p0_source_flag;}; 00121 long Get_p_source_many() const {return p_source_many;}; 00123 long Get_p_source_mode() const {return p_source_mode;}; 00124 00126 long Get_nonuniform_grid_flag() const { return nonuniform_grid_flag;}; 00128 long Get_absorbing_flag() const { return absorbing_flag; }; 00130 long Get_nonlinear_flag() const { return nonlinear_flag; }; 00132 long Get_transducer_source_flag() const {return transducer_source_flag;}; 00133 00135 long Get_sensor_mask_index_size() const { return sensor_mask_ind_size;} 00137 long Get_u_source_index_size() const { return u_source_index_size;} 00139 long Get_p_source_index_size() const { return p_source_index_size;} 00141 long Get_transducer_source_input_size() const { return transducer_source_input_size;} 00142 00144 bool Get_alpha_coeff_scallar_flag() const { return alpha_coeff_scalar_flag;}; 00146 float& Get_alpha_coeff_scallar() { return alpha_coeff_scalar; } // cannot be const beacuse of other optimizations 00147 00149 bool Get_c0_scalar_flag() const {return c0_scalar_flag; }; 00151 float& Get_c0_scalar() {return c0_scalar; }; 00152 00154 float & Get_absorb_eta_scalar() {return absorb_eta_scalar; }; 00156 float & Get_absorb_tau_scalar() {return absorb_tau_scalar; }; 00157 00159 bool Get_BonA_scalar_flag() const { return BonA_scalar_flag; }; 00161 float& Get_BonA_scalar() { return BonA_scalar; }; 00162 00164 bool Get_rho0_scalar_flag() const {return rho0_scalar_flag; }; 00166 float& Get_rho0_scalar() {return rho0_scalar; }; 00168 float& Get_rho0_sgx_scalar() {return rho0_sgx_scalar; }; 00170 float& Get_rho0_sgy_scalar() {return rho0_sgy_scalar; }; 00172 float& Get_rho0_sgz_scalar() {return rho0_sgz_scalar; }; 00173 00175 string GetInputFileName() const {return CommandLinesParameters.GetInputFileName();}; 00177 string GetOutputFileName() const {return CommandLinesParameters.GetOutputFileName();}; 00178 00180 int GetCompressionLevel() const {return CommandLinesParameters.GetCompressionLevel();}; 00182 int GetNumberOfThreads() const {return CommandLinesParameters.GetNumberOfThreads();}; 00184 int GetVerboseInterval() const {return CommandLinesParameters.GetVerboseInterval();}; 00185 00187 int GetStartTimeIndex() const {return CommandLinesParameters.GetStartTimeIndex();}; 00188 00190 bool IsVersion() const {return CommandLinesParameters.IsVersion();}; 00192 bool IsStore_p_raw() const {return CommandLinesParameters.IsStore_p_raw();}; 00194 bool IsStore_p_rms() const {return CommandLinesParameters.IsStore_p_rms();}; 00196 bool IsStore_p_max() const {return CommandLinesParameters.IsStore_p_max();}; 00198 bool IsStore_p_final() const {return CommandLinesParameters.IsStore_p_final();}; 00199 00201 bool IsStore_u_raw() const {return CommandLinesParameters.IsStore_u_raw();}; 00203 bool IsStore_u_rms() const {return CommandLinesParameters.IsStore_u_rms();}; 00205 bool IsStore_u_max() const {return CommandLinesParameters.IsStore_u_max();}; 00207 bool IsStore_u_final() const {return CommandLinesParameters.IsStore_u_final();}; 00208 00210 bool IsStore_I_avg() const {return CommandLinesParameters.IsStore_I_avg();}; 00212 bool IsStore_I_max() const {return CommandLinesParameters.IsStore_I_max();}; 00213 00214 00215 00217 THDF5_File HDF5_InputFile; 00219 THDF5_File HDF5_OutputFile; 00221 THDF5_FileHeader HDF5_FileHeader; 00222 00223 00224 protected: 00225 00227 TParameters(); 00229 TParameters(const TParameters& src); 00230 00232 TParameters& operator = (const TParameters& src ); 00233 00235 TCommandLineParameters CommandLinesParameters; 00236 00237 00239 long Nt; 00240 00242 float dt; 00244 float dx; 00246 float dy; 00248 float dz; 00249 00251 float c_ref; 00253 float alpha_power; 00254 00256 TDimensionSizes FullDimensionSizes; 00258 TDimensionSizes ReducedDimensionSizes; 00259 00261 long sensor_mask_ind_size; 00263 long u_source_index_size; 00265 long p_source_index_size; 00267 long transducer_source_input_size; 00268 00269 00271 long ux_source_flag; 00273 long uy_source_flag; 00275 long uz_source_flag; 00276 00278 long p_source_flag; 00280 long p0_source_flag; 00282 long transducer_source_flag; 00283 00285 long u_source_many; 00287 long u_source_mode; 00288 00290 long p_source_mode; 00292 long p_source_many; 00293 00295 long nonuniform_grid_flag; 00297 long absorbing_flag; 00299 long nonlinear_flag; 00300 00302 long pml_x_size; 00304 long pml_y_size; 00306 long pml_z_size; 00307 00309 float pml_x_alpha; 00311 float pml_y_alpha; 00313 float pml_z_alpha; 00314 00316 bool alpha_coeff_scalar_flag; 00318 float alpha_coeff_scalar; 00319 00321 bool c0_scalar_flag; 00323 float c0_scalar; 00324 00326 float absorb_eta_scalar; 00328 float absorb_tau_scalar; 00329 00331 bool BonA_scalar_flag; 00333 float BonA_scalar; 00334 00336 bool rho0_scalar_flag; 00338 float rho0_scalar; 00340 float rho0_sgx_scalar; 00342 float rho0_sgy_scalar; 00344 float rho0_sgz_scalar; 00345 00346 00348 static bool ParametersInstanceFlag; 00350 static TParameters *ParametersSingleInstance; 00351 00352 00353 00354 00355 private: 00356 00358 void PrintUsageAndExit(); 00359 00360 }; 00361 00362 #endif /* PARAMETERS_H */ 00363 00364