Run issue in Poroelasticity Test

Hello,

I am trying to run a test example (included with ASCII mesh poro_test.zip (3.1 KB) ) on a poroelastic test build using the following branch: https://github.com/josimarsilva/pylith/tree/rlwalker/feature-poroelasticity

Upon run I get an error with the following traceback:

Traceback (most recent call last):
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/apps/PetscApplication.py", line 74, in onComputeNodes
    self.main(*args, **kwds)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/apps/PyLithApp.py", line 114, in main
    self.problem.preinitialize(mesh)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/problems/TimeDependent.py", line 104, in preinitialize
    Problem.preinitialize(self, mesh)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/problems/Problem.py", line 157, in preinitialize
    material.preinitialize(mesh)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/materials/Poroelasticity.py", line 81, in preinitialize
    self.rheology.preinitialize(mesh)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/materials/IsotropicLinearPoroelasticity.py", line 63, in preinitialize
    RheologyPoroelasticity.preinitialize(self, mesh)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/materials/RheologyPoroelasticity.py", line 58, in preinitialize
    self._createModuleObj()
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/materials/IsotropicLinearPoroelasticity.py", line 74, in _createModuleObj
    ModuleLinearPoroelasticity.__init__(self)
  File "/home/dockimble/build/pylith/lib/python2.7/site-packages/pylith/materials/materials.py", line 428, in __init__
    def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract")
AttributeError: No constructor defined - class is abstract

Any help with respect to what I am doing wrong would be greatly appreciated.

Robert

The problem is that the compiler thinks your C++ IsotropicLinearPoroelasticity object is abstract.
Look at the SWIG output when you build the materials module. When it runs SWIG, you should see it output which methods are still abstract (defined as pure virtual methods in the RheologyPoroelasticity parent class), that need to be implemented in the IsotropicLinearPoroelasticity class.

I think I have the abstract class issue handled for the same branch. Running the same test as before (file included), only removing all boundary conditions, results in a PETSc error reporting that, “no coordinate dimension exists for this DS” (message also included). I believe this to be related to the auxiliary fields not setting up correctly.
poro_test.zip (4.8 KB)

Nevermind, I found it; createAuxiliaryField in Poroelasticity.cc under libsrc/pylith/materials didn’t call " auxiliaryField->createDiscretization();"