#ifndef _GPURFPC_H_ #define _GPURFPC_H_ #include "BaseConstVariable.h" #include "GPUTool.cuh" #include #include #include #include #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, PatternImageDesc TransAntpatternDesc, //double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // 发射天线方向图 double* ReceiveAntpattern, PatternImageDesc ReceiveAntpatternDesc,// 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, double* echo_real, double* 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 PRFCount, // 脉冲数 float f0, float dfreq, long freqnum,// 频率数 double* targetX, double* targetY, double* targetZ, long TargetPixelNumber, // 地面坐标 long* demCls, // 地表类别 double* demSlopeX, double* demSlopeY, double* demSlopeZ, // 地表坡度矢量 double Pt,// 发射能量 double refPhaseRange, double* TransAntpattern, PatternImageDesc TransAntpatternDesc, //double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // 发射天线方向图 double* ReceiveAntpattern, PatternImageDesc ReceiveAntpatternDesc,//double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//接收天线方向图 double NearR, double FarR, // 距离范围 CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// 插值图 double* out_echoReal,double* out_echoImag,// 输出回波 float* temp_R, float* temp_amp //,double* temp_phi ,double* temp_real, double* tmep_imag// 临时变量 ); #endif