[cig-commits] r12575 - in long/3D/Gale/trunk: . src/Underworld/plugins/EulerDeform

walter at geodynamics.org walter at geodynamics.org
Wed Aug 6 23:21:06 PDT 2008


Author: walter
Date: 2008-08-06 23:21:06 -0700 (Wed, 06 Aug 2008)
New Revision: 12575

Modified:
   long/3D/Gale/trunk/
   long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/Context.h
   long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/EulerDeform.c
Log:
 r2294 at earth:  boo | 2008-08-06 23:19:47 -0700
 EulerDeform now takes staticLeftTopBack etc. arguments to finely specify which points get reset



Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
   - 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2292
   + 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2294

Modified: long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/Context.h
===================================================================
--- long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/Context.h	2008-08-07 05:35:19 UTC (rev 12574)
+++ long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/Context.h	2008-08-07 06:21:06 UTC (rev 12575)
@@ -43,12 +43,37 @@
 		Bool		wrapBottom;
 		Bool		wrapLeft;
 
+		Bool		staticLeft;
+		Bool		staticRight;
 		Bool		staticTop;
 		Bool		staticBottom;
-		Bool		staticLeft;
-		Bool		staticRight;
 		Bool		staticFront;
 		Bool		staticBack;
+
+		Bool		staticLeftTop;
+		Bool		staticRightTop;
+		Bool		staticLeftTopFront;
+		Bool		staticRightTopFront;
+		Bool		staticLeftTopBack;
+		Bool		staticRightTopBack;
+
+		Bool		staticLeftBottom;
+		Bool		staticRightBottom;
+		Bool		staticLeftBottomFront;
+		Bool		staticRightBottomFront;
+		Bool		staticLeftBottomBack;
+		Bool		staticRightBottomBack;
+
+		Bool		staticLeftFront;
+		Bool		staticRightFront;
+		Bool		staticLeftBack;
+		Bool		staticRightBack;
+
+		Bool		staticTopFront;
+		Bool		staticBottomFront;
+		Bool		staticTopBack;
+		Bool		staticBottomBack;
+
 		Bool		staticSides;
 		double**	sideCoords;
 	};

Modified: long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/EulerDeform.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/EulerDeform.c	2008-08-07 05:35:19 UTC (rev 12574)
+++ long/3D/Gale/trunk/src/Underworld/plugins/EulerDeform/EulerDeform.c	2008-08-07 06:21:06 UTC (rev 12575)
@@ -147,9 +147,67 @@
 			sys->staticRight = Dictionary_GetBool_WithDefault( sysDict, "staticRight", False );
 			sys->staticFront = Dictionary_GetBool_WithDefault( sysDict, "staticFront", False );
 			sys->staticBack = Dictionary_GetBool_WithDefault( sysDict, "staticBack", False );
-			sys->staticSides = sys->staticTop || sys->staticBottom
-                          || sys->staticRight || sys->staticLeft || sys->staticFront || sys->staticBack;
 
+			sys->staticLeftTop = Dictionary_GetBool_WithDefault( sysDict, "staticLeftTop", sys->staticLeft && sys->staticTop );
+			sys->staticRightTop = Dictionary_GetBool_WithDefault( sysDict, "staticRightTop", sys->staticRight && sys->staticTop );
+			sys->staticLeftTopFront = Dictionary_GetBool_WithDefault( sysDict, "staticLeftTopFront",
+                                                                                  sys->staticLeft && sys->staticTop && sys->staticFront );
+			sys->staticRightTopFront = Dictionary_GetBool_WithDefault( sysDict, "staticRightTopFront",
+                                                                                   sys->staticRight && sys->staticTop && sys->staticFront );
+			sys->staticLeftTopBack = Dictionary_GetBool_WithDefault( sysDict, "staticLeftTopBack",
+                                                                                  sys->staticLeft && sys->staticTop && sys->staticBack );
+			sys->staticRightTopBack = Dictionary_GetBool_WithDefault( sysDict, "staticRightTopBack",
+                                                                                   sys->staticRight && sys->staticTop && sys->staticBack );
+
+			sys->staticLeftBottom = Dictionary_GetBool_WithDefault( sysDict, "staticLeftBottom", sys->staticLeft && sys->staticBottom );
+			sys->staticRightBottom = Dictionary_GetBool_WithDefault( sysDict, "staticRightBottom", sys->staticRight && sys->staticBottom );
+			sys->staticLeftBottomFront = Dictionary_GetBool_WithDefault( sysDict, "staticLeftBottomFront",
+                                                                                  sys->staticLeft && sys->staticBottom && sys->staticFront );
+			sys->staticRightBottomFront = Dictionary_GetBool_WithDefault( sysDict, "staticRightBottomFront",
+                                                                                   sys->staticRight && sys->staticBottom && sys->staticFront );
+			sys->staticLeftBottomBack = Dictionary_GetBool_WithDefault( sysDict, "staticLeftBottomBack",
+                                                                                  sys->staticLeft && sys->staticBottom && sys->staticBack );
+			sys->staticRightBottomBack = Dictionary_GetBool_WithDefault( sysDict, "staticRightBottomBack",
+                                                                                   sys->staticRight && sys->staticBottom && sys->staticBack );
+
+			sys->staticLeftFront = Dictionary_GetBool_WithDefault( sysDict, "staticLeftFront", sys->staticLeft && sys->staticFront );
+			sys->staticRightFront = Dictionary_GetBool_WithDefault( sysDict, "staticRightFront", sys->staticRight && sys->staticFront );
+			sys->staticLeftBack = Dictionary_GetBool_WithDefault( sysDict, "staticLeftBack", sys->staticLeft && sys->staticBack );
+			sys->staticRightBack = Dictionary_GetBool_WithDefault( sysDict, "staticRightBack", sys->staticRight && sys->staticBack );
+
+			sys->staticTopFront = Dictionary_GetBool_WithDefault( sysDict, "staticTopFront", sys->staticTop && sys->staticFront );
+			sys->staticBottomFront = Dictionary_GetBool_WithDefault( sysDict, "staticBottomFront", sys->staticBottom && sys->staticFront );
+			sys->staticTopBack = Dictionary_GetBool_WithDefault( sysDict, "staticTopBack", sys->staticTop && sys->staticBack );
+			sys->staticBottomBack = Dictionary_GetBool_WithDefault( sysDict, "staticBottomBack", sys->staticBottom && sys->staticBack );
+
+			sys->staticSides = 
+                          sys->staticLeft
+                          || sys->staticRight
+                          || sys->staticTop
+                          || sys->staticBottom
+                          || sys->staticFront
+                          || sys->staticBack
+                          || sys->staticLeftTop
+                          || sys->staticRightTop
+                          || sys->staticLeftTopFront
+                          || sys->staticRightTopFront
+                          || sys->staticLeftTopBack
+                          || sys->staticRightTopBack
+                          || sys->staticLeftBottom
+                          || sys->staticRightBottom
+                          || sys->staticLeftBottomFront
+                          || sys->staticRightBottomFront
+                          || sys->staticLeftBottomBack
+                          || sys->staticRightBottomBack
+                          || sys->staticLeftFront
+                          || sys->staticRightFront
+                          || sys->staticLeftBack
+                          || sys->staticRightBack
+                          || sys->staticTopFront
+                          || sys->staticBottomFront
+                          || sys->staticTopBack
+                          || sys->staticBottomBack;
+
 			/* Read the list of variables to interpolate. */
 			varLst = Dictionary_Entry_Value_GetMember( Dictionary_Entry_Value_GetElement( sysLst, sys_i ), "fields" );
 			if( varLst ) {
@@ -279,18 +337,190 @@
     add=False;
     RegularMeshUtils_Node_1DTo3D
       ( sys->mesh, Mesh_DomainToGlobal( sys->mesh, MT_VERTEX, n_i ), ijk );
-    if((ijk[0]==0 && sys->staticLeft)
-       || (ijk[0]==grid->sizes[0]-1 && sys->staticRight)
-       || (ijk[1]==0 && sys->staticBottom)
-       || (ijk[1]==grid->sizes[1]-1 && sys->staticTop))
-      add=True;
 
-    if(sys->mesh->topo->nDims == 3)
+    /* 2D */
+    if(sys->mesh->topo->nDims == 2)
       {
-        if((ijk[2]==0 && sys->staticBack)
-           || (ijk[2]==grid->sizes[2]-1) && sys->staticFront)
+        /* Left side and Corner */
+        if(ijk[0]==0)
+          {
+            if(ijk[1]==0)
+              {
+                if(sys->staticLeftBottom)
+                  add=True;
+              }
+            else if(ijk[1]==grid->sizes[1]-1)
+              {
+                if(sys->staticLeftTop)
+                  add=True;
+              }
+            else if(sys->staticLeft)
+              add=True;
+          }
+        /* Right side and corner */
+        else if(ijk[0]==grid->sizes[0]-1)
+          {
+            if(ijk[1]==0)
+              {
+                if(sys->staticRightBottom)
+                  add=True;
+              }
+            else if(ijk[1]==grid->sizes[1]-1)
+              {
+                if(sys->staticRightTop)
+                  add=True;
+              }
+            else if(sys->staticRight)
+              add=True;
+          }
+        /* Top and Bottom */
+        else if((ijk[1]==0 && sys->staticBottom)
+                || (ijk[1]==grid->sizes[0]-1 && sys->staticTop))
           add=True;
       }
+    /* 3D */
+    else if(sys->mesh->topo->nDims == 3)
+      {
+        /* Left side */
+        if(ijk[0]==0)
+          {
+            /* Left Bottom */
+            if(ijk[1]==0)
+              {
+                if(ijk[2]==0)
+                  {
+                    if(sys->staticLeftBottomBack)
+                      add=True;
+                  }
+                else if(ijk[2]==grid->sizes[2]-1)
+                  {
+                    if(sys->staticLeftBottomFront)
+                      add=True;
+                  }
+                else if(sys->staticLeftBottom)
+                  add=True;
+              }
+            /* Left Top */
+            else if(ijk[1]==grid->sizes[1]-1)
+              {
+                if(ijk[2]==0)
+                  {
+                    if(sys->staticLeftTopBack)
+                      add=True;
+                  }
+                else if(ijk[2]==grid->sizes[2]-1)
+                  {
+                    if(sys->staticLeftTopFront)
+                      add=True;
+                  }
+                else if(sys->staticLeftTop)
+                  add=True;
+              }
+            /* Left Back */
+            else if(ijk[2]==0)
+              {
+                if(sys->staticLeftBack)
+                  add=True;
+              }
+            /* Left Front */
+            else if(ijk[2]==grid->sizes[2]-1)
+              {
+                if(sys->staticLeftFront)
+                  add=True;
+              }
+            /* Left */
+            else if(sys->staticLeft)
+              add=True;
+          }
+        /* Right side */
+        else if(ijk[0]==grid->sizes[0]-1)
+          {
+            /* Right Bottom */
+            if(ijk[1]==0)
+              {
+                if(ijk[2]==0)
+                  {
+                    if(sys->staticRightBottomBack)
+                      add=True;
+                  }
+                else if(ijk[2]==grid->sizes[2]-1)
+                  {
+                    if(sys->staticRightBottomFront)
+                      add=True;
+                  }
+                else if(sys->staticRightBottom)
+                  add=True;
+              }
+            /* Right Top */
+            else if(ijk[1]==grid->sizes[1]-1)
+              {
+                if(ijk[2]==0)
+                  {
+                    if(sys->staticRightTopBack)
+                      add=True;
+                  }
+                else if(ijk[2]==grid->sizes[2]-1)
+                  {
+                    if(sys->staticRightTopFront)
+                      add=True;
+                  }
+                else if(sys->staticRightTop)
+                  add=True;
+              }
+            /* Right Back */
+            else if(ijk[2]==0)
+              {
+                if(sys->staticRightBack)
+                  add=True;
+              }
+            /* Right Front */
+            else if(ijk[2]==grid->sizes[2]-1)
+              {
+                if(sys->staticRightFront)
+                  add=True;
+              }
+            /* Right */
+            else if(sys->staticRight)
+              add=True;
+          }
+        /* Bottom */
+        else if(ijk[1]==0)
+          {
+            if(ijk[2]==0)
+              {
+                if(sys->staticBottomBack)
+                  add=True;
+              }
+            else if(ijk[2]==grid->sizes[2]-1)
+              {
+                if(sys->staticBottomFront)
+                  add=True;
+              }
+            else if(sys->staticBottom)
+              add=True;
+          }
+        /* Top */
+        else if(ijk[1]==grid->sizes[1]-1)
+          {
+            if(ijk[2]==0)
+              {
+                if(sys->staticTopBack)
+                  add=True;
+              }
+            else if(ijk[2]==grid->sizes[2]-1)
+              {
+                if(sys->staticTopFront)
+                  add=True;
+              }
+            else if(sys->staticTop)
+              add=True;
+          }
+        /*  Front and Back */
+        else if((ijk[2]==0 && sys->staticBack)
+                || (ijk[2]==grid->sizes[2]-1 && sys->staticFront))
+          add=True;
+      }
+
     if( add )
       IndexSet_Add( set, n_i );
   }



More information about the cig-commits mailing list