:group: pyclaw .. _pyclaw_geometry: *************** PyClaw Geometry *************** The PyClaw geometry package contains the classes used to define the geometry of a :class:`~pyclaw.solution.Solution` object. The base container for all other geometry is the :class:`~pyclaw.geometry.Domain` object. It contains a list of :class:`~pyclaw.geometry.Patch` objects that reside inside of the :class:`~pyclaw.geometry.Domain`. .. image:: images/geometry/domain_structure_1.* :class:`~pyclaw.geometry.Patch` represents a piece of the domain that could be a different resolution than the others, have a different coordinate mapping, or be used to construct complex domain shapes. .. image:: images/geometry/domain_structure_2.* It contains :class:`~pyclaw.geometry.Dimension` objects that define the extent of the :class:`~pyclaw.geometry.Patch` and the number of grid cells in each dimension. :class:`~pyclaw.geometry.Patch` also contains a reference to a nearly identical :class:`~pyclaw.geometry.Grid` object. The :class:`~pyclaw.geometry.Grid` object also contains a set of :class:`~pyclaw.geometry.Dimension` objects describing its extent and number of grid cells. The :class:`~pyclaw.geometry.Grid` is meant to represent the geometry of the data local to the process in the case of a parallel run. In a serial simulation the :class:`~pyclaw.geometry.Patch` and :class:`~pyclaw.geometry.Grid` share the same dimensions. In the case where only one :class:`~pyclaw.geometry.Patch` object exists in a :class:`~pyclaw.geometry.Domain` but it is run with four processes in parallel, the :class:`~pyclaw.geometry.Domain` hierarchy could look like: .. image:: images/geometry/domain_structure_3.* In the most complex case with multiple patches and a parallel run we may have the following: .. image:: images/geometry/domain_structure_5.* .. _pyclaw_serial_geometry: Serial Geometry Objects ####################### :class:`pyclaw.geometry.Domain` ================================= .. autoclass:: clawpack.pyclaw.geometry.Domain :members: :member-order: groupwise :class:`pyclaw.geometry.Patch` ================================= .. autoclass:: clawpack.pyclaw.geometry.Patch :members: :member-order: groupwise :show-inheritance: :class:`pyclaw.geometry.Grid` ================================= .. autoclass:: clawpack.pyclaw.geometry.Grid :members: :member-order: groupwise :class:`pyclaw.geometry.Dimension` ================================== .. autoclass:: clawpack.pyclaw.geometry.Dimension :members: :member-order: groupwise .. _pyclaw_parallel_geometry: Parallel Geometry Objects ######################### :class:`petclaw.geometry.Domain` =================================== .. autoclass:: clawpack.petclaw.geometry.Domain :members: :member-order: groupwise :show-inheritance: :class:`petclaw.geometry.Patch` =============================== .. autoclass:: clawpack.petclaw.geometry.Patch :members: :member-order: groupwise :show-inheritance: