[cig-commits] [commit] knepley/upgrade-petsc-interface: Update elasticity integrators to use subfield in visitors for optimization. (53ca3eb)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Fri Jan 17 17:20:42 PST 2014


Repository : ssh://geoshell/pylith

On branch  : knepley/upgrade-petsc-interface
Link       : https://github.com/geodynamics/pylith/compare/7a219dfd15d0b9fda084e39111a258bc97b47814...a289b5b9fb88708d2d1cdfbaf7bd2f3b7c8d91a4

>---------------------------------------------------------------

commit 53ca3ebb858fee34b4566f360b8d8295cec823f4
Author: Brad Aagaard <baagaard at usgs.gov>
Date:   Fri Jan 17 17:18:27 2014 -0800

    Update elasticity integrators to use subfield in visitors for optimization.


>---------------------------------------------------------------

53ca3ebb858fee34b4566f360b8d8295cec823f4
 libsrc/pylith/feassemble/ElasticityExplicit.cc       | 13 ++++++-------
 .../pylith/feassemble/ElasticityExplicitLgDeform.cc  | 11 ++++++-----
 libsrc/pylith/feassemble/ElasticityExplicitTet4.cc   | 13 ++++++-------
 libsrc/pylith/feassemble/ElasticityExplicitTri3.cc   | 20 +++++++++-----------
 libsrc/pylith/feassemble/ElasticityImplicit.cc       | 10 +++++-----
 .../pylith/feassemble/ElasticityImplicitLgDeform.cc  | 10 +++++-----
 libsrc/pylith/feassemble/IntegratorElasticity.cc     |  4 ++--
 7 files changed, 39 insertions(+), 42 deletions(-)

diff --git a/libsrc/pylith/feassemble/ElasticityExplicit.cc b/libsrc/pylith/feassemble/ElasticityExplicit.cc
index 5f9a400..23449f9 100644
--- a/libsrc/pylith/feassemble/ElasticityExplicit.cc
+++ b/libsrc/pylith/feassemble/ElasticityExplicit.cc
@@ -208,19 +208,19 @@ pylith::feassemble::ElasticityExplicit::integrateResidual(const topology::Field&
 
   // Setup field visitors.
   scalar_array accCell(numBasis*spaceDim);
-  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"));
+  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"), "displacement");
   accVisitor.optimizeClosure();
 
   scalar_array velCell(numBasis*spaceDim);
-  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"));
+  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"), "displacement");
   velVisitor.optimizeClosure();
 
   scalar_array dispCell(numBasis*spaceDim);
   scalar_array dispAdjCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
-  topology::VecVisitorMesh residualVisitor(residual);
+  topology::VecVisitorMesh residualVisitor(residual, "displacement");
   residualVisitor.optimizeClosure();
 
   scalar_array coordsCell(numBasis*spaceDim); // :KULDGE: Update numBasis to numCorners after implementing higher order
@@ -441,9 +441,8 @@ pylith::feassemble::ElasticityExplicit::integrateJacobian(topology::Field* jacob
   // Setup field visitors.
   scalar_array valuesIJ(numBasis);
 
-  topology::VecVisitorMesh jacobianVisitor(*jacobian);
-  PetscScalar* jacobianCell = NULL;
-  PetscInt jacobianSize = 0;
+  topology::VecVisitorMesh jacobianVisitor(*jacobian, "displacement");
+  // Don't optimize closure since we compute the Jacobian only once.
 
   scalar_array coordsCell(numBasis*spaceDim); // :KLUDGE: numBasis to numCorners after switching to higher order
   topology::CoordsVisitor coordsVisitor(dmMesh);
diff --git a/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc b/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc
index 8116c9d..9e32c89 100644
--- a/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc
+++ b/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc
@@ -203,19 +203,19 @@ pylith::feassemble::ElasticityExplicitLgDeform::integrateResidual(const topology
 
   // Setup field visitors.
   scalar_array accCell(numBasis*spaceDim);
-  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"));
+  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"), "displacement");
   accVisitor.optimizeClosure();
 
   scalar_array velCell(numBasis*spaceDim);
-  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"));
+  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"), "displacement");
   velVisitor.optimizeClosure();
 
   scalar_array dispCell(numBasis*spaceDim);
   scalar_array dispAdjCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
-  topology::VecVisitorMesh residualVisitor(residual);
+  topology::VecVisitorMesh residualVisitor(residual, "displacement");
   residualVisitor.optimizeClosure();
 
   scalar_array coordsCell(numBasis*spaceDim); // :KULDGE: Update numBasis to numCorners after implementing higher order
@@ -396,7 +396,8 @@ pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(topology::Fiel
 
   // Setup field visitors.
   scalar_array valuesIJ(numBasis);
-  topology::VecVisitorMesh jacobianVisitor(*jacobian);
+  topology::VecVisitorMesh jacobianVisitor(*jacobian, "displacement");
+  // Don't optimize closure since we compute the Jacobian only once.
 
   scalar_array coordsCell(numBasis*spaceDim); // :KULDGE: Update numBasis to numCorners after implementing higher order
   topology::CoordsVisitor coordsVisitor(dmMesh);
diff --git a/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc b/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc
index 63052d9..af69f14 100644
--- a/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc
+++ b/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc
@@ -199,19 +199,19 @@ pylith::feassemble::ElasticityExplicitTet4::integrateResidual(const topology::Fi
 
   // Setup field visitors.
   scalar_array accCell(numBasis*spaceDim);
-  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"));
+  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"), "displacement");
   accVisitor.optimizeClosure();
 
   scalar_array velCell(numBasis*spaceDim);
-  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"));
+  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"), "displacement");
   velVisitor.optimizeClosure();
 
   scalar_array dispCell(numBasis*spaceDim);
   scalar_array dispAdjCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
   
-  topology::VecVisitorMesh residualVisitor(residual);
+  topology::VecVisitorMesh residualVisitor(residual, "displacement");
   residualVisitor.optimizeClosure();
 
   scalar_array coordsCell(numCorners*spaceDim);
@@ -487,9 +487,8 @@ pylith::feassemble::ElasticityExplicitTet4::integrateJacobian(topology::Field* j
   assert(dt > 0);
 
   // Setup visitors.
-  topology::VecVisitorMesh jacobianVisitor(*jacobian);
-  PetscScalar* jacobianCell = NULL;
-  PetscInt jacobianSize = 0;
+  topology::VecVisitorMesh jacobianVisitor(*jacobian, "displacement");
+  // Don't optimize closure since we compute the Jacobian only once.
 
   scalar_array coordsCell(numCorners*spaceDim);
   topology::CoordsVisitor coordsVisitor(dmMesh);
diff --git a/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc b/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc
index 12c759d..3668951 100644
--- a/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc
+++ b/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc
@@ -199,19 +199,19 @@ pylith::feassemble::ElasticityExplicitTri3::integrateResidual(const topology::Fi
 
   // Setup field visitors.
   scalar_array accCell(numBasis*spaceDim);
-  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"));
+  topology::VecVisitorMesh accVisitor(fields->get("acceleration(t)"), "displacement");
   accVisitor.optimizeClosure();
 
   scalar_array velCell(numBasis*spaceDim);
-  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"));
+  topology::VecVisitorMesh velVisitor(fields->get("velocity(t)"), "displacement");
   velVisitor.optimizeClosure();
 
   scalar_array dispCell(numBasis*spaceDim);
   scalar_array dispAdjCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
   
-  topology::VecVisitorMesh residualVisitor(residual);
+  topology::VecVisitorMesh residualVisitor(residual, "displacement");
   residualVisitor.optimizeClosure();
 
   scalar_array coordsCell(numCorners*spaceDim);
@@ -403,10 +403,9 @@ pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(topology::Jacobian
 // ----------------------------------------------------------------------
 // Compute matrix associated with operator.
 void
-pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(
-			    topology::Field* jacobian,
-			    const PylithScalar t,
-			    topology::SolutionFields* fields)
+pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(topology::Field* jacobian,
+							      const PylithScalar t,
+							      topology::SolutionFields* fields)
 { // integrateJacobian
   PYLITH_METHOD_BEGIN;
 
@@ -450,9 +449,8 @@ pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(
   assert(dt > 0);
 
   // Setup visitors.
-  topology::VecVisitorMesh jacobianVisitor(*jacobian);
-  PetscScalar* jacobianCell = NULL;
-  PetscInt jacobianSize = 0;
+  topology::VecVisitorMesh jacobianVisitor(*jacobian, "displacement");
+  // Don't optimize closure since we compute the Jacobian only once.
 
   scalar_array coordsCell(numCorners*spaceDim);
   topology::CoordsVisitor coordsVisitor(dmMesh);
diff --git a/libsrc/pylith/feassemble/ElasticityImplicit.cc b/libsrc/pylith/feassemble/ElasticityImplicit.cc
index 20a9936..f8e9c10 100644
--- a/libsrc/pylith/feassemble/ElasticityImplicit.cc
+++ b/libsrc/pylith/feassemble/ElasticityImplicit.cc
@@ -172,14 +172,14 @@ pylith::feassemble::ElasticityImplicit::integrateResidual(const topology::Field&
 
   // Setup field visitors.
   scalar_array dispCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
   scalar_array dispIncrCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"));
+  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"), "displacement");
   dispIncrVisitor.optimizeClosure();
 
-  topology::VecVisitorMesh residualVisitor(residual);
+  topology::VecVisitorMesh residualVisitor(residual, "displacement");
   residualVisitor.optimizeClosure();
 
   scalar_array coordsCell(numBasis*spaceDim); // :KLUDGE: numBasis to numCorners after switching to higher order
@@ -344,11 +344,11 @@ pylith::feassemble::ElasticityImplicit::integrateJacobian(topology::Jacobian* ja
 
   // Setup field visitors.
   scalar_array dispCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
   scalar_array dispIncrCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"));
+  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"), "displacement");
   dispIncrVisitor.optimizeClosure();
 
   scalar_array coordsCell(numBasis*spaceDim); // :KLUDGE: numBasis to numCorners after switching to higher order
diff --git a/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc b/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc
index 8ef5fcd..0d8192e 100644
--- a/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc
+++ b/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc
@@ -178,14 +178,14 @@ pylith::feassemble::ElasticityImplicitLgDeform::integrateResidual(
 
   // Setup field visitors.
   scalar_array dispCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
   scalar_array dispIncrCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"));
+  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"), "displacement");
   dispIncrVisitor.optimizeClosure();
 
-  topology::VecVisitorMesh residualVisitor(residual);
+  topology::VecVisitorMesh residualVisitor(residual, "displacement");
   residualVisitor.optimizeClosure();
 
   scalar_array coordsCell(numBasis*spaceDim); // :KULDGE: Update numBasis to numCorners after implementing higher order
@@ -357,11 +357,11 @@ pylith::feassemble::ElasticityImplicitLgDeform::integrateJacobian(topology::Jaco
 
   // Setup field visitors.
   scalar_array dispCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
   scalar_array dispIncrCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"));
+  topology::VecVisitorMesh dispIncrVisitor(fields->get("dispIncr(t->t+dt)"), "displacement");
   dispIncrVisitor.optimizeClosure();
 
   scalar_array coordsCell(numBasis*spaceDim); // :KULDGE: Update numBasis to numCorners after implementing higher order
diff --git a/libsrc/pylith/feassemble/IntegratorElasticity.cc b/libsrc/pylith/feassemble/IntegratorElasticity.cc
index aca4ae9..3cff7fb 100644
--- a/libsrc/pylith/feassemble/IntegratorElasticity.cc
+++ b/libsrc/pylith/feassemble/IntegratorElasticity.cc
@@ -201,7 +201,7 @@ pylith::feassemble::IntegratorElasticity::updateStateVars(const PylithScalar t,
 
   // Setup visitors.
   scalar_array dispCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
   scalar_array coordsCell(numCorners*spaceDim);
@@ -534,7 +534,7 @@ pylith::feassemble::IntegratorElasticity::_calcStrainStressField(topology::Field
 
   // Setup field visitors.
   scalar_array dispCell(numBasis*spaceDim);
-  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"));
+  topology::VecVisitorMesh dispVisitor(fields->get("disp(t)"), "displacement");
   dispVisitor.optimizeClosure();
 
   topology::VecVisitorMesh fieldVisitor(*field);



More information about the CIG-COMMITS mailing list