예제 #1
0
def test_mapcells(prepare_config_fix, cpltype, test, cfdprocs, mdprocs,
                  err_msg):
    MD_PARAMS = {"lx": 24.0, "ly": 24.0, "lz": 24.0, "which_test": test}
    MD_PARAMS["npx"], MD_PARAMS["npy"], MD_PARAMS["npz"] = mdprocs

    CFD_PARAMS = {
        "lx": 24.0,
        "ly": 24.0,
        "lz": 24.0,
        "ncx": ncx,
        "ncy": ncy,
        "ncz": ncz,
        "which_test": "cell_test"
    }
    CFD_PARAMS["npx"], CFD_PARAMS["npy"], CFD_PARAMS["npz"] = cfdprocs

    CONFIG_PARAMS = {
        "cfd_bcx": 1,
        "cfd_bcy": 1,
        "cfd_bcz": 1,
        "olap_xlo": 1,
        "olap_xhi": 24,
        "olap_ylo": 1,
        "olap_yhi": 4,
        "olap_zlo": 1,
        "olap_zhi": 24,
        "cnst_xlo": 1,
        "cnst_xhi": 1,
        "cnst_ylo": 1,
        "cnst_yhi": 1,
        "cnst_zlo": 1,
        "cnst_zhi": 1,
        "tstep_ratio": 50,
    }

    run_test(TEST_TEMPLATE_DIR,
             CONFIG_PARAMS,
             MD_EXEC,
             MD_FNAME,
             MD_ARGS,
             CFD_EXEC,
             CFD_FNAME,
             CFD_ARGS,
             MD_PARAMS,
             CFD_PARAMS,
             err_msg,
             mpirun=cpltype)
예제 #2
0
def test_olapcells(prepare_config_fix, olapcells, err_msg):
    MD_PARAMS = {"npx": 4, "npy": 4, "npz": 4,
                 "lx": 24.0, "ly": 24.0, "lz": 24.0, }

    CFD_PARAMS = {"npx": 2, "npy": 2, "npz": 2,
                  "lx": 24.0, "ly": 24.0, "lz": 24.0,
                  "ncx": 24, "ncy": 24, "ncz": 24, }

    CONFIG_PARAMS = {"cfd_bcx": 1, "cfd_bcy": 1, "cfd_bcz": 1,
                     "cnst_xlo": 1, "cnst_xhi": 1,
                     "cnst_ylo": 1, "cnst_yhi": 1,
                     "cnst_zlo": 1, "cnst_zhi": 1,
                     "tstep_ratio": 50, }
    CONFIG_PARAMS["olap_xlo"], CONFIG_PARAMS["olap_xhi"] = olapcells[0:2]
    CONFIG_PARAMS["olap_ylo"], CONFIG_PARAMS["olap_yhi"] = olapcells[2:4]
    CONFIG_PARAMS["olap_zlo"], CONFIG_PARAMS["olap_zhi"] = olapcells[4:6]

    run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME,
             CFD_EXEC, CFD_FNAME, MD_PARAMS, CFD_PARAMS, err_msg)
예제 #3
0
def test_cfdprocs(prepare_config_fix, cfdprocs, err_msg):
    MD_PARAMS = {"npx": 4, "npy": 4, "npz": 4,
                 "lx": 24.0, "ly": 24.0, "lz": 24.0, }

    CFD_PARAMS = {"lx": 24.0, "ly": 24.0, "lz": 24.0,
                  "ncx": 24, "ncy": 24, "ncz": 24, }
    CFD_PARAMS["npx"], CFD_PARAMS["npy"], CFD_PARAMS["npz"] = cfdprocs

    CONFIG_PARAMS = {"cfd_bcx": 1, "cfd_bcy": 1, "cfd_bcz": 1,
                     "olap_xlo": 1, "olap_xhi": 24,
                     "olap_ylo": 1, "olap_yhi": 4,
                     "olap_zlo": 1, "olap_zhi": 24,
                     "cnst_xlo": 1, "cnst_xhi": 1,
                     "cnst_ylo": 1, "cnst_yhi": 1,
                     "cnst_zlo": 1, "cnst_zhi": 1,
                     "tstep_ratio": 50, }

    run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME,
             CFD_EXEC, CFD_FNAME, MD_PARAMS, CFD_PARAMS, err_msg)
예제 #4
0
def test_domaincells(prepare_config_fix, domaincells, err_msg):
    MD_PARAMS = {
        "npx": 2,
        "npy": 2,
        "npz": 2,
        "lx": 24.0,
        "ly": 24.0,
        "lz": 24.0,
    }

    CFD_PARAMS = {
        "npx": 1,
        "npy": 1,
        "npz": 1,
        "lx": 24.0,
        "ly": 24.0,
        "lz": 24.0
    }
    CFD_PARAMS["ncx"], CFD_PARAMS["ncy"], CFD_PARAMS["ncz"] = domaincells

    CONFIG_PARAMS = {
        "cfd_bcx": 1,
        "cfd_bcy": 1,
        "cfd_bcz": 1,
        "olap_xlo": 1,
        "olap_xhi": 1,
        "olap_ylo": 1,
        "olap_yhi": 1,
        "olap_zlo": 1,
        "olap_zhi": 1,
        "cnst_xlo": 1,
        "cnst_xhi": 1,
        "cnst_ylo": 1,
        "cnst_yhi": 1,
        "cnst_zlo": 1,
        "cnst_zhi": 1,
        "tstep_ratio": 50,
    }

    run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME, MD_ARGS,
             CFD_EXEC, CFD_FNAME, CFD_ARGS, MD_PARAMS, CFD_PARAMS, err_msg)
예제 #5
0
def test_olapcells(prepare_config_fix, olapcells, err_msg):
    MD_PARAMS = {
        "npx": 2,
        "npy": 2,
        "npz": 2,
        "lx": 24.0,
        "ly": 24.0,
        "lz": 24.0,
    }

    CFD_PARAMS = {
        "npx": 1,
        "npy": 1,
        "npz": 1,
        "lx": 24.0,
        "ly": 24.0,
        "lz": 24.0,
        "ncx": 24,
        "ncy": 24,
        "ncz": 24,
    }

    CONFIG_PARAMS = {
        "cfd_bcx": 1,
        "cfd_bcy": 1,
        "cfd_bcz": 1,
        "cnst_xlo": 1,
        "cnst_xhi": 1,
        "cnst_ylo": 1,
        "cnst_yhi": 1,
        "cnst_zlo": 1,
        "cnst_zhi": 1,
        "tstep_ratio": 50,
    }
    CONFIG_PARAMS["olap_xlo"], CONFIG_PARAMS["olap_xhi"] = olapcells[0:2]
    CONFIG_PARAMS["olap_ylo"], CONFIG_PARAMS["olap_yhi"] = olapcells[2:4]
    CONFIG_PARAMS["olap_zlo"], CONFIG_PARAMS["olap_zhi"] = olapcells[4:6]

    run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME, MD_ARGS,
             CFD_EXEC, CFD_FNAME, CFD_ARGS, MD_PARAMS, CFD_PARAMS, err_msg)
예제 #6
0
def test_velsP2C(prepare_config_fix, cfdprocs, mdprocs, cells,  err_msg):
    MD_PARAMS = {"lx": 300.0, "ly": 300.0, "lz": 300.0}
    MD_PARAMS["npx"], MD_PARAMS["npy"], MD_PARAMS["npz"] = mdprocs

    CFD_PARAMS = {"lx": 300.0, "ly": 300.0, "lz": 300.0}
    CFD_PARAMS["npx"], CFD_PARAMS["npy"], CFD_PARAMS["npz"] = cfdprocs
    CFD_PARAMS["ncx"], CFD_PARAMS["ncy"], CFD_PARAMS["ncz"] = cells
    # Needed for decomposParDict
    CFD_PARAMS["nprocs"] = cfdprocs[0]*cfdprocs[1]*cfdprocs[2]

    CONFIG_PARAMS = {"cfd_bcx": 1, "cfd_bcy": 1, "cfd_bcz": 1,
                     "olap_xlo": 1, "olap_xhi": cells[0],
                     "olap_ylo": 1, "olap_yhi": 5,
                     "olap_zlo": 1, "olap_zhi": cells[2],
                     "cnst_xlo": 1, "cnst_xhi": cells[0],
                     "cnst_ylo": 3, "cnst_yhi": 5,
                     "cnst_zlo": 1, "cnst_zhi": cells[2],
                     "tstep_ratio": 1, }

    # Parametrize OpenFOAM files
    mesh_file = os.path.join(CFD_FNAME+"/", "constant/polyMesh/blockMeshDict") 
    parametrize_file(mesh_file, mesh_file, CFD_PARAMS)
    control_dict_file = os.path.join(CFD_FNAME+"/", "system/decomposeParDict") 
    parametrize_file(control_dict_file, control_dict_file, CFD_PARAMS)

    try:
        subprocess.check_output(["blockMesh", "-case", CFD_FNAME])
    except:
        assert False

    try:
        subprocess.check_output(["decomposePar", "-case", CFD_FNAME])
    except:
        assert False

    correct = run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME, MD_ARGS,
                       CFD_EXEC, CFD_FNAME, CFD_ARGS, MD_PARAMS, CFD_PARAMS, err_msg, True)
    if correct:
        # Reconstruct the fields from processor directories.
        try:
            subprocess.check_output(["reconstructPar", "-case", CFD_FNAME])
        except:
            assert False
        # Reconstruct the fields from processor directories.
        try:
            subprocess.check_output(["writeCellCentres", "-case", CFD_FNAME])
        except:
            assert False
        compare_forces(1e-6, CFD_PARAMS)
예제 #7
0
def test_forcesC2P(prepare_config_fix, cfdprocs, mdprocs, err_msg):
    MD_PARAMS = {"lx": 300.0, "ly": 300.0, "lz": 300.0}
    MD_PARAMS["npx"], MD_PARAMS["npy"], MD_PARAMS["npz"] = mdprocs

    CFD_PARAMS = {"lx": 300.0, "ly": 300.0, "lz": 300.0,
                  "ncx": 15, "ncy": 15, "ncz": 15, }
    CFD_PARAMS["npx"], CFD_PARAMS["npy"], CFD_PARAMS["npz"] = cfdprocs

    CONFIG_PARAMS = {"cfd_bcx": 1, "cfd_bcy": 1, "cfd_bcz": 1,
                     "olap_xlo": 1, "olap_xhi": 15,
                     "olap_ylo": 1, "olap_yhi": 5,
                     "olap_zlo": 1, "olap_zhi": 15,
                     "cnst_xlo": 1, "cnst_xhi": 15,
                     "cnst_ylo": 5, "cnst_yhi": 5,
                     "cnst_zlo": 1, "cnst_zhi": 15,
                     "tstep_ratio": 1, }

    correct = run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME,
                       CFD_EXEC, CFD_FNAME, MD_PARAMS, CFD_PARAMS, err_msg)
    if correct:
        compare_forces(1e-6)
예제 #8
0
def test_velocitiesP2C(prepare_config_fix, cfdprocs, mdprocs, err_msg):
    MD_PARAMS = {"lx": 300.0, "ly": 300.0, "lz": 300.0}
    MD_PARAMS["npx"], MD_PARAMS["npy"], MD_PARAMS["npz"] = mdprocs

    CFD_PARAMS = {"lx": 300.0, "ly": 300.0, "lz": 300.0,
                  "ncx": 15, "ncy": 15, "ncz": 15, }
    CFD_PARAMS["npx"], CFD_PARAMS["npy"], CFD_PARAMS["npz"] = cfdprocs

    CONFIG_PARAMS = {"cfd_bcx": 1, "cfd_bcy": 1, "cfd_bcz": 1,
                     "olap_xlo": 1, "olap_xhi": 15,
                     "olap_ylo": 1, "olap_yhi": 5,
                     "olap_zlo": 1, "olap_zhi": 15,
                     "cnst_xlo": 1, "cnst_xhi": 15,
                     "cnst_ylo": 5, "cnst_yhi": 5,
                     "cnst_zlo": 1, "cnst_zhi": 15,
                     "tstep_ratio": 1, }

    correct = run_test(TEST_TEMPLATE_DIR, CONFIG_PARAMS, MD_EXEC, MD_FNAME, MD_ARGS,
                       CFD_EXEC, CFD_FNAME, CFD_ARGS, MD_PARAMS, CFD_PARAMS, err_msg, True)
    if correct:
        compare_vels(1e-6)