[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