public WaveSimFdtd2D(int gridW, int gridH, float c0, float Δx) { int hr = 0; mC0 = c0; mΔt = Δx * mSc / mC0; VisualizeMode = VisualizeModeType.VM_Linear; mGridW = gridW; mGridH = gridH; mGridCount = mGridW * mGridH; #if false mC0 = c0; mΔt = Δt; mΔx = Δx; mSc = mC0 * mΔt / mΔx; #endif // 上下左右 x 2 mDelayArray = new Delay[(gridW + gridH) * 2 * 2]; for (int i = 0; i < mDelayArray.Length; ++i) { mDelayArray[i] = new Delay(2); } Reset(); mCS = new WWWave2DGpu(); do { hr = mCS.Init(); if (hr < 0) { return; } WWWave2DParams p; p.fieldW = gridW; p.fieldH = gridH; p.deltaT = mΔt; p.sc = mSc; p.c0 = mC0; hr = mCS.Setup(p, mLoss, mRoh, mCr); } while (false); }
public void Term() { mCS.Term(); mCS = null; }