[cig-commits] commit: Various indexing fixes. Seems to work in parallel now.
Mercurial
hg at geodynamics.org
Fri Feb 25 14:16:46 PST 2011
changeset: 85:f19b21ac198f
user: Walter Landry <wlandry at caltech.edu>
date: Fri Feb 11 12:31:34 2011 -0800
files: StokesFACOps/smoothErrorByRedBlack.C V_Coarsen.C V_Coarsen_Patch_Strategy.C
description:
Various indexing fixes. Seems to work in parallel now.
diff -r 6af6700b0187 -r f19b21ac198f StokesFACOps/smoothErrorByRedBlack.C
--- a/StokesFACOps/smoothErrorByRedBlack.C Thu Feb 10 11:04:29 2011 -0800
+++ b/StokesFACOps/smoothErrorByRedBlack.C Fri Feb 11 12:31:34 2011 -0800
@@ -138,7 +138,14 @@ void SAMRAI::solv::StokesFACOps::smoothE
is fixed. */
hier::Box gbox=p->getGhostBox();
std::vector<bool> set_p(gbox.size(),true);
-
+
+ // tbox::plog << "set_p "
+ // << gbox.lower(0) << " "
+ // << gbox.upper(0) << " "
+ // << gbox.lower(1) << " "
+ // << gbox.upper(1) << " "
+ // << "\n";
+
const tbox::Array<hier::BoundaryBox >&edges
=d_cf_boundary[ln]->getEdgeBoundaries(patch->getGlobalId());
for(int mm=0; mm<edges.size(); ++mm)
@@ -148,7 +155,12 @@ void SAMRAI::solv::StokesFACOps::smoothE
i<=edges[mm].getBox().upper(0); ++i)
{
set_p[(i-gbox.lower(0))
- + (gbox.upper(0)+1)*(j-gbox.lower(1))]=false;
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))]=false;
+ // tbox::plog << i << " "
+ // << j << " "
+ // << (i-gbox.lower(0))
+ // + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1)) << " "
+ // << "\n";
}
const tbox::Array<hier::BoundaryBox >&nodes
@@ -160,27 +172,52 @@ void SAMRAI::solv::StokesFACOps::smoothE
i<=nodes[mm].getBox().upper(0); ++i)
{
set_p[(i-gbox.lower(0))
- + (gbox.upper(0)+1)*(j-gbox.lower(1))]=false;
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))]=false;
+ // tbox::plog << i << " "
+ // << j << " "
+ // << (i-gbox.lower(0))
+ // + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1)) << " "
+ // << "\n";
}
if(geom->getTouchesRegularBoundary(0,0))
for(int j=gbox.lower(1); j<=gbox.upper(1); ++j)
- set_p[(gbox.upper(0)+1)*(j-gbox.lower(1))]=false;
+ {
+ set_p[(gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))]=false;
+ // tbox::plog << gbox.lower(0) << " "
+ // << j << " "
+ // << "\n";
+ }
if(geom->getTouchesRegularBoundary(0,1))
for(int j=gbox.lower(1); j<=gbox.upper(1); ++j)
+ {
set_p[(gbox.upper(0)-gbox.lower(0))
- + (gbox.upper(0)+1)*(j-gbox.lower(1))]=false;
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))]=false;
+ // tbox::plog << gbox.upper(0) << " "
+ // << j << " "
+ // << "\n";
+ }
if(geom->getTouchesRegularBoundary(1,0))
for(int i=gbox.lower(0); i<=gbox.upper(0); ++i)
+ {
set_p[i-gbox.lower(0)]=false;
+ // tbox::plog << i << " "
+ // << gbox.lower(1) << " "
+ // << "\n";
+ }
if(geom->getTouchesRegularBoundary(1,1))
for(int i=gbox.lower(0); i<=gbox.upper(0); ++i)
+ {
set_p[(i-gbox.lower(0))
- + (gbox.upper(0)+1)*(gbox.upper(1)-gbox.lower(1))]=
+ + (gbox.upper(0)-gbox.lower(0)+1)*(gbox.upper(1)-gbox.lower(1))]=
false;
+ // tbox::plog << i << " "
+ // << gbox.upper(1) << " "
+ // << "\n";
+ }
for(int j=pbox.lower(1); j<=pbox.upper(1)+1; ++j)
{
@@ -206,14 +243,19 @@ void SAMRAI::solv::StokesFACOps::smoothE
<< rb << " "
<< i << " "
<< j << " "
- << pbox.lower(0) << " "
- << pbox.upper(0) << " "
- << pbox.lower(1) << " "
- << pbox.upper(1) << " ";
+ << std::boolalpha
+ << set_p[(i-gbox.lower(0))
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))] << " "
+ << (i-gbox.lower(0))
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1)) << " ";
+ // << pbox.lower(0) << " "
+ // << pbox.upper(0) << " "
+ // << pbox.lower(1) << " "
+ // << pbox.upper(1) << " ";
/* Update p */
if(set_p[(i-gbox.lower(0))
- + (gbox.upper(0)+1)*(j-gbox.lower(1))])
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))])
{
double dvx_dx=
((*v)(pdat::SideIndex(center,pdat::SideIndex::X,
@@ -237,27 +279,28 @@ void SAMRAI::solv::StokesFACOps::smoothE
tbox::plog << "p "
<< (*p)(center) << " "
- << (*p_rhs)(center) << " "
- << dvx_dx << " "
- << dvy_dy << " "
- << delta_R_continuity << " "
- << (*v)(pdat::SideIndex(center,pdat::SideIndex::X,
- pdat::SideIndex::Upper)) << " "
- << (*v)(pdat::SideIndex(center,pdat::SideIndex::X,
- pdat::SideIndex::Lower)) << " "
- << dx << " ";
+ << maxres << " ";
+ // << (*p_rhs)(center) << " "
+ // << dvx_dx << " "
+ // << dvy_dy << " "
+ // << delta_R_continuity << " "
+ // << (*v)(pdat::SideIndex(center,pdat::SideIndex::X,
+ // pdat::SideIndex::Upper)) << " "
+ // << (*v)(pdat::SideIndex(center,pdat::SideIndex::X,
+ // pdat::SideIndex::Lower)) << " "
+ // << dx << " ";
}
/* Update v */
if(set_p[(i-gbox.lower(0))
- + (gbox.upper(0)+1)*(j-gbox.lower(1))]
- || j<pbox.upper(1)+1)
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))]
+ || (i==pbox.upper(0)+1 && j<pbox.upper(1)+1))
{
Update_V(0,j,pbox,center,left,right,down,up,p,v,v_rhs,
maxres,dx,dy,viscosity,theta_momentum);
}
if(set_p[(i-gbox.lower(0))
- + (gbox.upper(0)+1)*(j-gbox.lower(1))]
- || i<pbox.upper(0)+1)
+ + (gbox.upper(0)-gbox.lower(0)+1)*(j-gbox.lower(1))]
+ || (i<pbox.upper(0)+1 && j==pbox.upper(1)+1))
{
Update_V(1,i,pbox,center,down,up,left,right,p,v,v_rhs,
maxres,dy,dx,viscosity,theta_momentum);
@@ -267,7 +310,7 @@ void SAMRAI::solv::StokesFACOps::smoothE
}
}
}
- if (residual_tolerance >= 0.0) {
+ // if (residual_tolerance >= 0.0) {
/*
* Check for early end of sweeps due to convergence
* only if it is numerically possible (user gave a
@@ -286,7 +329,7 @@ void SAMRAI::solv::StokesFACOps::smoothE
tbox::plog
<< d_object_name << "\n"
<< " RBGS sweep #" << sweep << " : " << maxres << "\n";
- }
+ // }
}
}
diff -r 6af6700b0187 -r f19b21ac198f V_Coarsen.C
--- a/V_Coarsen.C Thu Feb 10 11:04:29 2011 -0800
+++ b/V_Coarsen.C Fri Feb 11 12:31:34 2011 -0800
@@ -108,6 +108,19 @@ void SAMRAI::geom::V_Coarsen::coarsen(hi
for(int j=coarse_box.lower(1); j<=coarse_box.upper(1)+1; ++j)
for(int i=coarse_box.lower(0); i<=coarse_box.upper(0)+1; ++i)
{
+ tbox::plog << "V Coarsen "
+ << coarse.getPatchLevelNumber() << " "
+ << i << " "
+ << j << " "
+ << fine.getBox().lower(0) << " "
+ << fine.getBox().upper(0) << " "
+ << fine.getBox().lower(1) << " "
+ << fine.getBox().upper(1) << " "
+ << v_fine->getGhostBox().lower(0) << " "
+ << v_fine->getGhostBox().upper(0) << " "
+ << v_fine->getGhostBox().lower(1) << " "
+ << v_fine->getGhostBox().upper(1) << " ";
+
if(directions(0) && j!=coarse_box.upper(1)+1)
{
pdat::SideIndex coarse(hier::Index(i,j),0,
@@ -124,6 +137,14 @@ void SAMRAI::geom::V_Coarsen::coarsen(hi
{
coarsen_v(coarse,ip,jp,v,v_fine);
}
+ tbox::plog << "vx "
+ << (*v)(coarse) << " "
+ << (*v_fine)(center) << " "
+ << (*v_fine)(center+jp) << " "
+ << (*v_fine)(center+ip) << " "
+ << (*v_fine)(center+jp+ip) << " "
+ << (*v_fine)(center-ip) << " "
+ << (*v_fine)(center+jp-ip) << " ";
}
if(directions(1) && i!=coarse_box.upper(0)+1)
{
@@ -133,15 +154,26 @@ void SAMRAI::geom::V_Coarsen::coarsen(hi
if((j==coarse_box.lower(1)
&& cgeom->getTouchesRegularBoundary(1,0))
|| (j==coarse_box.upper(1)+1
- && cgeom->getTouchesRegularBoundary(0,0)))
+ && cgeom->getTouchesRegularBoundary(1,1)))
{
+ tbox::plog << "vy bound ";
(*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+ip))/2;
}
else
{
+ tbox::plog << "vy center ";
coarsen_v(coarse,jp,ip,v,v_fine);
}
+ tbox::plog << "vy "
+ << (*v)(coarse) << " "
+ << (*v_fine)(center) << " "
+ << (*v_fine)(center+ip) << " "
+ << (*v_fine)(center+jp) << " "
+ << (*v_fine)(center+jp+ip) << " "
+ << (*v_fine)(center-jp) << " "
+ << (*v_fine)(center+ip-jp) << " ";
}
+ tbox::plog << "\n";
}
}
diff -r 6af6700b0187 -r f19b21ac198f V_Coarsen_Patch_Strategy.C
--- a/V_Coarsen_Patch_Strategy.C Thu Feb 10 11:04:29 2011 -0800
+++ b/V_Coarsen_Patch_Strategy.C Fri Feb 11 12:31:34 2011 -0800
@@ -25,34 +25,61 @@ SAMRAI::solv::V_Coarsen_Patch_Strategy::
TBOX_ASSERT(v_fine->getDepth() == v->getDepth());
TBOX_ASSERT(v->getDepth() == 1);
+ hier::Box gbox(v_fine->getGhostBox());
hier::Index ip(1,0), jp(0,1);
for(int mm=0; mm<boundaries.size(); ++mm)
{
hier::Box bbox=boundaries[mm].getBox();
int location_index=boundaries[mm].getLocationIndex();
+ // hier::Index unit(1,1);
hier::Index lower=hier::Index::coarsen(bbox.lower(),hier::Index(2,2)),
upper=hier::Index::coarsen(bbox.upper(),hier::Index(2,2));
+
+ tbox::plog << "VCPS "
+ << mm << " "
+ << bbox.lower(0) << " "
+ << bbox.upper(0) << " "
+ << bbox.lower(1) << " "
+ << bbox.upper(1) << " "
+ << lower(0) << " "
+ << upper(0) << " "
+ << lower(1) << " "
+ << upper(1) << " "
+ << v_fine->getGhostBox().lower(0) << " "
+ << v_fine->getGhostBox().upper(0) << " "
+ << v_fine->getGhostBox().lower(1) << " "
+ << v_fine->getGhostBox().upper(1) << " "
+ << "\n";
for(int j=lower(1); j<=upper(1); ++j)
for(int i=lower(0); i<=upper(0); ++i)
{
+ tbox::plog << "V Patch "
+ << i << " "
+ << j << " ";
/* Fix vx */
if(location_index==0)
{
pdat::SideIndex coarse(hier::Index(i,j),0,
pdat::SideIndex::Upper);
pdat::SideIndex center(coarse*2);
- (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+jp))/2;
- tbox::plog << (*v)(coarse) << " ";
+ if(center[1]>=gbox.lower(1) && center[1]<gbox.upper(1))
+ {
+ (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+jp))/2;
+ tbox::plog << (*v)(coarse) << " ";
+ }
}
else if(location_index==1)
{
pdat::SideIndex coarse(hier::Index(i,j),0,
pdat::SideIndex::Lower);
pdat::SideIndex center(coarse*2);
- (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+jp))/2;
- tbox::plog << (*v)(coarse) << " ";
+ if(center[1]>=gbox.lower(1) && center[1]<gbox.upper(1))
+ {
+ (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+jp))/2;
+ tbox::plog << (*v)(coarse) << " ";
+ }
}
/* Fix vy */
else if(location_index==2)
@@ -60,16 +87,22 @@ SAMRAI::solv::V_Coarsen_Patch_Strategy::
pdat::SideIndex coarse(hier::Index(i,j),1,
pdat::SideIndex::Upper);
pdat::SideIndex center(coarse*2);
- (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+ip))/2;
- tbox::plog << (*v)(coarse) << " ";
+ if(center[0]>=gbox.lower(0) && center[0]<gbox.upper(0))
+ {
+ (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+ip))/2;
+ tbox::plog << (*v)(coarse) << " ";
+ }
}
else if(location_index==3)
{
pdat::SideIndex coarse(hier::Index(i,j),1,
pdat::SideIndex::Lower);
pdat::SideIndex center(coarse*2);
- (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+ip))/2;
- tbox::plog << (*v)(coarse) << " ";
+ if(center[0]>=gbox.lower(0) && center[0]<gbox.upper(0))
+ {
+ (*v)(coarse)=((*v_fine)(center) + (*v_fine)(center+ip))/2;
+ tbox::plog << (*v)(coarse) << " ";
+ }
}
else
{
More information about the CIG-COMMITS
mailing list