[cig-commits] r13020 - short/3D/PyLith/trunk/pylith/problems

brad at geodynamics.org brad at geodynamics.org
Sun Oct 12 11:12:33 PDT 2008


Author: brad
Date: 2008-10-12 11:12:32 -0700 (Sun, 12 Oct 2008)
New Revision: 13020

Modified:
   short/3D/PyLith/trunk/pylith/problems/Formulation.py
Log:
Fixed order of integrateJaocbian() and integrateJacobianAssembled() for correct overall behavior. Insert assembled data first, then add in contributions.

Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py	2008-10-11 04:40:22 UTC (rev 13019)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py	2008-10-12 18:12:32 UTC (rev 13020)
@@ -416,21 +416,21 @@
     import pylith.utils.petsc as petsc
     petsc.mat_setzero(self.jacobian)
 
-    # Add in contributions that require assembly
+    # Add in contributions that do not require assembly
+    self._info.log("Reforming assembled portion of Jacobian of operator.")
     for integrator in self.integrators:
       integrator.timeStep(dt)
-      integrator.integrateJacobian(self.jacobian, t+dt, self.fields)
+      integrator.integrateJacobianAssembled(self.jacobian, t+dt,
+                                            self.fields)
       self._debug.log(resourceUsageString()) # TEMPORARY
-
     self._info.log("Assembling Jacobian of operator.")
     petsc.mat_assemble(self.jacobian)
 
-    self._info.log("Reforming assembled portion of Jacobian of operator.")
-    # Add in contributions that do not require assembly
+    # Add in contributions that require assembly
     for integrator in self.integrators:
-      integrator.integrateJacobianAssembled(self.jacobian, t+dt, self.fields)
+      integrator.timeStep(dt)
+      integrator.integrateJacobian(self.jacobian, t+dt, self.fields)
       self._debug.log(resourceUsageString()) # TEMPORARY
-
     self._info.log("Assembling Jacobian of operator.")
     petsc.mat_assemble(self.jacobian)
 
@@ -470,13 +470,13 @@
     for integrator in self.integrators:
       integrator.timeStep(dt)
       integrator.integrateResidual(residual, t, self.fields)
-
     self._info.log("Completing residual.")
     bindings.completeSection(self.mesh.cppHandle, residual)
 
+    # Add in contributions that do not require assembly
     self._info.log("Integrating assembled residual term in operator.")
-    # Add in contributions that do not require assembly
     for integrator in self.integrators:
+      integrator.timeStep(dt)
       integrator.integrateResidualAssembled(residual, t, self.fields)
 
     return



More information about the cig-commits mailing list