[cig-commits] r6509 - in short/3D/PyLith/branches/pylith-0.8/pylith3d: libpylith3d module pylith3d

leif at geodynamics.org leif at geodynamics.org
Thu Apr 5 14:54:56 PDT 2007


Author: leif
Date: 2007-04-05 14:54:55 -0700 (Thu, 05 Apr 2007)
New Revision: 6509

Modified:
   short/3D/PyLith/branches/pylith-0.8/pylith3d/libpylith3d/read_fuldat.f
   short/3D/PyLith/branches/pylith-0.8/pylith3d/module/libpylith3d.cc
   short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/ElementTypeDef.py
   short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/PyLith.py
   short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/constants.py
Log:
Renamed almost all the variables in the Python code and in the C++
bindings such that the variable names are consistent with the Fortran
code.  E.g., rotationUnits -> rotation_units, numberRotationEntries ->
numrot.  This makes the code much easier to understand and much easier
to follow as control flows from Python through C++ into Fortran, and
back again.

For instance, if I grep for 'numrot' (actually I use 'gid' from the
'mkid' package), I now get matches in the Python and C++ code, and I
can easily see that 'numrot' is defined as the return value of
scan_skew().

Sample matches from the output of "gid numrot":

# ---- snip ----
PyLith.py:558:         self.numrot = pylith3d.scan_skew(
# [...]
../module/libpylith3d.cc:5319:   scan_skew_f(&numrot,
../module/libpylith3d.cc:5336:     << "numrot:" << numrot
../module/libpylith3d.cc:5341:   return Py_BuildValue((char *) "i", numrot);
# [...]
../libpylith3d/scan_skew.f:31:       subroutine scan_skew(numrot,kr,rotation_units,skfile,ierr,
# [...]
# ---- snip ----

The light is so much better now!


Modified: short/3D/PyLith/branches/pylith-0.8/pylith3d/libpylith3d/read_fuldat.f
===================================================================
--- short/3D/PyLith/branches/pylith-0.8/pylith3d/libpylith3d/read_fuldat.f	2007-04-04 20:28:40 UTC (rev 6508)
+++ short/3D/PyLith/branches/pylith-0.8/pylith3d/libpylith3d/read_fuldat.f	2007-04-05 21:54:55 UTC (rev 6509)
@@ -29,7 +29,7 @@
 c
 c
       subroutine read_fuldat(iprint,icontr,icode,ncycle,lastep,kr,
-     & fdfile,ierr,errstrng)
+     & fofile,ierr,errstrng)
 c
 c........reads data on time steps where full outputs are desired
 c
@@ -49,7 +49,7 @@
 c
       integer icontr,icode,ncycle,lastep,kr,ierr
       integer iprint(icontr)
-      character fdfile*(*),errstrng*(*)
+      character fofile*(*),errstrng*(*)
 c
 c...  local variables
 c
@@ -60,7 +60,7 @@
 c...  read time steps at which a full output is desired
 c
       if(lastep.ne.izero.and.icode.eq.ithree) then
-        open(kr,file=fdfile,status="old",err=20)
+        open(kr,file=fofile,status="old",err=20)
         call pskip(kr)
         do i=1,icontr
           read(kr,*,err=30,end=30) iprint(i)

Modified: short/3D/PyLith/branches/pylith-0.8/pylith3d/module/libpylith3d.cc
===================================================================
--- short/3D/PyLith/branches/pylith-0.8/pylith3d/module/libpylith3d.cc	2007-04-04 20:28:40 UTC (rev 6508)
+++ short/3D/PyLith/branches/pylith-0.8/pylith3d/module/libpylith3d.cc	2007-04-05 21:54:55 UTC (rev 6509)
@@ -50,182 +50,182 @@
   PyObject* pyA;                             // Sparse matrix array
   PyObject* pyRhs;
   PyObject* pySol;
-  PyObject* pyPointerToBextern;               // Force vectors
-  PyObject* pyPointerToBtraction;
-  PyObject* pyPointerToBgravity;
-  PyObject* pyPointerToBconcForce;
-  PyObject* pyPointerToBintern;
-  PyObject* pyPointerToBresid;
-  PyObject* pyPointerToBwink;
-  PyObject* pyPointerToBwinkx;
-  PyObject* pyPointerToDispVec;
-  PyObject* pyPointerToDprev;
-  PyObject* pyPointerToListArrayNforce;
-  PyObject* pyPointerToListArrayGrav;
-  PyObject* pyPointerToX;                     // Global arrays
-  PyObject* pyPointerToD;
-  PyObject* pyPointerToDeld;
-  PyObject* pyPointerToDcur;
-  PyObject* pyPointerToId;
-  PyObject* pyPointerToIwink;
-  PyObject* pyPointerToWink;
-  PyObject* pyPointerToListArrayNsysdat;
-  PyObject* pyPointerToListArrayIddmat;
-  PyObject* pyPointerToIbond;                 // Boundary condition arrays
-  PyObject* pyPointerToBond;
-  PyObject* pyPointerToDx;                    // Slippery node arrays
-  PyObject* pyPointerToDeldx;
-  PyObject* pyPointerToDxcur;
-  PyObject* pyPointerToDiforc;
-  PyObject* pyPointerToIdx;
-  PyObject* pyPointerToIwinkx;
-  PyObject* pyPointerToWinkx;
-  PyObject* pyPointerToIdslp;
-  PyObject* pyPointerToIpslp;
-  PyObject* pyPointerToIdhist;
-  PyObject* pyPointerToFault;                 // Split node arrays
-  PyObject* pyPointerToNfault;
-  PyObject* pyPointerToDfault;
-  PyObject* pyPointerToTfault;
-  PyObject* pyPointerToS;                     // Local stiffness matrix arrays
-  PyObject* pyPointerToStemp;
-  PyObject* pyPointerToState;                 // Element arrays
-  PyObject* pyPointerToDstate;
-  PyObject* pyPointerToState0;
-  PyObject* pyPointerToDmat;
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToLm;
-  PyObject* pyPointerToLmx;
-  PyObject* pyPointerToLmf;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToListArrayNpar;
-  PyObject* pyPointerToIelindx;
-  PyObject* pyPointerToTractionverts;         // Traction BC arrays
-  PyObject* pyPointerToTractionvals;
-  PyObject* pyPointerToGauss2d;
-  PyObject* pyPointerToSh2d;
-  PyObject* pyPointerToListArrayElementTypeInfo2d;
-  PyObject* pyPointerToListArrayPropertyList; // Material property arrays
-  PyObject* pyPointerToMaterialModelInfo;
-  PyObject* pyPointerToGauss;                 // Element type arrays
-  PyObject* pyPointerToSh;
-  PyObject* pyPointerToShj;
-  PyObject* pyPointerToListArrayElementTypeInfo;
-  PyObject* pyPointerToHistry;                // Time information
-  PyObject* pyPointerToListArrayRtimdat;
-  PyObject* pyPointerToListArrayNtimdat;
-  PyObject* pyPointerToListArrayNvisdat;
-  PyObject* pyPointerToMaxstp;
-  PyObject* pyPointerToDelt;
-  PyObject* pyPointerToAlfa;
-  PyObject* pyPointerToMaxit;
-  PyObject* pyPointerToNtdinit;
-  PyObject* pyPointerToLgdef;
-  PyObject* pyPointerToUtol;
-  PyObject* pyPointerToFtol;
-  PyObject* pyPointerToEtol;
-  PyObject* pyPointerToItmax;
-  PyObject* pyPointerToListArrayRgiter;       // Iterative solution information
-  PyObject* pyPointerToSkew;                  // Skew rotation information
-  PyObject* pyPointerToListArrayNcodat;       // Input/output information
-  PyObject* pyPointerToListArrayNunits;
-  PyObject* pyPointerToListArrayNprint;
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  char* asciiOutputFile;                      // Output file names
-  char* plotOutputFile;
-  char* ucdOutputRoot;
+  PyObject* py_bextern;               // Force vectors
+  PyObject* py_btraction;
+  PyObject* py_bgravity;
+  PyObject* py_bconcForce;
+  PyObject* py_bintern;
+  PyObject* py_bresid;
+  PyObject* py_bwink;
+  PyObject* py_bwinkx;
+  PyObject* py_dispVec;
+  PyObject* py_dprev;
+  PyObject* py_nforce;
+  PyObject* py_grav;
+  PyObject* py_x;                             // Global arrays
+  PyObject* py_d;
+  PyObject* py_deld;
+  PyObject* py_dcur;
+  PyObject* py_id;
+  PyObject* py_iwink;
+  PyObject* py_wink;
+  PyObject* py_nsysdat;
+  PyObject* py_iddmat;
+  PyObject* py_ibond;                 // Boundary condition arrays
+  PyObject* py_bond;
+  PyObject* py_dx;                    // Slippery node arrays
+  PyObject* py_deldx;
+  PyObject* py_dxcur;
+  PyObject* py_diforc;
+  PyObject* py_idx;
+  PyObject* py_iwinkx;
+  PyObject* py_winkx;
+  PyObject* py_idslp;
+  PyObject* py_ipslp;
+  PyObject* py_idhist;
+  PyObject* py_fault;                 // Split node arrays
+  PyObject* py_nfault;
+  PyObject* py_dfault;
+  PyObject* py_tfault;
+  PyObject* py_s;                     // Local stiffness matrix arrays
+  PyObject* py_stemp;
+  PyObject* py_state;                 // Element arrays
+  PyObject* py_dstate;
+  PyObject* py_state0;
+  PyObject* py_dmat;
+  PyObject* py_iens;
+  PyObject* py_lm;
+  PyObject* py_lmx;
+  PyObject* py_lmf;
+  PyObject* py_ivfamily;
+  PyObject* py_npar;
+  PyObject* py_ielindx;
+  PyObject* py_tractionverts;         // Traction BC arrays
+  PyObject* py_tractionvals;
+  PyObject* py_gauss2d;
+  PyObject* py_sh2d;
+  PyObject* py_infetype2d;
+  PyObject* py_prop; // Material property arrays
+  PyObject* py_infmatmod;
+  PyObject* py_gauss;                 // Element type arrays
+  PyObject* py_sh;
+  PyObject* py_shj;
+  PyObject* py_infetype;
+  PyObject* py_histry;                // Time information
+  PyObject* py_rtimdat;
+  PyObject* py_ntimdat;
+  PyObject* py_nvisdat;
+  PyObject* py_maxstp;
+  PyObject* py_delt;
+  PyObject* py_alfa;
+  PyObject* py_maxit;
+  PyObject* py_ntdinit;
+  PyObject* py_lgdef;
+  PyObject* py_utol;
+  PyObject* py_ftol;
+  PyObject* py_etol;
+  PyObject* py_itmax;
+  PyObject* py_rgiter;       // Iterative solution information
+  PyObject* py_skew;                  // Skew rotation information
+  PyObject* py_ncodat;       // Input/output information
+  PyObject* py_nunits;
+  PyObject* py_nprint;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  char* ofile;                      // Output file names
+  char* pfile;
+  char* ucdroot;
   int autoprestrStage, iterateEvent;          // PETSc logging
 
   int ok = PyArg_ParseTuple(args, "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOsssii:autoprestr",
                             &pyA,                             // Sparse matrix arrays
                             &pyRhs,
                             &pySol,
-                            &pyPointerToBextern,               // Force vectors
-                            &pyPointerToBtraction,
-                            &pyPointerToBgravity,
-                            &pyPointerToBconcForce,
-                            &pyPointerToBintern,
-                            &pyPointerToBresid,
-                            &pyPointerToBwink,
-                            &pyPointerToBwinkx,
-                            &pyPointerToDispVec,
-                            &pyPointerToDprev,
-                            &pyPointerToListArrayNforce,
-                            &pyPointerToListArrayGrav,
-                            &pyPointerToX,                     // Global arrays
-                            &pyPointerToD,
-                            &pyPointerToDeld,
-                            &pyPointerToDcur,
-                            &pyPointerToId,
-                            &pyPointerToIwink,
-                            &pyPointerToWink,
-                            &pyPointerToListArrayNsysdat,
-                            &pyPointerToListArrayIddmat,
-                            &pyPointerToIbond,                 // Boundary condition arrays
-                            &pyPointerToBond,
-                            &pyPointerToDx,                    // Slippery node arrays
-                            &pyPointerToDeldx,
-                            &pyPointerToDxcur,
-                            &pyPointerToDiforc,
-                            &pyPointerToIdx,
-                            &pyPointerToIwinkx,
-                            &pyPointerToWinkx,
-                            &pyPointerToIdslp,
-                            &pyPointerToIpslp,
-                            &pyPointerToIdhist,
-                            &pyPointerToFault,                 // Split node arrays
-                            &pyPointerToNfault,
-                            &pyPointerToDfault,
-                            &pyPointerToTfault,
-                            &pyPointerToS,                     // Local stiffness matrix arrays
-                            &pyPointerToStemp,
-                            &pyPointerToState,                 // Element arrays
-                            &pyPointerToDstate,
-                            &pyPointerToState0,
-                            &pyPointerToDmat,
-                            &pyPointerToIens,
-                            &pyPointerToLm,
-                            &pyPointerToLmx,
-                            &pyPointerToLmf,
-                            &pyPointerToIvfamily,
-                            &pyPointerToListArrayNpar,
-                            &pyPointerToIelindx,
-                            &pyPointerToTractionverts,         // Traction BC arrays
-                            &pyPointerToTractionvals,
-                            &pyPointerToGauss2d,
-                            &pyPointerToSh2d,
-                            &pyPointerToListArrayElementTypeInfo2d,
-                            &pyPointerToListArrayPropertyList, // Material property arrays
-                            &pyPointerToMaterialModelInfo,
-                            &pyPointerToGauss,                 // Element type arrays
-                            &pyPointerToSh,
-                            &pyPointerToShj,
-                            &pyPointerToListArrayElementTypeInfo,
-                            &pyPointerToHistry,                // Time information
-                            &pyPointerToListArrayRtimdat,
-                            &pyPointerToListArrayNtimdat,
-                            &pyPointerToListArrayNvisdat,
-                            &pyPointerToMaxstp,
-                            &pyPointerToDelt,
-                            &pyPointerToAlfa,
-                            &pyPointerToMaxit,
-                            &pyPointerToNtdinit,
-                            &pyPointerToLgdef,
-                            &pyPointerToUtol,
-                            &pyPointerToFtol,
-                            &pyPointerToEtol,
-                            &pyPointerToItmax,
-                            &pyPointerToListArrayRgiter,       // Iterative solution information
-                            &pyPointerToSkew,                  // Skew rotation information
-                            &pyPointerToListArrayNcodat,       // Input/output information
-                            &pyPointerToListArrayNunits,
-                            &pyPointerToListArrayNprint,
-                            &pyPointerToIstatout,
-                            &pyPointerToNstatout,
-                            &asciiOutputFile,                  // Output file names
-                            &plotOutputFile,
-                            &ucdOutputRoot,
+                            &py_bextern,               // Force vectors
+                            &py_btraction,
+                            &py_bgravity,
+                            &py_bconcForce,
+                            &py_bintern,
+                            &py_bresid,
+                            &py_bwink,
+                            &py_bwinkx,
+                            &py_dispVec,
+                            &py_dprev,
+                            &py_nforce,
+                            &py_grav,
+                            &py_x,                             // Global arrays
+                            &py_d,
+                            &py_deld,
+                            &py_dcur,
+                            &py_id,
+                            &py_iwink,
+                            &py_wink,
+                            &py_nsysdat,
+                            &py_iddmat,
+                            &py_ibond,                 // Boundary condition arrays
+                            &py_bond,
+                            &py_dx,                    // Slippery node arrays
+                            &py_deldx,
+                            &py_dxcur,
+                            &py_diforc,
+                            &py_idx,
+                            &py_iwinkx,
+                            &py_winkx,
+                            &py_idslp,
+                            &py_ipslp,
+                            &py_idhist,
+                            &py_fault,                 // Split node arrays
+                            &py_nfault,
+                            &py_dfault,
+                            &py_tfault,
+                            &py_s,                     // Local stiffness matrix arrays
+                            &py_stemp,
+                            &py_state,                 // Element arrays
+                            &py_dstate,
+                            &py_state0,
+                            &py_dmat,
+                            &py_iens,
+                            &py_lm,
+                            &py_lmx,
+                            &py_lmf,
+                            &py_ivfamily,
+                            &py_npar,
+                            &py_ielindx,
+                            &py_tractionverts,         // Traction BC arrays
+                            &py_tractionvals,
+                            &py_gauss2d,
+                            &py_sh2d,
+                            &py_infetype2d,
+                            &py_prop, // Material property arrays
+                            &py_infmatmod,
+                            &py_gauss,                 // Element type arrays
+                            &py_sh,
+                            &py_shj,
+                            &py_infetype,
+                            &py_histry,                // Time information
+                            &py_rtimdat,
+                            &py_ntimdat,
+                            &py_nvisdat,
+                            &py_maxstp,
+                            &py_delt,
+                            &py_alfa,
+                            &py_maxit,
+                            &py_ntdinit,
+                            &py_lgdef,
+                            &py_utol,
+                            &py_ftol,
+                            &py_etol,
+                            &py_itmax,
+                            &py_rgiter,       // Iterative solution information
+                            &py_skew,                  // Skew rotation information
+                            &py_ncodat,       // Input/output information
+                            &py_nunits,
+                            &py_nprint,
+                            &py_istatout,
+                            &py_nstatout,
+                            &ofile,                  // Output file names
+                            &pfile,
+                            &ucdroot,
                             &autoprestrStage,                  // PETSc logging
                             &iterateEvent);
 
@@ -240,184 +240,184 @@
   Mat      A = (Mat) PyCObject_AsVoidPtr(pyA);
   Vec      rhs = (Vec) PyCObject_AsVoidPtr(pyRhs);
   Vec      sol = (Vec) PyCObject_AsVoidPtr(pySol);
-  double*  pointerToBextern = (double*) PyCObject_AsVoidPtr(pyPointerToBextern);
-  double*  pointerToBtraction = (double*) PyCObject_AsVoidPtr(pyPointerToBtraction);
-  double*  pointerToBgravity = (double*) PyCObject_AsVoidPtr(pyPointerToBgravity);
-  double*  pointerToBconcForce = (double*) PyCObject_AsVoidPtr(pyPointerToBconcForce);
-  double*  pointerToBintern = (double*) PyCObject_AsVoidPtr(pyPointerToBintern);
-  double*  pointerToBresid = (double*) PyCObject_AsVoidPtr(pyPointerToBresid);
-  double*  pointerToBwink = (double*) PyCObject_AsVoidPtr(pyPointerToBwink);
-  double*  pointerToBwinkx = (double*) PyCObject_AsVoidPtr(pyPointerToBwinkx);
-  double*  pointerToDispVec = (double*) PyCObject_AsVoidPtr(pyPointerToDispVec);
-  double*  pointerToDprev = (double*) PyCObject_AsVoidPtr(pyPointerToDprev);
-  int*  pointerToListArrayNforce = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNforce);
-  double*  pointerToListArrayGrav = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayGrav);
-  double*  pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
-  double*  pointerToD = (double*) PyCObject_AsVoidPtr(pyPointerToD);
-  double*  pointerToDeld = (double*) PyCObject_AsVoidPtr(pyPointerToDeld);
-  double*  pointerToDcur = (double*) PyCObject_AsVoidPtr(pyPointerToDcur);
-  int*  pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
-  int*  pointerToIwink = (int*) PyCObject_AsVoidPtr(pyPointerToIwink);
-  double*  pointerToWink = (double*) PyCObject_AsVoidPtr(pyPointerToWink);
-  int*  pointerToListArrayNsysdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNsysdat);
-  int*  pointerToListArrayIddmat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayIddmat);
-  int*  pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
-  double*  pointerToBond = (double*) PyCObject_AsVoidPtr(pyPointerToBond);
-  double*  pointerToDx = (double*) PyCObject_AsVoidPtr(pyPointerToDx);
-  double*  pointerToDeldx = (double*) PyCObject_AsVoidPtr(pyPointerToDeldx);
-  double*  pointerToDxcur = (double*) PyCObject_AsVoidPtr(pyPointerToDxcur);
-  double*  pointerToDiforc = (double*) PyCObject_AsVoidPtr(pyPointerToDiforc);
-  int*  pointerToIdx = (int*) PyCObject_AsVoidPtr(pyPointerToIdx);
-  int*  pointerToIwinkx = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkx);
-  double*  pointerToWinkx = (double*) PyCObject_AsVoidPtr(pyPointerToWinkx);
-  int*  pointerToIdslp = (int*) PyCObject_AsVoidPtr(pyPointerToIdslp);
-  int*  pointerToIpslp = (int*) PyCObject_AsVoidPtr(pyPointerToIpslp);
-  int*  pointerToIdhist = (int*) PyCObject_AsVoidPtr(pyPointerToIdhist);
-  double*  pointerToFault = (double*) PyCObject_AsVoidPtr(pyPointerToFault);
-  int*  pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
-  double*  pointerToDfault = (double*) PyCObject_AsVoidPtr(pyPointerToDfault);
-  double*  pointerToTfault = (double*) PyCObject_AsVoidPtr(pyPointerToTfault);
-  double*  pointerToS = (double*) PyCObject_AsVoidPtr(pyPointerToS);
-  double*  pointerToStemp = (double*) PyCObject_AsVoidPtr(pyPointerToStemp);
-  double*  pointerToState = (double*) PyCObject_AsVoidPtr(pyPointerToState);
-  double*  pointerToDstate = (double*) PyCObject_AsVoidPtr(pyPointerToDstate);
-  double*  pointerToState0 = (double*) PyCObject_AsVoidPtr(pyPointerToState0);
-  double*  pointerToDmat = (double*) PyCObject_AsVoidPtr(pyPointerToDmat);
-  int*  pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int*  pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
-  int*  pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int*  pointerToLmf = (int*) PyCObject_AsVoidPtr(pyPointerToLmf);
-  int*  pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int*  pointerToListArrayNpar = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNpar);
-  int*  pointerToIelindx = (int*) PyCObject_AsVoidPtr(pyPointerToIelindx);
-  int*  pointerToTractionverts = (int*) PyCObject_AsVoidPtr(pyPointerToTractionverts);
-  double*  pointerToTractionvals = (double*) PyCObject_AsVoidPtr(pyPointerToTractionvals);
-  double*  pointerToGauss2d = (double*) PyCObject_AsVoidPtr(pyPointerToGauss2d);
-  double*  pointerToSh2d = (double*) PyCObject_AsVoidPtr(pyPointerToSh2d);
-  int*  pointerToListArrayElementTypeInfo2d = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo2d);
-  double*  pointerToListArrayPropertyList = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayPropertyList);
-  int*  pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
-  double*  pointerToGauss = (double*) PyCObject_AsVoidPtr(pyPointerToGauss);
-  double*  pointerToSh = (double*) PyCObject_AsVoidPtr(pyPointerToSh);
-  double*  pointerToShj = (double*) PyCObject_AsVoidPtr(pyPointerToShj);
-  int*  pointerToListArrayElementTypeInfo = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo);
-  double*  pointerToHistry = (double*) PyCObject_AsVoidPtr(pyPointerToHistry);
-  double*  pointerToListArrayRtimdat = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRtimdat);
-  int*  pointerToListArrayNtimdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNtimdat);
-  int*  pointerToListArrayNvisdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNvisdat);
-  int*  pointerToMaxstp = (int*) PyCObject_AsVoidPtr(pyPointerToMaxstp);
-  double*  pointerToDelt = (double*) PyCObject_AsVoidPtr(pyPointerToDelt);
-  double*  pointerToAlfa = (double*) PyCObject_AsVoidPtr(pyPointerToAlfa);
-  int*  pointerToMaxit = (int*) PyCObject_AsVoidPtr(pyPointerToMaxit);
-  int*  pointerToNtdinit = (int*) PyCObject_AsVoidPtr(pyPointerToNtdinit);
-  int*  pointerToLgdef = (int*) PyCObject_AsVoidPtr(pyPointerToLgdef);
-  double*  pointerToUtol = (double*) PyCObject_AsVoidPtr(pyPointerToUtol);
-  double*  pointerToFtol = (double*) PyCObject_AsVoidPtr(pyPointerToFtol);
-  double*  pointerToEtol = (double*) PyCObject_AsVoidPtr(pyPointerToEtol);
-  int*  pointerToItmax = (int*) PyCObject_AsVoidPtr(pyPointerToItmax);
-  double*  pointerToListArrayRgiter = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRgiter);
-  double*  pointerToSkew = (double*) PyCObject_AsVoidPtr(pyPointerToSkew);
-  int*  pointerToListArrayNcodat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNcodat);
-  int*  pointerToListArrayNunits = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNunits);
-  int*  pointerToListArrayNprint = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNprint);
-  int*  pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int*  pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  double*  bextern = (double*) PyCObject_AsVoidPtr(py_bextern);
+  double*  btraction = (double*) PyCObject_AsVoidPtr(py_btraction);
+  double*  bgravity = (double*) PyCObject_AsVoidPtr(py_bgravity);
+  double*  bconcForce = (double*) PyCObject_AsVoidPtr(py_bconcForce);
+  double*  bintern = (double*) PyCObject_AsVoidPtr(py_bintern);
+  double*  bresid = (double*) PyCObject_AsVoidPtr(py_bresid);
+  double*  bwink = (double*) PyCObject_AsVoidPtr(py_bwink);
+  double*  bwinkx = (double*) PyCObject_AsVoidPtr(py_bwinkx);
+  double*  dispVec = (double*) PyCObject_AsVoidPtr(py_dispVec);
+  double*  dprev = (double*) PyCObject_AsVoidPtr(py_dprev);
+  int*  nforce = (int*) PyCObject_AsVoidPtr(py_nforce);
+  double*  grav = (double*) PyCObject_AsVoidPtr(py_grav);
+  double*  x = (double*) PyCObject_AsVoidPtr(py_x);
+  double*  d = (double*) PyCObject_AsVoidPtr(py_d);
+  double*  deld = (double*) PyCObject_AsVoidPtr(py_deld);
+  double*  dcur = (double*) PyCObject_AsVoidPtr(py_dcur);
+  int*  id = (int*) PyCObject_AsVoidPtr(py_id);
+  int*  iwink = (int*) PyCObject_AsVoidPtr(py_iwink);
+  double*  wink = (double*) PyCObject_AsVoidPtr(py_wink);
+  int*  nsysdat = (int*) PyCObject_AsVoidPtr(py_nsysdat);
+  int*  iddmat = (int*) PyCObject_AsVoidPtr(py_iddmat);
+  int*  ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
+  double*  bond = (double*) PyCObject_AsVoidPtr(py_bond);
+  double*  dx = (double*) PyCObject_AsVoidPtr(py_dx);
+  double*  deldx = (double*) PyCObject_AsVoidPtr(py_deldx);
+  double*  dxcur = (double*) PyCObject_AsVoidPtr(py_dxcur);
+  double*  diforc = (double*) PyCObject_AsVoidPtr(py_diforc);
+  int*  idx = (int*) PyCObject_AsVoidPtr(py_idx);
+  int*  iwinkx = (int*) PyCObject_AsVoidPtr(py_iwinkx);
+  double*  winkx = (double*) PyCObject_AsVoidPtr(py_winkx);
+  int*  idslp = (int*) PyCObject_AsVoidPtr(py_idslp);
+  int*  ipslp = (int*) PyCObject_AsVoidPtr(py_ipslp);
+  int*  idhist = (int*) PyCObject_AsVoidPtr(py_idhist);
+  double*  fault = (double*) PyCObject_AsVoidPtr(py_fault);
+  int*  nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
+  double*  dfault = (double*) PyCObject_AsVoidPtr(py_dfault);
+  double*  tfault = (double*) PyCObject_AsVoidPtr(py_tfault);
+  double*  s = (double*) PyCObject_AsVoidPtr(py_s);
+  double*  stemp = (double*) PyCObject_AsVoidPtr(py_stemp);
+  double*  state = (double*) PyCObject_AsVoidPtr(py_state);
+  double*  dstate = (double*) PyCObject_AsVoidPtr(py_dstate);
+  double*  state0 = (double*) PyCObject_AsVoidPtr(py_state0);
+  double*  dmat = (double*) PyCObject_AsVoidPtr(py_dmat);
+  int*  iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int*  lm = (int*) PyCObject_AsVoidPtr(py_lm);
+  int*  lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int*  lmf = (int*) PyCObject_AsVoidPtr(py_lmf);
+  int*  ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int*  npar = (int*) PyCObject_AsVoidPtr(py_npar);
+  int*  ielindx = (int*) PyCObject_AsVoidPtr(py_ielindx);
+  int*  tractionverts = (int*) PyCObject_AsVoidPtr(py_tractionverts);
+  double*  tractionvals = (double*) PyCObject_AsVoidPtr(py_tractionvals);
+  double*  gauss2d = (double*) PyCObject_AsVoidPtr(py_gauss2d);
+  double*  sh2d = (double*) PyCObject_AsVoidPtr(py_sh2d);
+  int*  infetype2d = (int*) PyCObject_AsVoidPtr(py_infetype2d);
+  double*  prop = (double*) PyCObject_AsVoidPtr(py_prop);
+  int*  infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
+  double*  gauss = (double*) PyCObject_AsVoidPtr(py_gauss);
+  double*  sh = (double*) PyCObject_AsVoidPtr(py_sh);
+  double*  shj = (double*) PyCObject_AsVoidPtr(py_shj);
+  int*  infetype = (int*) PyCObject_AsVoidPtr(py_infetype);
+  double*  histry = (double*) PyCObject_AsVoidPtr(py_histry);
+  double*  rtimdat = (double*) PyCObject_AsVoidPtr(py_rtimdat);
+  int*  ntimdat = (int*) PyCObject_AsVoidPtr(py_ntimdat);
+  int*  nvisdat = (int*) PyCObject_AsVoidPtr(py_nvisdat);
+  int*  maxstp = (int*) PyCObject_AsVoidPtr(py_maxstp);
+  double*  delt = (double*) PyCObject_AsVoidPtr(py_delt);
+  double*  alfa = (double*) PyCObject_AsVoidPtr(py_alfa);
+  int*  maxit = (int*) PyCObject_AsVoidPtr(py_maxit);
+  int*  ntdinit = (int*) PyCObject_AsVoidPtr(py_ntdinit);
+  int*  lgdef = (int*) PyCObject_AsVoidPtr(py_lgdef);
+  double*  utol = (double*) PyCObject_AsVoidPtr(py_utol);
+  double*  ftol = (double*) PyCObject_AsVoidPtr(py_ftol);
+  double*  etol = (double*) PyCObject_AsVoidPtr(py_etol);
+  int*  itmax = (int*) PyCObject_AsVoidPtr(py_itmax);
+  double*  rgiter = (double*) PyCObject_AsVoidPtr(py_rgiter);
+  double*  skew = (double*) PyCObject_AsVoidPtr(py_skew);
+  int*  ncodat = (int*) PyCObject_AsVoidPtr(py_ncodat);
+  int*  nunits = (int*) PyCObject_AsVoidPtr(py_nunits);
+  int*  nprint = (int*) PyCObject_AsVoidPtr(py_nprint);
+  int*  istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int*  nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
   autoprestr_f(&A,                                // Sparse matrix arrays
                &rhs,
                &sol,
-               pointerToBextern,                  // Force vectors
-               pointerToBtraction,
-               pointerToBgravity,
-               pointerToBconcForce,
-               pointerToBintern,
-               pointerToBresid,
-               pointerToBwink,
-               pointerToBwinkx,
-               pointerToDispVec,
-               pointerToDprev,
-               pointerToListArrayNforce,
-               pointerToListArrayGrav,
-               pointerToX,                        // Global arrays
-               pointerToD,
-               pointerToDeld,
-               pointerToDcur,
-               pointerToId,
-               pointerToIwink,
-               pointerToWink,
-               pointerToListArrayNsysdat,
-               pointerToListArrayIddmat,
-               pointerToIbond,                    // Boundary condition arrays
-               pointerToBond,
-               pointerToDx,                       // Slippery node arrays
-               pointerToDeldx,
-               pointerToDxcur,
-               pointerToDiforc,
-               pointerToIdx,
-               pointerToIwinkx,
-               pointerToWinkx,
-               pointerToIdslp,
-               pointerToIpslp,
-               pointerToIdhist,
-               pointerToFault,                    // Split node arrays
-               pointerToNfault,
-               pointerToDfault,
-               pointerToTfault,
-               pointerToS,                        // Local stiffness matrix arrays
-               pointerToStemp,
-               pointerToState,                    // Element arrays
-               pointerToDstate,
-               pointerToState0,
-               pointerToDmat,
-               pointerToIens,
-               pointerToLm,
-               pointerToLmx,
-               pointerToLmf,
-               pointerToIvfamily,
-               pointerToListArrayNpar,
-               pointerToIelindx,
-               pointerToTractionverts,            // Traction BC arrays
-               pointerToTractionvals,
-               pointerToGauss2d,
-               pointerToSh2d,
-               pointerToListArrayElementTypeInfo2d,
-               pointerToListArrayPropertyList,    // Material property arrays
-               pointerToMaterialModelInfo,
-               pointerToGauss,                    // Element type arrays
-               pointerToSh,
-               pointerToShj,
-               pointerToListArrayElementTypeInfo,
-               pointerToHistry,                   // Time information
-               pointerToListArrayRtimdat,
-               pointerToListArrayNtimdat,
-               pointerToListArrayNvisdat,
-               pointerToMaxstp,
-               pointerToDelt,
-               pointerToAlfa,
-               pointerToMaxit,
-               pointerToNtdinit,
-               pointerToLgdef,
-               pointerToUtol,
-               pointerToFtol,
-               pointerToEtol,
-               pointerToItmax,
-               pointerToListArrayRgiter,          // Iterative solution information
-               pointerToSkew,                     // Skew rotation information
-               pointerToListArrayNcodat,          // Input/output information
-               pointerToListArrayNunits,
-               pointerToListArrayNprint,
-               pointerToIstatout,
-               pointerToNstatout,
-               asciiOutputFile,                   // Output file names
-               plotOutputFile,
-               ucdOutputRoot,
+               bextern,                  // Force vectors
+               btraction,
+               bgravity,
+               bconcForce,
+               bintern,
+               bresid,
+               bwink,
+               bwinkx,
+               dispVec,
+               dprev,
+               nforce,
+               grav,
+               x,                                 // Global arrays
+               d,
+               deld,
+               dcur,
+               id,
+               iwink,
+               wink,
+               nsysdat,
+               iddmat,
+               ibond,                    // Boundary condition arrays
+               bond,
+               dx,                       // Slippery node arrays
+               deldx,
+               dxcur,
+               diforc,
+               idx,
+               iwinkx,
+               winkx,
+               idslp,
+               ipslp,
+               idhist,
+               fault,                    // Split node arrays
+               nfault,
+               dfault,
+               tfault,
+               s,                        // Local stiffness matrix arrays
+               stemp,
+               state,                    // Element arrays
+               dstate,
+               state0,
+               dmat,
+               iens,
+               lm,
+               lmx,
+               lmf,
+               ivfamily,
+               npar,
+               ielindx,
+               tractionverts,            // Traction BC arrays
+               tractionvals,
+               gauss2d,
+               sh2d,
+               infetype2d,
+               prop,    // Material property arrays
+               infmatmod,
+               gauss,                    // Element type arrays
+               sh,
+               shj,
+               infetype,
+               histry,                   // Time information
+               rtimdat,
+               ntimdat,
+               nvisdat,
+               maxstp,
+               delt,
+               alfa,
+               maxit,
+               ntdinit,
+               lgdef,
+               utol,
+               ftol,
+               etol,
+               itmax,
+               rgiter,          // Iterative solution information
+               skew,                     // Skew rotation information
+               ncodat,          // Input/output information
+               nunits,
+               nprint,
+               istatout,
+               nstatout,
+               ofile,                   // Output file names
+               pfile,
+               ucdroot,
                &autoprestrStage,
                &iterateEvent,
                &errorcode,                        // Error codes
                errorstring,
-               strlen(asciiOutputFile),           // String lengths
-               strlen(plotOutputFile),
-               strlen(ucdOutputRoot),
+               strlen(ofile),           // String lengths
+               strlen(pfile),
+               strlen(ucdroot),
                sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -426,7 +426,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "asciiOutputFile:" << asciiOutputFile
+    << "ofile:" << ofile
     << journal::endl;
 
   // return
@@ -446,182 +446,182 @@
   PyObject* pyA;                              // Sparse matrix arrays
   PyObject* pyRhs;
   PyObject* pySol;
-  PyObject* pyPointerToBextern;               // Force vectors
-  PyObject* pyPointerToBtraction;
-  PyObject* pyPointerToBgravity;
-  PyObject* pyPointerToBconcForce;
-  PyObject* pyPointerToBintern;
-  PyObject* pyPointerToBresid;
-  PyObject* pyPointerToBwink;
-  PyObject* pyPointerToBwinkx;
-  PyObject* pyPointerToDispVec;
-  PyObject* pyPointerToDprev;
-  PyObject* pyPointerToListArrayNforce;
-  PyObject* pyPointerToListArrayGrav;
-  PyObject* pyPointerToX;                     // Global arrays
-  PyObject* pyPointerToD;
-  PyObject* pyPointerToDeld;
-  PyObject* pyPointerToDcur;
-  PyObject* pyPointerToId;
-  PyObject* pyPointerToIwink;
-  PyObject* pyPointerToWink;
-  PyObject* pyPointerToListArrayNsysdat;
-  PyObject* pyPointerToListArrayIddmat;
-  PyObject* pyPointerToIbond;                 // Boundary condition arrays
-  PyObject* pyPointerToBond;
-  PyObject* pyPointerToDx;                    // Slippery node arrays
-  PyObject* pyPointerToDeldx;
-  PyObject* pyPointerToDxcur;
-  PyObject* pyPointerToDiforc;
-  PyObject* pyPointerToIdx;
-  PyObject* pyPointerToIwinkx;
-  PyObject* pyPointerToWinkx;
-  PyObject* pyPointerToIdslp;
-  PyObject* pyPointerToIpslp;
-  PyObject* pyPointerToIdhist;
-  PyObject* pyPointerToFault;                 // Split node arrays
-  PyObject* pyPointerToNfault;
-  PyObject* pyPointerToDfault;
-  PyObject* pyPointerToTfault;
-  PyObject* pyPointerToS;                     // Local stiffness matrix arrays
-  PyObject* pyPointerToStemp;
-  PyObject* pyPointerToState;                 // Element arrays
-  PyObject* pyPointerToDstate;
-  PyObject* pyPointerToState0;
-  PyObject* pyPointerToDmat;
-  PyObject* pyPointerToIen;
-  PyObject* pyPointerToLm;
-  PyObject* pyPointerToLmx;
-  PyObject* pyPointerToLmf;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToListArrayNpar;
-  PyObject* pyPointerToIelindx;
-  PyObject* pyPointerToTractionverts;         // Traction BC arrays
-  PyObject* pyPointerToTractionvals;
-  PyObject* pyPointerToGauss2d;
-  PyObject* pyPointerToSh2d;
-  PyObject* pyPointerToListArrayElementTypeInfo2d;
-  PyObject* pyPointerToListArrayPropertyList; // Material property arrays
-  PyObject* pyPointerToMaterialModelInfo;
-  PyObject* pyPointerToGauss;                 // Element type arrays
-  PyObject* pyPointerToSh;
-  PyObject* pyPointerToShj;
-  PyObject* pyPointerToListArrayElementTypeInfo;
-  PyObject* pyPointerToHistry;                // Time information
-  PyObject* pyPointerToListArrayRtimdat;
-  PyObject* pyPointerToListArrayNtimdat;
-  PyObject* pyPointerToListArrayNvisdat;
-  PyObject* pyPointerToMaxstp;
-  PyObject* pyPointerToDelt;
-  PyObject* pyPointerToAlfa;
-  PyObject* pyPointerToMaxit;
-  PyObject* pyPointerToNtdinit;
-  PyObject* pyPointerToLgdef;
-  PyObject* pyPointerToUtol;
-  PyObject* pyPointerToFtol;
-  PyObject* pyPointerToEtol;
-  PyObject* pyPointerToItmax;
-  PyObject* pyPointerToListArrayRgiter;       // Iterative solution information
-  PyObject* pyPointerToSkew;                  // Skew rotation information
-  PyObject* pyPointerToListArrayNcodat;       // Input/output information
-  PyObject* pyPointerToListArrayNunits;
-  PyObject* pyPointerToListArrayNprint;
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  char* asciiOutputFile;                      // Output file names
-  char* plotOutputFile;
-  char* ucdOutputRoot;
+  PyObject* py_bextern;               // Force vectors
+  PyObject* py_btraction;
+  PyObject* py_bgravity;
+  PyObject* py_bconcForce;
+  PyObject* py_bintern;
+  PyObject* py_bresid;
+  PyObject* py_bwink;
+  PyObject* py_bwinkx;
+  PyObject* py_dispVec;
+  PyObject* py_dprev;
+  PyObject* py_nforce;
+  PyObject* py_grav;
+  PyObject* py_x;                             // Global arrays
+  PyObject* py_d;
+  PyObject* py_deld;
+  PyObject* py_dcur;
+  PyObject* py_id;
+  PyObject* py_iwink;
+  PyObject* py_wink;
+  PyObject* py_nsysdat;
+  PyObject* py_iddmat;
+  PyObject* py_ibond;                 // Boundary condition arrays
+  PyObject* py_bond;
+  PyObject* py_dx;                    // Slippery node arrays
+  PyObject* py_deldx;
+  PyObject* py_dxcur;
+  PyObject* py_diforc;
+  PyObject* py_idx;
+  PyObject* py_iwinkx;
+  PyObject* py_winkx;
+  PyObject* py_idslp;
+  PyObject* py_ipslp;
+  PyObject* py_idhist;
+  PyObject* py_fault;                 // Split node arrays
+  PyObject* py_nfault;
+  PyObject* py_dfault;
+  PyObject* py_tfault;
+  PyObject* py_s;                     // Local stiffness matrix arrays
+  PyObject* py_stemp;
+  PyObject* py_state;                 // Element arrays
+  PyObject* py_dstate;
+  PyObject* py_state0;
+  PyObject* py_dmat;
+  PyObject* py_ien;
+  PyObject* py_lm;
+  PyObject* py_lmx;
+  PyObject* py_lmf;
+  PyObject* py_ivfamily;
+  PyObject* py_npar;
+  PyObject* py_ielindx;
+  PyObject* py_tractionverts;         // Traction BC arrays
+  PyObject* py_tractionvals;
+  PyObject* py_gauss2d;
+  PyObject* py_sh2d;
+  PyObject* py_infetype2d;
+  PyObject* py_prop; // Material property arrays
+  PyObject* py_infmatmod;
+  PyObject* py_gauss;                 // Element type arrays
+  PyObject* py_sh;
+  PyObject* py_shj;
+  PyObject* py_infetype;
+  PyObject* py_histry;                // Time information
+  PyObject* py_rtimdat;
+  PyObject* py_ntimdat;
+  PyObject* py_nvisdat;
+  PyObject* py_maxstp;
+  PyObject* py_delt;
+  PyObject* py_alfa;
+  PyObject* py_maxit;
+  PyObject* py_ntdinit;
+  PyObject* py_lgdef;
+  PyObject* py_utol;
+  PyObject* py_ftol;
+  PyObject* py_etol;
+  PyObject* py_itmax;
+  PyObject* py_rgiter;       // Iterative solution information
+  PyObject* py_skew;                  // Skew rotation information
+  PyObject* py_ncodat;       // Input/output information
+  PyObject* py_nunits;
+  PyObject* py_nprint;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  char* ofile;                      // Output file names
+  char* pfile;
+  char* ucdroot;
   int elasticStage, iterateEvent;             // PETSc logging
 
   int ok = PyArg_ParseTuple(args, "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOsssii:elastc",
 			    &pyA,                              // Sparse matrix arrays
 			    &pyRhs,
 			    &pySol,
-			    &pyPointerToBextern,               // Force vectors
-			    &pyPointerToBtraction,
-			    &pyPointerToBgravity,
-			    &pyPointerToBconcForce,
-			    &pyPointerToBintern,
-			    &pyPointerToBresid,
-			    &pyPointerToBwink,
-			    &pyPointerToBwinkx,
-			    &pyPointerToDispVec,
-			    &pyPointerToDprev,
-			    &pyPointerToListArrayNforce,
-			    &pyPointerToListArrayGrav,
-			    &pyPointerToX,                     // Global arrays
-			    &pyPointerToD,
-			    &pyPointerToDeld,
-			    &pyPointerToDcur,
-			    &pyPointerToId,
-			    &pyPointerToIwink,
-			    &pyPointerToWink,
-			    &pyPointerToListArrayNsysdat,
-			    &pyPointerToListArrayIddmat,
-			    &pyPointerToIbond,                 // Boundary condition arrays
-			    &pyPointerToBond,
-			    &pyPointerToDx,                    // Slippery node arrays
-			    &pyPointerToDeldx,
-			    &pyPointerToDxcur,
-			    &pyPointerToDiforc,
-			    &pyPointerToIdx,
-			    &pyPointerToIwinkx,
-			    &pyPointerToWinkx,
-			    &pyPointerToIdslp,
-			    &pyPointerToIpslp,
-			    &pyPointerToIdhist,
-			    &pyPointerToFault,                 // Split node arrays
-			    &pyPointerToNfault,
-			    &pyPointerToDfault,
-			    &pyPointerToTfault,
-			    &pyPointerToS,                     // Local stiffness matrix arrays
-			    &pyPointerToStemp,
-			    &pyPointerToState,                 // Element arrays
-			    &pyPointerToDstate,
-			    &pyPointerToState0,
-			    &pyPointerToDmat,
-			    &pyPointerToIen,
-			    &pyPointerToLm,
-			    &pyPointerToLmx,
-			    &pyPointerToLmf,
-			    &pyPointerToIvfamily,
-			    &pyPointerToListArrayNpar,
-                            &pyPointerToIelindx,
-                            &pyPointerToTractionverts,         // Traction BC arrays
-                            &pyPointerToTractionvals,
-                            &pyPointerToGauss2d,
-                            &pyPointerToSh2d,
-                            &pyPointerToListArrayElementTypeInfo2d,
-			    &pyPointerToListArrayPropertyList, // Material property arrays
-			    &pyPointerToMaterialModelInfo,
-			    &pyPointerToGauss,                 // Element type arrays
-			    &pyPointerToSh,
-			    &pyPointerToShj,
-			    &pyPointerToListArrayElementTypeInfo,
-			    &pyPointerToHistry,                // Time information
-			    &pyPointerToListArrayRtimdat,
-			    &pyPointerToListArrayNtimdat,
-			    &pyPointerToListArrayNvisdat,
-			    &pyPointerToMaxstp,
-			    &pyPointerToDelt,
-			    &pyPointerToAlfa,
-			    &pyPointerToMaxit,
-			    &pyPointerToNtdinit,
-			    &pyPointerToLgdef,
-			    &pyPointerToUtol,
-			    &pyPointerToFtol,
-			    &pyPointerToEtol,
-			    &pyPointerToItmax,
-			    &pyPointerToListArrayRgiter,       // Iterative solution information
-			    &pyPointerToSkew,                  // Skew rotation information
-			    &pyPointerToListArrayNcodat,       // Input/output information
-			    &pyPointerToListArrayNunits,
-			    &pyPointerToListArrayNprint,
-			    &pyPointerToIstatout,
-			    &pyPointerToNstatout,
-			    &asciiOutputFile,                  // Output file names
-			    &plotOutputFile,
-			    &ucdOutputRoot,
+			    &py_bextern,               // Force vectors
+			    &py_btraction,
+			    &py_bgravity,
+			    &py_bconcForce,
+			    &py_bintern,
+			    &py_bresid,
+			    &py_bwink,
+			    &py_bwinkx,
+			    &py_dispVec,
+			    &py_dprev,
+			    &py_nforce,
+			    &py_grav,
+			    &py_x,                             // Global arrays
+			    &py_d,
+			    &py_deld,
+			    &py_dcur,
+			    &py_id,
+			    &py_iwink,
+			    &py_wink,
+			    &py_nsysdat,
+			    &py_iddmat,
+			    &py_ibond,                 // Boundary condition arrays
+			    &py_bond,
+			    &py_dx,                    // Slippery node arrays
+			    &py_deldx,
+			    &py_dxcur,
+			    &py_diforc,
+			    &py_idx,
+			    &py_iwinkx,
+			    &py_winkx,
+			    &py_idslp,
+			    &py_ipslp,
+			    &py_idhist,
+			    &py_fault,                 // Split node arrays
+			    &py_nfault,
+			    &py_dfault,
+			    &py_tfault,
+			    &py_s,                     // Local stiffness matrix arrays
+			    &py_stemp,
+			    &py_state,                 // Element arrays
+			    &py_dstate,
+			    &py_state0,
+			    &py_dmat,
+			    &py_ien,
+			    &py_lm,
+			    &py_lmx,
+			    &py_lmf,
+			    &py_ivfamily,
+			    &py_npar,
+                            &py_ielindx,
+                            &py_tractionverts,         // Traction BC arrays
+                            &py_tractionvals,
+                            &py_gauss2d,
+                            &py_sh2d,
+                            &py_infetype2d,
+			    &py_prop, // Material property arrays
+			    &py_infmatmod,
+			    &py_gauss,                 // Element type arrays
+			    &py_sh,
+			    &py_shj,
+			    &py_infetype,
+			    &py_histry,                // Time information
+			    &py_rtimdat,
+			    &py_ntimdat,
+			    &py_nvisdat,
+			    &py_maxstp,
+			    &py_delt,
+			    &py_alfa,
+			    &py_maxit,
+			    &py_ntdinit,
+			    &py_lgdef,
+			    &py_utol,
+			    &py_ftol,
+			    &py_etol,
+			    &py_itmax,
+			    &py_rgiter,       // Iterative solution information
+			    &py_skew,                  // Skew rotation information
+			    &py_ncodat,       // Input/output information
+			    &py_nunits,
+			    &py_nprint,
+			    &py_istatout,
+			    &py_nstatout,
+			    &ofile,                  // Output file names
+			    &pfile,
+			    &ucdroot,
                             &elasticStage,                    // PETSc logging
                             &iterateEvent);
 
@@ -636,184 +636,184 @@
   Mat      A = (Mat) PyCObject_AsVoidPtr(pyA);
   Vec      rhs = (Vec) PyCObject_AsVoidPtr(pyRhs);
   Vec      sol = (Vec) PyCObject_AsVoidPtr(pySol);
-  double*  pointerToBextern = (double*) PyCObject_AsVoidPtr(pyPointerToBextern);
-  double*  pointerToBtraction = (double*) PyCObject_AsVoidPtr(pyPointerToBtraction);
-  double*  pointerToBgravity = (double*) PyCObject_AsVoidPtr(pyPointerToBgravity);
-  double*  pointerToBconcForce = (double*) PyCObject_AsVoidPtr(pyPointerToBconcForce);
-  double*  pointerToBintern = (double*) PyCObject_AsVoidPtr(pyPointerToBintern);
-  double*  pointerToBresid = (double*) PyCObject_AsVoidPtr(pyPointerToBresid);
-  double*  pointerToBwink = (double*) PyCObject_AsVoidPtr(pyPointerToBwink);
-  double*  pointerToBwinkx = (double*) PyCObject_AsVoidPtr(pyPointerToBwinkx);
-  double*  pointerToDispVec = (double*) PyCObject_AsVoidPtr(pyPointerToDispVec);
-  double*  pointerToDprev = (double*) PyCObject_AsVoidPtr(pyPointerToDprev);
-  int*  pointerToListArrayNforce = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNforce);
-  double*  pointerToListArrayGrav = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayGrav);
-  double*  pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
-  double*  pointerToD = (double*) PyCObject_AsVoidPtr(pyPointerToD);
-  double*  pointerToDeld = (double*) PyCObject_AsVoidPtr(pyPointerToDeld);
-  double*  pointerToDcur = (double*) PyCObject_AsVoidPtr(pyPointerToDcur);
-  int*  pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
-  int*  pointerToIwink = (int*) PyCObject_AsVoidPtr(pyPointerToIwink);
-  double*  pointerToWink = (double*) PyCObject_AsVoidPtr(pyPointerToWink);
-  int*  pointerToListArrayNsysdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNsysdat);
-  int*  pointerToListArrayIddmat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayIddmat);
-  int*  pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
-  double*  pointerToBond = (double*) PyCObject_AsVoidPtr(pyPointerToBond);
-  double*  pointerToDx = (double*) PyCObject_AsVoidPtr(pyPointerToDx);
-  double*  pointerToDeldx = (double*) PyCObject_AsVoidPtr(pyPointerToDeldx);
-  double*  pointerToDxcur = (double*) PyCObject_AsVoidPtr(pyPointerToDxcur);
-  double*  pointerToDiforc = (double*) PyCObject_AsVoidPtr(pyPointerToDiforc);
-  int*  pointerToIdx = (int*) PyCObject_AsVoidPtr(pyPointerToIdx);
-  int*  pointerToIwinkx = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkx);
-  double*  pointerToWinkx = (double*) PyCObject_AsVoidPtr(pyPointerToWinkx);
-  int*  pointerToIdslp = (int*) PyCObject_AsVoidPtr(pyPointerToIdslp);
-  int*  pointerToIpslp = (int*) PyCObject_AsVoidPtr(pyPointerToIpslp);
-  int*  pointerToIdhist = (int*) PyCObject_AsVoidPtr(pyPointerToIdhist);
-  double*  pointerToFault = (double*) PyCObject_AsVoidPtr(pyPointerToFault);
-  int*  pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
-  double*  pointerToDfault = (double*) PyCObject_AsVoidPtr(pyPointerToDfault);
-  double*  pointerToTfault = (double*) PyCObject_AsVoidPtr(pyPointerToTfault);
-  double*  pointerToS = (double*) PyCObject_AsVoidPtr(pyPointerToS);
-  double*  pointerToStemp = (double*) PyCObject_AsVoidPtr(pyPointerToStemp);
-  double*  pointerToState = (double*) PyCObject_AsVoidPtr(pyPointerToState);
-  double*  pointerToDstate = (double*) PyCObject_AsVoidPtr(pyPointerToDstate);
-  double*  pointerToState0 = (double*) PyCObject_AsVoidPtr(pyPointerToState0);
-  double*  pointerToDmat = (double*) PyCObject_AsVoidPtr(pyPointerToDmat);
-  int*  pointerToIen = (int*) PyCObject_AsVoidPtr(pyPointerToIen);
-  int*  pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
-  int*  pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int*  pointerToLmf = (int*) PyCObject_AsVoidPtr(pyPointerToLmf);
-  int*  pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int*  pointerToListArrayNpar = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNpar);
-  int*  pointerToIelindx = (int*) PyCObject_AsVoidPtr(pyPointerToIelindx);
-  int*  pointerToTractionverts = (int*) PyCObject_AsVoidPtr(pyPointerToTractionverts);
-  double*  pointerToTractionvals = (double*) PyCObject_AsVoidPtr(pyPointerToTractionvals);
-  double*  pointerToGauss2d = (double*) PyCObject_AsVoidPtr(pyPointerToGauss2d);
-  double*  pointerToSh2d = (double*) PyCObject_AsVoidPtr(pyPointerToSh2d);
-  int*  pointerToListArrayElementTypeInfo2d = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo2d);
-  double*  pointerToListArrayPropertyList = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayPropertyList);
-  int*  pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
-  double*  pointerToGauss = (double*) PyCObject_AsVoidPtr(pyPointerToGauss);
-  double*  pointerToSh = (double*) PyCObject_AsVoidPtr(pyPointerToSh);
-  double*  pointerToShj = (double*) PyCObject_AsVoidPtr(pyPointerToShj);
-  int*  pointerToListArrayElementTypeInfo = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo);
-  double*  pointerToHistry = (double*) PyCObject_AsVoidPtr(pyPointerToHistry);
-  double*  pointerToListArrayRtimdat = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRtimdat);
-  int*  pointerToListArrayNtimdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNtimdat);
-  int*  pointerToListArrayNvisdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNvisdat);
-  int*  pointerToMaxstp = (int*) PyCObject_AsVoidPtr(pyPointerToMaxstp);
-  double*  pointerToDelt = (double*) PyCObject_AsVoidPtr(pyPointerToDelt);
-  double*  pointerToAlfa = (double*) PyCObject_AsVoidPtr(pyPointerToAlfa);
-  int*  pointerToMaxit = (int*) PyCObject_AsVoidPtr(pyPointerToMaxit);
-  int*  pointerToNtdinit = (int*) PyCObject_AsVoidPtr(pyPointerToNtdinit);
-  int*  pointerToLgdef = (int*) PyCObject_AsVoidPtr(pyPointerToLgdef);
-  double*  pointerToUtol = (double*) PyCObject_AsVoidPtr(pyPointerToUtol);
-  double*  pointerToFtol = (double*) PyCObject_AsVoidPtr(pyPointerToFtol);
-  double*  pointerToEtol = (double*) PyCObject_AsVoidPtr(pyPointerToEtol);
-  int*  pointerToItmax = (int*) PyCObject_AsVoidPtr(pyPointerToItmax);
-  double*  pointerToListArrayRgiter = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRgiter);
-  double*  pointerToSkew = (double*) PyCObject_AsVoidPtr(pyPointerToSkew);
-  int*  pointerToListArrayNcodat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNcodat);
-  int*  pointerToListArrayNunits = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNunits);
-  int*  pointerToListArrayNprint = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNprint);
-  int*  pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int*  pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  double*  bextern = (double*) PyCObject_AsVoidPtr(py_bextern);
+  double*  btraction = (double*) PyCObject_AsVoidPtr(py_btraction);
+  double*  bgravity = (double*) PyCObject_AsVoidPtr(py_bgravity);
+  double*  bconcForce = (double*) PyCObject_AsVoidPtr(py_bconcForce);
+  double*  bintern = (double*) PyCObject_AsVoidPtr(py_bintern);
+  double*  bresid = (double*) PyCObject_AsVoidPtr(py_bresid);
+  double*  bwink = (double*) PyCObject_AsVoidPtr(py_bwink);
+  double*  bwinkx = (double*) PyCObject_AsVoidPtr(py_bwinkx);
+  double*  dispVec = (double*) PyCObject_AsVoidPtr(py_dispVec);
+  double*  dprev = (double*) PyCObject_AsVoidPtr(py_dprev);
+  int*  nforce = (int*) PyCObject_AsVoidPtr(py_nforce);
+  double*  grav = (double*) PyCObject_AsVoidPtr(py_grav);
+  double*  x = (double*) PyCObject_AsVoidPtr(py_x);
+  double*  d = (double*) PyCObject_AsVoidPtr(py_d);
+  double*  deld = (double*) PyCObject_AsVoidPtr(py_deld);
+  double*  dcur = (double*) PyCObject_AsVoidPtr(py_dcur);
+  int*  id = (int*) PyCObject_AsVoidPtr(py_id);
+  int*  iwink = (int*) PyCObject_AsVoidPtr(py_iwink);
+  double*  wink = (double*) PyCObject_AsVoidPtr(py_wink);
+  int*  nsysdat = (int*) PyCObject_AsVoidPtr(py_nsysdat);
+  int*  iddmat = (int*) PyCObject_AsVoidPtr(py_iddmat);
+  int*  ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
+  double*  bond = (double*) PyCObject_AsVoidPtr(py_bond);
+  double*  dx = (double*) PyCObject_AsVoidPtr(py_dx);
+  double*  deldx = (double*) PyCObject_AsVoidPtr(py_deldx);
+  double*  dxcur = (double*) PyCObject_AsVoidPtr(py_dxcur);
+  double*  diforc = (double*) PyCObject_AsVoidPtr(py_diforc);
+  int*  idx = (int*) PyCObject_AsVoidPtr(py_idx);
+  int*  iwinkx = (int*) PyCObject_AsVoidPtr(py_iwinkx);
+  double*  winkx = (double*) PyCObject_AsVoidPtr(py_winkx);
+  int*  idslp = (int*) PyCObject_AsVoidPtr(py_idslp);
+  int*  ipslp = (int*) PyCObject_AsVoidPtr(py_ipslp);
+  int*  idhist = (int*) PyCObject_AsVoidPtr(py_idhist);
+  double*  fault = (double*) PyCObject_AsVoidPtr(py_fault);
+  int*  nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
+  double*  dfault = (double*) PyCObject_AsVoidPtr(py_dfault);
+  double*  tfault = (double*) PyCObject_AsVoidPtr(py_tfault);
+  double*  s = (double*) PyCObject_AsVoidPtr(py_s);
+  double*  stemp = (double*) PyCObject_AsVoidPtr(py_stemp);
+  double*  state = (double*) PyCObject_AsVoidPtr(py_state);
+  double*  dstate = (double*) PyCObject_AsVoidPtr(py_dstate);
+  double*  state0 = (double*) PyCObject_AsVoidPtr(py_state0);
+  double*  dmat = (double*) PyCObject_AsVoidPtr(py_dmat);
+  int*  ien = (int*) PyCObject_AsVoidPtr(py_ien);
+  int*  lm = (int*) PyCObject_AsVoidPtr(py_lm);
+  int*  lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int*  lmf = (int*) PyCObject_AsVoidPtr(py_lmf);
+  int*  ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int*  npar = (int*) PyCObject_AsVoidPtr(py_npar);
+  int*  ielindx = (int*) PyCObject_AsVoidPtr(py_ielindx);
+  int*  tractionverts = (int*) PyCObject_AsVoidPtr(py_tractionverts);
+  double*  tractionvals = (double*) PyCObject_AsVoidPtr(py_tractionvals);
+  double*  gauss2d = (double*) PyCObject_AsVoidPtr(py_gauss2d);
+  double*  sh2d = (double*) PyCObject_AsVoidPtr(py_sh2d);
+  int*  infetype2d = (int*) PyCObject_AsVoidPtr(py_infetype2d);
+  double*  prop = (double*) PyCObject_AsVoidPtr(py_prop);
+  int*  infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
+  double*  gauss = (double*) PyCObject_AsVoidPtr(py_gauss);
+  double*  sh = (double*) PyCObject_AsVoidPtr(py_sh);
+  double*  shj = (double*) PyCObject_AsVoidPtr(py_shj);
+  int*  infetype = (int*) PyCObject_AsVoidPtr(py_infetype);
+  double*  histry = (double*) PyCObject_AsVoidPtr(py_histry);
+  double*  rtimdat = (double*) PyCObject_AsVoidPtr(py_rtimdat);
+  int*  ntimdat = (int*) PyCObject_AsVoidPtr(py_ntimdat);
+  int*  nvisdat = (int*) PyCObject_AsVoidPtr(py_nvisdat);
+  int*  maxstp = (int*) PyCObject_AsVoidPtr(py_maxstp);
+  double*  delt = (double*) PyCObject_AsVoidPtr(py_delt);
+  double*  alfa = (double*) PyCObject_AsVoidPtr(py_alfa);
+  int*  maxit = (int*) PyCObject_AsVoidPtr(py_maxit);
+  int*  ntdinit = (int*) PyCObject_AsVoidPtr(py_ntdinit);
+  int*  lgdef = (int*) PyCObject_AsVoidPtr(py_lgdef);
+  double*  utol = (double*) PyCObject_AsVoidPtr(py_utol);
+  double*  ftol = (double*) PyCObject_AsVoidPtr(py_ftol);
+  double*  etol = (double*) PyCObject_AsVoidPtr(py_etol);
+  int*  itmax = (int*) PyCObject_AsVoidPtr(py_itmax);
+  double*  rgiter = (double*) PyCObject_AsVoidPtr(py_rgiter);
+  double*  skew = (double*) PyCObject_AsVoidPtr(py_skew);
+  int*  ncodat = (int*) PyCObject_AsVoidPtr(py_ncodat);
+  int*  nunits = (int*) PyCObject_AsVoidPtr(py_nunits);
+  int*  nprint = (int*) PyCObject_AsVoidPtr(py_nprint);
+  int*  istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int*  nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
   elastc_f(&A,                                // Sparse matrix arrays
            &rhs,
 	   &sol,
-	   pointerToBextern,                  // Force vectors
-	   pointerToBtraction,
-	   pointerToBgravity,
-	   pointerToBconcForce,
-	   pointerToBintern,
-	   pointerToBresid,
-	   pointerToBwink,
-	   pointerToBwinkx,
-	   pointerToDispVec,
-	   pointerToDprev,
-	   pointerToListArrayNforce,
-	   pointerToListArrayGrav,
-	   pointerToX,                        // Global arrays
-	   pointerToD,
-	   pointerToDeld,
-	   pointerToDcur,
-	   pointerToId,
-	   pointerToIwink,
-	   pointerToWink,
-	   pointerToListArrayNsysdat,
-	   pointerToListArrayIddmat,
-	   pointerToIbond,                    // Boundary condition arrays
-	   pointerToBond,
-	   pointerToDx,                       // Slippery node arrays
-	   pointerToDeldx,
-	   pointerToDxcur,
-	   pointerToDiforc,
-	   pointerToIdx,
-	   pointerToIwinkx,
-	   pointerToWinkx,
-	   pointerToIdslp,
-	   pointerToIpslp,
-	   pointerToIdhist,
-	   pointerToFault,                    // Split node arrays
-	   pointerToNfault,
-	   pointerToDfault,
-	   pointerToTfault,
-	   pointerToS,                        // Local stiffness matrix arrays
-	   pointerToStemp,
-	   pointerToState,                    // Element arrays
-	   pointerToDstate,
-	   pointerToState0,
-	   pointerToDmat,
-	   pointerToIen,
-	   pointerToLm,
-	   pointerToLmx,
-	   pointerToLmf,
-	   pointerToIvfamily,
-	   pointerToListArrayNpar,
-	   pointerToIelindx,
-	   pointerToTractionverts,            // Traction BC arrays
-	   pointerToTractionvals,
-	   pointerToGauss2d,
-	   pointerToSh2d,
-	   pointerToListArrayElementTypeInfo2d,
-	   pointerToListArrayPropertyList,    // Material property arrays
-	   pointerToMaterialModelInfo,
-	   pointerToGauss,                    // Element type arrays
-	   pointerToSh,
-	   pointerToShj,
-	   pointerToListArrayElementTypeInfo,
-	   pointerToHistry,                   // Time information
-	   pointerToListArrayRtimdat,
-	   pointerToListArrayNtimdat,
-	   pointerToListArrayNvisdat,
-	   pointerToMaxstp,
-	   pointerToDelt,
-	   pointerToAlfa,
-	   pointerToMaxit,
-	   pointerToNtdinit,
-	   pointerToLgdef,
-	   pointerToUtol,
-	   pointerToFtol,
-	   pointerToEtol,
-	   pointerToItmax,
-	   pointerToListArrayRgiter,          // Iterative solution information
-	   pointerToSkew,                     // Skew rotation information
-	   pointerToListArrayNcodat,          // Input/output information
-	   pointerToListArrayNunits,
-	   pointerToListArrayNprint,
-	   pointerToIstatout,
-	   pointerToNstatout,
-	   asciiOutputFile,                   // Output file names
-	   plotOutputFile,
-	   ucdOutputRoot,
+	   bextern,                  // Force vectors
+	   btraction,
+	   bgravity,
+	   bconcForce,
+	   bintern,
+	   bresid,
+	   bwink,
+	   bwinkx,
+	   dispVec,
+	   dprev,
+	   nforce,
+	   grav,
+	   x,                                 // Global arrays
+	   d,
+	   deld,
+	   dcur,
+	   id,
+	   iwink,
+	   wink,
+	   nsysdat,
+	   iddmat,
+	   ibond,                    // Boundary condition arrays
+	   bond,
+	   dx,                       // Slippery node arrays
+	   deldx,
+	   dxcur,
+	   diforc,
+	   idx,
+	   iwinkx,
+	   winkx,
+	   idslp,
+	   ipslp,
+	   idhist,
+	   fault,                    // Split node arrays
+	   nfault,
+	   dfault,
+	   tfault,
+	   s,                        // Local stiffness matrix arrays
+	   stemp,
+	   state,                    // Element arrays
+	   dstate,
+	   state0,
+	   dmat,
+	   ien,
+	   lm,
+	   lmx,
+	   lmf,
+	   ivfamily,
+	   npar,
+	   ielindx,
+	   tractionverts,            // Traction BC arrays
+	   tractionvals,
+	   gauss2d,
+	   sh2d,
+	   infetype2d,
+	   prop,    // Material property arrays
+	   infmatmod,
+	   gauss,                    // Element type arrays
+	   sh,
+	   shj,
+	   infetype,
+	   histry,                   // Time information
+	   rtimdat,
+	   ntimdat,
+	   nvisdat,
+	   maxstp,
+	   delt,
+	   alfa,
+	   maxit,
+	   ntdinit,
+	   lgdef,
+	   utol,
+	   ftol,
+	   etol,
+	   itmax,
+	   rgiter,          // Iterative solution information
+	   skew,                     // Skew rotation information
+	   ncodat,          // Input/output information
+	   nunits,
+	   nprint,
+	   istatout,
+	   nstatout,
+	   ofile,                   // Output file names
+	   pfile,
+	   ucdroot,
            &elasticStage,
            &iterateEvent,
 	   &errorcode,                        // Error codes
 	   errorstring,
-	   strlen(asciiOutputFile),           // String lengths
-	   strlen(plotOutputFile),
-	   strlen(ucdOutputRoot),
+	   strlen(ofile),           // String lengths
+	   strlen(pfile),
+	   strlen(ucdroot),
 	   sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -824,7 +824,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "asciiOutputFile:" << asciiOutputFile
+    << "ofile:" << ofile
     << journal::endl;
 
   // return
@@ -843,52 +843,52 @@
 
 PyObject * pypylith3d_assign_wink(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToWinkdef;
-  PyObject* pyPointerToWink;
-  PyObject* pyPointerToIwinkdef;
-  PyObject* pyPointerToIwinkid;
-  PyObject* pyPointerToIwink;
-  PyObject* pyPointerToId;
-  int numberNodes;
-  int numberWinklerForces;
-  int numberWinklerEntries;
+  PyObject* py_winkdef;
+  PyObject* py_wink;
+  PyObject* py_iwinkdef;
+  PyObject* py_iwinkid;
+  PyObject* py_iwink;
+  PyObject* py_id;
+  int numnp;
+  int nwink;
+  int nwinke;
 
   int ok = PyArg_ParseTuple(args, "OOOOOOiii:assign_wink",
-			    &pyPointerToWinkdef,
-			    &pyPointerToWink,
-			    &pyPointerToIwinkdef,
-			    &pyPointerToIwinkid,
-			    &pyPointerToIwink,
-			    &pyPointerToId,
-			    &numberNodes,
-			    &numberWinklerForces,
-			    &numberWinklerEntries);
+			    &py_winkdef,
+			    &py_wink,
+			    &py_iwinkdef,
+			    &py_iwinkid,
+			    &py_iwink,
+			    &py_id,
+			    &numnp,
+			    &nwink,
+			    &nwinke);
 
   if (!ok) {
     return 0;
   }
 
-  double* pointerToWinkdef = (double*) PyCObject_AsVoidPtr(pyPointerToWinkdef);
-  double* pointerToWink = (double*) PyCObject_AsVoidPtr(pyPointerToWink);
-  int* pointerToIwinkdef = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkdef);
-  int* pointerToIwinkid = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkid);
-  int* pointerToIwink = (int*) PyCObject_AsVoidPtr(pyPointerToIwink);
-  int* pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
+  double* winkdef = (double*) PyCObject_AsVoidPtr(py_winkdef);
+  double* wink = (double*) PyCObject_AsVoidPtr(py_wink);
+  int* iwinkdef = (int*) PyCObject_AsVoidPtr(py_iwinkdef);
+  int* iwinkid = (int*) PyCObject_AsVoidPtr(py_iwinkid);
+  int* iwink = (int*) PyCObject_AsVoidPtr(py_iwink);
+  int* id = (int*) PyCObject_AsVoidPtr(py_id);
 
-  assign_wink_f(pointerToWinkdef,
-		pointerToWink,
-		pointerToIwinkdef,
-		pointerToIwinkid,
-		pointerToIwink,
-		pointerToId,
-		&numberNodes,
-		&numberWinklerForces,
-		&numberWinklerEntries);
+  assign_wink_f(winkdef,
+		wink,
+		iwinkdef,
+		iwinkid,
+		iwink,
+		id,
+		&numnp,
+		&nwink,
+		&nwinke);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberWinklerForces:" << numberWinklerForces
+    << "nwink:" << nwink
     << journal::endl;
 
   // return
@@ -904,55 +904,55 @@
 
 PyObject * pypylith3d_create_id(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToId;
-  PyObject* pyPointerToIdx;
-  PyObject* pyPointerToIbond;
-  PyObject* pyPointerToNslip;
-  PyObject* pyPointerToIdslp;
-  int numberSlipperyNodeEntries;
-  int numberNodes;
+  PyObject* py_id;
+  PyObject* py_idx;
+  PyObject* py_ibond;
+  PyObject* py_nslip;
+  PyObject* py_idslp;
+  int numslp;
+  int numnp;
   int totalNumberSlipperyNodes;
 
   int ok = PyArg_ParseTuple(args, "OOOOOiii:create_id",
-			    &pyPointerToId,
-			    &pyPointerToIdx,
-			    &pyPointerToIbond,
-			    &pyPointerToNslip,
-			    &pyPointerToIdslp,
-			    &numberSlipperyNodeEntries,
-			    &numberNodes,
+			    &py_id,
+			    &py_idx,
+			    &py_ibond,
+			    &py_nslip,
+			    &py_idslp,
+			    &numslp,
+			    &numnp,
 			    &totalNumberSlipperyNodes);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
-  int* pointerToIdx = (int*) PyCObject_AsVoidPtr(pyPointerToIdx);
-  int* pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
-  int* pointerToIdslp = (int*) PyCObject_AsVoidPtr(pyPointerToIdslp);
-  int numberGlobalEquations = 0;
+  int* id = (int*) PyCObject_AsVoidPtr(py_id);
+  int* idx = (int*) PyCObject_AsVoidPtr(py_idx);
+  int* ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
+  int* idslp = (int*) PyCObject_AsVoidPtr(py_idslp);
+  int neq = 0;
 
-  create_id_f(pointerToId,
-	  pointerToIdx,
-	  pointerToIbond,
-	  pointerToNslip,
-	  pointerToIdslp,
-	  &numberSlipperyNodeEntries,
-	  &numberNodes,
+  create_id_f(id,
+	  idx,
+	  ibond,
+	  nslip,
+	  idslp,
+	  &numslp,
+	  &numnp,
 	  &totalNumberSlipperyNodes,
-	  &numberGlobalEquations);
+	  &neq);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberGlobalEquations:" << numberGlobalEquations
+    << "neq:" << neq
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue("i", numberGlobalEquations);
+  return Py_BuildValue("i", neq);
 }
 
 
@@ -963,36 +963,36 @@
 
 PyObject * pypylith3d_id_split(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToNfault;
-  PyObject* pyPointerToIdftn;
-  int numberNodes;
-  int numberSplitNodeEntries;
+  PyObject* py_nfault;
+  PyObject* py_idftn;
+  int numnp;
+  int numfn;
   int totalNumberSplitNodes;
 
   int ok = PyArg_ParseTuple(args, "OOiii:id_split",
-			    &pyPointerToNfault,
-			    &pyPointerToIdftn,
-			    &numberNodes,
-			    &numberSplitNodeEntries,
+			    &py_nfault,
+			    &py_idftn,
+			    &numnp,
+			    &numfn,
 			    &totalNumberSplitNodes);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
-  int* pointerToIdftn = (int*) PyCObject_AsVoidPtr(pyPointerToIdftn);
+  int* nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
+  int* idftn = (int*) PyCObject_AsVoidPtr(py_idftn);
 
-  id_split_f(pointerToNfault,
-	     pointerToIdftn,
-	     &numberNodes,
-	     &numberSplitNodeEntries,
+  id_split_f(nfault,
+	     idftn,
+	     &numnp,
+	     &numfn,
 	     &totalNumberSplitNodes);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSplitNodeEntries:" << numberSplitNodeEntries
+    << "numfn:" << numfn
     << journal::endl;
 
   // return
@@ -1008,60 +1008,60 @@
 
 PyObject * pypylith3d_nfind(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToX;
-  PyObject* pyPointerToXtmp;
-  PyObject* pyPointerToIdslp;
-  PyObject* pyPointerToIpslp;
-  PyObject* pyPointerToItmp;
-  PyObject* pyPointerToItmp1;
-  PyObject* pyPointerToItmp2;
-  PyObject* pyPointerToNslip;
-  int numberSlipperyNodeEntries;
+  PyObject* py_x;
+  PyObject* py_xtmp;
+  PyObject* py_idslp;
+  PyObject* py_ipslp;
+  PyObject* py_itmp;
+  PyObject* py_itmp1;
+  PyObject* py_itmp2;
+  PyObject* py_nslip;
+  int numslp;
   int totalNumberSlipperyNodes;
-  int numberNodes;
+  int numnp;
 
   int ok = PyArg_ParseTuple(args, "OOOOOOOOiii:nfind",
-			    &pyPointerToX,
-			    &pyPointerToXtmp,
-			    &pyPointerToIdslp,
-			    &pyPointerToIpslp,
-			    &pyPointerToItmp,
-			    &pyPointerToItmp1,
-			    &pyPointerToItmp2,
-			    &pyPointerToNslip,
-			    &numberSlipperyNodeEntries,
+			    &py_x,
+			    &py_xtmp,
+			    &py_idslp,
+			    &py_ipslp,
+			    &py_itmp,
+			    &py_itmp1,
+			    &py_itmp2,
+			    &py_nslip,
+			    &numslp,
 			    &totalNumberSlipperyNodes,
-			    &numberNodes);
+			    &numnp);
 
   if (!ok) {
     return 0;
   }
 
-  double* pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
-  double* pointerToXtmp = (double*) PyCObject_AsVoidPtr(pyPointerToXtmp);
-  int* pointerToIdslp = (int*) PyCObject_AsVoidPtr(pyPointerToIdslp);
-  int* pointerToIpslp = (int*) PyCObject_AsVoidPtr(pyPointerToIpslp);
-  int* pointerToItmp = (int*) PyCObject_AsVoidPtr(pyPointerToItmp);
-  int* pointerToItmp1 = (int*) PyCObject_AsVoidPtr(pyPointerToItmp1);
-  int* pointerToItmp2 = (int*) PyCObject_AsVoidPtr(pyPointerToItmp2);
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
+  double* x = (double*) PyCObject_AsVoidPtr(py_x);
+  double* xtmp = (double*) PyCObject_AsVoidPtr(py_xtmp);
+  int* idslp = (int*) PyCObject_AsVoidPtr(py_idslp);
+  int* ipslp = (int*) PyCObject_AsVoidPtr(py_ipslp);
+  int* itmp = (int*) PyCObject_AsVoidPtr(py_itmp);
+  int* itmp1 = (int*) PyCObject_AsVoidPtr(py_itmp1);
+  int* itmp2 = (int*) PyCObject_AsVoidPtr(py_itmp2);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
 
-  nfind_f(pointerToX,
-	  pointerToXtmp,
-	  pointerToIdslp,
-	  pointerToIpslp,
-	  pointerToItmp,
-	  pointerToItmp1,
-	  pointerToItmp2,
-	  pointerToNslip,
-	  &numberSlipperyNodeEntries,
+  nfind_f(x,
+	  xtmp,
+	  idslp,
+	  ipslp,
+	  itmp,
+	  itmp1,
+	  itmp2,
+	  nslip,
+	  &numslp,
 	  &totalNumberSlipperyNodes,
-	  &numberNodes);
+	  &numnp);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "pointerToX:" << pointerToX
+    << "x:" << x
     << journal::endl;
 
   // return
@@ -1077,25 +1077,25 @@
 
 PyObject * pypylith3d_read_bc(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToBond;
-  double displacementScaleFactor;
-  double velocityScaleFactor;
-  double forceScaleFactor;
-  PyObject* pyPointerToIbond;
-  int numberNodes;
-  int numberBcEntries;
-  int f77FileInput;
+  PyObject* py_bond;
+  double dscale;
+  double vscale;
+  double fscale;
+  PyObject* py_ibond;
+  int numnp;
+  int numbc;
+  int kr;
   char* bcInputFile;
 
   int ok = PyArg_ParseTuple(args, "OdddOiiis:read_bc",
-			    &pyPointerToBond,
-			    &displacementScaleFactor,
-			    &velocityScaleFactor,
-			    &forceScaleFactor,
-			    &pyPointerToIbond,
-			    &numberNodes,
-			    &numberBcEntries,
-			    &f77FileInput,
+			    &py_bond,
+			    &dscale,
+			    &vscale,
+			    &fscale,
+			    &py_ibond,
+			    &numnp,
+			    &numbc,
+			    &kr,
 			    &bcInputFile);
 
   if (!ok) {
@@ -1105,19 +1105,19 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToBond = (double*) PyCObject_AsVoidPtr(pyPointerToBond);
-  int* pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
+  double* bond = (double*) PyCObject_AsVoidPtr(py_bond);
+  int* ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
   int numberConcForces = 0;
 
-  read_bc_f(pointerToBond,
-	    &displacementScaleFactor,
-	    &velocityScaleFactor,
-	    &forceScaleFactor,
-	    pointerToIbond,
-	    &numberNodes,
-	    &numberBcEntries,
+  read_bc_f(bond,
+	    &dscale,
+	    &vscale,
+	    &fscale,
+	    ibond,
+	    &numnp,
+	    &numbc,
 	    &numberConcForces,
-	    &f77FileInput,
+	    &kr,
 	    bcInputFile,
 	    &errorcode,
 	    errorstring,
@@ -1131,7 +1131,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberBcEntries:" << numberBcEntries
+    << "numbc:" << numbc
     << journal::endl;
 
   // return
@@ -1147,23 +1147,23 @@
 
 PyObject * pypylith3d_read_connect(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIen;
-  PyObject* pyPointerToMat;
-  int numberVolumeElementNodes;
-  int numberVolumeElements;
-  int numberNodes;
-  int numberVolumeElementFamilies;
-  int f77FileInput;
+  PyObject* py_ien;
+  PyObject* py_mat;
+  int nen;
+  int numelv;
+  int numnp;
+  int nvfamilies;
+  int kr;
   char* connectivityInputFile;
 
   int ok = PyArg_ParseTuple(args, "OOiiiiis:read_connect",
-                            &pyPointerToIen,
-                            &pyPointerToMat,
-                            &numberVolumeElementNodes,
-                            &numberVolumeElements,
-                            &numberNodes,
-                            &numberVolumeElementFamilies,
-                            &f77FileInput,
+                            &py_ien,
+                            &py_mat,
+                            &nen,
+                            &numelv,
+                            &numnp,
+                            &nvfamilies,
+                            &kr,
                             &connectivityInputFile);
 
   if (!ok) {
@@ -1173,16 +1173,16 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIen = (int*) PyCObject_AsVoidPtr(pyPointerToIen);
-  int* pointerToMat = (int*) PyCObject_AsVoidPtr(pyPointerToMat);
+  int* ien = (int*) PyCObject_AsVoidPtr(py_ien);
+  int* mat = (int*) PyCObject_AsVoidPtr(py_mat);
 
-  read_connect_f(pointerToIen,
-		 pointerToMat,
-		 &numberVolumeElementNodes,
-                 &numberVolumeElements,
-                 &numberNodes,
-                 &numberVolumeElementFamilies,
-		 &f77FileInput,
+  read_connect_f(ien,
+		 mat,
+		 &nen,
+                 &numelv,
+                 &numnp,
+                 &nvfamilies,
+		 &kr,
 		 connectivityInputFile,
 		 &errorcode,
 		 errorstring,
@@ -1196,7 +1196,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElementFamilies:" << numberVolumeElementFamilies
+    << "nvfamilies:" << nvfamilies
     << journal::endl;
 
   // return
@@ -1212,17 +1212,17 @@
 
 PyObject * pypylith3d_read_coords(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToX;
-  double coordinateScaleFactor;
-  int numberNodes;
-  int f77FileInput;
+  PyObject* py_x;
+  double cscale;
+  int numnp;
+  int kr;
   char* coordinateInputFile;
 
   int ok = PyArg_ParseTuple(args, "Odiis:read_coords",
-			    &pyPointerToX,
-			    &coordinateScaleFactor,
-			    &numberNodes,
-			    &f77FileInput,
+			    &py_x,
+			    &cscale,
+			    &numnp,
+			    &kr,
 			    &coordinateInputFile);
 
   if (!ok) {
@@ -1232,12 +1232,12 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
+  double* x = (double*) PyCObject_AsVoidPtr(py_x);
 
-  read_coords_f(pointerToX,
-		&coordinateScaleFactor,
-		&numberNodes,
-		&f77FileInput,
+  read_coords_f(x,
+		&cscale,
+		&numnp,
+		&kr,
 		coordinateInputFile,
 		&errorcode,
 		errorstring,
@@ -1251,7 +1251,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "coordinateScaleFactor:" << coordinateScaleFactor
+    << "cscale:" << cscale
     << journal::endl;
 
   // return
@@ -1267,24 +1267,24 @@
 
 PyObject * pypylith3d_read_diff(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToDiforc;
-  PyObject* pyPointerToNslip;
-  PyObject* pyPointerToIdhist;
-  int numberSlipperyNodeEntries;
-  int numberDifferentialForceEntries;
-  int numberNodes;
-  int f77FileInput;
-  char* differentialForceInputFile;
+  PyObject* py_diforc;
+  PyObject* py_nslip;
+  PyObject* py_idhist;
+  int numslp;
+  int numdif;
+  int numnp;
+  int kr;
+  char* difile;
 
   int ok = PyArg_ParseTuple(args, "OOOiiiis:read_diff",
-			    &pyPointerToDiforc,
-			    &pyPointerToNslip,
-			    &pyPointerToIdhist,
-			    &numberSlipperyNodeEntries,
-			    &numberDifferentialForceEntries,
-			    &numberNodes,
-			    &f77FileInput,
-			    &differentialForceInputFile);
+			    &py_diforc,
+			    &py_nslip,
+			    &py_idhist,
+			    &numslp,
+			    &numdif,
+			    &numnp,
+			    &kr,
+			    &difile);
 
   if (!ok) {
     return 0;
@@ -1293,21 +1293,21 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToDiforc = (double*) PyCObject_AsVoidPtr(pyPointerToDiforc);
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
-  int* pointerToIdhist = (int*) PyCObject_AsVoidPtr(pyPointerToIdhist);
+  double* diforc = (double*) PyCObject_AsVoidPtr(py_diforc);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
+  int* idhist = (int*) PyCObject_AsVoidPtr(py_idhist);
 
-  read_diff_f(pointerToDiforc,
-	      pointerToNslip,
-	      pointerToIdhist,
-	      &numberSlipperyNodeEntries,
-	      &numberDifferentialForceEntries,
-	      &numberNodes,
-	      &f77FileInput,
-	      differentialForceInputFile,
+  read_diff_f(diforc,
+	      nslip,
+	      idhist,
+	      &numslp,
+	      &numdif,
+	      &numnp,
+	      &kr,
+	      difile,
 	      &errorcode,
 	      errorstring,
-	      strlen(differentialForceInputFile),
+	      strlen(difile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1317,7 +1317,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberDifferentialForceEntries:" << numberDifferentialForceEntries
+    << "numdif:" << numdif
     << journal::endl;
 
   // return
@@ -1333,22 +1333,22 @@
 
 PyObject * pypylith3d_read_fuldat(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIprint;
-  int numberFullOutputs;
-  int analysisTypeInt;
-  int numberCycles;
-  int totalNumberTimeSteps;
-  int f77FileInput;
-  char* fullOutputInputFile;
+  PyObject* py_iprint;
+  int icontr;
+  int icode;
+  int ncycle;
+  int lastep;
+  int kr;
+  char* fofile;
 
   int ok = PyArg_ParseTuple(args, "Oiiiiis:read_fuldat",
-			    &pyPointerToIprint,
-			    &numberFullOutputs,
-			    &analysisTypeInt,
-			    &numberCycles,
-			    &totalNumberTimeSteps,
-			    &f77FileInput,
-			    &fullOutputInputFile);
+			    &py_iprint,
+			    &icontr,
+			    &icode,
+			    &ncycle,
+			    &lastep,
+			    &kr,
+			    &fofile);
 
   if (!ok) {
     return 0;
@@ -1357,18 +1357,18 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIprint = (int*) PyCObject_AsVoidPtr(pyPointerToIprint);
+  int* iprint = (int*) PyCObject_AsVoidPtr(py_iprint);
 
-  read_fuldat_f(pointerToIprint,
-		&numberFullOutputs,
-		&analysisTypeInt,
-		&numberCycles,
-		&totalNumberTimeSteps,
-		&f77FileInput,
-		fullOutputInputFile,
+  read_fuldat_f(iprint,
+		&icontr,
+		&icode,
+		&ncycle,
+		&lastep,
+		&kr,
+		fofile,
 		&errorcode,
 		errorstring,
-		strlen(fullOutputInputFile),
+		strlen(fofile),
 		sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1378,7 +1378,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberFullOutputs:" << numberFullOutputs
+    << "icontr:" << icontr
     << journal::endl;
 
   // return
@@ -1394,20 +1394,20 @@
 
 PyObject * pypylith3d_read_hist(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToHistry;
-  PyObject* pyPointerToTimes;
-  int numberLoadHistories;
-  int totalNumberTimeSteps;
-  int f77FileInput;
-  char* loadHistoryInputFile;
+  PyObject* py_histry;
+  PyObject* py_times;
+  int nhist;
+  int lastep;
+  int kr;
+  char* hfile;
 
   int ok = PyArg_ParseTuple(args, "OOiiis:read_hist",
-			    &pyPointerToHistry,
-			    &pyPointerToTimes,
-			    &numberLoadHistories,
-			    &totalNumberTimeSteps,
-			    &f77FileInput,
-			    &loadHistoryInputFile);
+			    &py_histry,
+			    &py_times,
+			    &nhist,
+			    &lastep,
+			    &kr,
+			    &hfile);
 
   if (!ok) {
     return 0;
@@ -1416,18 +1416,18 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToHistry = (double*) PyCObject_AsVoidPtr(pyPointerToHistry);
-  double* pointerToTimes = (double*) PyCObject_AsVoidPtr(pyPointerToTimes);
+  double* histry = (double*) PyCObject_AsVoidPtr(py_histry);
+  double* times = (double*) PyCObject_AsVoidPtr(py_times);
 
-  read_hist_f(pointerToHistry,
-	      pointerToTimes,
-	      &numberLoadHistories,
-	      &totalNumberTimeSteps,
-	      &f77FileInput,
-	      loadHistoryInputFile,
+  read_hist_f(histry,
+	      times,
+	      &nhist,
+	      &lastep,
+	      &kr,
+	      hfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(loadHistoryInputFile),
+	      strlen(hfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1437,7 +1437,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberLoadHistories:" << numberLoadHistories
+    << "nhist:" << nhist
     << journal::endl;
 
   // return
@@ -1453,36 +1453,36 @@
 
 // PyObject * pypylith3d_read_prestr(PyObject *, PyObject *args)
 // {
-  // PyObject* pyPointerToStn;
-  // PyObject* pyPointerToSt0;
-  // PyObject* pyPointerToListArrayPrscal;
+  // PyObject* py_stn;
+  // PyObject* py_st0;
+  // PyObject* py_prscal;
   // int numberStressComponents;
   // int numberGaussPoints;
   // int numberPrestressGaussPoints;
   // int numberElements;
   // int numberPrestressEntries;
-  // int prestressAutoComputeInt;
-  // int asciiOutputInt;
-  // int f77FileInput;
-  // int f77AsciiOutput;
+  // int ipstrs;
+  // int idout;
+  // int kr;
+  // int kw;
   // char* prestressInputFile;
-  // char* asciiOutputFile;
+  // char* ofile;
 
   // int ok = PyArg_ParseTuple(args, "OOOiiiiiiiiiss:read_prestr",
-			    // &pyPointerToStn,
-			    // &pyPointerToSt0,
-			    // &pyPointerToListArrayPrscal,
+			    // &py_stn,
+			    // &py_st0,
+			    // &py_prscal,
 			    // &numberStressComponents,
 			    // &numberGaussPoints,
 			    // &numberPrestressGaussPoints,
 			    // &numberElements,
 			    // &numberPrestressEntries,
-			    // &prestressAutoComputeInt,
-			    // &asciiOutputInt,
-			    // &f77FileInput,
-			    // &f77AsciiOutput,
+			    // &ipstrs,
+			    // &idout,
+			    // &kr,
+			    // &kw,
 			    // &prestressInputFile,
-			    // &asciiOutputFile);
+			    // &ofile);
 
   // if (!ok) {
     // return 0;
@@ -1491,27 +1491,27 @@
   // int errorcode = 0;
   // const int maxsize = 4096;
   // char errorstring[maxsize];
-  // double* pointerToStn = (double*) PyCObject_AsVoidPtr(pyPointerToStn);
-  // double* pointerToSt0 = (double*) PyCObject_AsVoidPtr(pyPointerToSt0);
-  // double* pointerToListArrayPrscal = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayPrscal);
+  // double* stn = (double*) PyCObject_AsVoidPtr(py_stn);
+  // double* st0 = (double*) PyCObject_AsVoidPtr(py_st0);
+  // double* prscal = (double*) PyCObject_AsVoidPtr(py_prscal);
 
-  // read_prestr_f(pointerToStn,
-		// pointerToSt0,
-		// pointerToListArrayPrscal,
+  // read_prestr_f(stn,
+		// st0,
+		// prscal,
 		// &numberStressComponents,
 		// &numberGaussPoints,
 		// &numberPrestressGaussPoints,
 		// &numberElements,
 		// &numberPrestressEntries,
-		// &prestressAutoComputeInt,
-		// &asciiOutputInt,
-		// &f77FileInput,
-		// &f77AsciiOutput,
+		// &ipstrs,
+		// &idout,
+		// &kr,
+		// &kw,
 		// &errorcode,
 		// prestressInputFile,
-		// asciiOutputFile,
+		// ofile,
 		// strlen(prestressInputFile),
-		// strlen(asciiOutputFile));
+		// strlen(ofile));
     
 // if(0 != exceptionhandler(errorcode, errorstring)) {
     // return 0;
@@ -1536,22 +1536,22 @@
 
 PyObject * pypylith3d_read_skew(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToSkew;
-  double rotationScaleFactor;
-  int numberRotationEntries;
-  int numberNodes;
-  int autoRotateSlipperyNodesInt;
-  int f77FileInput;
-  char* rotationInputFile;
+  PyObject* py_skew;
+  double runits;
+  int numrot;
+  int numnp;
+  int iskopt;
+  int kr;
+  char* skfile;
 
   int ok = PyArg_ParseTuple(args, "Odiiiis:read_skew",
-			    &pyPointerToSkew,
-			    &rotationScaleFactor,
-			    &numberRotationEntries,
-			    &numberNodes,
-			    &autoRotateSlipperyNodesInt,
-			    &f77FileInput,
-			    &rotationInputFile);
+			    &py_skew,
+			    &runits,
+			    &numrot,
+			    &numnp,
+			    &iskopt,
+			    &kr,
+			    &skfile);
 
   if (!ok) {
     return 0;
@@ -1560,18 +1560,18 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToSkew = (double*) PyCObject_AsVoidPtr(pyPointerToSkew);
+  double* skew = (double*) PyCObject_AsVoidPtr(py_skew);
 
-  read_skew_f(pointerToSkew,
-	      &rotationScaleFactor,
-	      &numberRotationEntries,
-	      &numberNodes,
-	      &autoRotateSlipperyNodesInt,
-	      &f77FileInput,
-	      rotationInputFile,
+  read_skew_f(skew,
+	      &runits,
+	      &numrot,
+	      &numnp,
+	      &iskopt,
+	      &kr,
+	      skfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(rotationInputFile),
+	      strlen(skfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1581,7 +1581,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberRotationEntries:" << numberRotationEntries
+    << "numrot:" << numrot
     << journal::endl;
 
   // return
@@ -1597,20 +1597,20 @@
 
 PyObject * pypylith3d_read_slip(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToNslip;
-  int numberSlipperyNodeEntries;
-  int numberNodes;
-  int autoRotateSlipperyNodesInt;
-  int f77FileInput;
-  char* slipperyNodeInputFile;
+  PyObject* py_nslip;
+  int numslp;
+  int numnp;
+  int iskopt;
+  int kr;
+  char* slfile;
 
   int ok = PyArg_ParseTuple(args, "Oiiiis:read_slip",
-			    &pyPointerToNslip,
-			    &numberSlipperyNodeEntries,
-			    &numberNodes,
-			    &autoRotateSlipperyNodesInt,
-			    &f77FileInput,
-			    &slipperyNodeInputFile);
+			    &py_nslip,
+			    &numslp,
+			    &numnp,
+			    &iskopt,
+			    &kr,
+			    &slfile);
 
   if (!ok) {
     return 0;
@@ -1619,19 +1619,19 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
   int totalNumberSlipperyNodes = 0;
 
-  read_slip_f(pointerToNslip,
-	      &numberSlipperyNodeEntries,
+  read_slip_f(nslip,
+	      &numslp,
 	      &totalNumberSlipperyNodes,
-	      &numberNodes,
-	      &autoRotateSlipperyNodesInt,
-	      &f77FileInput,
-	      slipperyNodeInputFile,
+	      &numnp,
+	      &iskopt,
+	      &kr,
+	      slfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(slipperyNodeInputFile),
+	      strlen(slfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1657,22 +1657,22 @@
 
 PyObject * pypylith3d_read_split(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToFault;
-  PyObject* pyPointerToNfault;
-  int numberSplitNodeEntries;
-  int numberNodes;
-  int numberVolumeElements;
-  int f77FileInput;
-  char* splitNodeInputFile;
+  PyObject* py_fault;
+  PyObject* py_nfault;
+  int numfn;
+  int numnp;
+  int numelv;
+  int kr;
+  char* spfile;
 
   int ok = PyArg_ParseTuple(args, "OOiiiis:read_split",
-			    &pyPointerToFault,
-			    &pyPointerToNfault,
-			    &numberSplitNodeEntries,
-			    &numberNodes,
-			    &numberVolumeElements,
-			    &f77FileInput,
-			    &splitNodeInputFile);
+			    &py_fault,
+			    &py_nfault,
+			    &numfn,
+			    &numnp,
+			    &numelv,
+			    &kr,
+			    &spfile);
 
   if (!ok) {
     return 0;
@@ -1681,21 +1681,21 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToFault = (double*) PyCObject_AsVoidPtr(pyPointerToFault);
-  int* pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
+  double* fault = (double*) PyCObject_AsVoidPtr(py_fault);
+  int* nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
   int totalNumberSplitNodes = 0;
 
-  read_split_f(pointerToFault,
-	       pointerToNfault,
-	       &numberSplitNodeEntries,
+  read_split_f(fault,
+	       nfault,
+	       &numfn,
 	       &totalNumberSplitNodes,
-	       &numberNodes,
-	       &numberVolumeElements,
-	       &f77FileInput,
-	       splitNodeInputFile,
+	       &numnp,
+	       &numelv,
+	       &kr,
+	       spfile,
 	       &errorcode,
 	       errorstring,
-	       strlen(splitNodeInputFile),
+	       strlen(spfile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1721,16 +1721,16 @@
 
 PyObject * pypylith3d_read_stateout(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  int f77FileInput;
-  char* stateVariableInputFile;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  int kr;
+  char* stfile;
 
   int ok = PyArg_ParseTuple(args, "OOis:read_stateout",
-			    &pyPointerToIstatout,
-			    &pyPointerToNstatout,
-			    &f77FileInput,
-			    &stateVariableInputFile);
+			    &py_istatout,
+			    &py_nstatout,
+			    &kr,
+			    &stfile);
 
   if (!ok) {
     return 0;
@@ -1739,16 +1739,16 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int* pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  int* istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int* nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
-  read_stateout_f(pointerToIstatout,
-	          pointerToNstatout,
-	          &f77FileInput,
-	          stateVariableInputFile,
+  read_stateout_f(istatout,
+	          nstatout,
+	          &kr,
+	          stfile,
 	          &errorcode,
 	          errorstring,
-	          strlen(stateVariableInputFile),
+	          strlen(stfile),
 	          sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1758,7 +1758,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "pointerToIstatout:" << pointerToIstatout
+    << "istatout:" << istatout
     << journal::endl;
 
   // return
@@ -1774,39 +1774,39 @@
 
 PyObject * pypylith3d_read_timdat(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToDelt;
-  PyObject* pyPointerToAlfa;
-  PyObject* pyPointerToUtol;
-  PyObject* pyPointerToFtol;
-  PyObject* pyPointerToEtol;
-  PyObject* pyPointerToTimes;
-  double timeScaleFactor;
-  PyObject* pyPointerToMaxstp;
-  PyObject* pyPointerToMaxit;
-  PyObject* pyPointerToNtdinit;
-  PyObject* pyPointerToLgdef;
-  PyObject* pyPointerToItmax;
-  int numberTimeStepGroups;
-  int totalNumberTimeSteps;
-  int f77FileInput;
+  PyObject* py_delt;
+  PyObject* py_alfa;
+  PyObject* py_utol;
+  PyObject* py_ftol;
+  PyObject* py_etol;
+  PyObject* py_times;
+  double tunits;
+  PyObject* py_maxstp;
+  PyObject* py_maxit;
+  PyObject* py_ntdinit;
+  PyObject* py_lgdef;
+  PyObject* py_itmax;
+  int nintg;
+  int lastep;
+  int kr;
   char* timeStepInputFile;
 
   int ok = PyArg_ParseTuple(args, "OOOOOOdOOOOOiiis:read_timdat",
-			    &pyPointerToDelt,
-			    &pyPointerToAlfa,
-			    &pyPointerToUtol,
-			    &pyPointerToFtol,
-			    &pyPointerToEtol,
-			    &pyPointerToTimes,
-			    &timeScaleFactor,
-			    &pyPointerToMaxstp,
-			    &pyPointerToMaxit,
-			    &pyPointerToNtdinit,
-			    &pyPointerToLgdef,
-			    &pyPointerToItmax,
-			    &numberTimeStepGroups,
-			    &totalNumberTimeSteps,
-			    &f77FileInput,
+			    &py_delt,
+			    &py_alfa,
+			    &py_utol,
+			    &py_ftol,
+			    &py_etol,
+			    &py_times,
+			    &tunits,
+			    &py_maxstp,
+			    &py_maxit,
+			    &py_ntdinit,
+			    &py_lgdef,
+			    &py_itmax,
+			    &nintg,
+			    &lastep,
+			    &kr,
 			    &timeStepInputFile);
 
   if (!ok) {
@@ -1816,33 +1816,33 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToDelt = (double*) PyCObject_AsVoidPtr(pyPointerToDelt);
-  double* pointerToAlfa = (double*) PyCObject_AsVoidPtr(pyPointerToAlfa);
-  double* pointerToUtol = (double*) PyCObject_AsVoidPtr(pyPointerToUtol);
-  double* pointerToFtol = (double*) PyCObject_AsVoidPtr(pyPointerToFtol);
-  double* pointerToEtol = (double*) PyCObject_AsVoidPtr(pyPointerToEtol);
-  double* pointerToTimes = (double*) PyCObject_AsVoidPtr(pyPointerToTimes);
-  int* pointerToMaxstp = (int*) PyCObject_AsVoidPtr(pyPointerToMaxstp);
-  int* pointerToMaxit = (int*) PyCObject_AsVoidPtr(pyPointerToMaxit);
-  int* pointerToNtdinit = (int*) PyCObject_AsVoidPtr(pyPointerToNtdinit);
-  int* pointerToLgdef = (int*) PyCObject_AsVoidPtr(pyPointerToLgdef);
-  int* pointerToItmax = (int*) PyCObject_AsVoidPtr(pyPointerToItmax);
+  double* delt = (double*) PyCObject_AsVoidPtr(py_delt);
+  double* alfa = (double*) PyCObject_AsVoidPtr(py_alfa);
+  double* utol = (double*) PyCObject_AsVoidPtr(py_utol);
+  double* ftol = (double*) PyCObject_AsVoidPtr(py_ftol);
+  double* etol = (double*) PyCObject_AsVoidPtr(py_etol);
+  double* times = (double*) PyCObject_AsVoidPtr(py_times);
+  int* maxstp = (int*) PyCObject_AsVoidPtr(py_maxstp);
+  int* maxit = (int*) PyCObject_AsVoidPtr(py_maxit);
+  int* ntdinit = (int*) PyCObject_AsVoidPtr(py_ntdinit);
+  int* lgdef = (int*) PyCObject_AsVoidPtr(py_lgdef);
+  int* itmax = (int*) PyCObject_AsVoidPtr(py_itmax);
 
-  read_timdat_f(pointerToDelt,
-		pointerToAlfa,
-		pointerToUtol,
-		pointerToFtol,
-		pointerToEtol,
-		pointerToTimes,
-		&timeScaleFactor,
-		pointerToMaxstp,
-		pointerToMaxit,
-		pointerToNtdinit,
-		pointerToLgdef,
-		pointerToItmax,
-		&numberTimeStepGroups,
-		&totalNumberTimeSteps,
-		&f77FileInput,
+  read_timdat_f(delt,
+		alfa,
+		utol,
+		ftol,
+		etol,
+		times,
+		&tunits,
+		maxstp,
+		maxit,
+		ntdinit,
+		lgdef,
+		itmax,
+		&nintg,
+		&lastep,
+		&kr,
 		timeStepInputFile,
 		&errorcode,
 		errorstring,
@@ -1856,7 +1856,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "totalNumberTimeSteps:" << totalNumberTimeSteps
+    << "lastep:" << lastep
     << journal::endl;
 
   // return
@@ -1872,21 +1872,21 @@
 
 PyObject * pypylith3d_read_tractions(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToTractionverts;
-  PyObject* pyPointerToTractionvals;
-  double tractionScaleFactor;
-  int numberTractionBc;
+  PyObject* py_tractionverts;
+  PyObject* py_tractionvals;
+  double tscale;
+  int numtractions;
   int numberSurfaceElementNodes;
-  int f77FileInput;
+  int kr;
   char* tractionInputFile;
 
   int ok = PyArg_ParseTuple(args, "OOdiiis:read_tractions",
-			    &pyPointerToTractionverts,
-			    &pyPointerToTractionvals,
-			    &tractionScaleFactor,
-			    &numberTractionBc,
+			    &py_tractionverts,
+			    &py_tractionvals,
+			    &tscale,
+			    &numtractions,
 			    &numberSurfaceElementNodes,
-			    &f77FileInput,
+			    &kr,
 			    &tractionInputFile);
 
   if (!ok) {
@@ -1896,15 +1896,15 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToTractionverts = (int*) PyCObject_AsVoidPtr(pyPointerToTractionverts);
-  double* pointerToTractionvals = (double*) PyCObject_AsVoidPtr(pyPointerToTractionvals);
+  int* tractionverts = (int*) PyCObject_AsVoidPtr(py_tractionverts);
+  double* tractionvals = (double*) PyCObject_AsVoidPtr(py_tractionvals);
 
-  read_tractions_f(pointerToTractionverts,
-		   pointerToTractionvals,
-		   &tractionScaleFactor,
-		   &numberTractionBc,
+  read_tractions_f(tractionverts,
+		   tractionvals,
+		   &tscale,
+		   &numtractions,
 		   &numberSurfaceElementNodes,
-		   &f77FileInput,
+		   &kr,
 		   tractionInputFile,
 		   &errorcode,
 		   errorstring,
@@ -1918,7 +1918,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "tractionScaleFactor:" << tractionScaleFactor
+    << "tscale:" << tscale
     << journal::endl;
 
   // return
@@ -1934,24 +1934,24 @@
 
 PyObject * pypylith3d_read_wink(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToWinkdef;
-  PyObject* pyPointerToListArrayWscal;
-  PyObject* pyPointerToIwinkdef;
-  PyObject* pyPointerToIwinkid;
-  int numberWinklerForces;
-  int numberWinklerEntries;
-  int f77FileInput;
-  char* winklerInputFile;
+  PyObject* py_winkdef;
+  PyObject* py_wscal;
+  PyObject* py_iwinkdef;
+  PyObject* py_iwinkid;
+  int nwink;
+  int nwinke;
+  int kr;
+  char* wfile;
 
   int ok = PyArg_ParseTuple(args, "OOOOiiis:read_wink",
-			    &pyPointerToWinkdef,
-			    &pyPointerToListArrayWscal,
-			    &pyPointerToIwinkdef,
-			    &pyPointerToIwinkid,
-			    &numberWinklerForces,
-			    &numberWinklerEntries,
-			    &f77FileInput,
-			    &winklerInputFile);
+			    &py_winkdef,
+			    &py_wscal,
+			    &py_iwinkdef,
+			    &py_iwinkid,
+			    &nwink,
+			    &nwinke,
+			    &kr,
+			    &wfile);
 
   if (!ok) {
     return 0;
@@ -1960,22 +1960,22 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToWinkdef = (double*) PyCObject_AsVoidPtr(pyPointerToWinkdef);
-  double* pointerToListArrayWscal = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayWscal);
-  int* pointerToIwinkdef = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkdef);
-  int* pointerToIwinkid = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkid);
+  double* winkdef = (double*) PyCObject_AsVoidPtr(py_winkdef);
+  double* wscal = (double*) PyCObject_AsVoidPtr(py_wscal);
+  int* iwinkdef = (int*) PyCObject_AsVoidPtr(py_iwinkdef);
+  int* iwinkid = (int*) PyCObject_AsVoidPtr(py_iwinkid);
 
-  read_wink_f(pointerToWinkdef,
-	      pointerToListArrayWscal,
-	      pointerToIwinkdef,
-	      pointerToIwinkid,
-	      &numberWinklerForces,
-	      &numberWinklerEntries,
-	      &f77FileInput,
-	      winklerInputFile,
+  read_wink_f(winkdef,
+	      wscal,
+	      iwinkdef,
+	      iwinkid,
+	      &nwink,
+	      &nwinke,
+	      &kr,
+	      wfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(winklerInputFile),
+	      strlen(wfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -1985,7 +1985,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberWinklerForces:" << numberWinklerForces
+    << "nwink:" << nwink
     << journal::endl;
 
   // return
@@ -2001,40 +2001,40 @@
 
 PyObject * pypylith3d_sort_elements(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIen;
-  PyObject* pyPointerToMat;
-  PyObject* pyPointerToMaterialModelInfo;
-  PyObject* pyPointerToVolumeElementFamilyList;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToIvftmp;
-  PyObject* pyPointerToIndxiel;
-  PyObject* pyPointerToIelindx;
-  int numberVolumeElementNodes;
-  int numberVolumeElementGaussPoints;
-  int maxNumberVolumeElementFamilies;
-  int numberVolumeElementFamilies;
+  PyObject* py_ien;
+  PyObject* py_mat;
+  PyObject* py_infmatmod;
+  PyObject* py_volumeElementFamilyList;
+  PyObject* py_ivfamily;
+  PyObject* py_iens;
+  PyObject* py_ivftmp;
+  PyObject* py_indxiel;
+  PyObject* py_ielindx;
+  int nen;
+  int ngauss;
+  int maxvfamilies;
+  int nvfamilies;
   int prestressFlag;
-  int numberVolumeElements;
-  int numberNodes;
+  int numelv;
+  int numnp;
 
   int ok = PyArg_ParseTuple(args, "OOOOOOOOOiiiiiii:sort_elements",
-			    &pyPointerToIen,
-			    &pyPointerToMat,
-			    &pyPointerToMaterialModelInfo,
-			    &pyPointerToVolumeElementFamilyList,
-			    &pyPointerToIvfamily,
-			    &pyPointerToIens,
-			    &pyPointerToIvftmp,
-			    &pyPointerToIndxiel,
-			    &pyPointerToIelindx,
-			    &numberVolumeElementNodes,
-			    &numberVolumeElementGaussPoints,
-			    &maxNumberVolumeElementFamilies,
-			    &numberVolumeElementFamilies,
+			    &py_ien,
+			    &py_mat,
+			    &py_infmatmod,
+			    &py_volumeElementFamilyList,
+			    &py_ivfamily,
+			    &py_iens,
+			    &py_ivftmp,
+			    &py_indxiel,
+			    &py_ielindx,
+			    &nen,
+			    &ngauss,
+			    &maxvfamilies,
+			    &nvfamilies,
 			    &prestressFlag,
-			    &numberVolumeElements,
-			    &numberNodes);
+			    &numelv,
+			    &numnp);
 
   if (!ok) {
     return 0;
@@ -2043,35 +2043,35 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIen = (int*) PyCObject_AsVoidPtr(pyPointerToIen);
-  int* pointerToMat = (int*) PyCObject_AsVoidPtr(pyPointerToMat);
-  int* pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
-  int* pointerToVolumeElementFamilyList = (int*) PyCObject_AsVoidPtr(pyPointerToVolumeElementFamilyList);
-  int* pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int* pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int* pointerToIvftmp = (int*) PyCObject_AsVoidPtr(pyPointerToIvftmp);
-  int* pointerToIndxiel = (int*) PyCObject_AsVoidPtr(pyPointerToIndxiel);
-  int* pointerToIelindx = (int*) PyCObject_AsVoidPtr(pyPointerToIelindx);
+  int* ien = (int*) PyCObject_AsVoidPtr(py_ien);
+  int* mat = (int*) PyCObject_AsVoidPtr(py_mat);
+  int* infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
+  int* ivflist = (int*) PyCObject_AsVoidPtr(py_volumeElementFamilyList);
+  int* ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int* iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int* ivftmp = (int*) PyCObject_AsVoidPtr(py_ivftmp);
+  int* indxiel = (int*) PyCObject_AsVoidPtr(py_indxiel);
+  int* ielindx = (int*) PyCObject_AsVoidPtr(py_ielindx);
   int stateSize = 0;
   int state0Size = 0;
   int propertySize = 0;
 
-  sort_elements_f(pointerToIen,
-		  pointerToMat,
-		  pointerToMaterialModelInfo,
-		  pointerToVolumeElementFamilyList,
-		  pointerToIvfamily,
-		  pointerToIens,
-		  pointerToIvftmp,
-		  pointerToIndxiel,
-		  pointerToIelindx,
-		  &numberVolumeElementNodes,
-		  &numberVolumeElementGaussPoints,
-		  &maxNumberVolumeElementFamilies,
-		  &numberVolumeElementFamilies,
+  sort_elements_f(ien,
+		  mat,
+		  infmatmod,
+		  ivflist,
+		  ivfamily,
+		  iens,
+		  ivftmp,
+		  indxiel,
+		  ielindx,
+		  &nen,
+		  &ngauss,
+		  &maxvfamilies,
+		  &nvfamilies,
 		  &prestressFlag,
-		  &numberVolumeElements,
-		  &numberNodes,
+		  &numelv,
+		  &numnp,
 		  &stateSize,
 		  &state0Size,
 		  &propertySize,
@@ -2104,33 +2104,33 @@
 
 PyObject * pypylith3d_sort_slip_nodes(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToNslip;
-  PyObject* pyPointerToIndxiel;
-  int numberSlipperyNodeEntries;
-  int numberVolumeElements;
+  PyObject* py_nslip;
+  PyObject* py_indxiel;
+  int numslp;
+  int numelv;
 
   int ok = PyArg_ParseTuple(args, "OOii:sort_slip_nodes",
-			    &pyPointerToNslip,
-			    &pyPointerToIndxiel,
-			    &numberSlipperyNodeEntries,
-			    &numberVolumeElements);
+			    &py_nslip,
+			    &py_indxiel,
+			    &numslp,
+			    &numelv);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
-  int* pointerToIndxiel = (int*) PyCObject_AsVoidPtr(pyPointerToIndxiel);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
+  int* indxiel = (int*) PyCObject_AsVoidPtr(py_indxiel);
 
-  sort_slip_nodes_f(pointerToNslip,
-		    pointerToIndxiel,
-		    &numberSlipperyNodeEntries,
-		    &numberVolumeElements);
+  sort_slip_nodes_f(nslip,
+		    indxiel,
+		    &numslp,
+		    &numelv);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSlipperyNodeEntries:" << numberSlipperyNodeEntries
+    << "numslp:" << numslp
     << journal::endl;
 
   // return
@@ -2147,33 +2147,33 @@
 
 PyObject * pypylith3d_sort_split_nodes(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToNfault;
-  PyObject* pyPointerToIndxiel;
-  int numberSplitNodeEntries;
-  int numberVolumeElements;
+  PyObject* py_nfault;
+  PyObject* py_indxiel;
+  int numfn;
+  int numelv;
 
   int ok = PyArg_ParseTuple(args, "OOii:sort_split_nodes",
-			    &pyPointerToNfault,
-			    &pyPointerToIndxiel,
-			    &numberSplitNodeEntries,
-			    &numberVolumeElements);
+			    &py_nfault,
+			    &py_indxiel,
+			    &numfn,
+			    &numelv);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
-  int* pointerToIndxiel = (int*) PyCObject_AsVoidPtr(pyPointerToIndxiel);
+  int* nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
+  int* indxiel = (int*) PyCObject_AsVoidPtr(py_indxiel);
 
-  sort_split_nodes_f(pointerToNfault,
-		    pointerToIndxiel,
-		    &numberSplitNodeEntries,
-		    &numberVolumeElements);
+  sort_split_nodes_f(nfault,
+		    indxiel,
+		    &numfn,
+		    &numelv);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSplitNodeEntries:" << numberSplitNodeEntries
+    << "numfn:" << numfn
     << journal::endl;
 
   // return
@@ -2189,20 +2189,20 @@
 
 PyObject * pypylith3d_cmp_stiffsz(PyObject *, PyObject *args)
 {
-  int numberGlobalEquations;
-  PyObject* pyPointerToLm;
-  PyObject* pyPointerToLmx;
-  int numberVolumeElements;
+  int neq;
+  PyObject* py_lm;
+  PyObject* py_lmx;
+  int numelv;
   int totalNumberSlipperyNodes;
-  int numberVolumeElementNodes;
+  int nen;
 
   int ok = PyArg_ParseTuple(args, "iOOiii:cmp_stiffsz",
-			    &numberGlobalEquations,
-			    &pyPointerToLm,
-			    &pyPointerToLmx,
-			    &numberVolumeElements,
+			    &neq,
+			    &py_lm,
+			    &py_lmx,
+			    &numelv,
 			    &totalNumberSlipperyNodes,
-			    &numberVolumeElementNodes);
+			    &nen);
 
   if (!ok) {
     return 0;
@@ -2211,17 +2211,17 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
-  int* pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int workingArraySize = 0;
+  int* lm = (int*) PyCObject_AsVoidPtr(py_lm);
+  int* lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int iwork = 0;
 
-  cmp_stiffsz_f(&numberGlobalEquations,
-	   	pointerToLm,
-	   	pointerToLmx,
-	   	&numberVolumeElements,
-	   	&workingArraySize,
+  cmp_stiffsz_f(&neq,
+	   	lm,
+	   	lmx,
+	   	&numelv,
+	   	&iwork,
 	   	&totalNumberSlipperyNodes,
-	   	&numberVolumeElementNodes,
+	   	&nen,
 	   	&errorcode,
 	   	errorstring,
 	   	sizeof(errorstring));
@@ -2233,12 +2233,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "workingArraySize:" << workingArraySize
+    << "iwork:" << iwork
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue("i", workingArraySize);
+  return Py_BuildValue("i", iwork);
 }
 
 
@@ -2250,29 +2250,29 @@
 
 PyObject * pypylith3d_lnklst(PyObject *, PyObject *args)
 {
-  int numberGlobalEquations;
-  PyObject* pyPointerToLm;
-  PyObject* pyPointerToLmx;
-  int numberVolumeElements;
-  int numberVolumeElementNodes;
+  int neq;
+  PyObject* py_lm;
+  PyObject* py_lmx;
+  int numelv;
+  int nen;
   int numberVolumeElementEquations;
-  PyObject* pyPointerToIndx;
-  PyObject* pyPointerToLink;
-  PyObject* pyPointerToNbrs;
-  int workingArraySize;
+  PyObject* py_indx;
+  PyObject* py_link;
+  PyObject* py_nbrs;
+  int iwork;
   int totalNumberSlipperyNodes;
 
   int ok = PyArg_ParseTuple(args, "iOOiiiOOOii:lnklst",
-			    &numberGlobalEquations,
-			    &pyPointerToLm,
-			    &pyPointerToLmx,
-			    &numberVolumeElements,
-			    &numberVolumeElementNodes,
+			    &neq,
+			    &py_lm,
+			    &py_lmx,
+			    &numelv,
+			    &nen,
 			    &numberVolumeElementEquations,
-			    &pyPointerToIndx,
-			    &pyPointerToLink,
-			    &pyPointerToNbrs,
-			    &workingArraySize,
+			    &py_indx,
+			    &py_link,
+			    &py_nbrs,
+			    &iwork,
 			    &totalNumberSlipperyNodes);
 
   if (!ok) {
@@ -2282,24 +2282,24 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
-  int* pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int* pointerToIndx = (int*) PyCObject_AsVoidPtr(pyPointerToIndx);
-  int* pointerToLink = (int*) PyCObject_AsVoidPtr(pyPointerToLink);
-  int* pointerToNbrs = (int*) PyCObject_AsVoidPtr(pyPointerToNbrs);
+  int* lm = (int*) PyCObject_AsVoidPtr(py_lm);
+  int* lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int* indx = (int*) PyCObject_AsVoidPtr(py_indx);
+  int* link = (int*) PyCObject_AsVoidPtr(py_link);
+  int* nbrs = (int*) PyCObject_AsVoidPtr(py_nbrs);
   int stiffnessMatrixSize =0;
   int stiffnessOffDiagonalSize =0;
 
-  lnklst_f(&numberGlobalEquations,
-	   pointerToLm,
-	   pointerToLmx,
-	   &numberVolumeElements,
-	   &numberVolumeElementNodes,
+  lnklst_f(&neq,
+	   lm,
+	   lmx,
+	   &numelv,
+	   &nen,
 	   &numberVolumeElementEquations,
-	   pointerToIndx,
-	   pointerToLink,
-	   pointerToNbrs,
-	   &workingArraySize,
+	   indx,
+	   link,
+	   nbrs,
+	   &iwork,
 	   &stiffnessOffDiagonalSize,
 	   &stiffnessMatrixSize,
 	   &totalNumberSlipperyNodes,
@@ -2330,40 +2330,40 @@
 
 PyObject * pypylith3d_local(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToId;
-  int numberNodes;
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToLm;
-  int numberVolumeElements;
-  int numberVolumeElementNodes;
+  PyObject* py_id;
+  int numnp;
+  PyObject* py_iens;
+  PyObject* py_lm;
+  int numelv;
+  int nen;
 
   int ok = PyArg_ParseTuple(args, "OiOOii:local",
-			    &pyPointerToId,
-			    &numberNodes,
-			    &pyPointerToIens,
-			    &pyPointerToLm,
-			    &numberVolumeElements,
-			    &numberVolumeElementNodes);
+			    &py_id,
+			    &numnp,
+			    &py_iens,
+			    &py_lm,
+			    &numelv,
+			    &nen);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
-  int* pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int* pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
+  int* id = (int*) PyCObject_AsVoidPtr(py_id);
+  int* iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int* lm = (int*) PyCObject_AsVoidPtr(py_lm);
 
-  local_f(pointerToId,
-	  &numberNodes,
-	  pointerToIens,
-	  pointerToLm,
-	  &numberVolumeElements,
-	  &numberVolumeElementNodes);
+  local_f(id,
+	  &numnp,
+	  iens,
+	  lm,
+	  &numelv,
+	  &nen);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElements:" << numberVolumeElements
+    << "numelv:" << numelv
     << journal::endl;
 
   // return
@@ -2379,40 +2379,40 @@
 
 PyObject * pypylith3d_localf(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToLmf;
-  int numberVolumeElements;
-  PyObject* pyPointerToNfault;
-  int numberSplitNodeEntries;
-  int numberVolumeElementNodes;
+  PyObject* py_iens;
+  PyObject* py_lmf;
+  int numelv;
+  PyObject* py_nfault;
+  int numfn;
+  int nen;
 
   int ok = PyArg_ParseTuple(args, "OOiOii:localf",
-			    &pyPointerToIens,
-			    &pyPointerToLmf,
-			    &numberVolumeElements,
-			    &pyPointerToNfault,
-			    &numberSplitNodeEntries,
-			    &numberVolumeElementNodes);
+			    &py_iens,
+			    &py_lmf,
+			    &numelv,
+			    &py_nfault,
+			    &numfn,
+			    &nen);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int* pointerToLmf = (int*) PyCObject_AsVoidPtr(pyPointerToLmf);
-  int* pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
+  int* iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int* lmf = (int*) PyCObject_AsVoidPtr(py_lmf);
+  int* nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
 
-  localf_f(pointerToIens,
-	   pointerToLmf,
-	   &numberVolumeElements,
-	   pointerToNfault,
-	   &numberSplitNodeEntries,
-	   &numberVolumeElementNodes);
+  localf_f(iens,
+	   lmf,
+	   &numelv,
+	   nfault,
+	   &numfn,
+	   &nen);
 		  
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSplitNodeEntries:" << numberSplitNodeEntries
+    << "numfn:" << numfn
     << journal::endl;
 
   // return
@@ -2428,47 +2428,47 @@
 
 PyObject * pypylith3d_localx(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIdx;
-  int numberNodes;
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToLmx;
-  int numberVolumeElements;
-  PyObject* pyPointerToNslip;
-  int numberSlipperyNodeEntries;
-  int numberVolumeElementNodes;
+  PyObject* py_idx;
+  int numnp;
+  PyObject* py_iens;
+  PyObject* py_lmx;
+  int numelv;
+  PyObject* py_nslip;
+  int numslp;
+  int nen;
 
   int ok = PyArg_ParseTuple(args, "OiOOiOii:localx",
-			    &pyPointerToIdx,
-  			    &numberNodes,
-  			    &pyPointerToIens,
-  			    &pyPointerToLmx,
-  			    &numberVolumeElements,
-  			    &pyPointerToNslip,
-			    &numberSlipperyNodeEntries,
-  			    &numberVolumeElementNodes);
+			    &py_idx,
+  			    &numnp,
+  			    &py_iens,
+  			    &py_lmx,
+  			    &numelv,
+  			    &py_nslip,
+			    &numslp,
+  			    &nen);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToIdx = (int*) PyCObject_AsVoidPtr(pyPointerToIdx);
-  int* pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int* pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
+  int* idx = (int*) PyCObject_AsVoidPtr(py_idx);
+  int* iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int* lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
 
-  localx_f(pointerToIdx,
-	   &numberNodes,
-	   pointerToIens,
-	   pointerToLmx,
-	   &numberVolumeElements,
-	   pointerToNslip,
-	   &numberSlipperyNodeEntries,
-	   &numberVolumeElementNodes);
+  localx_f(idx,
+	   &numnp,
+	   iens,
+	   lmx,
+	   &numelv,
+	   nslip,
+	   &numslp,
+	   &nen);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElements:" << numberVolumeElements
+    << "numelv:" << numelv
     << journal::endl;
 
   // return
@@ -2484,57 +2484,57 @@
 PyObject * pypylith3d_makemsr(PyObject *, PyObject *args)
 {
   PyObject* pyA;
-  PyObject* pyPointerToIndx;
-  PyObject* pyPointerToLink;
-  PyObject* pyPointerToNbrs;
-  int numberGlobalEquations;
+  PyObject* py_indx;
+  PyObject* py_link;
+  PyObject* py_nbrs;
+  int neq;
   int stiffnessMatrixSize;
-  int workingArraySize;
+  int iwork;
 
   int ok = PyArg_ParseTuple(args, "OOOOiii:makemsr",
                             &pyA,
-			    &pyPointerToIndx,
-			    &pyPointerToLink,
-			    &pyPointerToNbrs,
-			    &numberGlobalEquations,
+			    &py_indx,
+			    &py_link,
+			    &py_nbrs,
+			    &neq,
 			    &stiffnessMatrixSize,
-			    &workingArraySize);
+			    &iwork);
 
   if (!ok) {
     return 0;
   }
   Mat A = (Mat) PyCObject_AsVoidPtr(pyA);
-  int* pointerToIndx = (int*) PyCObject_AsVoidPtr(pyPointerToIndx);
-  int* pointerToLink = (int*) PyCObject_AsVoidPtr(pyPointerToLink);
-  int* pointerToNbrs = (int*) PyCObject_AsVoidPtr(pyPointerToNbrs);
-  int minimumNonzeroTermsPerRow = 0;
-  int maximumNonzeroTermsPerRow = 0;
-  double averageNonzeroTermsPerRow = 0.0;
+  int* indx = (int*) PyCObject_AsVoidPtr(py_indx);
+  int* link = (int*) PyCObject_AsVoidPtr(py_link);
+  int* nbrs = (int*) PyCObject_AsVoidPtr(py_nbrs);
+  int nmin = 0;
+  int nmax = 0;
+  double wavg = 0.0;
 
   makemsr_f(&A,
-	    pointerToIndx,
-	    pointerToLink,
-	    pointerToNbrs,
-	    &numberGlobalEquations,
+	    indx,
+	    link,
+	    nbrs,
+	    &neq,
 	    &stiffnessMatrixSize,
-	    &workingArraySize,
-	    &minimumNonzeroTermsPerRow,
-	    &maximumNonzeroTermsPerRow,
-	    &averageNonzeroTermsPerRow);
+	    &iwork,
+	    &nmin,
+	    &nmax,
+	    &wavg);
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "workingArraySize:" << workingArraySize
+    << "iwork:" << iwork
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
   // return Py_None;
   return Py_BuildValue("iid",
-		       minimumNonzeroTermsPerRow,
-		       maximumNonzeroTermsPerRow,
-		       averageNonzeroTermsPerRow);
+		       nmin,
+		       nmax,
+		       wavg);
 }
 
 
@@ -2549,92 +2549,92 @@
   PyObject* pyA;                              // Sparse matrix arrays
   PyObject* pyRhs;
   PyObject* pySol;
-  PyObject* pyPointerToBextern;               // Force vectors
-  PyObject* pyPointerToBtraction;
-  PyObject* pyPointerToBgravity;
-  PyObject* pyPointerToBconcForce;
-  PyObject* pyPointerToBintern;
-  PyObject* pyPointerToBresid;
-  PyObject* pyPointerToBwink;
-  PyObject* pyPointerToBwinkx;
-  PyObject* pyPointerToDispVec;
-  PyObject* pyPointerToDprev;
-  PyObject* pyPointerToListArrayNforce;
-  PyObject* pyPointerToListArrayGrav;
-  PyObject* pyPointerToX;                     // Global arrays
-  PyObject* pyPointerToD;
-  PyObject* pyPointerToDeld;
-  PyObject* pyPointerToDcur;
-  PyObject* pyPointerToId;
-  PyObject* pyPointerToIwink;
-  PyObject* pyPointerToWink;
-  PyObject* pyPointerToListArrayNsysdat;
-  PyObject* pyPointerToListArrayIddmat;
-  PyObject* pyPointerToIbond;                 // Boundary condition arrays
-  PyObject* pyPointerToBond;
-  PyObject* pyPointerToDx;                    // Slippery node arrays
-  PyObject* pyPointerToDeldx;
-  PyObject* pyPointerToDxcur;
-  PyObject* pyPointerToDiforc;
-  PyObject* pyPointerToIdx;
-  PyObject* pyPointerToIwinkx;
-  PyObject* pyPointerToWinkx;
-  PyObject* pyPointerToIdslp;
-  PyObject* pyPointerToIpslp;
-  PyObject* pyPointerToIdhist;
-  PyObject* pyPointerToFault;                 // Split node arrays
-  PyObject* pyPointerToNfault;
-  PyObject* pyPointerToDfault;
-  PyObject* pyPointerToTfault;
-  PyObject* pyPointerToS;                     // Local stiffness matrix arrays
-  PyObject* pyPointerToStemp;
-  PyObject* pyPointerToState;                 // Element arrays
-  PyObject* pyPointerToDstate;
-  PyObject* pyPointerToState0;
-  PyObject* pyPointerToDmat;
-  PyObject* pyPointerToIen;
-  PyObject* pyPointerToLm;
-  PyObject* pyPointerToLmx;
-  PyObject* pyPointerToLmf;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToListArrayNpar;
-  PyObject* pyPointerToIelindx;
-  PyObject* pyPointerToTractionverts;         // Traction BC arrays
-  PyObject* pyPointerToTractionvals;
-  PyObject* pyPointerToGauss2d;
-  PyObject* pyPointerToSh2d;
-  PyObject* pyPointerToListArrayElementTypeInfo2d;
-  PyObject* pyPointerToListArrayPropertyList; // Material property arrays
-  PyObject* pyPointerToMaterialModelInfo;
-  PyObject* pyPointerToGauss;                 // Element type arrays
-  PyObject* pyPointerToSh;
-  PyObject* pyPointerToShj;
-  PyObject* pyPointerToListArrayElementTypeInfo;
-  PyObject* pyPointerToHistry;                // Time information
-  PyObject* pyPointerToListArrayRtimdat;
-  PyObject* pyPointerToListArrayNtimdat;
-  PyObject* pyPointerToListArrayNvisdat;
-  PyObject* pyPointerToMaxstp;
-  PyObject* pyPointerToDelt;
-  PyObject* pyPointerToAlfa;
-  PyObject* pyPointerToMaxit;
-  PyObject* pyPointerToNtdinit;
-  PyObject* pyPointerToLgdef;
-  PyObject* pyPointerToUtol;
-  PyObject* pyPointerToFtol;
-  PyObject* pyPointerToEtol;
-  PyObject* pyPointerToItmax;
-  PyObject* pyPointerToListArrayRgiter;       // Iterative solution information
-  PyObject* pyPointerToSkew;                  // Skew rotation information
-  PyObject* pyPointerToIprint;                // Input/output information
-  PyObject* pyPointerToListArrayNcodat;
-  PyObject* pyPointerToListArrayNunits;
-  PyObject* pyPointerToListArrayNprint;
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  char* asciiOutputFile;                      // Output file names
-  char* plotOutputFile;
-  char* ucdOutputRoot;
+  PyObject* py_bextern;               // Force vectors
+  PyObject* py_btraction;
+  PyObject* py_bgravity;
+  PyObject* py_bconcForce;
+  PyObject* py_bintern;
+  PyObject* py_bresid;
+  PyObject* py_bwink;
+  PyObject* py_bwinkx;
+  PyObject* py_dispVec;
+  PyObject* py_dprev;
+  PyObject* py_nforce;
+  PyObject* py_grav;
+  PyObject* py_x;                             // Global arrays
+  PyObject* py_d;
+  PyObject* py_deld;
+  PyObject* py_dcur;
+  PyObject* py_id;
+  PyObject* py_iwink;
+  PyObject* py_wink;
+  PyObject* py_nsysdat;
+  PyObject* py_iddmat;
+  PyObject* py_ibond;                 // Boundary condition arrays
+  PyObject* py_bond;
+  PyObject* py_dx;                    // Slippery node arrays
+  PyObject* py_deldx;
+  PyObject* py_dxcur;
+  PyObject* py_diforc;
+  PyObject* py_idx;
+  PyObject* py_iwinkx;
+  PyObject* py_winkx;
+  PyObject* py_idslp;
+  PyObject* py_ipslp;
+  PyObject* py_idhist;
+  PyObject* py_fault;                 // Split node arrays
+  PyObject* py_nfault;
+  PyObject* py_dfault;
+  PyObject* py_tfault;
+  PyObject* py_s;                     // Local stiffness matrix arrays
+  PyObject* py_stemp;
+  PyObject* py_state;                 // Element arrays
+  PyObject* py_dstate;
+  PyObject* py_state0;
+  PyObject* py_dmat;
+  PyObject* py_ien;
+  PyObject* py_lm;
+  PyObject* py_lmx;
+  PyObject* py_lmf;
+  PyObject* py_ivfamily;
+  PyObject* py_npar;
+  PyObject* py_ielindx;
+  PyObject* py_tractionverts;         // Traction BC arrays
+  PyObject* py_tractionvals;
+  PyObject* py_gauss2d;
+  PyObject* py_sh2d;
+  PyObject* py_infetype2d;
+  PyObject* py_prop; // Material property arrays
+  PyObject* py_infmatmod;
+  PyObject* py_gauss;                 // Element type arrays
+  PyObject* py_sh;
+  PyObject* py_shj;
+  PyObject* py_infetype;
+  PyObject* py_histry;                // Time information
+  PyObject* py_rtimdat;
+  PyObject* py_ntimdat;
+  PyObject* py_nvisdat;
+  PyObject* py_maxstp;
+  PyObject* py_delt;
+  PyObject* py_alfa;
+  PyObject* py_maxit;
+  PyObject* py_ntdinit;
+  PyObject* py_lgdef;
+  PyObject* py_utol;
+  PyObject* py_ftol;
+  PyObject* py_etol;
+  PyObject* py_itmax;
+  PyObject* py_rgiter;       // Iterative solution information
+  PyObject* py_skew;                  // Skew rotation information
+  PyObject* py_iprint;                // Input/output information
+  PyObject* py_ncodat;
+  PyObject* py_nunits;
+  PyObject* py_nprint;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  char* ofile;                      // Output file names
+  char* pfile;
+  char* ucdroot;
   int viscousStage;
   int iterateEvent;
 
@@ -2642,92 +2642,92 @@
 			    &pyA,                              // Sparse matrix arrays
 			    &pyRhs,
 			    &pySol,
-			    &pyPointerToBextern,               // Force vectors
-			    &pyPointerToBtraction,
-			    &pyPointerToBgravity,
-			    &pyPointerToBconcForce,
-			    &pyPointerToBintern,
-			    &pyPointerToBresid,
-			    &pyPointerToBwink,
-			    &pyPointerToBwinkx,
-			    &pyPointerToDispVec,
-			    &pyPointerToDprev,
-			    &pyPointerToListArrayNforce,
-			    &pyPointerToListArrayGrav,
-			    &pyPointerToX,                     // Global arrays
-			    &pyPointerToD,
-			    &pyPointerToDeld,
-			    &pyPointerToDcur,
-			    &pyPointerToId,
-			    &pyPointerToIwink,
-			    &pyPointerToWink,
-			    &pyPointerToListArrayNsysdat,
-			    &pyPointerToListArrayIddmat,
-			    &pyPointerToIbond,                 // Boundary condition arrays
-			    &pyPointerToBond,
-			    &pyPointerToDx,                    // Slippery node arrays
-			    &pyPointerToDeldx,
-			    &pyPointerToDxcur,
-			    &pyPointerToDiforc,
-			    &pyPointerToIdx,
-			    &pyPointerToIwinkx,
-			    &pyPointerToWinkx,
-			    &pyPointerToIdslp,
-			    &pyPointerToIpslp,
-			    &pyPointerToIdhist,
-			    &pyPointerToFault,                 // Split node arrays
-			    &pyPointerToNfault,
-			    &pyPointerToDfault,
-			    &pyPointerToTfault,
-			    &pyPointerToS,                     // Local stiffness matrix arrays
-			    &pyPointerToStemp,
-			    &pyPointerToState,                 // Element arrays
-			    &pyPointerToDstate,
-			    &pyPointerToState0,
-			    &pyPointerToDmat,
-			    &pyPointerToIen,
-			    &pyPointerToLm,
-			    &pyPointerToLmx,
-			    &pyPointerToLmf,
-			    &pyPointerToIvfamily,
-			    &pyPointerToListArrayNpar,
-			    &pyPointerToIelindx,
-                            &pyPointerToTractionverts,         // Traction BC arrays
-                            &pyPointerToTractionvals,
-                            &pyPointerToGauss2d,
-                            &pyPointerToSh2d,
-                            &pyPointerToListArrayElementTypeInfo2d,
-			    &pyPointerToListArrayPropertyList, // Material property arrays
-			    &pyPointerToMaterialModelInfo,
-			    &pyPointerToGauss,                 // Element type arrays
-			    &pyPointerToSh,
-			    &pyPointerToShj,
-			    &pyPointerToListArrayElementTypeInfo,
-			    &pyPointerToHistry,                // Time information
-			    &pyPointerToListArrayRtimdat,
-			    &pyPointerToListArrayNtimdat,
-			    &pyPointerToListArrayNvisdat,
-			    &pyPointerToMaxstp,
-			    &pyPointerToDelt,
-			    &pyPointerToAlfa,
-			    &pyPointerToMaxit,
-			    &pyPointerToNtdinit,
-			    &pyPointerToLgdef,
-			    &pyPointerToUtol,
-			    &pyPointerToFtol,
-			    &pyPointerToEtol,
-			    &pyPointerToItmax,
-			    &pyPointerToListArrayRgiter,       // Iterative solution information
-			    &pyPointerToSkew,                  // Skew rotation information
-			    &pyPointerToIprint,                // Input/output information
-			    &pyPointerToListArrayNcodat,
-			    &pyPointerToListArrayNunits,
-			    &pyPointerToListArrayNprint,
-			    &pyPointerToIstatout,
-			    &pyPointerToNstatout,
-			    &asciiOutputFile,                  // Output file names
-			    &plotOutputFile,
-			    &ucdOutputRoot,
+			    &py_bextern,               // Force vectors
+			    &py_btraction,
+			    &py_bgravity,
+			    &py_bconcForce,
+			    &py_bintern,
+			    &py_bresid,
+			    &py_bwink,
+			    &py_bwinkx,
+			    &py_dispVec,
+			    &py_dprev,
+			    &py_nforce,
+			    &py_grav,
+			    &py_x,                             // Global arrays
+			    &py_d,
+			    &py_deld,
+			    &py_dcur,
+			    &py_id,
+			    &py_iwink,
+			    &py_wink,
+			    &py_nsysdat,
+			    &py_iddmat,
+			    &py_ibond,                 // Boundary condition arrays
+			    &py_bond,
+			    &py_dx,                    // Slippery node arrays
+			    &py_deldx,
+			    &py_dxcur,
+			    &py_diforc,
+			    &py_idx,
+			    &py_iwinkx,
+			    &py_winkx,
+			    &py_idslp,
+			    &py_ipslp,
+			    &py_idhist,
+			    &py_fault,                 // Split node arrays
+			    &py_nfault,
+			    &py_dfault,
+			    &py_tfault,
+			    &py_s,                     // Local stiffness matrix arrays
+			    &py_stemp,
+			    &py_state,                 // Element arrays
+			    &py_dstate,
+			    &py_state0,
+			    &py_dmat,
+			    &py_ien,
+			    &py_lm,
+			    &py_lmx,
+			    &py_lmf,
+			    &py_ivfamily,
+			    &py_npar,
+			    &py_ielindx,
+                            &py_tractionverts,         // Traction BC arrays
+                            &py_tractionvals,
+                            &py_gauss2d,
+                            &py_sh2d,
+                            &py_infetype2d,
+			    &py_prop, // Material property arrays
+			    &py_infmatmod,
+			    &py_gauss,                 // Element type arrays
+			    &py_sh,
+			    &py_shj,
+			    &py_infetype,
+			    &py_histry,                // Time information
+			    &py_rtimdat,
+			    &py_ntimdat,
+			    &py_nvisdat,
+			    &py_maxstp,
+			    &py_delt,
+			    &py_alfa,
+			    &py_maxit,
+			    &py_ntdinit,
+			    &py_lgdef,
+			    &py_utol,
+			    &py_ftol,
+			    &py_etol,
+			    &py_itmax,
+			    &py_rgiter,       // Iterative solution information
+			    &py_skew,                  // Skew rotation information
+			    &py_iprint,                // Input/output information
+			    &py_ncodat,
+			    &py_nunits,
+			    &py_nprint,
+			    &py_istatout,
+			    &py_nstatout,
+			    &ofile,                  // Output file names
+			    &pfile,
+			    &ucdroot,
                             &viscousStage,
                             &iterateEvent);
 
@@ -2741,187 +2741,187 @@
   Mat      A = (Mat) PyCObject_AsVoidPtr(pyA);
   Vec      rhs = (Vec) PyCObject_AsVoidPtr(pyRhs);
   Vec      sol = (Vec) PyCObject_AsVoidPtr(pySol);
-  double*  pointerToBextern = (double*) PyCObject_AsVoidPtr(pyPointerToBextern);
-  double*  pointerToBtraction = (double*) PyCObject_AsVoidPtr(pyPointerToBtraction);
-  double*  pointerToBgravity = (double*) PyCObject_AsVoidPtr(pyPointerToBgravity);
-  double*  pointerToBconcForce = (double*) PyCObject_AsVoidPtr(pyPointerToBconcForce);
-  double*  pointerToBintern = (double*) PyCObject_AsVoidPtr(pyPointerToBintern);
-  double*  pointerToBresid = (double*) PyCObject_AsVoidPtr(pyPointerToBresid);
-  double*  pointerToBwink = (double*) PyCObject_AsVoidPtr(pyPointerToBwink);
-  double*  pointerToBwinkx = (double*) PyCObject_AsVoidPtr(pyPointerToBwinkx);
-  double*  pointerToDispVec = (double*) PyCObject_AsVoidPtr(pyPointerToDispVec);
-  double*  pointerToDprev = (double*) PyCObject_AsVoidPtr(pyPointerToDprev);
-  int*  pointerToListArrayNforce = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNforce);
-  double*  pointerToListArrayGrav = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayGrav);
-  double*  pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
-  double*  pointerToD = (double*) PyCObject_AsVoidPtr(pyPointerToD);
-  double*  pointerToDeld = (double*) PyCObject_AsVoidPtr(pyPointerToDeld);
-  double*  pointerToDcur = (double*) PyCObject_AsVoidPtr(pyPointerToDcur);
-  int*  pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
-  int*  pointerToIwink = (int*) PyCObject_AsVoidPtr(pyPointerToIwink);
-  double*  pointerToWink = (double*) PyCObject_AsVoidPtr(pyPointerToWink);
-  int*  pointerToListArrayNsysdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNsysdat);
-  int*  pointerToListArrayIddmat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayIddmat);
-  int*  pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
-  double*  pointerToBond = (double*) PyCObject_AsVoidPtr(pyPointerToBond);
-  double*  pointerToDx = (double*) PyCObject_AsVoidPtr(pyPointerToDx);
-  double*  pointerToDeldx = (double*) PyCObject_AsVoidPtr(pyPointerToDeldx);
-  double*  pointerToDxcur = (double*) PyCObject_AsVoidPtr(pyPointerToDxcur);
-  double*  pointerToDiforc = (double*) PyCObject_AsVoidPtr(pyPointerToDiforc);
-  int*  pointerToIdx = (int*) PyCObject_AsVoidPtr(pyPointerToIdx);
-  int*  pointerToIwinkx = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkx);
-  double*  pointerToWinkx = (double*) PyCObject_AsVoidPtr(pyPointerToWinkx);
-  int*  pointerToIdslp = (int*) PyCObject_AsVoidPtr(pyPointerToIdslp);
-  int*  pointerToIpslp = (int*) PyCObject_AsVoidPtr(pyPointerToIpslp);
-  int*  pointerToIdhist = (int*) PyCObject_AsVoidPtr(pyPointerToIdhist);
-  double*  pointerToFault = (double*) PyCObject_AsVoidPtr(pyPointerToFault);
-  int*  pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
-  double*  pointerToDfault = (double*) PyCObject_AsVoidPtr(pyPointerToDfault);
-  double*  pointerToTfault = (double*) PyCObject_AsVoidPtr(pyPointerToTfault);
-  double*  pointerToS = (double*) PyCObject_AsVoidPtr(pyPointerToS);
-  double*  pointerToStemp = (double*) PyCObject_AsVoidPtr(pyPointerToStemp);
-  double*  pointerToState = (double*) PyCObject_AsVoidPtr(pyPointerToState);
-  double*  pointerToDstate = (double*) PyCObject_AsVoidPtr(pyPointerToDstate);
-  double*  pointerToState0 = (double*) PyCObject_AsVoidPtr(pyPointerToState0);
-  double*  pointerToDmat = (double*) PyCObject_AsVoidPtr(pyPointerToDmat);
-  int*  pointerToIen = (int*) PyCObject_AsVoidPtr(pyPointerToIen);
-  int*  pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
-  int*  pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int*  pointerToLmf = (int*) PyCObject_AsVoidPtr(pyPointerToLmf);
-  int*  pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int*  pointerToListArrayNpar = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNpar);
-  int*  pointerToIelindx = (int*) PyCObject_AsVoidPtr(pyPointerToIelindx);
-  int*  pointerToTractionverts = (int*) PyCObject_AsVoidPtr(pyPointerToTractionverts);
-  double*  pointerToTractionvals = (double*) PyCObject_AsVoidPtr(pyPointerToTractionvals);
-  double*  pointerToGauss2d = (double*) PyCObject_AsVoidPtr(pyPointerToGauss2d);
-  double*  pointerToSh2d = (double*) PyCObject_AsVoidPtr(pyPointerToSh2d);
-  int*  pointerToListArrayElementTypeInfo2d = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo2d);
-  double*  pointerToListArrayPropertyList = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayPropertyList);
-  int*  pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
-  double*  pointerToGauss = (double*) PyCObject_AsVoidPtr(pyPointerToGauss);
-  double*  pointerToSh = (double*) PyCObject_AsVoidPtr(pyPointerToSh);
-  double*  pointerToShj = (double*) PyCObject_AsVoidPtr(pyPointerToShj);
-  int*  pointerToListArrayElementTypeInfo = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo);
-  double*  pointerToHistry = (double*) PyCObject_AsVoidPtr(pyPointerToHistry);
-  double*  pointerToListArrayRtimdat = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRtimdat);
-  int*  pointerToListArrayNtimdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNtimdat);
-  int*  pointerToListArrayNvisdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNvisdat);
-  int*  pointerToMaxstp = (int*) PyCObject_AsVoidPtr(pyPointerToMaxstp);
-  double*  pointerToDelt = (double*) PyCObject_AsVoidPtr(pyPointerToDelt);
-  double*  pointerToAlfa = (double*) PyCObject_AsVoidPtr(pyPointerToAlfa);
-  int*  pointerToMaxit = (int*) PyCObject_AsVoidPtr(pyPointerToMaxit);
-  int*  pointerToNtdinit = (int*) PyCObject_AsVoidPtr(pyPointerToNtdinit);
-  int*  pointerToLgdef = (int*) PyCObject_AsVoidPtr(pyPointerToLgdef);
-  double*  pointerToUtol = (double*) PyCObject_AsVoidPtr(pyPointerToUtol);
-  double*  pointerToFtol = (double*) PyCObject_AsVoidPtr(pyPointerToFtol);
-  double*  pointerToEtol = (double*) PyCObject_AsVoidPtr(pyPointerToEtol);
-  int*  pointerToItmax = (int*) PyCObject_AsVoidPtr(pyPointerToItmax);
-  double*  pointerToListArrayRgiter = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRgiter);
-  double*  pointerToSkew = (double*) PyCObject_AsVoidPtr(pyPointerToSkew);
-  int*  pointerToIprint = (int*) PyCObject_AsVoidPtr(pyPointerToIprint);
-  int*  pointerToListArrayNcodat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNcodat);
-  int*  pointerToListArrayNunits = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNunits);
-  int*  pointerToListArrayNprint = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNprint);
-  int*  pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int*  pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  double*  bextern = (double*) PyCObject_AsVoidPtr(py_bextern);
+  double*  btraction = (double*) PyCObject_AsVoidPtr(py_btraction);
+  double*  bgravity = (double*) PyCObject_AsVoidPtr(py_bgravity);
+  double*  bconcForce = (double*) PyCObject_AsVoidPtr(py_bconcForce);
+  double*  bintern = (double*) PyCObject_AsVoidPtr(py_bintern);
+  double*  bresid = (double*) PyCObject_AsVoidPtr(py_bresid);
+  double*  bwink = (double*) PyCObject_AsVoidPtr(py_bwink);
+  double*  bwinkx = (double*) PyCObject_AsVoidPtr(py_bwinkx);
+  double*  dispVec = (double*) PyCObject_AsVoidPtr(py_dispVec);
+  double*  dprev = (double*) PyCObject_AsVoidPtr(py_dprev);
+  int*  nforce = (int*) PyCObject_AsVoidPtr(py_nforce);
+  double*  grav = (double*) PyCObject_AsVoidPtr(py_grav);
+  double*  x = (double*) PyCObject_AsVoidPtr(py_x);
+  double*  d = (double*) PyCObject_AsVoidPtr(py_d);
+  double*  deld = (double*) PyCObject_AsVoidPtr(py_deld);
+  double*  dcur = (double*) PyCObject_AsVoidPtr(py_dcur);
+  int*  id = (int*) PyCObject_AsVoidPtr(py_id);
+  int*  iwink = (int*) PyCObject_AsVoidPtr(py_iwink);
+  double*  wink = (double*) PyCObject_AsVoidPtr(py_wink);
+  int*  nsysdat = (int*) PyCObject_AsVoidPtr(py_nsysdat);
+  int*  iddmat = (int*) PyCObject_AsVoidPtr(py_iddmat);
+  int*  ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
+  double*  bond = (double*) PyCObject_AsVoidPtr(py_bond);
+  double*  dx = (double*) PyCObject_AsVoidPtr(py_dx);
+  double*  deldx = (double*) PyCObject_AsVoidPtr(py_deldx);
+  double*  dxcur = (double*) PyCObject_AsVoidPtr(py_dxcur);
+  double*  diforc = (double*) PyCObject_AsVoidPtr(py_diforc);
+  int*  idx = (int*) PyCObject_AsVoidPtr(py_idx);
+  int*  iwinkx = (int*) PyCObject_AsVoidPtr(py_iwinkx);
+  double*  winkx = (double*) PyCObject_AsVoidPtr(py_winkx);
+  int*  idslp = (int*) PyCObject_AsVoidPtr(py_idslp);
+  int*  ipslp = (int*) PyCObject_AsVoidPtr(py_ipslp);
+  int*  idhist = (int*) PyCObject_AsVoidPtr(py_idhist);
+  double*  fault = (double*) PyCObject_AsVoidPtr(py_fault);
+  int*  nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
+  double*  dfault = (double*) PyCObject_AsVoidPtr(py_dfault);
+  double*  tfault = (double*) PyCObject_AsVoidPtr(py_tfault);
+  double*  s = (double*) PyCObject_AsVoidPtr(py_s);
+  double*  stemp = (double*) PyCObject_AsVoidPtr(py_stemp);
+  double*  state = (double*) PyCObject_AsVoidPtr(py_state);
+  double*  dstate = (double*) PyCObject_AsVoidPtr(py_dstate);
+  double*  state0 = (double*) PyCObject_AsVoidPtr(py_state0);
+  double*  dmat = (double*) PyCObject_AsVoidPtr(py_dmat);
+  int*  ien = (int*) PyCObject_AsVoidPtr(py_ien);
+  int*  lm = (int*) PyCObject_AsVoidPtr(py_lm);
+  int*  lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int*  lmf = (int*) PyCObject_AsVoidPtr(py_lmf);
+  int*  ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int*  npar = (int*) PyCObject_AsVoidPtr(py_npar);
+  int*  ielindx = (int*) PyCObject_AsVoidPtr(py_ielindx);
+  int*  tractionverts = (int*) PyCObject_AsVoidPtr(py_tractionverts);
+  double*  tractionvals = (double*) PyCObject_AsVoidPtr(py_tractionvals);
+  double*  gauss2d = (double*) PyCObject_AsVoidPtr(py_gauss2d);
+  double*  sh2d = (double*) PyCObject_AsVoidPtr(py_sh2d);
+  int*  infetype2d = (int*) PyCObject_AsVoidPtr(py_infetype2d);
+  double*  prop = (double*) PyCObject_AsVoidPtr(py_prop);
+  int*  infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
+  double*  gauss = (double*) PyCObject_AsVoidPtr(py_gauss);
+  double*  sh = (double*) PyCObject_AsVoidPtr(py_sh);
+  double*  shj = (double*) PyCObject_AsVoidPtr(py_shj);
+  int*  infetype = (int*) PyCObject_AsVoidPtr(py_infetype);
+  double*  histry = (double*) PyCObject_AsVoidPtr(py_histry);
+  double*  rtimdat = (double*) PyCObject_AsVoidPtr(py_rtimdat);
+  int*  ntimdat = (int*) PyCObject_AsVoidPtr(py_ntimdat);
+  int*  nvisdat = (int*) PyCObject_AsVoidPtr(py_nvisdat);
+  int*  maxstp = (int*) PyCObject_AsVoidPtr(py_maxstp);
+  double*  delt = (double*) PyCObject_AsVoidPtr(py_delt);
+  double*  alfa = (double*) PyCObject_AsVoidPtr(py_alfa);
+  int*  maxit = (int*) PyCObject_AsVoidPtr(py_maxit);
+  int*  ntdinit = (int*) PyCObject_AsVoidPtr(py_ntdinit);
+  int*  lgdef = (int*) PyCObject_AsVoidPtr(py_lgdef);
+  double*  utol = (double*) PyCObject_AsVoidPtr(py_utol);
+  double*  ftol = (double*) PyCObject_AsVoidPtr(py_ftol);
+  double*  etol = (double*) PyCObject_AsVoidPtr(py_etol);
+  int*  itmax = (int*) PyCObject_AsVoidPtr(py_itmax);
+  double*  rgiter = (double*) PyCObject_AsVoidPtr(py_rgiter);
+  double*  skew = (double*) PyCObject_AsVoidPtr(py_skew);
+  int*  iprint = (int*) PyCObject_AsVoidPtr(py_iprint);
+  int*  ncodat = (int*) PyCObject_AsVoidPtr(py_ncodat);
+  int*  nunits = (int*) PyCObject_AsVoidPtr(py_nunits);
+  int*  nprint = (int*) PyCObject_AsVoidPtr(py_nprint);
+  int*  istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int*  nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
 
   viscos_f(&A,                            // 1: Sparse matrix arrays
 	   &rhs,
 	   &sol,
-	   pointerToBextern,                  // Force vectors
-	   pointerToBtraction,
-	   pointerToBgravity,
-	   pointerToBconcForce,
-	   pointerToBintern,
-	   pointerToBresid,
-	   pointerToBwink,                    // 10
-	   pointerToBwinkx,
-	   pointerToDispVec,
-	   pointerToDprev,
-	   pointerToListArrayNforce,
-	   pointerToListArrayGrav,
-	   pointerToX,                        // Global arrays
-	   pointerToD,
-	   pointerToDeld,
-	   pointerToDcur,
-	   pointerToId,                       // 20
-	   pointerToIwink,
-	   pointerToWink,
-	   pointerToListArrayNsysdat,
-	   pointerToListArrayIddmat,
-	   pointerToIbond,                    // Boundary condition arrays
-	   pointerToBond,
-	   pointerToDx,                       // Slippery node arrays
-	   pointerToDeldx,
-	   pointerToDxcur,
-	   pointerToDiforc,                   // 30
-	   pointerToIdx,
-	   pointerToIwinkx,
-	   pointerToWinkx,
-	   pointerToIdslp,
-	   pointerToIpslp,
-	   pointerToIdhist,
-	   pointerToFault,                    // Split node arrays
-	   pointerToNfault,
-	   pointerToDfault,
-	   pointerToTfault,                   // 40
-	   pointerToS,                        // Local stiffness matrix arrays
-	   pointerToStemp,
-	   pointerToState,                    // Element arrays
-	   pointerToDstate,
-	   pointerToState0,
-	   pointerToDmat,
-	   pointerToIen,
-	   pointerToLm,
-	   pointerToLmx,
-	   pointerToLmf,                      // 50
-	   pointerToIvfamily,
-	   pointerToListArrayNpar,
-	   pointerToIelindx,
-	   pointerToTractionverts,            // Traction BC arrays
-	   pointerToTractionvals,
-	   pointerToGauss2d,
-	   pointerToSh2d,
-	   pointerToListArrayElementTypeInfo2d,
-	   pointerToListArrayPropertyList,    // Material property arrays
-	   pointerToMaterialModelInfo,        // 60
-	   pointerToGauss,                    // Element type arrays
-	   pointerToSh,
-	   pointerToShj,
-	   pointerToListArrayElementTypeInfo,
-	   pointerToHistry,                   // Time information
-	   pointerToListArrayRtimdat,
-	   pointerToListArrayNtimdat,
-	   pointerToListArrayNvisdat,
-	   pointerToMaxstp,
-	   pointerToDelt,                     // 70
-	   pointerToAlfa,
-	   pointerToMaxit,
-	   pointerToNtdinit,
-	   pointerToLgdef,
-	   pointerToUtol,
-	   pointerToFtol,
-	   pointerToEtol,
-	   pointerToItmax,
-	   pointerToListArrayRgiter,          // Iterative solution information
-	   pointerToSkew,                     // 80: Skew rotation information
-	   pointerToIprint,                   // Input/output information
-	   pointerToListArrayNcodat,
-	   pointerToListArrayNunits,
-	   pointerToListArrayNprint,
-	   pointerToIstatout,
-	   pointerToNstatout,
-	   asciiOutputFile,                   // Output file names
-	   plotOutputFile,
-	   ucdOutputRoot,
+	   bextern,                  // Force vectors
+	   btraction,
+	   bgravity,
+	   bconcForce,
+	   bintern,
+	   bresid,
+	   bwink,                    // 10
+	   bwinkx,
+	   dispVec,
+	   dprev,
+	   nforce,
+	   grav,
+	   x,                                 // Global arrays
+	   d,
+	   deld,
+	   dcur,
+	   id,                       // 20
+	   iwink,
+	   wink,
+	   nsysdat,
+	   iddmat,
+	   ibond,                    // Boundary condition arrays
+	   bond,
+	   dx,                       // Slippery node arrays
+	   deldx,
+	   dxcur,
+	   diforc,                   // 30
+	   idx,
+	   iwinkx,
+	   winkx,
+	   idslp,
+	   ipslp,
+	   idhist,
+	   fault,                    // Split node arrays
+	   nfault,
+	   dfault,
+	   tfault,                   // 40
+	   s,                        // Local stiffness matrix arrays
+	   stemp,
+	   state,                    // Element arrays
+	   dstate,
+	   state0,
+	   dmat,
+	   ien,
+	   lm,
+	   lmx,
+	   lmf,                      // 50
+	   ivfamily,
+	   npar,
+	   ielindx,
+	   tractionverts,            // Traction BC arrays
+	   tractionvals,
+	   gauss2d,
+	   sh2d,
+	   infetype2d,
+	   prop,    // Material property arrays
+	   infmatmod,                         // 60
+	   gauss,                    // Element type arrays
+	   sh,
+	   shj,
+	   infetype,
+	   histry,                   // Time information
+	   rtimdat,
+	   ntimdat,
+	   nvisdat,
+	   maxstp,
+	   delt,                     // 70
+	   alfa,
+	   maxit,
+	   ntdinit,
+	   lgdef,
+	   utol,
+	   ftol,
+	   etol,
+	   itmax,
+	   rgiter,          // Iterative solution information
+	   skew,                     // 80: Skew rotation information
+	   iprint,                   // Input/output information
+	   ncodat,
+	   nunits,
+	   nprint,
+	   istatout,
+	   nstatout,
+	   ofile,                   // Output file names
+	   pfile,
+	   ucdroot,
 	   &viscousStage,                     // 90: PETSC logging
 	   &iterateEvent,
 	   &errorcode,                        // Error codes
 	   errorstring,
-	   strlen(asciiOutputFile),           // String lengths
-	   strlen(plotOutputFile),
-	   strlen(ucdOutputRoot),
+	   strlen(ofile),           // String lengths
+	   strlen(pfile),
+	   strlen(ucdroot),
 	   sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -2932,7 +2932,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "asciiOutputFile:" << asciiOutputFile
+    << "ofile:" << ofile
     << journal::endl;
 
   // return
@@ -2950,92 +2950,92 @@
   PyObject* pyA;                              // Sparse matrix arrays
   PyObject* pyRhs;
   PyObject* pySol;
-  PyObject* pyPointerToBextern;               // Force vectors
-  PyObject* pyPointerToBtraction;
-  PyObject* pyPointerToBgravity;
-  PyObject* pyPointerToBconcForce;
-  PyObject* pyPointerToBintern;
-  PyObject* pyPointerToBresid;
-  PyObject* pyPointerToBwink;
-  PyObject* pyPointerToBwinkx;
-  PyObject* pyPointerToDispVec;
-  PyObject* pyPointerToDprev;
-  PyObject* pyPointerToListArrayNforce;
-  PyObject* pyPointerToListArrayGrav;
-  PyObject* pyPointerToX;                     // Global arrays
-  PyObject* pyPointerToD;
-  PyObject* pyPointerToDeld;
-  PyObject* pyPointerToDcur;
-  PyObject* pyPointerToId;
-  PyObject* pyPointerToIwink;
-  PyObject* pyPointerToWink;
-  PyObject* pyPointerToListArrayNsysdat;
-  PyObject* pyPointerToListArrayIddmat;
-  PyObject* pyPointerToIbond;                 // Boundary condition arrays
-  PyObject* pyPointerToBond;
-  PyObject* pyPointerToDx;                    // Slippery node arrays
-  PyObject* pyPointerToDeldx;
-  PyObject* pyPointerToDxcur;
-  PyObject* pyPointerToDiforc;
-  PyObject* pyPointerToIdx;
-  PyObject* pyPointerToIwinkx;
-  PyObject* pyPointerToWinkx;
-  PyObject* pyPointerToIdslp;
-  PyObject* pyPointerToIpslp;
-  PyObject* pyPointerToIdhist;
-  PyObject* pyPointerToFault;                 // Split node arrays
-  PyObject* pyPointerToNfault;
-  PyObject* pyPointerToDfault;
-  PyObject* pyPointerToTfault;
-  PyObject* pyPointerToS;                     // Local stiffness matrix arrays
-  PyObject* pyPointerToStemp;
-  PyObject* pyPointerToState;                 // Element arrays
-  PyObject* pyPointerToDstate;
-  PyObject* pyPointerToState0;
-  PyObject* pyPointerToDmat;
-  PyObject* pyPointerToIen;
-  PyObject* pyPointerToLm;
-  PyObject* pyPointerToLmx;
-  PyObject* pyPointerToLmf;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToListArrayNpar;
-  PyObject* pyPointerToIelindx;
-  PyObject* pyPointerToTractionverts;         // Traction BC arrays
-  PyObject* pyPointerToTractionvals;
-  PyObject* pyPointerToGauss2d;
-  PyObject* pyPointerToSh2d;
-  PyObject* pyPointerToListArrayElementTypeInfo2d;
-  PyObject* pyPointerToListArrayPropertyList; // Material property arrays
-  PyObject* pyPointerToMaterialModelInfo;
-  PyObject* pyPointerToGauss;                 // Element type arrays
-  PyObject* pyPointerToSh;
-  PyObject* pyPointerToShj;
-  PyObject* pyPointerToListArrayElementTypeInfo;
-  PyObject* pyPointerToHistry;                // Time information
-  PyObject* pyPointerToListArrayRtimdat;
-  PyObject* pyPointerToListArrayNtimdat;
-  PyObject* pyPointerToListArrayNvisdat;
-  PyObject* pyPointerToMaxstp;
-  PyObject* pyPointerToDelt;
-  PyObject* pyPointerToAlfa;
-  PyObject* pyPointerToMaxit;
-  PyObject* pyPointerToNtdinit;
-  PyObject* pyPointerToLgdef;
-  PyObject* pyPointerToUtol;
-  PyObject* pyPointerToFtol;
-  PyObject* pyPointerToEtol;
-  PyObject* pyPointerToItmax;
-  PyObject* pyPointerToListArrayRgiter;       // Iterative solution information
-  PyObject* pyPointerToSkew;                  // Skew rotation information
-  PyObject* pyPointerToIprint;                // Input/output information
-  PyObject* pyPointerToListArrayNcodat;
-  PyObject* pyPointerToListArrayNunits;
-  PyObject* pyPointerToListArrayNprint;
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  char* asciiOutputFile;                      // Output file names
-  char* plotOutputFile;
-  char* ucdOutputRoot;
+  PyObject* py_bextern;               // Force vectors
+  PyObject* py_btraction;
+  PyObject* py_bgravity;
+  PyObject* py_bconcForce;
+  PyObject* py_bintern;
+  PyObject* py_bresid;
+  PyObject* py_bwink;
+  PyObject* py_bwinkx;
+  PyObject* py_dispVec;
+  PyObject* py_dprev;
+  PyObject* py_nforce;
+  PyObject* py_grav;
+  PyObject* py_x;                             // Global arrays
+  PyObject* py_d;
+  PyObject* py_deld;
+  PyObject* py_dcur;
+  PyObject* py_id;
+  PyObject* py_iwink;
+  PyObject* py_wink;
+  PyObject* py_nsysdat;
+  PyObject* py_iddmat;
+  PyObject* py_ibond;                 // Boundary condition arrays
+  PyObject* py_bond;
+  PyObject* py_dx;                    // Slippery node arrays
+  PyObject* py_deldx;
+  PyObject* py_dxcur;
+  PyObject* py_diforc;
+  PyObject* py_idx;
+  PyObject* py_iwinkx;
+  PyObject* py_winkx;
+  PyObject* py_idslp;
+  PyObject* py_ipslp;
+  PyObject* py_idhist;
+  PyObject* py_fault;                 // Split node arrays
+  PyObject* py_nfault;
+  PyObject* py_dfault;
+  PyObject* py_tfault;
+  PyObject* py_s;                     // Local stiffness matrix arrays
+  PyObject* py_stemp;
+  PyObject* py_state;                 // Element arrays
+  PyObject* py_dstate;
+  PyObject* py_state0;
+  PyObject* py_dmat;
+  PyObject* py_ien;
+  PyObject* py_lm;
+  PyObject* py_lmx;
+  PyObject* py_lmf;
+  PyObject* py_ivfamily;
+  PyObject* py_npar;
+  PyObject* py_ielindx;
+  PyObject* py_tractionverts;         // Traction BC arrays
+  PyObject* py_tractionvals;
+  PyObject* py_gauss2d;
+  PyObject* py_sh2d;
+  PyObject* py_infetype2d;
+  PyObject* py_prop; // Material property arrays
+  PyObject* py_infmatmod;
+  PyObject* py_gauss;                 // Element type arrays
+  PyObject* py_sh;
+  PyObject* py_shj;
+  PyObject* py_infetype;
+  PyObject* py_histry;                // Time information
+  PyObject* py_rtimdat;
+  PyObject* py_ntimdat;
+  PyObject* py_nvisdat;
+  PyObject* py_maxstp;
+  PyObject* py_delt;
+  PyObject* py_alfa;
+  PyObject* py_maxit;
+  PyObject* py_ntdinit;
+  PyObject* py_lgdef;
+  PyObject* py_utol;
+  PyObject* py_ftol;
+  PyObject* py_etol;
+  PyObject* py_itmax;
+  PyObject* py_rgiter;       // Iterative solution information
+  PyObject* py_skew;                  // Skew rotation information
+  PyObject* py_iprint;                // Input/output information
+  PyObject* py_ncodat;
+  PyObject* py_nunits;
+  PyObject* py_nprint;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  char* ofile;                      // Output file names
+  char* pfile;
+  char* ucdroot;
   int viscousStage;
   int iterateEvent;
   int ntot, ltim, indexx, jcyc, i, j, skc, nfirst, nstep, lgdefp;
@@ -3046,92 +3046,92 @@
 			    &pyA,                              // Sparse matrix arrays
 			    &pyRhs,
 			    &pySol,
-			    &pyPointerToBextern,               // Force vectors
-			    &pyPointerToBtraction,
-			    &pyPointerToBgravity,
-			    &pyPointerToBconcForce,
-			    &pyPointerToBintern,
-			    &pyPointerToBresid,
-			    &pyPointerToBwink,
-			    &pyPointerToBwinkx,
-			    &pyPointerToDispVec,
-			    &pyPointerToDprev,
-			    &pyPointerToListArrayNforce,
-			    &pyPointerToListArrayGrav,
-			    &pyPointerToX,                     // Global arrays
-			    &pyPointerToD,
-			    &pyPointerToDeld,
-			    &pyPointerToDcur,
-			    &pyPointerToId,
-			    &pyPointerToIwink,
-			    &pyPointerToWink,
-			    &pyPointerToListArrayNsysdat,
-			    &pyPointerToListArrayIddmat,
-			    &pyPointerToIbond,                 // Boundary condition arrays
-			    &pyPointerToBond,
-			    &pyPointerToDx,                    // Slippery node arrays
-			    &pyPointerToDeldx,
-			    &pyPointerToDxcur,
-			    &pyPointerToDiforc,
-			    &pyPointerToIdx,
-			    &pyPointerToIwinkx,
-			    &pyPointerToWinkx,
-			    &pyPointerToIdslp,
-			    &pyPointerToIpslp,
-			    &pyPointerToIdhist,
-			    &pyPointerToFault,                 // Split node arrays
-			    &pyPointerToNfault,
-			    &pyPointerToDfault,
-			    &pyPointerToTfault,
-			    &pyPointerToS,                     // Local stiffness matrix arrays
-			    &pyPointerToStemp,
-			    &pyPointerToState,                 // Element arrays
-			    &pyPointerToDstate,
-			    &pyPointerToState0,
-			    &pyPointerToDmat,
-			    &pyPointerToIen,
-			    &pyPointerToLm,
-			    &pyPointerToLmx,
-			    &pyPointerToLmf,
-			    &pyPointerToIvfamily,
-			    &pyPointerToListArrayNpar,
-			    &pyPointerToIelindx,
-                            &pyPointerToTractionverts,         // Traction BC arrays
-                            &pyPointerToTractionvals,
-                            &pyPointerToGauss2d,
-                            &pyPointerToSh2d,
-                            &pyPointerToListArrayElementTypeInfo2d,
-			    &pyPointerToListArrayPropertyList, // Material property arrays
-			    &pyPointerToMaterialModelInfo,
-			    &pyPointerToGauss,                 // Element type arrays
-			    &pyPointerToSh,
-			    &pyPointerToShj,
-			    &pyPointerToListArrayElementTypeInfo,
-			    &pyPointerToHistry,                // Time information
-			    &pyPointerToListArrayRtimdat,
-			    &pyPointerToListArrayNtimdat,
-			    &pyPointerToListArrayNvisdat,
-			    &pyPointerToMaxstp,
-			    &pyPointerToDelt,
-			    &pyPointerToAlfa,
-			    &pyPointerToMaxit,
-			    &pyPointerToNtdinit,
-			    &pyPointerToLgdef,
-			    &pyPointerToUtol,
-			    &pyPointerToFtol,
-			    &pyPointerToEtol,
-			    &pyPointerToItmax,
-			    &pyPointerToListArrayRgiter,       // Iterative solution information
-			    &pyPointerToSkew,                  // Skew rotation information
-			    &pyPointerToIprint,                // Input/output information
-			    &pyPointerToListArrayNcodat,
-			    &pyPointerToListArrayNunits,
-			    &pyPointerToListArrayNprint,
-			    &pyPointerToIstatout,
-			    &pyPointerToNstatout,
-			    &asciiOutputFile,                  // Output file names
-			    &plotOutputFile,
-			    &ucdOutputRoot,
+			    &py_bextern,               // Force vectors
+			    &py_btraction,
+			    &py_bgravity,
+			    &py_bconcForce,
+			    &py_bintern,
+			    &py_bresid,
+			    &py_bwink,
+			    &py_bwinkx,
+			    &py_dispVec,
+			    &py_dprev,
+			    &py_nforce,
+			    &py_grav,
+			    &py_x,                             // Global arrays
+			    &py_d,
+			    &py_deld,
+			    &py_dcur,
+			    &py_id,
+			    &py_iwink,
+			    &py_wink,
+			    &py_nsysdat,
+			    &py_iddmat,
+			    &py_ibond,                 // Boundary condition arrays
+			    &py_bond,
+			    &py_dx,                    // Slippery node arrays
+			    &py_deldx,
+			    &py_dxcur,
+			    &py_diforc,
+			    &py_idx,
+			    &py_iwinkx,
+			    &py_winkx,
+			    &py_idslp,
+			    &py_ipslp,
+			    &py_idhist,
+			    &py_fault,                 // Split node arrays
+			    &py_nfault,
+			    &py_dfault,
+			    &py_tfault,
+			    &py_s,                     // Local stiffness matrix arrays
+			    &py_stemp,
+			    &py_state,                 // Element arrays
+			    &py_dstate,
+			    &py_state0,
+			    &py_dmat,
+			    &py_ien,
+			    &py_lm,
+			    &py_lmx,
+			    &py_lmf,
+			    &py_ivfamily,
+			    &py_npar,
+			    &py_ielindx,
+                            &py_tractionverts,         // Traction BC arrays
+                            &py_tractionvals,
+                            &py_gauss2d,
+                            &py_sh2d,
+                            &py_infetype2d,
+			    &py_prop, // Material property arrays
+			    &py_infmatmod,
+			    &py_gauss,                 // Element type arrays
+			    &py_sh,
+			    &py_shj,
+			    &py_infetype,
+			    &py_histry,                // Time information
+			    &py_rtimdat,
+			    &py_ntimdat,
+			    &py_nvisdat,
+			    &py_maxstp,
+			    &py_delt,
+			    &py_alfa,
+			    &py_maxit,
+			    &py_ntdinit,
+			    &py_lgdef,
+			    &py_utol,
+			    &py_ftol,
+			    &py_etol,
+			    &py_itmax,
+			    &py_rgiter,       // Iterative solution information
+			    &py_skew,                  // Skew rotation information
+			    &py_iprint,                // Input/output information
+			    &py_ncodat,
+			    &py_nunits,
+			    &py_nprint,
+			    &py_istatout,
+			    &py_nstatout,
+			    &ofile,                  // Output file names
+			    &pfile,
+			    &ucdroot,
                 &viscousStage,
                 &iterateEvent,
                             &ntot,
@@ -3158,89 +3158,89 @@
   Mat      A = (Mat) PyCObject_AsVoidPtr(pyA);
   Vec      rhs = (Vec) PyCObject_AsVoidPtr(pyRhs);
   Vec      sol = (Vec) PyCObject_AsVoidPtr(pySol);
-  double*  pointerToBextern = (double*) PyCObject_AsVoidPtr(pyPointerToBextern);
-  double*  pointerToBtraction = (double*) PyCObject_AsVoidPtr(pyPointerToBtraction);
-  double*  pointerToBgravity = (double*) PyCObject_AsVoidPtr(pyPointerToBgravity);
-  double*  pointerToBconcForce = (double*) PyCObject_AsVoidPtr(pyPointerToBconcForce);
-  double*  pointerToBintern = (double*) PyCObject_AsVoidPtr(pyPointerToBintern);
-  double*  pointerToBresid = (double*) PyCObject_AsVoidPtr(pyPointerToBresid);
-  double*  pointerToBwink = (double*) PyCObject_AsVoidPtr(pyPointerToBwink);
-  double*  pointerToBwinkx = (double*) PyCObject_AsVoidPtr(pyPointerToBwinkx);
-  double*  pointerToDispVec = (double*) PyCObject_AsVoidPtr(pyPointerToDispVec);
-  double*  pointerToDprev = (double*) PyCObject_AsVoidPtr(pyPointerToDprev);
-  int*  pointerToListArrayNforce = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNforce);
-  double*  pointerToListArrayGrav = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayGrav);
-  double*  pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
-  double*  pointerToD = (double*) PyCObject_AsVoidPtr(pyPointerToD);
-  double*  pointerToDeld = (double*) PyCObject_AsVoidPtr(pyPointerToDeld);
-  double*  pointerToDcur = (double*) PyCObject_AsVoidPtr(pyPointerToDcur);
-  int*  pointerToId = (int*) PyCObject_AsVoidPtr(pyPointerToId);
-  int*  pointerToIwink = (int*) PyCObject_AsVoidPtr(pyPointerToIwink);
-  double*  pointerToWink = (double*) PyCObject_AsVoidPtr(pyPointerToWink);
-  int*  pointerToListArrayNsysdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNsysdat);
-  int*  pointerToListArrayIddmat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayIddmat);
-  int*  pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
-  double*  pointerToBond = (double*) PyCObject_AsVoidPtr(pyPointerToBond);
-  double*  pointerToDx = (double*) PyCObject_AsVoidPtr(pyPointerToDx);
-  double*  pointerToDeldx = (double*) PyCObject_AsVoidPtr(pyPointerToDeldx);
-  double*  pointerToDxcur = (double*) PyCObject_AsVoidPtr(pyPointerToDxcur);
-  double*  pointerToDiforc = (double*) PyCObject_AsVoidPtr(pyPointerToDiforc);
-  int*  pointerToIdx = (int*) PyCObject_AsVoidPtr(pyPointerToIdx);
-  int*  pointerToIwinkx = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkx);
-  double*  pointerToWinkx = (double*) PyCObject_AsVoidPtr(pyPointerToWinkx);
-  int*  pointerToIdslp = (int*) PyCObject_AsVoidPtr(pyPointerToIdslp);
-  int*  pointerToIpslp = (int*) PyCObject_AsVoidPtr(pyPointerToIpslp);
-  int*  pointerToIdhist = (int*) PyCObject_AsVoidPtr(pyPointerToIdhist);
-  double*  pointerToFault = (double*) PyCObject_AsVoidPtr(pyPointerToFault);
-  int*  pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
-  double*  pointerToDfault = (double*) PyCObject_AsVoidPtr(pyPointerToDfault);
-  double*  pointerToTfault = (double*) PyCObject_AsVoidPtr(pyPointerToTfault);
-  double*  pointerToS = (double*) PyCObject_AsVoidPtr(pyPointerToS);
-  double*  pointerToStemp = (double*) PyCObject_AsVoidPtr(pyPointerToStemp);
-  double*  pointerToState = (double*) PyCObject_AsVoidPtr(pyPointerToState);
-  double*  pointerToDstate = (double*) PyCObject_AsVoidPtr(pyPointerToDstate);
-  double*  pointerToState0 = (double*) PyCObject_AsVoidPtr(pyPointerToState0);
-  double*  pointerToDmat = (double*) PyCObject_AsVoidPtr(pyPointerToDmat);
-  int*  pointerToIen = (int*) PyCObject_AsVoidPtr(pyPointerToIen);
-  int*  pointerToLm = (int*) PyCObject_AsVoidPtr(pyPointerToLm);
-  int*  pointerToLmx = (int*) PyCObject_AsVoidPtr(pyPointerToLmx);
-  int*  pointerToLmf = (int*) PyCObject_AsVoidPtr(pyPointerToLmf);
-  int*  pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int*  pointerToListArrayNpar = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNpar);
-  int*  pointerToIelindx = (int*) PyCObject_AsVoidPtr(pyPointerToIelindx);
-  int*  pointerToTractionverts = (int*) PyCObject_AsVoidPtr(pyPointerToTractionverts);
-  double*  pointerToTractionvals = (double*) PyCObject_AsVoidPtr(pyPointerToTractionvals);
-  double*  pointerToGauss2d = (double*) PyCObject_AsVoidPtr(pyPointerToGauss2d);
-  double*  pointerToSh2d = (double*) PyCObject_AsVoidPtr(pyPointerToSh2d);
-  int*  pointerToListArrayElementTypeInfo2d = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo2d);
-  double*  pointerToListArrayPropertyList = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayPropertyList);
-  int*  pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
-  double*  pointerToGauss = (double*) PyCObject_AsVoidPtr(pyPointerToGauss);
-  double*  pointerToSh = (double*) PyCObject_AsVoidPtr(pyPointerToSh);
-  double*  pointerToShj = (double*) PyCObject_AsVoidPtr(pyPointerToShj);
-  int*  pointerToListArrayElementTypeInfo = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayElementTypeInfo);
-  double*  pointerToHistry = (double*) PyCObject_AsVoidPtr(pyPointerToHistry);
-  double*  pointerToListArrayRtimdat = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRtimdat);
-  int*  pointerToListArrayNtimdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNtimdat);
-  int*  pointerToListArrayNvisdat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNvisdat);
-  int*  pointerToMaxstp = (int*) PyCObject_AsVoidPtr(pyPointerToMaxstp);
-  double*  pointerToDelt = (double*) PyCObject_AsVoidPtr(pyPointerToDelt);
-  double*  pointerToAlfa = (double*) PyCObject_AsVoidPtr(pyPointerToAlfa);
-  int*  pointerToMaxit = (int*) PyCObject_AsVoidPtr(pyPointerToMaxit);
-  int*  pointerToNtdinit = (int*) PyCObject_AsVoidPtr(pyPointerToNtdinit);
-  int*  pointerToLgdef = (int*) PyCObject_AsVoidPtr(pyPointerToLgdef);
-  double*  pointerToUtol = (double*) PyCObject_AsVoidPtr(pyPointerToUtol);
-  double*  pointerToFtol = (double*) PyCObject_AsVoidPtr(pyPointerToFtol);
-  double*  pointerToEtol = (double*) PyCObject_AsVoidPtr(pyPointerToEtol);
-  int*  pointerToItmax = (int*) PyCObject_AsVoidPtr(pyPointerToItmax);
-  double*  pointerToListArrayRgiter = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayRgiter);
-  double*  pointerToSkew = (double*) PyCObject_AsVoidPtr(pyPointerToSkew);
-  int*  pointerToIprint = (int*) PyCObject_AsVoidPtr(pyPointerToIprint);
-  int*  pointerToListArrayNcodat = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNcodat);
-  int*  pointerToListArrayNunits = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNunits);
-  int*  pointerToListArrayNprint = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNprint);
-  int*  pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int*  pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  double*  bextern = (double*) PyCObject_AsVoidPtr(py_bextern);
+  double*  btraction = (double*) PyCObject_AsVoidPtr(py_btraction);
+  double*  bgravity = (double*) PyCObject_AsVoidPtr(py_bgravity);
+  double*  bconcForce = (double*) PyCObject_AsVoidPtr(py_bconcForce);
+  double*  bintern = (double*) PyCObject_AsVoidPtr(py_bintern);
+  double*  bresid = (double*) PyCObject_AsVoidPtr(py_bresid);
+  double*  bwink = (double*) PyCObject_AsVoidPtr(py_bwink);
+  double*  bwinkx = (double*) PyCObject_AsVoidPtr(py_bwinkx);
+  double*  dispVec = (double*) PyCObject_AsVoidPtr(py_dispVec);
+  double*  dprev = (double*) PyCObject_AsVoidPtr(py_dprev);
+  int*  nforce = (int*) PyCObject_AsVoidPtr(py_nforce);
+  double*  grav = (double*) PyCObject_AsVoidPtr(py_grav);
+  double*  x = (double*) PyCObject_AsVoidPtr(py_x);
+  double*  d = (double*) PyCObject_AsVoidPtr(py_d);
+  double*  deld = (double*) PyCObject_AsVoidPtr(py_deld);
+  double*  dcur = (double*) PyCObject_AsVoidPtr(py_dcur);
+  int*  id = (int*) PyCObject_AsVoidPtr(py_id);
+  int*  iwink = (int*) PyCObject_AsVoidPtr(py_iwink);
+  double*  wink = (double*) PyCObject_AsVoidPtr(py_wink);
+  int*  nsysdat = (int*) PyCObject_AsVoidPtr(py_nsysdat);
+  int*  iddmat = (int*) PyCObject_AsVoidPtr(py_iddmat);
+  int*  ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
+  double*  bond = (double*) PyCObject_AsVoidPtr(py_bond);
+  double*  dx = (double*) PyCObject_AsVoidPtr(py_dx);
+  double*  deldx = (double*) PyCObject_AsVoidPtr(py_deldx);
+  double*  dxcur = (double*) PyCObject_AsVoidPtr(py_dxcur);
+  double*  diforc = (double*) PyCObject_AsVoidPtr(py_diforc);
+  int*  idx = (int*) PyCObject_AsVoidPtr(py_idx);
+  int*  iwinkx = (int*) PyCObject_AsVoidPtr(py_iwinkx);
+  double*  winkx = (double*) PyCObject_AsVoidPtr(py_winkx);
+  int*  idslp = (int*) PyCObject_AsVoidPtr(py_idslp);
+  int*  ipslp = (int*) PyCObject_AsVoidPtr(py_ipslp);
+  int*  idhist = (int*) PyCObject_AsVoidPtr(py_idhist);
+  double*  fault = (double*) PyCObject_AsVoidPtr(py_fault);
+  int*  nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
+  double*  dfault = (double*) PyCObject_AsVoidPtr(py_dfault);
+  double*  tfault = (double*) PyCObject_AsVoidPtr(py_tfault);
+  double*  s = (double*) PyCObject_AsVoidPtr(py_s);
+  double*  stemp = (double*) PyCObject_AsVoidPtr(py_stemp);
+  double*  state = (double*) PyCObject_AsVoidPtr(py_state);
+  double*  dstate = (double*) PyCObject_AsVoidPtr(py_dstate);
+  double*  state0 = (double*) PyCObject_AsVoidPtr(py_state0);
+  double*  dmat = (double*) PyCObject_AsVoidPtr(py_dmat);
+  int*  ien = (int*) PyCObject_AsVoidPtr(py_ien);
+  int*  lm = (int*) PyCObject_AsVoidPtr(py_lm);
+  int*  lmx = (int*) PyCObject_AsVoidPtr(py_lmx);
+  int*  lmf = (int*) PyCObject_AsVoidPtr(py_lmf);
+  int*  ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int*  npar = (int*) PyCObject_AsVoidPtr(py_npar);
+  int*  ielindx = (int*) PyCObject_AsVoidPtr(py_ielindx);
+  int*  tractionverts = (int*) PyCObject_AsVoidPtr(py_tractionverts);
+  double*  tractionvals = (double*) PyCObject_AsVoidPtr(py_tractionvals);
+  double*  gauss2d = (double*) PyCObject_AsVoidPtr(py_gauss2d);
+  double*  sh2d = (double*) PyCObject_AsVoidPtr(py_sh2d);
+  int*  infetype2d = (int*) PyCObject_AsVoidPtr(py_infetype2d);
+  double*  prop = (double*) PyCObject_AsVoidPtr(py_prop);
+  int*  infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
+  double*  gauss = (double*) PyCObject_AsVoidPtr(py_gauss);
+  double*  sh = (double*) PyCObject_AsVoidPtr(py_sh);
+  double*  shj = (double*) PyCObject_AsVoidPtr(py_shj);
+  int*  infetype = (int*) PyCObject_AsVoidPtr(py_infetype);
+  double*  histry = (double*) PyCObject_AsVoidPtr(py_histry);
+  double*  rtimdat = (double*) PyCObject_AsVoidPtr(py_rtimdat);
+  int*  ntimdat = (int*) PyCObject_AsVoidPtr(py_ntimdat);
+  int*  nvisdat = (int*) PyCObject_AsVoidPtr(py_nvisdat);
+  int*  maxstp = (int*) PyCObject_AsVoidPtr(py_maxstp);
+  double*  delt = (double*) PyCObject_AsVoidPtr(py_delt);
+  double*  alfa = (double*) PyCObject_AsVoidPtr(py_alfa);
+  int*  maxit = (int*) PyCObject_AsVoidPtr(py_maxit);
+  int*  ntdinit = (int*) PyCObject_AsVoidPtr(py_ntdinit);
+  int*  lgdef = (int*) PyCObject_AsVoidPtr(py_lgdef);
+  double*  utol = (double*) PyCObject_AsVoidPtr(py_utol);
+  double*  ftol = (double*) PyCObject_AsVoidPtr(py_ftol);
+  double*  etol = (double*) PyCObject_AsVoidPtr(py_etol);
+  int*  itmax = (int*) PyCObject_AsVoidPtr(py_itmax);
+  double*  rgiter = (double*) PyCObject_AsVoidPtr(py_rgiter);
+  double*  skew = (double*) PyCObject_AsVoidPtr(py_skew);
+  int*  iprint = (int*) PyCObject_AsVoidPtr(py_iprint);
+  int*  ncodat = (int*) PyCObject_AsVoidPtr(py_ncodat);
+  int*  nunits = (int*) PyCObject_AsVoidPtr(py_nunits);
+  int*  nprint = (int*) PyCObject_AsVoidPtr(py_nprint);
+  int*  istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int*  nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
   double gtol[4];
   if (PyList_Size(pyGtol) != 3) {
@@ -3258,92 +3258,92 @@
   viscos_step_f(&A,                            // 1: Sparse matrix arrays
 	   &rhs,
 	   &sol,
-	   pointerToBextern,                  // Force vectors
-	   pointerToBtraction,
-	   pointerToBgravity,
-	   pointerToBconcForce,
-	   pointerToBintern,
-	   pointerToBresid,
-	   pointerToBwink,                    // 10
-	   pointerToBwinkx,
-	   pointerToDispVec,
-	   pointerToDprev,
-	   pointerToListArrayNforce,
-	   pointerToListArrayGrav,
-	   pointerToX,                        // Global arrays
-	   pointerToD,
-	   pointerToDeld,
-	   pointerToDcur,
-	   pointerToId,                       // 20
-	   pointerToIwink,
-	   pointerToWink,
-	   pointerToListArrayNsysdat,
-	   pointerToListArrayIddmat,
-	   pointerToIbond,                    // Boundary condition arrays
-	   pointerToBond,
-	   pointerToDx,                       // Slippery node arrays
-	   pointerToDeldx,
-	   pointerToDxcur,
-	   pointerToDiforc,                   // 30
-	   pointerToIdx,
-	   pointerToIwinkx,
-	   pointerToWinkx,
-	   pointerToIdslp,
-	   pointerToIpslp,
-	   pointerToIdhist,
-	   pointerToFault,                    // Split node arrays
-	   pointerToNfault,
-	   pointerToDfault,
-	   pointerToTfault,                   // 40
-	   pointerToS,                        // Local stiffness matrix arrays
-	   pointerToStemp,
-	   pointerToState,                    // Element arrays
-	   pointerToDstate,
-	   pointerToState0,
-	   pointerToDmat,
-	   pointerToIen,
-	   pointerToLm,
-	   pointerToLmx,
-	   pointerToLmf,                      // 50
-	   pointerToIvfamily,
-	   pointerToListArrayNpar,
-		pointerToIelindx,
-		pointerToTractionverts,            // Traction BC arrays
-	   pointerToTractionvals,
-	   pointerToGauss2d,
-	   pointerToSh2d,
-	   pointerToListArrayElementTypeInfo2d,
-	   pointerToListArrayPropertyList,    // Material property arrays
-	   pointerToMaterialModelInfo,        // 60
-	   pointerToGauss,                    // Element type arrays
-	   pointerToSh,
-	   pointerToShj,
-	   pointerToListArrayElementTypeInfo,
-	   pointerToHistry,                   // Time information
-	   pointerToListArrayRtimdat,
-	   pointerToListArrayNtimdat,
-	   pointerToListArrayNvisdat,
-	   pointerToMaxstp,
-	   pointerToDelt,                     // 70
-	   pointerToAlfa,
-	   pointerToMaxit,
-	   pointerToNtdinit,
-	   pointerToLgdef,
-	   pointerToUtol,
-	   pointerToFtol,
-	   pointerToEtol,
-	   pointerToItmax,
-	   pointerToListArrayRgiter,          // Iterative solution information
-	   pointerToSkew,                     // 80: Skew rotation information
-	   pointerToIprint,                   // Input/output information
-	   pointerToListArrayNcodat,
-	   pointerToListArrayNunits,
-	   pointerToListArrayNprint,
-	   pointerToIstatout,
-	   pointerToNstatout,
-	   asciiOutputFile,                   // Output file names
-	   plotOutputFile,
-	   ucdOutputRoot,
+	   bextern,                  // Force vectors
+	   btraction,
+	   bgravity,
+	   bconcForce,
+	   bintern,
+	   bresid,
+	   bwink,                    // 10
+	   bwinkx,
+	   dispVec,
+	   dprev,
+	   nforce,
+	   grav,
+	   x,                                 // Global arrays
+	   d,
+	   deld,
+	   dcur,
+	   id,                       // 20
+	   iwink,
+	   wink,
+	   nsysdat,
+	   iddmat,
+	   ibond,                    // Boundary condition arrays
+	   bond,
+	   dx,                       // Slippery node arrays
+	   deldx,
+	   dxcur,
+	   diforc,                   // 30
+	   idx,
+	   iwinkx,
+	   winkx,
+	   idslp,
+	   ipslp,
+	   idhist,
+	   fault,                    // Split node arrays
+	   nfault,
+	   dfault,
+	   tfault,                   // 40
+	   s,                        // Local stiffness matrix arrays
+	   stemp,
+	   state,                    // Element arrays
+	   dstate,
+	   state0,
+	   dmat,
+	   ien,
+	   lm,
+	   lmx,
+	   lmf,                      // 50
+	   ivfamily,
+	   npar,
+		ielindx,
+		tractionverts,            // Traction BC arrays
+	   tractionvals,
+	   gauss2d,
+	   sh2d,
+	   infetype2d,
+	   prop,    // Material property arrays
+	   infmatmod,                         // 60
+	   gauss,                    // Element type arrays
+	   sh,
+	   shj,
+	   infetype,
+	   histry,                   // Time information
+	   rtimdat,
+	   ntimdat,
+	   nvisdat,
+	   maxstp,
+	   delt,                     // 70
+	   alfa,
+	   maxit,
+	   ntdinit,
+	   lgdef,
+	   utol,
+	   ftol,
+	   etol,
+	   itmax,
+	   rgiter,          // Iterative solution information
+	   skew,                     // 80: Skew rotation information
+	   iprint,                   // Input/output information
+	   ncodat,
+	   nunits,
+	   nprint,
+	   istatout,
+	   nstatout,
+	   ofile,                   // Output file names
+	   pfile,
+	   ucdroot,
 	   &viscousStage,                     // 90: PETSC logging
 	   &iterateEvent,
                 &ntot,
@@ -3361,9 +3361,9 @@
                 gtol,
 	   &errorcode,                        // Error codes
 	   errorstring,
-	   strlen(asciiOutputFile),           // String lengths
-	   strlen(plotOutputFile),
-	   strlen(ucdOutputRoot),
+	   strlen(ofile),           // String lengths
+	   strlen(pfile),
+	   strlen(ucdroot),
 	   sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3382,17 +3382,17 @@
 
 PyObject * pypylith3d_viscos_setup(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToListArrayNprint;
-  PyObject* pyPointerToListArrayNunits;
-  char* asciiOutputFile;                      // Output file names
-  char* plotOutputFile;
+  PyObject* py_nprint;
+  PyObject* py_nunits;
+  char* ofile;                      // Output file names
+  char* pfile;
   int viscousStage;
 
   int ok = PyArg_ParseTuple(args, "OOssi:viscos_setup",
-			    &pyPointerToListArrayNprint,
-			    &pyPointerToListArrayNunits,
-			    &asciiOutputFile,                  // Output file names
-                &plotOutputFile,
+			    &py_nprint,
+			    &py_nunits,
+			    &ofile,                  // Output file names
+                &pfile,
                 &viscousStage);
 
   if (!ok) {
@@ -3402,18 +3402,18 @@
   int  errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int *pointerToListArrayNprint = (int *) PyCObject_AsVoidPtr(pyPointerToListArrayNprint);
-  int *pointerToListArrayNunits = (int *) PyCObject_AsVoidPtr(pyPointerToListArrayNunits);
+  int *nprint = (int *) PyCObject_AsVoidPtr(py_nprint);
+  int *nunits = (int *) PyCObject_AsVoidPtr(py_nunits);
 
-  viscos_setup_f(pointerToListArrayNprint,
-                 pointerToListArrayNunits,
-                 asciiOutputFile,                   // Output file names
-                 plotOutputFile,
+  viscos_setup_f(nprint,
+                 nunits,
+                 ofile,                   // Output file names
+                 pfile,
                  &viscousStage,                     // PETSC logging
                  &errorcode,                        // Error codes
                  errorstring,
-                 strlen(asciiOutputFile),           // String lengths
-                 strlen(plotOutputFile),
+                 strlen(ofile),           // String lengths
+                 strlen(pfile),
                  sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3424,7 +3424,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "asciiOutputFile:" << asciiOutputFile
+    << "ofile:" << ofile
     << journal::endl;
 
   // return
@@ -3439,11 +3439,11 @@
 
 PyObject * pypylith3d_viscos_cleanup(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToListArrayNtimdat;
-  PyObject* pyPointerToListArrayNprint;
-  PyObject* pyPointerToListArrayNunits;
+  PyObject* py_ntimdat;
+  PyObject* py_nprint;
+  PyObject* py_nunits;
 
-  int ok = PyArg_ParseTuple(args, "OOO:viscos_cleanup",&pyPointerToListArrayNtimdat, &pyPointerToListArrayNprint, &pyPointerToListArrayNunits);
+  int ok = PyArg_ParseTuple(args, "OOO:viscos_cleanup",&py_ntimdat, &py_nprint, &py_nunits);
 
   if (!ok) {
     return 0;
@@ -3452,13 +3452,13 @@
   int  errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int *pointerToListArrayNtimdat = (int *) PyCObject_AsVoidPtr(pyPointerToListArrayNtimdat);
-  int *pointerToListArrayNprint = (int *) PyCObject_AsVoidPtr(pyPointerToListArrayNprint);
-  int *pointerToListArrayNunits  = (int *) PyCObject_AsVoidPtr(pyPointerToListArrayNunits);
+  int *ntimdat = (int *) PyCObject_AsVoidPtr(py_ntimdat);
+  int *nprint = (int *) PyCObject_AsVoidPtr(py_nprint);
+  int *nunits  = (int *) PyCObject_AsVoidPtr(py_nunits);
 
-  viscos_cleanup_f(pointerToListArrayNtimdat,
-                   pointerToListArrayNprint,
-                   pointerToListArrayNunits,
+  viscos_cleanup_f(ntimdat,
+                   nprint,
+                   nunits,
                    &errorcode,                        // Error codes
                    errorstring,
                    sizeof(errorstring));
@@ -3481,20 +3481,20 @@
 
 PyObject * pypylith3d_write_bc(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToBond;
-  PyObject* pyPointerToIbond;
-  int numberNodes;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_bond;
+  PyObject* py_ibond;
+  int numnp;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOiiis:write_bc",
-			    &pyPointerToBond,
-			    &pyPointerToIbond,
-			    &numberNodes,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_bond,
+			    &py_ibond,
+			    &numnp,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -3503,18 +3503,18 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToBond = (double*) PyCObject_AsVoidPtr(pyPointerToBond);
-  int* pointerToIbond = (int*) PyCObject_AsVoidPtr(pyPointerToIbond);
+  double* bond = (double*) PyCObject_AsVoidPtr(py_bond);
+  int* ibond = (int*) PyCObject_AsVoidPtr(py_ibond);
 
-  write_bc_f(pointerToBond,
-	     pointerToIbond,
-	     &numberNodes,
-	     &f77AsciiOutput,
-	     &asciiOutputInt,
-	     asciiOutputFile,
+  write_bc_f(bond,
+	     ibond,
+	     &numnp,
+	     &kw,
+	     &idout,
+	     ofile,
 	     &errorcode,
 	     errorstring,
-	     strlen(asciiOutputFile),
+	     strlen(ofile),
 	     sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3524,7 +3524,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberNodes:" << numberNodes
+    << "numnp:" << numnp
     << journal::endl;
 
   // return
@@ -3540,36 +3540,36 @@
 
 PyObject * pypylith3d_write_connect(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToIndxiel;
-  int numberVolumeElementNodes;
-  int numberVolumeElementGaussPoints;
-  int numberVolumeElements;
-  int volumeElementType;
-  int numberVolumeElementFamilies;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  int asciiOutputInt;
-  int plotOutputInt;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  PyObject* py_iens;
+  PyObject* py_ivfamily;
+  PyObject* py_indxiel;
+  int nen;
+  int ngauss;
+  int numelv;
+  int ietypev;
+  int nvfamilies;
+  int kw;
+  int kp;
+  int idout;
+  int idsk;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "OOOiiiiiiiiiss:write_connect",
-                            &pyPointerToIens,
-                            &pyPointerToIvfamily,
-                            &pyPointerToIndxiel,
-                            &numberVolumeElementNodes,
-                            &numberVolumeElementGaussPoints,
-                            &numberVolumeElements,
-                            &volumeElementType,
-                            &numberVolumeElementFamilies,
-                            &f77AsciiOutput,
-                            &f77PlotOutput,
-                            &asciiOutputInt,
-                            &plotOutputInt,
-                            &asciiOutputFile,
-                            &plotOutputFile);
+                            &py_iens,
+                            &py_ivfamily,
+                            &py_indxiel,
+                            &nen,
+                            &ngauss,
+                            &numelv,
+                            &ietypev,
+                            &nvfamilies,
+                            &kw,
+                            &kp,
+                            &idout,
+                            &idsk,
+                            &ofile,
+                            &pfile);
 
   if (!ok) {
     return 0;
@@ -3578,28 +3578,28 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int* pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int* pointerToIndxiel = (int*) PyCObject_AsVoidPtr(pyPointerToIndxiel);
+  int* iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int* ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int* indxiel = (int*) PyCObject_AsVoidPtr(py_indxiel);
 
-  write_connect_f(pointerToIens,
-		  pointerToIvfamily,
-		  pointerToIndxiel,
-		  &numberVolumeElementNodes,
-		  &numberVolumeElementGaussPoints,
-		  &numberVolumeElements,
-		  &volumeElementType,
-		  &numberVolumeElementFamilies,
-		  &f77AsciiOutput,
-		  &f77PlotOutput,
-		  &asciiOutputInt,
-		  &plotOutputInt,
-		  asciiOutputFile,
-		  plotOutputFile,
+  write_connect_f(iens,
+		  ivfamily,
+		  indxiel,
+		  &nen,
+		  &ngauss,
+		  &numelv,
+		  &ietypev,
+		  &nvfamilies,
+		  &kw,
+		  &kp,
+		  &idout,
+		  &idsk,
+		  ofile,
+		  pfile,
 		  &errorcode,
 		  errorstring,
-		  strlen(asciiOutputFile),
-		  strlen(plotOutputFile),
+		  strlen(ofile),
+		  strlen(pfile),
 		  sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3609,7 +3609,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElements:" << numberVolumeElements
+    << "numelv:" << numelv
     << journal::endl;
 
   // return
@@ -3625,24 +3625,24 @@
 
 PyObject * pypylith3d_write_coords(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToX;
-  int numberNodes;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  int asciiOutputInt;
-  int plotOutputInt;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  PyObject* py_x;
+  int numnp;
+  int kw;
+  int kp;
+  int idout;
+  int idsk;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "Oiiiiiss:write_coords",
-			    &pyPointerToX,
-			    &numberNodes,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &py_x,
+			    &numnp,
+			    &kw,
+			    &kp,
+			    &idout,
+			    &idsk,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
@@ -3651,20 +3651,20 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
+  double* x = (double*) PyCObject_AsVoidPtr(py_x);
 
-  write_coords_f(pointerToX,
-		 &numberNodes,
-		 &f77AsciiOutput,
-		 &f77PlotOutput,
-		 &asciiOutputInt,
-		 &plotOutputInt,
-		 asciiOutputFile,
-		 plotOutputFile,
+  write_coords_f(x,
+		 &numnp,
+		 &kw,
+		 &kp,
+		 &idout,
+		 &idsk,
+		 ofile,
+		 pfile,
 		 &errorcode,
 		 errorstring,
-		 strlen(asciiOutputFile),
-		 strlen(plotOutputFile),
+		 strlen(ofile),
+		 strlen(pfile),
 		 sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3674,7 +3674,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberNodes:" << numberNodes
+    << "numnp:" << numnp
     << journal::endl;
 
   // return
@@ -3690,26 +3690,26 @@
 
 PyObject * pypylith3d_write_diff(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToDiforc;
-  PyObject* pyPointerToNslip;
-  PyObject* pyPointerToIdhist;
-  int numberSlipperyNodeEntries;
-  int numberDifferentialForceEntries;
-  int numberNodes;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_diforc;
+  PyObject* py_nslip;
+  PyObject* py_idhist;
+  int numslp;
+  int numdif;
+  int numnp;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOOiiiiis:write_diff",
-			    &pyPointerToDiforc,
-			    &pyPointerToNslip,
-			    &pyPointerToIdhist,
-			    &numberSlipperyNodeEntries,
-			    &numberDifferentialForceEntries,
-			    &numberNodes,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_diforc,
+			    &py_nslip,
+			    &py_idhist,
+			    &numslp,
+			    &numdif,
+			    &numnp,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -3718,22 +3718,22 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToDiforc = (double*) PyCObject_AsVoidPtr(pyPointerToDiforc);
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
-  int* pointerToIdhist = (int*) PyCObject_AsVoidPtr(pyPointerToIdhist);
+  double* diforc = (double*) PyCObject_AsVoidPtr(py_diforc);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
+  int* idhist = (int*) PyCObject_AsVoidPtr(py_idhist);
 
-  write_diff_f(pointerToDiforc,
-	       pointerToNslip,
-	       pointerToIdhist,
-	       &numberSlipperyNodeEntries,
-	       &numberDifferentialForceEntries,
-	       &numberNodes,
-	       &f77AsciiOutput,
-	       &asciiOutputInt,
-	       asciiOutputFile,
+  write_diff_f(diforc,
+	       nslip,
+	       idhist,
+	       &numslp,
+	       &numdif,
+	       &numnp,
+	       &kw,
+	       &idout,
+	       ofile,
 	       &errorcode,
 	       errorstring,
-	       strlen(asciiOutputFile),
+	       strlen(ofile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3743,7 +3743,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberDifferentialForceEntries:" << numberDifferentialForceEntries
+    << "numdif:" << numdif
     << journal::endl;
 
   // return
@@ -3758,54 +3758,54 @@
 
 PyObject * pypylith3d_write_element_info(PyObject *, PyObject *args)
 {
-  int numberVolumeElements;
-  int numberVolumeElementNodes;
-  int numberVolumeElementGaussPoints;
-  int volumeElementType;
-  int quadratureOrderInt;
-  int prestressAutoComputeInt;
-  int prestressAutoChangeElasticPropsInt;
-  double prestressAutoComputePoisson;
-  double prestressAutoComputeYoungs;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  int numelv;
+  int nen;
+  int ngauss;
+  int ietypev;
+  int intord;
+  int ipstrs;
+  int ipauto;
+  double tpois;
+  double tyoungs;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "iiiiiiiddiis:write_element_info",
-			    &numberVolumeElements,
-			    &numberVolumeElementNodes,
-			    &numberVolumeElementGaussPoints,
-			    &volumeElementType,
-			    &quadratureOrderInt,
-			    &prestressAutoComputeInt,
-			    &prestressAutoChangeElasticPropsInt,
-			    &prestressAutoComputePoisson,
-			    &prestressAutoComputeYoungs,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &numelv,
+			    &nen,
+			    &ngauss,
+			    &ietypev,
+			    &intord,
+			    &ipstrs,
+			    &ipauto,
+			    &tpois,
+			    &tyoungs,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
   }
 
-  write_element_info_f(&numberVolumeElements,
-		       &numberVolumeElementNodes,
-		       &numberVolumeElementGaussPoints,
-		       &volumeElementType,
-		       &quadratureOrderInt,
-		       &prestressAutoComputeInt,
-		       &prestressAutoChangeElasticPropsInt,
-		       &prestressAutoComputePoisson,
-		       &prestressAutoComputeYoungs,
-		       &f77AsciiOutput,
-		       &asciiOutputInt,
-		       asciiOutputFile,strlen(asciiOutputFile));
+  write_element_info_f(&numelv,
+		       &nen,
+		       &ngauss,
+		       &ietypev,
+		       &intord,
+		       &ipstrs,
+		       &ipauto,
+		       &tpois,
+		       &tyoungs,
+		       &kw,
+		       &idout,
+		       ofile,strlen(ofile));
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElements:" << numberVolumeElements
+    << "numelv:" << numelv
     << journal::endl;
 
   // return
@@ -3821,30 +3821,30 @@
 
 PyObject * pypylith3d_write_fuldat(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIprint;
-  int numberFullOutputs;
-  int analysisTypeInt;
-  int numberCycles;
-  int totalNumberTimeSteps;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  int asciiOutputInt;
-  int plotOutputInt;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  PyObject* py_iprint;
+  int icontr;
+  int icode;
+  int ncycle;
+  int lastep;
+  int kw;
+  int kp;
+  int idout;
+  int idsk;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "Oiiiiiiiiss:write_fuldat",
-			    &pyPointerToIprint,
-			    &numberFullOutputs,
-			    &analysisTypeInt,
-			    &numberCycles,
-			    &totalNumberTimeSteps,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &py_iprint,
+			    &icontr,
+			    &icode,
+			    &ncycle,
+			    &lastep,
+			    &kw,
+			    &kp,
+			    &idout,
+			    &idsk,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
@@ -3853,23 +3853,23 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIprint = (int*) PyCObject_AsVoidPtr(pyPointerToIprint);
+  int* iprint = (int*) PyCObject_AsVoidPtr(py_iprint);
 
-  write_fuldat_f(pointerToIprint,
-		 &numberFullOutputs,
-		 &analysisTypeInt,
-		 &numberCycles,
-		 &totalNumberTimeSteps,
-		 &f77AsciiOutput,
-		 &f77PlotOutput,
-		 &asciiOutputInt,
-		 &plotOutputInt,
-		 asciiOutputFile,
-		 plotOutputFile,
+  write_fuldat_f(iprint,
+		 &icontr,
+		 &icode,
+		 &ncycle,
+		 &lastep,
+		 &kw,
+		 &kp,
+		 &idout,
+		 &idsk,
+		 ofile,
+		 pfile,
 		 &errorcode,
 		 errorstring,
-		 strlen(asciiOutputFile),
-		 strlen(plotOutputFile),
+		 strlen(ofile),
+		 strlen(pfile),
 		 sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -3879,7 +3879,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberFullOutputs:" << numberFullOutputs
+    << "icontr:" << icontr
     << journal::endl;
 
   // return
@@ -3896,50 +3896,50 @@
 PyObject * pypylith3d_write_global_info(PyObject *, PyObject *args)
 {
   char* title;
-  int asciiOutputInt;
-  int plotOutputInt;
-  int numberNodes;
-  int analysisTypeInt;
-  int debuggingOutputInt;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  int idout;
+  int idsk;
+  int numnp;
+  int icode;
+  int idebug;
+  int kw;
+  int kp;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "siiiiiiiss:write_global_info",
 			    &title,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &numberNodes,
-			    &analysisTypeInt,
-			    &debuggingOutputInt,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &idout,
+			    &idsk,
+			    &numnp,
+			    &icode,
+			    &idebug,
+			    &kw,
+			    &kp,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
   }
 
   write_global_info_f(title,
-		      &asciiOutputInt,
-		      &plotOutputInt,
-		      &numberNodes,
-		      &analysisTypeInt,
-		      &debuggingOutputInt,
-		      &f77AsciiOutput,
-		      &f77PlotOutput,
-		      asciiOutputFile,
-		      plotOutputFile,
+		      &idout,
+		      &idsk,
+		      &numnp,
+		      &icode,
+		      &idebug,
+		      &kw,
+		      &kp,
+		      ofile,
+		      pfile,
 		      strlen(title),
-		      strlen(asciiOutputFile),
-		      strlen(plotOutputFile));
+		      strlen(ofile),
+		      strlen(pfile));
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "debuggingOutputInt:" << debuggingOutputInt
+    << "idebug:" << idebug
     << journal::endl;
 
   // return
@@ -3955,22 +3955,22 @@
 
 PyObject * pypylith3d_write_hist(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToHistry;
-  PyObject* pyPointerToTimes;
-  int numberLoadHistories;
-  int totalNumberTimeSteps;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_histry;
+  PyObject* py_times;
+  int nhist;
+  int lastep;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOiiiis:write_hist",
-			    &pyPointerToHistry,
-			    &pyPointerToTimes,
-			    &numberLoadHistories,
-			    &totalNumberTimeSteps,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_histry,
+			    &py_times,
+			    &nhist,
+			    &lastep,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -3979,19 +3979,19 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToHistry = (double*) PyCObject_AsVoidPtr(pyPointerToHistry);
-  double* pointerToTimes = (double*) PyCObject_AsVoidPtr(pyPointerToTimes);
+  double* histry = (double*) PyCObject_AsVoidPtr(py_histry);
+  double* times = (double*) PyCObject_AsVoidPtr(py_times);
 
-  write_hist_f(pointerToHistry,
-	       pointerToTimes,
-	       &numberLoadHistories,
-	       &totalNumberTimeSteps,
-	       &f77AsciiOutput,
-	       &asciiOutputInt,
-	       asciiOutputFile,
+  write_hist_f(histry,
+	       times,
+	       &nhist,
+	       &lastep,
+	       &kw,
+	       &idout,
+	       ofile,
 	       &errorcode,
 	       errorstring,
-	       strlen(asciiOutputFile),
+	       strlen(ofile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4001,7 +4001,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberLoadHistories:" << numberLoadHistories
+    << "nhist:" << nhist
     << journal::endl;
 
   // return
@@ -4017,32 +4017,32 @@
 
 PyObject * pypylith3d_write_props(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToListArrayPropertyList;
-  PyObject* pyPointerToListArrayGrav;
-  PyObject* pyPointerToIvfamily;
-  PyObject* pyPointerToMaterialModelInfo;
-  int numberVolumeElementFamilies;
+  PyObject* py_prop;
+  PyObject* py_grav;
+  PyObject* py_ivfamily;
+  PyObject* py_infmatmod;
+  int nvfamilies;
   int propertySize;
-  int asciiOutputInt;
-  int plotOutputInt;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  int idout;
+  int idsk;
+  int kw;
+  int kp;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "OOOOiiiiiiss:write_props",
-			    &pyPointerToListArrayPropertyList,
-			    &pyPointerToListArrayGrav,
-			    &pyPointerToIvfamily,
-			    &pyPointerToMaterialModelInfo,
-			    &numberVolumeElementFamilies,
+			    &py_prop,
+			    &py_grav,
+			    &py_ivfamily,
+			    &py_infmatmod,
+			    &nvfamilies,
 			    &propertySize,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &idout,
+			    &idsk,
+			    &kw,
+			    &kp,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
@@ -4051,27 +4051,27 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToListArrayPropertyList = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayPropertyList);
-  double* pointerToListArrayGrav = (double*) PyCObject_AsVoidPtr(pyPointerToListArrayGrav);
-  int* pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  int* pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
+  double* prop = (double*) PyCObject_AsVoidPtr(py_prop);
+  double* grav = (double*) PyCObject_AsVoidPtr(py_grav);
+  int* ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  int* infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
 
-  write_props_f(pointerToListArrayPropertyList,
-		pointerToListArrayGrav,
-		pointerToIvfamily,
-		pointerToMaterialModelInfo,
-		&numberVolumeElementFamilies,
+  write_props_f(prop,
+		grav,
+		ivfamily,
+		infmatmod,
+		&nvfamilies,
 		&propertySize,
-		&asciiOutputInt,
-		&plotOutputInt,
-		&f77AsciiOutput,
-		&f77PlotOutput,
-		asciiOutputFile,
-		plotOutputFile,
+		&idout,
+		&idsk,
+		&kw,
+		&kp,
+		ofile,
+		pfile,
 		&errorcode,
 		errorstring,
-		strlen(asciiOutputFile),
-		strlen(plotOutputFile),
+		strlen(ofile),
+		strlen(pfile),
 		sizeof(errorstring));
 
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4081,7 +4081,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElementFamilies:" << numberVolumeElementFamilies
+    << "nvfamilies:" << nvfamilies
     << journal::endl;
 
   // return
@@ -4097,22 +4097,22 @@
 
 PyObject * pypylith3d_write_skew(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToSkew;
-  int numberRotationEntries;
-  int autoRotateSlipperyNodesInt;
-  int numberNodes;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_skew;
+  int numrot;
+  int iskopt;
+  int numnp;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "Oiiiiis:write_skew",
-			    &pyPointerToSkew,
-			    &numberRotationEntries,
-			    &autoRotateSlipperyNodesInt,
-			    &numberNodes,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_skew,
+			    &numrot,
+			    &iskopt,
+			    &numnp,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -4121,18 +4121,18 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToSkew = (double*) PyCObject_AsVoidPtr(pyPointerToSkew);
+  double* skew = (double*) PyCObject_AsVoidPtr(py_skew);
 
-  write_skew_f(pointerToSkew,
-	       &numberRotationEntries,
-	       &autoRotateSlipperyNodesInt,
-	       &numberNodes,
-	       &f77AsciiOutput,
-	       &asciiOutputInt,
-	       asciiOutputFile,
+  write_skew_f(skew,
+	       &numrot,
+	       &iskopt,
+	       &numnp,
+	       &kw,
+	       &idout,
+	       ofile,
 	       &errorcode,
 	       errorstring,
-	       strlen(asciiOutputFile),
+	       strlen(ofile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4142,7 +4142,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberRotationEntries:" << numberRotationEntries
+    << "numrot:" << numrot
     << journal::endl;
 
   // return
@@ -4158,26 +4158,26 @@
 
 PyObject * pypylith3d_write_slip(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToNslip;
-  int numberSlipperyNodeEntries;
+  PyObject* py_nslip;
+  int numslp;
   int totalNumberSlipperyNodes;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  int asciiOutputInt;
-  int plotOutputInt;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  int kw;
+  int kp;
+  int idout;
+  int idsk;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "Oiiiiiiss:write_slip",
-			    &pyPointerToNslip,
-			    &numberSlipperyNodeEntries,
+			    &py_nslip,
+			    &numslp,
 			    &totalNumberSlipperyNodes,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &kw,
+			    &kp,
+			    &idout,
+			    &idsk,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
@@ -4186,21 +4186,21 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToNslip = (int*) PyCObject_AsVoidPtr(pyPointerToNslip);
+  int* nslip = (int*) PyCObject_AsVoidPtr(py_nslip);
 
-  write_slip_f(pointerToNslip,
-	       &numberSlipperyNodeEntries,
+  write_slip_f(nslip,
+	       &numslp,
 	       &totalNumberSlipperyNodes,
-	       &f77AsciiOutput,
-	       &f77PlotOutput,
-	       &asciiOutputInt,
-	       &plotOutputInt,
-	       asciiOutputFile,
-	       plotOutputFile,
+	       &kw,
+	       &kp,
+	       &idout,
+	       &idsk,
+	       ofile,
+	       pfile,
 	       &errorcode,
 	       errorstring,
-	       strlen(asciiOutputFile),
-	       strlen(plotOutputFile),
+	       strlen(ofile),
+	       strlen(pfile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4226,42 +4226,42 @@
 
 PyObject * pypylith3d_write_sparse_info(PyObject *, PyObject *args)
 {
-  int numberGlobalEquations;
+  int neq;
   int stiffnessMatrixSize;
-  int minimumNonzeroTermsPerRow;
-  int maximumNonzeroTermsPerRow;
-  double averageNonzeroTermsPerRow;
-  int asciiOutputInt;
-  int f77AsciiOutput;
-  char* asciiOutputFile;
+  int nmin;
+  int nmax;
+  double wavg;
+  int idout;
+  int kw;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "iiiidiis:write_sparse_info",
-			    &numberGlobalEquations,
+			    &neq,
 			    &stiffnessMatrixSize,
-			    &minimumNonzeroTermsPerRow,
-			    &maximumNonzeroTermsPerRow,
-			    &averageNonzeroTermsPerRow,
-			    &asciiOutputInt,
-			    &f77AsciiOutput,
-			    &asciiOutputFile);
+			    &nmin,
+			    &nmax,
+			    &wavg,
+			    &idout,
+			    &kw,
+			    &ofile);
 
   if (!ok) {
     return 0;
   }
 
-  write_sparse_info_f(&numberGlobalEquations,
+  write_sparse_info_f(&neq,
 		      &stiffnessMatrixSize,
-		      &minimumNonzeroTermsPerRow,
-		      &maximumNonzeroTermsPerRow,
-		      &averageNonzeroTermsPerRow,
-		      &asciiOutputInt,
-		      &f77AsciiOutput,
-		      asciiOutputFile,strlen(asciiOutputFile));
+		      &nmin,
+		      &nmax,
+		      &wavg,
+		      &idout,
+		      &kw,
+		      ofile,strlen(ofile));
 		  
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "minimumNonzeroTermsPerRow:" << minimumNonzeroTermsPerRow
+    << "nmin:" << nmin
     << journal::endl;
 
   // return
@@ -4277,26 +4277,26 @@
 
 PyObject * pypylith3d_write_split(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToFault;
-  PyObject* pyPointerToNfault;
-  int numberSplitNodeEntries;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  int asciiOutputInt;
-  int plotOutputInt;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  PyObject* py_fault;
+  PyObject* py_nfault;
+  int numfn;
+  int kw;
+  int kp;
+  int idout;
+  int idsk;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "OOiiiiiss:write_split",
-			    &pyPointerToFault,
-			    &pyPointerToNfault,
-			    &numberSplitNodeEntries,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &py_fault,
+			    &py_nfault,
+			    &numfn,
+			    &kw,
+			    &kp,
+			    &idout,
+			    &idsk,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
@@ -4305,22 +4305,22 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToFault = (double*) PyCObject_AsVoidPtr(pyPointerToFault);
-  int* pointerToNfault = (int*) PyCObject_AsVoidPtr(pyPointerToNfault);
+  double* fault = (double*) PyCObject_AsVoidPtr(py_fault);
+  int* nfault = (int*) PyCObject_AsVoidPtr(py_nfault);
 
-  write_split_f(pointerToFault,
-		pointerToNfault,
-		&numberSplitNodeEntries,
-		&f77AsciiOutput,
-		&f77PlotOutput,
-		&asciiOutputInt,
-		&plotOutputInt,
-		asciiOutputFile,
-		plotOutputFile,
+  write_split_f(fault,
+		nfault,
+		&numfn,
+		&kw,
+		&kp,
+		&idout,
+		&idsk,
+		ofile,
+		pfile,
 		&errorcode,
 		errorstring,
-		strlen(asciiOutputFile),
-		strlen(plotOutputFile),
+		strlen(ofile),
+		strlen(pfile),
 		sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4330,7 +4330,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSplitNodeEntries:" << numberSplitNodeEntries
+    << "numfn:" << numfn
     << journal::endl;
 
   // return
@@ -4346,31 +4346,31 @@
 
 PyObject * pypylith3d_write_split_plot(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIdftn;
+  PyObject* py_idftn;
   int totalNumberSplitNodes;
-  int f77PlotOutput;
-  int plotOutputInt;
-  char* plotOutputFile;
+  int kp;
+  int idsk;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "Oiiis:write_split_plot",
-			    &pyPointerToIdftn,
+			    &py_idftn,
 			    &totalNumberSplitNodes,
-			    &f77PlotOutput,
-			    &plotOutputInt,
-			    &plotOutputFile);
+			    &kp,
+			    &idsk,
+			    &pfile);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToIdftn = (int*) PyCObject_AsVoidPtr(pyPointerToIdftn);
+  int* idftn = (int*) PyCObject_AsVoidPtr(py_idftn);
 
-  write_split_plot_f(pointerToIdftn,
+  write_split_plot_f(idftn,
 		     &totalNumberSplitNodes,
-		     &f77PlotOutput,
-		     &plotOutputInt,
-		     plotOutputFile,
-		     strlen(plotOutputFile));
+		     &kp,
+		     &idsk,
+		     pfile,
+		     strlen(pfile));
     
 
   journal::debug_t debug("pylith3d");
@@ -4392,24 +4392,24 @@
 
 PyObject * pypylith3d_write_stateout(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  int f77AsciiOutput;
-  int f77PlotOutput;
-  int asciiOutputInt;
-  int plotOutputInt;
-  char* asciiOutputFile;
-  char* plotOutputFile;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  int kw;
+  int kp;
+  int idout;
+  int idsk;
+  char* ofile;
+  char* pfile;
 
   int ok = PyArg_ParseTuple(args, "OOiiiiss:write_stateout",
-			    &pyPointerToIstatout,
-			    &pyPointerToNstatout,
-			    &f77AsciiOutput,
-			    &f77PlotOutput,
-			    &asciiOutputInt,
-			    &plotOutputInt,
-			    &asciiOutputFile,
-			    &plotOutputFile);
+			    &py_istatout,
+			    &py_nstatout,
+			    &kw,
+			    &kp,
+			    &idout,
+			    &idsk,
+			    &ofile,
+			    &pfile);
 
   if (!ok) {
     return 0;
@@ -4418,21 +4418,21 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int* pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  int* istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int* nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
-  write_stateout_f(pointerToIstatout,
-		   pointerToNstatout,
-		   &f77AsciiOutput,
-		   &f77PlotOutput,
-		   &asciiOutputInt,
-		   &plotOutputInt,
-		   asciiOutputFile,
-		   plotOutputFile,
+  write_stateout_f(istatout,
+		   nstatout,
+		   &kw,
+		   &kp,
+		   &idout,
+		   &idsk,
+		   ofile,
+		   pfile,
 		   &errorcode,
 		   errorstring,
-		   strlen(asciiOutputFile),
-		   strlen(plotOutputFile),
+		   strlen(ofile),
+		   strlen(pfile),
 		   sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4442,7 +4442,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "pointerToIstatout:" << pointerToIstatout
+    << "istatout:" << istatout
     << journal::endl;
 
   // return
@@ -4458,36 +4458,36 @@
 
 PyObject * pypylith3d_write_strscomp(PyObject *, PyObject *args)
 {
-  double stressTolerance;
-  double minimumStrainPerturbation;
-  double initialStrainPerturbation;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  double stol;
+  double dtol;
+  double epert;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "dddiis:write_strscomp",
-			    &stressTolerance,
-			    &minimumStrainPerturbation,
-			    &initialStrainPerturbation,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &stol,
+			    &dtol,
+			    &epert,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
   }
 
-  write_strscomp_f(&stressTolerance,
-		   &minimumStrainPerturbation,
-		   &initialStrainPerturbation,
-		   &f77AsciiOutput,
-		   &asciiOutputInt,
-		   asciiOutputFile,strlen(asciiOutputFile));
+  write_strscomp_f(&stol,
+		   &dtol,
+		   &epert,
+		   &kw,
+		   &idout,
+		   ofile,strlen(ofile));
 
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "initialStrainPerturbation:" << initialStrainPerturbation
+    << "epert:" << epert
     << journal::endl;
 
   // return
@@ -4503,31 +4503,31 @@
 
 PyObject * pypylith3d_write_subiter(PyObject *, PyObject *args)
 {
-  int usePreviousDisplacementFlag;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  int nprevdflag;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "iiis:write_subiter",
-			    &usePreviousDisplacementFlag,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &nprevdflag,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
   }
 
 
-  write_subiter_f(&usePreviousDisplacementFlag,
-		  &f77AsciiOutput,
-		  &asciiOutputInt,
-		  asciiOutputFile,strlen(asciiOutputFile));
+  write_subiter_f(&nprevdflag,
+		  &kw,
+		  &idout,
+		  ofile,strlen(ofile));
 		  
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "usePreviousDisplacementFlag:" << usePreviousDisplacementFlag
+    << "nprevdflag:" << nprevdflag
     << journal::endl;
 
   // return
@@ -4543,40 +4543,40 @@
 
 PyObject * pypylith3d_write_timdat(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToDelt;
-  PyObject* pyPointerToAlfa;
-  PyObject* pyPointerToUtol;
-  PyObject* pyPointerToFtol;
-  PyObject* pyPointerToEtol;
-  PyObject* pyPointerToTimes;
-  PyObject* pyPointerToMaxstp;
-  PyObject* pyPointerToMaxit;
-  PyObject* pyPointerToNtdinit;
-  PyObject* pyPointerToLgdef;
-  PyObject* pyPointerToItmax;
-  int numberTimeStepGroups;
-  int totalNumberTimeSteps;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_delt;
+  PyObject* py_alfa;
+  PyObject* py_utol;
+  PyObject* py_ftol;
+  PyObject* py_etol;
+  PyObject* py_times;
+  PyObject* py_maxstp;
+  PyObject* py_maxit;
+  PyObject* py_ntdinit;
+  PyObject* py_lgdef;
+  PyObject* py_itmax;
+  int nintg;
+  int lastep;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOOOOOOOOOOiiiis:write_timdat",
-			    &pyPointerToDelt,
-			    &pyPointerToAlfa,
-			    &pyPointerToUtol,
-			    &pyPointerToFtol,
-			    &pyPointerToEtol,
-			    &pyPointerToTimes,
-			    &pyPointerToMaxstp,
-			    &pyPointerToMaxit,
-			    &pyPointerToNtdinit,
-			    &pyPointerToLgdef,
-			    &pyPointerToItmax,
-			    &numberTimeStepGroups,
-			    &totalNumberTimeSteps,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_delt,
+			    &py_alfa,
+			    &py_utol,
+			    &py_ftol,
+			    &py_etol,
+			    &py_times,
+			    &py_maxstp,
+			    &py_maxit,
+			    &py_ntdinit,
+			    &py_lgdef,
+			    &py_itmax,
+			    &nintg,
+			    &lastep,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -4585,37 +4585,37 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToDelt = (double*) PyCObject_AsVoidPtr(pyPointerToDelt);
-  double* pointerToAlfa = (double*) PyCObject_AsVoidPtr(pyPointerToAlfa);
-  double* pointerToUtol = (double*) PyCObject_AsVoidPtr(pyPointerToUtol);
-  double* pointerToFtol = (double*) PyCObject_AsVoidPtr(pyPointerToFtol);
-  double* pointerToEtol = (double*) PyCObject_AsVoidPtr(pyPointerToEtol);
-  double* pointerToTimes = (double*) PyCObject_AsVoidPtr(pyPointerToTimes);
-  int* pointerToMaxstp = (int*) PyCObject_AsVoidPtr(pyPointerToMaxstp);
-  int* pointerToMaxit = (int*) PyCObject_AsVoidPtr(pyPointerToMaxit);
-  int* pointerToNtdinit = (int*) PyCObject_AsVoidPtr(pyPointerToNtdinit);
-  int* pointerToLgdef = (int*) PyCObject_AsVoidPtr(pyPointerToLgdef);
-  int* pointerToItmax = (int*) PyCObject_AsVoidPtr(pyPointerToItmax);
+  double* delt = (double*) PyCObject_AsVoidPtr(py_delt);
+  double* alfa = (double*) PyCObject_AsVoidPtr(py_alfa);
+  double* utol = (double*) PyCObject_AsVoidPtr(py_utol);
+  double* ftol = (double*) PyCObject_AsVoidPtr(py_ftol);
+  double* etol = (double*) PyCObject_AsVoidPtr(py_etol);
+  double* times = (double*) PyCObject_AsVoidPtr(py_times);
+  int* maxstp = (int*) PyCObject_AsVoidPtr(py_maxstp);
+  int* maxit = (int*) PyCObject_AsVoidPtr(py_maxit);
+  int* ntdinit = (int*) PyCObject_AsVoidPtr(py_ntdinit);
+  int* lgdef = (int*) PyCObject_AsVoidPtr(py_lgdef);
+  int* itmax = (int*) PyCObject_AsVoidPtr(py_itmax);
 
-  write_timdat_f(pointerToDelt,
-		 pointerToAlfa,
-		 pointerToUtol,
-		 pointerToFtol,
-		 pointerToEtol,
-		 pointerToTimes,
-		 pointerToMaxstp,
-		 pointerToMaxit,
-		 pointerToNtdinit,
-		 pointerToLgdef,
-		 pointerToItmax,
-		 &numberTimeStepGroups,
-		 &totalNumberTimeSteps,
-		 &f77AsciiOutput,
-		 &asciiOutputInt,
-		 asciiOutputFile,
+  write_timdat_f(delt,
+		 alfa,
+		 utol,
+		 ftol,
+		 etol,
+		 times,
+		 maxstp,
+		 maxit,
+		 ntdinit,
+		 lgdef,
+		 itmax,
+		 &nintg,
+		 &lastep,
+		 &kw,
+		 &idout,
+		 ofile,
 		 &errorcode,
 		 errorstring,
-		 strlen(asciiOutputFile),
+		 strlen(ofile),
 		 sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4625,7 +4625,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "totalNumberTimeSteps:" << totalNumberTimeSteps
+    << "lastep:" << lastep
     << journal::endl;
 
   // return
@@ -4641,22 +4641,22 @@
 
 PyObject * pypylith3d_write_tractions(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToTractionverts;
-  PyObject* pyPointerToTractionvals;
-  int numberTractionBc;
+  PyObject* py_tractionverts;
+  PyObject* py_tractionvals;
+  int numtractions;
   int numberSurfaceElementNodes;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOiiiis:write_tractions",
-			    &pyPointerToTractionverts,
-			    &pyPointerToTractionvals,
-			    &numberTractionBc,
+			    &py_tractionverts,
+			    &py_tractionvals,
+			    &numtractions,
 			    &numberSurfaceElementNodes,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -4665,19 +4665,19 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int* pointerToTractionverts = (int*) PyCObject_AsVoidPtr(pyPointerToTractionverts);
-  double* pointerToTractionvals = (double*) PyCObject_AsVoidPtr(pyPointerToTractionvals);
+  int* tractionverts = (int*) PyCObject_AsVoidPtr(py_tractionverts);
+  double* tractionvals = (double*) PyCObject_AsVoidPtr(py_tractionvals);
 
-  write_tractions_f(pointerToTractionverts,
-		    pointerToTractionvals,
-		    &numberTractionBc,
+  write_tractions_f(tractionverts,
+		    tractionvals,
+		    &numtractions,
 		    &numberSurfaceElementNodes,
-		    &f77AsciiOutput,
-		    &asciiOutputInt,
-		    asciiOutputFile,
+		    &kw,
+		    &idout,
+		    ofile,
 		    &errorcode,
 		    errorstring,
-		    strlen(asciiOutputFile),
+		    strlen(ofile),
 		    sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4687,7 +4687,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberTractionBc:" << numberTractionBc
+    << "numtractions:" << numtractions
     << journal::endl;
 
   // return
@@ -4703,70 +4703,70 @@
 
 PyObject * pypylith3d_write_ucd_mesh(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToX;
-  int numberNodes;
-  PyObject* pyPointerToIens;
-  PyObject* pyPointerToIvfamily;
-  int numberVolumeElements;
-  int numberVolumeElementFamilies;
-  PyObject* pyPointerToSh;
-  int numberVolumeElementNodes;
-  int numberVolumeElementGaussPoints;
-  int volumeElementType;
-  PyObject* pyPointerToIstatout;
-  PyObject* pyPointerToNstatout;
-  int f77UcdOutput;
-  int ucdOutputInt;
-  char* ucdOutputRoot;
+  PyObject* py_x;
+  int numnp;
+  PyObject* py_iens;
+  PyObject* py_ivfamily;
+  int numelv;
+  int nvfamilies;
+  PyObject* py_sh;
+  int nen;
+  int ngauss;
+  int ietypev;
+  PyObject* py_istatout;
+  PyObject* py_nstatout;
+  int kucd;
+  int iucd;
+  char* ucdroot;
 
   int ok = PyArg_ParseTuple(args, "OiOOiiOiiiOOiis:write_ucd_mesh",
-			    &pyPointerToX,
-			    &numberNodes,
-			    &pyPointerToIens,
-			    &pyPointerToIvfamily,
-			    &numberVolumeElements,
-			    &numberVolumeElementFamilies,
-			    &pyPointerToSh,
-			    &numberVolumeElementNodes,
-			    &numberVolumeElementGaussPoints,
-			    &volumeElementType,
-			    &pyPointerToIstatout,
-			    &pyPointerToNstatout,
-			    &f77UcdOutput,
-			    &ucdOutputInt,
-			    &ucdOutputRoot);
+			    &py_x,
+			    &numnp,
+			    &py_iens,
+			    &py_ivfamily,
+			    &numelv,
+			    &nvfamilies,
+			    &py_sh,
+			    &nen,
+			    &ngauss,
+			    &ietypev,
+			    &py_istatout,
+			    &py_nstatout,
+			    &kucd,
+			    &iucd,
+			    &ucdroot);
 
   if (!ok) {
     return 0;
   }
 
-  double* pointerToX = (double*) PyCObject_AsVoidPtr(pyPointerToX);
-  int* pointerToIens = (int*) PyCObject_AsVoidPtr(pyPointerToIens);
-  int* pointerToIvfamily = (int*) PyCObject_AsVoidPtr(pyPointerToIvfamily);
-  double* pointerToSh = (double*) PyCObject_AsVoidPtr(pyPointerToSh);
-  int* pointerToIstatout = (int*) PyCObject_AsVoidPtr(pyPointerToIstatout);
-  int* pointerToNstatout = (int*) PyCObject_AsVoidPtr(pyPointerToNstatout);
+  double* x = (double*) PyCObject_AsVoidPtr(py_x);
+  int* iens = (int*) PyCObject_AsVoidPtr(py_iens);
+  int* ivfamily = (int*) PyCObject_AsVoidPtr(py_ivfamily);
+  double* sh = (double*) PyCObject_AsVoidPtr(py_sh);
+  int* istatout = (int*) PyCObject_AsVoidPtr(py_istatout);
+  int* nstatout = (int*) PyCObject_AsVoidPtr(py_nstatout);
 
-  write_ucd_mesh_f(pointerToX,
-		   &numberNodes,
-		   pointerToIens,
-		   pointerToIvfamily,
-		   &numberVolumeElements,
-		   &numberVolumeElementFamilies,
-		   pointerToSh,
-		   &numberVolumeElementNodes,
-		   &numberVolumeElementGaussPoints,
-		   &volumeElementType,
-		   pointerToIstatout,
-		   pointerToNstatout,
-		   &f77UcdOutput,
-		   &ucdOutputInt,
-		   ucdOutputRoot,strlen(ucdOutputRoot));
+  write_ucd_mesh_f(x,
+		   &numnp,
+		   iens,
+		   ivfamily,
+		   &numelv,
+		   &nvfamilies,
+		   sh,
+		   &nen,
+		   &ngauss,
+		   &ietypev,
+		   istatout,
+		   nstatout,
+		   &kucd,
+		   &iucd,
+		   ucdroot,strlen(ucdroot));
 		  
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElements:" << numberVolumeElements
+    << "numelv:" << numelv
     << journal::endl;
 
   // return
@@ -4782,22 +4782,22 @@
 
 PyObject * pypylith3d_write_wink(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToWinkdef;
-  PyObject* pyPointerToIwinkdef;
-  PyObject* pyPointerToIwinkid;
-  int numberWinklerEntries;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_winkdef;
+  PyObject* py_iwinkdef;
+  PyObject* py_iwinkid;
+  int nwinke;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOOiiis:write_wink",
-			    &pyPointerToWinkdef,
-			    &pyPointerToIwinkdef,
-			    &pyPointerToIwinkid,
-			    &numberWinklerEntries,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_winkdef,
+			    &py_iwinkdef,
+			    &py_iwinkid,
+			    &nwinke,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -4806,20 +4806,20 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToWinkdef = (double*) PyCObject_AsVoidPtr(pyPointerToWinkdef);
-  int* pointerToIwinkdef = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkdef);
-  int* pointerToIwinkid = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkid);
+  double* winkdef = (double*) PyCObject_AsVoidPtr(py_winkdef);
+  int* iwinkdef = (int*) PyCObject_AsVoidPtr(py_iwinkdef);
+  int* iwinkid = (int*) PyCObject_AsVoidPtr(py_iwinkid);
 
-  write_wink_f(pointerToWinkdef,
-	       pointerToIwinkdef,
-	       pointerToIwinkid,
-	       &numberWinklerEntries,
-	       &f77AsciiOutput,
-	       &asciiOutputInt,
-	       asciiOutputFile,
+  write_wink_f(winkdef,
+	       iwinkdef,
+	       iwinkid,
+	       &nwinke,
+	       &kw,
+	       &idout,
+	       ofile,
 	       &errorcode,
 	       errorstring,
-	       strlen(asciiOutputFile),
+	       strlen(ofile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4829,7 +4829,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberWinklerEntries:" << numberWinklerEntries
+    << "nwinke:" << nwinke
     << journal::endl;
 
   // return
@@ -4845,22 +4845,22 @@
 
 PyObject * pypylith3d_write_winkx(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToWinkxdef;
-  PyObject* pyPointerToIwinkxdef;
-  PyObject* pyPointerToIwinkxid;
-  int numberSlipperyWinklerEntries;
-  int f77AsciiOutput;
-  int asciiOutputInt;
-  char* asciiOutputFile;
+  PyObject* py_winkxdef;
+  PyObject* py_iwinkxdef;
+  PyObject* py_iwinkxid;
+  int nwinkxe;
+  int kw;
+  int idout;
+  char* ofile;
 
   int ok = PyArg_ParseTuple(args, "OOOiiis:write_winkx",
-			    &pyPointerToWinkxdef,
-			    &pyPointerToIwinkxdef,
-			    &pyPointerToIwinkxid,
-			    &numberSlipperyWinklerEntries,
-			    &f77AsciiOutput,
-			    &asciiOutputInt,
-			    &asciiOutputFile);
+			    &py_winkxdef,
+			    &py_iwinkxdef,
+			    &py_iwinkxid,
+			    &nwinkxe,
+			    &kw,
+			    &idout,
+			    &ofile);
 
   if (!ok) {
     return 0;
@@ -4869,20 +4869,20 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  double* pointerToWinkxdef = (double*) PyCObject_AsVoidPtr(pyPointerToWinkxdef);
-  int* pointerToIwinkxdef = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkxdef);
-  int* pointerToIwinkxid = (int*) PyCObject_AsVoidPtr(pyPointerToIwinkxid);
+  double* winkxdef = (double*) PyCObject_AsVoidPtr(py_winkxdef);
+  int* iwinkxdef = (int*) PyCObject_AsVoidPtr(py_iwinkxdef);
+  int* iwinkxid = (int*) PyCObject_AsVoidPtr(py_iwinkxid);
 
-  write_winkx_f(pointerToWinkxdef,
-		pointerToIwinkxdef,
-		pointerToIwinkxid,
-		&numberSlipperyWinklerEntries,
-		&f77AsciiOutput,
-		&asciiOutputInt,
-		asciiOutputFile,
+  write_winkx_f(winkxdef,
+		iwinkxdef,
+		iwinkxid,
+		&nwinkxe,
+		&kw,
+		&idout,
+		ofile,
 		&errorcode,
 		errorstring,
-		strlen(asciiOutputFile),
+		strlen(ofile),
 		sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -4892,7 +4892,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSlipperyWinklerEntries:" << numberSlipperyWinklerEntries
+    << "nwinkxe:" << nwinkxe
     << journal::endl;
 
   // return
@@ -4908,17 +4908,17 @@
 
 PyObject * pypylith3d_scan_bc(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* displacementUnits;
-  char* velocityUnits;
-  char* forceUnits;
+  int kr;
+  char* displacement_units;
+  char* velocity_units;
+  char* force_units;
   char* bcInputFile;
 
   int ok = PyArg_ParseTuple(args, (char *) "issss:scan_bc",
-			    &f77FileInput,
-			    &displacementUnits,
-			    &velocityUnits,
-			    &forceUnits,
+			    &kr,
+			    &displacement_units,
+			    &velocity_units,
+			    &force_units,
 			    &bcInputFile);
 
   if (!ok) {
@@ -4928,19 +4928,19 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberBcEntries = 0;
+  int numbc = 0;
 
-  scan_bc_f(&numberBcEntries,
-	    &f77FileInput,
-	    displacementUnits,
-	    velocityUnits,
-	    forceUnits,
+  scan_bc_f(&numbc,
+	    &kr,
+	    displacement_units,
+	    velocity_units,
+	    force_units,
 	    bcInputFile,
 	    &errorcode,
 	    errorstring,
-	    strlen(displacementUnits),
-	    strlen(velocityUnits),
-	    strlen(forceUnits),
+	    strlen(displacement_units),
+	    strlen(velocity_units),
+	    strlen(force_units),
 	    strlen(bcInputFile),
 	    sizeof(errorstring));
 
@@ -4951,11 +4951,11 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberBcEntries:" << numberBcEntries
+    << "numbc:" << numbc
     << journal::endl;
 
   // return
-  return Py_BuildValue((char *) "i", numberBcEntries);
+  return Py_BuildValue((char *) "i", numbc);
 }
 
 
@@ -4966,50 +4966,50 @@
 
 PyObject * pypylith3d_scan_connect(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToListArrayNumberElementNodesBase;
-  PyObject* pyPointerToMaterialModelInfo;
-  PyObject* pyPointerToListArrayMaterialModel;
-  PyObject* pyPointerToVolumeElementFamilyList;
-  int maxNumberVolumeElementFamilies;
-  int numberMaterials;
-  int f77FileInput;
+  PyObject* py_numberElementNodesBase;
+  PyObject* py_infmatmod;
+  PyObject* py_infmat;
+  PyObject* py_volumeElementFamilyList;
+  int maxvfamilies;
+  int numat;
+  int kr;
   char* connectivityInputFile;
 
   int ok = PyArg_ParseTuple(args, (char *) "OOOOiiis:scan_connect",
-			    &pyPointerToListArrayNumberElementNodesBase,
-			    &pyPointerToMaterialModelInfo,
-                            &pyPointerToListArrayMaterialModel,
-			    &pyPointerToVolumeElementFamilyList,
-			    &maxNumberVolumeElementFamilies,
-			    &numberMaterials,
-			    &f77FileInput,
+			    &py_numberElementNodesBase,
+			    &py_infmatmod,
+                            &py_infmat,
+			    &py_volumeElementFamilyList,
+			    &maxvfamilies,
+			    &numat,
+			    &kr,
 			    &connectivityInputFile);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToListArrayNumberElementNodesBase = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayNumberElementNodesBase);
-  int* pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
-  int* pointerToListArrayMaterialModel = (int*) PyCObject_AsVoidPtr(pyPointerToListArrayMaterialModel);
-  int* pointerToVolumeElementFamilyList = (int*) PyCObject_AsVoidPtr(pyPointerToVolumeElementFamilyList);
-  int numberVolumeElements = 0;
-  int numberVolumeElementFamilies = 0;
-  int volumeElementType = 0;
+  int* neni = (int*) PyCObject_AsVoidPtr(py_numberElementNodesBase);
+  int* infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
+  int* infmat = (int*) PyCObject_AsVoidPtr(py_infmat);
+  int* ivflist = (int*) PyCObject_AsVoidPtr(py_volumeElementFamilyList);
+  int numelv = 0;
+  int nvfamilies = 0;
+  int ietypev = 0;
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
 
-  scan_connect_f(pointerToListArrayNumberElementNodesBase,
-		 pointerToMaterialModelInfo,
-		 pointerToListArrayMaterialModel,
-		 pointerToVolumeElementFamilyList,
-		 &maxNumberVolumeElementFamilies,
-		 &numberMaterials,
-		 &numberVolumeElements,
-		 &numberVolumeElementFamilies,
-		 &volumeElementType,
-		 &f77FileInput,
+  scan_connect_f(neni,
+		 infmatmod,
+		 infmat,
+		 ivflist,
+		 &maxvfamilies,
+		 &numat,
+		 &numelv,
+		 &nvfamilies,
+		 &ietypev,
+		 &kr,
 		 connectivityInputFile,
 		 &errorcode,
 		 errorstring,
@@ -5023,14 +5023,14 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberVolumeElementFamilies:" << numberVolumeElementFamilies
+    << "nvfamilies:" << nvfamilies
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "iii", numberVolumeElements,
-		       numberVolumeElementFamilies,
-		       volumeElementType);
+  return Py_BuildValue((char *) "iii", numelv,
+		       nvfamilies,
+		       ietypev);
 }
 
 
@@ -5041,13 +5041,13 @@
 
 PyObject * pypylith3d_scan_coords(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char *coordinateUnits;
+  int kr;
+  char *coord_units;
   char *coordinateInputFile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iss:scan_coords",
-			    &f77FileInput,
-			    &coordinateUnits,
+			    &kr,
+			    &coord_units,
 			    &coordinateInputFile);
 
   if (!ok) {
@@ -5057,15 +5057,15 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberNodes = 0;
+  int numnp = 0;
 
-  scan_coords_f(&numberNodes,
-		&f77FileInput,
-		coordinateUnits,
+  scan_coords_f(&numnp,
+		&kr,
+		coord_units,
 		coordinateInputFile,
 		&errorcode,
 		errorstring,
-		strlen(coordinateUnits),
+		strlen(coord_units),
 		strlen(coordinateInputFile),
 		sizeof(errorstring));
     
@@ -5076,12 +5076,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberNodes:" << numberNodes
+    << "numnp:" << numnp
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberNodes);
+  return Py_BuildValue((char *) "i", numnp);
 }
 
 
@@ -5092,14 +5092,14 @@
 
 PyObject * pypylith3d_scan_diff(PyObject *, PyObject *args)
 {
-  int numberSlipperyNodeEntries;
-  int f77FileInput;
-  char* differentialForceInputFile;
+  int numslp;
+  int kr;
+  char* difile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iis:scan_diff",
-			    &numberSlipperyNodeEntries,
-			    &f77FileInput,
-			    &differentialForceInputFile);
+			    &numslp,
+			    &kr,
+			    &difile);
 
   if (!ok) {
     return 0;
@@ -5108,15 +5108,15 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberDifferentialForceEntries = 0;
+  int numdif = 0;
 
-  scan_diff_f(&numberSlipperyNodeEntries,
-	      &numberDifferentialForceEntries,
-	      &f77FileInput,
-	      differentialForceInputFile,
+  scan_diff_f(&numslp,
+	      &numdif,
+	      &kr,
+	      difile,
 	      &errorcode,
 	      errorstring,
-	      strlen(differentialForceInputFile),
+	      strlen(difile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5126,12 +5126,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberDifferentialForceEntries:" << numberDifferentialForceEntries
+    << "numdif:" << numdif
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberDifferentialForceEntries);
+  return Py_BuildValue((char *) "i", numdif);
 }
 
 
@@ -5142,16 +5142,16 @@
 
 PyObject * pypylith3d_scan_fuldat(PyObject *, PyObject *args)
 {
-  int analysisTypeInt;
-  int totalNumberTimeSteps;
-  int f77FileInput;
-  char* fullOutputInputFile;
+  int icode;
+  int lastep;
+  int kr;
+  char* fofile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iiis:scan_fuldat",
-			    &analysisTypeInt,
-			    &totalNumberTimeSteps,
-			    &f77FileInput,
-			    &fullOutputInputFile);
+			    &icode,
+			    &lastep,
+			    &kr,
+			    &fofile);
 
   if (!ok) {
     return 0;
@@ -5160,16 +5160,16 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberFullOutputs = 0;
+  int icontr = 0;
 
-  scan_fuldat_f(&analysisTypeInt,
-		&totalNumberTimeSteps,
-		&numberFullOutputs,
-		&f77FileInput,
-		fullOutputInputFile,
+  scan_fuldat_f(&icode,
+		&lastep,
+		&icontr,
+		&kr,
+		fofile,
 		&errorcode,
 		errorstring,
-		strlen(fullOutputInputFile),
+		strlen(fofile),
 		sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5179,12 +5179,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberFullOutputs:" << numberFullOutputs
+    << "icontr:" << icontr
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberFullOutputs);
+  return Py_BuildValue((char *) "i", icontr);
 }
 
 
@@ -5195,12 +5195,12 @@
 
 PyObject * pypylith3d_scan_hist(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* loadHistoryInputFile;
+  int kr;
+  char* hfile;
 
   int ok = PyArg_ParseTuple(args, (char *) "is:scan_hist",
-			    &f77FileInput,
-			    &loadHistoryInputFile);
+			    &kr,
+			    &hfile);
 
   if (!ok) {
     return 0;
@@ -5209,14 +5209,14 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberLoadHistories = 0;
+  int nhist = 0;
 
-  scan_hist_f(&numberLoadHistories,
-	      &f77FileInput,
-	      loadHistoryInputFile,
+  scan_hist_f(&nhist,
+	      &kr,
+	      hfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(loadHistoryInputFile),
+	      strlen(hfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5226,12 +5226,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberLoadHistories:" << numberLoadHistories
+    << "nhist:" << nhist
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberLoadHistories);
+  return Py_BuildValue((char *) "i", nhist);
 }
 
 
@@ -5245,16 +5245,16 @@
   //   int numberStressComponents;
   //   int numberPrestressGaussPoints;
   //   int numberElements;
-  //   int prestressAutoComputeInt;
-  //   int f77FileInput;
+  //   int ipstrs;
+  //   int kr;
   //   char* prestressInputFile;
 
   //   int ok = PyArg_ParseTuple(args, "iiiiis:scan_prestr",
   // 			    &numberStressComponents,
   // 			    &numberPrestressGaussPoints,
   // 			    &numberElements,
-  // 			    &prestressAutoComputeInt,
-  // 			    &f77FileInput,
+  // 			    &ipstrs,
+  // 			    &kr,
   // 			    &prestressInputFile);
 
   //   if (!ok) {
@@ -5270,8 +5270,8 @@
   // 		&numberPrestressGaussPoints,
   // 		&numberPrestressEntries,
   // 		&numberElements,
-  // 		&prestressAutoComputeInt,
-  // 		&f77FileInput,
+  // 		&ipstrs,
+  // 		&kr,
   // 		&errorcode,
   // 		prestressInputFile,strlen(prestressInputFile));
     
@@ -5298,14 +5298,14 @@
 
 PyObject * pypylith3d_scan_skew(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* rotationUnits;
-  char* rotationInputFile;
+  int kr;
+  char* rotation_units;
+  char* skfile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iss:scan_skew",
-			    &f77FileInput,
-			    &rotationUnits,
-			    &rotationInputFile);
+			    &kr,
+			    &rotation_units,
+			    &skfile);
 
   if (!ok) {
     return 0;
@@ -5314,16 +5314,16 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberRotationEntries = 0;
+  int numrot = 0;
 
-  scan_skew_f(&numberRotationEntries,
-	      &f77FileInput,
-	      rotationUnits,
-	      rotationInputFile,
+  scan_skew_f(&numrot,
+	      &kr,
+	      rotation_units,
+	      skfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(rotationUnits),
-	      strlen(rotationInputFile),
+	      strlen(rotation_units),
+	      strlen(skfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5333,12 +5333,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberRotationEntries:" << numberRotationEntries
+    << "numrot:" << numrot
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberRotationEntries);
+  return Py_BuildValue((char *) "i", numrot);
 }
 
 
@@ -5349,12 +5349,12 @@
 
 PyObject * pypylith3d_scan_slip(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* slipperyNodeInputFile;
+  int kr;
+  char* slfile;
 
   int ok = PyArg_ParseTuple(args, (char *) "is:scan_slip",
-			    &f77FileInput,
-			    &slipperyNodeInputFile);
+			    &kr,
+			    &slfile);
 
   if (!ok) {
     return 0;
@@ -5363,14 +5363,14 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberSlipperyNodeEntries = 0;
+  int numslp = 0;
 
-  scan_slip_f(&numberSlipperyNodeEntries,
-	      &f77FileInput,
-	      slipperyNodeInputFile,
+  scan_slip_f(&numslp,
+	      &kr,
+	      slfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(slipperyNodeInputFile),
+	      strlen(slfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5380,12 +5380,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSlipperyNodeEntries:" << numberSlipperyNodeEntries
+    << "numslp:" << numslp
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberSlipperyNodeEntries);
+  return Py_BuildValue((char *) "i", numslp);
 }
 
 
@@ -5396,12 +5396,12 @@
 
 PyObject * pypylith3d_scan_split(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* splitNodeInputFile;
+  int kr;
+  char* spfile;
 
   int ok = PyArg_ParseTuple(args, (char *) "is:scan_split",
-			    &f77FileInput,
-			    &splitNodeInputFile);
+			    &kr,
+			    &spfile);
 
   if (!ok) {
     return 0;
@@ -5410,14 +5410,14 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberSplitNodeEntries = 0;
+  int numfn = 0;
 
-  scan_split_f(&numberSplitNodeEntries,
-	       &f77FileInput,
-	       splitNodeInputFile,
+  scan_split_f(&numfn,
+	       &kr,
+	       spfile,
 	       &errorcode,
 	       errorstring,
-	       strlen(splitNodeInputFile),
+	       strlen(spfile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5427,12 +5427,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSplitNodeEntries:" << numberSplitNodeEntries
+    << "numfn:" << numfn
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberSplitNodeEntries);
+  return Py_BuildValue((char *) "i", numfn);
 }
 
 
@@ -5443,13 +5443,13 @@
 
 PyObject * pypylith3d_scan_timdat(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* timeUnits;
+  int kr;
+  char* time_units;
   char* timeStepInputFile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iss:scan_timdat",
-			    &f77FileInput,
-			    &timeUnits,
+			    &kr,
+			    &time_units,
 			    &timeStepInputFile);
 
   if (!ok) {
@@ -5459,17 +5459,17 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberTimeStepGroups = 0;
-  int totalNumberTimeSteps = 0;
+  int nintg = 0;
+  int lastep = 0;
 
-  scan_timdat_f(&totalNumberTimeSteps,
-		&numberTimeStepGroups,
-		&f77FileInput,
-		timeUnits,
+  scan_timdat_f(&lastep,
+		&nintg,
+		&kr,
+		time_units,
 		timeStepInputFile,
 		&errorcode,
 		errorstring,
-		strlen(timeUnits),
+		strlen(time_units),
 		strlen(timeStepInputFile),
 		sizeof(errorstring));
     
@@ -5480,13 +5480,13 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "totalNumberTimeSteps:" << totalNumberTimeSteps
+    << "lastep:" << lastep
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "ii", numberTimeStepGroups,
-		       totalNumberTimeSteps);
+  return Py_BuildValue((char *) "ii", nintg,
+		       lastep);
 }
 
 
@@ -5498,15 +5498,15 @@
 
 PyObject * pypylith3d_scan_tractions(PyObject *, PyObject *args)
 {
-  int maxElementNodes2d;
-  int f77FileInput;
-  char *tractionUnits;
+  int nsnodesmax;
+  int kr;
+  char *traction_units;
   char *tractionInputFile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iiss:scan_tractions",
-                            &maxElementNodes2d,
-			    &f77FileInput,
-			    &tractionUnits,
+                            &nsnodesmax,
+			    &kr,
+			    &traction_units,
 			    &tractionInputFile);
 
   if (!ok) {
@@ -5516,16 +5516,16 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberTractionBc = 0;
+  int numtractions = 0;
 
-  scan_tractions_f(&numberTractionBc,
-		   &maxElementNodes2d,
-		   &f77FileInput,
-		   tractionUnits,
+  scan_tractions_f(&numtractions,
+		   &nsnodesmax,
+		   &kr,
+		   traction_units,
 		   tractionInputFile,
 		   &errorcode,
 		   errorstring,
-		   strlen(tractionUnits),
+		   strlen(traction_units),
 		   strlen(tractionInputFile),
 		   sizeof(errorstring));
     
@@ -5536,12 +5536,12 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberTractionBc:" << numberTractionBc
+    << "numtractions:" << numtractions
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "i", numberTractionBc);
+  return Py_BuildValue((char *) "i", numtractions);
 }
 
 // Read winkler BC
@@ -5551,12 +5551,12 @@
 
 PyObject * pypylith3d_scan_wink(PyObject *, PyObject *args)
 {
-  int f77FileInput;
-  char* winklerInputFile;
+  int kr;
+  char* wfile;
 
   int ok = PyArg_ParseTuple(args, (char *) "is:scan_wink",
-			    &f77FileInput,
-			    &winklerInputFile);
+			    &kr,
+			    &wfile);
 
   if (!ok) {
     return 0;
@@ -5565,16 +5565,16 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberWinklerEntries = 0;
-  int numberWinklerForces = 0;
+  int nwinke = 0;
+  int nwink = 0;
 
-  scan_wink_f(&numberWinklerEntries,
-	      &numberWinklerForces,
-	      &f77FileInput,
-	      winklerInputFile,
+  scan_wink_f(&nwinke,
+	      &nwink,
+	      &kr,
+	      wfile,
 	      &errorcode,
 	      errorstring,
-	      strlen(winklerInputFile),
+	      strlen(wfile),
 	      sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5584,13 +5584,13 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberWinklerForces:" << numberWinklerForces
+    << "nwink:" << nwink
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "ii", numberWinklerEntries,
-	               numberWinklerForces);
+  return Py_BuildValue((char *) "ii", nwinke,
+	               nwink);
 }
 
 
@@ -5601,14 +5601,14 @@
 
 PyObject * pypylith3d_scan_winkx(PyObject *, PyObject *args)
 {
-  int numberSlipperyNodeEntries;
-  int f77FileInput;
-  char* slipperyWinklerInputFile;
+  int numslp;
+  int kr;
+  char* wxfile;
 
   int ok = PyArg_ParseTuple(args, (char *) "iis:scan_winkx",
-			    &numberSlipperyNodeEntries,
-			    &f77FileInput,
-			    &slipperyWinklerInputFile);
+			    &numslp,
+			    &kr,
+			    &wxfile);
 
   if (!ok) {
     return 0;
@@ -5617,17 +5617,17 @@
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
-  int numberSlipperyWinklerEntries = 0;
-  int numberSlipperyWinklerForces = 0;
+  int nwinkxe = 0;
+  int nwinkx = 0;
 
-  scan_winkx_f(&numberSlipperyNodeEntries,
-	       &numberSlipperyWinklerEntries,
-	       &numberSlipperyWinklerForces,
-	       &f77FileInput,
-	       slipperyWinklerInputFile,
+  scan_winkx_f(&numslp,
+	       &nwinkxe,
+	       &nwinkx,
+	       &kr,
+	       wxfile,
 	       &errorcode,
 	       errorstring,
-	       strlen(slipperyWinklerInputFile),
+	       strlen(wxfile),
 	       sizeof(errorstring));
     
   if(0 != exceptionhandler(errorcode, errorstring)) {
@@ -5637,13 +5637,13 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "numberSlipperyWinklerForces:" << numberSlipperyWinklerForces
+    << "nwinkx:" << nwinkx
     << journal::endl;
 
   // return
   Py_INCREF(Py_None);
-  return Py_BuildValue((char *) "ii", numberSlipperyWinklerEntries,
-		       numberSlipperyWinklerForces);
+  return Py_BuildValue((char *) "ii", nwinkxe,
+		       nwinkx);
 }
     
 
@@ -5654,23 +5654,23 @@
 
 PyObject * pypylith3d_matmod_def(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToMaterialModelInfo;
+  PyObject* py_infmatmod;
 
   int ok = PyArg_ParseTuple(args, "O:matmod_def",
-			    &pyPointerToMaterialModelInfo);
+			    &py_infmatmod);
 
   if (!ok) {
     return 0;
   }
 
-  int* pointerToMaterialModelInfo = (int*) PyCObject_AsVoidPtr(pyPointerToMaterialModelInfo);
+  int* infmatmod = (int*) PyCObject_AsVoidPtr(py_infmatmod);
 
-  matmod_def_f(pointerToMaterialModelInfo);
+  matmod_def_f(infmatmod);
     
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "pointerToMaterialModelInfo:" << pointerToMaterialModelInfo
+    << "infmatmod:" << infmatmod
     << journal::endl;
 
   // return
@@ -5685,41 +5685,41 @@
 
 PyObject * pypylith3d_preshape(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToSh;
-  PyObject* pyPointerToShj;
-  PyObject* pyPointerToGauss;
-  int quadratureOrderInt;
+  PyObject* py_sh;
+  PyObject* py_shj;
+  PyObject* py_gauss;
+  int intord;
   int elementType;
-  int numberVolumeElementNodes;
-  int numberVolumeElementGaussPoints;
+  int nen;
+  int ngauss;
 
   int ok = PyArg_ParseTuple(args, "OOOiiii:preshape",
-			    &pyPointerToSh,
-			    &pyPointerToShj,
-			    &pyPointerToGauss,
-			    &quadratureOrderInt,
+			    &py_sh,
+			    &py_shj,
+			    &py_gauss,
+			    &intord,
 			    &elementType,
-			    &numberVolumeElementNodes,
-			    &numberVolumeElementGaussPoints);
+			    &nen,
+			    &ngauss);
 
   if (!ok) {
     return 0;
   }
 
-  double* pointerToSh = (double*) PyCObject_AsVoidPtr(pyPointerToSh);
-  double* pointerToShj = (double*) PyCObject_AsVoidPtr(pyPointerToShj);
-  double* pointerToGauss = (double*) PyCObject_AsVoidPtr(pyPointerToGauss);
+  double* sh = (double*) PyCObject_AsVoidPtr(py_sh);
+  double* shj = (double*) PyCObject_AsVoidPtr(py_shj);
+  double* gauss = (double*) PyCObject_AsVoidPtr(py_gauss);
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
 
-  preshape_f(pointerToSh,
-	     pointerToShj,
-	     pointerToGauss,
-	     &quadratureOrderInt,
+  preshape_f(sh,
+	     shj,
+	     gauss,
+	     &intord,
 	     &elementType,
-	     &numberVolumeElementNodes,
-	     &numberVolumeElementGaussPoints,
+	     &nen,
+	     &ngauss,
 	     &errorcode,
 	     errorstring,
 	     sizeof(errorstring));
@@ -5731,7 +5731,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "quadratureOrderInt:" << quadratureOrderInt
+    << "intord:" << intord
     << journal::endl;
 
   // return
@@ -5746,17 +5746,17 @@
 
 PyObject * pypylith3d_preshape2d(PyObject *, PyObject *args)
 {
-  PyObject* pyPointerToSh2d;
-  PyObject* pyPointerToGauss2d;
-  int quadratureOrderInt;
+  PyObject* py_sh2d;
+  PyObject* py_gauss2d;
+  int intord;
   int elementType;
   int numberSurfaceElementNodes;
   int numberSurfaceElementGaussPoints;
 
   int ok = PyArg_ParseTuple(args, "OOiiii:preshape2d",
-			    &pyPointerToSh2d,
-			    &pyPointerToGauss2d,
-			    &quadratureOrderInt,
+			    &py_sh2d,
+			    &py_gauss2d,
+			    &intord,
 			    &elementType,
 			    &numberSurfaceElementNodes,
 			    &numberSurfaceElementGaussPoints);
@@ -5765,15 +5765,15 @@
     return 0;
   }
 
-  double* pointerToSh2d = (double*) PyCObject_AsVoidPtr(pyPointerToSh2d);
-  double* pointerToGauss2d = (double*) PyCObject_AsVoidPtr(pyPointerToGauss2d);
+  double* sh2d = (double*) PyCObject_AsVoidPtr(py_sh2d);
+  double* gauss2d = (double*) PyCObject_AsVoidPtr(py_gauss2d);
   int errorcode = 0;
   const int maxsize = 4096;
   char errorstring[maxsize];
 
-  preshape2d_f(pointerToSh2d,
-	       pointerToGauss2d,
-	       &quadratureOrderInt,
+  preshape2d_f(sh2d,
+	       gauss2d,
+	       &intord,
 	       &elementType,
 	       &numberSurfaceElementNodes,
 	       &numberSurfaceElementGaussPoints,
@@ -5788,7 +5788,7 @@
   journal::debug_t debug("pylith3d");
   debug
     << journal::at(__HERE__)
-    << "quadratureOrderInt:" << quadratureOrderInt
+    << "intord:" << intord
     << journal::endl;
 
   // return

Modified: short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/ElementTypeDef.py
===================================================================
--- short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/ElementTypeDef.py	2007-04-04 20:28:40 UTC (rev 6508)
+++ short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/ElementTypeDef.py	2007-04-05 21:54:55 UTC (rev 6509)
@@ -42,85 +42,79 @@
 
         self.trace.log("Hello from ElementTypeDef.getdef!")
 
-        self.numberVolumeElementNodes = self.elementNodes[elementType - 1]
-        self.numberSurfaceElementNodes = self.elementNodes2d[elementType - 1]
+        self.nen = self.elementNodes[elementType - 1]
+        self.nsnodes = self.elementNodes2d[elementType - 1]
 
         if quadratureOrderInt == 1:
-            self.numberVolumeElementGaussPoints = \
-                                          self.elementFullGauss[elementType -1]
-            self.numberSurfaceElementGaussPoints = \
-                                          self.elementFullGauss2d[elementType -1]
+            self.ngauss = self.elementFullGauss[elementType -1]
+            self.numberSurfaceElementGaussPoints = self.elementFullGauss2d[elementType -1]
         elif quadratureOrderInt == 2:
-            self.numberVolumeElementGaussPoints =  \
-                                          self.elementReducedGauss[elementType -1]
-            self.numberSurfaceElementGaussPoints =  \
-                                          self.elementReducedGauss2d[elementType -1]
+            self.ngauss = self.elementReducedGauss[elementType -1]
+            self.numberSurfaceElementGaussPoints = self.elementReducedGauss2d[elementType -1]
         elif quadratureOrderInt == 3:
-            self.numberVolumeElementGaussPoints = \
-                                           self.elementFullGauss[elementType -1]
-            self.numberSurfaceElementGaussPoints = \
-                                           self.elementFullGauss2d[elementType -1]
+            self.ngauss = self.elementFullGauss[elementType -1]
+            self.numberSurfaceElementGaussPoints = self.elementFullGauss2d[elementType -1]
 
-        self.numberVolumeElementEquations = \
-                                    constants.numberDegreesFreedom * \
-                                    self.numberVolumeElementNodes
+        self.nee = constants.numberDegreesFreedom * self.nen
 
-        self.numberSurfaceElementEquations = \
-                                    constants.numberDegreesFreedom * \
-                                    self.numberSurfaceElementNodes
+        self.numberSurfaceElementEquations = (
+            constants.numberDegreesFreedom *
+            self.nsnodes
+            )
 
-        self.numberSurfaceElementCoordinates = \
-                                      constants.numberSpaceDimensions * \
-                                      self.numberSurfaceElementNodes
+        self.numberSurfaceElementCoordinates = (
+            constants.numberSpaceDimensions *
+            self.nsnodes
+            )
 
-        self.elementTypeInfo = [self.numberVolumeElementNodes,
-                                self.numberVolumeElementGaussPoints,
-                                self.numberVolumeElementEquations,
+        self.elementTypeInfo = [self.nen,
+                                self.ngauss,
+                                self.nee,
                                 self.numberVolumeElementCoordinates]
 
-        self.elementTypeInfo2d = [self.numberSurfaceElementNodes,
+        self.elementTypeInfo2d = [self.nsnodes,
                                   self.numberSurfaceElementGaussPoints,
                                   self.numberSurfaceElementEquations,
                                   self.numberSurfaceElementCoordinates]
 
-        self.pointerToSh = pylith3d.allocateDouble(
+        self.sh = pylith3d.allocateDouble(
             (constants.numberSpaceDimensions+1)*
-            self.numberVolumeElementNodes*
-            self.numberVolumeElementGaussPoints)
+            self.nen*
+            self.ngauss)
 
-        self.pointerToSh2d = pylith3d.allocateDouble(
+        self.sh2d = pylith3d.allocateDouble(
             constants.numberSpaceDimensions*
-            self.numberSurfaceElementNodes*
+            self.nsnodes*
             self.numberSurfaceElementGaussPoints)
             
-        self.pointerToShj = pylith3d.allocateDouble(
+        self.shj = pylith3d.allocateDouble(
             (constants.numberSpaceDimensions+1)*
-            self.numberVolumeElementNodes*
-            self.numberVolumeElementGaussPoints)
+            self.nen*
+            self.ngauss)
             
-        self.pointerToGauss = pylith3d.allocateDouble(
+        self.gauss = pylith3d.allocateDouble(
             (constants.numberSpaceDimensions+1)*
-            self.numberVolumeElementGaussPoints)
+            self.ngauss)
             
-        self.pointerToGauss2d = pylith3d.allocateDouble(
+        self.gauss2d = pylith3d.allocateDouble(
             constants.numberSpaceDimensions*
             self.numberSurfaceElementGaussPoints)
 
         pylith3d.preshape(
-            self.pointerToSh,
-            self.pointerToShj,
-            self.pointerToGauss,
+            self.sh,
+            self.shj,
+            self.gauss,
             quadratureOrderInt,
             elementType,
-            self.numberVolumeElementNodes,
-            self.numberVolumeElementGaussPoints)
+            self.nen,
+            self.ngauss)
 
         pylith3d.preshape2d(
-            self.pointerToSh2d,
-            self.pointerToGauss2d,
+            self.sh2d,
+            self.gauss2d,
             quadratureOrderInt,
             elementType,
-            self.numberSurfaceElementNodes,
+            self.nsnodes,
             self.numberSurfaceElementGaussPoints)
         
         return
@@ -133,64 +127,64 @@
         
         self.trace.log("Hello from ElementTypeDef.__init__!")
         
-        self.numberVolumeElementNodes = 0
-        self.numberVolumeElementGaussPoints = 0
-        self.numberVolumeElementEquations = 0
+        self.nen = 0
+        self.ngauss = 0
+        self.nee = 0
         self.numberVolumeElementCoordinates = 0
         self.elementTypeInfo = [0, 0, 0, 0]
         self.pointerToListArrayElementTypeInfo = None
-        self.pointerToSh = None
-        self.pointerToShj = None
-        self.pointerToGauss = None
-        self.elementNodes = [ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                              8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                              8, 8, 8, 8, 8, 8, 8, 7, 6, 5, \
-                              4,20,20,20,20,20,20,20,20,20, \
-                             20,20,20,20,20,20,20,20,20,20, \
-                             20,20,20,20,20,20,20,20,18,15, \
+        self.sh = None
+        self.shj = None
+        self.gauss = None
+        self.elementNodes = [ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                              8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                              8, 8, 8, 8, 8, 8, 8, 7, 6, 5,
+                              4,20,20,20,20,20,20,20,20,20,
+                             20,20,20,20,20,20,20,20,20,20,
+                             20,20,20,20,20,20,20,20,18,15,
                              13,10]
-        self.elementFullGauss = [ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                                  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                                  8, 8, 8, 8, 8, 8, 8, 8, 2, 5, \
-                                  1,27,27,27,27,27,27,27,27,27, \
-                                 27,27,27,27,27,27,27,27,27,27, \
-                                 27,27,27,27,27,27,27,27,27, 9, \
+        self.elementFullGauss = [ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                  8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                  8, 8, 8, 8, 8, 8, 8, 8, 2, 5,
+                                  1,27,27,27,27,27,27,27,27,27,
+                                 27,27,27,27,27,27,27,27,27,27,
+                                 27,27,27,27,27,27,27,27,27, 9,
                                  13, 4]
-        self.elementReducedGauss = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-                                     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-                                     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-                                     1, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                                     8, 8, 8, 8, 8, 8, 8, 8, 8, 2, \
+        self.elementReducedGauss = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                                     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                                     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                                     1, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                     8, 8, 8, 8, 8, 8, 8, 8, 8, 2,
                                      5, 1]
-        self.numberSurfaceElementNodes = 0
+        self.nsnodes = 0
         self.numberSurfaceElementGaussPoints = 0
         self.numberSurfaceElementEquations = 0
         self.numberSurfaceElementCoordinates = 0
         self.elementTypeInfo2d = [0, 0, 0, 0]
         self.pointerToListArrayElementTypeInfo2d = None
-        self.pointerToSh2d = None
-        self.pointerToGauss2d = None
-        self.elementNodes2d = [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
-                                4, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
-                                4, 4, 4, 4, 4, 4, 4, 4, 4, 3, \
-                                3, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                                8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
-                                8, 8, 8, 8, 8, 8, 8, 8, 8, 8, \
+        self.sh2d = None
+        self.gauss2d = None
+        self.elementNodes2d = [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+                                4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+                                4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
+                                3, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
                                 6, 6]
-        self.elementFullGauss2d = [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
-                                    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
-                                    4, 4, 4, 4, 4, 4, 4, 4, 4, 1, \
-                                    1, 9, 9, 9, 9, 9, 9, 9, 9, 9, \
-                                    9, 9, 9, 9, 9, 9, 9, 9, 9, 9, \
-                                    9, 9, 9, 9, 9, 9, 9, 9, 9, 8, \
+        self.elementFullGauss2d = [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+                                    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+                                    4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+                                    1, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+                                    9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+                                    9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
                                     3, 3]
-        self.elementReducedGauss2d = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-                                       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-                                       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-                                       1, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
-                                       4, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
-                                       4, 4, 4, 4, 4, 4, 4, 4, 4, 4, \
+        self.elementReducedGauss2d = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                                       1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                                       1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                                       1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+                                       4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+                                       4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
                                        1, 1]
         return
 

Modified: short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/PyLith.py
===================================================================
--- short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/PyLith.py	2007-04-04 20:28:40 UTC (rev 6508)
+++ short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/PyLith.py	2007-04-05 21:54:55 UTC (rev 6509)
@@ -78,27 +78,27 @@
     outputFileRoot.meta['tip'] = "Root output pathname for simulation (all output filenames derive from this)."
 
     # Output filenames (all are optional).
-    asciiOutputFile = OutputFile("asciiOutputFile",default="${outputFileRoot}.ascii")
-    asciiOutputFile.meta['tip'] = "Pathname for ascii output file (overrides default from outputFileRoot)."
+    ofile = OutputFile("asciiOutputFile",default="${outputFileRoot}.ascii")
+    ofile.meta['tip'] = "Pathname for ascii output file (overrides default from outputFileRoot)."
 
-    plotOutputFile = OutputFile("plotOutputFile",default="${outputFileRoot}.plot")
-    plotOutputFile.meta['tip'] = "Pathname for plot output file (overrides default from outputFileRoot)."
+    pfile = OutputFile("plotOutputFile",default="${outputFileRoot}.plot")
+    pfile.meta['tip'] = "Pathname for plot output file (overrides default from outputFileRoot)."
 
-    ucdOutputRoot = MacroString("ucdOutputRoot",default="${outputFileRoot}")
-    ucdOutputRoot.meta['tip'] = "Base name for UCD output files (overrides default from outputFileRoot)."
+    ucdroot = MacroString("ucdOutputRoot",default="${outputFileRoot}")
+    ucdroot.meta['tip'] = "Base name for UCD output files (overrides default from outputFileRoot)."
 
     # Required input files.
     coordinateInputFile = InputFile("coordinateInputFile",default="${inputFileRoot}.coord")
     coordinateInputFile.meta['tip'] = "Pathname for coordinate input file (overrides default from inputFileRoot)."
 
-    bcInputFile = InputFile("bcInputFile",default="${inputFileRoot}.bc")
-    bcInputFile.meta['tip'] = "Pathname for boundary condition input file (overrides default from inputFileRoot)."
+    bcfile = InputFile("bcInputFile",default="${inputFileRoot}.bc")
+    bcfile.meta['tip'] = "Pathname for boundary condition input file (overrides default from inputFileRoot)."
 
     timeStepInputFile = InputFile("timeStepInputFile",default="${inputFileRoot}.time")
     timeStepInputFile.meta['tip'] = "Pathname for time step definitions input file (overrides default from inputFileRoot)."
 
-    stateVariableInputFile = InputFile("stateVariableInputFile",default="${inputFileRoot}.statevar")
-    stateVariableInputFile.meta['tip'] = "Pathname for file defining which state variables to output (overrides default from inputFileRoot)."
+    stfile = InputFile("stateVariableInputFile",default="${inputFileRoot}.statevar")
+    stfile.meta['tip'] = "Pathname for file defining which state variables to output (overrides default from inputFileRoot)."
 
     materialPropertiesInputFile = InputFile("materialPropertiesInputFile",default="${inputFileRoot}.prop")
     materialPropertiesInputFile.meta['tip'] = "Pathname for file defining material properties (overrides default from inputFileRoot)."
@@ -107,29 +107,29 @@
     connectivityInputFile.meta['tip'] = "Pathname for connectivity input file (overrides default from inputFileRoot)."
 
     # This file is only required for time-dependent problems.
-    fullOutputInputFile = InputFile("fullOutputInputFile",default="${inputFileRoot}.fuldat")
-    fullOutputInputFile.meta['tip'] = "Pathname for file defining when to provide output (overrides default from inputFileRoot)."
+    fofile = InputFile("fullOutputInputFile",default="${inputFileRoot}.fuldat")
+    fofile.meta['tip'] = "Pathname for file defining when to provide output (overrides default from inputFileRoot)."
 
     # These files are optional unless generating Green's functions, in which case they are required.
     sampleLocationFile = InputFile("sampleLocationFile",default="${inputFileRoot}.sample")
     sampleLocationFile.meta['tip'] = "Pathname for Green's function sample locations (overrides default from inputFileRoot)."
 
-    splitNodeInputFile = InputFile("splitNodeInputFile",default="${inputFileRoot}.split")
-    splitNodeInputFile.meta['tip'] = "Pathname for split node input file (overrides default from inputFileRoot)."
+    spfile = InputFile("splitNodeInputFile",default="${inputFileRoot}.split")
+    spfile.meta['tip'] = "Pathname for split node input file (overrides default from inputFileRoot)."
 
     # Optional input files.
-    rotationInputFile = InputFile("rotationInputFile",default="${inputFileRoot}.skew")
-    rotationInputFile.meta['tip'] = "Pathname for skew rotations input file (overrides default from inputFileRoot)."
+    skfile = InputFile("rotationInputFile",default="${inputFileRoot}.skew")
+    skfile.meta['tip'] = "Pathname for skew rotations input file (overrides default from inputFileRoot)."
 
-    loadHistoryInputFile = InputFile("loadHistoryInputFile",default="${inputFileRoot}.hist")
-    loadHistoryInputFile.meta['tip'] = "Pathname for file defining load histories (overrides default from inputFileRoot)."
+    hfile = InputFile("loadHistoryInputFile",default="${inputFileRoot}.hist")
+    hfile.meta['tip'] = "Pathname for file defining load histories (overrides default from inputFileRoot)."
 
     tractionInputFile = InputFile("tractionInputFile",default="${inputFileRoot}.traction")
     tractionInputFile.meta['tip'] = "Pathname for traction BC input file (overrides default from inputFileRoot)."
 
     # Unused input files.
-    winklerInputFile = InputFile("winklerInputFile",default="${inputFileRoot}.wink")
-    winklerInputFile.meta['tip'] = "Pathname for Winkler force input file (overrides default from inputFileRoot)."
+    wfile = InputFile("winklerInputFile",default="${inputFileRoot}.wink")
+    wfile.meta['tip'] = "Pathname for Winkler force input file (overrides default from inputFileRoot)."
 
     materialHistoryInputFile = InputFile("materialHistoryInputFile",default="${inputFileRoot}.mhist")
     materialHistoryInputFile.meta['tip'] = "Pathname for file defining material histories (overrides default from inputFileRoot -- presently unused)."
@@ -137,14 +137,14 @@
     prestressInputFile = InputFile("prestressInputFile",default="${inputFileRoot}.prestr")
     prestressInputFile.meta['tip'] = "Pathname for prestress input file (overrides default from inputFileRoot -- presently unused)."
 
-    slipperyNodeInputFile = InputFile("slipperyNodeInputFile",default="${inputFileRoot}.slip")
-    slipperyNodeInputFile.meta['tip'] = "Pathname for slippery node input file (overrides default from inputFileRoot -- presently unused)."
+    slfile = InputFile("slipperyNodeInputFile",default="${inputFileRoot}.slip")
+    slfile.meta['tip'] = "Pathname for slippery node input file (overrides default from inputFileRoot -- presently unused)."
 
-    differentialForceInputFile = InputFile("differentialForceInputFile",default="${inputFileRoot}.diff")
-    differentialForceInputFile.meta['tip'] = "Pathname for file defining slippery node differential forces (overrides default from inputFileRoot -- presently unused)."
+    difile = InputFile("differentialForceInputFile",default="${inputFileRoot}.diff")
+    difile.meta['tip'] = "Pathname for file defining slippery node differential forces (overrides default from inputFileRoot -- presently unused)."
 
-    slipperyWinklerInputFile = InputFile("slipperyWinklerInputFile",default="${inputFileRoot}.winkx")
-    slipperyWinklerInputFile.meta['tip'] = "Pathname for file defining slippery node Winkler forces (overrides default from inputFileRoot -- presently unused)."
+    wxfile = InputFile("slipperyWinklerInputFile",default="${inputFileRoot}.winkx")
+    wxfile.meta['tip'] = "Pathname for file defining slippery node Winkler forces (overrides default from inputFileRoot -- presently unused)."
 
     # Output option flags.
     asciiOutput = pyre.str("asciiOutput",default="echo")
@@ -174,8 +174,8 @@
     debuggingOutput = pyre.bool("debuggingOutput",default=False)
     debuggingOutput.meta['tip'] = "Whether to produce debugging output."
 
-    numberCycles = pyre.int("numberCycles",default=1)
-    numberCycles.meta['tip'] = "Number of cycles of the given timestep definitions to perform (default=1)."
+    ncycle = pyre.int("numberCycles",default=1)
+    ncycle.meta['tip'] = "Number of cycles of the given timestep definitions to perform (default=1)."
 
     interpolateMesh = pyre.bool("interpolateMesh",default=False)
     interpolateMesh.meta['tip'] = "Create intermediate mesh entities, such as edges and faces."
@@ -200,11 +200,11 @@
     winklerScaleY = pyre.float("winklerScaleY", default=1.0)
     winklerScaleZ = pyre.float("winklerScaleZ", default=1.0)
 
-    stressTolerance = pyre.dimensional("stressTolerance", default=1.0e-12*Pa)
-    minimumStrainPerturbation = pyre.float("minimumStrainPerturbation", default=1.0e-7)
-    initialStrainPerturbation = pyre.float("initialStrainPerturbation", default=1.0e-1)
+    stol = pyre.dimensional("stressTolerance", default=1.0e-12*Pa)
+    dtol = pyre.float("minimumStrainPerturbation", default=1.0e-7)
+    epert = pyre.float("initialStrainPerturbation", default=1.0e-1)
 
-    usePreviousDisplacementFlag = pyre.int("usePreviousDisplacementFlag", default=0)
+    nprevdflag = pyre.int("usePreviousDisplacementFlag", default=0)
 
     quadratureOrder = pyre.str("quadratureOrder", default="Full")
     quadratureOrder.validator = pyre.choice(["Full", "Reduced", "Selective"])
@@ -215,8 +215,8 @@
 
     prestressAutoCompute = pyre.bool("prestressAutoCompute", default=False)
     prestressAutoChangeElasticProps = pyre.bool("prestressAutoChangeElasticProps", default=False)
-    prestressAutoComputePoisson = pyre.float("prestressAutoComputePoisson", default=0.49)
-    prestressAutoComputeYoungs = pyre.dimensional("prestressAutoComputeYoungs", default=1.0e30*Pa)
+    tpois = pyre.float("prestressAutoComputePoisson", default=0.49)
+    tyoungs = pyre.dimensional("prestressAutoComputeYoungs", default=1.0e30*Pa)
 
     prestressScaleXx = pyre.float("prestressScaleXx", default=1.0)
     prestressScaleYy = pyre.float("prestressScaleYy", default=1.0)
@@ -231,10 +231,10 @@
 
     f77StandardInput = pyre.int("f77StandardInput", default=5)
     f77StandardOutput = pyre.int("f77StandardOutput", default=6)
-    f77FileInput = pyre.int("f77FileInput", default=10)
-    f77AsciiOutput = pyre.int("f77AsciiOutput", default=11)
-    f77PlotOutput = pyre.int("f77PlotOutput", default=12)
-    f77UcdOutput = pyre.int("f77UcdOutput", default=13)
+    kr = pyre.int("f77FileInput", default=10)
+    kw = pyre.int("f77AsciiOutput", default=11)
+    kp = pyre.int("f77PlotOutput", default=12)
+    kucd = pyre.int("f77UcdOutput", default=13)
 
 
 
@@ -341,7 +341,7 @@
         if self.generateGreen:
             points      = self.readSamplePoints(self.macroString(self.metainventory.sampleLocationFile))
 
-        self.mesh = pylith3d.processMesh(self.macroString(self.metainventory.bcInputFile),
+        self.mesh = pylith3d.processMesh(self.macroString(self.metainventory.bcfile),
                                          self.macroString(self.metainventory.inputFileRoot),
                                          self.interpolateMesh,
                                          self.partitioner)
@@ -385,40 +385,40 @@
         
         Inventory = self.metainventory
 
-        self.asciiOutputFile             = outputFile(Inventory.asciiOutputFile,            optional)
-        self.plotOutputFile              = outputFile(Inventory.plotOutputFile,             optional)
+        self.ofile                       = outputFile(Inventory.ofile,                      optional)
+        self.pfile                       = outputFile(Inventory.pfile,                      optional)
         self.coordinateInputFile         = inputFile(Inventory.coordinateInputFile,         required)
-        self.bcInputFile                 = inputFile(Inventory.bcInputFile,                 required)
-        self.winklerInputFile            = inputFile(Inventory.winklerInputFile,            unused)
-        self.rotationInputFile           = inputFile(Inventory.rotationInputFile,           optional)
+        self.bcfile                      = inputFile(Inventory.bcfile,                      required)
+        self.wfile                       = inputFile(Inventory.wfile,                       unused)
+        self.skfile                      = inputFile(Inventory.skfile,                      optional)
         self.timeStepInputFile           = inputFile(Inventory.timeStepInputFile,           required)
-        self.fullOutputInputFile         = inputFile(Inventory.fullOutputInputFile, self.analysisType == "fullSolution" and required or unused)
-        self.stateVariableInputFile      = inputFile(Inventory.stateVariableInputFile,      required)
-        self.loadHistoryInputFile        = inputFile(Inventory.loadHistoryInputFile,        optional)
+        self.fofile                      = inputFile(Inventory.fofile, self.analysisType == "fullSolution" and required or unused)
+        self.stfile                      = inputFile(Inventory.stfile,                      required)
+        self.hfile                       = inputFile(Inventory.hfile,                       optional)
         self.materialPropertiesInputFile = inputFile(Inventory.materialPropertiesInputFile, required)
         self.materialHistoryInputFile    = inputFile(Inventory.materialHistoryInputFile,    unused)
         self.connectivityInputFile       = inputFile(Inventory.connectivityInputFile,       required)
         self.prestressInputFile          = inputFile(Inventory.prestressInputFile,          unused)
         self.tractionInputFile           = inputFile(Inventory.tractionInputFile,           optional)
-        self.splitNodeInputFile          = inputFile(Inventory.splitNodeInputFile, self.generateGreen and required or optional)
+        self.spfile                      = inputFile(Inventory.spfile, self.generateGreen and required or optional)
         # Slippery nodes are not yet implemented in PyLith-0.8.
-        self.slipperyNodeInputFile       = inputFile(Inventory.slipperyNodeInputFile,       unused)
-        self.differentialForceInputFile  = inputFile(Inventory.differentialForceInputFile,  unused)
-        self.slipperyWinklerInputFile    = inputFile(Inventory.slipperyWinklerInputFile,    unused)
+        self.slfile                      = inputFile(Inventory.slfile,                      unused)
+        self.difile                      = inputFile(Inventory.difile,                      unused)
+        self.wxfile                      = inputFile(Inventory.wxfile,                      unused)
         self.sampleLocationFile          = inputFile(Inventory.sampleLocationFile, self.generateGreen and required or unused)
         # The call to glob() is somewhat crude -- basically, determine
         # if any files might be in the way.
-        self.ucdOutputRoot               = macroString(Inventory.ucdOutputRoot)
+        self.ucdroot                     = macroString(Inventory.ucdroot)
 
         if False: # broken
             from glob import glob
-            ucdFiles = ([self.ucdOutputRoot + ".mesh.inp",
-                         self.ucdOutputRoot + ".gmesh.inp",
-                         self.ucdOutputRoot + ".mesh.time.prest.inp",
-                         self.ucdOutputRoot + ".gmesh.time.prest.inp"]
-                        + glob(self.ucdOutputRoot + ".mesh.time.[0-9][0-9][0-9][0-9][0-9].inp")
-                        + glob(self.ucdOutputRoot + ".gmesh.time.[0-9][0-9][0-9][0-9][0-9].inp"))
-            item = Inventory.ucdOutputRoot
+            ucdFiles = ([self.ucdroot + ".mesh.inp",
+                         self.ucdroot + ".gmesh.inp",
+                         self.ucdroot + ".mesh.time.prest.inp",
+                         self.ucdroot + ".gmesh.time.prest.inp"]
+                        + glob(self.ucdroot + ".mesh.time.[0-9][0-9][0-9][0-9][0-9].inp")
+                        + glob(self.ucdroot + ".gmesh.time.[0-9][0-9][0-9][0-9][0-9].inp"))
+            item = Inventory.ucdroot
             for ucdFile in ucdFiles:
                 try:
                     stream = os.fdopen(os.open(ucdFile, os.O_WRONLY|os.O_CREAT|os.O_EXCL), "w")
@@ -452,23 +452,23 @@
         self.trace.log("Scanning ascii files to determine dimensions:")
 
         # Get base file names
-        self.asciiOutputFile             = outputFile(Inventory.asciiOutputFile,            optional)
-        self.plotOutputFile              = outputFile(Inventory.plotOutputFile,             optional)
-        self.ucdOutputRoot               = macroString(Inventory.ucdOutputRoot)
+        self.ofile                       = outputFile(Inventory.ofile,                      optional)
+        self.pfile                       = outputFile(Inventory.pfile,                      optional)
+        self.ucdroot                     = macroString(Inventory.ucdroot)
         self.coordinateInputFile         = inputFile(Inventory.coordinateInputFile,         required)
         self.connectivityInputFile       = inputFile(Inventory.connectivityInputFile,       required)
-        self.bcInputFile                 = inputFile(Inventory.bcInputFile,                 required)
-        self.splitNodeInputFile          = inputFile(Inventory.splitNodeInputFile,          optional)
+        self.bcfile                      = inputFile(Inventory.bcfile,                      required)
+        self.spfile                      = inputFile(Inventory.spfile,                      optional)
         self.tractionInputFile           = inputFile(Inventory.tractionInputFile,           optional)
 
         # Create filenames for each process
-        for attr in ['asciiOutputFile',
-                     'plotOutputFile',
-                     'ucdOutputRoot',
+        for attr in ['ofile',
+                     'pfile',
+                     'ucdroot',
                      'coordinateInputFile',
                      'connectivityInputFile',
-                     'bcInputFile',
-                     'splitNodeInputFile',
+                     'bcfile',
+                     'spfile',
                      'tractionInputFile']:
             filename = getattr(self, attr)
             s = filename.split('.')
@@ -480,13 +480,13 @@
 
 
         # poor man's allocation
-        coordinateUnits = "coordinateUnitsInitial12345678"
-        displacementUnits = "displacementUnitsInitial123456"
-        velocityUnits = "velocityUnitsInitial1234567890"
-        forceUnits = "forceUnitsInitial1234567890123"
-        rotationUnits = "rotationUnitsInitial1234567890"
-        timeUnits = "timeUnitsInitial12345678901234"
-        tractionBcUnits = "tractionBcUnitsInitial12345678"
+        coord_units = "coordinateUnitsInitial12345678"
+        displacement_units = "displacementUnitsInitial123456"
+        velocity_units = "velocityUnitsInitial1234567890"
+        force_units = "forceUnitsInitial1234567890123"
+        rotation_units = "rotationUnitsInitial1234567890"
+        time_units = "timeUnitsInitial12345678901234"
+        traction_units = "tractionBcUnitsInitial12345678"
 
         # This is a test version where the geometry type is automatically
         # specified by using Pylith3d.  The geometry type is only used for
@@ -496,15 +496,14 @@
 
         # Invariant parameters related to element type
         self.maxElementEquations = constants.numberDegreesFreedom*constants.maxElementNodes
-        self.pointerToListArrayNumberElementNodesBase = pylith3d.intListToArray(
+        self.neni = pylith3d.intListToArray(
             [8, 7, 6, 5, 4, 20, 18, 15, 13, 10])
 
         # Invariant parameters related to material model
-        self.pointerToMaterialModelInfo = pylith3d.allocateInt(
+        self.infmatmod = pylith3d.allocateInt(
             6*constants.maxMaterialModels)
 
-        pylith3d.matmod_def(
-            self.pointerToMaterialModelInfo)
+        pylith3d.matmod_def(self.infmatmod)
 
         # Parameters derived from values in the inventory or the
         # category 2 parameters above.
@@ -514,81 +513,81 @@
             "elasticSolution": 2,
             "fullSolution":    3,
             }
-        self.analysisTypeInt = analysisTypeMap[self.analysisType]
+        self.icode = analysisTypeMap[self.analysisType]
 
         if self.prestressAutoCompute:
-            self.prestressAutoComputeInt = 1
+            self.ipstrs = 1
         else:
-            self.prestressAutoComputeInt = 0
+            self.ipstrs = 0
 
         if self.prestressAutoChangeElasticProps:
-            self.prestressAutoChangeElasticPropsInt = 1
+            self.ipauto = 1
         else:
-            self.prestressAutoChangeElasticPropsInt = 0
+            self.ipauto = 0
 
         # Parameters derived from the number of entries in a file.
-        self.numberNodes = pylith3d.scan_coords(
-            self.f77FileInput,
-            coordinateUnits,
+        self.numnp = pylith3d.scan_coords(
+            self.kr,
+            coord_units,
             self.coordinateInputFile)
 
-        self.coordinateScaleFactor = uparser.parse(string.strip(coordinateUnits)).value
+        self.cscale = uparser.parse(string.strip(coord_units)).value
 
-        self.numberBcEntries = pylith3d.scan_bc(
-            self.f77FileInput,
-            displacementUnits,
-            velocityUnits,
-            forceUnits,
-            self.bcInputFile)
+        self.numbc = pylith3d.scan_bc(
+            self.kr,
+            displacement_units,
+            velocity_units,
+            force_units,
+            self.bcfile)
 
-        if self.numberBcEntries > 0:
-            self.displacementScaleFactor = uparser.parse(string.strip(displacementUnits)).value
-            self.velocityScaleFactor = uparser.parse(string.strip(velocityUnits)).value
-            self.forceScaleFactor = uparser.parse(string.strip(forceUnits)).value
+        if self.numbc > 0:
+            self.dscale = uparser.parse(string.strip(displacement_units)).value
+            self.vscale = uparser.parse(string.strip(velocity_units)).value
+            self.fscale = uparser.parse(string.strip(force_units)).value
         else:
-            self.displacementScaleFactor = 0.0
-            self.velocityScaleFactor = 0.0
-            self.forceScaleFactor = 0.0
+            self.dscale = 0.0
+            self.vscale = 0.0
+            self.fscale = 0.0
 
         winklerInfo = pylith3d.scan_wink(
-            self.f77FileInput,
-            self.winklerInputFile)
-        self.numberWinklerEntries = winklerInfo[0]
-        self.numberWinklerForces = winklerInfo[1]
+            self.kr,
+            self.wfile)
+        self.nwinke = winklerInfo[0]
+        self.nwink = winklerInfo[1]
 
-        self.numberRotationEntries = pylith3d.scan_skew(
-            self.f77FileInput,
-            rotationUnits,
-            self.rotationInputFile)
+        self.numrot = pylith3d.scan_skew(
+            self.kr,
+            rotation_units,
+            self.skfile)
 
-        if self.numberRotationEntries != 0:
-            self.rotationScaleFactor = uparser.parse(string.strip(rotationUnits)).value
+        if self.numrot != 0:
+            self.runits = uparser.parse(string.strip(rotation_units)).value
         else:
-            self.rotationScaleFactor = 0.0
+            self.runits = 0.0
 
         timeStepInfo = pylith3d.scan_timdat(
-            self.f77FileInput,
-            timeUnits,
+            self.kr,
+            time_units,
             self.timeStepInputFile)
-        self.numberTimeStepGroups = timeStepInfo[0]
-        self.totalNumberTimeSteps = timeStepInfo[1]
+        self.nintg = timeStepInfo[0]
+        self.lastep = timeStepInfo[1]
 
-        self.timeScaleFactor = uparser.parse(string.strip(timeUnits)).value
+        self.tunits = uparser.parse(string.strip(time_units)).value
 
-        self.numberFullOutputs = pylith3d.scan_fuldat(
-            self.analysisTypeInt,
-            self.totalNumberTimeSteps,
-            self.f77FileInput,
-            self.fullOutputInputFile)
+        self.icontr = pylith3d.scan_fuldat(
+            self.icode,
+            self.lastep,
+            self.kr,
+            self.fofile)
 
-        self.numberLoadHistories = pylith3d.scan_hist(
-            self.f77FileInput,
-            self.loadHistoryInputFile)
+        self.nhist = pylith3d.scan_hist(
+            self.kr,
+            self.hfile)
 
-        self.numberMaterials = matinfo.readprop(self.materialPropertiesInputFile)
+        self.numat = matinfo.readprop(self.materialPropertiesInputFile)
 
         self.materialModel = matinfo.materialModel
-        self.pointerToListArrayPropertyList = pylith3d.doubleListToArray(
+        self.prop = pylith3d.doubleListToArray(
             matinfo.propertyList)
 
         self.scan_connect()
@@ -598,42 +597,42 @@
                 constants.stateVariableDimension,
                 self.numberPrestressGaussPoints,
                 self.numberElements,
-                self.prestressAutoComputeInt,
-                self.f77FileInput,
+                self.ipstrs,
+                self.kr,
                 self.prestressInputFile)
         else:
             self.numberPrestressEntries = 0
 
-        self.numberTractionBc = pylith3d.scan_tractions(
-            constants.maxElementNodes2d,
-            self.f77FileInput,
-            tractionBcUnits,
+        self.numtractions = pylith3d.scan_tractions(
+            constants.nsnodesmax,
+            self.kr,
+            traction_units,
             self.tractionInputFile)
 
-        if self.numberTractionBc != 0:
-            self.tractionBcScaleFactor = uparser.parse(string.strip(tractionBcUnits)).value
+        if self.numtractions != 0:
+            self.tscale = uparser.parse(string.strip(traction_units)).value
         else:
-            self.tractionBcScaleFactor = 0.0
+            self.tscale = 0.0
 
-        self.numberSplitNodeEntries = pylith3d.scan_split(
-            self.f77FileInput,
-            self.splitNodeInputFile)
+        self.numfn = pylith3d.scan_split(
+            self.kr,
+            self.spfile)
 
-        self.numberSlipperyNodeEntries = pylith3d.scan_slip(
-            self.f77FileInput,
-            self.slipperyNodeInputFile)
+        self.numslp = pylith3d.scan_slip(
+            self.kr,
+            self.slfile)
 
-        self.numberDifferentialForceEntries = pylith3d.scan_diff(
-            self.numberSlipperyNodeEntries,
-            self.f77FileInput,
-            self.differentialForceInputFile)
+        self.numdif = pylith3d.scan_diff(
+            self.numslp,
+            self.kr,
+            self.difile)
 
         slipperyWinklerInfo = pylith3d.scan_winkx(
-            self.numberSlipperyNodeEntries,
-            self.f77FileInput,
-            self.slipperyWinklerInputFile)
-        self.numberSlipperyWinklerEntries = slipperyWinklerInfo[0]
-        self.numberSlipperyWinklerForces = slipperyWinklerInfo[1]
+            self.numslp,
+            self.kr,
+            self.wxfile)
+        self.nwinkxe = slipperyWinklerInfo[0]
+        self.nwinkx = slipperyWinklerInfo[1]
 
         self.trace.log("Hello from pl3dscan.initialize (end)!")
 
@@ -641,31 +640,31 @@
 
 
     def scan_connect(self):
-        pointerToListArrayMaterialModel = pylith3d.intListToArray(
+        infmat = pylith3d.intListToArray(
             self.materialModel)
 
         # At present, we assume that the number of element families is equal to
         # the number of material types used, since only one volume element type at a
         # time is allowed.
-        self.maxNumberVolumeElementFamilies = constants.numberAllowedVolumeElementTypes* \
-                                               self.numberMaterials
+        self.maxvfamilies = constants.numberAllowedVolumeElementTypes* \
+                                               self.numat
 
-        self.pointerToVolumeElementFamilyList = pylith3d.allocateInt(
-            3*self.maxNumberVolumeElementFamilies)
+        self.ivflist = pylith3d.allocateInt(
+            3*self.maxvfamilies)
 
         volumeElementDimens = pylith3d.scan_connect(
-            self.pointerToListArrayNumberElementNodesBase,
-            self.pointerToMaterialModelInfo,
-            pointerToListArrayMaterialModel,
-            self.pointerToVolumeElementFamilyList,
-            self.maxNumberVolumeElementFamilies,
-	    self.numberMaterials,
-            self.f77FileInput,
+            self.neni,
+            self.infmatmod,
+            infmat,
+            self.ivflist,
+            self.maxvfamilies,
+	    self.numat,
+            self.kr,
             self.connectivityInputFile)
 
-        self.numberVolumeElements = volumeElementDimens[0]
-        self.numberVolumeElementFamilies = volumeElementDimens[1]
-        self.volumeElementType = volumeElementDimens[2]
+        self.numelv = volumeElementDimens[0]
+        self.nvfamilies = volumeElementDimens[1]
+        self.ietypev = volumeElementDimens[2]
 
         return
 
@@ -738,46 +737,46 @@
         # Initialize and define some integer parameters based on string
         # or logical parameters in python
 
-        self.quadratureOrderInt = 0
+        self.intord = 0
         if self.quadratureOrder == "Full":
-            self.quadratureOrderInt = 1
+            self.intord = 1
         elif self.quadratureOrder == "Reduced":
-            self.quadratureOrderInt = 2
+            self.intord = 2
         elif self.quadratureOrder == "Selective":
-            self.quadratureOrderInt = 3
+            self.intord = 3
         else:
-            self.quadratureOrderInt = 1
+            self.intord = 1
 
-        self.asciiOutputInt = 0
+        self.idout = 0
         if self.asciiOutput == "none":
-            self.asciiOutputInt = 0
+            self.idout = 0
         elif self.asciiOutput == "echo":
-            self.asciiOutputInt = 1
+            self.idout = 1
         else:
-            self.asciiOutputInt = 2
+            self.idout = 2
             
-        self.plotOutputInt = 0
+        self.idsk = 0
         if self.plotOutput == "none":
-            self.plotOutputInt = 0
+            self.idsk = 0
         elif self.plotOutput == "ascii":
-            self.plotOutputInt = 1
+            self.idsk = 1
         else:
-            self.plotOutputInt = 2
+            self.idsk = 2
 
         binIOError = None
         try:
-            pylith3d.try_binio(self.f77UcdOutput)
+            pylith3d.try_binio(self.kucd)
         except RuntimeError, binIOError:
-            self.ucdOutputInt = 1
+            self.iucd = 1
         else:
-            self.ucdOutputInt = 2
+            self.iucd = 2
         if self.ucdOutput == "none":
-            self.ucdOutputInt = 0
+            self.iucd = 0
         elif self.ucdOutput == "ascii":
-            self.ucdOutputInt = 1
+            self.iucd = 1
         elif self.ucdOutput == "binary":
             if binIOError is None:
-                self.ucdOutputInt = 2
+                self.iucd = 2
             else:
                 import journal
                 warning = journal.warning("pylith3d")
@@ -785,17 +784,17 @@
                 warning.line("Binary UCD output not supported for this Fortran compiler.")
                 warning.log(binIOError)
             
-        self.debuggingOutputInt = 0
+        self.idebug = 0
         if self.debuggingOutput:
-            self.debuggingOutputInt = 1
+            self.idebug = 1
         else:
-            self.debuggingOutputInt = 0
+            self.idebug = 0
 
-        self.autoRotateSlipperyNodesInt = 0
+        self.iskopt = 0
         if self.autoRotateSlipperyNodes:
-            self.autoRotateSlipperyNodesInt = 2
+            self.iskopt = 2
         else:
-            self.autoRotateSlipperyNodesInt = 1
+            self.iskopt = 1
 
         self.trace.log("Hello from pl3dsetup.initialize (end)!")
 
@@ -816,13 +815,13 @@
         eltype=ElementTypeDef()
 
         # Make lists that are used as arrays in the f77 function calls below.
-        pointerToListArrayWscal = pylith3d.doubleListToArray(
+        wscal = pylith3d.doubleListToArray(
             [self.winklerScaleX,
              self.winklerScaleY,
              self.winklerScaleZ])
 
         if prestress:
-            self.pointerToListArrayPrscal = pylith3d.doubleListToArray(
+            self.prscal = pylith3d.doubleListToArray(
                 [self.prestressScaleXx,
                  self.prestressScaleYy,
                  self.prestressScaleZz,
@@ -830,272 +829,272 @@
                  self.prestressScaleXz,
                  self.prestressScaleYz])
         
-        pointerToListArrayWxscal = pylith3d.doubleListToArray(
+        wxscal = pylith3d.doubleListToArray(
             [self.winklerSlipScaleX,
              self.winklerSlipScaleY,
              self.winklerSlipScaleZ])
 
         # Set up global integration info.
         eltype.getdef(
-            self.volumeElementType,
-            self.quadratureOrderInt)
+            self.ietypev,
+            self.intord)
 
-        self.pointerToSh = eltype.pointerToSh
-        self.pointerToSh2d = eltype.pointerToSh2d
-        self.pointerToShj = eltype.pointerToShj
-        self.pointerToGauss = eltype.pointerToGauss
-        self.pointerToGauss2d = eltype.pointerToGauss2d
-        self.numberVolumeElementNodes = eltype.numberVolumeElementNodes
-        self.numberVolumeElementGaussPoints = eltype.numberVolumeElementGaussPoints
-        self.numberVolumeElementEquations = eltype.numberVolumeElementEquations
-        self.numberSurfaceElementNodes = eltype.numberSurfaceElementNodes
-	self.connectivitySize = self.numberVolumeElements*self.numberVolumeElementNodes
-        self.pointerToListArrayElementTypeInfo = pylith3d.intListToArray(
+        self.sh = eltype.sh
+        self.sh2d = eltype.sh2d
+        self.shj = eltype.shj
+        self.gauss = eltype.gauss
+        self.gauss2d = eltype.gauss2d
+        self.nen = eltype.nen
+        self.ngauss = eltype.ngauss
+        self.nee = eltype.nee
+        self.nsnodes = eltype.nsnodes
+	self.connectivitySize = self.numelv*self.nen
+        self.infetype = pylith3d.intListToArray(
             eltype.elementTypeInfo)
-        self.pointerToListArrayElementTypeInfo2d = pylith3d.intListToArray(
+        self.infetype2d = pylith3d.intListToArray(
             eltype.elementTypeInfo2d)
 
         # Node-based info (coordinates, displacement arrays, BC, and skew BC).
-        self.pointerToX = pylith3d.allocateDouble(
-            constants.numberSpaceDimensions*self.numberNodes)
-        self.pointerToIbond = pylith3d.allocateInt(
-            constants.numberDegreesFreedom*self.numberNodes)
-        self.pointerToBond = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
-        self.pointerToSkew = pylith3d.allocateDouble(
-            constants.numberSkewDimensions*self.numberNodes)
+        self.x = pylith3d.allocateDouble(
+            constants.numberSpaceDimensions*self.numnp)
+        self.ibond = pylith3d.allocateInt(
+            constants.numberDegreesFreedom*self.numnp)
+        self.bond = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
+        self.skew = pylith3d.allocateDouble(
+            constants.numberSkewDimensions*self.numnp)
 
         pylith3d.read_coords(
-            self.pointerToX,
-            self.coordinateScaleFactor,
-            self.numberNodes,
-            self.f77FileInput,
+            self.x,
+            self.cscale,
+            self.numnp,
+            self.kr,
             self.coordinateInputFile)
 
         self.numberConcForces = pylith3d.read_bc(
-            self.pointerToBond,
-            self.displacementScaleFactor,
-            self.velocityScaleFactor,
-            self.forceScaleFactor,
-            self.pointerToIbond,
-            self.numberNodes,
-            self.numberBcEntries,
-            self.f77FileInput,
-            self.bcInputFile)
+            self.bond,
+            self.dscale,
+            self.vscale,
+            self.fscale,
+            self.ibond,
+            self.numnp,
+            self.numbc,
+            self.kr,
+            self.bcfile)
 
         pylith3d.read_skew(
-            self.pointerToSkew,
-            self.rotationScaleFactor,
-            self.numberRotationEntries,
-            self.numberNodes,
-            self.autoRotateSlipperyNodesInt,
-            self.f77FileInput,
-            self.rotationInputFile)
+            self.skew,
+            self.runits,
+            self.numrot,
+            self.numnp,
+            self.iskopt,
+            self.kr,
+            self.skfile)
 
         # Allocate and read time step, time output, and load history info.
-        self.pointerToHistry = pylith3d.allocateDouble(
-            (self.totalNumberTimeSteps+1)*self.numberLoadHistories)
-        self.pointerToMaxstp = pylith3d.allocateInt(
-            self.numberTimeStepGroups)
-        self.pointerToDelt = pylith3d.allocateDouble(
-            self.numberTimeStepGroups)
-        self.pointerToAlfa = pylith3d.allocateDouble(
-            self.numberTimeStepGroups)
-        self.pointerToMaxit = pylith3d.allocateInt(
-            self.numberTimeStepGroups)
-        self.pointerToNtdinit = pylith3d.allocateInt(
-            self.numberTimeStepGroups)
-        self.pointerToLgdef = pylith3d.allocateInt(
-            self.numberTimeStepGroups)
-        self.pointerToUtol = pylith3d.allocateDouble(
-            self.numberTimeStepGroups)
-        self.pointerToFtol = pylith3d.allocateDouble(
-            self.numberTimeStepGroups)
-        self.pointerToEtol = pylith3d.allocateDouble(
-            self.numberTimeStepGroups)
-        self.pointerToItmax = pylith3d.allocateInt(
-            self.numberTimeStepGroups)
-        self.pointerToIprint = pylith3d.allocateInt(
-            self.numberFullOutputs)
+        self.histry = pylith3d.allocateDouble(
+            (self.lastep+1)*self.nhist)
+        self.maxstp = pylith3d.allocateInt(
+            self.nintg)
+        self.delt = pylith3d.allocateDouble(
+            self.nintg)
+        self.alfa = pylith3d.allocateDouble(
+            self.nintg)
+        self.maxit = pylith3d.allocateInt(
+            self.nintg)
+        self.ntdinit = pylith3d.allocateInt(
+            self.nintg)
+        self.lgdef = pylith3d.allocateInt(
+            self.nintg)
+        self.utol = pylith3d.allocateDouble(
+            self.nintg)
+        self.ftol = pylith3d.allocateDouble(
+            self.nintg)
+        self.etol = pylith3d.allocateDouble(
+            self.nintg)
+        self.itmax = pylith3d.allocateInt(
+            self.nintg)
+        self.iprint = pylith3d.allocateInt(
+            self.icontr)
 
         # Note that array Times is needed for output, if requested.
-        self.pointerToTimes = pylith3d.allocateDouble(
-            self.totalNumberTimeSteps+1)
-        self.pointerToIstatout = pylith3d.allocateInt(
+        self.times = pylith3d.allocateDouble(
+            self.lastep+1)
+        self.istatout = pylith3d.allocateInt(
             3*constants.maxStateVariables)
-        self.pointerToNstatout = pylith3d.allocateInt(3)
+        self.nstatout = pylith3d.allocateInt(3)
 
         pylith3d.read_timdat(
-            self.pointerToDelt,
-            self.pointerToAlfa,
-            self.pointerToUtol,
-            self.pointerToFtol,
-            self.pointerToEtol,
-            self.pointerToTimes,
-            self.timeScaleFactor,
-            self.pointerToMaxstp,
-            self.pointerToMaxit,
-            self.pointerToNtdinit,
-            self.pointerToLgdef,
-            self.pointerToItmax,
-            self.numberTimeStepGroups,
-            self.totalNumberTimeSteps,
-            self.f77FileInput,
+            self.delt,
+            self.alfa,
+            self.utol,
+            self.ftol,
+            self.etol,
+            self.times,
+            self.tunits,
+            self.maxstp,
+            self.maxit,
+            self.ntdinit,
+            self.lgdef,
+            self.itmax,
+            self.nintg,
+            self.lastep,
+            self.kr,
             self.timeStepInputFile)
 
         pylith3d.read_fuldat(
-            self.pointerToIprint,
-            self.numberFullOutputs,
-            self.analysisTypeInt,
-            self.numberCycles,
-            self.totalNumberTimeSteps,
-            self.f77FileInput,
-            self.fullOutputInputFile)
+            self.iprint,
+            self.icontr,
+            self.icode,
+            self.ncycle,
+            self.lastep,
+            self.kr,
+            self.fofile)
 
         pylith3d.read_stateout(
-            self.pointerToIstatout,
-            self.pointerToNstatout,
-            self.f77FileInput,
-            self.stateVariableInputFile)
+            self.istatout,
+            self.nstatout,
+            self.kr,
+            self.stfile)
 
         pylith3d.read_hist(
-            self.pointerToHistry,
-            self.pointerToTimes,
-            self.numberLoadHistories,
-            self.totalNumberTimeSteps,
-            self.f77FileInput,
-            self.loadHistoryInputFile)
+            self.histry,
+            self.times,
+            self.nhist,
+            self.lastep,
+            self.kr,
+            self.hfile)
 
         # Allocate and read info on connectivities and prestresses
-        self.pointerToIen = pylith3d.allocateInt(
-            self.numberVolumeElementNodes*self.numberVolumeElements)
-	self.pointerToMat = pylith3d.allocateInt(
-	    self.numberVolumeElements)
-        if self.numberPrestressEntries != 0 or self.prestressAutoComputeInt != 0:
+        self.ien = pylith3d.allocateInt(
+            self.nen*self.numelv)
+	self.mat = pylith3d.allocateInt(
+	    self.numelv)
+        if self.numberPrestressEntries != 0 or self.ipstrs != 0:
             self.prestressFlag = 1
         else:
             self.prestressFlag = 0
 
         pylith3d.read_connect(
-            self.pointerToIen,
-            self.pointerToMat,
-            self.numberVolumeElementNodes,
-            self.numberVolumeElements,
-            self.numberNodes,
-	    self.numberVolumeElementFamilies,
-            self.f77FileInput,
+            self.ien,
+            self.mat,
+            self.nen,
+            self.numelv,
+            self.numnp,
+	    self.nvfamilies,
+            self.kr,
             self.connectivityInputFile)
 
         if prestress:
             pylith3d.read_prestr(
-                self.pointerToStn,
-                self.pointerToSt0,
-                self.pointerToListArrayPrscal,
+                self.stn,
+                self.st0,
+                self.prscal,
                 self.numberStressComponents,
                 self.numberGaussPoints,
                 self.numberPrestressGaussPoints,
                 self.numberElements,
                 self.numberPrestressEntries,
-                self.prestressAutoComputeInt,
-                self.asciiOutputInt,
-                self.f77FileInput,
-                self.f77AsciiOutput,
+                self.ipstrs,
+                self.idout,
+                self.kr,
+                self.kw,
                 self.prestressInputFile,
-                self.asciiOutputFile)
+                self.ofile)
 
         # Read traction BC
-        self.pointerToTractionverts = pylith3d.allocateInt(
-            self.numberSurfaceElementNodes*self.numberTractionBc)
-        self.pointerToTractionvals = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberTractionBc)
+        self.tractionverts = pylith3d.allocateInt(
+            self.nsnodes*self.numtractions)
+        self.tractionvals = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numtractions)
 
         pylith3d.read_tractions(
-            self.pointerToTractionverts,
-            self.pointerToTractionvals,
-            self.tractionBcScaleFactor,
-            self.numberTractionBc,
-            self.numberSurfaceElementNodes,
-            self.f77FileInput,
+            self.tractionverts,
+            self.tractionvals,
+            self.tscale,
+            self.numtractions,
+            self.nsnodes,
+            self.kr,
             self.tractionInputFile)
 
         # Read split node info
-        self.pointerToNfault = pylith3d.allocateInt(
-            3*self.numberSplitNodeEntries)
-        self.pointerToFault = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberSplitNodeEntries)
+        self.nfault = pylith3d.allocateInt(
+            3*self.numfn)
+        self.fault = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numfn)
 
-        self.totalNumberSplitNodes = pylith3d.read_split(
-            self.pointerToFault,
-            self.pointerToNfault,
-            self.numberSplitNodeEntries,
-            self.numberNodes,
-            self.numberVolumeElements,
-            self.f77FileInput,
-            self.splitNodeInputFile)
+        self.numflt = pylith3d.read_split(
+            self.fault,
+            self.nfault,
+            self.numfn,
+            self.numnp,
+            self.numelv,
+            self.kr,
+            self.spfile)
 
         # Read slippery node info
         # Note that array Nslip is also required in functions sortmesh and sparsesetup
         # before it can be deallocated.
-        self.pointerToNslip = pylith3d.allocateInt(
-            constants.numberSlipDimensions*self.numberSlipperyNodeEntries)
-        self.pointerToIdhist = pylith3d.allocateInt(
-            self.numberNodes)
-        self.pointerToDiforc = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
+        self.nslip = pylith3d.allocateInt(
+            constants.numberSlipDimensions*self.numslp)
+        self.idhist = pylith3d.allocateInt(
+            self.numnp)
+        self.diforc = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
 
-        self.totalNumberSlipperyNodes = pylith3d.read_slip(
-            self.pointerToNslip,
-            self.numberSlipperyNodeEntries,
-            self.numberNodes,
-            self.autoRotateSlipperyNodesInt,
-            self.f77FileInput,
-            self.slipperyNodeInputFile)
+        self.numsn = pylith3d.read_slip(
+            self.nslip,
+            self.numslp,
+            self.numnp,
+            self.iskopt,
+            self.kr,
+            self.slfile)
 
         pylith3d.read_diff(
-            self.pointerToDiforc,
-            self.pointerToNslip,
-            self.pointerToIdhist,
-            self.numberSlipperyNodeEntries,
-            self.numberDifferentialForceEntries,
-            self.numberNodes,
-            self.f77FileInput,
-            self.differentialForceInputFile)
+            self.diforc,
+            self.nslip,
+            self.idhist,
+            self.numslp,
+            self.numdif,
+            self.numnp,
+            self.kr,
+            self.difile)
         
         # Read Winkler forces and slippery Winkler forces.
         # All input is finished after this section.
-        self.pointerToIwinkdef = pylith3d.allocateInt(
-            constants.numberDegreesFreedom*self.numberWinklerEntries)
-        self.pointerToIwinkid = pylith3d.allocateInt(
-            self.numberWinklerEntries)
-        self.pointerToWinkdef = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberWinklerEntries)
+        self.iwinkdef = pylith3d.allocateInt(
+            constants.numberDegreesFreedom*self.nwinke)
+        self.iwinkid = pylith3d.allocateInt(
+            self.nwinke)
+        self.winkdef = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.nwinke)
 
-        self.pointerToIwinkxdef = pylith3d.allocateInt(
-            constants.numberDegreesFreedom*self.numberSlipperyWinklerEntries)
-        self.pointerToIwinkxid = pylith3d.allocateInt(
-            self.numberSlipperyWinklerEntries)
-        self.pointerToWinkxdef = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberSlipperyWinklerEntries)
+        self.iwinkxdef = pylith3d.allocateInt(
+            constants.numberDegreesFreedom*self.nwinkxe)
+        self.iwinkxid = pylith3d.allocateInt(
+            self.nwinkxe)
+        self.winkxdef = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.nwinkxe)
 
         pylith3d.read_wink(
-            self.pointerToWinkdef,
-            pointerToListArrayWscal,
-            self.pointerToIwinkdef,
-            self.pointerToIwinkid,
-            self.numberWinklerForces,
-            self.numberWinklerEntries,
-            self.f77FileInput,
-            self.winklerInputFile)
+            self.winkdef,
+            wscal,
+            self.iwinkdef,
+            self.iwinkid,
+            self.nwink,
+            self.nwinke,
+            self.kr,
+            self.wfile)
 
         pylith3d.read_wink(
-            self.pointerToWinkxdef,
-            pointerToListArrayWxscal,
-            self.pointerToIwinkxdef,
-            self.pointerToIwinkxid,
-            self.numberSlipperyWinklerForces,
-            self.numberSlipperyWinklerEntries,
-            self.f77FileInput,
-            self.slipperyWinklerInputFile)
+            self.winkxdef,
+            wxscal,
+            self.iwinkxdef,
+            self.iwinkxid,
+            self.nwinkx,
+            self.nwinkxe,
+            self.kr,
+            self.wxfile)
 
         self.trace.log("Hello from pl3dsetup.read (end)!")
 
@@ -1110,79 +1109,79 @@
         print "Numbering global equations:"
 
         # Create Idftn array for split nodes.  This can be deallocated after meshwrite function has been called.
-        self.pointerToIdftn = pylith3d.allocateInt(
-            self.totalNumberSplitNodes)
+        self.idftn = pylith3d.allocateInt(
+            self.numflt)
 
         pylith3d.id_split(
-            self.pointerToNfault,
-            self.pointerToIdftn,
-            self.numberNodes,
-            self.numberSplitNodeEntries,
-            self.totalNumberSplitNodes)
+            self.nfault,
+            self.idftn,
+            self.numnp,
+            self.numfn,
+            self.numflt)
 
         # Determine global equations and store equation numbers in Id and Idx.
-        self.pointerToId = pylith3d.allocateInt(
-            constants.numberSpaceDimensions*self.numberNodes)
-        self.pointerToIdx = pylith3d.allocateInt(
-            constants.numberSpaceDimensions*self.numberNodes)
-        self.pointerToIdslp = pylith3d.allocateInt(
-            self.numberNodes)
+        self.id = pylith3d.allocateInt(
+            constants.numberSpaceDimensions*self.numnp)
+        self.idx = pylith3d.allocateInt(
+            constants.numberSpaceDimensions*self.numnp)
+        self.idslp = pylith3d.allocateInt(
+            self.numnp)
 
         # Number of equations
-        self.numberGlobalEquations = pylith3d.create_id(
-            self.pointerToId,
-            self.pointerToIdx,
-            self.pointerToIbond,
-            self.pointerToNslip,
-            self.pointerToIdslp,
-            self.numberSlipperyNodeEntries,
-            self.numberNodes,
-            self.totalNumberSlipperyNodes)
+        self.neq = pylith3d.create_id(
+            self.id,
+            self.idx,
+            self.ibond,
+            self.nslip,
+            self.idslp,
+            self.numslp,
+            self.numnp,
+            self.numsn)
 
-        self.pointerToIpslp = pylith3d.allocateInt(
-            constants.numberSlipNeighbors*self.totalNumberSlipperyNodes)
+        self.ipslp = pylith3d.allocateInt(
+            constants.numberSlipNeighbors*self.numsn)
 
         # If there are slippery nodes and the auto-rotation option is selected, find
         # neighboring nodes on the fault so that a best-fit plane can be determined at
         # each node.
-        if self.totalNumberSlipperyNodes != 0 and self.autoRotateSlipperyNodesInt ==  2:
+        if self.numsn != 0 and self.iskopt ==  2:
             self.nfind()
 
         # Assign appropriate equation numbers to Iwink array, and compact Wink
         # array to correspond to assigned BC.
-        self.pointerToWink = pylith3d.allocateDouble(
-            self.numberWinklerForces)
-        self.pointerToIwink = pylith3d.allocateInt(
-            2*self.numberWinklerForces)
+        self.wink = pylith3d.allocateDouble(
+            self.nwink)
+        self.iwink = pylith3d.allocateInt(
+            2*self.nwink)
 
         pylith3d.assign_wink(
-            self.pointerToWinkdef,
-            self.pointerToWink,
-            self.pointerToIwinkdef,
-            self.pointerToIwinkid,
-            self.pointerToIwink,
-            self.pointerToId,
-            self.numberNodes,
-            self.numberWinklerForces,
-            self.numberWinklerEntries)
+            self.winkdef,
+            self.wink,
+            self.iwinkdef,
+            self.iwinkid,
+            self.iwink,
+            self.id,
+            self.numnp,
+            self.nwink,
+            self.nwinke)
 
         # Assign appropriate equation numbers to Iwinkx array, and compact Winkx
         # array to correspond to assigned BC.
-        self.pointerToWinkx = pylith3d.allocateDouble(
-            self.numberSlipperyWinklerForces)
-        self.pointerToIwinkx = pylith3d.allocateInt(
-            2*self.numberSlipperyWinklerForces)
+        self.winkx = pylith3d.allocateDouble(
+            self.nwinkx)
+        self.iwinkx = pylith3d.allocateInt(
+            2*self.nwinkx)
 
         pylith3d.assign_wink(
-            self.pointerToWinkxdef,
-            self.pointerToWinkx,
-            self.pointerToIwinkxdef,
-            self.pointerToIwinkxid,
-            self.pointerToIwinkx,
-            self.pointerToIdx,
-            self.numberNodes,
-            self.numberSlipperyWinklerForces,
-            self.numberSlipperyWinklerEntries)
+            self.winkxdef,
+            self.winkx,
+            self.iwinkxdef,
+            self.iwinkxid,
+            self.iwinkx,
+            self.idx,
+            self.numnp,
+            self.nwinkx,
+            self.nwinkxe)
 
         self.trace.log("Hello from pl3dsetup.numberequations (end)!")
             
@@ -1191,27 +1190,27 @@
 
     def nfind(self):
         # Temporary arrays
-        pointerToXtmp = pylith3d.allocateDouble(
-            self.totalNumberSlipperyNodes)
-        pointerToItmp = pylith3d.allocateInt(
-            self.totalNumberSlipperyNodes)
-        pointerToItmp1 = pylith3d.allocateInt(
-            self.totalNumberSlipperyNodes)
-        pointerToItmp2 = pylith3d.allocateInt(
-            self.totalNumberSlipperyNodes)
+        xtmp = pylith3d.allocateDouble(
+            self.numsn)
+        itmp = pylith3d.allocateInt(
+            self.numsn)
+        itmp1 = pylith3d.allocateInt(
+            self.numsn)
+        itmp2 = pylith3d.allocateInt(
+            self.numsn)
 
         pylith3d.nfind(
-            self.pointerToX,
-            pointerToXtmp,
-            self.pointerToIdslp,
-            self.pointerToIpslp,
-            pointerToItmp,
-            pointerToItmp1,
-            pointerToItmp2,
-            self.pointerToNslip,
-            self.numberSlipperyNodeEntries,
-            self.totalNumberSlipperyNodes,
-            self.numberNodes)
+            self.x,
+            xtmp,
+            self.idslp,
+            self.ipslp,
+            itmp,
+            itmp1,
+            itmp2,
+            self.nslip,
+            self.numslp,
+            self.numsn,
+            self.numnp)
 
         return
 
@@ -1233,17 +1232,17 @@
 
         # Sort split node entries.
         pylith3d.sort_split_nodes(
-            self.pointerToNfault,
-            self.pointerToIndxiel,
-            self.numberSplitNodeEntries,
-            self.numberVolumeElements)
+            self.nfault,
+            self.indxiel,
+            self.numfn,
+            self.numelv)
 
         # Sort slippery node entries.
         pylith3d.sort_slip_nodes(
-            self.pointerToNslip,
-            self.pointerToIndxiel,
-            self.numberSlipperyNodeEntries,
-            self.numberVolumeElements)
+            self.nslip,
+            self.indxiel,
+            self.numslp,
+            self.numelv)
             
         self.trace.log("Hello from pl3dsetup.sortmesh (end)!")
 
@@ -1257,41 +1256,41 @@
         # The original element node array (Ien) and the associated
         # material type array (Mat) may be deallocated after sorting.
         
-        self.pointerToIens = pylith3d.allocateInt(
-            self.numberVolumeElementNodes*self.numberVolumeElements)
-        self.pointerToIvfamily = pylith3d.allocateInt(
-            6*self.numberVolumeElementFamilies)
+        self.iens = pylith3d.allocateInt(
+            self.nen*self.numelv)
+        self.ivfamily = pylith3d.allocateInt(
+            6*self.nvfamilies)
 
-        self.pointerToIndxiel = pylith3d.allocateInt(
-            self.numberVolumeElements)
+        self.indxiel = pylith3d.allocateInt(
+            self.numelv)
 
-        self.pointerToIelindx = pylith3d.allocateInt(
-            self.numberVolumeElements)
+        self.ielindx = pylith3d.allocateInt(
+            self.numelv)
 
-        pointerToIvftmp = pylith3d.allocateInt(
-            self.numberVolumeElementFamilies)
+        ivftmp = pylith3d.allocateInt(
+            self.nvfamilies)
 
 	self.elementSizeInfo = pylith3d.sort_elements(
-            self.pointerToIen,
-            self.pointerToMat,
-            self.pointerToMaterialModelInfo,
-            self.pointerToVolumeElementFamilyList,
-            self.pointerToIvfamily,
-            self.pointerToIens,
-            pointerToIvftmp,
-            self.pointerToIndxiel,
-            self.pointerToIelindx,
-            self.numberVolumeElementNodes,
-            self.numberVolumeElementGaussPoints,
-            self.maxNumberVolumeElementFamilies,
-            self.numberVolumeElementFamilies,
+            self.ien,
+            self.mat,
+            self.infmatmod,
+            self.ivflist,
+            self.ivfamily,
+            self.iens,
+            ivftmp,
+            self.indxiel,
+            self.ielindx,
+            self.nen,
+            self.ngauss,
+            self.maxvfamilies,
+            self.nvfamilies,
             self.prestressFlag,
-            self.numberVolumeElements,
-            self.numberNodes)
+            self.numelv,
+            self.numnp)
         
-        self.pointerToIen = None ### DEALLOC
-        self.pointerToMat = None ### DEALLOC
-        self.pointerToVolumeElementFamilyList = None ### DEALLOC
+        self.ien = None ### DEALLOC
+        self.mat = None ### DEALLOC
+        self.ivflist = None ### DEALLOC
 
         return
 
@@ -1311,101 +1310,101 @@
 
         # Arrays to map element equation numbers to global
         # Localize global equation numbers in element index arrays.
-        self.pointerToLm = pylith3d.allocateInt(
+        self.lm = pylith3d.allocateInt(
             constants.numberDegreesFreedom*self.connectivitySize)
-        self.pointerToLmx = pylith3d.allocateInt(
+        self.lmx = pylith3d.allocateInt(
             constants.numberDegreesFreedom*self.connectivitySize)
-        self.pointerToLmf = pylith3d.allocateInt(
+        self.lmf = pylith3d.allocateInt(
             self.connectivitySize)
 
         pylith3d.local(
-            self.pointerToId,
-            self.numberNodes,
-            self.pointerToIens,
-            self.pointerToLm,
-            self.numberVolumeElements,
-            self.numberVolumeElementNodes)
+            self.id,
+            self.numnp,
+            self.iens,
+            self.lm,
+            self.numelv,
+            self.nen)
 
         pylith3d.localf(
-            self.pointerToIens,
-            self.pointerToLmf,
-            self.numberVolumeElements,
-            self.pointerToNfault,
-            self.numberSplitNodeEntries,
-            self.numberVolumeElementNodes)
+            self.iens,
+            self.lmf,
+            self.numelv,
+            self.nfault,
+            self.numfn,
+            self.nen)
 
         pylith3d.localx(
-            self.pointerToIdx,
-            self.numberNodes,
-            self.pointerToIens,
-            self.pointerToLmx,
-            self.numberVolumeElements,
-            self.pointerToNslip,
-            self.numberSlipperyNodeEntries,
-            self.numberVolumeElementNodes)
+            self.idx,
+            self.numnp,
+            self.iens,
+            self.lmx,
+            self.numelv,
+            self.nslip,
+            self.numslp,
+            self.nen)
 
         # Keeping this for now as it may be wanted for output
-        # self.pointerToNslip = None ### DEALLOC
+        # self.nslip = None ### DEALLOC
 
         # Allocate and populate sparse matrix arrays.  Some of these are
         # temporary and are then deleted after use.
-        workingArraySize = pylith3d.cmp_stiffsz(
-            self.numberGlobalEquations,
-            self.pointerToLm,
-            self.pointerToLmx,
-            self.numberVolumeElements,
-            self.totalNumberSlipperyNodes,
-            self.numberVolumeElementNodes)
+        iwork = pylith3d.cmp_stiffsz(
+            self.neq,
+            self.lm,
+            self.lmx,
+            self.numelv,
+            self.numsn,
+            self.nen)
 
         # Temporary arrays
-        pointerToIndx = pylith3d.allocateInt(
-            self.numberGlobalEquations)
-        pointerToLink = pylith3d.allocateInt(
-            workingArraySize)
-        pointerToNbrs = pylith3d.allocateInt(
-            workingArraySize)
+        indx = pylith3d.allocateInt(
+            self.neq)
+        link = pylith3d.allocateInt(
+            iwork)
+        nbrs = pylith3d.allocateInt(
+            iwork)
 
         stiffnessMatrixInfo = pylith3d.lnklst(
-            self.numberGlobalEquations,
-            self.pointerToLm,
-            self.pointerToLmx,
-            self.numberVolumeElements,
-            self.numberVolumeElementNodes,
-            self.numberVolumeElementEquations,
-            pointerToIndx,
-            pointerToLink,
-            pointerToNbrs,
-            workingArraySize,
-            self.totalNumberSlipperyNodes)
+            self.neq,
+            self.lm,
+            self.lmx,
+            self.numelv,
+            self.nen,
+            self.nee,
+            indx,
+            link,
+            nbrs,
+            iwork,
+            self.numsn)
 
-        self.stiffnessMatrixSize = stiffnessMatrixInfo[0]
+        self.nnz = stiffnessMatrixInfo[0]
 
         self.A, self.rhs, self.sol = pylith3d.createPETScMat(self.mesh)
 
         stiffnessMatrixStats = pylith3d.makemsr(
             self.A,
-            pointerToIndx,
-            pointerToLink,
-            pointerToNbrs,
-            self.numberGlobalEquations,
-            self.stiffnessMatrixSize,
-            workingArraySize)
+            indx,
+            link,
+            nbrs,
+            self.neq,
+            self.nnz,
+            iwork)
 
-        self.minimumNonzeroTermsPerRow = stiffnessMatrixStats[0]
-        self.maximumNonzeroTermsPerRow = stiffnessMatrixStats[1]
-        self.averageNonzeroTermsPerRow = float(stiffnessMatrixStats[2])
+        self.nmin = stiffnessMatrixStats[0]
+        self.nmax = stiffnessMatrixStats[1]
+        self.wavg = float(stiffnessMatrixStats[2])
 
 	print ""
 	print ""
         print "Sparse matrix information:"
 	print ""
-        print "numberGlobalEquations:     %i" % self.numberGlobalEquations
-        print "workingArraySize:          %i" % workingArraySize
-        print "stiffnessMatrixSize:       %i" % (self.stiffnessMatrixSize-1)
+        print "numberGlobalEquations:     %i" % self.neq
+        print "workingArraySize:          %i" % iwork
+        print "stiffnessMatrixSize:       %i" % (self.nnz-1)
         print "stiffnessOffDiagonalSize:  %i" % stiffnessMatrixInfo[1]
-        print "minimumNonzeroTermsPerRow: %i" % self.minimumNonzeroTermsPerRow
-        print "maximumNonzeroTermsPerRow: %i" % self.maximumNonzeroTermsPerRow
-        print "averageNonzeroTermsPerRow: %g" % self.averageNonzeroTermsPerRow
+        print "minimumNonzeroTermsPerRow: %i" % self.nmin
+        print "maximumNonzeroTermsPerRow: %i" % self.nmax
+        print "averageNonzeroTermsPerRow: %g" % self.wavg
 	print ""
         
         self.trace.log("Hello from pl3dsetup.sparsesetup (end)!")
@@ -1421,7 +1420,7 @@
         print "Allocating remaining storage:"
         
         # Create necessary lists and convert them to arrays
-        self.pointerToListArrayGrav = pylith3d.doubleListToArray(
+        self.grav = pylith3d.doubleListToArray(
             [self.gravityX.value,
              self.gravityY.value,
              self.gravityZ.value])
@@ -1429,7 +1428,7 @@
         # Allocate memory for all additional arrays
 
         # Force vectors
-        if self.numberTractionBc != 0:
+        if self.numtractions != 0:
             tractionFlag = 1
         else:
             tractionFlag = 0
@@ -1437,7 +1436,7 @@
             gravityFlag = 1
         else:
             gravityFlag = 0
-        if self.numberConcForces != 0 or self.numberDifferentialForceEntries != 0:
+        if self.numberConcForces != 0 or self.numdif != 0:
             concForceFlag = 1
         else:
             concForceFlag = 0
@@ -1445,82 +1444,82 @@
             externFlag = 1
         else:
             externFlag = 0
-	if self.numberWinklerForces != 0:
+	if self.nwink != 0:
 	    winklerFlag = 1
         else:
             winklerFlag = 0
-	if self.numberSlipperyWinklerForces != 0:
+	if self.nwinkx != 0:
 	    slipperyWinklerFlag = 1
         else:
             slipperyWinklerFlag = 0
 
-        self.pointerToBextern = pylith3d.allocateDouble(
-            externFlag*self.numberGlobalEquations)
-        self.pointerToBtraction = pylith3d.allocateDouble(
-            tractionFlag*self.numberGlobalEquations)
-        self.pointerToBgravity = pylith3d.allocateDouble(
-            gravityFlag*self.numberGlobalEquations)
-        self.pointerToBconcForce = pylith3d.allocateDouble(
-            concForceFlag*self.numberGlobalEquations)
-        self.pointerToBwink = pylith3d.allocateDouble(
-            winklerFlag*self.numberGlobalEquations)
-        self.pointerToBwinkx = pylith3d.allocateDouble(
-            slipperyWinklerFlag*self.numberGlobalEquations)
-        self.pointerToBintern = pylith3d.allocateDouble(
-            self.numberGlobalEquations)
-        self.pointerToBresid = pylith3d.allocateDouble(
-            self.numberGlobalEquations)
-        self.pointerToDispVec = pylith3d.allocateDouble(
-            self.numberGlobalEquations)
-        self.pointerToDprev = pylith3d.allocateDouble(
-            self.usePreviousDisplacementFlag*self.numberGlobalEquations)
+        self.bextern = pylith3d.allocateDouble(
+            externFlag*self.neq)
+        self.btraction = pylith3d.allocateDouble(
+            tractionFlag*self.neq)
+        self.bgravity = pylith3d.allocateDouble(
+            gravityFlag*self.neq)
+        self.bconcForce = pylith3d.allocateDouble(
+            concForceFlag*self.neq)
+        self.bwink = pylith3d.allocateDouble(
+            winklerFlag*self.neq)
+        self.bwinkx = pylith3d.allocateDouble(
+            slipperyWinklerFlag*self.neq)
+        self.bintern = pylith3d.allocateDouble(
+            self.neq)
+        self.bresid = pylith3d.allocateDouble(
+            self.neq)
+        self.dispVec = pylith3d.allocateDouble(
+            self.neq)
+        self.dprev = pylith3d.allocateDouble(
+            self.nprevdflag*self.neq)
             
         # Displacement arrays
-        self.pointerToD = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
-        self.pointerToDeld = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
-        self.pointerToDcur = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
+        self.d = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
+        self.deld = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
+        self.dcur = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
 
         # Slippery node arrays
-        self.pointerToDx = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
-        self.pointerToDeldx = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
-        self.pointerToDxcur = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberNodes)
+        self.dx = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
+        self.deldx = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
+        self.dxcur = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numnp)
 
         # Split node arrays
-        self.pointerToDfault = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberSplitNodeEntries)
-        self.pointerToTfault = pylith3d.allocateDouble(
-            constants.numberDegreesFreedom*self.numberSplitNodeEntries)
+        self.dfault = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numfn)
+        self.tfault = pylith3d.allocateDouble(
+            constants.numberDegreesFreedom*self.numfn)
 
         # Local stiffness matrix arrays
-        self.pointerToS = pylith3d.allocateDouble(
+        self.s = pylith3d.allocateDouble(
             self.maxElementEquations*self.maxElementEquations)
-        self.pointerToStemp = pylith3d.allocateDouble(
+        self.stemp = pylith3d.allocateDouble(
             self.maxElementEquations*self.maxElementEquations)
 
         # Element arrays
-        self.pointerToState = pylith3d.allocateDouble(
+        self.state = pylith3d.allocateDouble(
             self.stateSize)
-        self.pointerToDstate = pylith3d.allocateDouble(
+        self.dstate = pylith3d.allocateDouble(
             self.stateSize)
-        self.pointerToDmat = pylith3d.allocateDouble(
+        self.dmat = pylith3d.allocateDouble(
             constants.materialMatrixDimension*
-            self.numberVolumeElementGaussPoints*
-            self.numberVolumeElements)
-        self.pointerToListArrayIddmat = pylith3d.intListToArray( 
+            self.ngauss*
+            self.numelv)
+        self.iddmat = pylith3d.intListToArray( 
             constants.listIddmat)
-        self.pointerToState0 = pylith3d.allocateDouble(
+        self.state0 = pylith3d.allocateDouble(
             self.state0Size)
 
         # Create arrays from lists that will be needed for the solution
 
         # nforce array
-        self.pointerToListArrayNforce = pylith3d.intListToArray(
+        self.nforce = pylith3d.intListToArray(
             [externFlag,
              tractionFlag,
              gravityFlag,
@@ -1528,80 +1527,80 @@
              self.prestressFlag,
              winklerFlag,
              slipperyWinklerFlag,
-             self.usePreviousDisplacementFlag])
+             self.nprevdflag])
            
         # ncodat array
-        self.pointerToListArrayNcodat = pylith3d.intListToArray(
-            [self.analysisTypeInt,
-             self.debuggingOutputInt])
+        self.ncodat = pylith3d.intListToArray(
+            [self.icode,
+             self.idebug])
             
         # npar array
-        self.pointerToListArrayNpar = pylith3d.intListToArray(
-            [self.numberVolumeElements,
-             self.numberMaterials,
-             self.numberTractionBc,
-             self.numberSlipperyNodeEntries,
-             self.numberSplitNodeEntries,
-             self.prestressAutoComputeInt,
-             self.prestressAutoChangeElasticPropsInt,
+        self.npar = pylith3d.intListToArray(
+            [self.numelv,
+             self.numat,
+             self.numtractions,
+             self.numslp,
+             self.numfn,
+             self.ipstrs,
+             self.ipauto,
              self.stateSize,
              self.state0Size,
-             self.numberVolumeElementFamilies,
-             self.numberDifferentialForceEntries,
-             self.quadratureOrderInt])
+             self.nvfamilies,
+             self.numdif,
+             self.intord])
 
         # nprint array
-        self.pointerToListArrayNprint = pylith3d.intListToArray(
-            [self.numberFullOutputs,
-             self.asciiOutputInt,
-             self.plotOutputInt,
-             self.ucdOutputInt])
+        self.nprint = pylith3d.intListToArray(
+            [self.icontr,
+             self.idout,
+             self.idsk,
+             self.iucd])
 
         # nsysdat array
-        self.pointerToListArrayNsysdat = pylith3d.intListToArray(
-            [self.numberNodes,
-             self.numberGlobalEquations,
-             self.stiffnessMatrixSize,
-             self.numberRotationEntries,
+        self.nsysdat = pylith3d.intListToArray(
+            [self.numnp,
+             self.neq,
+             self.nnz,
+             self.numrot,
              self.numberPrestressEntries,
-             self.totalNumberSlipperyNodes,
-             self.totalNumberSplitNodes,
+             self.numsn,
+             self.numflt,
              self.propertySize,
-             self.numberWinklerForces,
-             self.numberSlipperyWinklerForces,
-             self.autoRotateSlipperyNodesInt])
+             self.nwink,
+             self.nwinkx,
+             self.iskopt])
 
         # nunits array
-        self.pointerToListArrayNunits = pylith3d.intListToArray(
+        self.nunits = pylith3d.intListToArray(
             [self.f77StandardInput,
              self.f77StandardOutput,
-             self.f77FileInput,
-             self.f77AsciiOutput,
-             self.f77PlotOutput,
-             self.f77UcdOutput])
+             self.kr,
+             self.kw,
+             self.kp,
+             self.kucd])
 
         # nvisdat array
-        self.pointerToListArrayNvisdat = pylith3d.intListToArray(
-            [self.numberCycles,
-             self.numberTimeStepGroups,
-             self.totalNumberTimeSteps,
-             self.numberLoadHistories])
+        self.nvisdat = pylith3d.intListToArray(
+            [self.ncycle,
+             self.nintg,
+             self.lastep,
+             self.nhist])
         
         # rgiter array
-        self.pointerToListArrayRgiter = pylith3d.doubleListToArray(
-            [self.stressTolerance.value,
-             self.minimumStrainPerturbation,
-             self.initialStrainPerturbation])
+        self.rgiter = pylith3d.doubleListToArray(
+            [self.stol.value,
+             self.dtol,
+             self.epert])
         
         # rtimdat array
-        self.pointerToListArrayRtimdat = pylith3d.doubleListToArray(
+        self.rtimdat = pylith3d.doubleListToArray(
             [0.0, # currentTimeStepSize
              0.0, # currentAlfaParameter
-             self.prestressAutoComputePoisson,
-             self.prestressAutoComputeYoungs.value])
+             self.tpois,
+             self.tyoungs.value])
 
         # ntimdat array
-        self.pointerToListArrayNtimdat = pylith3d.intListToArray(
+        self.ntimdat = pylith3d.intListToArray(
             [0, # currentTimeStep
              0, # currentIterationsBetweenReform
              0, # currentStepsBetweenReform
@@ -1631,279 +1630,279 @@
         # Write out global parameters
         pylith3d.write_global_info(
             self.title,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.numberNodes,
-            self.analysisTypeInt,
-            self.debuggingOutputInt,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.idout,
+            self.idsk,
+            self.numnp,
+            self.icode,
+            self.idebug,
+            self.kw,
+            self.kp,
+            self.ofile,
+            self.pfile)
 
         # Write out nodal coordinates
         pylith3d.write_coords(
-            self.pointerToX,
-            self.numberNodes,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.x,
+            self.numnp,
+            self.kw,
+            self.kp,
+            self.idout,
+            self.idsk,
+            self.ofile,
+            self.pfile)
 
         # Write out nodal boundary condition info
         pylith3d.write_bc(
-            self.pointerToBond,
-            self.pointerToIbond,
-            self.numberNodes,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.bond,
+            self.ibond,
+            self.numnp,
+            self.kw,
+            self.idout,
+            self.ofile)
 
         # Write out local coordinate rotations
         pylith3d.write_skew(
-            self.pointerToSkew,
-            self.numberRotationEntries,
-            self.autoRotateSlipperyNodesInt,
-            self.numberNodes,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.skew,
+            self.numrot,
+            self.iskopt,
+            self.numnp,
+            self.kw,
+            self.idout,
+            self.ofile)
 
         # Write stress computation and subiteration parameters.
         pylith3d.write_strscomp(
-            self.stressTolerance.value,
-            self.minimumStrainPerturbation,
-            self.initialStrainPerturbation,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.stol.value,
+            self.dtol,
+            self.epert,
+            self.kw,
+            self.idout,
+            self.ofile)
 
         pylith3d.write_subiter(
-            self.usePreviousDisplacementFlag,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.nprevdflag,
+            self.kw,
+            self.idout,
+            self.ofile)
 
         # Write out time step information
         pylith3d.write_timdat(
-            self.pointerToDelt,
-            self.pointerToAlfa,
-            self.pointerToUtol,
-            self.pointerToFtol,
-            self.pointerToEtol,
-            self.pointerToTimes,
-            self.pointerToMaxstp,
-            self.pointerToMaxit,
-            self.pointerToNtdinit,
-            self.pointerToLgdef,
-            self.pointerToItmax,
-            self.numberTimeStepGroups,
-            self.totalNumberTimeSteps,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.delt,
+            self.alfa,
+            self.utol,
+            self.ftol,
+            self.etol,
+            self.times,
+            self.maxstp,
+            self.maxit,
+            self.ntdinit,
+            self.lgdef,
+            self.itmax,
+            self.nintg,
+            self.lastep,
+            self.kw,
+            self.idout,
+            self.ofile)
 
         # Write out timesteps when full output is desired
         pylith3d.write_fuldat(
-            self.pointerToIprint,
-            self.numberFullOutputs,
-            self.analysisTypeInt,
-            self.numberCycles,
-            self.totalNumberTimeSteps,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.iprint,
+            self.icontr,
+            self.icode,
+            self.ncycle,
+            self.lastep,
+            self.kw,
+            self.kp,
+            self.idout,
+            self.idsk,
+            self.ofile,
+            self.pfile)
 
         # Write out state variables desired for output
         pylith3d.write_stateout(
-            self.pointerToIstatout,
-            self.pointerToNstatout,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.istatout,
+            self.nstatout,
+            self.kw,
+            self.kp,
+            self.idout,
+            self.idsk,
+            self.ofile,
+            self.pfile)
 
         # Write out load history information and deallocate Times array
         pylith3d.write_hist(
-            self.pointerToHistry,
-            self.pointerToTimes,
-            self.numberLoadHistories,
-            self.totalNumberTimeSteps,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.histry,
+            self.times,
+            self.nhist,
+            self.lastep,
+            self.kw,
+            self.idout,
+            self.ofile)
 
-        self.pointerToTimes = None ### DEALLOC
+        self.times = None ### DEALLOC
 
         # Write element info
         pylith3d.write_element_info(
-            self.numberVolumeElements,
-            self.numberVolumeElementNodes,
-	    self.numberVolumeElementGaussPoints,
-            self.volumeElementType,
-            self.quadratureOrderInt,
-            self.prestressAutoComputeInt,
-            self.prestressAutoChangeElasticPropsInt,
-            self.prestressAutoComputePoisson,
-            self.prestressAutoComputeYoungs.value,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.numelv,
+            self.nen,
+	    self.ngauss,
+            self.ietypev,
+            self.intord,
+            self.ipstrs,
+            self.ipauto,
+            self.tpois,
+            self.tyoungs.value,
+            self.kw,
+            self.idout,
+            self.ofile)
 
         # Write element node array and deallocate Indxiel
         pylith3d.write_connect(
-            self.pointerToIens,
-            self.pointerToIvfamily,
-            self.pointerToIndxiel,
-            self.numberVolumeElementNodes,
-	    self.numberVolumeElementGaussPoints,
-            self.numberVolumeElements,
-            self.volumeElementType,
-            self.numberVolumeElementFamilies,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.iens,
+            self.ivfamily,
+            self.indxiel,
+            self.nen,
+	    self.ngauss,
+            self.numelv,
+            self.ietypev,
+            self.nvfamilies,
+            self.kw,
+            self.kp,
+            self.idout,
+            self.idsk,
+            self.ofile,
+            self.pfile)
 
-        self.pointerToIndxiel = None ### DEALLOC
+        self.indxiel = None ### DEALLOC
 
         # Write material properties
         pylith3d.write_props(
-            self.pointerToListArrayPropertyList,
-            self.pointerToListArrayGrav,
-            self.pointerToIvfamily,
-            self.pointerToMaterialModelInfo,
-            self.numberVolumeElementFamilies,
+            self.prop,
+            self.grav,
+            self.ivfamily,
+            self.infmatmod,
+            self.nvfamilies,
             self.propertySize,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.idout,
+            self.idsk,
+            self.kw,
+            self.kp,
+            self.ofile,
+            self.pfile)
 
         # Write mesh info to UCD file, if requested
-        if self.ucdOutputInt >= 0:
+        if self.iucd >= 0:
             pylith3d.write_ucd_mesh(
-                self.pointerToX,
-                self.numberNodes,
-                self.pointerToIens,
-                self.pointerToIvfamily,
-                self.numberVolumeElements,
-                self.numberVolumeElementFamilies,
-                self.pointerToSh,
-                self.numberVolumeElementNodes,
-                self.numberVolumeElementGaussPoints,
-                self.volumeElementType,
-                self.pointerToIstatout,
-                self.pointerToNstatout,
-                self.f77UcdOutput,
-                self.ucdOutputInt,
-                self.ucdOutputRoot)
+                self.x,
+                self.numnp,
+                self.iens,
+                self.ivfamily,
+                self.numelv,
+                self.nvfamilies,
+                self.sh,
+                self.nen,
+                self.ngauss,
+                self.ietypev,
+                self.istatout,
+                self.nstatout,
+                self.kucd,
+                self.iucd,
+                self.ucdroot)
 
         # Write traction info
         pylith3d.write_tractions(
-            self.pointerToTractionverts,
-            self.pointerToTractionvals,
-            self.numberTractionBc,
-            self.numberSurfaceElementNodes,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.tractionverts,
+            self.tractionvals,
+            self.numtractions,
+            self.nsnodes,
+            self.kw,
+            self.idout,
+            self.ofile)
     
         # Write split node info
         pylith3d.write_split(
-            self.pointerToFault,
-            self.pointerToNfault,
-            self.numberSplitNodeEntries,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.fault,
+            self.nfault,
+            self.numfn,
+            self.kw,
+            self.kp,
+            self.idout,
+            self.idsk,
+            self.ofile,
+            self.pfile)
 
         # Write slippery node info
         pylith3d.write_slip(
-            self.pointerToNslip,
-            self.numberSlipperyNodeEntries,
-            self.totalNumberSlipperyNodes,
-            self.f77AsciiOutput,
-            self.f77PlotOutput,
-            self.asciiOutputInt,
-            self.plotOutputInt,
-            self.asciiOutputFile,
-            self.plotOutputFile)
+            self.nslip,
+            self.numslp,
+            self.numsn,
+            self.kw,
+            self.kp,
+            self.idout,
+            self.idsk,
+            self.ofile,
+            self.pfile)
 
         # Write differential force info and deallocate Nslip
         pylith3d.write_diff(
-            self.pointerToDiforc,
-            self.pointerToNslip,
-            self.pointerToIdhist,
-            self.numberSlipperyNodeEntries,
-            self.numberDifferentialForceEntries,
-            self.numberNodes,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.diforc,
+            self.nslip,
+            self.idhist,
+            self.numslp,
+            self.numdif,
+            self.numnp,
+            self.kw,
+            self.idout,
+            self.ofile)
 
-        self.pointerToNslip = None ### DEALLOC
+        self.nslip = None ### DEALLOC
 
         # Write split nodes to plot file, if requested and deallocate Idftn
         pylith3d.write_split_plot(
-            self.pointerToIdftn,
-            self.totalNumberSplitNodes,
-            self.f77PlotOutput,
-            self.plotOutputInt,
-            self.plotOutputFile)
+            self.idftn,
+            self.numflt,
+            self.kp,
+            self.idsk,
+            self.pfile)
 
-        self.pointerToIdftn = None ### DEALLOC
+        self.idftn = None ### DEALLOC
 
         # Write Winkler force info and deallocate definition arrays
         pylith3d.write_wink(
-            self.pointerToWinkdef,
-            self.pointerToIwinkdef,
-            self.pointerToIwinkid,
-            self.numberWinklerEntries,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.winkdef,
+            self.iwinkdef,
+            self.iwinkid,
+            self.nwinke,
+            self.kw,
+            self.idout,
+            self.ofile)
 
-        self.pointerToWinkdef = None ### DEALLOC
-        self.pointerToIwinkdef = None ### DEALLOC
+        self.winkdef = None ### DEALLOC
+        self.iwinkdef = None ### DEALLOC
 
         # Write slippery node Winkler force info and deallocate definition arrays
         pylith3d.write_winkx(
-            self.pointerToWinkxdef,
-            self.pointerToIwinkxdef,
-            self.pointerToIwinkxid,
-            self.numberSlipperyWinklerEntries,
-            self.f77AsciiOutput,
-            self.asciiOutputInt,
-            self.asciiOutputFile)
+            self.winkxdef,
+            self.iwinkxdef,
+            self.iwinkxid,
+            self.nwinkxe,
+            self.kw,
+            self.idout,
+            self.ofile)
 
-        self.pointerToWinkxdef = None ### DEALLOC
-        self.pointerToIwinkxdef = None ### DEALLOC
+        self.winkxdef = None ### DEALLOC
+        self.iwinkxdef = None ### DEALLOC
 
         # Write sparse matrix info
         pylith3d.write_sparse_info(
-            self.numberGlobalEquations,
-            self.stiffnessMatrixSize,
-            self.minimumNonzeroTermsPerRow,
-            self.maximumNonzeroTermsPerRow,
-            self.averageNonzeroTermsPerRow,
-            self.asciiOutputInt,
-            self.f77AsciiOutput,
-            self.asciiOutputFile)
+            self.neq,
+            self.nnz,
+            self.nmin,
+            self.nmax,
+            self.wavg,
+            self.idout,
+            self.kw,
+            self.ofile)
 
         self.trace.log("Hello from pl3dsetup.meshwrite (end)!")
 
@@ -1917,93 +1916,95 @@
 
     def solveElastic(self):
         pylith3d.elastc(
-            self.A,self.rhs,self.sol,                          # sparse
-            self.pointerToBextern,                             # force
-            self.pointerToBtraction,
-            self.pointerToBgravity,
-            self.pointerToBconcForce,
-            self.pointerToBintern,
-            self.pointerToBresid,
-            self.pointerToBwink,
-            self.pointerToBwinkx,
-            self.pointerToDispVec,
-            self.pointerToDprev,
-            self.pointerToListArrayNforce,
-            self.pointerToListArrayGrav,
-            self.pointerToX,                                   # global
-            self.pointerToD,
-            self.pointerToDeld,
-            self.pointerToDcur,
-            self.pointerToId,
-            self.pointerToIwink,
-            self.pointerToWink,
-            self.pointerToListArrayNsysdat,
-            self.pointerToListArrayIddmat,
-            self.pointerToIbond,                               # BC
-            self.pointerToBond,
-            self.pointerToDx,                                  # slip
-            self.pointerToDeldx,
-            self.pointerToDxcur,
-            self.pointerToDiforc,
-            self.pointerToIdx,
-            self.pointerToIwinkx,
-            self.pointerToWinkx,
-            self.pointerToIdslp,
-            self.pointerToIpslp,
-            self.pointerToIdhist,
-            self.pointerToFault,                               # fault
-            self.pointerToNfault,
-            self.pointerToDfault,
-            self.pointerToTfault,
-            self.pointerToS,                                   # stiff
-            self.pointerToStemp,
-            self.pointerToState,                               # element
-            self.pointerToDstate,
-            self.pointerToState0,
-            self.pointerToDmat,
-            self.pointerToIens,
-            self.pointerToLm,
-            self.pointerToLmx,
-            self.pointerToLmf,
-            self.pointerToIvfamily,
-            self.pointerToListArrayNpar,
-            self.pointerToIelindx,
-            self.pointerToTractionverts,                       # traction
-            self.pointerToTractionvals,
-            self.pointerToGauss2d,
-            self.pointerToSh2d,
-            self.pointerToListArrayElementTypeInfo2d,
-            self.pointerToListArrayPropertyList,               # material
-            self.pointerToMaterialModelInfo,
-            self.pointerToGauss,                               # eltype
-            self.pointerToSh,
-            self.pointerToShj,
-            self.pointerToListArrayElementTypeInfo,
-            self.pointerToHistry,                              # timdat
-            self.pointerToListArrayRtimdat,
-            self.pointerToListArrayNtimdat,
-            self.pointerToListArrayNvisdat,
-            self.pointerToMaxstp,
-            self.pointerToDelt,
-            self.pointerToAlfa,
-            self.pointerToMaxit,
-            self.pointerToNtdinit,
-            self.pointerToLgdef,
-            self.pointerToUtol,
-            self.pointerToFtol,
-            self.pointerToEtol,
-            self.pointerToItmax,
-            self.pointerToListArrayRgiter,                     # stresscmp
-            self.pointerToSkew,                                # skew
-            self.pointerToListArrayNcodat,                     # ioinfo
-            self.pointerToListArrayNunits,
-            self.pointerToListArrayNprint,
-            self.pointerToIstatout,
-            self.pointerToNstatout,
-            self.asciiOutputFile,                              # files
-            self.plotOutputFile,
-            self.ucdOutputRoot,
-            self.elasticStage,                                 # PETSc logging
+            self.A,                # sparse
+            self.rhs,
+            self.sol,
+            self.bextern,          # force
+            self.btraction,
+            self.bgravity,
+            self.bconcForce,
+            self.bintern,
+            self.bresid,
+            self.bwink,
+            self.bwinkx,
+            self.dispVec,
+            self.dprev,
+            self.nforce,
+            self.grav,
+            self.x,                # global
+            self.d,
+            self.deld,
+            self.dcur,
+            self.id,
+            self.iwink,
+            self.wink,
+            self.nsysdat,
+            self.iddmat,
+            self.ibond,            # BC
+            self.bond,
+            self.dx,               # slip
+            self.deldx,
+            self.dxcur,
+            self.diforc,
+            self.idx,
+            self.iwinkx,
+            self.winkx,
+            self.idslp,
+            self.ipslp,
+            self.idhist,
+            self.fault,            # fault
+            self.nfault,
+            self.dfault,
+            self.tfault,
+            self.s,                # stiff
+            self.stemp,
+            self.state,            # element
+            self.dstate,
+            self.state0,
+            self.dmat,
+            self.iens,
+            self.lm,
+            self.lmx,
+            self.lmf,
+            self.ivfamily,
+            self.npar,
+            self.ielindx,
+            self.tractionverts,    # traction
+            self.tractionvals,
+            self.gauss2d,
+            self.sh2d,
+            self.infetype2d,
+            self.prop,             # material
+            self.infmatmod,
+            self.gauss,            # eltype
+            self.sh,
+            self.shj,
+            self.infetype,
+            self.histry,           # timdat
+            self.rtimdat,
+            self.ntimdat,
+            self.nvisdat,
+            self.maxstp,
+            self.delt,
+            self.alfa,
+            self.maxit,
+            self.ntdinit,
+            self.lgdef,
+            self.utol,
+            self.ftol,
+            self.etol,
+            self.itmax,
+            self.rgiter,           # stresscmp
+            self.skew,             # skew
+            self.ncodat,           # ioinfo
+            self.nunits,
+            self.nprint,
+            self.istatout,
+            self.nstatout,
+            self.ofile,            # files
+            self.pfile,
+            self.ucdroot,
+            self.elasticStage,     # PETSc logging
             self.iterateEvent)
         return
 
@@ -2032,95 +2033,97 @@
 
         # Compute gravitational prestresses, if requested.
         if self.analysisType == "elasticSolution" or self.analysisType == "fullSolution":
-            if self.prestressAutoComputeInt == 1:
+            if self.ipstrs == 1:
                 pylith3d.autoprestr(
-                    self.A,self.rhs,self.sol,                      # sparse
-                    self.pointerToBextern,                         # force
-                    self.pointerToBtraction,
-                    self.pointerToBgravity,
-                    self.pointerToBconcForce,
-                    self.pointerToBintern,
-                    self.pointerToBresid,
-                    self.pointerToBwink,
-                    self.pointerToBwinkx,
-                    self.pointerToDispVec,
-                    self.pointerToDprev,
-                    self.pointerToListArrayNforce,
-                    self.pointerToListArrayGrav,
-                    self.pointerToX,                               # global
-                    self.pointerToD,
-                    self.pointerToDeld,
-                    self.pointerToDcur,
-                    self.pointerToId,
-                    self.pointerToIwink,
-                    self.pointerToWink,
-                    self.pointerToListArrayNsysdat,
-                    self.pointerToListArrayIddmat,
-                    self.pointerToIbond,                           # BC
-                    self.pointerToBond,
-                    self.pointerToDx,                              # slip
-                    self.pointerToDeldx,
-                    self.pointerToDxcur,
-                    self.pointerToDiforc,
-                    self.pointerToIdx,
-                    self.pointerToIwinkx,
-                    self.pointerToWinkx,
-                    self.pointerToIdslp,
-                    self.pointerToIpslp,
-                    self.pointerToIdhist,
-                    self.pointerToFault,                           # split
-                    self.pointerToNfault,
-                    self.pointerToDfault,
-                    self.pointerToTfault,
-                    self.pointerToS,                               # stiff
-                    self.pointerToStemp,
-                    self.pointerToState,                           # element
-                    self.pointerToDstate,
-                    self.pointerToState0,
-                    self.pointerToDmat,
-                    self.pointerToIens,
-                    self.pointerToLm,
-                    self.pointerToLmx,
-                    self.pointerToLmf,
-                    self.pointerToIvfamily,
-                    self.pointerToListArrayNpar,
-                    self.pointerToIelindx,
-                    self.pointerToTractionverts,                   # traction
-                    self.pointerToTractionvals,
-                    self.pointerToGauss2d,
-                    self.pointerToSh2d,
-                    self.pointerToListArrayElementTypeInfo2d,
-                    self.pointerToListArrayPropertyList,           # material
-                    self.pointerToMaterialModelInfo,
-                    self.pointerToGauss,                           # eltype
-                    self.pointerToSh,
-                    self.pointerToShj,
-                    self.pointerToListArrayElementTypeInfo,
-                    self.pointerToHistry,                          # timdat
-                    self.pointerToListArrayRtimdat,
-                    self.pointerToListArrayNtimdat,
-                    self.pointerToListArrayNvisdat,
-                    self.pointerToMaxstp,
-                    self.pointerToDelt,
-                    self.pointerToAlfa,
-                    self.pointerToMaxit,
-                    self.pointerToNtdinit,
-                    self.pointerToLgdef,
-                    self.pointerToUtol,
-                    self.pointerToFtol,
-                    self.pointerToEtol,
-                    self.pointerToItmax,
-                    self.pointerToListArrayRgiter,                 # stresscmp
-                    self.pointerToSkew,                            # skew
-                    self.pointerToListArrayNcodat,                 # ioinfo
-                    self.pointerToListArrayNunits,
-                    self.pointerToListArrayNprint,
-                    self.pointerToIstatout,
-                    self.pointerToNstatout,
-                    self.asciiOutputFile,                          # files
-                    self.plotOutputFile,
-                    self.ucdOutputRoot,
-                    self.autoprestrStage,                          # PETSc logging
+                    self.A,                # sparse
+                    self.rhs,
+                    self.sol,
+                    self.bextern,          # force
+                    self.btraction,
+                    self.bgravity,
+                    self.bconcForce,
+                    self.bintern,
+                    self.bresid,
+                    self.bwink,
+                    self.bwinkx,
+                    self.dispVec,
+                    self.dprev,
+                    self.nforce,
+                    self.grav,
+                    self.x,                # global
+                    self.d,
+                    self.deld,
+                    self.dcur,
+                    self.id,
+                    self.iwink,
+                    self.wink,
+                    self.nsysdat,
+                    self.iddmat,
+                    self.ibond,            # BC
+                    self.bond,
+                    self.dx,               # slip
+                    self.deldx,
+                    self.dxcur,
+                    self.diforc,
+                    self.idx,
+                    self.iwinkx,
+                    self.winkx,
+                    self.idslp,
+                    self.ipslp,
+                    self.idhist,
+                    self.fault,            # split
+                    self.nfault,
+                    self.dfault,
+                    self.tfault,
+                    self.s,                # stiff
+                    self.stemp,
+                    self.state,            # element
+                    self.dstate,
+                    self.state0,
+                    self.dmat,
+                    self.iens,
+                    self.lm,
+                    self.lmx,
+                    self.lmf,
+                    self.ivfamily,
+                    self.npar,
+                    self.ielindx,
+                    self.tractionverts,    # traction
+                    self.tractionvals,
+                    self.gauss2d,
+                    self.sh2d,
+                    self.infetype2d,
+                    self.prop,             # material
+                    self.infmatmod,
+                    self.gauss,            # eltype
+                    self.sh,
+                    self.shj,
+                    self.infetype,
+                    self.histry,           # timdat
+                    self.rtimdat,
+                    self.ntimdat,
+                    self.nvisdat,
+                    self.maxstp,
+                    self.delt,
+                    self.alfa,
+                    self.maxit,
+                    self.ntdinit,
+                    self.lgdef,
+                    self.utol,
+                    self.ftol,
+                    self.etol,
+                    self.itmax,
+                    self.rgiter,           # stresscmp
+                    self.skew,             # skew
+                    self.ncodat,           # ioinfo
+                    self.nunits,
+                    self.nprint,
+                    self.istatout,
+                    self.nstatout,
+                    self.ofile,            # files
+                    self.pfile,
+                    self.ucdroot,
+                    self.autoprestrStage,  # PETSc logging
                     self.iterateEvent)
 
             # Perform elastic solution, if requested.
@@ -2129,20 +2132,20 @@
 
         # Perform time-dependent solution, if requested.
 
-        if self.analysisType == "fullSolution" and self.numberTimeStepGroups > 1:
+        if self.analysisType == "fullSolution" and self.nintg > 1:
             if self.pythonTimestep:
                 # Setup timestepping
                 #   Open output files
-                pylith3d.viscos_setup(self.pointerToListArrayNprint,
-                                      self.pointerToListArrayNunits,
-                                      self.asciiOutputFile,
-                                      self.plotOutputFile,
+                pylith3d.viscos_setup(self.nprint,
+                                      self.nunits,
+                                      self.ofile,
+                                      self.pfile,
                                       self.viscousStage)
-                numCycles         = pylith3d.intListRef(self.pointerToListArrayNvisdat, 0)
-                numTimeStepGroups = pylith3d.intListRef(self.pointerToListArrayNvisdat, 1)
-                numslp            = pylith3d.intListRef(self.pointerToListArrayNpar, 3)
-                iskopt            = pylith3d.intListRef(self.pointerToListArrayNsysdat, 10)
-                icontr            = pylith3d.intListRef(self.pointerToListArrayNprint, 0)
+                numCycles         = pylith3d.intListRef(self.nvisdat, 0)
+                numTimeStepGroups = pylith3d.intListRef(self.nvisdat, 1)
+                numslp            = pylith3d.intListRef(self.npar, 3)
+                iskopt            = pylith3d.intListRef(self.nsysdat, 10)
+                icontr            = pylith3d.intListRef(self.nprint, 0)
                 indexx            = 1 # Fortran index
                 totalSteps        = 0 # This is ntot
                 for cycle in range(numCycles):
@@ -2154,123 +2157,125 @@
 
                     for tsGroup in range(1, numTimeStepGroups):
                         # Define constants
-                        dt = pylith3d.doubleListRef(self.pointerToDelt, tsGroup) # This is deltp
-                        pylith3d.doubleListSet(self.pointerToListArrayRtimdat, 0, dt)
-                        alfap = pylith3d.doubleListRef(self.pointerToAlfa, tsGroup)
-                        pylith3d.doubleListSet(self.pointerToListArrayRtimdat, 1, alfap)
-                        pylith3d.intListSet(self.pointerToListArrayNtimdat, 0, timeStep)
-                        maxitp = pylith3d.intListRef(self.pointerToMaxit, tsGroup)
-                        pylith3d.intListSet(self.pointerToListArrayNtimdat, 1, maxitp)
-                        ntdinitp = pylith3d.intListRef(self.pointerToNtdinit, tsGroup)
-                        pylith3d.intListSet(self.pointerToListArrayNtimdat, 2, ntdinitp)
-                        lgdefp = pylith3d.intListRef(self.pointerToLgdef, tsGroup)
-                        pylith3d.intListSet(self.pointerToListArrayNtimdat, 3, lgdefp)
-                        itmaxp = pylith3d.intListRef(self.pointerToItmax, tsGroup)
-                        pylith3d.intListSet(self.pointerToListArrayNtimdat, 4, itmaxp)
-                        gtol = [pylith3d.doubleListRef(self.pointerToUtol, tsGroup),
-                                pylith3d.doubleListRef(self.pointerToFtol, tsGroup),
-                                pylith3d.doubleListRef(self.pointerToEtol, tsGroup)]
+                        dt = pylith3d.doubleListRef(self.delt, tsGroup) # This is deltp
+                        pylith3d.doubleListSet(self.rtimdat, 0, dt)
+                        alfap = pylith3d.doubleListRef(self.alfa, tsGroup)
+                        pylith3d.doubleListSet(self.rtimdat, 1, alfap)
+                        pylith3d.intListSet(self.ntimdat, 0, timeStep)
+                        maxitp = pylith3d.intListRef(self.maxit, tsGroup)
+                        pylith3d.intListSet(self.ntimdat, 1, maxitp)
+                        ntdinitp = pylith3d.intListRef(self.ntdinit, tsGroup)
+                        pylith3d.intListSet(self.ntimdat, 2, ntdinitp)
+                        lgdefp = pylith3d.intListRef(self.lgdef, tsGroup)
+                        pylith3d.intListSet(self.ntimdat, 3, lgdefp)
+                        itmaxp = pylith3d.intListRef(self.itmax, tsGroup)
+                        pylith3d.intListSet(self.ntimdat, 4, itmaxp)
+                        gtol = [pylith3d.doubleListRef(self.utol, tsGroup),
+                                pylith3d.doubleListRef(self.ftol, tsGroup),
+                                pylith3d.doubleListRef(self.etol, tsGroup)]
                         startStep     = nextStartStep + 1
-                        nextStartStep = startStep + pylith3d.intListRef(self.pointerToMaxstp, tsGroup) - 1
+                        nextStartStep = startStep + pylith3d.intListRef(self.maxstp, tsGroup) - 1
 
                         ltim = 1
 
                         for j in range(startStep, nextStartStep+1):
                             totalSteps += 1
                             timeStep   += 1
-                            pylith3d.intListSet(self.pointerToListArrayNtimdat, 0, timeStep)
+                            pylith3d.intListSet(self.ntimdat, 0, timeStep)
                             time += dt
                             skc   = (numslp != 0 and (iskopt == 2 or (iskopt <= 0 and abs(iskopt) == timeStep)))
 
                             pylith3d.viscos_step(
-                                self.A,self.rhs,self.sol,                          # sparse
-                                self.pointerToBextern,                             # force
-                                self.pointerToBtraction,
-                                self.pointerToBgravity,
-                                self.pointerToBconcForce,
-                                self.pointerToBintern,
-                                self.pointerToBresid,
-                                self.pointerToBwink,
-                                self.pointerToBwinkx,
-                                self.pointerToDispVec,
-                                self.pointerToDprev,
-                                self.pointerToListArrayNforce,
-                                self.pointerToListArrayGrav,
-                                self.pointerToX,                                   # global
-                                self.pointerToD,
-                                self.pointerToDeld,
-                                self.pointerToDcur,
-                                self.pointerToId,
-                                self.pointerToIwink,
-                                self.pointerToWink,
-                                self.pointerToListArrayNsysdat,
-                                self.pointerToListArrayIddmat,
-                                self.pointerToIbond,                               # BC
-                                self.pointerToBond,
-                                self.pointerToDx,                                  # slip
-                                self.pointerToDeldx,
-                                self.pointerToDxcur,
-                                self.pointerToDiforc,
-                                self.pointerToIdx,
-                                self.pointerToIwinkx,
-                                self.pointerToWinkx,
-                                self.pointerToIdslp,
-                                self.pointerToIpslp,
-                                self.pointerToIdhist,
-                                self.pointerToFault,                               # fault
-                                self.pointerToNfault,
-                                self.pointerToDfault,
-                                self.pointerToTfault,
-                                self.pointerToS,                                   # stiff
-                                self.pointerToStemp,
-                                self.pointerToState,                               # element
-                                self.pointerToDstate,
-                                self.pointerToState0,
-                                self.pointerToDmat,
-                                self.pointerToIens,
-                                self.pointerToLm,
-                                self.pointerToLmx,
-                                self.pointerToLmf,
-                                self.pointerToIvfamily,
-                                self.pointerToListArrayNpar,
-                                self.pointerToIelindx,
-                                self.pointerToTractionverts,                       # traction
-                                self.pointerToTractionvals,
-                                self.pointerToGauss2d,
-                                self.pointerToSh2d,
-                                self.pointerToListArrayElementTypeInfo2d,
-                                self.pointerToListArrayPropertyList,               # material
-                                self.pointerToMaterialModelInfo,
-                                self.pointerToGauss,                               # eltype
-                                self.pointerToSh,
-                                self.pointerToShj,
-                                self.pointerToListArrayElementTypeInfo,
-                                self.pointerToHistry,                              # timdat
-                                self.pointerToListArrayRtimdat,
-                                self.pointerToListArrayNtimdat,
-                                self.pointerToListArrayNvisdat,
-                                self.pointerToMaxstp,
-                                self.pointerToDelt,
-                                self.pointerToAlfa,
-                                self.pointerToMaxit,
-                                self.pointerToNtdinit,
-                                self.pointerToLgdef,
-                                self.pointerToUtol,
-                                self.pointerToFtol,
-                                self.pointerToEtol,
-                                self.pointerToItmax,
-                                self.pointerToListArrayRgiter,                     # stresscmp
-                                self.pointerToSkew,                                # skew
-                                self.pointerToIprint,                              # ioinfo
-                                self.pointerToListArrayNcodat,
-                                self.pointerToListArrayNunits,
-                                self.pointerToListArrayNprint,
-                                self.pointerToIstatout,
-                                self.pointerToNstatout,
-                                self.asciiOutputFile,                              # files
-                                self.plotOutputFile,
-                                self.ucdOutputRoot,
-                                self.viscousStage,                                 # PETSc logging
+                                self.A,                # sparse
+                                self.rhs,
+                                self.sol,
+                                self.bextern,          # force
+                                self.btraction,
+                                self.bgravity,
+                                self.bconcForce,
+                                self.bintern,
+                                self.bresid,
+                                self.bwink,
+                                self.bwinkx,
+                                self.dispVec,
+                                self.dprev,
+                                self.nforce,
+                                self.grav,
+                                self.x,                # global
+                                self.d,
+                                self.deld,
+                                self.dcur,
+                                self.id,
+                                self.iwink,
+                                self.wink,
+                                self.nsysdat,
+                                self.iddmat,
+                                self.ibond,            # BC
+                                self.bond,
+                                self.dx,               # slip
+                                self.deldx,
+                                self.dxcur,
+                                self.diforc,
+                                self.idx,
+                                self.iwinkx,
+                                self.winkx,
+                                self.idslp,
+                                self.ipslp,
+                                self.idhist,
+                                self.fault,            # fault
+                                self.nfault,
+                                self.dfault,
+                                self.tfault,
+                                self.s,                # stiff
+                                self.stemp,
+                                self.state,            # element
+                                self.dstate,
+                                self.state0,
+                                self.dmat,
+                                self.iens,
+                                self.lm,
+                                self.lmx,
+                                self.lmf,
+                                self.ivfamily,
+                                self.npar,
+                                self.ielindx,
+                                self.tractionverts,    # traction
+                                self.tractionvals,
+                                self.gauss2d,
+                                self.sh2d,
+                                self.infetype2d,
+                                self.prop,             # material
+                                self.infmatmod,
+                                self.gauss,            # eltype
+                                self.sh,
+                                self.shj,
+                                self.infetype,
+                                self.histry,           # timdat
+                                self.rtimdat,
+                                self.ntimdat,
+                                self.nvisdat,
+                                self.maxstp,
+                                self.delt,
+                                self.alfa,
+                                self.maxit,
+                                self.ntdinit,
+                                self.lgdef,
+                                self.utol,
+                                self.ftol,
+                                self.etol,
+                                self.itmax,
+                                self.rgiter,           # stresscmp
+                                self.skew,             # skew
+                                self.iprint,           # ioinfo
+                                self.ncodat,
+                                self.nunits,
+                                self.nprint,
+                                self.istatout,
+                                self.nstatout,
+                                self.ofile,            # files
+                                self.pfile,
+                                self.ucdroot,
+                                self.viscousStage,     # PETSc logging
                                 self.iterateEvent,
                                 totalSteps,
                                 ltim,
@@ -2286,104 +2291,106 @@
                                 lgdefp,
                                 gtol)
                             ltim = 0
-                            if (totalSteps == pylith3d.intListRef(self.pointerToIprint, indexx-1)):
+                            if (totalSteps == pylith3d.intListRef(self.iprint, indexx-1)):
                                 pylith3d.outputMesh(self.fileRoot+'.'+str(totalSteps), self.mesh, self.sol)
                                 indexx += 1
                             if (indexx > icontr): indexx = icontr
-                print " Total number of equilibrium iterations        =",pylith3d.intListRef(self.pointerToListArrayNtimdat, 5)
-                print " Total number of stiffness matrix reformations =",pylith3d.intListRef(self.pointerToListArrayNtimdat, 6)
-                print " Total number of displacement subiterations    =",pylith3d.intListRef(self.pointerToListArrayNtimdat, 7)
-                pylith3d.viscos_cleanup(self.pointerToListArrayNtimdat, self.pointerToListArrayNprint, self.pointerToListArrayNunits)
+                print " Total number of equilibrium iterations        =",pylith3d.intListRef(self.ntimdat, 5)
+                print " Total number of stiffness matrix reformations =",pylith3d.intListRef(self.ntimdat, 6)
+                print " Total number of displacement subiterations    =",pylith3d.intListRef(self.ntimdat, 7)
+                pylith3d.viscos_cleanup(self.ntimdat, self.nprint, self.nunits)
             else:
                 pylith3d.viscos(
-                    self.A,self.rhs,self.sol,                          # sparse
-                    self.pointerToBextern,                             # force
-                    self.pointerToBtraction,
-                    self.pointerToBgravity,
-                    self.pointerToBconcForce,
-                    self.pointerToBintern,
-                    self.pointerToBresid,
-                    self.pointerToBwink,
-                    self.pointerToBwinkx,
-                    self.pointerToDispVec,
-                    self.pointerToDprev,
-                    self.pointerToListArrayNforce,
-                    self.pointerToListArrayGrav,
-                    self.pointerToX,                                   # global
-                    self.pointerToD,
-                    self.pointerToDeld,
-                    self.pointerToDcur,
-                    self.pointerToId,
-                    self.pointerToIwink,
-                    self.pointerToWink,
-                    self.pointerToListArrayNsysdat,
-                    self.pointerToListArrayIddmat,
-                    self.pointerToIbond,                               # BC
-                    self.pointerToBond,
-                    self.pointerToDx,                                  # slip
-                    self.pointerToDeldx,
-                    self.pointerToDxcur,
-                    self.pointerToDiforc,
-                    self.pointerToIdx,
-                    self.pointerToIwinkx,
-                    self.pointerToWinkx,
-                    self.pointerToIdslp,
-                    self.pointerToIpslp,
-                    self.pointerToIdhist,
-                    self.pointerToFault,                               # fault
-                    self.pointerToNfault,
-                    self.pointerToDfault,
-                    self.pointerToTfault,
-                    self.pointerToS,                                   # stiff
-                    self.pointerToStemp,
-                    self.pointerToState,                               # element
-                    self.pointerToDstate,
-                    self.pointerToState0,
-                    self.pointerToDmat,
-                    self.pointerToIens,
-                    self.pointerToLm,
-                    self.pointerToLmx,
-                    self.pointerToLmf,
-                    self.pointerToIvfamily,
-                    self.pointerToListArrayNpar,
-                    self.pointerToIelindx,
-                    self.pointerToTractionverts,                       # traction
-                    self.pointerToTractionvals,
-                    self.pointerToGauss2d,
-                    self.pointerToSh2d,
-                    self.pointerToListArrayElementTypeInfo2d,
-                    self.pointerToListArrayPropertyList,               # material
-                    self.pointerToMaterialModelInfo,
-                    self.pointerToGauss,                               # eltype
-                    self.pointerToSh,
-                    self.pointerToShj,
-                    self.pointerToListArrayElementTypeInfo,
-                    self.pointerToHistry,                              # timdat
-                    self.pointerToListArrayRtimdat,
-                    self.pointerToListArrayNtimdat,
-                    self.pointerToListArrayNvisdat,
-                    self.pointerToMaxstp,
-                    self.pointerToDelt,
-                    self.pointerToAlfa,
-                    self.pointerToMaxit,
-                    self.pointerToNtdinit,
-                    self.pointerToLgdef,
-                    self.pointerToUtol,
-                    self.pointerToFtol,
-                    self.pointerToEtol,
-                    self.pointerToItmax,
-                    self.pointerToListArrayRgiter,                     # stresscmp
-                    self.pointerToSkew,                                # skew
-                    self.pointerToIprint,                              # ioinfo
-                    self.pointerToListArrayNcodat,
-                    self.pointerToListArrayNunits,
-                    self.pointerToListArrayNprint,
-                    self.pointerToIstatout,
-                    self.pointerToNstatout,
-                    self.asciiOutputFile,                              # files
-                    self.plotOutputFile,
-                    self.ucdOutputRoot,
-                    self.viscousStage,                                 # PETSc logging
+                    self.A,                # sparse
+                    self.rhs,
+                    self.sol,
+                    self.bextern,          # force
+                    self.btraction,
+                    self.bgravity,
+                    self.bconcForce,
+                    self.bintern,
+                    self.bresid,
+                    self.bwink,
+                    self.bwinkx,
+                    self.dispVec,
+                    self.dprev,
+                    self.nforce,
+                    self.grav,
+                    self.x,                # global
+                    self.d,
+                    self.deld,
+                    self.dcur,
+                    self.id,
+                    self.iwink,
+                    self.wink,
+                    self.nsysdat,
+                    self.iddmat,
+                    self.ibond,            # BC
+                    self.bond,
+                    self.dx,               # slip
+                    self.deldx,
+                    self.dxcur,
+                    self.diforc,
+                    self.idx,
+                    self.iwinkx,
+                    self.winkx,
+                    self.idslp,
+                    self.ipslp,
+                    self.idhist,
+                    self.fault,            # fault
+                    self.nfault,
+                    self.dfault,
+                    self.tfault,
+                    self.s,                # stiff
+                    self.stemp,
+                    self.state,            # element
+                    self.dstate,
+                    self.state0,
+                    self.dmat,
+                    self.iens,
+                    self.lm,
+                    self.lmx,
+                    self.lmf,
+                    self.ivfamily,
+                    self.npar,
+                    self.ielindx,
+                    self.tractionverts,    # traction
+                    self.tractionvals,
+                    self.gauss2d,
+                    self.sh2d,
+                    self.infetype2d,
+                    self.prop,             # material
+                    self.infmatmod,
+                    self.gauss,            # eltype
+                    self.sh,
+                    self.shj,
+                    self.infetype,
+                    self.histry,           # timdat
+                    self.rtimdat,
+                    self.ntimdat,
+                    self.nvisdat,
+                    self.maxstp,
+                    self.delt,
+                    self.alfa,
+                    self.maxit,
+                    self.ntdinit,
+                    self.lgdef,
+                    self.utol,
+                    self.ftol,
+                    self.etol,
+                    self.itmax,
+                    self.rgiter,           # stresscmp
+                    self.skew,             # skew
+                    self.iprint,           # ioinfo
+                    self.ncodat,
+                    self.nunits,
+                    self.nprint,
+                    self.istatout,
+                    self.nstatout,
+                    self.ofile,            # files
+                    self.pfile,
+                    self.ucdroot,
+                    self.viscousStage,     # PETSc logging
                     self.iterateEvent)
         pylith3d.destroyPETScMat(self.A,self.rhs,self.sol)
 

Modified: short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/constants.py
===================================================================
--- short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/constants.py	2007-04-04 20:28:40 UTC (rev 6508)
+++ short/3D/PyLith/branches/pylith-0.8/pylith3d/pylith3d/constants.py	2007-04-05 21:54:55 UTC (rev 6509)
@@ -57,7 +57,7 @@
 
 # Invariant parameters related to element type
 maxElementNodes = 20
-maxElementNodes2d = 4
+nsnodesmax = 4
 
 
 # Invariant parameters related to material model



More information about the cig-commits mailing list