public void Execute(int index) { int4 k = pairs[index]; CNInfo rxNode = nodes[k.y]; AntennaData tx = antennas[k.z]; AntennaData rx = antennas[k.w]; rxPrecalcNoise[index] = antennaNoise[k.w]; rxSurfaceNormal[index] = rx.isHome ? rxNode.surfaceNormal : double3.zero; txPower[index] = tx.txPower; txFreq[index] = tx.freq; txGain[index] = tx.gain; txBeamwidth[index] = tx.beamwidth; txHome[index] = tx.isHome; txPos[index] = tx.position; txDir[index] = tx.isHome ? (float3)(rx.position - tx.position) : tx.dir; rxFreq[index] = rx.freq; rxGain[index] = rx.gain; rxBeamwidth[index] = rx.beamwidth; rxHome[index] = rx.isHome; rxPos[index] = rx.position; rxDir[index] = rx.isHome ? (float3)(tx.position - rx.position) : rx.dir; rxAMW[index] = rx.AMW; }
public void Execute(int index) { AntennaData tx = antennas[pairs[index].z]; AntennaData rx = antennas[pairs[index].w]; encoder[index] = tx.encoder.BestMatching(rx.encoder); }
public void Execute(int index) { AntennaData tx = antennas[pairs[index].z]; AntennaData rx = antennas[pairs[index].w]; float max = math.min(tx.maxSymbolRate, rx.maxSymbolRate); float min = math.max(tx.minSymbolRate, rx.minSymbolRate); int bits = math.min(tx.modulationBits, rx.modulationBits); if (min > max) { min = 0; max = 0; } float maxData = max * encoder[index].CodingRate * (1 << (bits - 1)); float minData = min * encoder[index].CodingRate; maxSymbolRate[index] = max; minSymbolRate[index] = min; maxModulationBits[index] = bits; maxDataRate[index] = maxData; minDataRate[index] = minData; maxSteps[index] = minData > 0 ? (int)math.floor(math.log2(maxData / minData)) : 0; }
public void Execute(int index) { AntennaData ant = antennas[index]; noiseTemp[index] = ant.isHome ? 0 : Precompute.NoiseFromOccluders(ant, occluders); }