[cig-commits] r7663 - in long/3D/Gale/trunk: . src/Gale/Utils/src
walter at geodynamics.org
walter at geodynamics.org
Fri Jul 13 16:15:07 PDT 2007
Author: walter
Date: 2007-07-13 16:15:07 -0700 (Fri, 13 Jul 2007)
New Revision: 7663
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.c
long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.h
Log:
r1870 at earth: boo | 2007-07-13 15:22:15 -0700
Make it possible for FrictionVC to not set the velocity on a boundary
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1869
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1870
Modified: long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.c
===================================================================
--- long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.c 2007-07-13 23:15:00 UTC (rev 7662)
+++ long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.c 2007-07-13 23:15:07 UTC (rev 7663)
@@ -252,6 +252,7 @@
void* _mesh )
{
FrictionVC* self = (FrictionVC*)frictionVC;
+ int i;
self->isConstructed = True;
self->_dictionaryEntryName = _dictionaryEntryName;
@@ -262,6 +263,11 @@
self->context=NULL;
self->pressure=NULL;
self->deviatoric_stress=NULL;
+ for(i=0;i<3;++i)
+ {
+ self->include_lower_boundary[i]=True;
+ self->include_upper_boundary[i]=True;
+ }
self->friction=0;
}
@@ -314,6 +320,12 @@
self->_entryTbl = Memory_Alloc_Array( FrictionVC_Entry, self->_entryCount, "FrictionVC->_entryTbl" );
varsVal = Dictionary_Entry_Value_GetMember(vcDictVal, "variables");
+ self->include_lower_boundary[I_AXIS]=Dictionary_Entry_Value_AsBool_with_Default(Dictionary_Entry_Value_GetMember(vcDictVal, "includeLowerX"),True);
+ self->include_lower_boundary[J_AXIS]=Dictionary_Entry_Value_AsBool_with_Default(Dictionary_Entry_Value_GetMember(vcDictVal, "includeLowerY"),True);
+ self->include_lower_boundary[K_AXIS]=Dictionary_Entry_Value_AsBool_with_Default(Dictionary_Entry_Value_GetMember(vcDictVal, "includeLowerZ"),True);
+ self->include_upper_boundary[I_AXIS]=Dictionary_Entry_Value_AsBool_with_Default(Dictionary_Entry_Value_GetMember(vcDictVal, "includeUpperX"),True);
+ self->include_upper_boundary[J_AXIS]=Dictionary_Entry_Value_AsBool_with_Default(Dictionary_Entry_Value_GetMember(vcDictVal, "includeUpperY"),True);
+ self->include_upper_boundary[K_AXIS]=Dictionary_Entry_Value_AsBool_with_Default(Dictionary_Entry_Value_GetMember(vcDictVal, "includeUpperZ"),True);
self->friction = Dictionary_Entry_Value_AsDouble(Dictionary_Entry_Value_GetMember(vcDictVal, "StaticFriction"));
for (entry_I = 0; entry_I < self->_entryCount; entry_I++)
@@ -402,12 +414,18 @@
}
else
{
+ int i;
self->_wall = FrictionVC_Wall_Size;
self->_entryCount = 0;
self->_entryTbl = NULL;
self->context=NULL;
self->pressure=NULL;
self->deviatoric_stress=NULL;
+ for(i=0;i<3;++i)
+ {
+ self->include_lower_boundary[i]=True;
+ self->include_upper_boundary[i]=True;
+ }
self->friction=0;
}
}
@@ -513,6 +531,7 @@
FrictionVC* newFrictionVC;
PtrMap* map = ptrMap;
Bool ownMap = False;
+ int i;
if( !map ) {
map = PtrMap_New( 10 );
@@ -527,6 +546,11 @@
newFrictionVC->context = self->context;
newFrictionVC->pressure = self->pressure;
newFrictionVC->deviatoric_stress = self->deviatoric_stress;
+ for(i=0;i<3;++i)
+ {
+ newFrictionVC->include_lower_boundary[i]=self->include_lower_boundary[i];
+ newFrictionVC->include_upper_boundary[i]=self->include_upper_boundary[i];
+ }
newFrictionVC->friction = self->friction;
if( deep ) {
@@ -617,7 +641,8 @@
unsigned nNodes, direction, boundary, basis[2];
IJK ijk;
- /* Note that we select the order of the basis vectors to point inwards */
+ /* Note that we select the order of the basis vectors to
+ point inwards */
switch (self->_wall) {
case FrictionVC_Wall_Front:
direction=K_AXIS;
@@ -690,8 +715,13 @@
/* Get x1 */
if(ijk[basis[0]]==0)
{
- x1[0]=self->_mesh->verts[n_i][0];
- x1[1]=self->_mesh->verts[n_i][1];
+ if(self->include_lower_boundary[basis[0]]==True)
+ {
+ x1[0]=self->_mesh->verts[n_i][0];
+ x1[1]=self->_mesh->verts[n_i][1];
+ }
+ else
+ continue;
}
else
{
@@ -705,8 +735,13 @@
/* Get x2 */
if(ijk[basis[0]]==grid->sizes[basis[0]]-1)
{
- x2[0]=self->_mesh->verts[n_i][0];
- x2[1]=self->_mesh->verts[n_i][1];
+ if(self->include_upper_boundary[basis[0]]==True)
+ {
+ x2[0]=self->_mesh->verts[n_i][0];
+ x2[1]=self->_mesh->verts[n_i][1];
+ }
+ else
+ continue;
}
else
{
@@ -753,8 +788,13 @@
/* Get x1 */
if(ijk[basis[0]]==0)
{
- x1[0]=self->_mesh->verts[n_i][0];
- x1[1]=self->_mesh->verts[n_i][1];
+ if(self->include_lower_boundary[basis[0]]==True)
+ {
+ x1[0]=self->_mesh->verts[n_i][0];
+ x1[1]=self->_mesh->verts[n_i][1];
+ }
+ else
+ continue;
}
else
{
@@ -768,8 +808,13 @@
/* Get x2 */
if(ijk[basis[0]]==grid->sizes[basis[0]]-1)
{
- x2[0]=self->_mesh->verts[n_i][0];
- x2[1]=self->_mesh->verts[n_i][1];
+ if(self->include_upper_boundary[basis[0]]==True)
+ {
+ x2[0]=self->_mesh->verts[n_i][0];
+ x2[1]=self->_mesh->verts[n_i][1];
+ }
+ else
+ continue;
}
else
{
@@ -784,8 +829,13 @@
/* Get x3 */
if(ijk[basis[1]]==0)
{
- x3[0]=self->_mesh->verts[n_i][0];
- x3[1]=self->_mesh->verts[n_i][1];
+ if(self->include_lower_boundary[basis[1]]==True)
+ {
+ x3[0]=self->_mesh->verts[n_i][0];
+ x3[1]=self->_mesh->verts[n_i][1];
+ }
+ else
+ continue;
}
else
{
@@ -799,8 +849,13 @@
/* Get x4 */
if(ijk[basis[1]]==grid->sizes[basis[1]]-1)
{
- x4[0]=self->_mesh->verts[n_i][0];
- x4[1]=self->_mesh->verts[n_i][1];
+ if(self->include_upper_boundary[basis[1]]==True)
+ {
+ x4[0]=self->_mesh->verts[n_i][0];
+ x4[1]=self->_mesh->verts[n_i][1];
+ }
+ else
+ continue;
}
else
{
@@ -848,8 +903,11 @@
/* Finally, add in the point if the frictional force
keeps the material pinned to the boundary. */
+/* printf("Adding %d %d %lf %lf %lf\n",ijk[0],ijk[1],p,normal_stress,tangential_norm); */
if(self->friction*(p-normal_stress)>=tangential_norm)
- IndexSet_Add(set,n_i);
+ {
+ IndexSet_Add(set,n_i);
+ }
}
}
}
Modified: long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.h
===================================================================
--- long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.h 2007-07-13 23:15:00 UTC (rev 7662)
+++ long/3D/Gale/trunk/src/Gale/Utils/src/FrictionVC.h 2007-07-13 23:15:07 UTC (rev 7663)
@@ -62,6 +62,8 @@
/* StGermain, and we do not have access to StgFEM yet. */ \
FiniteElementContext* context; \
FeVariable *deviatoric_stress, *pressure; \
+ Bool include_lower_boundary[3]; \
+ Bool include_upper_boundary[3]; \
double friction;
struct _FrictionVC { __FrictionVC };
More information about the cig-commits
mailing list