125#ifdef HAVE_FEI_AZTECOO
135 char** params =
new char*[numParams];
136 params[0] =
new char[128];
137 strcpy(params[0],
"name test1");
139 params[1] =
new char[32];
140 strcpy(params[1],
"debugOutput .");
144 osstr <<
"debugOutput " <<
path_;
145 std::string str = osstr.str();
147 params[1] =
new char[str.size()+1];
148 strcpy(params[1], str.c_str());
161 CHK_ERR(
fei->setIDLists(1, &(testdata->ids[0]),
162 1, &(testdata->ids[0])) );
164 CHK_ERR(
fei->initFields(testdata->fieldIDs.size(),
165 &(testdata->fieldSizes[0]),
166 &(testdata->fieldIDs[0])) );
168 unsigned numNodesPerElem = testdata->ids.size();
169 std::vector<int> numFieldsPerNode(numNodesPerElem, 1);
170 std::vector<int*>nodalFieldIDs(numNodesPerElem, &(testdata->fieldIDs[0]));
175 &numFieldsPerNode[0],
183 &(testdata->ids[0])) );
185 std::vector<int*> sharingProcs2D(testdata->sharedIDs.size());
187 for(
unsigned i=0; i<testdata->numSharingProcsPerID.size(); ++i) {
188 sharingProcs2D[i] = &(testdata->sharingProcs[offset]);
189 offset += testdata->numSharingProcsPerID[i];
192 if (testdata->sharedIDs.size() > 0) {
193 CHK_ERR(
fei->initSharedNodes(testdata->sharedIDs.size(),
194 testdata->sharedIDs.size() ? &(testdata->sharedIDs[0]) : 0,
195 testdata->numSharingProcsPerID.size() ? &(testdata->numSharingProcsPerID[0]) : 0,
196 &sharingProcs2D[0]) );
201 std::vector<double> rhsData(testdata->ids.size(), 1.0);
204 CHK_ERR(
fei->setMatScalars(1, &(testdata->ids[0]), &one) );
205 CHK_ERR(
fei->setRHSScalars(1, &(testdata->ids[0]), &one) );
207 CHK_ERR(
fei->setCurrentMatrix(testdata->ids[0]) );
208 CHK_ERR(
fei->setCurrentRHS(testdata->ids[0]) );
211 testdata->ids.size(),
216 GlobalID* BCNodeIDs = &(testdata->ids[0]);
217 int BCFieldID = testdata->fieldIDs[0];
218 double* values =
new double[numBCNodes];
219 int* offsetsIntoField =
new int[numBCNodes];
220 for(
int ii=0; ii<numBCNodes; ++ii) {
222 offsetsIntoField[ii] = 0;
225 CHK_ERR(
fei->loadNodeBCs(numBCNodes, BCNodeIDs, BCFieldID,
226 offsetsIntoField, values) );
228 delete [] offsetsIntoField;
233 int numActiveNodes = 0;
234 CHK_ERR(
fei->getNumLocalNodes(numActiveNodes) );
235 if (numActiveNodes != (
int)testdata->ids.size()) {
240 CHK_ERR(
fei->getLocalNodeIDList(numActiveNodes, localNodes, numActiveNodes) );
242 int totalFieldSize = 0;
243 for(
int ii=0; ii<(int)testdata->fieldSizes.size(); ++ii) {
244 totalFieldSize += testdata->fieldSizes[ii];
247 double* soln =
new double[numActiveNodes*totalFieldSize];
248 int* offsets =
new int[numActiveNodes+1];
250 CHK_ERR(
fei->getNodalSolution(numActiveNodes, localNodes,
254 delete [] localNodes;
259 CHK_ERR(
fei->getFieldSize(testdata->fieldIDs[0], fieldSize) );
261 double initTime, loadTime, solveTime, solnReturnTime;
262 CHK_ERR(
fei->cumulative_cpu_times(initTime, loadTime, solveTime,
278 char** params =
new char*[numParams];
279 params[0] =
new char[128];
280 strcpy(params[0],
"name test1");
282 params[1] =
new char[32];
283 strcpy(params[1],
"debugOutput .");
287 osstr <<
"debugOutput " <<
path_;
288 std::string str = osstr.str();
290 params[1] =
new char[str.size()+1];
291 strcpy(params[1], str.c_str());
305 CHK_ERR(
fei->setIDLists(1, &(testdata->ids[0]),
306 1, &(testdata->ids[0])) );
308 CHK_ERR(
fei->initFields(testdata->fieldIDs.size(),
309 &(testdata->fieldSizes[0]),
310 &(testdata->fieldIDs[0])) );
312 unsigned numNodesPerElem = testdata->ids.size();
313 std::vector<int> numFieldsPerNode(numNodesPerElem, 1);
314 std::vector<int*>nodalFieldIDs(numNodesPerElem, &(testdata->fieldIDs[0]));
319 &numFieldsPerNode[0],
327 &(testdata->ids[0])) );
329 std::vector<int*> sharingProcs2D(testdata->sharedIDs.size());
331 for(
unsigned i=0; i<testdata->numSharingProcsPerID.size(); ++i) {
332 sharingProcs2D[i] = &(testdata->sharingProcs[offset]);
333 offset += testdata->numSharingProcsPerID[i];
336 if (testdata->sharedIDs.size() > 0) {
337 CHK_ERR(
fei->initSharedNodes(testdata->sharedIDs.size(),
338 testdata->sharedIDs.size() ? &(testdata->sharedIDs[0]) : 0,
339 testdata->numSharingProcsPerID.size() ? &(testdata->numSharingProcsPerID[0]) : 0,
340 &sharingProcs2D[0]) );
345 int numBlkActNodes = 0;
346 CHK_ERR(
fei->getNumBlockActNodes(0, numBlkActNodes) );
348 std::vector<double> rhsData(testdata->ids.size(), 1.0);
351 CHK_ERR(
fei->setMatScalars(1, &(testdata->ids[0]), &one) );
352 CHK_ERR(
fei->setRHSScalars(1, &(testdata->ids[0]), &one) );
354 CHK_ERR(
fei->setCurrentMatrix(testdata->ids[0]) );
355 CHK_ERR(
fei->setCurrentRHS(testdata->ids[0]) );
358 testdata->ids.size(),
363 GlobalID* BCNodeIDs = &(testdata->ids[0]);
364 int BCFieldID = testdata->fieldIDs[0];
365 double* values =
new double[numBCNodes];
366 int* offsetsIntoField =
new int[numBCNodes];
367 for(
int ii=0; ii<numBCNodes; ++ii) {
369 offsetsIntoField[ii] = 0;
372 CHK_ERR(
fei->loadNodeBCs(numBCNodes, BCNodeIDs, BCFieldID,
373 offsetsIntoField, values) );
375 delete [] offsetsIntoField;
380 int numActiveNodes = 0;
381 CHK_ERR(
fei->getNumLocalNodes(numActiveNodes) );
382 if (numActiveNodes != (
int)testdata->ids.size()) {
387 CHK_ERR(
fei->getLocalNodeIDList(numActiveNodes, localNodes, numActiveNodes) );
389 int totalFieldSize = 0;
390 for(
int ii=0; ii<(int)testdata->fieldSizes.size(); ++ii) {
391 totalFieldSize += testdata->fieldSizes[ii];
394 double* soln =
new double[numActiveNodes*totalFieldSize];
395 int* offsets =
new int[numActiveNodes+1];
397 CHK_ERR(
fei->getNodalSolution(numActiveNodes, localNodes,
401 delete [] localNodes;
406 CHK_ERR(
fei->getFieldSize(testdata->fieldIDs[0], fieldSize) );
408 double initTime, loadTime, solveTime, solnReturnTime;
409 CHK_ERR(
fei->cumulative_cpu_times(initTime, loadTime, solveTime,