switchtodesign; #----------------------------------------------------------------# ##ONA Save Data addelement( "Optical Network Analyzer"); ONA_name = "ONA"; set("name", ONA_name ); setposition( ONA_name, 0, 0 ); setnamed(ONA_name, "sensitivity", 0); ############################################## #change the compound name if needed COMP_name = "SWITCH"; ############################################## OUT_filename = "extracted.dat"; ONA_orthogonalIDRange = 1; disconnect( ONA_name ); disconnect( COMP_name ); COMP_in_ports = getports( COMP_name, "Optical Signal", "Input" ); COMP_out_ports = getports( COMP_name, "Optical Signal", "Output" ); COMP_in_ports = splitstring( COMP_in_ports, "\n" ); COMP_out_ports = splitstring( COMP_out_ports, "\n" ); nPorts_in = length( COMP_in_ports ); nPorts_out = length( COMP_out_ports ); setnamed( ONA_name, "number of input ports", nPorts_out ); setnamed( ONA_name, "data export", "s parameters" ); setnamed( ONA_name, "single mode", 0 ); setnamed( ONA_name, "append", 0 ); setnamed( ONA_name, "filename", OUT_filename ); setnamed( ONA_name, "relative to center", 0 ); for(i=1:nPorts_out) { connect( ONA_name, "input " + num2str(i), COMP_name, COMP_out_ports{i} ); } connect( ONA_name, "output", COMP_name, COMP_in_ports{1} ); setnamed( ONA_name, "orthogonal identifier", 1 ); run; switchtodesign; setnamed( ONA_name, "append", 1 ); for(id=2:ONA_orthogonalIDRange){ setnamed( ONA_name, "orthogonal identifier", id ); run; switchtodesign; } if( nPorts_in > 1 ) { for(i=2:nPorts_in) { disconnect( ONA_name, "output" ); connect( ONA_name, "output", COMP_name, COMP_in_ports{i} ); for(id=1:ONA_orthogonalIDRange){ setnamed( ONA_name, "orthogonal identifier", id ); run; switchtodesign; } } } setnamed( ONA_name, "data export", "disable" );