def setUp(self):
     self.top = top = set_as_top(Assembly())
     driver = top.add('driver', SimpleCaseIterDriver())
     top.add('comp1', ExecComp(exprs=['z=x+y']))
     top.add('comp2', ExecComp(exprs=['z=x+1']))
     top.connect('comp1.z', 'comp2.x')
     driver.workflow.add(['comp1', 'comp2'])
     
     # now create some Cases
     outputs = ['comp1.z', 'comp2.z']
     cases = []
     for i in range(10):
         inputs = [('comp1.x', i), ('comp1.y', i*2)]
         cases.append(Case(inputs=inputs, outputs=outputs, label='case%s'%i))
     driver.iterator = ListCaseIterator(cases)
    def setUp(self):
        self.top = top = set_as_top(Assembly())
        driver = top.add('driver', SimpleCaseIterDriver())
        top.add('comp1', ExecComp(exprs=['z=x+y']))
        top.add('comp2', ExecComp(exprs=['z=x+1']))
        top.connect('comp1.z', 'comp2.x')
        driver.workflow.add(['comp1', 'comp2'])

        # now create some Cases
        outputs = ['comp1.z', 'comp2.z']
        cases = []
        for i in range(10):
            inputs = [('comp1.x', i), ('comp1.y', i * 2)]
            cases.append(Case(inputs=inputs, outputs=outputs))

        Case.set_vartree_inputs(driver, cases)
        driver.add_responses(outputs)
    def setUp(self):
        self.top = top = set_as_top(Assembly())
        comp1 = top.add('comp1', ExecComp(exprs=['z=x*y+100']))
        comp2 = top.add('comp2', ExecComp(exprs=['z=x*.4']))
        top.connect('comp1.z', 'comp2.x')
        driver = top.add('driver', SimpleCaseIterDriver())
        driver.workflow.add([comp1, comp2])

        plotter = top.add('plotter', XYplotter())
        plotter.title = "Foobar"
        #plotter.add_line(y="comp1.z", line_type='bo-')
        plotter.add_line(x="comp1.x", y="comp1.z", line_type='bo-')
        plotter.add_line(x='comp1.x', y="comp2.z", line_type='rD-', label='blah')

        # now create some Cases
        outputs = [('comp1.z', None, None), ('comp2.z', None, None)]
        cases = []
        for i in range(10):
            inputs = [('comp1.x', None, i), ('comp1.y', None, i*2)]
            cases.append(Case(inputs=inputs, outputs=outputs, ident='case%s'%i))
        driver.iterator = ListCaseIterator(cases)
def model_par3_setup(num_inputs, mpi=True):
    vsize = 5  # array var size

    # a comp feeds 3 parallel comps which feed
    # another comp
    top = set_as_top(Assembly())
    if mpi:
        drv = MPICaseDriver()
    else:
        drv = SimpleCaseIterDriver()
    driver = top.add("driver", drv)
    top.add("C1", ABCDArrayComp(vsize))
    top.add("C2", ABCDArrayComp(vsize))
    top.add("C3", ABCDArrayComp(vsize))
    top.add("C4", ABCDArrayComp(vsize))
    top.add("C5", ABCDArrayComp(vsize))
    top.driver.workflow.add(['C1', 'C2', 'C3', 'C4', 'C5'])
    top.connect('C1.c', 'C2.a')
    top.connect('C1.out_string', 'C2.in_string')
    top.connect('C1.out_list', 'C4.in_list')

    top.connect('C1.d', 'C3.b')
    top.connect('C1.c', 'C4.a')
    top.connect('C2.out_string', 'C5.in_string')
    top.connect('C3.d', 'C5.b')
    top.connect('C4.c', 'C5.a')
    top.connect('C4.out_list', 'C5.in_list')

    # set up parameters and responses for CaseDriver
    driver.add_parameter("C1.a")
    driver.add_parameter("C1.b")
    driver.add_parameter("C1.in_string")
    driver.add_parameter("C1.in_list")

    driver.add_response("C5.c")
    driver.add_response("C5.d")
    driver.add_response("C5.out_string")
    driver.add_response("C5.out_list")

    # set up inputs
    a = np.ones(vsize, float) * 3.0
    b = np.ones(vsize, float) * 7.0
    s = 'abcdefghijklmnopqrstuvwxyz'
    avals = []
    bvals = []
    svals = []
    lvals = []
    for i in range(num_inputs):
        avals.append(a)
        a += 1.
        bvals.append(b)
        b += 1.
        svals.append(s[:i])
        lvals.append(range(i + 1))

    driver.case_inputs.C1.a = avals
    driver.case_inputs.C1.b = bvals
    driver.case_inputs.C1.in_string = svals
    driver.case_inputs.C1.in_list = lvals

    # expected results
    expected = {}
    for name in driver.get_responses():
        expected[name] = []

        for i in range(num_inputs):
            if name == 'C5.c':
                val = (b + np.ones(vsize, float)) * 2.
            elif name == 'C5.d':
                val = a * 2.
            elif name == 'C5.out_string':
                val = s[:i] + '_C1_C2_C5'
            elif name == 'C5.out_list':
                val = range(i + 1) + [1.5, 1.5, 1.5]

            expected[name].append(val)

    return top, expected