private void SolverPolarizationY() { Logger.WriteStatus("Starting Polarization Y"); CurrentSource = Polarization.Y; SolveForOneSource(); OnPolarizationComplete(CurrentSource); }
//******************************************************** //* Point-To-Point Mode Calculations * //******************************************************** public void point_to_pointMDH(double[] elev, double tht_m, double rht_m, double eps_dielect, double sgm_conductivity, double eno_ns_surfref, double frq_mhz, RadioClimate radio_climate, Polarization pol, VariabilityMode mdvar, double timepct, double locpct, double confpct, out double dbloss, out PropMode propmode, out double deltaH, out int errnum) // timepct, locpct, confpct: .01 to .99 // elev[]: [num points - 1], [delta dist(meters)], [height(meters) point 1], ..., [height(meters) point n] // errnum: 0- No Error. // 1- Warning: Some parameters are nearly out of range. // Results should be used with caution. // 2- Note: Default parameters have been substituted for impossible ones. // 3- Warning: A combination of parameters is out of range. // Results are probably invalid. // Other- Warning: Some parameters are out of range. // Results are probably invalid. { _klim = radio_climate; _lvar = Changes.All; _mdp = ControlFlow.PointToPoint; _w1 = true; // possible bugfix: original embedded this value in mdvar _mdvar = mdvar; // bugfix: original used 'mobile' Transmitter.hg = tht_m; Receiver.hg = rht_m; var e = new Elevations(elev); qlrps(frq_mhz, e.Points.Average(), eno_ns_surfref, pol, eps_dielect, sgm_conductivity); qlrpfl(e, _klim, _mdvar); var fs = 32.45 + 20 * Math.Log10(frq_mhz) + 20 * Math.Log10(_dist / 1000.0); deltaH = _dh; propmode = GetPropMode(); dbloss = avar(qerfi(timepct), qerfi(locpct), qerfi(confpct)) + fs; //avar(time,location,confidence) errnum = _kwx; }
/// <summary> /// Ermittelt ein Kürzel für diese Gruppe. /// </summary> /// <returns>Das gewünschte Kürzel.</returns> public override int GetHashCode() { // Core int hash = (null == OrbitalPosition) ? 0 : OrbitalPosition.GetHashCode(); // Merge all return(hash ^ Frequency.GetHashCode() ^ SymbolRate.GetHashCode() ^ Polarization.GetHashCode() ^ InnerFEC.GetHashCode() ^ UsesS2Modulation.GetHashCode() ^ Modulation.GetHashCode() ^ RollOff.GetHashCode() ^ IsWestPosition.GetHashCode()); }
/// <summary> /// Point-to-point mode functionality, with variability specified with confidence/reliability (CR) /// </summary> /// <param name="h_tx__meter">Structural height of the TX, in meters</param> /// <param name="h_rx__meter">Structural height of the RX, in meters</param> /// <param name="pfl">Terrain data, in PFL format</param> /// <param name="climate">Radio climate</param> /// <param name="N_0">Refractivity, in N-Units</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="pol">Polarization</param> /// <param name="epsilon">Relative permittivity</param> /// <param name="sigma">Conductivity</param> /// <param name="mdvar">Mode of variability</param> /// <param name="confidence">Confidence percentage</param> /// <param name="reliability">Reliability percentage</param> /// <param name="A__db">Basic transmission loss, in dB</param> /// <param name="warnings">Warning flags</param> /// <param name="interValues">Struct of intermediate values</param> /// <returns>Error code</returns> public static int ITM_P2P_CR_Ex(double h_tx__meter, double h_rx__meter, double[] pfl, Climate climate, double N_0, double f__mhz, Polarization pol, double epsilon, double sigma, int mdvar, double confidence, double reliability, out double A__db, out Warnings warnings, out IntermediateValues interValues) { int rtn = ITM_P2P_CR_Ex(h_tx__meter, h_rx__meter, pfl, (int)climate, N_0, f__mhz, (int)pol, epsilon, sigma, mdvar, confidence, reliability, out A__db, out long warns, out interValues); warnings = (Warnings)warns; return(rtn); }
/// <summary> /// Point-to-point mode functionality, with variability specified with time/location/situation (TLS) /// </summary> /// <param name="h_tx__meter">Structural height of the TX, in meters</param> /// <param name="h_rx__meter">Structural height of the RX, in meters</param> /// <param name="pfl">Terrain data, in PFL format</param> /// <param name="climate">Radio climate</param> /// <param name="N_0">Refractivity, in N-Units</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="pol">Polarization</param> /// <param name="epsilon">Relative permittivity</param> /// <param name="sigma">Conductivity</param> /// <param name="mdvar">Mode of variability</param> /// <param name="time">Time percentage</param> /// <param name="location">Location percentage</param> /// <param name="situation">Situation percentage</param> /// <param name="A__db">Basic transmission loss, in dB</param> /// <param name="warnings">Warning flags</param> /// <returns>Error code</returns> public static int ITM_P2P_TLS(double h_tx__meter, double h_rx__meter, double[] pfl, Climate climate, double N_0, double f__mhz, Polarization pol, double epsilon, double sigma, int mdvar, double time, double location, double situation, out double A__db, out Warnings warnings) { int rtn = ITM_P2P_TLS(h_tx__meter, h_rx__meter, pfl, (int)climate, N_0, f__mhz, (int)pol, epsilon, sigma, mdvar, time, location, situation, out A__db, out long warns); warnings = (Warnings)warns; return(rtn); }
/// <summary> /// Area mode functionality /// </summary> /// <param name="h_tx__meter">Structural height of the TX, in meters</param> /// <param name="h_rx__meter">Structural height of the RX, in meters</param> /// <param name="tx_site_criteria">Siting criteria of the TX</param> /// <param name="rx_site_criteria">Siting criteria of the RX</param> /// <param name="d__km">Path distance, in km</param> /// <param name="delta_h__meter">Terrain irregularity parameter</param> /// <param name="climate">Radio climate</param> /// <param name="N_0">Refractivity, in N-Units</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="pol">Polarization</param> /// <param name="epsilon">Relative permittivity</param> /// <param name="sigma">Conductivity</param> /// <param name="mdvar">Mode of variability</param> /// <param name="confidence">Confidence percentage</param> /// <param name="reliability">Reliability percentage</param> /// <param name="A__db">Basic transmission loss, in dB</param> /// <param name="warnings">Warning flags</param> /// <returns>Error code</returns> public static int ITM_AREA_CR(double h_tx__meter, double h_rx__meter, SitingCriteria tx_site_criteria, SitingCriteria rx_site_criteria, double d__km, double delta_h__meter, Climate climate, double N_0, double f__mhz, Polarization pol, double epsilon, double sigma, int mdvar, double confidence, double reliability, out double A__db, out Warnings warnings) { int rtn = ITM_AREA_CR(h_tx__meter, h_rx__meter, (int)tx_site_criteria, (int)rx_site_criteria, d__km, delta_h__meter, (int)climate, N_0, f__mhz, (int)pol, epsilon, sigma, mdvar, confidence, reliability, out A__db, out long warns); warnings = (Warnings)warns; return(rtn); }
/// <summary> /// Area mode functionality /// </summary> /// <param name="h_tx__meter">Structural height of the TX, in meters</param> /// <param name="h_rx__meter">Structural height of the RX, in meters</param> /// <param name="tx_site_criteria">Siting criteria of the TX</param> /// <param name="rx_site_criteria">Siting criteria of the RX</param> /// <param name="d__km">Path distance, in km</param> /// <param name="delta_h__meter">Terrain irregularity parameter</param> /// <param name="climate">Radio climate</param> /// <param name="N_0">Refractivity, in N-Units</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="pol">Polarization</param> /// <param name="epsilon">Relative permittivity</param> /// <param name="sigma">Conductivity</param> /// <param name="mdvar">Mode of variability</param> /// <param name="time">Time percentage</param> /// <param name="location">Location percentage</param> /// <param name="situation">Situation percentage</param> /// <param name="A__db">Basic transmission loss, in dB</param> /// <param name="warnings">Warning flags</param> /// <param name="interValues">Struct of intermediate values</param> /// <returns>Error code</returns> public static int ITM_AREA_TLS_Ex(double h_tx__meter, double h_rx__meter, SitingCriteria tx_site_criteria, SitingCriteria rx_site_criteria, double d__km, double delta_h__meter, Climate climate, double N_0, double f__mhz, Polarization pol, double epsilon, double sigma, int mdvar, double time, double location, double situation, out double A__db, out Warnings warnings, out IntermediateValues interValues) { int rtn = ITM_AREA_TLS_Ex(h_tx__meter, h_rx__meter, (int)tx_site_criteria, (int)rx_site_criteria, d__km, delta_h__meter, (int)climate, N_0, f__mhz, (int)pol, epsilon, sigma, mdvar, time, location, situation, out A__db, out long warns, out interValues); warnings = (Warnings)warns; return(rtn); }
public void Solve(AnomalyCurrent chiX, AnomalyCurrent chiY) { Logger.WriteStatus("Starting Cartesian MT Forward solver..."); Logger.WriteStatus("\n\nStarting Polarization X\n\n"); CurrentSource = Polarization.X; CalculateOnObservationsForGivenChi(chiX); Logger.WriteStatus("\n\nStarting Polarization Y\n\n"); CurrentSource = Polarization.Y; CalculateOnObservationsForGivenChi(chiY); }
private void qlrps(double fmhz, double zsys, double en0, Polarization ipol, double eps, double sgm) { const double gma = 157e-9; _wn = fmhz / 47.7; _ens = en0; if (zsys != 0) { _ens *= Math.Exp(-zsys / 9460.0); } _gme = gma * (1 - 0.04665 * Math.Exp(_ens / 179.3)); var zq = new Complex(eps, 376.62 * sgm / _wn); var prop_zgnd = Complex.Sqrt(zq - 1); if (ipol != Polarization.Horizontal) { prop_zgnd = prop_zgnd / zq; } _zgnd = prop_zgnd; }
//******************************************************** //* Area Mode Calculations * //******************************************************** public void area(VariabilityMode ModVar, double deltaH, double tht_m, double rht_m, double dist_km, SiteCriteria TSiteCriteria, SiteCriteria RSiteCriteria, double eps_dielect, double sgm_conductivity, double eno_ns_surfref, double frq_mhz, RadioClimate radio_climate, Polarization pol, double pctTime, double pctLoc, double pctConf, out double dbloss, out PropMode propmode, out int errnum) { // pctTime, pctLoc, pctConf: .01 to .99 // errnum: 0- No Error. // 1- Warning: Some parameters are nearly out of range. // Results should be used with caution. // 2- Note: Default parameters have been substituted for impossible ones. // 3- Warning: A combination of parameters is out of range. // Results are probably invalid. // Other- Warning: Some parameters are out of range. // Results are probably invalid. _dh = deltaH; _klim = radio_climate; _ens = eno_ns_surfref; Transmitter.hg = tht_m; Transmitter.kst = TSiteCriteria; Receiver.hg = rht_m; Receiver.kst = RSiteCriteria; qlrps(frq_mhz, 0, eno_ns_surfref, pol, eps_dielect, sgm_conductivity); qlra(_klim, ModVar); if (_lvar < Changes.Distance) { _lvar = Changes.Distance; } lrprop(dist_km * 1000); var fs = 32.45 + 20 * Math.Log10(frq_mhz) + 20 * Math.Log10(_dist / 1000.0); var xlb = fs + avar(qerfi(pctTime), qerfi(pctLoc), qerfi(pctConf)); dbloss = xlb; errnum = _kwx; propmode = GetPropMode(); }
public PolarizationCompleteEventArs(Polarization polarization) { Polarization = polarization; }
/// <summary> /// Recommendation ITU-R P.528-5 /// </summary> /// <param name="d__km">Path distance, in km</param> /// <param name="h_1__meter">Height of the low terminal, in meters</param> /// <param name="h_2__meter">Height of the high terminal, in meters</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="T_pol">Polarization</param> /// <param name="p">Time percentage</param> /// <param name="result">Result data structure</param> /// <param name="terminal_1">Intermediate values for terminal 1 geometry</param> /// <param name="terminal_2">Intermediate values for terminal 2 geometry</param> /// <param name="tropo">Intermediate values for troposcatter calculations</param> /// <param name="path">Intermediate values for propagation path</param> /// <param name="los_params">Intermediate values for Line-of-Sight calculations</param> /// <returns>Return code</returns> public static int InvokeEx(double d__km, double h_1__meter, double h_2__meter, double f__mhz, Polarization T_pol, double p, out Result result, out Terminal terminal_1, out Terminal terminal_2, out TroposcatterParams tropo, out Path path, out LineOfSightParams los_params) { return(P528Ex_Invoke(d__km, h_1__meter, h_2__meter, f__mhz, (int)T_pol, p, out result, out terminal_1, out terminal_2, out tropo, out path, out los_params)); }
public MtFieldsAtSiteCalculatedEventArgs(Polarization polarization, ObservationSite observationSite, ComplexVector normalField, ComplexVector anomalyField) : base(observationSite, normalField, anomalyField) { Polarization = polarization; }
public Site(string puid, string siteid) { Settings settings = new Settings(puid); Puid = ""; Siteid = ""; SiteName = ""; Latitude = ""; Longitude = ""; HBA = ""; Frequency = ""; Polarization = ""; PolarizationNumber = ""; EIRP = ""; AntennaType = ""; AntennaModel = ""; AntennaGain = 0; FeederLoss = 0; RfPower = 0; Azimuth = ""; DownTilt = ""; Bandwidth = 0; SnrFactor = ""; Technology = ""; Height = ""; Location = new Coords(0, 0); foreach (DataRow row in GetDataTableFromQuery("SELECT " + "siteid, sitename, latitude, longitude*-1, " + "hba, dlfrequency, polarization, rfpower, " + "antennatype, azimuth, downtilt, antennamodel, " + "antennagain, feederloss, bandwidth, technology, height " + "FROM pusersnetwork WHERE uid = '" + puid + "' AND " + "siteid = '" + siteid + "';").Rows) { Puid = puid; Siteid = row[0].ToString(); SiteName = row[1].ToString(); Latitude = row[2].ToString(); Longitude = row[3].ToString(); HBA = row[4].ToString() + " m "; Frequency = row[5].ToString(); Polarization = row[6].ToString(); RfPower = row[7].ToString().ToDouble(); AntennaType = row[8].ToString().ToLower(); Azimuth = row[9].ToString(); DownTilt = row[10].ToString(); AntennaModel = row[11].ToString(); AntennaGain = row[12].ToString().ToDouble(); FeederLoss = row[13].ToString().ToDouble(); Bandwidth = row[14].ToString().ToDouble() * 1000000; // unit hertz Technology = row[15].ToString(); Height = row[16].ToString(); // dependent variables , calculated PolarizationNumber = Polarization.ToLower() == "vertical" ? "1" : "0"; // rfpower (W) + antennagain (dBi) - feederloss (dB) + recievergain (dBi) EIRP = DbmToWatt(WattToDbm(RfPower) + AntennaGain - FeederLoss + settings.Pl_ReceiverGain.ToDouble()).ToString(); double eirpdbW = WattToDbm(EIRP.ToDouble()) - 30; double noisedbW = -174 + (10 * Math.Log10(Bandwidth)) - 30; SnrFactor = (eirpdbW - noisedbW).ToString(); Location = new Coords(Longitude.ToDouble() * -1, Latitude.ToDouble()); } }
public MtFieldsAtLevelCalculatedEventArgs(Polarization polarization, ObservationLevel level, AnomalyCurrent normalField, AnomalyCurrent anomalyField) : base(level, normalField, anomalyField) { Polarization = polarization; }
private void OnPolarizationComplete(Polarization polarization) => PolarizationComplete?.Invoke(this, new PolarizationCompleteEventArs(polarization));
/// <summary> /// Compute the LFMF propagation prediction /// </summary> /// <param name="h_tx__meter">Transmitter height, in meters</param> /// <param name="h_rx__meter">Receiver height, in meters</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="P_tx__watt">Transmit power, in Watts</param> /// <param name="N_s">Surface refractivity, in N-Units</param> /// <param name="d__km">Path distance, in km</param> /// <param name="epsilon">Relative permittivity</param> /// <param name="sigma">Conductivity</param> /// <param name="pol">Polarization</param> /// <param name="result">Prediction result</param> /// <returns>Error code</returns> public static int Invoke(double h_tx__meter, double h_rx__meter, double f__mhz, double P_tx__watt, double N_s, double d__km, double epsilon, double sigma, Polarization pol, out Result result) { return(LFMF_Invoke(h_tx__meter, h_rx__meter, f__mhz, P_tx__watt, N_s, d__km, epsilon, sigma, (int)pol, out result)); }
/// <summary> /// Recommendation ITU-R P.528-5 /// </summary> /// <param name="d__km">Path distance, in km</param> /// <param name="h_1__meter">Height of the low terminal, in meters</param> /// <param name="h_2__meter">Height of the high terminal, in meters</param> /// <param name="f__mhz">Frequency, in MHz</param> /// <param name="T_pol">Polarization</param> /// <param name="p">Time percentage</param> /// <param name="result">Result data structure</param> /// <returns>Return code</returns> public static int Invoke(double d__km, double h_1__meter, double h_2__meter, double f__mhz, Polarization T_pol, double p, out Result result) { return(P528_Invoke(d__km, h_1__meter, h_2__meter, f__mhz, (int)T_pol, p, out result)); }