예제 #1
0
    def preinitialize(self, mesh):
        """
    Do pre-initialization setup.
    """
        from pylith.mpi.Communicator import mpi_comm_world
        comm = mpi_comm_world()

        if 0 == comm.rank:
            self._info.log("Pre-initializing fault '%s'." % self.label())
        FaultCohesive.preinitialize(self, mesh)
        Integrator.preinitialize(self, mesh)

        ModuleFaultCohesiveDyn.quadrature(self, self.faultQuadrature)

        if mesh.dimension() == 2:
            self.availableFields['vertex']['info'] += ["strike_dir"]
        elif mesh.dimension() == 3:
            self.availableFields['vertex']['info'] += ["strike_dir", "dip_dir"]

        if not isinstance(self.tract, NullComponent):
            self.tract.preinitialize(mesh)
            self.availableFields['vertex'][
                'info'] += self.tract.availableFields['vertex']['info']

        self.availableFields['vertex']['info'] += \
            self.friction.availableFields['vertex']['info']
        self.availableFields['vertex']['data'] += \
            self.friction.availableFields['vertex']['data']
        return
예제 #2
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()    

    if 0 == comm.rank:
      self._info.log("Pre-initializing fault '%s'." % self.label())
    FaultCohesive.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)

    ModuleFaultCohesiveDyn.quadrature(self, self.faultQuadrature)

    if mesh.dimension() == 2:
      self.availableFields['vertex']['info'] += ["strike_dir"]
    elif mesh.dimension() == 3:
      self.availableFields['vertex']['info'] += ["strike_dir",
                                                 "dip_dir"]

    if not isinstance(self.tract, NullComponent):
      self.tract.preinitialize(mesh)
      self.availableFields['vertex']['info'] += self.tract.availableFields['vertex']['info']

    self.availableFields['vertex']['info'] += \
        self.friction.availableFields['vertex']['info']
    self.availableFields['vertex']['data'] += \
        self.friction.availableFields['vertex']['data']
    return
예제 #3
0
 def preinitialize(self, mesh):
     """
 Do pre-initialization setup.
 """
     BoundaryCondition.preinitialize(self, mesh)
     Integrator.preinitialize(self, mesh)
     return
예제 #4
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Pre-initializing fault '%s'." % self.label())
    FaultCohesive.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)

    ModuleFaultCohesiveKin.quadrature(self, self.faultQuadrature)

    for eqsrc in self.eqsrcs.components():
      eqsrc.preinitialize()
    ModuleFaultCohesiveKin.eqsrcs(self, self.eqsrcs.inventory.facilityNames(),
                                  self.eqsrcs.components())

    for name in self.eqsrcs.inventory.facilityNames():
      self.availableFields['vertex']['info'] += ["final_slip_%s" % name]
      self.availableFields['vertex']['info'] += ["slip_time_%s" % name]

    if mesh.dimension() == 2:
      self.availableFields['vertex']['info'] += ["strike_dir"]
    elif mesh.dimension() == 3:
      self.availableFields['vertex']['info'] += ["strike_dir",
                                                 "dip_dir"]
    return
예제 #5
0
파일: PointForce.py 프로젝트: jjle/pylith
 def preinitialize(self, mesh):
   """
   Do pre-initialization setup.
   """
   BoundaryCondition.preinitialize(self, mesh)
   Integrator.preinitialize(self, mesh)
   return
예제 #6
0
    def preinitialize(self, mesh):
        """
    Do pre-initialization setup.
    """
        from pylith.mpi.Communicator import mpi_comm_world
        comm = mpi_comm_world()

        if 0 == comm.rank:
            self._info.log("Pre-initializing fault '%s'." % self.label())
        FaultCohesive.preinitialize(self, mesh)
        Integrator.preinitialize(self, mesh)

        ModuleFaultCohesiveKin.quadrature(self, self.faultQuadrature)

        for eqsrc in self.eqsrcs.components():
            eqsrc.preinitialize()
        ModuleFaultCohesiveKin.eqsrcs(self,
                                      self.eqsrcs.inventory.facilityNames(),
                                      self.eqsrcs.components())

        for name in self.eqsrcs.inventory.facilityNames():
            self.availableFields['vertex']['info'] += ["final_slip_%s" % name]
            self.availableFields['vertex']['info'] += ["slip_time_%s" % name]

        if mesh.dimension() == 2:
            self.availableFields['vertex']['info'] += ["strike_dir"]
        elif mesh.dimension() == 3:
            self.availableFields['vertex']['info'] += ["strike_dir", "dip_dir"]
        return
예제 #7
0
 def __init__(self, name="absorbingdampers"):
     """
 Constructor.
 """
     BoundaryCondition.__init__(self, name)
     Integrator.__init__(self)
     self._loggingPrefix = "AbBC "
     return
예제 #8
0
파일: PointForce.py 프로젝트: jjle/pylith
 def __init__(self, name="pointforce"):
   """
   Constructor.
   """
   BoundaryCondition.__init__(self, name)
   Integrator.__init__(self)
   self._loggingPrefix = "PFBC "
   return
예제 #9
0
파일: Neumann.py 프로젝트: jjle/pylith
 def finalize(self):
   """
   Cleanup.
   """
   BoundaryCondition.finalize(self)
   Integrator.finalize(self)
   self._modelMemoryUse()
   return
예제 #10
0
 def __init__(self, name="pointforce"):
     """
 Constructor.
 """
     BoundaryCondition.__init__(self, name)
     Integrator.__init__(self)
     self._loggingPrefix = "PFBC "
     return
예제 #11
0
 def finalize(self):
     """
 Cleanup.
 """
     BoundaryCondition.finalize(self)
     Integrator.finalize(self)
     self._modelMemoryUse()
     return
예제 #12
0
 def __init__(self, name="absorbingdampers"):
   """
   Constructor.
   """
   BoundaryCondition.__init__(self, name)
   Integrator.__init__(self)
   self._loggingPrefix = "AbBC "
   return
예제 #13
0
 def finalize(self):
   """
   Cleanup.
   """
   FaultCohesive.finalize(self)
   Integrator.finalize(self)
   self.output.close()
   self.output.finalize()
   return
예제 #14
0
 def finalize(self):
     """
 Cleanup.
 """
     FaultCohesive.finalize(self)
     Integrator.finalize(self)
     self.output.close()
     self.output.finalize()
     return
예제 #15
0
 def preinitialize(self, mesh):
   """
   Do pre-initialization setup.
   """
   BoundaryCondition.preinitialize(self, mesh)
   Integrator.preinitialize(self, mesh)
   self.bcQuadrature.preinitialize(mesh.coordsys().spaceDim())
   self.quadrature(self.bcQuadrature)
   self.createSubMesh(mesh)
   return
예제 #16
0
 def preinitialize(self, mesh):
     """
 Do pre-initialization setup.
 """
     BoundaryCondition.preinitialize(self, mesh)
     Integrator.preinitialize(self, mesh)
     self.bcQuadrature.preinitialize(mesh.coordsys().spaceDim())
     self.quadrature(self.bcQuadrature)
     self.createSubMesh(mesh)
     return
예제 #17
0
 def finalize(self):
   """
   Cleanup.
   """
   for eqsrc in self.eqsrcs.components():
     eqsrc.finalize()
   FaultCohesive.finalize(self)
   Integrator.finalize(self)
   self.output.close()
   self.output.finalize()
   return
예제 #18
0
 def finalize(self):
     """
 Cleanup.
 """
     for eqsrc in self.eqsrcs.components():
         eqsrc.finalize()
     FaultCohesive.finalize(self)
     Integrator.finalize(self)
     self.output.close()
     self.output.finalize()
     return
예제 #19
0
  def poststep(self, t, dt, fields):
    """
    Hook for doing stuff after advancing time step.
    """
    logEvent = "%spoststep" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)

    Integrator.poststep(self, t, dt, fields)
    FaultCohesive.poststep(self, t, dt, fields)

    self._eventLogger.eventEnd(logEvent)
    return
예제 #20
0
  def poststep(self, t, dt, fields):
    """
    Hook for doing stuff after advancing time step.
    """
    logEvent = "%spoststep" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)

    Integrator.poststep(self, t, dt, fields)
    FaultCohesive.poststep(self, t, dt, fields)

    self._eventLogger.eventEnd(logEvent)
    return
예제 #21
0
  def verifyConfiguration(self):
    """
    Verify compatibility of configuration.
    """
    logEvent = "%sverify" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)

    FaultCohesive.verifyConfiguration(self)
    Integrator.verifyConfiguration(self)
    ModuleFaultCohesiveImpulses.verifyConfiguration(self, self.mesh())

    self._eventLogger.eventEnd(logEvent)
    return
예제 #22
0
    def verifyConfiguration(self):
        """
    Verify compatibility of configuration.
    """
        logEvent = "%sverify" % self._loggingPrefix
        self._eventLogger.eventBegin(logEvent)

        FaultCohesive.verifyConfiguration(self)
        Integrator.verifyConfiguration(self)
        ModuleFaultCohesiveDyn.verifyConfiguration(self, self.mesh())

        self._eventLogger.eventEnd(logEvent)
        return
예제 #23
0
    def __init__(self, name="faultcohesiveimpulses"):
        """
    Initialize configuration.
    """
        FaultCohesive.__init__(self, name)
        Integrator.__init__(self)
        self._loggingPrefix = "CoIm "

        self.availableFields = {
            "vertex": {"info": ["normal_dir", "impulse_amplitude", "area"], "data": ["slip", "traction_change"]},
            "cell": {"info": ["partition"], "data": []},
        }
        return
예제 #24
0
  def initialize(self, totalTime, numTimeSteps, normalizer):
    """
    Initialize cohesive elements.
    """
    logEvent = "%sinit" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)
    self._info.log("Initializing fault '%s'." % self.label())

    Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
    
    FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)

    self._eventLogger.eventEnd(logEvent)
    return
예제 #25
0
  def initialize(self, totalTime, numTimeSteps, normalizer):
    """
    Initialize cohesive elements.
    """
    logEvent = "%sinit" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)
    self._info.log("Initializing fault '%s'." % self.label())

    Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
    
    FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)

    self._eventLogger.eventEnd(logEvent)
    return
예제 #26
0
 def __init__(self, name="neumann"):
   """
   Constructor.
   """
   BoundaryCondition.__init__(self, name)
   Integrator.__init__(self)
   TimeDependent.__init__(self)
   self._loggingPrefix = "NeBC "
   self.availableFields = \
       {'vertex': \
          {'info': [],
           'data': []},
        'cell': \
          {'info': [],
           'data': []}}
   return
예제 #27
0
    def verifyConfiguration(self):
        """
    Verify compatibility of configuration.
    """
        logEvent = "%sverify" % self._loggingPrefix
        self._eventLogger.eventBegin(logEvent)

        FaultCohesive.verifyConfiguration(self)
        Integrator.verifyConfiguration(self)
        ModuleFaultCohesiveKin.verifyConfiguration(self, self.mesh())

        for eqsrc in self.eqsrcs.components():
            eqsrc.verifyConfiguration()

        self._eventLogger.eventEnd(logEvent)
        return
예제 #28
0
  def verifyConfiguration(self):
    """
    Verify compatibility of configuration.
    """
    logEvent = "%sverify" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)

    FaultCohesive.verifyConfiguration(self)
    Integrator.verifyConfiguration(self)
    ModuleFaultCohesiveKin.verifyConfiguration(self, self.mesh())

    for eqsrc in self.eqsrcs.components():
      eqsrc.verifyConfiguration()
    
    self._eventLogger.eventEnd(logEvent)
    return
예제 #29
0
파일: Neumann.py 프로젝트: jjle/pylith
 def __init__(self, name="neumann"):
   """
   Constructor.
   """
   BoundaryCondition.__init__(self, name)
   Integrator.__init__(self)
   TimeDependent.__init__(self)
   self._loggingPrefix = "NeBC "
   self.availableFields = \
       {'vertex': \
          {'info': [],
           'data': []},
        'cell': \
          {'info': [],
           'data': []}}
   return
예제 #30
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    self._info.log("Pre-initializing fault '%s'." % self.label())
    FaultCohesive.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)

    ModuleFaultCohesiveTract.quadrature(self, self.faultQuadrature)

    if mesh.dimension() == 2:
      self.availableFields['cell']['info'] += ["strike_dir"]
    elif mesh.dimension() == 3:
      self.availableFields['cell']['info'] += ["strike_dir",
                                               "dip_dir"]

    return
예제 #31
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    self._info.log("Pre-initializing fault '%s'." % self.label())
    FaultCohesive.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)

    ModuleFaultCohesiveTract.quadrature(self, self.faultQuadrature)

    if mesh.dimension() == 2:
      self.availableFields['cell']['info'] += ["strike_dir"]
    elif mesh.dimension() == 3:
      self.availableFields['cell']['info'] += ["strike_dir",
                                               "dip_dir"]

    return
예제 #32
0
    def initialize(self, totalTime, numTimeSteps, normalizer):
        """
    Initialize PointForce boundary condition.
    """
        logEvent = "%sinit" % self._loggingPrefix
        self._eventLogger.eventBegin(logEvent)

        from pylith.mpi.Communicator import mpi_comm_world
        comm = mpi_comm_world()

        if 0 == comm.rank:
            self._info.log("Initializing point forces '%s'." % self.label())

        Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
        BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)

        self._eventLogger.eventEnd(logEvent)
        return
예제 #33
0
  def __init__(self, name="faultcohesivedyn"):
    """
    Initialize configuration.
    """
    FaultCohesive.__init__(self, name)
    Integrator.__init__(self)
    self._loggingPrefix = "CoTr "

    self.availableFields = \
        {'vertex': \
           {'info': [],
            'data': []},
         'cell': \
           {'info': ["normal_dir"],
            'data': ["slip",
                     "traction"]},
}
    return
예제 #34
0
    def __init__(self, name="faultcohesivedyn"):
        """
    Initialize configuration.
    """
        FaultCohesive.__init__(self, name)
        Integrator.__init__(self)
        self._loggingPrefix = "CoDy "

        self.availableFields = \
            {'vertex': \
               {'info': ["normal_dir"],
                'data': ["slip",
                         "slip_rate",
                         "traction"]},
             'cell': \
               {'info': ["partition"],
                'data': []}}
        return
예제 #35
0
    def initialize(self, totalTime, numTimeSteps, normalizer):
        """
    Initialize cohesive elements.
    """
        logEvent = "%sinit" % self._loggingPrefix
        self._eventLogger.eventBegin(logEvent)

        from pylith.mpi.Communicator import mpi_comm_world
        comm = mpi_comm_world()

        if 0 == comm.rank:
            self._info.log("Initializing fault '%s'." % self.label())

        Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
        FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)

        self._eventLogger.eventEnd(logEvent)
        return
예제 #36
0
파일: PointForce.py 프로젝트: jjle/pylith
  def initialize(self, totalTime, numTimeSteps, normalizer):
    """
    Initialize PointForce boundary condition.
    """
    logEvent = "%sinit" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)

    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Initializing point forces '%s'." % self.label())

    Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
    BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)

    self._eventLogger.eventEnd(logEvent)    
    return
예제 #37
0
  def initialize(self, totalTime, numTimeSteps, normalizer):
    """
    Initialize cohesive elements.
    """
    logEvent = "%sinit" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)

    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Initializing fault '%s'." % self.label())

    Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
    FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)

    self._eventLogger.eventEnd(logEvent)
    return
예제 #38
0
  def __init__(self, name="faultcohesivekin"):
    """
    Initialize configuration.
    """
    FaultCohesive.__init__(self, name)
    Integrator.__init__(self)
    self._loggingPrefix = "CoKi "

    self.availableFields = \
        {'vertex': \
           {'info': ["normal_dir",
                     "final_slip",
                     "slip_time"],
            'data': ["slip",
                     "traction_change"]},
         'cell': \
           {'info': ["partition"],
            'data': []}}
    return
예제 #39
0
    def verifyConfiguration(self):
        """
    Verify compatibility of configuration.
    """
        logEvent = "%sverify" % self._loggingPrefix
        self._eventLogger.eventBegin(logEvent)

        BoundaryCondition.verifyConfiguration(self, self.mesh())
        Integrator.verifyConfiguration(self)
        if self.bcQuadrature.cellDim() != self.mesh().dimension() - 1:
            raise ValueError, "Quadrature scheme and mesh are incompatible.\n" "Dimension for quadrature: %d\n" "Dimension of mesh boundary '%s': %d" % (
                self.bcQuadrature.cellDim,
                self.label(),
                self.mesh().dimension() - 1,
            )
        ModuleAbsorbingDampers.verifyConfiguration(self, self.mesh())

        self._eventLogger.eventEnd(logEvent)
        return
예제 #40
0
  def __init__(self, name="faultcohesiveimpulses"):
    """
    Initialize configuration.
    """
    FaultCohesive.__init__(self, name)
    Integrator.__init__(self)
    self._loggingPrefix = "CoIm "

    self.availableFields = \
        {'vertex': \
           {'info': ["normal_dir",
                     "impulse_amplitude",
                     "area",],
            'data': ["slip",
                     "traction_change"]},
         'cell': \
           {'info': ["partition"],
            'data': []}}
    return
예제 #41
0
  def __init__(self, name="faultcohesiveimpulses"):
    """
    Initialize configuration.
    """
    FaultCohesive.__init__(self, name)
    Integrator.__init__(self)
    self._loggingPrefix = "CoIm "

    self.availableFields = \
        {'vertex': \
           {'info': ["normal_dir",
                     "impulse_amplitude",
                     "area",],
            'data': ["slip",
                     "traction_change"]},
         'cell': \
           {'info': ["partition"],
            'data': []}}
    return
예제 #42
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Pre-initializing fault '%s'." % self.label())
    FaultCohesive.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)

    ModuleFaultCohesiveImpulses.quadrature(self, self.faultQuadrature)

    if mesh.dimension() == 2:
      self.availableFields['vertex']['info'] += ["strike_dir"]
    elif mesh.dimension() == 3:
      self.availableFields['vertex']['info'] += ["strike_dir",
                                                 "dip_dir"]
    return
예제 #43
0
    def verifyConfiguration(self):
        """
    Verify compatibility of configuration.
    """
        logEvent = "%sverify" % self._loggingPrefix
        self._eventLogger.eventBegin(logEvent)

        BoundaryCondition.verifyConfiguration(self, self.mesh())
        Integrator.verifyConfiguration(self)
        if self.bcQuadrature.cellDim() != self.mesh().dimension() - 1:
            raise ValueError, \
                  "Quadrature scheme and mesh are incompatible.\n" \
                  "Dimension for quadrature: %d\n" \
                  "Dimension of mesh boundary '%s': %d" % \
                  (self.bcQuadrature.cellDim,
                   self.label(), self.mesh().dimension()-1)
        ModuleAbsorbingDampers.verifyConfiguration(self, self.mesh())

        self._eventLogger.eventEnd(logEvent)
        return
예제 #44
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Pre-initializing fault '%s'." % self.label())
    FaultCohesive.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)

    ModuleFaultCohesiveImpulses.quadrature(self, self.faultQuadrature)

    if mesh.dimension() == 2:
      self.availableFields['vertex']['info'] += ["strike_dir"]
    elif mesh.dimension() == 3:
      self.availableFields['vertex']['info'] += ["strike_dir",
                                                 "dip_dir"]
    return
예제 #45
0
파일: Neumann.py 프로젝트: jjle/pylith
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    BoundaryCondition.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)
    self.bcQuadrature.preinitialize(mesh.coordsys().spaceDim())
    self.quadrature(self.bcQuadrature)
    self.createSubMesh(mesh)
    self.output.preinitialize(self)

    fields = []
    if not isinstance(self.inventory.dbInitial, NullComponent):
      fields += ["initial_value"]
    if not isinstance(self.inventory.dbRate, NullComponent):
      fields += ["rate_of_change", "rate_start_time"]
    if not isinstance(self.inventory.dbChange, NullComponent):
      fields += ["change_in_value", "change_start_time"]
    self.availableFields['cell']['info'] += fields
    return
예제 #46
0
  def preinitialize(self, mesh):
    """
    Do pre-initialization setup.
    """
    BoundaryCondition.preinitialize(self, mesh)
    Integrator.preinitialize(self, mesh)
    self.bcQuadrature.preinitialize(mesh.coordsys().spaceDim())
    self.quadrature(self.bcQuadrature)
    self.createSubMesh(mesh)
    self.output.preinitialize(self)

    fields = []
    if not isinstance(self.inventory.dbInitial, NullComponent):
      fields += ["initial_value"]
    if not isinstance(self.inventory.dbRate, NullComponent):
      fields += ["rate_of_change", "rate_start_time"]
    if not isinstance(self.inventory.dbChange, NullComponent):
      fields += ["change_in_value", "change_start_time"]
    self.availableFields['cell']['info'] += fields
    return
예제 #47
0
  def initialize(self, totalTime, numTimeSteps, normalizer):
    """
    Initialize Neumann boundary condition.
    """
    logEvent = "%sinit" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)
    
    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Initializing Neumann boundary '%s'." % self.label())

    Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
    BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)

    self.output.initialize(normalizer, self.bcQuadrature)
    self.output.writeInfo()

    self._eventLogger.eventEnd(logEvent)
    return
예제 #48
0
파일: Neumann.py 프로젝트: jjle/pylith
  def initialize(self, totalTime, numTimeSteps, normalizer):
    """
    Initialize Neumann boundary condition.
    """
    logEvent = "%sinit" % self._loggingPrefix
    self._eventLogger.eventBegin(logEvent)
    
    from pylith.mpi.Communicator import mpi_comm_world
    comm = mpi_comm_world()

    if 0 == comm.rank:
      self._info.log("Initializing Neumann boundary '%s'." % self.label())

    Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
    BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)

    self.output.initialize(normalizer, self.bcQuadrature)
    self.output.writeInfo()

    self._eventLogger.eventEnd(logEvent)
    return