161 lines
5.2 KiB
Plaintext
161 lines
5.2 KiB
Plaintext
#ifndef _GPURFPC_H_
|
|
#define _GPURFPC_H_
|
|
|
|
#include "BaseConstVariable.h"
|
|
#include "GPUTool.cuh"
|
|
#include <cuda_runtime.h>
|
|
#include <device_launch_parameters.h>
|
|
#include <cublas_v2.h>
|
|
#include <cuComplex.h>
|
|
|
|
#define RFPCPIDIVLIGHT -4*PI/(LIGHTSPEED/1e9)
|
|
|
|
|
|
#define GPU_SHARE_MEMORY 5888
|
|
#define GPU_SHARE_STEP 23
|
|
|
|
|
|
extern "C" struct CUDASigmaParam {
|
|
double p1;
|
|
double p2;
|
|
double p3;
|
|
double p4;
|
|
double p5;
|
|
double p6;
|
|
};
|
|
|
|
|
|
extern __device__ double GPU_getSigma0dB(CUDASigmaParam param, double theta);
|
|
|
|
extern __device__ CUDAVectorEllipsoidal GPU_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
|
|
);
|
|
|
|
extern __device__ double GPU_BillerInterpAntPattern(double* antpattern,
|
|
double starttheta, double startphi, double dtheta, double dphi,
|
|
long thetapoints, long phipoints,
|
|
double searththeta, double searchphi);
|
|
|
|
|
|
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);
|
|
|
|
|
|
extern __global__ void CUDA_InterpSigma(
|
|
long* demcls, double* sigmaAmp, double* localanglearr, long len,
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen);
|
|
|
|
|
|
extern __global__ void CUDA_BillerInterpAntPattern(double* antpattern,
|
|
double starttheta, double startphi, double dtheta, double dphi,
|
|
long thetapoints, long phipoints,
|
|
double* searththeta, double* searchphi, double* searchantpattern,
|
|
long len);
|
|
|
|
|
|
|
|
|
|
|
|
extern __global__ void CUDAKernel_RFPC_Computer_R_Gain(
|
|
double antX, double antY, double antZ, // 天线的坐标
|
|
double* targetX, double* targetY, double* targetZ, long len, // 地面坐标
|
|
long* demCls,
|
|
double* demSlopeX, double* demSlopeY, double* demSlopeZ, // 地表坡度矢量
|
|
double antXaxisX, double antXaxisY, double antXaxisZ, // 天线坐标系的X轴
|
|
double antYaxisX, double antYaxisY, double antYaxisZ,// 天线坐标系的Y轴
|
|
double antZaxisX, double antZaxisY, double antZaxisZ,// 天线坐标系的Z轴
|
|
double antDirectX, double antDirectY, double antDirectZ,// 天线的指向
|
|
double Pt,// 发射能量
|
|
double refPhaseRange,
|
|
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // 发射天线方向图
|
|
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//接收天线方向图
|
|
double NearR, double FarR, // 距离范围
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// 插值图
|
|
float* outR, // 输出距离
|
|
float* outAmp
|
|
);
|
|
|
|
|
|
extern __global__ void CUDAKernel_PRF_GeneratorEcho(float* Rarr, float* ampArr,
|
|
long pixelcount,
|
|
float f0, float dfreq, long freqnum,
|
|
float* echo_real, float* echo_imag, long prfid);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
//extern "C" void CUDA_RFPC_MainBlock(
|
|
// double* antX, double* antY, double* antZ, // 天线的坐标
|
|
// double* antXaxisX, double* antXaxisY, double* antXaxisZ, // 天线坐标系的X轴
|
|
// double* antYaxisX, double* antYaxisY, double* antYaxisZ,// 天线坐标系的Y轴
|
|
// double* antZaxisX, double* antZaxisY, double* antZaxisZ,// 天线坐标系的Z轴
|
|
// double* antDirectX, double* antDirectY, double* antDirectZ,// 天线的指向
|
|
// long startpid, long PRFCount, // 脉冲数
|
|
// float f0, float dfreq, long freqnum, // 频率数
|
|
// double* targetX, double* targetY, double* targetZ, long TargetPixelNumber, // 地面坐标
|
|
// long* demCls, // 地表类别
|
|
// double* demSlopeX, double* demSlopeY, double* demSlopeZ, // 地表坡度矢量
|
|
// double NearR, double FarR, // 距离范围
|
|
//
|
|
// float* out_echoReal, float* out_echoImag,// 输出回波
|
|
// float* temp_R, float* temp_amp
|
|
// //,double* temp_phi ,double* temp_real, double* tmep_imag// 临时变量
|
|
//);
|
|
|
|
|
|
extern "C" void CUDA_RFPC_MainProcess(
|
|
// 天线
|
|
double* antX, double* antY, double* antZ, // 天线坐标
|
|
double* antXaxisX, double* antXaxisY, double* antXaxisZ, // 天线坐标系的X轴
|
|
double* antYaxisX, double* antYaxisY, double* antYaxisZ,// 天线坐标系的Y轴
|
|
double* antZaxisX, double* antZaxisY, double* antZaxisZ,// 天线坐标系的Z轴
|
|
double* antDirectX, double* antDirectY, double* antDirectZ,// 天线的指向
|
|
long PRFCount, long FreqNum, // 脉冲数量,频率数量
|
|
float f0, float dfreq,// 起始频率,终止频率
|
|
double Pt,// 发射能量
|
|
double refPhaseRange,
|
|
// 天线方向图
|
|
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // 发射天线方向图
|
|
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//接收天线方向图
|
|
double NearR, double FarR, // 距离范围
|
|
|
|
|
|
// 地面
|
|
double* targetX, double* targetY, double* targetZ, long* demCls, long TargetPixelNumber, // 地面坐标、地表覆盖类型,像素数
|
|
double* demSlopeX, double* demSlopeY, double* demSlopeZ,// 地表坡度矢量
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// 插值图像
|
|
|
|
float* out_echoReal, float* out_echoImag// 输出回波
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|