Пример #1
0
 def setUp(self):
     """
 Setup test subject.
 """
     from pylith.friction.StaticFriction import StaticFriction
     self.friction = StaticFriction()
     return
Пример #2
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)
Пример #3
0
 def setUp(self):
     """
 Setup test subject.
 """
     self.friction = StaticFriction()
     return