MCPcopy Create free account
hub / github.com/NanoComp/meep / plot_boundaries

Function plot_boundaries

python/visualization.py:723–784  ·  view source on GitHub ↗
(
    sim: Simulation,
    ax: Axes,
    output_plane: Optional[Volume] = None,
    boundary_parameters: Optional[dict] = None,
)

Source from the content-addressed store, hash-verified

721
722
723def plot_boundaries(
724 sim: Simulation,
725 ax: Axes,
726 output_plane: Optional[Volume] = None,
727 boundary_parameters: Optional[dict] = None,
728) -> Axes:
729 # consolidate plotting parameters
730 if boundary_parameters is None:
731 boundary_parameters = default_boundary_parameters
732 else:
733 boundary_parameters = dict(default_boundary_parameters, **boundary_parameters)
734
735 import itertools
736
737 for boundary in sim.boundary_layers:
738 # boundary on all four sides
739 if boundary.direction == mp.ALL and boundary.side == mp.ALL:
740 if sim.dimensions == 1:
741 dims = [mp.X]
742 elif sim.dimensions == mp.CYLINDRICAL or sim.is_cylindrical:
743 dims = [mp.X, mp.Z]
744 elif sim.dimensions == 2:
745 dims = [mp.X, mp.Y]
746 elif sim.dimensions == 3:
747 dims = [mp.X, mp.Y, mp.Z]
748 else:
749 raise ValueError("Invalid simulation dimensions")
750 for permutation in itertools.product(dims, [mp.Low, mp.High]):
751 if ((permutation[0] == mp.X) and (permutation[1] == mp.Low)) and (
752 sim.dimensions == mp.CYLINDRICAL or sim.is_cylindrical
753 ):
754 continue
755 vol = get_boundary_volumes(sim, boundary.thickness, *permutation)
756 ax = plot_volume(
757 sim, ax, vol, output_plane, plotting_parameters=boundary_parameters
758 )
759 # boundary on only two of four sides
760 elif boundary.side == mp.ALL:
761 for side in [mp.Low, mp.High]:
762 if ((boundary.direction == mp.X) and (side == mp.Low)) and (
763 sim.dimensions == mp.CYLINDRICAL or sim.is_cylindrical
764 ):
765 continue
766 vol = get_boundary_volumes(
767 sim, boundary.thickness, boundary.direction, side
768 )
769 ax = plot_volume(
770 sim, ax, vol, output_plane, plotting_parameters=boundary_parameters
771 )
772 # boundary on just one side
773 else:
774 if ((boundary.direction == mp.X) and (boundary.side == mp.Low)) and (
775 sim.dimensions == mp.CYLINDRICAL or sim.is_cylindrical
776 ):
777 continue
778 vol = get_boundary_volumes(
779 sim, boundary.thickness, boundary.direction, boundary.side
780 )

Callers 1

plot2DFunction · 0.85

Calls 2

get_boundary_volumesFunction · 0.85
plot_volumeFunction · 0.85

Tested by

no test coverage detected