[cig-commits] r7254 - in long/3D/Gale/trunk: .
src/PICellerator/Utils/src
walter at geodynamics.org
walter at geodynamics.org
Fri Jun 15 00:01:19 PDT 2007
Author: walter
Date: 2007-06-15 00:01:18 -0700 (Fri, 15 Jun 2007)
New Revision: 7254
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c
Log:
r1830 at earth: boo | 2007-06-14 14:14:52 -0700
Fix a bug where StressBC was overcounting, causing too much stress to be applied
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1828
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1830
Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c 2007-06-15 03:41:13 UTC (rev 7253)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c 2007-06-15 07:01:18 UTC (rev 7254)
@@ -353,6 +353,7 @@
Dof_Index nodeDofCount;
double stress, area;
IJK ijk;
+ int overcount_factor;
Node_DomainIndex* elementNodes = NULL;
@@ -397,6 +398,7 @@
coord1=Mesh_GetVertex(mesh,elementNodes[lower]);
coord2=Mesh_GetVertex(mesh,elementNodes[upper]);
area=coord2[direction]-coord1[direction];
+ overcount_factor=2;
}
else
{
@@ -474,6 +476,7 @@
area=fabs(cross(coord1,coord2,normal) + cross(coord2,coord3,normal)
+ cross(coord3,coord4,normal)
+ cross(coord4,coord1,normal))/2;
+ overcount_factor=4;
}
/* Apply the stress */
@@ -524,8 +527,12 @@
0,self->context,&stress);
break;
}
+ /* We have to divide by an overcount_factor, because
+ otherwise different elements will count the same
+ node more than once. In 2D, nodes are counted
+ twice, in 3D, nodes are counted four times. */
elForceVec[ eNode_I * nodeDofCount
- + self->_entryTbl[entry_I].axis ] += stress*area;
+ + self->_entryTbl[entry_I].axis ] += stress*area/overcount_factor;
}
}
}
More information about the cig-commits
mailing list