Пример #1
0
def test_grid_transfer_machine_constructor():
    """
    constructor
    """
    path = os.path.dirname(os.path.realpath(__file__))
    if 'induction_machine' not in path:
        path += '/induction_machine/'
    else:
        path += '/'
    grid_transfer = GridTransferMachine(coarse_grid='im_3kW_4k',
                                        fine_grid='im_3kW_17k',
                                        path_meshes=path)

    assert len(grid_transfer.transfer_data) == 12
    assert len(grid_transfer.transfer_data['vtxInner']) == 6432
    assert len(grid_transfer.transfer_data['wtsInner']) == 6432
    assert len(grid_transfer.transfer_data['vtxOuter']) == 6615
    assert len(grid_transfer.transfer_data['vtxOuter']) == 6615
    assert grid_transfer.transfer_data['addBoundInner'] == 663
    assert grid_transfer.transfer_data['addBoundOuter'] == 76
    assert grid_transfer.transfer_data['sizeLvlStop'] == 17496
    assert grid_transfer.transfer_data['sizeLvlStart'] == 4449
    assert len(grid_transfer.transfer_data['mappingInner']) == 2208
    assert len(grid_transfer.transfer_data['mappingOuter']) == 2241
    assert len(grid_transfer.transfer_data['mappingInnerNew']) == 6432
    assert len(grid_transfer.transfer_data['mappingOuterNew']) == 6615
Пример #2
0
def test_grid_transfer_interpolation():
    """
    interpolation
    """
    path = os.path.dirname(os.path.realpath(__file__))
    if 'induction_machine' not in path:
        path += '/induction_machine/'
    else:
        path += '/'
    grid_transfer = GridTransferMachine(coarse_grid='im_3kW_4k',
                                        fine_grid='im_3kW_17k',
                                        path_meshes=path)
    vec = VectorMachine(u_front_size=2, u_middle_size=4449, u_back_size=2)
    res_vec = grid_transfer.interpolation(u=vec)

    np.testing.assert_equal(True, isinstance(res_vec, VectorMachine))
Пример #3
0
def run_V_FCF_17_4_4_4_4():
    def output_fcn(self):
        now = 'V_FCF_17_4_4_4_4'
        pathlib.Path('results/' + now + '/' + str(self.solve_iter)).mkdir(
            parents=True, exist_ok=True)
        jl = [self.u[0][i].jl for i in self.index_local[0]]
        ia = [self.u[0][i].ia for i in self.index_local[0]]
        ib = [self.u[0][i].ib for i in self.index_local[0]]
        ic = [self.u[0][i].ic for i in self.index_local[0]]
        ua = [self.u[0][i].ua for i in self.index_local[0]]
        ub = [self.u[0][i].ub for i in self.index_local[0]]
        uc = [self.u[0][i].uc for i in self.index_local[0]]
        tr = [self.u[0][i].tr for i in self.index_local[0]]
        sol = {
            'jl': jl,
            'ia': ia,
            'ib': ib,
            'ic': ic,
            'ua': ua,
            'ub': ub,
            'uc': uc,
            'tr': tr,
            'time': self.runtime_solve,
            'conv': self.conv,
            't': self.problem[0].t,
            'time_setup': self.runtime_setup
        }

        np.save(
            'results/' + now + '/' + str(self.solve_iter) + '/' +
            str(self.t[0][-1]), sol)

    nonlinear = True
    pwm = True
    t_start = 0
    t_stop = 0.01025390625

    # Complete
    machine_0 = InductionMachine(
        nonlinear=nonlinear,
        pwm=pwm,
        t_start=t_start,
        t_stop=t_stop,
        grid='im_3kW_17k',
        path_im3kw=os.getcwd() +
        '/../../src/pymgrit/induction_machine/im_3kW/',
        path_getdp=os.getcwd() +
        '/../../src/pymgrit/induction_machine/getdp/getdp',
        nt=10753)

    first_level = np.hstack((np.arange(0, len(machine_0.t))[::42],
                             np.arange(0, len(machine_0.t))[::42][1:] - 1))
    first_level.sort()
    machine_0.t = machine_0.t[first_level]
    machine_0.nt = len(first_level)

    machine_1 = InductionMachine(
        nonlinear=nonlinear,
        pwm=pwm,
        t_start=t_start,
        t_stop=t_stop,
        grid='im_3kW_4k',
        path_im3kw=os.getcwd() +
        '/../../src/pymgrit/induction_machine/im_3kW/',
        path_getdp=os.getcwd() +
        '/../../src/pymgrit/induction_machine/getdp/getdp',
        nt=2**8 + 1)
    machine_2 = InductionMachine(
        nonlinear=nonlinear,
        pwm=pwm,
        t_start=t_start,
        t_stop=t_stop,
        grid='im_3kW_4k',
        path_im3kw=os.getcwd() +
        '/../../src/pymgrit/induction_machine/im_3kW/',
        path_getdp=os.getcwd() +
        '/../../src/pymgrit/induction_machine/getdp/getdp',
        nt=2**6 + 1)
    machine_3 = InductionMachine(
        nonlinear=nonlinear,
        pwm=pwm,
        t_start=t_start,
        t_stop=t_stop,
        grid='im_3kW_4k',
        path_im3kw=os.getcwd() +
        '/../../src/pymgrit/induction_machine/im_3kW/',
        path_getdp=os.getcwd() +
        '/../../src/pymgrit/induction_machine/getdp/getdp',
        nt=2**4 + 1)
    machine_4 = InductionMachine(
        nonlinear=nonlinear,
        pwm=pwm,
        t_start=t_start,
        t_stop=t_stop,
        grid='im_3kW_4k',
        path_im3kw=os.getcwd() +
        '/../../src/pymgrit/induction_machine/im_3kW/',
        path_getdp=os.getcwd() +
        '/../../src/pymgrit/induction_machine/getdp/getdp',
        nt=2**2 + 1)

    problem = [machine_0, machine_1, machine_2, machine_3, machine_4]
    transfer = [
        GridTransferMachine(fine_grid='im_3kW_17k',
                            coarse_grid='im_3kW_4k',
                            path_meshes=os.getcwd() +
                            '/../../src/pymgrit/induction_machine/im_3kW/'),
        GridTransferCopy(),
        GridTransferCopy(),
        GridTransferCopy()
    ]

    mgrit = MgritMachineConvJl(problem=problem,
                               transfer=transfer,
                               nested_iteration=True,
                               output_fcn=output_fcn,
                               tol=1,
                               cycle_type='V',
                               cf_iter=1)
    mgrit.solve()