MOAB: Mesh Oriented datABase
(version 5.4.1)
|
00001 #include "moab/ScdInterface.hpp" 00002 #include "moab/Core.hpp" 00003 #include "TestUtil.hpp" 00004 00005 #include <iostream> 00006 00007 #ifdef MOAB_HAVE_MPI 00008 #include "moab/ParallelComm.hpp" 00009 #endif 00010 00011 using namespace moab; 00012 00013 int gdims[6], np; 00014 00015 void test_sqijk() 00016 { 00017 Core moab; 00018 ScdInterface* scd; 00019 ErrorCode rval = moab.Interface::query_interface( scd );CHECK_ERR( rval ); 00020 int ldims[6]; 00021 ScdParData par_data; 00022 std::copy( gdims, gdims + 6, par_data.gDims ); 00023 for( int i = 0; i < 3; i++ ) 00024 par_data.gPeriodic[i] = 0; 00025 par_data.partMethod = ScdParData::SQIJK; 00026 00027 std::cout << "gDims = (" << par_data.gDims[0] << "," << par_data.gDims[1] << "," << par_data.gDims[2] << ")--(" 00028 << par_data.gDims[3] << "," << par_data.gDims[4] << "," << par_data.gDims[5] << ")" << std::endl; 00029 00030 int lperiodic[3], pijk[3]; 00031 00032 rval = ScdInterface::compute_partition( np, 0, par_data, ldims, lperiodic, pijk );CHECK_ERR( rval ); 00033 00034 std::cout << "#proc in 3 directions = (" << pijk[0] << "," << pijk[1] << "," << pijk[2] << ")" << std::endl; 00035 std::cout << "local dims are (" << ldims[0] << "," << ldims[1] << "," << ldims[2] << ")--(" << ldims[3] << "," 00036 << ldims[4] << "," << ldims[5] << ")\n"; 00037 } 00038 00039 int main( int argc, char** argv ) 00040 { 00041 if( argc < 2 ) 00042 { 00043 std::cout << "Usage: " << argv[0] << " <#proc> [<imax> [<jmax> <kmax>]]" << std::endl; 00044 std::cout << "Using default parameters for autotest purposes." << std::endl; 00045 np = 4; 00046 gdims[0] = gdims[1] = gdims[2] = 0; 00047 gdims[3] = gdims[4] = gdims[5] = 100; 00048 } 00049 else if( argc < 3 ) 00050 { 00051 np = atoi( argv[1] ); 00052 gdims[0] = gdims[1] = gdims[2] = 0; 00053 gdims[3] = gdims[4] = gdims[5] = 100; 00054 } 00055 else if( argc < 4 ) 00056 { 00057 np = atoi( argv[1] ); 00058 gdims[0] = gdims[1] = gdims[2] = 0; 00059 gdims[3] = gdims[4] = gdims[5] = atoi( argv[2] ); 00060 } 00061 else if( argc < 6 ) 00062 { 00063 np = atoi( argv[1] ); 00064 gdims[0] = gdims[1] = gdims[2] = 0; 00065 gdims[3] = atoi( argv[2] ); 00066 gdims[4] = atoi( argv[3] ); 00067 gdims[5] = atoi( argv[4] ); 00068 } 00069 00070 // test partition method 00071 RUN_TEST( test_sqijk ); 00072 }