Beispiel #1
0
def fixed_chill_command(folder_name='FixedChill-t2.0e-02-Ra1e+06-Da1.0e-04-C2.00-Rel1.0e-04-0'):
    figure_directory = get_base_output_dir()
    fixed_chill_data = os.path.join(get_base_output_dir(), folder_name)

    cmd  ='Fig9FixedChill(\'' + fixed_chill_data + '\', [1100,1500,2500], \'' + figure_directory + '\')'

    return cmd
Beispiel #2
0
def no_flow_command():
    figure_directory = get_base_output_dir()
    no_flow_data = os.path.join(get_base_output_dir(), 'NoFlow')

    cmd = 'Fig4NoFlow(\'' + no_flow_data + '\', \'' + figure_directory + 'Fig4BenchmarkNoFlow.eps\')'

    return cmd
Beispiel #3
0
def fixed_porous_command():
    figure_directory = get_base_output_dir()

    cfl = get_default_cfl()
    data_folder_nu = os.path.join(get_base_output_dir(), 'ConvectionDB-cfl%s' % cfl, 'chi0.4-Da1.0e-02-Ra1.0e+05')
    data_folder_variable_porosity = os.path.join(get_base_output_dir(), 'FixedPorousHole-1proc')

    cmd = 'Fig5FixedPorosityConvectionPlots(\'' + data_folder_nu + '\', \'' + data_folder_variable_porosity + '\', \'' + figure_directory + '\')'

    return cmd
Beispiel #4
0
def test_fixed_porous_hole():
    base_output_dir = get_base_output_dir()
    # matlab_command = get_matlab_base_command()

    print(Fore.GREEN + 'Setup tests for (fixed) porous hole' + Style.RESET_ALL)
    physical_problem = 'DBVariablePorosity'
    data_folder = os.path.join(
        base_output_dir,
        'FixedPorousHole-1proc-minPorosity%s' % get_min_porosity())

    amr_setup, num_procs = get_setup()

    # Setup up the post processing command
    # uniform_prefix = 'Uniform-DBVariablePorosity-'
    python_compare_file = os.path.join(get_mushy_layer_dir(), 'test',
                                       'run_chombo_compare.py')
    chombo_compare_analyse = 'python %s -f %s -a -v \'xDarcy velocity\' ' \
                             '-e L2 -r True -n 6 -d %s \n \n' % (python_compare_file,
                                                                 data_folder,
                                                                 base_output_dir)

    # Just do analysis - make figures manually once we know the sidewall problem has also finished
    analysis_command = chombo_compare_analyse

    # Run
    extra_params = {}
    run_test(data_folder, physical_problem,
             fixed_porous_resolution_specific_params, amr_setup, num_procs,
             analysis_command, extra_params)
Beispiel #5
0
def fixed_chill_video_command(folder_name='FixedChill-t2.0e-02-Ra1e+06-Da1.0e-04-C2.00-Rel1.0e-04-0'):
    # figure_directory = get_base_output_dir()
    fixed_chill_data = os.path.join(get_base_output_dir(), folder_name)

    cmd = 'Fig9MakeVideo(\'' + fixed_chill_data + '\')'

    return cmd
def testDiffusiveSolidification():

    base_output_dir = get_base_output_dir()
    matlab_command = get_matlab_base_command()

    print(Fore.GREEN + 'Setup tests for solidification without flow' + Style.RESET_ALL)

    physicalProblem = 'noFlow'
    AMRSetup = [{'max_level': 0, 'ref_rat': 1, 'run_types': ['uniform'], 'Nzs': [8, 16, 32, 64, 128, 256]},
                {'max_level': 1, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [8, 16, 32, 64, 128]},
                {'max_level': 2, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [8, 16, 32, 64]}]
    # While testing:
    # AMRSetup = [{'max_level': 0, 'ref_rat': 1, 'run_types': ['uniform']}];

    # Nzs 	  = [16, 32, 64]
    num_procs = [1] * 6  # Needs to be as long as the longest Nzs

    # Setup up the post processing command
    dataFolder = os.path.join(base_output_dir, 'NoFlow')
    figureName = os.path.join(base_output_dir, 'Fig4NoFlow.pdf')
    analysis_command = matlab_command + ' "Fig4NoFlow(\'' + dataFolder + '\', \'' + figureName + '\'); exit;"'

    # Run
    extra_params = {'main.debug': 'true'}
    runTest(dataFolder, physicalProblem, diffusive_solidification_resolution_specific_params,
            AMRSetup, num_procs, analysis_command, extra_params)
Beispiel #7
0
def make_figures():

    base_output_dir = get_base_output_dir()
    #matlab_command = get_matlab_base_command()

    print(Fore.GREEN + 'Make figures' + Style.RESET_ALL)

    #data_folder_nu = os.path.join(base_output_dir, 'ConvectionDB-cfl0.2','chi0.4-Da1.0e-02-Ra1.0e+05')
    #data_folder_variable_porosity = os.path.join(base_output_dir, 'FixedPorousHole-1proc')

    #porous_mushy_hole_folder = os.path.join(base_output_dir, 'PorousMushyHole-t0.00015')

    #no_flow_data = os.path.join(base_output_dir, 'NoFlow')
    #fixed_chill_data = os.path.join(base_output_dir, 'FixedChill-t5.0e-02-Ra1e+06-Da5.0e-04-C2.00-Rel1.0e-04-0')

    #fig_commands = ['Fig4NoFlow(\'' + no_flow_data + '\', \'' + figure_directory + 'Fig4BenchmarkNoFlow.eps\')',
    #               'Fig5FixedPorosityConvectionPlots(\'' + data_folder_nu + '\', \'' + data_folder_variable_porosity + '\', \'' + figure_directory + '\')',
    #               'Fig7PorousHole(\'' + porous_mushy_hole_folder + '\', \'' + figure_directory + '\')',
    #               'Fig9FixedChill(\'' + fixed_chill_data + '\', [3000, 4000, 7000], \'' + figure_directory + '\')',
    #               'Fig9MakeVideo(\'' + fixed_chill_data + '\')']

    fig_commands = [no_flow_command(),
                    fixed_porous_command(),
                    porous_hole_command(),
                    fixed_chill_command(),
                    fixed_chill_video_command()]

    full_matlab_command = ''

    for c in fig_commands:
        full_matlab_command = full_matlab_command + 'try \n' + c + ';  \ncatch e \n fprintf(\'Plotting failed\'); \nend \n'

   
    # Write out as a script then run that
    scriptFile = os.path.join(base_output_dir, 'makeFigureScript.m')
    f = open(scriptFile, "w")
    full_matlab_command = "set(groot, 'defaultAxesFontName', 'Latin Modern Math'); \nset(groot, 'defaultTextFontName', 'Latin Modern Math'); \n" + full_matlab_command
    f.write(full_matlab_command)
    f.close()

    slurm_command = '  matlab -nodisplay -nosplash -nodesktop -r " makeFigureScript; exit; "'
    #slurmCommand = matlab_command + ' "' + full_matlab_command + ' exit;"'
 #  + makeFig5 + '; ' + makeFig6 + '; exit ;"'

    job_name = 'makeFigures'

    s = BatchJob(base_output_dir, job_name, '', 4)

    #s.setDependency(job_ids)
    s.set_custom_command(slurm_command)

    # s.write_slurm_file(job_name + '.sh')
    s.run_task(job_name + '.sh')
    print(Fore.GREEN + 'Submitted make figures job \n' + Fore.RESET)
Beispiel #8
0
def test_porous_mushy_hole(argv):
    # Defaults:
    max_time = 1.5e-4
    hole_radius = 0.04
    plot_interval = None

    try:
        opts, _ = getopt.getopt(argv, "t:h:p:")
    except getopt.GetoptError as err:
        print(str(err))
        print('testPorousMushyHole.py -t<max time> -h<hole radius=0.02>')
        sys.exit(2)

    for opt, arg in opts:
        if opt in "-t":
            max_time = float(arg)
        elif opt in "-h":
            hole_radius = float(arg)
        elif opt in "-p":
            plot_interval = int(arg)

    base_output_dir = get_base_output_dir()
    matlab_command = get_matlab_base_command()

    print(Fore.GREEN + 'Setup tests for porous mushy hole' + Style.RESET_ALL)
    physical_problem = 'PorousMushyHole'
    min_concentration = -5.0  # default -5
    folder_name = 'PorousMushyHole-t%s-minC%s' % (max_time, min_concentration)
    data_folder = os.path.join(base_output_dir, folder_name)

    amr_setup, num_procs = get_setup()

    # Setup up the post processing command
    python_compare_file = os.path.join(get_mushy_layer_dir(), 'test', 'run_chombo_compare.py')
    chombo_compare_analyse = 'python %s -f %s -a -v Porosity -e L2 -r True -n 8 -d %s \n \n' % (python_compare_file,
                                                                                                data_folder,
                                                                                                base_output_dir)

    make_figures = porous_hole_command(folder_name=folder_name)
    analysis_command = '%s\n\n%s" %s; exit;"' % (chombo_compare_analyse, matlab_command, make_figures)

    # Run
    extra_params = {'main.max_time': max_time,
                    'main.radius': hole_radius,
                    'bc.bulkConcentrationHiVal': [-1, min_concentration]}

    if plot_interval:
        extra_params['main.plot_interval'] = plot_interval

    run_test(data_folder, physical_problem, porous_mushy_hole_resolution_specific_params, amr_setup, num_procs,
             analysis_command, extra_params)
Beispiel #9
0
    def test_get_base_output_dir(self):

        with mock.patch("socket.gethostname", return_value="atmlxmaster"):
            self.assertEqual(
                util.get_base_output_dir(),
                '/network/group/aopp/oceans/AW002_PARKINSON_MUSH/TestDevelopment-19Dec/'
            )

        with mock.patch("socket.gethostname", return_value="atmlxlap005"):
            self.assertEqual(util.get_base_output_dir(),
                             '/home/parkinsonjl/mushy-layer/test/output/')

        with mock.patch("socket.gethostname", return_value="somethingelse"):

            with mock.patch.dict('os.environ',
                                 {'MUSHY_LAYER_TEST_PATH': 'testing'}):
                self.assertEqual(util.get_base_output_dir(), 'testing')

            # Check that with no mushy layer path available we raise an error
            with mock.patch.dict('os.environ', {}):
                with self.assertRaises(SystemExit) as cm:
                    util.get_base_output_dir()()

                self.assertEqual(cm.exception.code, -1)
def test_uniform_porous_convection(argv):
    # Default vals:
    cfl = get_default_cfl()
    nz_uniform = 64  # don't do uniform mesh simulations by default
    nz_vm = 64
    chi = 0.4
    bc_accuracy = 2
    u_del_u_method = 0
    advection_method = 1

    fixed_da = -1.0
    fixed_ra = -1.0

    try:
        opts, _ = getopt.getopt(argv, "n:v:c:p:b:u:a:d:r:")
    except getopt.GetoptError as err:
        print(str(err))
        print(
            'test_uniform_porous_convection.py -n<num uniform mesh grid points> -v<num variable mesh points>'
            ' -c<cfl> -p <chi> -b <BC accuracy> -u <u del u method> -a <advection method> '
            '-d<fixed darcy> -r<fixed Ra>')
        sys.exit(2)

    for opt, arg in opts:
        if opt in "-n":
            nz_uniform = int(arg)
        elif opt in "-c":
            cfl = float(arg)
        elif opt in "-v":
            nz_vm = int(arg)
        elif opt in "-p":
            chi = float(arg)
        elif opt in "-b":
            bc_accuracy = int(arg)
        elif opt in "-u":
            u_del_u_method = int(arg)
        elif opt in "-a":
            advection_method = int(arg)
        elif opt in "-d":
            fixed_da = float(arg)
        elif opt in "-r":
            fixed_ra = float(arg)

    base_output_dir = get_base_output_dir()
    matlab_command = get_matlab_base_command()

    # Check we have the executables needed to run this test
    success = check_exec_exists(
        os.path.join(get_mushy_layer_dir(), 'execSubcycle'), 'mushyLayer')
    success = success and check_exec_exists(
        os.path.join(get_mushy_layer_dir(), 'setupNewRun'), 'setupnewrun')

    if not success:
        sys.exit(-1)

    print(Fore.GREEN +
          'Setup tests for convection in a fixed uniform porous medium' +
          Style.RESET_ALL)
    physical_problem = 'convectionDB'
    # Nz_uniform = 128
    # if Nz_vm <= 0:
    #    Nz_vm = Nz_uniform #int(float(Nz_uniform) / 2)

    amr_setup = []
    if nz_uniform > 0:
        amr_setup.append({
            'max_level':
            0,
            'ref_rat':
            2,
            'run_types': ['uniform'],
            'Nzs': [int(nz_uniform / 2), nz_uniform, 2 * nz_uniform]
        })

    if nz_vm > 0:
        these_nzs = [nz_vm, 2 * nz_vm, 4 * nz_vm]
        amr_setup.append({
            'max_level': 1,
            'ref_rat': 2,
            'run_types': ['variable'],
            'Nzs': these_nzs
        })

    num_procs = [1, 1, 1]
    # chi = 0.4

    # Try and speed things up for now, should eventually make this criteria smaller
    # extra_params = {'main.steady_state': 1e-4}
    extra_params = {
        'main.BCAccuracy': bc_accuracy,
        'main.uDeluMethod': u_del_u_method,
        'main.advectionMethod': advection_method,
        'main.cfl': cfl,
        'main.initial_cfl': cfl / 10
    }

    base_data_folder = os.path.join(base_output_dir,
                                    'ConvectionDB-cfl' + str(cfl))

    da_ra_vals = [{
        'Da': 1e-6,
        'RaT': [1e7, 1e8, 1e9],
        'lebars': [1.08, 3.07, 12.9]
    }, {
        'Da': 1e-2,
        'RaT': [1e3, 1e4, 1e5, 5e5],
        'lebars': [1.01, 1.41, 3.17, 5.24]
    }]

    if fixed_da > 0.0:
        if fixed_ra > 0.0:
            da_ra_vals = [{
                'Da': fixed_da,
                'RaT': [fixed_ra],
                'lebars': [float('NaN')]
            }]
        elif fixed_da == 1e-6:
            da_ra_vals = [{
                'Da': 1e-6,
                'RaT': [1e7, 1e8, 1e9],
                'lebars': [1.08, 3.07, 12.9]
            }]
        elif fixed_da == 1e-2:
            da_ra_vals = [{
                'Da': 1e-2,
                'RaT': [1e3, 1e4, 1e5, 5e5],
                'lebars': [1.01, 1.41, 3.17, 5.24]
            }]

    # [1.01, 1.41, 3.17, 5.24];
    # [1.08, 3.07, 12.9];
    all_job_ids = []

    analysis_command = matlab_command + ' " '

    ra_format = "%1.1e"
    da_format = "%1.1e"
    chi_format = "%1.1f"

    chi_str = chi_format % chi

    for da_ra in da_ra_vals:
        da = da_ra['Da']
        da_str = da_format % da
        nu_lebars = [str(a) for a in da_ra['lebars']]

        # extra_params['main.max_time'] = 0.1 / float(Da)
        #        extra_params['main.max_dt'] = ?

        for ra in da_ra['RaT']:
            extra_params['parameters.rayleighTemp'] = ra
            extra_params['main.plot_interval'] = -1
            extra_params['main.plot_period'] = 0.05
            extra_params['main.checkpoint_interval'] = 2000

            # this is for testing purposes
            # extra_params['main.max_step'] = 10

            if chi < 1.0:
                extra_params['parameters.darcy'] = da * pow(1 - chi, 2) / pow(
                    chi, 3.0)
            else:
                extra_params['parameters.darcy'] = da

            extra_params['bc.porosityHiVal'] = str(chi) + ' ' + str(
                chi)  # 0.4 0.4
            extra_params['bc.porosityLoVal'] = str(chi) + ' ' + str(chi)

            # output_dir = 'chi' + str(chi) + '-Da' + str(Da) + '-Ra' + str(extra_params['parameters.rayleighTemp'])
            ra_str = ra_format % ra
            output_dir = "chi" + chi_str + "-Da" + da_str + "-Ra" + ra_str

            this_data_folder = os.path.join(base_data_folder, output_dir)
            job_ids = run_test(this_data_folder,
                               physical_problem,
                               uniform_porous_resolution_specific_params,
                               amr_setup,
                               num_procs,
                               '',
                               extra_params,
                               restart_from_low_res=False)

            all_job_ids = all_job_ids + job_ids

        ra_str_vals = [ra_format % a for a in da_ra['RaT']]
        ra_str = '{\'' + '\',\''.join(ra_str_vals) + '\'}'

        analysis_command += ' compileNu(\'' + base_data_folder + '\', \'' \
                            + chi_str + '\', \'' + da_str + '\', ' + ra_str + ', ' \
                            + str(nz_uniform) + ', ' + str(nz_vm) + ', [' + ','.join(nu_lebars) + ']);'

        # Now do analysis
    analysis_command = analysis_command + ' exit; " '

    run_analysis_name = 'runAnalysis.sh'

    job_name = physical_problem + '-analysis'
    s = BatchJob(base_data_folder, job_name, '')

    s.set_dependency(all_job_ids)
    s.set_custom_command(analysis_command)
    # s.write_slurm_file(run_analysis_name)
    s.run_task(run_analysis_name)
    print(Fore.GREEN + 'Submitted analysis job \n' + Fore.RESET)
Beispiel #11
0
def porous_hole_command(folder_name='PorousMushyHole-t0.00015'):
    figure_directory = get_base_output_dir()
    porous_mushy_hole_folder = os.path.join(get_base_output_dir(), folder_name)

    cmd = 'Fig7PorousHole(\'' + porous_mushy_hole_folder + '\', \'' + figure_directory + '\')'
    return cmd
Beispiel #12
0
def test_hele_shaw_fixed_chill(argv):
    mushy_layer_base_dir = os.path.abspath(os.pardir)
    # params_file = mushyLayerBaseDir + '/params/convergenceTest/FixedChill.parameters'
    params_file = mushy_layer_base_dir + '/params/convergenceTest/FixedChill.parameters'

    # Defaults
    default_params = read_inputs(params_file)
    extra_params = {
        'main.max_time':
        float(default_params['main.max_time']),
        'parameters.rayleighComp':
        float(default_params['parameters.rayleighComp']),
        'parameters.darcy':
        float(default_params['parameters.darcy']),
        'parameters.compositionRatio':
        float(default_params['parameters.compositionRatio']),
        'parameters.nonDimReluctance':
        float(default_params['parameters.nonDimReluctance']),
        'parameters.prandtl':
        float(default_params['parameters.prandtl'])
    }

    do_amr = True

    # Pr = 10.0  # fix this for now
    periodic = False

    try:

        opts, _ = getopt.getopt(argv, "t:R:D:C:P:N:A")
    except getopt.GetoptError as err:
        print(str(err))
        print(
            'testHeleShawFixedChill.py -t<max time> -R<Compositional Rayleigh Number> -D<Darcy number> '
            '-C<Composition Ratio> -A<do amr> -P<true(1)/false(0) do plot files> -N<non dimensional reluctance>'
        )

        sys.exit(2)

    for opt, arg in opts:
        if opt in "-t":
            extra_params['main.max_time'] = float(arg)
        elif opt in "-R":
            extra_params['parameters.rayleighComp'] = float(arg)
        elif opt in "-D":
            extra_params['parameters.darcy'] = float(arg)
        elif opt in "-C":
            extra_params['parameters.compositionRatio'] = float(arg)
        elif opt in "-N":
            extra_params['parameters.nonDimReluctance'] = float(arg)
        elif opt in "-P":
            do_plot_files = bool(int(arg))
            print('Do plot files: ' + str(do_plot_files) + ', arg = ' +
                  str(arg))
            if not do_plot_files:
                extra_params['main.plot_interval'] = -1
        elif opt in "-A":
            do_amr = True

    base_output_dir = get_base_output_dir()

    print(Fore.GREEN + 'Setup tests for fixed chill in a Hele-Shaw cell' +
          Style.RESET_ALL)
    physical_problem = 'FixedChill'
    folder_name = "FixedChill-t%1.1e-Ra%.0e-Da%1.1e-C%1.2f-Rel%1.1e" % (
        extra_params['main.max_time'], extra_params['parameters.rayleighComp'],
        extra_params['parameters.darcy'],
        extra_params['parameters.compositionRatio'],
        extra_params['parameters.nonDimReluctance'])
    if periodic:
        folder_name = folder_name + '-periodic'
    data_folder = os.path.join(base_output_dir, folder_name)

    analysis_command = get_matlab_base_command(
    ) + ' "%s; exit;"' % fixed_chill_command(folder_name + '-0')

    single_run = True

    if single_run:

        num_proc = 1
        default_params['concise_run_name'] = folder_name

        default_params = add_params(default_params, extra_params)

        # Overwrite default params with any extra params we've specified
        default_params = add_params(default_params, extra_params)

        allow_restarts = False
        s = BatchJob('', default_params['concise_run_name'], '', num_proc)
        s.set_post_process(analysis_command)
        ml_run = MushyLayerRunSimple(base_output_dir, num_proc, default_params,
                                     s, allow_restarts, get_executable_name())
        ml_run.single_run(folder_name)

    else:

        # Nz_uniform = 256
        # Nz_amr_2 = int(float(Nz_uniform) / 2)
        # Nz_amr_4 = int(float(Nz_uniform) / 4)
        # amr_setup = [{'max_level': 0, 'ref_rat': 1, 'run_types': ['uniform'], 'Nzs': [Nz_uniform]},
        #             {'max_level': 1, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [Nz_amr_2]},
        #             {'max_level': 2, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [Nz_amr_4]},
        #             {'max_level': 1, 'ref_rat': 4, 'run_types': ['amr'], 'Nzs': [Nz_amr_4]}]

        # While testing:
        nz_uniform = [64]
        # amr_setup = [{'max_level': 0, 'ref_rat': 1, 'run_types': ['uniform'], 'Nzs': Nz_uniform},
        #            {'max_level': 1, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [64]}]
        amr_setup = [{
            'max_level': 0,
            'ref_rat': 1,
            'run_types': ['uniform'],
            'Nzs': nz_uniform
        }]

        if do_amr:
            amr_setup.append({
                'max_level': 1,
                'ref_rat': 2,
                'run_types': ['amr'],
                'Nzs': nz_uniform
            })
            amr_setup.append({
                'max_level': 2,
                'ref_rat': 2,
                'run_types': ['amr'],
                'Nzs': nz_uniform
            })

        num_procs = [1]  # Needs to be as long as the longest Nzs

        run_test(data_folder, physical_problem,
                 hele_shaw_resolution_specific_params, amr_setup, num_procs,
                 analysis_command, extra_params, 0)
def testPorousMushyHole(argv):

    # Defaults:
    max_time = 1.5e-4
    hole_radius = 0.04

    try:
        opts, args = getopt.getopt(argv, "t:h:")
    except getopt.GetoptError as err:
        print(str(err))
        print('testPorousMushyHole.py -t<max time> -h<hole radius=0.02>')
        sys.exit(2)

    for opt, arg in opts:
        if opt in "-t":
            max_time = float(arg)
        elif opt in "-h":
            hole_radius = float(arg)

    base_output_dir = get_base_output_dir()
    matlab_command = get_matlab_base_command()

    print(Fore.GREEN + 'Setup tests for porous mushy hole' + Style.RESET_ALL)
    physicalProblem = 'PorousMushyHole'
    # dataFolder = os.path.join(base_output_dir, 'PorousMushyHole-t' + str(max_time) + '-hole' + str(hole_radius) )
    minC = -5.0 # default -5
    dataFolder = os.path.join(base_output_dir, 'PorousMushyHole-t%s-minC%s' % (max_time, minC))

    Nz_uniform = [16, 32, 64, 128, 256, 512]
    AMRSetup = [{'max_level': 0, 'ref_rat': 1, 'run_types': ['uniform'], 'Nzs': Nz_uniform},
                {'max_level': 1, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [16, 32, 64, 128]},
                {'max_level': 2, 'ref_rat': 2, 'run_types': ['amr'], 'Nzs': [8, 16, 32, 64]},
                {'max_level': 1, 'ref_rat': 4, 'run_types': ['amr'], 'Nzs': [8, 16, 32, 64]}]

    # While testing:
   # Nz_uniform = [16, 32, 64]
   # AMRSetup = [{'max_level': 0, 'ref_rat': 1, 'run_types': ['uniform'], 'Nzs': Nz_uniform}]

    # Nzs 	  = [16, 32, 64]
    #num_procs = [1, 1, 1, 4, 4, 4]  # Needs to be as long as the longest Nzs
    num_procs = [1] * len(Nz_uniform)

    # Setup up the post processing command

    # figureName = os.path.join(dataFolder, 'noFlow.pdf')
    uniform_prefix = 'Uniform-' + physicalProblem + '-'

    python_compare_file = os.path.join(get_mushy_layer_dir(), 'test', 'run_chombo_compare.py')
    chombo_compare_analyse ='python %s -f %s -a -v Porosity -e L2 -r True -n 8 \n \n' % (python_compare_file, dataFolder)

    # make_figures  = 'Fig7PorousHole(\'' + dataFolder + '\', \'' + dataFolder + '\')'
    make_figures = porous_hole_command()
    #analyse_in_matlab = 'analyseVariablePorosityTest(\'' + dataFolder + '\', [' + ','.join([str(a) for a in Nz_uniform]) + '],' \
    # 'true, true, \'' + uniform_prefix + '\', \'Porosity\', \'L2\');'

    analysis_command = chombo_compare_analyse + '\n\n' + \
                       matlab_command + ' " %s; exit;"' % make_figures

    # Run
    extra_params = {'main.max_time':max_time,
                    'main.radius': hole_radius,
                    'bc.bulkConcentrationHiVal' : [-1, minC]}

    runTest(dataFolder, physicalProblem, porous_mushy_hole_resolution_specific_params,
            AMRSetup, num_procs, analysis_command, extra_params)