isce3  0.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
gpuCrossMul.h
1 // -*- C++ -*-
2 // -*- coding: utf-8 -*-
3 //
4 // Author: Liang Yu
5 // Copyright 2018-
6 
7 #pragma once
8 
9 #include "forward.h"
10 #include <isce3/io/forward.h> // Raster
11 
12 #include <isce3/core/Common.h>
13 #include <isce3/core/LUT1d.h>
14 #include <thrust/complex.h>
15 
17 
18  public:
19  gpuCrossmul() {};
20  ~gpuCrossmul() {};
21 
22  void crossmul(isce3::io::Raster& referenceSLC,
23  isce3::io::Raster& secondarySLC,
24  isce3::io::Raster& interferogram,
25  isce3::io::Raster& coherence);
26 
27  void crossmul(isce3::io::Raster& referenceSLC,
28  isce3::io::Raster& secondarySLC,
29  isce3::io::Raster& rngOffsetRaster,
30  isce3::io::Raster& interferogram,
31  isce3::io::Raster& coherenceRaster);
32 
36 
38  inline void prf(double p_r_f) {_prf = p_r_f;};
39 
41  inline void rangeSamplingFrequency(double rngSampV) {_rangeSamplingFrequency = rngSampV;};
42 
44  inline void rangeBandwidth(double rngBW) {_rangeBandwidth = rngBW;};
45 
47  inline void rangePixelSpacing(double rngPxl) {_rangePixelSpacing = rngPxl;};
48 
50  inline void wavelength(double v) {_wavelength = v;};
51 
53  inline void commonAzimuthBandwidth(double azBW) {_commonAzimuthBandwidth = azBW;};
54 
56  inline void beta(double b) {_beta = b;};
57 
59  void rangeLooks(int rngLks);
60 
62  void azimuthLooks(int azLks);
63 
65  inline void doCommonAzimuthBandFiltering(bool doAz) {_doCommonAzimuthBandFilter = doAz;};
66 
68  inline void doCommonRangeBandFiltering(bool doRng) {_doCommonRangeBandFilter = doRng;};
69 
70  private:
71  //Doppler LUT for the refernce SLC
72  isce3::core::LUT1d<double> _refDoppler;
73 
74  //Doppler LUT for the secondary SLC
75  isce3::core::LUT1d<double> _secDoppler;
76 
77  //pulse repetition frequency
78  double _prf;
79 
80  // range samping frequency
81  double _rangeSamplingFrequency;
82 
83  // range signal bandwidth
84  double _rangeBandwidth;
85 
86  // range pixel spacing
87  double _rangePixelSpacing;
88 
89  // radar wavelength
90  double _wavelength;
91 
92  //azimuth common bandwidth
93  double _commonAzimuthBandwidth;
94 
95  // beta parameter for constructing common azimuth band filter
96  double _beta;
97 
98  // number of range looks
99  int _rangeLooks = 1;
100 
101  // number of azimuth looks
102  int _azimuthLooks = 1;
103 
104  bool _doMultiLook = false;
105 
106  // Flag for common azimuth band filtering
107  bool _doCommonAzimuthBandFilter = false;
108 
109  // Flag for common range band filtering
110  bool _doCommonRangeBandFilter = false;
111 
112  // number of lines per block
113  size_t blockRows = 8192;
114 
115  // upsampling factor
116  size_t oversample = 1;
117 };
118 
119 void lookdownShiftImpact(size_t oversample,
120  size_t nfft,
121  size_t blockRows,
122  std::valarray<std::complex<float>> &shiftImpact);
123 
124 template <class T>
125 CUDA_GLOBAL void interferogram_g(thrust::complex<T> *ifgram,
126  thrust::complex<T> *refSlcUp,
127  thrust::complex<T> *secSlcUp,
128  int n_rows,
129  int n_cols,
130  int n_fft,
131  int oversample_i,
132  T oversample_f);
133 
134 template <class T>
135 CUDA_GLOBAL void calculate_coherence_g(T *ref_amp,
136  T *sec_amp,
137  thrust::complex<T> *ifgram_mlook,
138  int n_elements);
void doCommonRangeBandFiltering(bool doRng)
Set common range band filtering flag.
Definition: gpuCrossMul.h:68
void doppler(isce3::core::LUT1d< double >, isce3::core::LUT1d< double >)
Set doppler LUTs for reference and secondary SLCs.
void azimuthLooks(int azLks)
Set number of azimuth looks.
void prf(double p_r_f)
Set pulse repetition frequency (PRF)
Definition: gpuCrossMul.h:38
void rangeLooks(int rngLks)
Set number of range looks.
void rangeSamplingFrequency(double rngSampV)
Set range sampling frequency.
Definition: gpuCrossMul.h:41
void rangePixelSpacing(double rngPxl)
Range pixel spacing.
Definition: gpuCrossMul.h:47
void commonAzimuthBandwidth(double azBW)
Set azimuth common bandwidth.
Definition: gpuCrossMul.h:53
void doCommonAzimuthBandFiltering(bool doAz)
Set common azimuth band filtering flag.
Definition: gpuCrossMul.h:65
Definition: gpuCrossMul.h:16
void wavelength(double v)
Set Wavelength.
Definition: gpuCrossMul.h:50
void beta(double b)
Set beta parameter for the azimuth common band filter.
Definition: gpuCrossMul.h:56
void rangeBandwidth(double rngBW)
Set the range bandwidth.
Definition: gpuCrossMul.h:44
Data structure meant to handle Raster I/O operations.
Definition: Raster.h:34

Generated for ISCE3.0 by doxygen 1.8.5.