| kspaceFirstOrder3D-CUDA 1.1 The CUDA/C++ implementation of the k-wave toolbox for the time-domain simulation of acoustic wave fields in 3D

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KSpaceFirstOrder3DSolver.h
Go to the documentation of this file.
1 /**
2 * @file KSpaceFirstOrder3DSolver.h
3 *
4 * @author Jiri Jaros \n
5 * Faculty of Information Technology \n
6 * Brno University of Technology \n
7 * jarosjir@fit.vutbr.cz
8 *
9 * @brief The header file containing the main class of the project responsible for
10 * the entire 3D fluid simulation.
11 *
12 * @version kspaceFirstOrder3D 3.4
13 *
14 * @date 12 July 2012, 10:27 (created)\n
15 * 10 August 2016, 15:42 (revised)
16 *
17 * @section License
18 * This file is part of the C++ extension of the k-Wave Toolbox
19 * (http://www.k-wave.org).\n Copyright (C) 2016 Jiri Jaros and Bradley Treeby.
20 *
21 * This file is part of the k-Wave. k-Wave is free software: you can redistribute it and/or modify
22 * it under the terms of the GNU Lesser General Public License as published by the Free Software
23 * Foundation, either version 3 of the License, or (at your option) any later version.
24 *
25 * k-Wave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
26 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
27 * General Public License for more details.
28 *
29 * You should have received a copy of the GNU Lesser General Public License along with k-Wave.
30 * If not, see http://www.gnu.org/licenses/.
31 */
32
33 #ifndef TKSPACE_FIRST_ORDER_3D_SOLVER_H
34 #define TKSPACE_FIRST_ORDER_3D_SOLVER_H
35
36
37 #include <Parameters/Parameters.h>
38 #include <MatrixClasses/RealMatrix.h>
39 #include <MatrixClasses/ComplexMatrix.h>
40 #include <MatrixClasses/IndexMatrix.h>
41
42 #include <Containers/MatrixContainer.h>
43 #include <Containers//OutputStreamContainer.h>
44
45 #include <Utils/TimeMeasure.h>
46
47 #include <KSpaceSolver/SolverCUDAKernels.cuh>
48
49
50 /**
51 * @class TKSpaceFirstOrder3DSolver
52 * @brief Class responsible for running the k-space first order 3D method.
53 * @details Class responsible for running the k-space first order 3D method. This class maintain
54 * the whole k-wave (implements the time loop).
55 *
56 */
57 class TKSpaceFirstOrder3DSolver
58 {
59 public:
60 /// Constructor.
61 TKSpaceFirstOrder3DSolver();
62 /// Destructor.
63 virtual ~TKSpaceFirstOrder3DSolver();
64
65 /// Memory allocation.
66 virtual void AllocateMemory();
67 /// Memory deallocation.
68 virtual void FreeMemory();
69
70 /// Load simulation data from the input file.
71 virtual void LoadInputData();
72
73 /// Compute the k-space simulation.
74 virtual void Compute();
75
76 /// Get memory usage in MB on the CPU side.
77 size_t GetHostMemoryUsageInMB();
78 /// Get memory usage in MB on the GPU side.
79 size_t GetDeviceMemoryUsageInMB();
80
81 /// Get code name - release code version.
82 const std::string GetCodeName() const;
83
84 /// Print the code name and license.
85 void PrintFullNameCodeAndLicense() const;
86
87 /// Get total simulation time.
88 double GetTotalTime() const;
89 /// Get pre-processing time.
90 double GetPreProcessingTime() const;
91 /// Get data load time.
92 double GetDataLoadTime() const;
93 /// Get simulation time (time loop).
94 double GetSimulationTime() const;
95 /// Get post-processing time.
96 double GetPostProcessingTime() const;
97
98 /// Get total simulation time cumulated over all legs.
99 double GetCumulatedTotalTime() const;
100 /// Get pre-processing time cumulated over all legs.
101 double GetCumulatedPreProcessingTime() const;
102 /// Get data load time cumulated over all legs.
103 double GetCumulatedDataLoadTime() const;
104 /// Get simulation time (time loop) cumulated over all legs.
105 double GetCumulatedSimulationTime() const;
106 /// Get post-processing time cumulated over all legs.
107 double GetCumulatedPostProcessingTime() const;
108
109 protected:
110
111 /// Copy constructor not allowed for public.
112 TKSpaceFirstOrder3DSolver(const TKSpaceFirstOrder3DSolver& src);
113 /// operator = not allowed for public.
114 TKSpaceFirstOrder3DSolver& operator= (const TKSpaceFirstOrder3DSolver& src);
115
116 /// Initialize FFT plans.
117 void InitializeFFTPlans();
118 /// Compute pre-processing phase.
119 void PreProcessingPhase();
120 /// Compute the main time loop of the kspaceFirstOrder3D.
121 void ComputeMainLoop();
122 /// Post processing, and closing the output streams.
123 void PostProcessing();
124
125 /// Store sensor data.
126 void StoreSensorData();
127 /// Write statistics and header into the output file.
128 void WriteOutputDataInfo();
129 /// Save checkpoint data.
130 void SaveCheckpointData();
131
132 /// Compute new values of acoustic velocity.
133 void ComputeVelocity();
134 /// Compute new values of acoustic velocity gradients.
135 void ComputeGradientVelocity();
136
137 /// Compute new values of acoustic density for non-linear case.
138 void ComputeDensityNonliner();
139 /// Compute new values of acoustic density for linear case.
140 void ComputeDensityLinear();
141
142 /// Compute acoustic pressure for nonlinear case
143 void ComputePressureNonlinear();
144 /// Compute acoustic pressure for linear case
145 void ComputePressureLinear();
146
147 /// Add in velocity source
148 void AddVelocitySource();
149 /// Add in pressure source.
150 void AddPressureSource();
151 /// Calculate p0_ ource.
152 void Calculate_p0_source();
153
154 /// Generate kappa matrix for non-absorbing media.
155 void GenerateKappa();
156 /// Generate kappa matrix, absorb_nabla1, absorb_nabla2 for absorbing media
157 void GenerateKappaAndNablas();
158 /// Generate absorb_tau, absorb_eta for heterogenous media.
159 void GenerateTauAndEta();
160 /// Calculate dt ./ rho0 for non-uniform grids.
161 void GenerateInitialDenisty();
162 /// Calculate square of velocity
163 void Compute_c2();
164
165 /// Calculate three temporary sums in the new pressure formula, non-linear absorbing case.
166 void ComputePressurePartsNonLinear(TRealMatrix& rho_part,
167 TRealMatrix& BonA_part,
168 TRealMatrix& du_part);
169
170 /// Calculate two temporary sums in the new pressure formula, linear absorbing case.
171 void ComputePressurePartsLinear(TRealMatrix& rhoxyz_sum,
172 TRealMatrix& rho0_du_sum);
173
174 /// Sum sub-terms to calculate new pressure, non-linear case.
175 void SumPressureTermsNonlinear(TRealMatrix& absorb_tau_temp,
176 TRealMatrix& absorb_eta_temp,
177 TRealMatrix& BonA_temp);
178
179 /// Sum sub-terms to calculate new pressure, linear case.
180 void SumPressureTermsLinear(TRealMatrix& absorb_tau_temp,
181 TRealMatrix& absorb_eta_temp,
182 TRealMatrix& rhoxyz_sum);
183
184 /// Sum sub-terms for new p, linear lossless case.
185 void SumPressureNonlinearLossless();
186
187 /// Sum sub-terms for new p, linear lossless case.
188 void SumPressureLinearLossless();
189
190 /// Calculate ux_shifted, uy_shifted and uz_shifted.
191 void CalculateShiftedVelocity();
192
193 /// Print progress statistics.
194 void PrintStatistics();
195
196 /// Is time to checkpoint (save actual state on disk).
197 bool IsTimeToCheckpoint();
198
199 /// Was the loop interrupted to checkpoint?
200 bool IsCheckpointInterruption() const;
201
202 /// Check the output file has the correct format and version.
203 void CheckOutputFile();
204
205 /// Check the checkpoint file has the correct format and version.
206 void CheckCheckpointFile();
207
208 /// Reads the header of the output file and sets the cumulative elapsed time from the first log.
209 void LoadElapsedTimeFromOutputFile(THDF5_File& o1utputFile);
210
211 //-------------------------------------- Get matrices ----------------------------------------//
212 /// Get the kappa matrix from the container.
213 TRealMatrix& Get_kappa()
214 {
215 return matrixContainer.GetMatrix<TRealMatrix>(kappa);
216 };
217 /// Get the c^2 matrix from the container.
218 TRealMatrix& Get_c2()
219 {
220 return matrixContainer.GetMatrix<TRealMatrix>(c2);
221 };
222
223 /// Get the p matrix from the container.
224 TRealMatrix& Get_p()
225 {
226 return matrixContainer.GetMatrix<TRealMatrix>(p);
227 };
228
229 /// Get the ux_sgx matrix from the container.
230 TRealMatrix& Get_ux_sgx()
231 {
232 return matrixContainer.GetMatrix<TRealMatrix>(ux_sgx);
233 };
234 /// Get the uy_sgy matrix from the container.
235 TRealMatrix& Get_uy_sgy()
236 {
237 return matrixContainer.GetMatrix<TRealMatrix>(uy_sgy);
238 };
239 /// Get the uz_sgz matrix from the container.
240 TRealMatrix& Get_uz_sgz()
241 {
242 return matrixContainer.GetMatrix<TRealMatrix>(uz_sgz);
243 };
244
245 /// Get the ux_shifted matrix from the container.
246 TRealMatrix& Get_ux_shifted()
247 {
248 return matrixContainer.GetMatrix<TRealMatrix>(ux_shifted);
249 };
250 /// Get the uy_shifted matrix from the container.
251 TRealMatrix& Get_uy_shifted()
252 {
253 return matrixContainer.GetMatrix<TRealMatrix>(uy_shifted);
254 };
255 /// Get the uz_shifted matrix from the container.
256 TRealMatrix& Get_uz_shifted()
257 {
258 return matrixContainer.GetMatrix<TRealMatrix>(uz_shifted);
259 };
260
261 /// Get the duxdx matrix from the container.
262 TRealMatrix& Get_duxdx()
263 {
264 return matrixContainer.GetMatrix<TRealMatrix>(duxdx);
265 };
266 /// Get the duydy matrix from the container.
267 TRealMatrix& Get_duydy()
268 {
269 return matrixContainer.GetMatrix<TRealMatrix>(duydy);
270 };
271 /// Get the duzdz matrix from the container.
272 TRealMatrix& Get_duzdz()
273 {
274 return matrixContainer.GetMatrix<TRealMatrix>(duzdz);
275 };
276
277 /// Get the dt.*rho0_sgx matrix from the container.
278 TRealMatrix& Get_dt_rho0_sgx()
279 {
280 return matrixContainer.GetMatrix<TRealMatrix>(dt_rho0_sgx);
281 };
282 /// Get the dt.*rho0_sgy matrix from the container.
283 TRealMatrix& Get_dt_rho0_sgy()
284 {
285 return matrixContainer.GetMatrix<TRealMatrix>(dt_rho0_sgy);
286 };
287 /// Get the dt.*rho0_sgz matrix from the container.
288 TRealMatrix& Get_dt_rho0_sgz()
289 {
290 return matrixContainer.GetMatrix<TRealMatrix>(dt_rho0_sgz);
291 };
292
293 /// Get the rhox matrix from the container.
294 TRealMatrix& Get_rhox()
295 {
296 return matrixContainer.GetMatrix<TRealMatrix>(rhox);
297 };
298 /// Get the rhoy matrix from the container.
299 TRealMatrix& Get_rhoy()
300 {
301 return matrixContainer.GetMatrix<TRealMatrix>(rhoy);
302 };
303 /// Get the rhoz matrix from the container.
304 TRealMatrix& Get_rhoz()
305 {
306 return matrixContainer.GetMatrix<TRealMatrix>(rhoz);
307 };
308 /// Get the rho0 matrix from the container.
309 TRealMatrix& Get_rho0()
310 {
311 return matrixContainer.GetMatrix<TRealMatrix>(rho0);
312 };
313
314 /// Get the ddx_k_shift_pos matrix from the container.
315 TComplexMatrix& Get_ddx_k_shift_pos()
316 {
317 return matrixContainer.GetMatrix<TComplexMatrix>(ddx_k_shift_pos);
318 };
319 /// Get the ddy_k_shift_pos matrix from the container.
320 TComplexMatrix& Get_ddy_k_shift_pos()
321 {
322 return matrixContainer.GetMatrix<TComplexMatrix>(ddy_k_shift_pos);
323 };
324 /// Get the ddz_k_shift_pos matrix from the container.
325 TComplexMatrix& Get_ddz_k_shift_pos()
326 {
327 return matrixContainer.GetMatrix<TComplexMatrix>(ddz_k_shift_pos);
328 };
329 /// Get the ddx_k_shift_neg matrix from the container.
330 TComplexMatrix& Get_ddx_k_shift_neg()
331 {
332 return matrixContainer.GetMatrix<TComplexMatrix>(ddx_k_shift_neg);
333 };
334 /// Get the ddy_k_shift_neg matrix from the container.
335 TComplexMatrix& Get_ddy_k_shift_neg()
336 {
337 return matrixContainer.GetMatrix<TComplexMatrix>(ddy_k_shift_neg);
338 };
339 /// Get the ddz_k_shift_neg matrix from the container.
340 TComplexMatrix& Get_ddz_k_shift_neg()
341 {
342 return matrixContainer.GetMatrix<TComplexMatrix>(ddz_k_shift_neg);
343 };
344
345 /// Get the x_shift_neg_r matrix from the container.
346 TComplexMatrix& Get_x_shift_neg_r()
347 {
348 return matrixContainer.GetMatrix<TComplexMatrix>(x_shift_neg_r);
349 };
350 /// Get the y_shift_neg_r from the container.
351 TComplexMatrix& Get_y_shift_neg_r()
352 {
353 return matrixContainer.GetMatrix<TComplexMatrix>(y_shift_neg_r);
354 };
355 /// Get the y_shift_neg_r from the container.
356 TComplexMatrix& Get_z_shift_neg_r()
357 {
358 return matrixContainer.GetMatrix<TComplexMatrix>(z_shift_neg_r);
359 };
360
361 /// Get the pml_x_sgx matrix from the container.
362 TRealMatrix& Get_pml_x_sgx()
363 {
364 return matrixContainer.GetMatrix<TRealMatrix>(pml_x_sgx);
365 };
366 /// Get the pml_y_sgy matrix from the container.
367 TRealMatrix& Get_pml_y_sgy()
368 {
369 return matrixContainer.GetMatrix<TRealMatrix>(pml_y_sgy);
370 };
371 /// Get the pml_z_sgz matrix from the container.
372 TRealMatrix& Get_pml_z_sgz()
373 {
374 return matrixContainer.GetMatrix<TRealMatrix>(pml_z_sgz);
375 };
376
377 /// Get the pml_x matrix from the container.
378 TRealMatrix& Get_pml_x()
379 {
380 return matrixContainer.GetMatrix<TRealMatrix>(pml_x);
381 };
382 /// Get the pml_y matrix from the container.
383 TRealMatrix& Get_pml_y()
384 {
385 return matrixContainer.GetMatrix<TRealMatrix>(pml_y);
386 };
387 /// Get the pml_z matrix from the container.
388 TRealMatrix& Get_pml_z()
389 {
390 return matrixContainer.GetMatrix<TRealMatrix>(pml_z);
391 };
392
393
394 /// Get the dxudxn matrix from the container.
395 TRealMatrix& Get_dxudxn()
396 {
397 return matrixContainer.GetMatrix<TRealMatrix>(dxudxn);
398 };
399 /// Get the dyudyn matrix from the container.
400 TRealMatrix& Get_dyudyn()
401 {
402 return matrixContainer.GetMatrix<TRealMatrix>(dyudyn);
403 };
404 /// Get the dzudzn matrix from the container.
405 TRealMatrix& Get_dzudzn()
406 {
407 return matrixContainer.GetMatrix<TRealMatrix>(dzudzn);
408 };
409
410 /// Get the dxudxn_sgx matrix from the container.
411 TRealMatrix& Get_dxudxn_sgx()
412 {
413 return matrixContainer.GetMatrix<TRealMatrix>(dxudxn_sgx);
414 };
415 /// Get the dyudyn_sgy matrix from the container.
416 TRealMatrix& Get_dyudyn_sgy()
417 {
418 return matrixContainer.GetMatrix<TRealMatrix>(dyudyn_sgy);
419 };
420 /// Get the dzudzn_sgz matrix from the container.
421 TRealMatrix& Get_dzudzn_sgz()
422 {
423 return matrixContainer.GetMatrix<TRealMatrix>(dzudzn_sgz);
424 };
425
426
427 /// Get the BonA matrix from the container.
428 TRealMatrix& Get_BonA()
429 {
430 return matrixContainer.GetMatrix<TRealMatrix>(BonA);
431 };
432 /// Get the absorb_tau matrix from the container.
433 TRealMatrix& Get_absorb_tau()
434 {
435 return matrixContainer.GetMatrix<TRealMatrix>(absorb_tau);
436 };
437 /// Get the absorb_eta matrix from the container.
438 TRealMatrix& Get_absorb_eta()
439 {
440 return matrixContainer.GetMatrix<TRealMatrix>(absorb_eta);
441 };
442
443 /// Get the absorb_nabla1 matrix from the container.
444 TRealMatrix& Get_absorb_nabla1()
445 {
446 return matrixContainer.GetMatrix<TRealMatrix>(absorb_nabla1);
447 };
448 /// Get the absorb_nabla2 matrix from the container.
449 TRealMatrix& Get_absorb_nabla2()
450 {
451 return matrixContainer.GetMatrix<TRealMatrix>(absorb_nabla2);
452 };
453
454
455 //-- Index matrices --//
456
457 /// Get the sensor_mask_index matrix from the container.
458 TIndexMatrix& Get_sensor_mask_index()
459 {
460 return matrixContainer.GetMatrix<TIndexMatrix>(sensor_mask_index);
461 };
462
463
464 /// Get the sensor_mask_corners matrix from the container.
465 TIndexMatrix& Get_sensor_mask_corners()
466 {
467 return matrixContainer.GetMatrix<TIndexMatrix>(sensor_mask_corners);
468 };
469
470 /// Get the u_source_index matrix from the container.
471 TIndexMatrix& Get_u_source_index()
472 {
473 return matrixContainer.GetMatrix<TIndexMatrix>(u_source_index);
474 };
475 /// Get the p_source_index matrix from the container.
476 TIndexMatrix& Get_p_source_index()
477 {
478 return matrixContainer.GetMatrix<TIndexMatrix>(p_source_index);
479 };
480 /// Get the delay_mask matrix from the container.
481 TIndexMatrix& Get_delay_mask()
482 {
483 return matrixContainer.GetMatrix<TIndexMatrix>(delay_mask);
484 }
485
486
487 //-- sources --//
488
489 /// Get the transducer_source_input matrix from the container.
490 TRealMatrix& Get_transducer_source_input()
491 {
492 return matrixContainer.GetMatrix<TRealMatrix>(transducer_source_input);
493 };
494
495 /// Get the p_source_input matrix from the container.
496 TRealMatrix& Get_p_source_input()
497 {
498 return matrixContainer.GetMatrix<TRealMatrix>(p_source_input);
499 };
500
501 /// Get the p0_source_input from the container.
502 TRealMatrix& Get_p0_source_input()
503 {
504 return matrixContainer.GetMatrix<TRealMatrix>(p0_source_input);
505 };
506
507
508 /// Get the ux_source_input matrix from the container.
509 TRealMatrix& Get_ux_source_input()
510 {
511 return matrixContainer.GetMatrix<TRealMatrix>(ux_source_input);
512 };
513 /// Get the uy_source_input matrix from the container.
514 TRealMatrix& Get_uy_source_input()
515 {
516 return matrixContainer.GetMatrix<TRealMatrix>(uy_source_input);
517 };
518 /// Get the uz_source_input matrix from the container.
519 TRealMatrix& Get_uz_source_input()
520 {
521 return matrixContainer.GetMatrix<TRealMatrix>(uz_source_input);
522 };
523
524
525 //--Temporary matrices --//
526
527 /// Get the Temp_1_RS3D matrix from the container.
528 TRealMatrix& Get_temp_1_real_3D()
529 {
530 return matrixContainer.GetMatrix<TRealMatrix>(temp_1_real_3D);
531 };
532 /// Get the Temp_2_RS3D matrix from the container.
533 TRealMatrix& Get_temp_2_real_3D()
534 {
535 return matrixContainer.GetMatrix<TRealMatrix>(temp_2_real_3D);
536 };
537 /// Get the Temp_3_RS3D matrix from the container.
538 TRealMatrix& Get_temp_3_real_3D()
539 {
540 return matrixContainer.GetMatrix<TRealMatrix>(temp_3_real_3D);
541 };
542
543
544 /// Get the CUFFT_X_temp from the container.
545 TCUFFTComplexMatrix& Get_cufft_x_temp()
546 {
547 return matrixContainer.GetMatrix<TCUFFTComplexMatrix>(cufft_x_temp);
548 };
549 /// Get the FFT_Y_temp from the container.
550 TCUFFTComplexMatrix& Get_cufft_y_temp()
551 {
552 return matrixContainer.GetMatrix<TCUFFTComplexMatrix>(cufft_y_temp);
553 };
554 /// Get the FFT_Z_temp from the container.
555 TCUFFTComplexMatrix& Get_cufft_z_temp()
556 {
557 return matrixContainer.GetMatrix<TCUFFTComplexMatrix>(cufft_z_temp);
558 };
559
560 /// Get the FFT_shift_temp the container.
561 TCUFFTComplexMatrix& Get_cufft_shift_temp()
562 {
563 return matrixContainer.GetMatrix<TCUFFTComplexMatrix>(cufft_shift_temp);
564 };
565
566 private:
567
568 /// Matrix container with all the matrix classes
569 TMatrixContainer matrixContainer;
570 /// Output stream container
571 TOutputStreamContainer outputStreamContainer;
572
573 /// Global parameters of the simulation
574 TParameters& parameters;
575
576 /// Percentage of the simulation done
577 size_t actPercent;
578
579 /// This variable is true when calculating first time step after restore from checkpoint (to allow asynchronous IO)
580 bool isTimestepRightAfterRestore;
581
582 /// Total time of the simulation
583 TTimeMeasure totalTime;
584 /// Pre-processing time of the simulation
585 TTimeMeasure preProcessingTime;
586 /// Data load time of the simulation
587 TTimeMeasure dataLoadTime;
588 /// Simulation time of the simulation
589 TTimeMeasure simulationTime;
590 /// Post-processing time of the simulation
591 TTimeMeasure postProcessingTime;
592 /// Iteration time of the simulation
593 TTimeMeasure iterationTime;
594
595 };// end of TKSpaceFirstOrder3DSolver
596 //--------------------------------------------------------------------------------------------------
597
598 #endif /* TKSPACE_FIRST_ORDER_3D_SOLVER_H */
TKSpaceFirstOrder3DSolver::GetDeviceMemoryUsageInMB
size_t GetDeviceMemoryUsageInMB()
Get memory usage in MB on the GPU side.
Definition: KSpaceFirstOrder3DSolver.cpp:421
TKSpaceFirstOrder3DSolver::Get_absorb_nabla1
TRealMatrix & Get_absorb_nabla1()
Get the absorb_nabla1 matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:444
TKSpaceFirstOrder3DSolver::Get_dt_rho0_sgy
TRealMatrix & Get_dt_rho0_sgy()
Get the dt.*rho0_sgy matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:283
TKSpaceFirstOrder3DSolver::ComputePressurePartsLinear
void ComputePressurePartsLinear(TRealMatrix &rhoxyz_sum, TRealMatrix &rho0_du_sum)
Calculate two temporary sums in the new pressure formula, linear absorbing case.
Definition: KSpaceFirstOrder3DSolver.cpp:1763
TKSpaceFirstOrder3DSolver::AddPressureSource
void AddPressureSource()
Add in pressure source.
Definition: KSpaceFirstOrder3DSolver.cpp:1328
TKSpaceFirstOrder3DSolver::GetTotalTime
double GetTotalTime() const
Get total simulation time.
Definition: KSpaceFirstOrder3DSolver.cpp:551
TKSpaceFirstOrder3DSolver::Get_ux_sgx
TRealMatrix & Get_ux_sgx()
Get the ux_sgx matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:230
TKSpaceFirstOrder3DSolver::Get_ux_source_input
TRealMatrix & Get_ux_source_input()
Get the ux_source_input matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:509
TKSpaceFirstOrder3DSolver::Get_absorb_tau
TRealMatrix & Get_absorb_tau()
Get the absorb_tau matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:433
TKSpaceFirstOrder3DSolver::Get_x_shift_neg_r
TComplexMatrix & Get_x_shift_neg_r()
Get the x_shift_neg_r matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:346
TKSpaceFirstOrder3DSolver::ComputeDensityLinear
void ComputeDensityLinear()
Compute new values of acoustic density for linear case.
Definition: KSpaceFirstOrder3DSolver.cpp:1188
TKSpaceFirstOrder3DSolver::SumPressureLinearLossless
void SumPressureLinearLossless()
Sum sub-terms for new p, linear lossless case.
Definition: KSpaceFirstOrder3DSolver.cpp:1878
TKSpaceFirstOrder3DSolver::PrintStatistics
void PrintStatistics()
Print progress statistics.
Definition: KSpaceFirstOrder3DSolver.cpp:1926
TKSpaceFirstOrder3DSolver::isTimestepRightAfterRestore
bool isTimestepRightAfterRestore
This variable is true when calculating first time step after restore from checkpoint (to allow asynch...
Definition: KSpaceFirstOrder3DSolver.h:580
TKSpaceFirstOrder3DSolver::Get_duydy
TRealMatrix & Get_duydy()
Get the duydy matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:267
TKSpaceFirstOrder3DSolver::Get_pml_x
TRealMatrix & Get_pml_x()
Get the pml_x matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:378
TKSpaceFirstOrder3DSolver::IsCheckpointInterruption
bool IsCheckpointInterruption() const
Was the loop interrupted to checkpoint?
Definition: KSpaceFirstOrder3DSolver.cpp:1980
TKSpaceFirstOrder3DSolver::Get_uz_shifted
TRealMatrix & Get_uz_shifted()
Get the uz_shifted matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:256
TKSpaceFirstOrder3DSolver::IsTimeToCheckpoint
bool IsTimeToCheckpoint()
Is time to checkpoint (save actual state on disk).
Definition: KSpaceFirstOrder3DSolver.cpp:1964
TKSpaceFirstOrder3DSolver::InitializeFFTPlans
void InitializeFFTPlans()
Initialize FFT plans.
Definition: KSpaceFirstOrder3DSolver.cpp:665
TKSpaceFirstOrder3DSolver::Get_dzudzn_sgz
TRealMatrix & Get_dzudzn_sgz()
Get the dzudzn_sgz matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:421
TKSpaceFirstOrder3DSolver::ComputeGradientVelocity
void ComputeGradientVelocity()
Compute new values of acoustic velocity gradients.
Definition: KSpaceFirstOrder3DSolver.cpp:1117
TKSpaceFirstOrder3DSolver::AddVelocitySource
void AddVelocitySource()
Add in velocity source.
Definition: KSpaceFirstOrder3DSolver.cpp:1297
TKSpaceFirstOrder3DSolver::Get_ddz_k_shift_neg
TComplexMatrix & Get_ddz_k_shift_neg()
Get the ddz_k_shift_neg matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:340
TKSpaceFirstOrder3DSolver::Get_cufft_z_temp
TCUFFTComplexMatrix & Get_cufft_z_temp()
Get the FFT_Z_temp from the container.
Definition: KSpaceFirstOrder3DSolver.h:555
TKSpaceFirstOrder3DSolver::outputStreamContainer
TOutputStreamContainer outputStreamContainer
Output stream container.
Definition: KSpaceFirstOrder3DSolver.h:571
TKSpaceFirstOrder3DSolver::Get_kappa
TRealMatrix & Get_kappa()
Get the kappa matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:213
TKSpaceFirstOrder3DSolver::FreeMemory
virtual void FreeMemory()
Memory deallocation.
Definition: KSpaceFirstOrder3DSolver.cpp:129
TKSpaceFirstOrder3DSolver::dataLoadTime
TTimeMeasure dataLoadTime
Data load time of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:587
TKSpaceFirstOrder3DSolver::Get_pml_z
TRealMatrix & Get_pml_z()
Get the pml_z matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:388
TKSpaceFirstOrder3DSolver::Get_ddz_k_shift_pos
TComplexMatrix & Get_ddz_k_shift_pos()
Get the ddz_k_shift_pos matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:325
TKSpaceFirstOrder3DSolver::Get_dxudxn_sgx
TRealMatrix & Get_dxudxn_sgx()
Get the dxudxn_sgx matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:411
TKSpaceFirstOrder3DSolver::Get_pml_z_sgz
TRealMatrix & Get_pml_z_sgz()
Get the pml_z_sgz matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:372
RealMatrix.h
The header file containing the class for real matrices.
TKSpaceFirstOrder3DSolver::operator=
TKSpaceFirstOrder3DSolver & operator=(const TKSpaceFirstOrder3DSolver &src)
operator = not allowed for public.
TKSpaceFirstOrder3DSolver::GenerateKappa
void GenerateKappa()
Generate kappa matrix for non-absorbing media.
Definition: KSpaceFirstOrder3DSolver.cpp:1414
TKSpaceFirstOrder3DSolver::Get_c2
TRealMatrix & Get_c2()
Get the c^2 matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:218
TKSpaceFirstOrder3DSolver::Get_cufft_y_temp
TCUFFTComplexMatrix & Get_cufft_y_temp()
Get the FFT_Y_temp from the container.
Definition: KSpaceFirstOrder3DSolver.h:550
TKSpaceFirstOrder3DSolver::Get_ux_shifted
TRealMatrix & Get_ux_shifted()
Get the ux_shifted matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:246
TKSpaceFirstOrder3DSolver::GetPreProcessingTime
double GetPreProcessingTime() const
Get pre-processing time.
Definition: KSpaceFirstOrder3DSolver.cpp:562
TKSpaceFirstOrder3DSolver::iterationTime
TTimeMeasure iterationTime
Iteration time of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:593
TKSpaceFirstOrder3DSolver::Get_dyudyn_sgy
TRealMatrix & Get_dyudyn_sgy()
Get the dyudyn_sgy matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:416
TKSpaceFirstOrder3DSolver::TKSpaceFirstOrder3DSolver
TKSpaceFirstOrder3DSolver()
Constructor.
Definition: KSpaceFirstOrder3DSolver.cpp:77
TKSpaceFirstOrder3DSolver::Get_cufft_x_temp
TCUFFTComplexMatrix & Get_cufft_x_temp()
Get the CUFFT_X_temp from the container.
Definition: KSpaceFirstOrder3DSolver.h:545
TKSpaceFirstOrder3DSolver::Get_p_source_input
TRealMatrix & Get_p_source_input()
Get the p_source_input matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:496
TKSpaceFirstOrder3DSolver::totalTime
TTimeMeasure totalTime
Total time of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:583
TKSpaceFirstOrder3DSolver::Get_temp_3_real_3D
TRealMatrix & Get_temp_3_real_3D()
Get the Temp_3_RS3D matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:538
TMatrixContainer::GetMatrix
T & GetMatrix(const TMatrixIdx matrixIdx)
Get the matrix with a specific type from the container.
Definition: MatrixContainer.h:144
TKSpaceFirstOrder3DSolver::Compute_c2
void Compute_c2()
Calculate square of velocity.
Definition: KSpaceFirstOrder3DSolver.cpp:1701
TKSpaceFirstOrder3DSolver::PrintFullNameCodeAndLicense
void PrintFullNameCodeAndLicense() const
Print the code name and license.
Definition: KSpaceFirstOrder3DSolver.cpp:444
TKSpaceFirstOrder3DSolver::Get_transducer_source_input
TRealMatrix & Get_transducer_source_input()
Get the transducer_source_input matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:490
Parameters.h
The header file containing the parameters of the simulation.
TKSpaceFirstOrder3DSolver::SumPressureNonlinearLossless
void SumPressureNonlinearLossless()
Sum sub-terms for new p, linear lossless case.
Definition: KSpaceFirstOrder3DSolver.cpp:1851
TKSpaceFirstOrder3DSolver::Get_z_shift_neg_r
TComplexMatrix & Get_z_shift_neg_r()
Get the y_shift_neg_r from the container.
Definition: KSpaceFirstOrder3DSolver.h:356
TKSpaceFirstOrder3DSolver::GetCodeName
const std::string GetCodeName() const
Get code name - release code version.
Definition: KSpaceFirstOrder3DSolver.cpp:435
TKSpaceFirstOrder3DSolver::CheckCheckpointFile
void CheckCheckpointFile()
Check the checkpoint file has the correct format and version.
Definition: KSpaceFirstOrder3DSolver.cpp:2046
TKSpaceFirstOrder3DSolver::Get_p0_source_input
TRealMatrix & Get_p0_source_input()
Get the p0_source_input from the container.
Definition: KSpaceFirstOrder3DSolver.h:502
TKSpaceFirstOrder3DSolver::Get_p
TRealMatrix & Get_p()
Get the p matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:224
TKSpaceFirstOrder3DSolver::Get_ddy_k_shift_pos
TComplexMatrix & Get_ddy_k_shift_pos()
Get the ddy_k_shift_pos matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:320
TKSpaceFirstOrder3DSolver::Get_BonA
TRealMatrix & Get_BonA()
Get the BonA matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:428
TKSpaceFirstOrder3DSolver::Get_dxudxn
TRealMatrix & Get_dxudxn()
Get the dxudxn matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:395
TimeMeasure.h
The header file for class with time measurement.
TKSpaceFirstOrder3DSolver::Get_uz_sgz
TRealMatrix & Get_uz_sgz()
Get the uz_sgz matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:240
TKSpaceFirstOrder3DSolver::matrixContainer
TMatrixContainer matrixContainer
Matrix container with all the matrix classes.
Definition: KSpaceFirstOrder3DSolver.h:564
TKSpaceFirstOrder3DSolver::Get_dzudzn
TRealMatrix & Get_dzudzn()
Get the dzudzn matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:405
TKSpaceFirstOrder3DSolver::GetSimulationTime
double GetSimulationTime() const
Get simulation time (time loop).
Definition: KSpaceFirstOrder3DSolver.cpp:585
TKSpaceFirstOrder3DSolver::Calculate_p0_source
void Calculate_p0_source()
Calculate p0_ ource.
Definition: KSpaceFirstOrder3DSolver.cpp:1347
TKSpaceFirstOrder3DSolver::Get_absorb_nabla2
TRealMatrix & Get_absorb_nabla2()
Get the absorb_nabla2 matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:449
TKSpaceFirstOrder3DSolver::GenerateKappaAndNablas
void GenerateKappaAndNablas()
Generate kappa matrix, absorb_nabla1, absorb_nabla2 for absorbing media.
Definition: KSpaceFirstOrder3DSolver.cpp:1468
TKSpaceFirstOrder3DSolver::StoreSensorData
void StoreSensorData()
Store sensor data.
Definition: KSpaceFirstOrder3DSolver.cpp:915
TKSpaceFirstOrder3DSolver::Get_rho0
TRealMatrix & Get_rho0()
Get the rho0 matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:309
TKSpaceFirstOrder3DSolver::WriteOutputDataInfo
void WriteOutputDataInfo()
Write statistics and header into the output file.
Definition: KSpaceFirstOrder3DSolver.cpp:947
TKSpaceFirstOrder3DSolver::Get_uz_source_input
TRealMatrix & Get_uz_source_input()
Get the uz_source_input matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:519
TKSpaceFirstOrder3DSolver::SumPressureTermsLinear
void SumPressureTermsLinear(TRealMatrix &absorb_tau_temp, TRealMatrix &absorb_eta_temp, TRealMatrix &rhoxyz_sum)
Sum sub-terms to calculate new pressure, linear case.
Definition: KSpaceFirstOrder3DSolver.cpp:1824
TKSpaceFirstOrder3DSolver::Get_sensor_mask_index
TIndexMatrix & Get_sensor_mask_index()
Get the sensor_mask_index matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:458
TParameters
Class storing all parameters of the simulation.
Definition: Parameters.h:49
TKSpaceFirstOrder3DSolver::Get_delay_mask
TIndexMatrix & Get_delay_mask()
Get the delay_mask matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:481
TKSpaceFirstOrder3DSolver::Get_temp_2_real_3D
TRealMatrix & Get_temp_2_real_3D()
Get the Temp_2_RS3D matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:533
IndexMatrix.h
The header file containing the class for 64b integer matrices.
TKSpaceFirstOrder3DSolver::PostProcessing
void PostProcessing()
Post processing, and closing the output streams.
Definition: KSpaceFirstOrder3DSolver.cpp:859
TKSpaceFirstOrder3DSolver::Get_dt_rho0_sgz
TRealMatrix & Get_dt_rho0_sgz()
Get the dt.*rho0_sgz matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:288
TKSpaceFirstOrder3DSolver::Get_p_source_index
TIndexMatrix & Get_p_source_index()
Get the p_source_index matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:476
TKSpaceFirstOrder3DSolver::ComputeMainLoop
void ComputeMainLoop()
Compute the main time loop of the kspaceFirstOrder3D.
Definition: KSpaceFirstOrder3DSolver.cpp:771
TKSpaceFirstOrder3DSolver::Get_dyudyn
TRealMatrix & Get_dyudyn()
Get the dyudyn matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:400
TKSpaceFirstOrder3DSolver::Get_pml_y_sgy
TRealMatrix & Get_pml_y_sgy()
Get the pml_y_sgy matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:367
TKSpaceFirstOrder3DSolver::Get_pml_y
TRealMatrix & Get_pml_y()
Get the pml_y matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:383
TKSpaceFirstOrder3DSolver::Get_u_source_index
TIndexMatrix & Get_u_source_index()
Get the u_source_index matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:471
TKSpaceFirstOrder3DSolver::ComputePressureLinear
void ComputePressureLinear()
Compute acoustic pressure for linear case.
Definition: KSpaceFirstOrder3DSolver.cpp:1260
TKSpaceFirstOrder3DSolver::GetCumulatedTotalTime
double GetCumulatedTotalTime() const
Get total simulation time cumulated over all legs.
Definition: KSpaceFirstOrder3DSolver.cpp:606
TKSpaceFirstOrder3DSolver::Get_sensor_mask_corners
TIndexMatrix & Get_sensor_mask_corners()
Get the sensor_mask_corners matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:465
TKSpaceFirstOrder3DSolver::Get_duxdx
TRealMatrix & Get_duxdx()
Get the duxdx matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:262
TKSpaceFirstOrder3DSolver::Get_cufft_shift_temp
TCUFFTComplexMatrix & Get_cufft_shift_temp()
Get the FFT_shift_temp the container.
Definition: KSpaceFirstOrder3DSolver.h:561
TMatrixContainer
Class implementing the matrix container.
Definition: MatrixContainer.h:96
TKSpaceFirstOrder3DSolver::SumPressureTermsNonlinear
void SumPressureTermsNonlinear(TRealMatrix &absorb_tau_temp, TRealMatrix &absorb_eta_temp, TRealMatrix &BonA_temp)
Sum sub-terms to calculate new pressure, non-linear case.
Definition: KSpaceFirstOrder3DSolver.cpp:1790
TKSpaceFirstOrder3DSolver::LoadInputData
virtual void LoadInputData()
Load simulation data from the input file.
Definition: KSpaceFirstOrder3DSolver.cpp:140
ComplexMatrix.h
The header file with the class for complex matrices.
TRealMatrix
The class for real matrices.
Definition: RealMatrix.h:45
TKSpaceFirstOrder3DSolver::~TKSpaceFirstOrder3DSolver
virtual ~TKSpaceFirstOrder3DSolver()
Destructor.
Definition: KSpaceFirstOrder3DSolver.cpp:93
TKSpaceFirstOrder3DSolver::Get_dt_rho0_sgx
TRealMatrix & Get_dt_rho0_sgx()
Get the dt.*rho0_sgx matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:278
TKSpaceFirstOrder3DSolver::ComputePressurePartsNonLinear
void ComputePressurePartsNonLinear(TRealMatrix &rho_part, TRealMatrix &BonA_part, TRealMatrix &du_part)
Calculate three temporary sums in the new pressure formula, non-linear absorbing case.
Definition: KSpaceFirstOrder3DSolver.cpp:1729
TKSpaceFirstOrder3DSolver::GetCumulatedPostProcessingTime
double GetCumulatedPostProcessingTime() const
Get post-processing time cumulated over all legs.
Definition: KSpaceFirstOrder3DSolver.cpp:650
TIndexMatrix
The class for 64b unsigned integers (indices). It is used for sensor_mask_index or sensor_corners_mas...
Definition: IndexMatrix.h:46
TKSpaceFirstOrder3DSolver::postProcessingTime
TTimeMeasure postProcessingTime
Post-processing time of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:591
TKSpaceFirstOrder3DSolver::CheckOutputFile
void CheckOutputFile()
Check the output file has the correct format and version.
Definition: KSpaceFirstOrder3DSolver.cpp:1991
TKSpaceFirstOrder3DSolver::GenerateTauAndEta
void GenerateTauAndEta()
Generate absorb_tau, absorb_eta for heterogenous media.
Definition: KSpaceFirstOrder3DSolver.cpp:1541
TKSpaceFirstOrder3DSolver::Get_uy_sgy
TRealMatrix & Get_uy_sgy()
Get the uy_sgy matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:235
TKSpaceFirstOrder3DSolver::LoadElapsedTimeFromOutputFile
void LoadElapsedTimeFromOutputFile(THDF5_File &o1utputFile)
Reads the header of the output file and sets the cumulative elapsed time from the first log...
Definition: KSpaceFirstOrder3DSolver.cpp:2102
TKSpaceFirstOrder3DSolver::parameters
TParameters & parameters
Global parameters of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:574
TTimeMeasure
Class measuring elapsed time.
Definition: TimeMeasure.h:55
TKSpaceFirstOrder3DSolver::ComputePressureNonlinear
void ComputePressureNonlinear()
Compute acoustic pressure for nonlinear case.
Definition: KSpaceFirstOrder3DSolver.cpp:1224
SolverCUDAKernels.cuh
Name space for all CUDA kernels used in the 3D solver.
TKSpaceFirstOrder3DSolver::preProcessingTime
TTimeMeasure preProcessingTime
Pre-processing time of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:585
MatrixContainer.h
The header file containing the matrix container and the related matrix record class.
TKSpaceFirstOrder3DSolver::GetCumulatedSimulationTime
double GetCumulatedSimulationTime() const
Get simulation time (time loop) cumulated over all legs.
Definition: KSpaceFirstOrder3DSolver.cpp:639
TKSpaceFirstOrder3DSolver::actPercent
size_t actPercent
Percentage of the simulation done.
Definition: KSpaceFirstOrder3DSolver.h:577
TKSpaceFirstOrder3DSolver::Get_duzdz
TRealMatrix & Get_duzdz()
Get the duzdz matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:272
TKSpaceFirstOrder3DSolver::Compute
virtual void Compute()
Compute the k-space simulation.
Definition: KSpaceFirstOrder3DSolver.cpp:240
TKSpaceFirstOrder3DSolver::Get_rhoz
TRealMatrix & Get_rhoz()
Get the rhoz matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:304
TKSpaceFirstOrder3DSolver::Get_ddx_k_shift_neg
TComplexMatrix & Get_ddx_k_shift_neg()
Get the ddx_k_shift_neg matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:330
TKSpaceFirstOrder3DSolver::GetCumulatedDataLoadTime
double GetCumulatedDataLoadTime() const
Get data load time cumulated over all legs.
Definition: KSpaceFirstOrder3DSolver.cpp:628
TKSpaceFirstOrder3DSolver::GetPostProcessingTime
double GetPostProcessingTime() const
Get post-processing time.
Definition: KSpaceFirstOrder3DSolver.cpp:596
OutputStreamContainer.h
The header file defining the output stream container.
TKSpaceFirstOrder3DSolver::simulationTime
TTimeMeasure simulationTime
Simulation time of the simulation.
Definition: KSpaceFirstOrder3DSolver.h:589
TKSpaceFirstOrder3DSolver::Get_ddy_k_shift_neg
TComplexMatrix & Get_ddy_k_shift_neg()
Get the ddy_k_shift_neg matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:335
TKSpaceFirstOrder3DSolver::AllocateMemory
virtual void AllocateMemory()
Memory allocation.
Definition: KSpaceFirstOrder3DSolver.cpp:110
TKSpaceFirstOrder3DSolver::SaveCheckpointData
void SaveCheckpointData()
Save checkpoint data.
Definition: KSpaceFirstOrder3DSolver.cpp:985
TKSpaceFirstOrder3DSolver::CalculateShiftedVelocity
void CalculateShiftedVelocity()
Calculate ux_shifted, uy_shifted and uz_shifted.
Definition: KSpaceFirstOrder3DSolver.cpp:1902
TKSpaceFirstOrder3DSolver::GetCumulatedPreProcessingTime
double GetCumulatedPreProcessingTime() const
Get pre-processing time cumulated over all legs.
Definition: KSpaceFirstOrder3DSolver.cpp:617
TKSpaceFirstOrder3DSolver::Get_ddx_k_shift_pos
TComplexMatrix & Get_ddx_k_shift_pos()
Get the ddx_k_shift_pos matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:315
TKSpaceFirstOrder3DSolver::Get_pml_x_sgx
TRealMatrix & Get_pml_x_sgx()
Get the pml_x_sgx matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:362
TKSpaceFirstOrder3DSolver::GetDataLoadTime
double GetDataLoadTime() const
Get data load time.
Definition: KSpaceFirstOrder3DSolver.cpp:573
TKSpaceFirstOrder3DSolver::Get_rhox
TRealMatrix & Get_rhox()
Get the rhox matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:294
TComplexMatrix
The class for complex matrices.
Definition: ComplexMatrix.h:54
TKSpaceFirstOrder3DSolver::ComputeDensityNonliner
void ComputeDensityNonliner()
Compute new values of acoustic density for non-linear case.
Definition: KSpaceFirstOrder3DSolver.cpp:1152
TKSpaceFirstOrder3DSolver
Class responsible for running the k-space first order 3D method.
Definition: KSpaceFirstOrder3DSolver.h:57
TKSpaceFirstOrder3DSolver::Get_y_shift_neg_r
TComplexMatrix & Get_y_shift_neg_r()
Get the y_shift_neg_r from the container.
Definition: KSpaceFirstOrder3DSolver.h:351
TKSpaceFirstOrder3DSolver::Get_temp_1_real_3D
TRealMatrix & Get_temp_1_real_3D()
Get the Temp_1_RS3D matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:528
TCUFFTComplexMatrix
Class implementing 3D Real-To-Complex and Complex-To-Real transforms using CUDA FFT interface...
Definition: CUFFTComplexMatrix.h:50
TKSpaceFirstOrder3DSolver::Get_rhoy
TRealMatrix & Get_rhoy()
Get the rhoy matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:299
TOutputStreamContainer
A container for output streams.
Definition: OutputStreamContainer.h:77
TKSpaceFirstOrder3DSolver::GenerateInitialDenisty
void GenerateInitialDenisty()
Calculate dt ./ rho0 for non-uniform grids.
Definition: KSpaceFirstOrder3DSolver.cpp:1629
TKSpaceFirstOrder3DSolver::Get_absorb_eta
TRealMatrix & Get_absorb_eta()
Get the absorb_eta matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:438
THDF5_File
Class wrapping the HDF5 routines.
Definition: HDF5_File.h:500
TKSpaceFirstOrder3DSolver::ComputeVelocity
void ComputeVelocity()
Compute new values of acoustic velocity.
Definition: KSpaceFirstOrder3DSolver.cpp:1049
TKSpaceFirstOrder3DSolver::Get_uy_shifted
TRealMatrix & Get_uy_shifted()
Get the uy_shifted matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:251
TKSpaceFirstOrder3DSolver::GetHostMemoryUsageInMB
size_t GetHostMemoryUsageInMB()
Get memory usage in MB on the CPU side.
Definition: KSpaceFirstOrder3DSolver.cpp:389
TKSpaceFirstOrder3DSolver::Get_uy_source_input
TRealMatrix & Get_uy_source_input()
Get the uy_source_input matrix from the container.
Definition: KSpaceFirstOrder3DSolver.h:514
TKSpaceFirstOrder3DSolver::PreProcessingPhase
void PreProcessingPhase()
Compute pre-processing phase.
Definition: KSpaceFirstOrder3DSolver.cpp:697