[cig-commits] r21348 - short/3D/PyLith/branches/v1.8-mixedfault/libsrc/pylith/faults

rjolivet at geodynamics.org rjolivet at geodynamics.org
Fri Feb 8 10:05:51 PST 2013


Author: rjolivet
Date: 2013-02-08 10:05:51 -0800 (Fri, 08 Feb 2013)
New Revision: 21348

Modified:
   short/3D/PyLith/branches/v1.8-mixedfault/libsrc/pylith/faults/FaultCohesiveDynKin.cc
Log:
FaultCohesiveDynKin compiles

Modified: short/3D/PyLith/branches/v1.8-mixedfault/libsrc/pylith/faults/FaultCohesiveDynKin.cc
===================================================================
--- short/3D/PyLith/branches/v1.8-mixedfault/libsrc/pylith/faults/FaultCohesiveDynKin.cc	2013-02-08 15:52:27 UTC (rev 21347)
+++ short/3D/PyLith/branches/v1.8-mixedfault/libsrc/pylith/faults/FaultCohesiveDynKin.cc	2013-02-08 18:05:51 UTC (rev 21348)
@@ -315,17 +315,12 @@
   assert(!globalOrder.isNull());
 
   // Get the dkSelector
-  //if (_dkSelector) {
+  assert(0 != _dkSelector);
   topology::Field<topology::SubMesh>& dk = _fields->get("Dynamic Kinematic Selector");
   _dkSelector->dk(&dk);
   const ALE::Obj<RealSection>& dkSelSection = dk.section();
   assert(!dkSelSection.isNull());
-  //}
-  //else { // should never be here
-  //  std::ostringstream msg;                                           
-  //  msg << "No Dynamic Kinematic Selector available.";         
-  //  throw std::runtime_error(msg.str());
-  //} 
+  PylithScalar dkSelLim = 0.5;
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -384,11 +379,21 @@
       dispTIncrSection->restrictPoint(v_lagrange);
     assert(dispTIncrVertexL);
 
-    if (dkSelSection[iVertex] > 0.5) { // Kinematic Case
+    assert(spaceDim == dkSelSection->getFiberDimension(v_fault));
+    const PylithScalar* dkSelVertex = dkSelSection->restrictPoint(v_fault);
+    assert(dkSelVertex);
 
+    // Create the Relative displacement (empty).
+    const PylithScalar* dispRelVertex;
+
+    // Create the orientation fault (empty).
+    const PylithScalar* orientationVertex;
+
+    if (dkSelVertex[0] > dkSelLim) { // Kinematic Case
+
       // Get relative dislplacement at fault vertex.
       assert(spaceDim == dispRelSection->getFiberDimension(v_fault));
-      const PylithScalar* dispRelVertex = dispRelSection->restrictPoint(v_fault);
+      dispRelVertex = dispRelSection->restrictPoint(v_fault);
       assert(dispRelVertex);
 
     } else { // Dynamic Case
@@ -408,7 +413,7 @@
 
       // Get orientation associated with fault vertex.
       assert(spaceDim*spaceDim == orientationSection->getFiberDimension(v_fault));
-      const PylithScalar* orientationVertex = orientationSection->restrictPoint(v_fault);
+      orientationVertex = orientationSection->restrictPoint(v_fault);
       assert(orientationVertex);
 
     } // if/else
@@ -426,7 +431,7 @@
       dispTpdtVertexL[iDim] = dispTVertexL[iDim] + dispTIncrVertexL[iDim];
     } // for
     
-    if (dkSelSection[iVertex] > 0.5) { // Kinematic Case
+    if (dkSelVertex[0] > dkSelLim) { // Kinematic Case
 
       residualVertexN = areaVertex * dispTpdtVertexL;
       residualVertexP = -residualVertexN;
@@ -488,7 +493,7 @@
 	   residualSection->getFiberDimension(v_positive));
     residualSection->updateAddPoint(v_positive, &residualVertexP[0]);
 
-    if (dkSelSection[iVertex] > 0.5) { // Kinematic Case
+    if (dkSelVertex[0] > dkSelLim) { // Kinematic Case
 
       assert(residualVertexL.size() == 
             residualSection->getFiberDimension(v_lagrange));
@@ -668,16 +673,12 @@
   scalar_array dDispRelVertex(spaceDim);
 
   // Get the dkSelector
-  if (_dkSelector) {
-    topology::Field<topology::SubMesh>& dk = _fields->get("Dynamic Kinematic Selector");
-    _dkSelector->dk(&dk);
-    const ALE::Obj<RealSection>& dkSelSection = dk.section();
-    assert(!dkSelSection.isNull());
-  } else { // should never be here
-    std::ostringstream msg;
-    msg << "No Dynamic Kinematic Selector available.";
-    throw std::runtime_error(msg.str());
-  }
+  assert(0 != _dkSelector);
+  topology::Field<topology::SubMesh>& dk = _fields->get("Dynamic Kinematic Selector");
+  _dkSelector->dk(&dk);
+  const ALE::Obj<RealSection>& dkSelSection = dk.section();
+  assert(!dkSelSection.isNull());
+  PylithScalar dkSelLim = 0.5;
 
   scalar_array slipTpdtVertex(spaceDim);
   const ALE::Obj<RealSection>& dispRelSection = 
@@ -740,14 +741,19 @@
 
   const int numVertices = _cohesiveVertices.size();
   for (int iVertex=0; iVertex < numVertices; ++iVertex) {
-    if (dkSelSection[iVertex] < 0.5) // Dynamic Case
-      continue;
 
     const int v_lagrange = _cohesiveVertices[iVertex].lagrange;
     const int v_fault = _cohesiveVertices[iVertex].fault;
     const int v_negative = _cohesiveVertices[iVertex].negative;
     const int v_positive = _cohesiveVertices[iVertex].positive;
 
+    // Check if this vertex is dynamic
+    assert(spaceDim == dkSelSection->getFiberDimension(v_fault));
+    const PylithScalar* dkSelVertex = dkSelSection->restrictPoint(v_fault);
+    assert(dkSelVertex);
+    if (dkSelVertex[0] < dkSelLim) // Dynamic Case
+      continue;
+
     // Get displacement values
     assert(spaceDim == dispTSection->getFiberDimension(v_negative));
     const PylithScalar* dispTVertexN = dispTSection->restrictPoint(v_negative);
@@ -1048,14 +1054,19 @@
   assert(!globalOrder.isNull());
 
   for (int iVertex=0; iVertex < numVertices; ++iVertex) {
-    if (dkSelSection[iVertex] < 0.5 ) // Dynamic Case
-      continue;
 
     const int v_fault = _cohesiveVertices[iVertex].fault;
     const int v_lagrange = _cohesiveVertices[iVertex].lagrange;
     const int v_negative = _cohesiveVertices[iVertex].negative;
     const int v_positive = _cohesiveVertices[iVertex].positive;
 
+    // Check if this vertex is dynamic
+    assert(spaceDim == dkSelSection->getFiberDimension(v_fault));
+    const PylithScalar* dkSelVertex = dkSelSection->restrictPoint(v_fault);
+    assert(dkSelVertex);
+    if (dkSelVertex[0] < dkSelLim) // Dynamic Case
+      continue;
+
     // Get change in Lagrange multiplier computed from friction criterion.
     dLagrangeTpdtSection->restrictPoint(v_fault, &dLagrangeTpdtVertex[0],
 					dLagrangeTpdtVertex.size());



More information about the CIG-COMMITS mailing list