[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