isce3 0.25.0
Loading...
Searching...
No Matches
gpuCrossMul.h
1#pragma once
2
3#include "forward.h"
4#include <isce3/io/forward.h> // Raster
5
6#include <isce3/core/Common.h>
7#include <isce3/core/LUT1d.h>
8#include <thrust/complex.h>
9
10namespace isce3::cuda::signal {
11
12class gpuCrossmul {
13
14 public:
15 gpuCrossmul() {};
16 ~gpuCrossmul() {};
17
28 void crossmul(isce3::io::Raster& refSlcRaster,
29 isce3::io::Raster& secSlcRaster,
30 isce3::io::Raster& ifgRaster,
31 isce3::io::Raster& coherenceRaster,
32 isce3::io::Raster* rngOffsetRaster = nullptr) const;
33
37
39 inline void refDoppler(isce3::core::LUT1d<double> refDopp) {_refDoppler = refDopp;};
40
42 inline const isce3::core::LUT1d<double> & refDoppler() const {return _refDoppler;};
43
45 inline void secDoppler(isce3::core::LUT1d<double> secDopp) {_secDoppler = secDopp;};
46
48 inline const isce3::core::LUT1d<double> & secDoppler() const {return _secDoppler;};
49
51 inline void startingRangeShift(double rng_shift) { _offsetStartingRangeShift = rng_shift; }
52
54 inline double startingRangeShift() const { return _offsetStartingRangeShift; }
55
57 inline void rangePixelSpacing(double rngPxl) {_rangePixelSpacing = rngPxl;};
58
60 inline double rangePixelSpacing() const {return _rangePixelSpacing;};
61
63 inline void wavelength(double v) {_wavelength = v;};
64
66 inline double wavelength() const {return _wavelength;};
67
69 void rangeLooks(int rngLks);
70
72 inline int rangeLooks() const {return _rangeLooks;};
73
75 void azimuthLooks(int azLks);
76
78 inline int azimuthLooks() const {return _azimuthLooks;};
79
81 inline void oversampleFactor(size_t v) {_oversampleFactor = v;};
82
84 inline size_t oversampleFactor() const {return _oversampleFactor;};
85
87 inline void linesPerBlock(size_t v) {_linesPerBlock = v;};
88
90 inline size_t linesPerBlock() const {return _linesPerBlock;};
91
93 inline bool multiLookEnabled() const { return _multiLookEnabled; }
94
95 private:
96 //Doppler LUT for the reference SLC
98
99 //Doppler LUT for the secondary SLC
100 isce3::core::LUT1d<double> _secDoppler;
101
102 // starting range shifts between the secondary and reference RSLC in meters
103 double _offsetStartingRangeShift = 0.0;
104
105 // range pixel spacing
106 double _rangePixelSpacing;
107
108 // radar wavelength
109 double _wavelength;
110
111 // number of range looks
112 int _rangeLooks = 1;
113
114 // number of azimuth looks
115 int _azimuthLooks = 1;
116
117 bool _multiLookEnabled = false;
118
119 // number of lines per block
120 size_t _linesPerBlock = 1024;
121
122 // upsampling factor
123 size_t _oversampleFactor = 1;
124};
125
126} // namespace isce3::cuda::signal
Data structure to hold a 1D Lookup table.
Definition LUT1d.h:15
void refDoppler(isce3::core::LUT1d< double > refDopp)
Set reference doppler.
Definition gpuCrossMul.h:39
double rangePixelSpacing() const
Get range pixel spacing.
Definition gpuCrossMul.h:60
int rangeLooks() const
Get number of range looks.
Definition gpuCrossMul.h:72
double startingRangeShift() const
Get reference and secodnary starting range shift.
Definition gpuCrossMul.h:54
size_t oversampleFactor() const
Get oversample factor.
Definition gpuCrossMul.h:84
void wavelength(double v)
Set Wavelength.
Definition gpuCrossMul.h:63
void rangePixelSpacing(double rngPxl)
Set range pixel spacing.
Definition gpuCrossMul.h:57
size_t linesPerBlock() const
Get linesPerBlock.
Definition gpuCrossMul.h:90
int azimuthLooks() const
Get number of azimuth looks.
Definition gpuCrossMul.h:78
void startingRangeShift(double rng_shift)
Set reference and secondary starting range shift.
Definition gpuCrossMul.h:51
const isce3::core::LUT1d< double > & secDoppler() const
Get secondary doppler.
Definition gpuCrossMul.h:48
void secDoppler(isce3::core::LUT1d< double > secDopp)
Set secondary doppler.
Definition gpuCrossMul.h:45
const isce3::core::LUT1d< double > & refDoppler() const
Get reference doppler.
Definition gpuCrossMul.h:42
bool multiLookEnabled() const
Get multilook flag.
Definition gpuCrossMul.h:93
void linesPerBlock(size_t v)
Set linesPerBlock.
Definition gpuCrossMul.h:87
void doppler(isce3::core::LUT1d< double > refDoppler, isce3::core::LUT1d< double > secDoppler)
Set doppler LUTs for reference and secondary SLCs.
Definition gpuCrossMul.cu:152
double wavelength() const
Get Wavelength.
Definition gpuCrossMul.h:66
void oversampleFactor(size_t v)
Set oversample factor.
Definition gpuCrossMul.h:81
void crossmul(isce3::io::Raster &refSlcRaster, isce3::io::Raster &secSlcRaster, isce3::io::Raster &ifgRaster, isce3::io::Raster &coherenceRaster, isce3::io::Raster *rngOffsetRaster=nullptr) const
Crossmultiply 2 SLCs.
Definition gpuCrossMul.cu:213
Data structure meant to handle Raster I/O operations.
Definition Raster.h:32

Generated for ISCE3.0 by doxygen 1.13.2.