2025-01-02 10:53:33 +00:00
|
|
|
|
#ifndef _GPURFPC_H_
|
|
|
|
|
|
#define _GPURFPC_H_
|
2024-12-24 07:27:09 +00:00
|
|
|
|
|
|
|
|
|
|
#include "BaseConstVariable.h"
|
|
|
|
|
|
#include "GPUTool.cuh"
|
|
|
|
|
|
#include <cuda_runtime.h>
|
|
|
|
|
|
#include <device_launch_parameters.h>
|
|
|
|
|
|
#include <cublas_v2.h>
|
|
|
|
|
|
#include <cuComplex.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" struct CUDASigmaParam {
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double p1;
|
|
|
|
|
|
double p2;
|
|
|
|
|
|
double p3;
|
|
|
|
|
|
double p4;
|
|
|
|
|
|
double p5;
|
|
|
|
|
|
double p6;
|
2024-12-24 07:27:09 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __device__ double GPU_getSigma0dB(CUDASigmaParam param, double theta);
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
|
|
|
|
|
extern __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal(
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double RstX, double RstY, double RstZ,
|
|
|
|
|
|
double antXaxisX, double antXaxisY, double antXaxisZ,
|
|
|
|
|
|
double antYaxisX, double antYaxisY, double antYaxisZ,
|
|
|
|
|
|
double antZaxisX, double antZaxisY, double antZaxisZ,
|
|
|
|
|
|
double antDirectX, double antDirectY, double antDirectZ
|
2025-01-08 05:50:02 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __device__ double GPU_BillerInterpAntPattern(double* antpattern,
|
|
|
|
|
|
double starttheta, double startphi, double dtheta, double dphi,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
long thetapoints, long phipoints,
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double searththeta, double searchphi);
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __global__ void CUDA_AntPatternInterpGain(double* anttheta, double* antphi, double* gain,
|
|
|
|
|
|
double* antpattern, double starttheta, double startphi, double dtheta, double dphi, int thetapoints, int phipoints, long len);
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern __global__ void CUDA_InterpSigma(
|
2025-01-14 01:25:23 +00:00
|
|
|
|
long* demcls, double* sigmaAmp, double* localanglearr, long len,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern __global__ void CUDAKernel_PRF_CalFreqEcho(
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* Rarr, double* ampArr, long pixelcount,
|
|
|
|
|
|
double* factorj, long freqnum,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
double dx, double nearR,
|
|
|
|
|
|
cuComplex* PRFEcho, long prfid);
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __device__ cuComplex GPU_calculationEcho(double sigma0, double TransAnt, double ReciveAnt,
|
|
|
|
|
|
double localangle, double R, double slopeangle, double Pt, double lamda);
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __global__ void CUDA_calculationEcho(double* sigma0, double* TransAnt, double* ReciveAnt,
|
|
|
|
|
|
double* localangle, double* R, double* slopeangle,
|
|
|
|
|
|
double nearRange, double Fs, double Pt, double lamda, long FreqIDmax,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
cuComplex* echoArr, long* FreqID,
|
|
|
|
|
|
long len);
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __global__ void CUDA_BillerInterpAntPattern(double* antpattern,
|
|
|
|
|
|
double starttheta, double startphi, double dtheta, double dphi,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
long thetapoints, long phipoints,
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* searththeta, double* searchphi, double* searchantpattern,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
long len);
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern __global__ void CUDA_SatelliteAntDirectNormal(double* RstX, double* RstY, double* RstZ,
|
|
|
|
|
|
double antXaxisX, double antXaxisY, double antXaxisZ,
|
|
|
|
|
|
double antYaxisX, double antYaxisY, double antYaxisZ,
|
|
|
|
|
|
double antZaxisX, double antZaxisY, double antZaxisZ,
|
|
|
|
|
|
double antDirectX, double antDirectY, double antDirectZ,
|
|
|
|
|
|
double* thetaAnt, double* phiAnt
|
2025-01-08 05:50:02 +00:00
|
|
|
|
, long len);
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
2025-01-15 03:57:07 +00:00
|
|
|
|
extern __global__ void CUDAKernel_PRF_GeneratorEcho(float* Rarr, float* ampArr, long blocknum, long pixelcount, double* factorj, long freqnum,
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double nearR, double farR, double* echo_real, double* echo_imag, long prfid);
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
2024-12-24 07:27:09 +00:00
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern "C" void SatelliteAntDirectNormal(double* RstX, double* RstY, double* RstZ,
|
|
|
|
|
|
double antXaxisX, double antXaxisY, double antXaxisZ,
|
|
|
|
|
|
double antYaxisX, double antYaxisY, double antYaxisZ,
|
|
|
|
|
|
double antZaxisX, double antZaxisY, double antZaxisZ,
|
|
|
|
|
|
double antDirectX, double antDirectY, double antDirectZ,
|
|
|
|
|
|
double* thetaAnt, double* phiAnt, long len);
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" void AntPatternInterpGain(double* anttheta, double* antphi, double* gain,
|
|
|
|
|
|
double* antpattern,
|
|
|
|
|
|
double starttheta, double startphi, double dtheta, double dphi, int thetapoints, int phipoints,
|
2024-12-24 07:27:09 +00:00
|
|
|
|
long len);
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
extern "C" void calculationEcho(double* sigma0, double* TransAnt, double* ReciveAnt,
|
|
|
|
|
|
double* localangle, double* R, double* slopeangle,
|
|
|
|
|
|
double nearRange, double Fs, double pt, double lamda, long FreqIDmax,
|
2024-12-24 07:27:09 +00:00
|
|
|
|
cuComplex* echoAmp, long* FreqID,
|
|
|
|
|
|
long len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" void CUDAInterpSigma(
|
2025-01-14 01:25:23 +00:00
|
|
|
|
long* demcls, double* sigmaAmp, double* localanglearr, long len,
|
2024-12-24 07:27:09 +00:00
|
|
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen);
|
|
|
|
|
|
|
2025-01-02 10:53:33 +00:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>롢<EFBFBD><EBA1A2><EFBFBD><EFBFBD>
|
|
|
|
|
|
extern "C" void CUDARFPC_Caluation_R_Gain(
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double antX, double antY, double antZ, // <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double* targetX, double* targetY, double* targetZ, long TargetPixelNumber, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-08 05:50:02 +00:00
|
|
|
|
long* demCls,
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* demSlopeX, double* demSlopeY, double* demSlopeZ, // <20>ر<EFBFBD><D8B1>¶<EFBFBD>ʸ<EFBFBD><CAB8>
|
|
|
|
|
|
double antXaxisX, double antXaxisY, double antXaxisZ, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>X<EFBFBD><58>
|
|
|
|
|
|
double antYaxisX, double antYaxisY, double antYaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Y<EFBFBD><59>
|
|
|
|
|
|
double antZaxisX, double antZaxisY, double antZaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Z<EFBFBD><5A>
|
|
|
|
|
|
double antDirectX, double antDirectY, double antDirectZ,// <20><><EFBFBD>ߵ<EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
double Pt,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-06 11:56:45 +00:00
|
|
|
|
double refPhaseRange,
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
|
|
|
|
|
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
|
|
|
|
|
double NearR, double FarR, // <20><><EFBFBD>뷶Χ
|
2025-01-02 16:15:08 +00:00
|
|
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// <20><>ֵͼ
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* factorj, long freqnum,
|
2025-01-06 04:03:14 +00:00
|
|
|
|
double* outR, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-14 01:25:23 +00:00
|
|
|
|
//double* outAmp // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-08 05:50:02 +00:00
|
|
|
|
double* PRFEcho_real, double* PRFEcho_imag, long prfid
|
2025-01-02 10:53:33 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-08 05:50:02 +00:00
|
|
|
|
extern "C" void CUDA_PRF_CalFreqEcho(
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* Rarr, double* ampArr, long pixelcount,
|
|
|
|
|
|
double* factorj, long freqnum,
|
2025-01-06 04:03:14 +00:00
|
|
|
|
double dx, double nearR,
|
2025-01-08 05:50:02 +00:00
|
|
|
|
cuComplex* PRFEcho, long prfid);
|
2025-01-02 10:53:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 04:03:08 +00:00
|
|
|
|
extern "C" void CUDA_PRF_GeneratorEcho(cublasHandle_t handle,float* Rarr, float* ampArr, long pixelcount,
|
2025-01-14 01:25:23 +00:00
|
|
|
|
double* factorj, long freqnum,
|
|
|
|
|
|
double nearR, double farR,
|
|
|
|
|
|
double* echo_real, double* echo_imag, long prfid);
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 03:35:48 +00:00
|
|
|
|
extern "C" void CUDA_RFPC_MainBlock(
|
|
|
|
|
|
double* antX, double* antY, double* antZ, // <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double* antXaxisX, double* antXaxisY, double* antXaxisZ, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>X<EFBFBD><58>
|
|
|
|
|
|
double* antYaxisX, double* antYaxisY, double* antYaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Y<EFBFBD><59>
|
|
|
|
|
|
double* antZaxisX, double* antZaxisY, double* antZaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Z<EFBFBD><5A>
|
|
|
|
|
|
double* antDirectX, double* antDirectY, double* antDirectZ,// <20><><EFBFBD>ߵ<EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
long PRFCount, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double* freqpoints, double* factorj ,long freqnunm,// Ƶ<><C6B5><EFBFBD><EFBFBD>
|
|
|
|
|
|
double* targetX, double* targetY, double* targetZ, long TargetPixelNumber, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
long* demCls, // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double* demSlopeX, double* demSlopeY, double* demSlopeZ, // <20>ر<EFBFBD><D8B1>¶<EFBFBD>ʸ<EFBFBD><CAB8>
|
|
|
|
|
|
double Pt,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double refPhaseRange,
|
|
|
|
|
|
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
|
|
|
|
|
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
|
|
|
|
|
double NearR, double FarR, // <20><><EFBFBD>뷶Χ
|
|
|
|
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// <20><>ֵͼ
|
|
|
|
|
|
double* out_echoReal,double* out_echoImag,// <20><><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>
|
2025-01-15 03:57:07 +00:00
|
|
|
|
float* temp_R, float* temp_amp
|
2025-01-15 03:35:48 +00:00
|
|
|
|
//,double* temp_phi ,double* temp_real, double* tmep_imag// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
|
);
|
2025-01-14 01:25:23 +00:00
|
|
|
|
|
2024-12-24 07:27:09 +00:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
|