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>
|
|
|
|
|
|
2025-03-23 08:01:28 +00:00
|
|
|
|
/** CUDA <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> ************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 10:48:43 +00:00
|
|
|
|
#define RFPCPIDIVLIGHT -4*PI/(LIGHTSPEED/1e9)
|
|
|
|
|
|
2025-03-23 08:01:28 +00:00
|
|
|
|
|
|
|
|
|
extern "C" struct SateState {
|
2025-04-02 02:28:51 +00:00
|
|
|
|
double Px, Py, Pz, Vx, Vy, Vz,antDirectX, antDirectY, antDirectZ;
|
2025-03-23 08:01:28 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" struct GoalState {
|
|
|
|
|
double Tx, Ty, Tz, TsX, TsY, TsZ;
|
|
|
|
|
size_t cls;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 10:48:43 +00:00
|
|
|
|
|
2024-12-24 07:27:09 +00:00
|
|
|
|
extern "C" struct CUDASigmaParam {
|
2025-03-28 11:06:59 +00:00
|
|
|
|
float p1;
|
|
|
|
|
float p2;
|
|
|
|
|
float p3;
|
|
|
|
|
float p4;
|
|
|
|
|
float p5;
|
|
|
|
|
float p6;
|
2024-12-24 07:27:09 +00:00
|
|
|
|
};
|
|
|
|
|
|
2025-03-23 08:01:28 +00:00
|
|
|
|
extern "C" struct SloperDs
|
|
|
|
|
{
|
|
|
|
|
double* SloperX;
|
|
|
|
|
double* SloperY;
|
|
|
|
|
double* SloperZ;
|
|
|
|
|
double* SloperAngle;
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern "C" struct DEMDs
|
|
|
|
|
{
|
|
|
|
|
double* demX;
|
|
|
|
|
double* demY;
|
|
|
|
|
double* demZ;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern "C" struct LandDataDs
|
|
|
|
|
{
|
|
|
|
|
unsigned char* landData;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern "C" struct GPSPointsDs
|
|
|
|
|
{
|
|
|
|
|
double* Pxs;
|
|
|
|
|
double* Pys;
|
|
|
|
|
double* Pzs;
|
|
|
|
|
double* Vxs;
|
|
|
|
|
double* Vys;
|
|
|
|
|
double* Vzs;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" struct RFPCTask
|
|
|
|
|
{
|
|
|
|
|
double startFreq;
|
|
|
|
|
double stepFreq;
|
|
|
|
|
long freqNum;
|
|
|
|
|
long prfNum;
|
|
|
|
|
|
|
|
|
|
double Rnear;
|
|
|
|
|
double Rfar;
|
|
|
|
|
double Rref;
|
|
|
|
|
|
2025-03-25 03:39:28 +00:00
|
|
|
|
double Pt = 1;
|
2025-03-23 08:01:28 +00:00
|
|
|
|
|
|
|
|
|
SateState* antlist = nullptr;
|
|
|
|
|
GoalState* goallist = nullptr;
|
|
|
|
|
cuComplex* d_echoData = nullptr; // <20>ز<EFBFBD>
|
|
|
|
|
CUDASigmaParam sigma0_cls;
|
2025-03-25 16:27:22 +00:00
|
|
|
|
double maxGain=48;
|
2025-03-30 18:14:22 +00:00
|
|
|
|
double GainWeight=10; // 2<>ȷ<EFBFBD>Χ
|
2025-03-23 08:01:28 +00:00
|
|
|
|
|
2025-03-24 06:03:54 +00:00
|
|
|
|
size_t targetnum;
|
2025-03-23 08:01:28 +00:00
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2025-01-08 05:50:02 +00:00
|
|
|
|
|
2025-03-06 09:58:40 +00:00
|
|
|
|
extern __device__ double GPU_getSigma0dB_params(
|
2025-03-05 09:10:21 +00:00
|
|
|
|
const double p1, const double p2, const double p3, const double p4, const double p5, const double p6,
|
|
|
|
|
double theta);
|
|
|
|
|
|
2025-03-06 09:58:40 +00:00
|
|
|
|
extern __device__ double GPU_getSigma0dB(CUDASigmaParam param, double theta);
|
2025-03-28 11:06:59 +00:00
|
|
|
|
extern __device__ float GPU_getSigma0dB(CUDASigmaParam param, float theta);
|
|
|
|
|
|
2025-03-05 09:10:21 +00:00
|
|
|
|
|
2025-03-06 09:58:40 +00:00
|
|
|
|
extern __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal(
|
2025-03-05 09:10:21 +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-03-06 09:58:40 +00:00
|
|
|
|
extern __device__ double GPU_BillerInterpAntPattern(double* antpattern,
|
2025-03-05 09:10:21 +00:00
|
|
|
|
double starttheta, double startphi, double dtheta, double dphi,
|
|
|
|
|
long thetapoints, long phipoints,
|
|
|
|
|
double searththeta, double searchphi);
|
2025-01-15 10:48:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-20 07:49:54 +00:00
|
|
|
|
extern "C" void CUDA_RFPC_MainProcess(
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double* antX, double* antY, double* antZ, // <20><><EFBFBD><EFBFBD><EFBFBD><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>
|
2025-01-27 03:37:46 +00:00
|
|
|
|
long PRFCount, long FreqNum, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-20 07:49:54 +00:00
|
|
|
|
float f0, float dfreq,// <20><>ʼƵ<CABC>ʣ<EFBFBD><CAA3><EFBFBD>ֹƵ<D6B9><C6B5>
|
2025-01-15 03:35:48 +00:00
|
|
|
|
double Pt,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
double refPhaseRange,
|
2025-01-20 07:49:54 +00:00
|
|
|
|
// <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
|
|
|
|
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
2025-01-16 02:12:08 +00:00
|
|
|
|
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
|
2025-01-27 03:37:46 +00:00
|
|
|
|
double maxTransAntPatternValue,double maxReceiveAntPatternValue,
|
2025-01-15 03:35:48 +00:00
|
|
|
|
double NearR, double FarR, // <20><><EFBFBD>뷶Χ
|
2025-01-20 07:49:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double* targetX, double* targetY, double* targetZ, long* demCls, long TargetPixelNumber, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꡢ<EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-27 03:37:46 +00:00
|
|
|
|
double* demSlopeX, double* demSlopeY, double* demSlopeZ, // <20>ر<EFBFBD><D8B1>¶<EFBFBD>ʸ<EFBFBD><CAB8>
|
2025-01-20 07:49:54 +00:00
|
|
|
|
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// <20><>ֵͼ<D6B5><CDBC>
|
|
|
|
|
|
2025-01-27 03:37:46 +00:00
|
|
|
|
float* out_echoReal, float* out_echoImag,// <20><><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>
|
|
|
|
|
|
|
|
|
|
float* d_temp_R, float* d_temp_amp
|
2025-01-15 03:35:48 +00:00
|
|
|
|
);
|
2025-01-14 01:25:23 +00:00
|
|
|
|
|
2025-01-20 07:49:54 +00:00
|
|
|
|
|
|
|
|
|
|
2025-03-23 08:01:28 +00:00
|
|
|
|
extern "C" double* hostSigmaData_toDevice(int devid);
|
2025-04-02 02:28:51 +00:00
|
|
|
|
extern "C" void ProcessRFPCTask(RFPCTask& task,long devid,float* h_R,float* h_amp);
|
2025-01-20 07:49:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-12-24 07:27:09 +00:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-14 01:25:23 +00:00
|
|
|
|
|