Skip to content

Latest commit

 

History

History
559 lines (449 loc) · 15.8 KB

json_structure_description.rst

File metadata and controls

559 lines (449 loc) · 15.8 KB

Equipment and Network description definitions

1. Equipment description

Equipment description defines equipment types and those parameters. Description is made in JSON file with predefined structure. By default gnpy-transmission-example uses eqpt_config.json file and that can be changed with -e or --equipment command line parameter. Parsing of JSON file is made with gnpy.core.equipment.load_equipment(equipment_description) and return value is a dictionary of format dict[‘equipment type’][‘subtype’]=object

1.1. Structure definition

1.1.1. Equipment types

Every equipment type is defined in JSON root with according name and array of parameters as value.

{"Edfa": [...],
"Fiber": [...]
}

1.1.2. Equipment parameters and subtypes

Array of parameters is a list of objects with unordered parameter name and its value definition. In case of multiple equipment subtypes each object contains "type_variety":”type name” name:value combination, if only one subtype exists "type_variety" name is not mandatory and it will be marked with ”default” value.

{"Edfa": [{
            "type_variety": "std_medium_gain",
            "type_def": "variable_gain",
            "gain_flatmax": 26,
            "gain_min": 15,
            "p_max": 23,
            "nf_min": 6,
            "nf_max": 10,
            "out_voa_auto": false,
            "allowed_for_design": true
            },
            {
            "type_variety": "std_low_gain",
            "type_def": "variable_gain",
            "gain_flatmax": 16,
            "gain_min": 8,
            "p_max": 23,
            "nf_min": 6.5,
            "nf_max": 11,
            "out_voa_auto": false,
            "allowed_for_design": true
            }
    ],
"Fiber": [{
            "type_variety": "SSMF",
            "dispersion": 1.67e-05,
            "gamma": 0.00127
            }
    ]
}

1.2. Equipment parameters by type

1.2.1. EDFA element

Four types of EDFA definition are possible. Description JSON file location is in gnpy-transmission-example folder:

  • Advanced – with JSON file describing gain/noise figure tilt and gain/noise figure ripple. "advanced_config_from_json" value contains filename.
"Edfa":[{
        "type_variety": "high_detail_model_example",
        "gain_flatmax": 25,
        "gain_min": 15,
        "p_max": 21,
        "advanced_config_from_json": "std_medium_gain_advanced_config.json",
        "out_voa_auto": false,
        "allowed_for_design": false
        }
    ]
  • Variable gain – with JSON file describing gain figure tilt and gain/noise figure ripple. ”default_edfa_config.json” as source file.
"Edfa":[{
        "type_variety": "std_medium_gain",
        "type_def": "variable_gain",
        "gain_flatmax": 26,
        "gain_min": 15,
        "p_max": 23,
        "nf_min": 6,
        "nf_max": 10,
        "out_voa_auto": false,
        "allowed_for_design": true
        }
    ]
  • Fixed gain – with JSON file describing gain figure tilt and gain/noise figure ripple. ”default_edfa_config.json” as source file.
"Edfa":[{
        "type_variety": "std_fixed_gain",
        "type_def": "fixed_gain",
        "gain_flatmax": 21,
        "gain_min": 20,
        "p_max": 21,
        "nf0": 5.5,
        "allowed_for_design": false
        }
    ]
  • openroadm – with JSON file describing gain figure tilt and gain/noise

    figure ripple. ”default_edfa_config.json” as source file.

"Edfa":[{
        "type_variety": "openroadm_ila_low_noise",
        "type_def": "openroadm",
        "gain_flatmax": 27,
        "gain_min": 12,
        "p_max": 22,
        "nf_coef": [-8.104e-4,-6.221e-2,-5.889e-1,37.62],
        "allowed_for_design": false
        }
    ]

1.2.2. Fiber element

Fiber element with its parameters:

"Fiber":[{
        "type_variety": "SSMF",
        "dispersion": 1.67e-05,
        "gamma": 0.00127
        }
    ]

RamanFiber element

A special variant of the regular Fiber where the simulation engine accounts for the Raman effect. The newly added parameters are nested in the raman_efficiency dictionary. Its shape corresponds to typical properties of silica. More details are available from curri_merit_2016.

The cr property is the normailzed Raman efficiency, so it is is (almost) independent of the fiber type, while the coefficient actually giving Raman gain is g_R=C_R/Aeff.

The frequency_offset represents the spectral difference between the pumping photon and the one receiving energy.

"RamanFiber":[{
  "type_variety": "SSMF",
  "dispersion": 1.67e-05,
  "gamma": 0.00127,
  "raman_efficiency": {
    "cr":[
        0, 9.4E-06, 2.92E-05, 4.88E-05, 6.82E-05, 8.31E-05, 9.4E-05, 0.0001014, 0.0001069, 0.0001119,
        0.0001217, 0.0001268, 0.0001365, 0.000149, 0.000165, 0.000181, 0.0001977, 0.0002192, 0.0002469,
        0.0002749, 0.0002999, 0.0003206, 0.0003405, 0.0003592, 0.000374, 0.0003826, 0.0003841, 0.0003826,
        0.0003802, 0.0003756, 0.0003549, 0.0003795, 0.000344, 0.0002933, 0.0002024, 0.0001158, 8.46E-05,
        7.14E-05, 6.86E-05, 8.5E-05, 8.93E-05, 9.01E-05, 8.15E-05, 6.67E-05, 4.37E-05, 3.28E-05, 2.96E-05,
        2.65E-05, 2.57E-05, 2.81E-05, 3.08E-05, 3.67E-05, 5.85E-05, 6.63E-05, 6.36E-05, 5.5E-05, 4.06E-05,
        2.77E-05, 2.42E-05, 1.87E-05, 1.6E-05, 1.4E-05, 1.13E-05, 1.05E-05, 9.8E-06, 9.8E-06, 1.13E-05,
        1.64E-05, 1.95E-05, 2.38E-05, 2.26E-05, 2.03E-05, 1.48E-05, 1.09E-05, 9.8E-06, 1.05E-05, 1.17E-05,
        1.25E-05, 1.21E-05, 1.09E-05, 9.8E-06, 8.2E-06, 6.6E-06, 4.7E-06, 2.7E-06, 1.9E-06, 1.2E-06, 4E-07,
        2E-07, 1E-07
    ],
    "frequency_offset":[
      0, 0.5e12, 1e12, 1.5e12, 2e12, 2.5e12, 3e12, 3.5e12, 4e12, 4.5e12, 5e12, 5.5e12, 6e12, 6.5e12, 7e12,
      7.5e12, 8e12, 8.5e12, 9e12, 9.5e12, 10e12, 10.5e12, 11e12, 11.5e12, 12e12, 12.5e12, 12.75e12,
      13e12, 13.25e12, 13.5e12, 14e12, 14.5e12, 14.75e12, 15e12, 15.5e12, 16e12, 16.5e12, 17e12,
      17.5e12, 18e12, 18.25e12, 18.5e12, 18.75e12, 19e12, 19.5e12, 20e12, 20.5e12, 21e12, 21.5e12,
      22e12, 22.5e12, 23e12, 23.5e12, 24e12, 24.5e12, 25e12, 25.5e12, 26e12, 26.5e12, 27e12, 27.5e12, 28e12,
      28.5e12, 29e12, 29.5e12, 30e12, 30.5e12, 31e12, 31.5e12, 32e12, 32.5e12, 33e12, 33.5e12, 34e12, 34.5e12,
      35e12, 35.5e12, 36e12, 36.5e12, 37e12, 37.5e12, 38e12, 38.5e12, 39e12, 39.5e12, 40e12, 40.5e12, 41e12,
      41.5e12, 42e12
    ]
    }
  }
]

1.2.3 Roadm element

Roadm element with its parameters:

"Roadms":[{
      "gain_mode_default_loss": 20,
      "power_mode_pout_target": -20,
      "add_drop_osnr": 38
      }
  ]

1.2.3. Spans element

Spans element with its parameters:

"Spans":[{
        "power_mode":true,
        "delta_power_range_db": [0,0,0.5],
        "max_length": 150,
        "length_units": "km",
        "max_loss": 28,
        "padding": 10,
        "EOL": 0,
        "con_in": 0,
        "con_out": 0
        }
    ]

1.2.4. Spectral Information

Spectral information with its parameters:

"SI":[{
        "f_min": 191.3e12,
        "baud_rate": 32e9,
        "f_max":195.1e12,
        "spacing": 50e9,
        "power_dbm": 0,
        "power_range_db": [0,0,0.5],
        "roll_off": 0.15,
        "tx_osnr": 40,
        "sys_margins": 0
        }
    ]

1.2.5. Transceiver element

Transceiver element with its parameters. ”mode” can contain multiple Transceiver operation formats.

Note that OSNR parameter refers to the receiver's minimal OSNR threshold for a given mode.

"Transceiver":[{
                "frequency":{
                            "min": 191.35e12,
                            "max": 196.1e12
                            },
                "mode":[
                        {
                           "format": "mode 1",
                           "baud_rate": 32e9,
                           "OSNR": 11,
                           "bit_rate": 100e9,
                           "roll_off": 0.15,
                           "tx_osnr": 40,
                           "min_spacing": 37.5e9,
                           "cost":1
                        },
                        {
                          "format": "mode 2",
                           "baud_rate": 66e9,
                           "OSNR": 15,
                           "bit_rate": 200e9,
                           "roll_off": 0.15,
                           "tx_osnr": 40,
                           "min_spacing": 75e9,
                           "cost":1
                        }
                ]
            }
    ]

2. Network description

Network description defines network elements with additional to equipment description parameters, metadata and elements interconnection. Description is made in JSON file with predefined structure. By default gnpy-transmission-example uses edfa_example_network.json file and can be changed from command line. Parsing of JSON file is made with gnpy.core.network.load_network(network_description, equipment_description) and return value is DiGraph object which mimics network description.

2.1. Structure definition

2.1.1. File root structure

Network description JSON file root consist of three unordered parts:

  • network_name – name of described network or service, is not used as of now
  • elements - contains array of network element objects with their respective parameters
  • connections – contains array of unidirectional connection objects
{"network_name": "Example Network",
"elements": [{...},
            {...}
            ],
"connections": [{...},
                {...}
                ]
}

2.1.2. Elements parameters and subtypes

Array of network element objects consist of unordered parameter names and those values. In case of "type_variety" absence "type_variety":”default” name:value combination is used. As of the moment, existence of used "type_variety" in equipment description is obligatory.

2.2. Element parameters by type

2.2.1. Transceiver element

Transceiver element with its parameters.

{"uid": "trx Site_A",
"metadata": {
            "location": {
                        "city": "Site_A",
                        "region": "",
                        "latitude": 0,
                        "longitude": 0
                        }
            },
"type": "Transceiver"
}

2.2.2. ROADM element

ROADM element with its parameters. “params” is optional, if not used default loss value of 20dB is used.

{"uid": "roadm Site_A",
"metadata": {
            "location": {
                        "city": "Site_A",
                        "region": "",
                        "latitude": 0,
                        "longitude": 0
                        }
            },
"type": "Roadm",
"params": {
            "loss": 17
        }
}

2.2.3. Fused element

Fused element with its parameters. “params” is optional, if not used default loss value of 1dB is used.

{"uid": "ingress fused spans in Site_B",
"metadata": {
            "location": {
                        "city": "Site_B",
                        "region": "",
                        "latitude": 0,
                        "longitude": 0
                        }
            },
"type": "Fused",
"params": {
            "loss": 0.5
    }
}

2.2.4. Fiber element

Fiber element with its parameters.

{"uid": "fiber (Site_A \\u2192 Site_B)",
"metadata": {
            "location": {
                        "city": "",
                        "region": "",
                        "latitude": 0.0,
                        "longitude": 0.0
                        }
            },
"type": "Fiber",
"type_variety": "SSMF",
"params": {
            "length": 40.0,
            "length_units": "km",
            "loss_coef": 0.2
            }
}

2.2.5. RamanFiber element

{
  "uid": "Span1",
  "type": "RamanFiber",
  "type_variety": "SSMF",
  "operational": {
    "temperature": 283,
    "raman_pumps": [
      {
        "power": 200e-3,
        "frequency": 205e12,
        "propagation_direction": "counterprop"
      },
      {
        "power": 206e-3,
        "frequency": 201e12,
        "propagation_direction": "counterprop"
      }
    ]
  },
  "params": {
    "type_variety": "SSMF",
    "length": 80.0,
    "loss_coef": 0.2,
    "length_units": "km",
    "att_in": 0,
    "con_in": 0.5,
    "con_out": 0.5
  },
  "metadata": {
    "location": {
      "latitude": 1,
      "longitude": 0,
      "city": null,
      "region": ""
    }
  }
}

2.2.6. EDFA element

EDFA element with its parameters.

{"uid": "Edfa1",
"type": "Edfa",
"type_variety": "std_low_gain",
"operational": {
                "gain_target": 16,
                "tilt_target": 0
                },
"metadata": {
            "location": {
                        "city": "Site_A",
                        "region": "",
                        "latitude": 2,
                        "longitude": 0
                        }
            }
}

2.3. Connections objects

Each unidirectional connection object in connections array consist of two unordered ”from_node” and ”to_node” name pair with values corresponding to element ”uid”

{"from_node": "roadm Site_C",
"to_node": "trx Site_C"
}

3. Simulation Parameters

Additional details of the simulation are controlled via sim_params.json:

{
  "raman_parameters": {
    "flag_raman": true,
    "space_resolution": 10e3,
    "tolerance": 1e-8
  },
  "nli_parameters": {
    "nli_method_name": "ggn_spectrally_separated",
    "wdm_grid_size": 50e9,
    "dispersion_tolerance": 1,
    "phase_shift_tolerance": 0.1,
    "computed_channels": [1, 18, 37, 56, 75]
  }
}