Skip to content
Snippets Groups Projects
TestNloc.java 28.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • import java.util.List;
    import java.util.ArrayList;
    import java.util.ListIterator;
    import java.util.Arrays;
    
    
    public class TestNloc {
    
    
      public static void main(String[] args) {
    
    
        List<Channel> chList = getNlocS5();
    
        //Pump pump = nl.getPump();
        //pump.setSteps(2);
    
        //Sink s0 = new Sink();
        //Channel c2 = new Channel("ch2", 3, 5);
        //Module m0 = new Module("m0", 5,1);
        //c1.addChild(c2);
        //Droplet pld = new Droplet(DropletType.PAYLOAD, new Position(pump,1));
        //pld.setName("p");
        //Droplet hdr = new Droplet(DropletType.HEADER, new Position(pump,2));
        //hdr.setName("h");
        //
        //System.out.println(pld.coalesce());
    
        //
        //int normStep = hdr.getNormalizedSteps();
    
        //System.out.println("Normalized Steps: " + normStep);
    
        //nl.setDropletList(pump.getDropletList());
    
    
        //if (nl.simulate()) {
        //  System.out.println("Success!! Don't coalesce");
        //} else {
        //  System.out.println("Did coalesce!");
        //}
    
        List<List<Channel>> allPaths = nl.getAllPaths();
    
    Peter Wagenhuber's avatar
    Peter Wagenhuber committed
        List<Channel> critPath = allPaths.get(4);
    
        //try {
        //  String[] mtv = {"f2", "m3", "h0", "m5"};
        //  List<List<SequenceTuple>> posSeqs = nl.getPossibleSequences(mtv);
        //  //printSequences(posSeqs);
        //  System.out.println("DEBUG:");
        //  Pump p0 = nl.getShortestSequence(mtv);
        //  printPumpcontents(p0);
    
        //} catch (Exception e) {
        //  System.out.println(e.getMessage());
        //}
    
    Peter Wagenhuber's avatar
    Peter Wagenhuber committed
        //int count = 0;
        //for (List<Channel> path: allPaths) {
    
    Peter Wagenhuber's avatar
    Peter Wagenhuber committed
          String[] modulesToVisit = extractModuleStringArrayFromPath(critPath);
    
          System.out.println("Modules to visit: ");
          for (String str: modulesToVisit) {
            System.out.print(str + " " );
          }
    
    Peter Wagenhuber's avatar
    Peter Wagenhuber committed
          try {
            List<List<SequenceTuple>> seTupList = nl.getPossibleSequences(modulesToVisit);
            printSequences(seTupList);
          } catch (Exception e) {
            System.out.println(e.getMessage());
          }
    
          //System.out.println("Pathnum: " + count++);
          //Pump p = nl.getShortestSequence(modulesToVisit);
          //printPumpcontents(p);
        //}
    
      public static void printPumpcontents(Pump pump) {
        List<Droplet> drlist = pump.getDropletList();
        for (Droplet dr: drlist) {
    
          System.out.print("Droplet: " + dr.getName() + " Pos: " + dr.getPosition().getSteps() + " Outlet: " + dr.getPumpOutlet().getName());
    
          if (drlist.indexOf(dr) == drlist.size() - 1) {
            System.out.println("");
          } else {
            System.out.print(" | ");
          }
        }
    
      public static String[] extractModuleStringArrayFromPath(List<Channel> path) {
        List<String> strlist = new ArrayList<String>();
        for (Channel ch: path) {
          if (ch instanceof Module) {
            strlist.add(ch.getName());
          }
        }
    
      public static void printSequence(List<SequenceTuple> seq) {
        for (SequenceTuple stup: seq) {
          if (seq.indexOf(stup) == (seq.size() - 1)) {
    
            System.out.print(stup.getDroplet().getName() + ": " + stup.getMinPos() +
    
                ":" + stup.getMaxPos() + " : " + stup.getPath().get(1).getName());
    
          } else { 
            System.out.print(stup.getDroplet().getName() + ": " + stup.getMinPos() +
    
                ":" + stup.getMaxPos() + " : " + stup.getPath().get(1).getName() + " -> ");
    
      public static void printSequences(List<List<SequenceTuple>> sequences) {
        System.out.println("##################");
        System.out.println("# " + sequences.size() + " Sequences Found");
        System.out.println("##################");
        System.out.println("");
        for (List<SequenceTuple> sl: sequences) {
          printSequence(sl);
        }
      } 
    
    
      public static void printPath(List<Channel> path) {
    
        System.out.println("Pathlength Payload: " + Nloc.getPayloadPathlength(path));
        System.out.println("Pathlength Header: " + Nloc.getHeaderPathlength(path));
    
        for (Channel ch : path) {
    
          if (path.indexOf(ch) == (path.size() - 1)) {
    
            System.out.print(ch.getName());
          } else {
            System.out.print(ch.getName() + " -> ");
          }
    
        }
        System.out.println("");
    
      }
    
      public static void printPaths(List<List<Channel>> pathlist) {
    
        System.out.println("");
        System.out.println("#############################");
        System.out.println("# Number of paths found: " + pathlist.size());
        System.out.println("#############################");
    
        for (List<Channel> p : pathlist) {
          printPath(p);
        }
      }
    
    
      public static List<Channel> getNlocS1() {
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
        Channel ch4 = new Channel("ch4",1,1);
        Channel ch5 = new Channel("ch5",1,1);
        Channel ch6 = new Channel("ch6",1,1);
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",1,1);
        Channel ch9 = new Channel("ch9",1,1);
        Channel ch10 = new Channel("ch10",1,1);
    
        Channel ch11 = new Channel("ch11",3,3);
    
        Channel ch12 = new Channel("ch12",1,1);
        Channel ch13 = new Channel("ch13",1,1);
        Channel ch14 = new Channel("ch14",1,1);
        Channel ch15 = new Channel("ch15",1,1);
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
        Module m2 = new Module("m2", 5,1);
        Module d1 = new Module("d1", 5,1);
        Module d2 = new Module("d2", 5,1);
        Module h1 = new Module("h1", 5,1);
        Module h2 = new Module("h2", 5,1);
        Module f2 = new Module("f2", 5,1);
    
    
        Pump p0 = new Pump();
        Sink s0 = new Sink();
    
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, m0, m1, m2, d1, d2, h1, 
            h2, f2, p0, s0);
    
        p0.addChild(ch1);
        p0.addChild(ch2);
        p0.addChild(ch3);
    
        ch1.addChild(m2);
        m2.addChild(ch4);
        ch4.addChild(d2);
        d2.addChild(ch6);
    
        ch2.addChild(h2);
        h2.addChild(ch5);
    
        ch6.addChild(ch7);
        ch5.addChild(ch7);
        ch3.addChild(ch7);
    
        ch7.addChild(m1);
        m1.addChild(ch8);
        ch8.addChild(f2);
        f2.addChild(ch9);
    
        ch9.addChild(ch11);
        ch9.addChild(ch10);
    
        ch11.addChild(h1);
        h1.addChild(ch12);
    
        ch12.addChild(ch13);
        ch10.addChild(ch13);
    
        ch13.addChild(m0);
        m0.addChild(ch14);
        ch14.addChild(d1);
        d1.addChild(ch15);
    
      public static List<Channel> getNlocS2() {
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
        Channel ch4 = new Channel("ch4",1,1);
        Channel ch5 = new Channel("ch5",1,1);
    
        Channel ch6 = new Channel("ch6",3,3);
    
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",1,1);
        Channel ch9 = new Channel("ch9",1,1);
        Channel ch10 = new Channel("ch10",1,1);
        Channel ch11 = new Channel("ch11",1,1);
    
        Channel ch12 = new Channel("ch12",3,3);
    
        Channel ch13 = new Channel("ch13",1,1);
        Channel ch14 = new Channel("ch14",1,1);
        Channel ch15 = new Channel("ch15",1,1);
        Channel ch16 = new Channel("ch16",1,1);
    
        Channel ch17 = new Channel("ch17",3,3);
    
        Channel ch18 = new Channel("ch18",1,1);
        Channel ch19 = new Channel("ch19",1,1);
        Channel ch20 = new Channel("ch20",1,1);
    
        Channel ch21 = new Channel("ch21",3,3);
    
        Channel ch22 = new Channel("ch22",1,1);
        Channel ch23 = new Channel("ch23",1,1);
        Channel ch24 = new Channel("ch24",1,1);
    
        Channel ch25 = new Channel("ch25",3,3);
    
        Channel ch26 = new Channel("ch26",1,1);
        Channel ch27 = new Channel("ch27",1,1);
        Channel ch28 = new Channel("ch28",1,1);
        Channel ch29 = new Channel("ch29",1,1);
        Channel ch30 = new Channel("ch30",1,1);
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
        Module m2 = new Module("m2", 5,1);
        Module m3 = new Module("m3", 5,1);
        Module m4 = new Module("m4", 5,1);
        Module m5 = new Module("m5", 5,1);
        Module h0 = new Module("h0", 5,1);
        Module h3 = new Module("h3", 5,1);
        Module d1 = new Module("d1", 5,1);
        Module f2 = new Module("f2", 5,1);
    
        Pump p0 = new Pump();
        Sink s0 = new Sink();
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19,
            ch20, ch21, ch22, ch23, ch24, ch25, ch26, ch27, ch28, ch29, ch30, m0, 
            m1, m2, m3, m4, m5, h0, h3, d1, f2, p0, s0);
    
        p0.addChild(ch1);
        p0.addChild(ch2);
        p0.addChild(ch3);
        p0.addChild(ch4);
    
        ch1.addChild(m4);
        m4.addChild(ch8);
        ch8.addChild(ch11);
        ch8.addChild(ch12);
    
        ch12.addChild(d1);
        d1.addChild(ch15);
    
        ch2.addChild(ch9);
    
        ch3.addChild(m2);
        m2.addChild(ch5);
        ch5.addChild(ch6);
        ch5.addChild(ch7);
    
        ch6.addChild(ch9);
        ch9.addChild(h3);
        h3.addChild(ch13);
    
        ch4.addChild(ch10);
        ch7.addChild(ch10);
        ch10.addChild(f2);
        f2.addChild(ch14);
        ch14.addChild(ch16);
        ch14.addChild(ch17);
    
        ch11.addChild(ch18);
        ch15.addChild(ch18);
        ch13.addChild(ch18);
        ch16.addChild(ch18);
    
        ch18.addChild(m1);
        m1.addChild(ch19);
        ch19.addChild(ch20);
        ch19.addChild(ch21);
    
        ch21.addChild(ch22);
        ch17.addChild(ch22);
        ch22.addChild(m3);
        m3.addChild(ch23);
        ch23.addChild(ch24);
        ch23.addChild(ch25);
    
        ch20.addChild(ch26);
        ch24.addChild(ch26);
    
        ch26.addChild(m0);
        m0.addChild(ch28);
    
        ch25.addChild(h0);
        h0.addChild(ch27);
    
        ch28.addChild(ch29);
        ch27.addChild(ch29);
    
        ch29.addChild(m5);
        m5.addChild(ch30);
    
        ch30.addChild(s0);
        return chlist;
      }
    
    
      public static List<Channel> getNlocS6() {
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
        Channel ch4 = new Channel("ch4",1,1);
    
        Channel ch5 = new Channel("ch5",3,3);
    
        Channel ch6 = new Channel("ch6",1,1);
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",1,1);
        Channel ch9 = new Channel("ch9",1,1);
    
        Channel ch10 = new Channel("ch10",3,3);
        Channel ch11 = new Channel("ch11",1,1);
    
        Channel ch12 = new Channel("ch12",1,1);
        Channel ch13 = new Channel("ch13",1,1);
    
        Channel ch14 = new Channel("ch14",3,3);
    
        Channel ch15 = new Channel("ch15",1,1);
        Channel ch16 = new Channel("ch16",1,1);
        Channel ch17 = new Channel("ch17",1,1);
        Channel ch18 = new Channel("ch18",1,1);
        Channel ch19 = new Channel("ch19",1,1);
        Channel ch20 = new Channel("ch20",1,1);
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
        Module m3 = new Module("m3", 5,1);
        Module m4 = new Module("m4", 5,1);
        Module m5 = new Module("m5", 5,1);
        Module h0 = new Module("h0", 5,1);
        Module h3 = new Module("h3", 5,1);
        Module d1 = new Module("d1", 5,1);
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19,
            ch20, m0, m1, m3, m4, m5, h0, h3, d1, p0, s0);
    
        p0.addChild(ch1);
        p0.addChild(ch2);
    
        ch2.addChild(h3);
        h3.addChild(ch4);
    
        ch1.addChild(m4);
        m4.addChild(ch3);
    
        ch3.addChild(ch5);
        ch3.addChild(ch6);
    
        ch5.addChild(d1);
        d1.addChild(ch7);
    
        ch7.addChild(ch8);
        ch6.addChild(ch8);
        ch4.addChild(ch8);
    
        ch8.addChild(m1);
        m1.addChild(ch9);
        ch9.addChild(ch10);
        ch9.addChild(ch11);
    
        ch10.addChild(ch12);
        ch12.addChild(m3);
        m3.addChild(ch13);
    
        ch13.addChild(ch14);
        ch13.addChild(ch15);
    
        ch14.addChild(h0);
        h0.addChild(ch16);
    
        ch15.addChild(ch17);
        ch11.addChild(ch17);
    
        ch17.addChild(m0);
        m0.addChild(ch18);
    
        ch16.addChild(ch19);
        ch18.addChild(ch19);
    
        ch19.addChild(m5);
        m5.addChild(ch20);
    
    
      public static List<Channel> getNlocS7() {
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
        Channel ch4 = new Channel("ch4",1,1);
        Channel ch5 = new Channel("ch5",1,1);
        Channel ch6 = new Channel("ch6",1,1);
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",3,3);
        Channel ch9 = new Channel("ch9",1,1);
        Channel ch10 = new Channel("ch10",1,1);
        Channel ch11 = new Channel("ch11",1,1);
        Channel ch12 = new Channel("ch12",3,3);
        Channel ch13 = new Channel("ch13",1,1);
        Channel ch14 = new Channel("ch14",1,1);
        Channel ch15 = new Channel("ch15",1,1);
        Channel ch16 = new Channel("ch16",1,1);
        Channel ch17 = new Channel("ch17",1,1);
        Channel ch18 = new Channel("ch18",1,1);
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
        Module m3 = new Module("m3", 5,1);
        Module m4 = new Module("m4", 5,1);
        Module m5 = new Module("m5", 5,1);
        Module h0 = new Module("h0", 5,1);
        Module h3 = new Module("h3", 5,1);
        Module d1 = new Module("d1", 5,1);
    
        Pump p0 = new Pump();
        Sink s0 = new Sink();
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, 
            m0, m1, m3, m4, m5, h0, h3, d1, p0, s0);
    
        p0.addChild(ch1);
        p0.addChild(ch2);
    
        ch2.addChild(h3);
        h3.addChild(ch4);
    
        ch1.addChild(m4);
        m4.addChild(ch3);
    
        ch3.addChild(d1);
        d1.addChild(ch5);
    
        ch5.addChild(ch6);
        ch4.addChild(ch6);
    
        ch6.addChild(m1);
        m1.addChild(ch7);
    
        ch7.addChild(ch8);
        ch7.addChild(ch9);
    
        ch8.addChild(ch10);
        ch10.addChild(m3);
        m3.addChild(ch11);
    
        ch11.addChild(ch12);
        ch11.addChild(ch13);
    
        ch13.addChild(ch15);
        ch9.addChild(ch15);
    
        ch12.addChild(h0);
        h0.addChild(ch14);
    
        ch15.addChild(m0);
        m0.addChild(ch16);
    
        ch14.addChild(ch17);
        ch16.addChild(ch17);
    
        ch17.addChild(m5);
        m5.addChild(ch18);
    
        ch18.addChild(s0);
    
        return chlist;
      }
    
      public static List<Channel> getNlocS3() {
    
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
    
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
    
        Channel ch4 = new Channel("ch4",1,1);
        Channel ch5 = new Channel("ch5",1,1);
        Channel ch6 = new Channel("ch6",1,1);
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",1,1);
        Channel ch9 = new Channel("ch9",3,3);
        Channel ch10 = new Channel("ch10",1,1);
        Channel ch11 = new Channel("ch11",1,1);
        Channel ch12 = new Channel("ch12",1,1);
        Channel ch13 = new Channel("ch13",3,3);
        Channel ch14 = new Channel("ch14",1,1);
        Channel ch15 = new Channel("ch15",1,1);
    
        Channel ch16 = new Channel("ch16",3,3);
    
        Channel ch17 = new Channel("ch17",1,1);
        Channel ch18 = new Channel("ch18",1,1);
        Channel ch19 = new Channel("ch19",1,1);
    
        Channel ch20 = new Channel("ch20",1,1);
        Channel ch21 = new Channel("ch21",3,3);
        Channel ch22 = new Channel("ch22",1,1);
        Channel ch23 = new Channel("ch23",1,1);
        Channel ch24 = new Channel("ch24",1,1);
        Channel ch25 = new Channel("ch25",1,1);
        Channel ch26 = new Channel("ch26",1,1);
        Channel ch27 = new Channel("ch27",3,3);
        Channel ch28 = new Channel("ch28",1,1);
        Channel ch29 = new Channel("ch29",1,1);
        Channel ch30 = new Channel("ch30",1,1);
        Channel ch31 = new Channel("ch31",1,1);
        Channel ch32 = new Channel("ch32",1,1);
        Channel ch33 = new Channel("ch33",3,3);
        Channel ch34 = new Channel("ch34",1,1);
        Channel ch35 = new Channel("ch35",1,1);
        Channel ch36 = new Channel("ch36",1,1);
    
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
    
        Module m2 = new Module("m2", 5,1);
    
        Module m3 = new Module("m3", 5,1);
        Module m4 = new Module("m4", 5,1);
        Module m5 = new Module("m5", 5,1);
    
    
        Module h1 = new Module("h1", 5,1);
        Module h2 = new Module("h2", 5,1);
        Module h5 = new Module("h5", 5,1);
    
    
        Module d5 = new Module("d5", 5,1);
    
        Module f5 = new Module("f5", 5,1);
    
    
        Pump p0 = new Pump();
        Sink s0 = new Sink();
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19,
    
            ch20, ch21, ch22, ch23, ch24, ch25, ch26, ch27, ch28, ch29, ch30, ch31,
            ch32, ch33, ch34, ch35, ch36, m0, m1, m2, m3, m4, m5, h1, h2, h5, d1, 
            d5, f5, p0, s0);
    
        p0.addChild(ch2);
        p0.addChild(ch3);
        p0.addChild(ch4);
        p0.addChild(ch5);
    
        ch2.addChild(h1);
        h1.addChild(ch6);
    
        ch3.addChild(m0);
        m0.addChild(ch7);
        ch7.addChild(ch8);
        ch7.addChild(ch9);
    
        ch4.addChild(ch10);
        ch9.addChild(ch10);
    
        ch10.addChild(f5);
        f5.addChild(ch11);
        ch11.addChild(ch12);
        ch11.addChild(ch13);
    
        ch1.addChild(ch14);
        ch6.addChild(ch14);
        ch8.addChild(ch14);
        ch12.addChild(ch14);
    
        ch14.addChild(m2);
        m2.addChild(ch15);
        ch15.addChild(ch16);
        ch15.addChild(ch17);
    
        ch17.addChild(ch19);
        ch5.addChild(ch19);
    
        ch16.addChild(d1);
        d1.addChild(ch18);
    
        ch19.addChild(m5);
        m5.addChild(ch20);
        ch20.addChild(ch21);
        ch20.addChild(ch22);
    
        ch13.addChild(ch23);
        ch21.addChild(ch23);
    
        ch23.addChild(h5);
        h5.addChild(ch24);
    
        ch18.addChild(ch25);
        ch24.addChild(ch25);
        ch22.addChild(ch25);
    
        ch25.addChild(m4);
        m4.addChild(ch26);
        ch26.addChild(ch27);
        ch26.addChild(ch28);
    
        ch27.addChild(h2);
        h2.addChild(ch29);
    
        ch29.addChild(ch30);
        ch28.addChild(ch30);
    
        ch30.addChild(m1);
        m1.addChild(ch31);
    
        ch31.addChild(ch32);
        ch31.addChild(ch33);
    
        ch32.addChild(m3);
        m3.addChild(ch34);
    
        ch34.addChild(ch35);
        ch33.addChild(ch35);
    
        ch35.addChild(d5);
    
        d5.addChild(ch36);
        ch36.addChild(s0);
        return chlist;
      }
    
      public static List<Channel> getNlocS4() {
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
        Channel ch4 = new Channel("ch4",1,1);
        Channel ch5 = new Channel("ch5",1,1);
        Channel ch6 = new Channel("ch6",1,1);
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",3,3);
        Channel ch9 = new Channel("ch9",1,1);
        Channel ch10 = new Channel("ch10",1,1);
        Channel ch11 = new Channel("ch11",1,1);
        Channel ch12 = new Channel("ch12",3,3);
        Channel ch13 = new Channel("ch13",1,1);
        Channel ch14 = new Channel("ch14",1,1);
        Channel ch15 = new Channel("ch15",1,1);
        Channel ch16 = new Channel("ch16",3,3);
        Channel ch17 = new Channel("ch17",1,1);
        Channel ch18 = new Channel("ch18",1,1);
        Channel ch19 = new Channel("ch19",1,1);
        Channel ch20 = new Channel("ch20",1,1);
        Channel ch21 = new Channel("ch21",1,1);
        Channel ch22 = new Channel("ch22",3,3);
        Channel ch23 = new Channel("ch23",3,3);
        Channel ch24 = new Channel("ch24",1,1);
        Channel ch25 = new Channel("ch25",1,1);
        Channel ch26 = new Channel("ch26",1,1);
        Channel ch27 = new Channel("ch27",1,1);
        Channel ch28 = new Channel("ch28",1,1);
        Channel ch29 = new Channel("ch29",1,1);
        Channel ch30 = new Channel("ch30",3,3);
        Channel ch31 = new Channel("ch31",1,1);
        Channel ch32 = new Channel("ch32",1,1);
        Channel ch33 = new Channel("ch33",1,1);
        Channel ch34 = new Channel("ch34",1,1);
        Channel ch35 = new Channel("ch35",1,1);
        Channel ch36 = new Channel("ch36",1,1);
        Channel ch37 = new Channel("ch37",3,3);
        Channel ch38 = new Channel("ch38",1,1);
        Channel ch39 = new Channel("ch39",1,1);
        Channel ch40 = new Channel("ch40",3,3);
        Channel ch41 = new Channel("ch41",1,1);
        Channel ch42 = new Channel("ch42",1,1);
        Channel ch43 = new Channel("ch43",1,1);
        Channel ch44 = new Channel("ch44",1,1);
        Channel ch45 = new Channel("ch45",1,1);
        Channel ch46 = new Channel("ch46",1,1);
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
        Module m2 = new Module("m2", 5,1);
        Module m3 = new Module("m3", 5,1);
        Module m4 = new Module("m4", 5,1);
        Module m5 = new Module("m5", 5,1);
        Module m6 = new Module("m6", 5,1);
    
        Module h1 = new Module("h1", 5,1);
        Module h2 = new Module("h2", 5,1);
        Module h6 = new Module("h6", 5,1);
    
        Module d0 = new Module("d0", 5,1);
        Module d2 = new Module("d2", 5,1);
    
        Module f1 = new Module("f1", 5,1);
        Module f3 = new Module("f3", 5,1);
        Module f6 = new Module("f6", 5,1);
    
        Pump p0 = new Pump();
        Sink s0 = new Sink();
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19,
            ch20, ch21, ch22, ch23, ch24, ch25, ch26, ch27, ch28, ch29, ch30, ch31,
            ch32, ch33, ch34, ch35, ch36, ch37, ch38, ch39, ch40, ch41, ch42, ch43,
            ch44, ch45, ch46, m0, m1, m2, m3, m4, m5, m6, h1, h2, h6, d0, d2, f1, 
            f3, f6, p0, s0);
    
        p0.addChild(ch1);
        p0.addChild(ch2);
        p0.addChild(ch3);
        p0.addChild(ch4);
        p0.addChild(ch5);
    
        ch2.addChild(h2);
        h2.addChild(ch6);
        ch6.addChild(ch7);
        ch6.addChild(ch8);
    
        ch5.addChild(d0);
        d0.addChild(ch9);
    
        ch8.addChild(ch10);
        ch3.addChild(ch10);
    
        ch10.addChild(f3);
        f3.addChild(ch13);
        
        ch13.addChild(ch17);
        ch4.addChild(ch17);
        ch7.addChild(ch17);
        ch15.addChild(ch17);
    
        ch1.addChild(m2);
        m2.addChild(ch14);
        ch14.addChild(ch15);
    
        ch11.addChild(m1);
        m1.addChild(ch19);
    
        ch12.addChild(ch20);
        ch22.addChild(ch20);
    
        ch20.addChild(h6);
        h6.addChild(ch21);
        ch21.addChild(ch23);
        ch21.addChild(ch24);
    
        ch19.addChild(ch26);
        ch23.addChild(ch26);
    
        ch17.addChild(m6);
        m6.addChild(ch18);
        ch18.addChild(ch25);
        ch18.addChild(ch22);
    
        ch25.addChild(ch28);
        ch24.addChild(ch28);
    
        ch26.addChild(f1);
        f1.addChild(ch32);
    
        ch28.addChild(m3);
        m3.addChild(ch29);
    
        ch29.addChild(ch30);
        ch29.addChild(ch33);
    
        ch33.addChild(ch34);
        ch32.addChild(ch34);
    
        ch30.addChild(ch27);
        ch16.addChild(ch27);
    
        ch27.addChild(d2);
        d2.addChild(ch31);
        
        ch34.addChild(m5);
        m5.addChild(ch35);
    
        ch35.addChild(ch36);
        ch35.addChild(ch37);
    
        ch31.addChild(ch38);
        ch36.addChild(ch38);
    
        ch38.addChild(m4);
        m4.addChild(ch39);
        ch39.addChild(ch40);
        ch39.addChild(ch41);
    
        ch41.addChild(ch43);
        ch37.addChild(ch43);
    
        ch40.addChild(h1);
        h1.addChild(ch42);
    
        ch43.addChild(f6);
        f6.addChild(ch44);
    
        ch42.addChild(ch45);
        ch44.addChild(ch45);
    
        ch45.addChild(m0);
        m0.addChild(ch46);
    
        ch46.addChild(s0);
        return chlist;
      }
      public static List<Channel> getNlocS5() {
    
        // channel(name, psteps, hsteps)
        Channel ch1 = new Channel("ch1",1,1);
        Channel ch2 = new Channel("ch2",1,1);
        Channel ch3 = new Channel("ch3",1,1);
        Channel ch4 = new Channel("ch4",1,1);
        Channel ch5 = new Channel("ch5",1,1);
        Channel ch6 = new Channel("ch6",1,1);
        Channel ch7 = new Channel("ch7",1,1);
        Channel ch8 = new Channel("ch8",3,3);
        Channel ch9 = new Channel("ch9",1,1);
        Channel ch10 = new Channel("ch10",3,3);
        Channel ch11 = new Channel("ch11",1,1);
        Channel ch12 = new Channel("ch12",1,1);
        Channel ch13 = new Channel("ch13",3,3);
        Channel ch14 = new Channel("ch14",1,1);
        Channel ch15 = new Channel("ch15",1,1);
        Channel ch16 = new Channel("ch16",1,1);
        Channel ch17 = new Channel("ch17",1,1);
        Channel ch18 = new Channel("ch18",3,3);
        Channel ch19 = new Channel("ch19",1,1);
        Channel ch20 = new Channel("ch20",1,1);
        Channel ch21 = new Channel("ch21",3,3);
        Channel ch22 = new Channel("ch22",1,1);
        Channel ch23 = new Channel("ch23",1,1);
        Channel ch24 = new Channel("ch24",1,1);
        Channel ch25 = new Channel("ch25",1,1);
        Channel ch26 = new Channel("ch26",3,3);
        Channel ch27 = new Channel("ch27",3,3);
        Channel ch28 = new Channel("ch28",1,1);
        Channel ch29 = new Channel("ch29",1,1);
        Channel ch30 = new Channel("ch30",1,1);
        Channel ch31 = new Channel("ch31",3,3);
        Channel ch32 = new Channel("ch32",1,1);
        Channel ch33 = new Channel("ch33",1,1);
        Channel ch34 = new Channel("ch34",1,1);
        Channel ch35 = new Channel("ch35",1,1);
        Channel ch36 = new Channel("ch36",1,1);
        Channel ch37 = new Channel("ch37",1,1);
        Channel ch38 = new Channel("ch38",3,3);
        Channel ch39 = new Channel("ch39",1,1);
        Channel ch40 = new Channel("ch40",1,1);
        Channel ch41 = new Channel("ch41",3,3);
        Channel ch42 = new Channel("ch42",1,1);
        Channel ch43 = new Channel("ch43",1,1);
        Channel ch44 = new Channel("ch44",1,1);
        Channel ch45 = new Channel("ch45",3,3);
        Channel ch46 = new Channel("ch46",1,1);
        Channel ch47 = new Channel("ch47",1,1);
        Channel ch48 = new Channel("ch48",3,3);
        Channel ch49 = new Channel("ch49",1,1);
        Channel ch50 = new Channel("ch50",1,1);
        Channel ch51 = new Channel("ch51",1,1);
        Channel ch52 = new Channel("ch52",1,1);
        Channel ch53 = new Channel("ch53",1,1);
    
        Module m0 = new Module("m0", 5,1);
        Module m1 = new Module("m1", 5,1);
        Module m2 = new Module("m2", 5,1);
        Module m3 = new Module("m3", 5,1);
        Module m4 = new Module("m4", 5,1);
        Module m5 = new Module("m5", 5,1);
        Module m6 = new Module("m6", 5,1);
    
        Module h1 = new Module("h1", 5,1);
        Module h2 = new Module("h2", 5,1);
        Module h4 = new Module("h4", 5,1);
        Module h5 = new Module("h5", 5,1);
        Module h6 = new Module("h6", 5,1);
    
        Module d0 = new Module("d0", 5,1);
        Module d1 = new Module("d1", 5,1);
    
        Module f0 = new Module("f0", 5,1);
        Module f1 = new Module("f1", 5,1);
        Module f3 = new Module("f3", 5,1);
    
        Pump p0 = new Pump();
        Sink s0 = new Sink();
    
        List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, 
            ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19,
            ch20, ch21, ch22, ch23, ch24, ch25, ch26, ch27, ch28, ch29, ch30, ch31,
            ch32, ch33, ch34, ch35, ch36, ch37, ch38, ch39, ch40, ch41, ch42, ch43,
            ch44, ch45, ch46, ch47, ch48, ch49, ch50, ch51, ch52, ch53, m0, m1, m2,
            m3, m4, m5, m6, h1, h2, h4, h5, h6, d0, d1, f0, f1, f3, p0, s0);
    
        p0.addChild(ch1);
        p0.addChild(ch2);
        p0.addChild(ch3);
        p0.addChild(ch4);
    
        ch2.addChild(h1);
        h1.addChild(ch5);
        ch5.addChild(ch8);
        ch5.addChild(ch9);
    
        ch3.addChild(f0);
        f0.addChild(ch6);
        ch6.addChild(ch10);
        ch6.addChild(ch11);
    
        ch4.addChild(m1);
        m1.addChild(ch7);
        ch7.addChild(ch12);
        ch7.addChild(ch13);
    
        ch1.addChild(ch14);
        ch8.addChild(ch14);
        ch10.addChild(ch14);
    
        ch9.addChild(ch15);
        ch11.addChild(ch15);
        ch12.addChild(ch15);
    
        ch14.addChild(m4);
        m4.addChild(ch16);
        ch16.addChild(ch18);
        ch16.addChild(ch19);
    
        ch13.addChild(h4);
        h4.addChild(ch17);
        ch17.addChild(ch20);
        ch17.addChild(ch21);
    
        ch19.addChild(ch22);
        ch20.addChild(ch22);
    
        ch22.addChild(f3);
        f3.addChild(ch23);
        ch23.addChild(ch25);
        ch23.addChild(ch26);
    
        ch15.addChild(m2);
        m2.addChild(ch24);
        ch24.addChild(ch27);
        ch24.addChild(ch28);
    
        ch26.addChild(ch29);
        ch21.addChild(ch29);
        ch27.addChild(ch29);
    
        ch29.addChild(d0);
        d0.addChild(ch30);
        ch30.addChild(ch31);
        ch30.addChild(ch32);
    
        ch18.addChild(ch33);
        ch31.addChild(ch33);