U s i n g i t m . p y s u b r o u t i n e s The following two sets of python-like pseudo code show how to use ITM in the area and point-to-point modes. Since aVar() returns the path loss above free space, the function itm.freespace_dB(f_Hz, r_m) can be used. f_Hz is frequency in Hz, and r_m is distance from antenna in meters. If atten_dB is aVar's return value, path loss is atten_dB + itm.freespace_dB(...). ########################################################################### The following three lists of constants are used with ITM set up calls. 1 . c L i s t - climate names to assign to itm.prop['klim']: cEquatorial # Equatorial. cContSubtrop # Continental subtropical. cMariSubtrop # Marine subtropical. cDesert # Desert. cContTemp # Continental temperate. cMariTempLand # Maritime temperate, overland. cMariTempSea # Maritime temperate, oversea. 2 . m L i s t - modes of variability to use with mdvarSet(). mClear # Clear mdvar setting. # Exactly one of following 4 is chosen. mSingle # Single message mode. mRandom # Individual/Random receiver of broadcast. mMobile # Mobile mode. mBcast # Broadcast mode. # Additional mdvarSet() calls can be used to set one or both of following: mPfl # Point-to-point mode. mIfere # Interference problem, set quantile of situation to 50%. 3 . e L i s t - error names to use with itm.errorGet(): eNone # No error. # W a r n i n g s eQuantiles # Warning: quantile < isf(0.1%) == 3.1. eClimate # Warning: climate was not set. Set to Continental Temperate. eDist1k # Warning: distance > 1000 km, nearly out of range. eModeVar # Warning: mode of variability was not set. Use Single Message. eFreqWarn # Warning: frequency not in [40, 1000] MHz. eAntWarn # Warning: antenna structure height not in [1, 1000] m. # E r r o r s eDistBad # Error: distance not in interval [1km, 2000km] or is less # than 5x(ant effective hgts difference). eAntErr # Error: antenna struct height not in [0.5, 3000] km. eHorizErr # Error: smooth earth horizon not in [0.1, 3] times rough earth's. eNsErr # Error: Ns not in [250, 400] N-units. eECurveErr # Error: earth curvature not in [75e-9, 250e-9]. eImpedErr # Error: for ground impedance Z, real(Z) < |imag(Z)|. eFreqErr # Error: frequency not in [20, 2000] MHz. ########################################################################### To use the area prediction mode: # S e t u p I T M import itm itm.dictionaries() # Prepare ITM. itm.prop['f_MHz'] = ... # MHz, transmit carrier frequency. itm.prop['hg'][0] = ... # m, transmit antenna structure height. itm.prop['hg'][1] = ... # m, receive antenna structure height. itm.prop['dh'] = ... # m, roughness factor for region. itm.prop['klim'] = itm.c... # One of cList climate constants. itm.prop['ens'] = ... # N-units, regional refractivity. itm.mdvarSet(itm.m...) # Mode of variability mList constant. itm.lrPrep(...) # Calculate constants used throughout ITM. # R u n I T M i n A r e a M o d e itm.lrArea(...) for dist in range(...) # km, distances. itm.lrProp(dist) # Longley-Rice propagation. for i in range(nq) # Loop for selected quantiles. a_dB, sigmaS = itm.aVar(...) # Variability statistics. ...use result a_dB... # a_dB is atten, sigmaS to calculate confidence. itm.errors() # Or check itm.errorGet(). ########################################################################### To use the point-to-point mode: # S e t u p I T M import itm itm.dictionaries() # Prepare ITM. itm.prop['f_MHz'] = ... # MHz, transmit carrier frequency. itm.prop['hg'][0] = ... # m, transmit antenna structure height. itm.prop['hg'][1] = ... # m, receive antenna structure height. itm.prop['klim'] = itm.c... # One of cList climate constants. itm.prop['ens'] = ... # N-units, regional refractivity. itm.mdvarSet(itm.m...) # Mode of variability mList constant. itm.mdvarSet(itm.mPfl) # Point-to-point, or profile, mode. itm.lrPrep(...) # Calculate constants used throughout ITM. # R u n I T M i n P r o f i l e M o d e # Terrain defined by (rng[i],pfl[i]), points need not be equidistant. rng = ... # m range from antenna, terrain profile. pfl = ... # m above sea level, terrain profile. itm.lrProfile(rng, pfl) # Longley-Rice propagation. elTx_rad = itm.prop['the'][0] # If needed, RF takeoff angle at transmitter. elRx_rad = itm.prop['the'][1] # If needed, RF takeoff angle at receiver. for i in range(nq) # Loop for selected quantiles. a_dB, sigmaS = itm.aVar(...) # Variability statistics. ...use result a_dB... # a_dB is atten, sigmaS to calculate confidence. itm.errors() # Or check itm.errorGet().