Ejemplo n.º 1
0
 def setUp(self):
     """
 Setup test subject.
 """
     from pylith.friction.StaticFriction import StaticFriction
     self.friction = StaticFriction()
     return
Ejemplo n.º 2
0
 def setUp(self):
   """
   Setup test subject.
   """
   from pylith.friction.StaticFriction import StaticFriction
   self.friction = StaticFriction()
   return
Ejemplo n.º 3
0
  def _initialize(self):
    """
    Initialize fault.
    """
    dt = 2.4
    
    from spatialdata.units.Nondimensional import Nondimensional
    normalizer = Nondimensional()
    normalizer._configure()

    # Setup mesh
    cs = CSCart()
    cs.inventory.spaceDim = 2
    cs._configure()

    from pylith.meshio.MeshIOAscii import MeshIOAscii
    importer = MeshIOAscii()
    importer.inventory.filename = "data/tri3.mesh"
    importer.inventory.coordsys = cs
    importer._configure()
    mesh = importer.read(debug=False, interpolate=False)

    # Setup quadrature
    from pylith.feassemble.FIATSimplex import FIATSimplex
    cell = FIATSimplex()
    cell.inventory.dimension = 1
    cell.inventory.degree = 1
    cell.inventory.order = 1
    cell._configure()
    from pylith.feassemble.Quadrature import Quadrature
    quadrature = Quadrature()
    quadrature.inventory.cell = cell
    quadrature._configure()

    # Setup rupture info
    from spatialdata.spatialdb.SimpleDB import SimpleDB
    from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
    ioTractions = SimpleIOAscii()
    ioTractions.inventory.filename = "data/tri3_initialtractions.spatialdb"
    ioTractions._configure()
    dbTractions = SimpleDB()
    dbTractions.inventory.iohandler = ioTractions
    dbTractions.inventory.label = "initial tractions"
    dbTractions._configure()
    from pylith.faults.TractPerturbation import TractPerturbation
    tract = TractPerturbation()
    tract.inventory.dbInitial = dbTractions
    tract._configure()

    ioFriction = SimpleIOAscii()
    ioFriction.inventory.filename = "data/tri3_staticfriction.spatialdb"
    ioFriction._configure()
    dbFriction = SimpleDB()
    dbFriction.inventory.iohandler = ioFriction
    dbFriction.inventory.label = "friction"
    dbFriction._configure()
    
    from pylith.friction.StaticFriction import StaticFriction
    friction = StaticFriction()
    friction.inventory.label = "Static friction"
    friction.inventory.dbProperties = dbFriction
    friction._configure()

    # Setup fault
    fault = FaultCohesiveDyn()
    fault.inventory.output.inventory.writer._configure()
    fault.inventory.output._configure()
    fault.inventory.matId = 10
    fault.inventory.faultLabel = "fault"
    fault.inventory.upDir = [0, 0, 1]
    fault.inventory.faultQuadrature = quadrature
    fault.inventory.tract = tract
    fault.inventory.friction = friction
    fault._configure()

    nvertices = fault.numVerticesNoMesh(mesh)
    firstFaultVertex = 0
    firstLagrangeVertex = nvertices
    firstFaultCell      = 2*nvertices
    fault.adjustTopology(mesh, firstFaultVertex, firstLagrangeVertex,
                         firstFaultCell)
    from pylith.topology.topology import MeshOps_nondimensionalize
    MeshOps_nondimensionalize(mesh, normalizer)

    fault.preinitialize(mesh)
    fault.timeStep(dt)
    fault.verifyConfiguration()
    from pyre.units.time import s
    fault.initialize(totalTime=0.0*s, numTimeSteps=1, normalizer=normalizer)

    # Setup fields
    from pylith.topology.SolutionFields import SolutionFields
    fields = SolutionFields(mesh)
    fields.add("residual", "residual")
    fields.add("dispIncr(t->t+dt)", "displacement_increment")
    fields.add("disp(t)", "displacement")
    fields.add("velocity(t)", "velocity")
    fields.solutionName("dispIncr(t->t+dt)")

    residual = fields.get("residual")
    residual.subfieldAdd("displacement", cs.spaceDim(), residual.VECTOR)
    residual.subfieldAdd("lagrange_multiplier", cs.spaceDim(), residual.VECTOR)
    residual.subfieldsSetup()
    residual.setupSolnChart()
    residual.setupSolnDof(cs.spaceDim())
    fault.setupSolnDof(residual)
    residual.allocate()
    residual.zero()

    fields.copyLayout("residual")
    
    return (mesh, fault, fields)
Ejemplo n.º 4
0
class TestFrictionModel(unittest.TestCase):
  """
  Unit testing of Material object.
  """

  def setUp(self):
    """
    Setup test subject.
    """
    from pylith.friction.StaticFriction import StaticFriction
    self.friction = StaticFriction()
    return
    

  def testLabel(self):
    """
    Test label().
    """
    label = "friction abc"
    self.friction.label(label)
    self.assertEqual(label, self.friction.label())
    return


  def testTimeStep(self):
    """
    Test timeStep().
    """
    dt = 0.5
    self.friction.timeStep(dt)
    self.assertEqual(dt, self.friction.timeStep())
    return


  def testDBProperties(self):
    """
    Test dbProperties().
    """
    from spatialdata.spatialdb.SimpleDB import SimpleDB
    from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
    iohandler = SimpleIOAscii()
    iohandler.inventory.filename = "data/staticfriction.spatialdb"
    iohandler._configure()
    db = SimpleDB()
    db.inventory.label = "friction properties"
    db.inventory.iohandler = iohandler
    db._configure()

    self.friction.dbProperties(db)

    # No test of result.
    return


  def testDBInitialState(self):
    """
    Test dbInitialState().
    """
    from spatialdata.spatialdb.SimpleDB import SimpleDB
    from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
    iohandler = SimpleIOAscii()
    iohandler.inventory.filename = "data/staticfriction.spatialdb"
    iohandler._configure()
    db = SimpleDB()
    db.inventory.label = "friction properties"
    db.inventory.iohandler = iohandler
    db._configure()

    self.friction.dbInitialState(db)

    # No test of result.
    return


  def testNormalizer(self):
    """
    Test normalizer().
    """
    from spatialdata.units.Nondimensional import Nondimensional
    normalizer = Nondimensional()
    normalizer._configure()


    self.friction.normalizer(normalizer)

    # No test of result.
    return
Ejemplo n.º 5
0
    def _initialize(self):
        """
    Initialize fault.
    """
        dt = 2.4

        from spatialdata.units.Nondimensional import Nondimensional
        normalizer = Nondimensional()
        normalizer._configure()

        # Setup mesh
        cs = CSCart()
        cs.inventory.spaceDim = 2
        cs._configure()

        from pylith.meshio.MeshIOAscii import MeshIOAscii
        importer = MeshIOAscii()
        importer.inventory.filename = "data/tri3.mesh"
        importer.inventory.coordsys = cs
        importer._configure()
        mesh = importer.read(debug=False, interpolate=False)

        # Setup quadrature
        from pylith.feassemble.FIATSimplex import FIATSimplex
        cell = FIATSimplex()
        cell.inventory.dimension = 1
        cell.inventory.degree = 1
        cell.inventory.order = 1
        cell._configure()
        from pylith.feassemble.Quadrature import Quadrature
        quadrature = Quadrature()
        quadrature.inventory.cell = cell
        quadrature._configure()

        # Setup rupture info
        from spatialdata.spatialdb.SimpleDB import SimpleDB
        from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
        ioTractions = SimpleIOAscii()
        ioTractions.inventory.filename = "data/tri3_initialtractions.spatialdb"
        ioTractions._configure()
        dbTractions = SimpleDB()
        dbTractions.inventory.iohandler = ioTractions
        dbTractions.inventory.label = "initial tractions"
        dbTractions._configure()
        from pylith.faults.TractPerturbation import TractPerturbation
        tract = TractPerturbation()
        tract.inventory.dbInitial = dbTractions
        tract._configure()

        ioFriction = SimpleIOAscii()
        ioFriction.inventory.filename = "data/tri3_staticfriction.spatialdb"
        ioFriction._configure()
        dbFriction = SimpleDB()
        dbFriction.inventory.iohandler = ioFriction
        dbFriction.inventory.label = "friction"
        dbFriction._configure()

        from pylith.friction.StaticFriction import StaticFriction
        friction = StaticFriction()
        friction.inventory.label = "Static friction"
        friction.inventory.dbProperties = dbFriction
        friction._configure()

        # Setup fault
        fault = FaultCohesiveDyn()
        fault.inventory.output.inventory.writer._configure()
        fault.inventory.output._configure()
        fault.inventory.matId = 10
        fault.inventory.faultLabel = "fault"
        fault.inventory.upDir = [0, 0, 1]
        fault.inventory.faultQuadrature = quadrature
        fault.inventory.tract = tract
        fault.inventory.friction = friction
        fault._configure()

        nvertices = fault.numVerticesNoMesh(mesh)
        firstFaultVertex = 0
        firstLagrangeVertex = nvertices
        firstFaultCell = 2 * nvertices
        fault.adjustTopology(mesh, firstFaultVertex, firstLagrangeVertex,
                             firstFaultCell)
        from pylith.topology.topology import MeshOps_nondimensionalize
        MeshOps_nondimensionalize(mesh, normalizer)

        fault.preinitialize(mesh)
        fault.timeStep(dt)
        fault.verifyConfiguration()
        from pyre.units.time import s
        fault.initialize(totalTime=0.0 * s,
                         numTimeSteps=1,
                         normalizer=normalizer)

        # Setup fields
        from pylith.topology.SolutionFields import SolutionFields
        fields = SolutionFields(mesh)
        fields.add("residual", "residual")
        fields.add("dispIncr(t->t+dt)", "displacement_increment")
        fields.add("disp(t)", "displacement")
        fields.add("velocity(t)", "velocity")
        fields.solutionName("dispIncr(t->t+dt)")

        residual = fields.get("residual")
        residual.subfieldAdd("displacement", cs.spaceDim(), residual.VECTOR)
        residual.subfieldAdd("lagrange_multiplier", cs.spaceDim(),
                             residual.VECTOR)
        residual.subfieldsSetup()
        residual.setupSolnChart()
        residual.setupSolnDof(cs.spaceDim())
        fault.setupSolnDof(residual)
        residual.allocate()
        residual.zero()

        fields.copyLayout("residual")

        return (mesh, fault, fields)
Ejemplo n.º 6
0
 def setUp(self):
     """
 Setup test subject.
 """
     self.friction = StaticFriction()
     return
Ejemplo n.º 7
0
class TestFrictionModel(unittest.TestCase):
    """
  Unit testing of Material object.
  """
    def setUp(self):
        """
    Setup test subject.
    """
        from pylith.friction.StaticFriction import StaticFriction
        self.friction = StaticFriction()
        return

    def testLabel(self):
        """
    Test label().
    """
        label = "friction abc"
        self.friction.label(label)
        self.assertEqual(label, self.friction.label())
        return

    def testTimeStep(self):
        """
    Test timeStep().
    """
        dt = 0.5
        self.friction.timeStep(dt)
        self.assertEqual(dt, self.friction.timeStep())
        return

    def testDBProperties(self):
        """
    Test dbProperties().
    """
        from spatialdata.spatialdb.SimpleDB import SimpleDB
        from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
        iohandler = SimpleIOAscii()
        iohandler.inventory.filename = "data/staticfriction.spatialdb"
        iohandler._configure()
        db = SimpleDB()
        db.inventory.label = "friction properties"
        db.inventory.iohandler = iohandler
        db._configure()

        self.friction.dbProperties(db)

        # No test of result.
        return

    def testDBInitialState(self):
        """
    Test dbInitialState().
    """
        from spatialdata.spatialdb.SimpleDB import SimpleDB
        from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
        iohandler = SimpleIOAscii()
        iohandler.inventory.filename = "data/staticfriction.spatialdb"
        iohandler._configure()
        db = SimpleDB()
        db.inventory.label = "friction properties"
        db.inventory.iohandler = iohandler
        db._configure()

        self.friction.dbInitialState(db)

        # No test of result.
        return

    def testNormalizer(self):
        """
    Test normalizer().
    """
        from spatialdata.units.Nondimensional import Nondimensional
        normalizer = Nondimensional()
        normalizer._configure()

        self.friction.normalizer(normalizer)

        # No test of result.
        return