[MOAB-dev] r5826 - in MOAB/trunk: src/io tools/mbcoupler
tautges at mcs.anl.gov
tautges at mcs.anl.gov
Tue Oct 23 14:22:11 CDT 2012
Author: tautges
Date: 2012-10-23 14:22:11 -0500 (Tue, 23 Oct 2012)
New Revision: 5826
Modified:
MOAB/trunk/src/io/ReadNC.cpp
MOAB/trunk/tools/mbcoupler/Coupler.cpp
MOAB/trunk/tools/mbcoupler/Coupler.hpp
MOAB/trunk/tools/mbcoupler/mbcoupler_test.cpp
Log:
ReadNC: changing some uses of floor to std::floor, and using casting to guide
choice of type variant to use (revealed by somebody building on a Cray)
Coupler: adding the ability to specify multiple interpolation methods in the interpolate
call. Internally, changed the data handling a bit, so that locally-located points are
still put in tuple lists and communicated with tuple communication. Also, if a given
point is located in multiple places, it is still only counted once, and the last location
is the one kept. Eventually I'll change this to choose based on quality, and to better
detect close-but-not-inside cases.
Passes mbcoupler_test in serial and in parallel.
Modified: MOAB/trunk/src/io/ReadNC.cpp
===================================================================
--- MOAB/trunk/src/io/ReadNC.cpp 2012-10-23 18:26:34 UTC (rev 5825)
+++ MOAB/trunk/src/io/ReadNC.cpp 2012-10-23 19:22:11 UTC (rev 5826)
@@ -659,11 +659,11 @@
if (isParallel) {
if (rank < num_quads % procs) {
- num_local_quads = int(floor(1.0 * num_quads / procs)) + 1;
+ num_local_quads = int(std::floor(1.0 * num_quads / procs)) + 1;
start_idx = 4 * rank * num_local_quads;
}
else {
- num_local_quads = int(floor(1.0 * num_quads / procs));
+ num_local_quads = int(std::floor(1.0 * num_quads / procs));
start_idx = 4 * (num_quads % procs + rank * num_local_quads);
}
}
@@ -774,7 +774,7 @@
{
assert (1<=gid);
assert(gid<=iN);
- int num_nodes_per_proc = floor(iN/ip); // but the first iN%ip parts get an extra node
+ int num_nodes_per_proc = std::floor(((double)iN)/(double)ip); // but the first iN%ip parts get an extra node
int proc = -1;// not initialized
if (0==num_nodes_per_proc)
@@ -786,12 +786,12 @@
if ( gid<= fatProcs*(num_nodes_per_proc+1))
{
- proc= floor( (gid-1)/(num_nodes_per_proc+1) );
+ proc= floor( ((double)(gid-1))/(double)(num_nodes_per_proc+1) );
oIndexOnOwningProc = gid-proc*(num_nodes_per_proc+1)-1;//
return proc;
}
int leftover= gid- fatProcs*(num_nodes_per_proc+1);
- proc = fatProcs+floor((leftover-1)/num_nodes_per_proc);
+ proc = fatProcs+floor(((double)(leftover-1))/(double)num_nodes_per_proc);
oIndexOnOwningProc = leftover-1-(proc-fatProcs)*num_nodes_per_proc;
return proc;
}
@@ -858,11 +858,11 @@
if (isParallel) {
if (rank < num_total_nodes % procs) {
- num_owned_nodes = int(floor(1.0 * num_total_nodes / procs)) + 1;
+ num_owned_nodes = int(floor(((double)1.0 * num_total_nodes) / (double)procs)) + 1;
start_gid = rank * num_owned_nodes + 1; // starts at 1
}
else {
More information about the moab-dev
mailing list