[cig-commits] r5376 - in long/3D/Gale/trunk: .
src/PICellerator/Utils/src
walter at geodynamics.org
walter at geodynamics.org
Wed Nov 29 10:08:19 PST 2006
Author: walter
Date: 2006-11-29 10:08:18 -0800 (Wed, 29 Nov 2006)
New Revision: 5376
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c
Log:
r1121 at earth: boo | 2006-11-29 01:29:43 -0800
Pull edge detection out of StressBC_CalcForce
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1120
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1121
Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c 2006-11-29 18:08:10 UTC (rev 5375)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c 2006-11-29 18:08:18 UTC (rev 5376)
@@ -296,10 +296,6 @@
void _StressBC_AssembleElement( void* forceTerm, ForceVector* forceVector, Element_LocalIndex lElement_I, double* elForceVec ) {
StressBC* self = (StressBC*) forceTerm;
- IntegrationPoint* particle;
- StressBC_MaterialExt* materialExt;
- Particle_InCellIndex cParticle_I;
- Particle_InCellIndex cellParticleCount;
Element_NodeIndex elementNodeCount;
Dimension_Index dim = forceVector->dim;
FiniteElement_Mesh* mesh = forceVector->feVariable->feMesh;
@@ -308,17 +304,23 @@
Dof_Index nodeDofCount;
double stress, area;
+ MeshLayout* meshLayout = mesh->layout;
+ HexaMD* decomp = (HexaMD*)meshLayout->decomp;
+
elementType = FeMesh_ElementTypeAt( mesh, lElement_I );
elementNodeCount = elementType->nodeCount;
nodeDofCount = dim;
+
+ IJK ijk;
- Coord *coord1, *coord2;
-
- coord1=&(Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][0]));
- coord2=&(Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][1]));
-
if(dim==2)
- area=(*coord2)[0]-(*coord1)[0];
+ {
+ Coord *coord1, *coord2;
+
+ coord1=&(Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][0]));
+ coord2=&(Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][1]));
+ area=(*coord2)[0]-(*coord1)[0];
+ }
else
{
printf("Need to implement area in StressBC.c for dim==3\n");
@@ -327,9 +329,13 @@
/* Apply force in verticle direction */
for( eNode_I = 0 ; eNode_I < elementNodeCount; eNode_I++ ) {
- stress = StressBC_CalcForce(self,mesh,lElement_I,eNode_I);
+ /* Make sure that we are on the boundary */
+ RegularMeshUtils_Node_1DTo3D( decomp, mesh->elementNodeTbl[lElement_I][eNode_I],
+ &ijk[0], &ijk[1], &ijk[2] );
+ if( ijk[1] == 0 ) {
+ stress = StressBC_CalcForce(self,mesh,lElement_I,eNode_I);
- elForceVec[ eNode_I * nodeDofCount + I_AXIS ] += stress*area;
+ elForceVec[ eNode_I * nodeDofCount + I_AXIS ] += stress*area;
/* elForceVec[ eNode_I * nodeDofCount + J_AXIS ] += force; */
@@ -338,24 +344,16 @@
/* Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][eNode_I])[1], */
/* stress,area,elForceVec[ eNode_I * nodeDofCount + I_AXIS ]); */
+ }
}
}
double _StressBC_CalcForce( void* forceTerm, Mesh* mesh, Element_DomainIndex lElement_I, Index node_I ) {
StressBC* self = (StressBC*) forceTerm;
- MeshLayout* meshLayout = mesh->layout;
- HexaMD* decomp = (HexaMD*)meshLayout->decomp;
-
- IJK ijk;
- RegularMeshUtils_Node_1DTo3D( decomp, mesh->elementNodeTbl[lElement_I][node_I],
- &ijk[0], &ijk[1], &ijk[2] );
- if( ijk[1] == 0 ) {
- Coord *coord;
/* return self->force; */
- coord=&(Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][node_I]));
- return exp(-(0.5-(*coord)[0])*(0.5-(*coord)[0])/0.01)*self->force;
- }
- return 0.0;
+ Coord *coord;
+ coord=&(Mesh_CoordAt(mesh,mesh->elementNodeTbl[lElement_I][node_I]));
+ return exp(-(0.5-(*coord)[0])*(0.5-(*coord)[0])/0.01)*self->force;
}
More information about the cig-commits
mailing list