[cig-commits] r6653 - short/3D/PyLith/trunk/libsrc/faults

brad at geodynamics.org brad at geodynamics.org
Tue Apr 24 11:55:27 PDT 2007


Author: brad
Date: 2007-04-24 11:55:27 -0700 (Tue, 24 Apr 2007)
New Revision: 6653

Modified:
   short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc
Log:
Switched to specifying parameters and slip field on section over fault mesh (should be slightly more efficient).

Modified: short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc	2007-04-24 18:40:36 UTC (rev 6652)
+++ short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc	2007-04-24 18:55:27 UTC (rev 6653)
@@ -69,7 +69,7 @@
   // Get fault vertices
   const ALE::Obj<Mesh::label_sequence>& vertices = faultMesh->depthStratum(0);
 
-  // Create sections for fields
+  // Create and allocate sections for parameters
   delete _parameters; 
   _parameters = new feassemble::ParameterManager(faultMesh);
   if (0 == _parameters)
@@ -82,33 +82,25 @@
   const ALE::Obj<real_section_type>& finalSlip = 
     _parameters->getReal("final slip");
   assert(!finalSlip.isNull());
+  finalSlip->setFiberDimension(faultMesh->depthStratum(0), 3);
+  faultMesh->allocate(finalSlip);
 
   // Parameter: slip initiation time
   _parameters->addReal("slip time");
   const ALE::Obj<real_section_type>& slipTime = 
     _parameters->getReal("slip time");
   assert(!slipTime.isNull());
+  slipTime->setFiberDimension(faultMesh->depthStratum(0), 1);
+  faultMesh->allocate(slipTime);
 
   // Parameter: peak slip rate
   _parameters->addReal("peak rate");
   const ALE::Obj<real_section_type>& peakRate = 
     _parameters->getReal("peak rate");
   assert(!peakRate.isNull());
-  
-  // Allocate parameters
-  const Mesh::label_sequence::iterator vBegin = vertices->begin();
-  const Mesh::label_sequence::iterator vEnd = vertices->end();
-  for (Mesh::label_sequence::iterator v_iter=vBegin;
-       v_iter != vEnd;
-       ++v_iter) {
-    finalSlip->setFiberDimension(*v_iter, 3);
-    slipTime->setFiberDimension(*v_iter, 1);
-    peakRate->setFiberDimension(*v_iter, 1);
-  } // for
-  faultMesh->allocate(finalSlip);
-  faultMesh->allocate(slipTime);
+  peakRate->setFiberDimension(faultMesh->depthStratum(0), 1);
   faultMesh->allocate(peakRate);
-
+  
   // Open databases and set query values
   _dbFinalSlip->open();
   const char* slipValues[] = {"strike-slip", "dip-slip", "fault-opening"};
@@ -132,6 +124,8 @@
   double slipData[3];
   double slipTimeData;
   double peakRateData;
+  const Mesh::label_sequence::iterator vBegin = vertices->begin();
+  const Mesh::label_sequence::iterator vEnd = vertices->end();
   for (Mesh::label_sequence::iterator v_iter=vBegin; 
        v_iter != vEnd;
        ++v_iter) {
@@ -179,10 +173,7 @@
   _dbPeakRate->close();
 
   // Allocate slip field
-  for (Mesh::label_sequence::iterator v_iter=vBegin;
-       v_iter != vEnd;
-       ++v_iter)
-    _slipField->setFiberDimension(*v_iter, 3);
+  _slipField->setFiberDimension(faultMesh->depthStratum(0), 3);
   faultMesh->allocate(_slipField);
 } // initialize
 



More information about the cig-commits mailing list