def defaultParameters(D=16.4640, Fc=1.9341e+14): # D = 16.4640 # makes beta2 = 21 lambda_ = c / Fc beta2 = D * 1e-6 * lambda_**2 / (2 * np.pi * c) * 1e27 param = cu.AttrDict() param.lambda_ = lambda_ # Wavelength param.Fc = Fc # Carrier frequncy param.PolMux = 1 # 0 when single polarization, 1 with polarization multiplexing param.gamma = 1.3 # Nonlinearity coefficient in [1/W/km] param.D = D param.beta2 = beta2 # Dispersion coefficient [ps^2/km] param.alpha = 0.2 # Fiber loss coefficient [dB/km] param.Nspan = 20 # Number of spans param.L = 100 # Span length [km] param.PD = 0 # Pre-dispersion [ps^2] param.PdBm = 2 # Average input power [dBm] param.BaudRate = 32 # Baud-rate [GHz] param.ChSpacing = 50 # Channel spacing [GHz] param.kur = 1.32 # Second order modulation factor <|a|^4>/<|a|^2>^2 param.kur3 = 1.96 # Third order modulation factor <|a|^6>/<|a|^2>^3 param.N_mc = int(1e6) # Number of integration points in algorithm param.NF = 5 # EDFA Noise figure return param
def defaultParameters(D=16.4640, Fc=1.9341e+14): lambda_ = c / Fc beta2 = D * 1e-6 * lambda_**2 / (2 * np.pi * c) param = cu.AttrDict() param.nPol = 2 param.lambda_ = lambda_ param.Fc = Fc param.D = D param.alpha = 0.2 param.beta2 = beta2 param.gamma = 1.3 param.nSpans = 10 param.spanLength = 100 param.noiseFigure = 5 param.PdBm = 1 param.Rs = 32 # e9 param.channels = np.array([-100., -50., 0., 50., 100.]) param.nChannels = len(param.channels) param.chSpacing = 50 # usually overwritten param.kur = 1.32 param.kur3 = 1.96 param.N_mc = int(1e6) param.PD = 0 return param
def defaultParameters(D=16.4640, Fc=1.9341e+14, precision='double'): lambda_ = c / Fc beta2 = D * 1e-6 * lambda_**2 / (2 * np.pi * c) param = cu.AttrDict() param.M = 4 param.nPol = 2 param.sps = 16 param.nSamples = 1024 param.rollOff = 0.05 param.filterSpan = 128 param.optimizeP = False param.PdBm = 1 param.Rs = 32e9 param.channels = np.array([-100., -50., 0., 50., 100.]) param.nChannels = len(param.channels) param.frequencyShift = True param.dispersionCompensation = False param.beta2 = beta2 # with D = 16.464 param.dz = 1000000.0 # 10 * 100 * 1e3 param.Fs = 5.1200e+11 param.N = param.sps * param.nSamples if precision == 'single': param.realType = tf.float32 param.complexType = tf.complex64 else: param.realType = tf.float64 param.complexType = tf.complex128 return param
def tfConstants(dtype=tf.float64): c = cu.AttrDict() c.two = tf.constant(2, dtype) c.three = tf.constant(3, dtype) c.four = tf.constant(4, dtype) c.nine = tf.constant(9, dtype) c.twelve = tf.constant(12, dtype) c.sixteen = tf.constant(16, dtype) c.eightyone = tf.constant(81, dtype) return c
def defaultParameters(D=16.4640, Fc=1.9341e+14, precision='double'): lambda_ = c / Fc beta2 = D * 1e-6 * lambda_**2 / (2 * np.pi * c) param = cu.AttrDict() param.Fs = 5.1200e+11 param.N = 16 * 1024 param.nSteps = 1 param.stepSize = 100 param.ampScheme = 'EDFA' param.noiseEnabled = True param.manakovEnabled = True param.dispersionCompensationEnabled = False # inline dispersion compensation param.checkpointInverval = 2 param.nPol = 2 param.lambda_ = lambda_ # Wavelength param.Fc = Fc param.D = D param.alpha = 0.2 param.beta2 = beta2 param.gamma = 1.3 param.nSpans = 10 param.spanLength = 100 param.noiseFigure = 5 param.intType = tf.int32 if precision == 'single': param.realType = tf.float32 param.complexType = tf.complex64 else: param.realType = tf.float64 param.complexType = tf.complex128 param.stepSizeTemplate = logStepSizes(param.spanLength, param.alpha, param.nSteps) return param
def defaultParameters(D=16.4640, Fc=1.9341e+14, precision='double'): param = cu.AttrDict() param.nChannels = 5 param.nSpans = 10 param.nPol = 2 param.sps = 16 param.nSamples = 2**10 param.Rs = 32e9 param.noiseEnabled = True param.noiseFigure = 5 param.chSpacing = 50e9 # GHz param.spanLength = 100 # km param.alpha = 0.2 # db/km param.gamma = 1.3 # W^-1/km param.D = D # ps/(km nm) param.simplified = 1 param.Fc = Fc param.precision = precision return param