6969Kernel interface
7070----------------
7171
72- .. autoclass:: Kernel
72+ .. autoclass:: ArithmeticExpr
73+
7374.. autoclass:: KernelArgument
75+ .. autoclass:: Kernel
76+ :show-inheritance:
7477
7578Symbolic kernels
7679----------------
7780
7881.. autoclass:: ExpressionKernel
82+ :show-inheritance:
83+ :members: mapper_method
7984
8085PDE kernels
8186-----------
8287
8388.. autoclass:: LaplaceKernel
89+ :show-inheritance:
90+ :members: mapper_method
8491.. autoclass:: BiharmonicKernel
92+ :show-inheritance:
93+ :members: mapper_method
8594.. autoclass:: HelmholtzKernel
95+ :show-inheritance:
96+ :members: mapper_method
8697.. autoclass:: YukawaKernel
98+ :show-inheritance:
99+ :members: mapper_method
87100.. autoclass:: StokesletKernel
101+ :show-inheritance:
102+ :members: mapper_method
88103.. autoclass:: StressletKernel
104+ :show-inheritance:
105+ :members: mapper_method
89106.. autoclass:: ElasticityKernel
107+ :show-inheritance:
108+ :members: mapper_method
90109.. autoclass:: LineOfCompressionKernel
110+ :show-inheritance:
111+ :members: mapper_method
91112
92113Derivatives
93114-----------
97118
98119.. autoclass:: DerivativeBase
99120.. autoclass:: AxisTargetDerivative
121+ :show-inheritance:
122+ :undoc-members:
123+ :members: mapper_method,target_array_name
100124.. autoclass:: AxisSourceDerivative
125+ :show-inheritance:
126+ :members: mapper_method
127+ .. autoclass:: DirectionalDerivative
128+ :show-inheritance:
129+ :members: directional_kind
101130.. autoclass:: DirectionalSourceDerivative
131+ :show-inheritance:
132+ :members: mapper_method,directional_kind
102133.. autoclass:: DirectionalTargetDerivative
134+ :show-inheritance:
135+ :undoc-members:
136+ :members: mapper_method,directional_kind,target_array_name
103137
104138Transforming kernels
105139--------------------
106140
141+ .. autoclass:: TargetPointMultiplier
142+ :undoc-members:
143+ :members: mapper_method,target_array_name
144+
145+ .. autoclass:: ResultT
146+
107147.. autoclass:: KernelMapper
148+ :show-inheritance:
108149.. autoclass:: KernelCombineMapper
150+ :show-inheritance:
109151.. autoclass:: KernelIdentityMapper
152+ :show-inheritance:
110153.. autoclass:: AxisSourceDerivativeRemover
154+ :show-inheritance:
111155.. autoclass:: AxisTargetDerivativeRemover
156+ :show-inheritance:
112157.. autoclass:: SourceDerivativeRemover
158+ :show-inheritance:
113159.. autoclass:: TargetDerivativeRemover
114- .. autoclass:: TargetPointMultiplier
160+ :show-inheritance:
161+ .. autoclass:: TargetTransformationRemover
162+ :show-inheritance:
115163.. autoclass:: DerivativeCounter
164+ :show-inheritance:
116165"""
117166
118167ArithmeticExpr : TypeAlias = int | float | complex | sym .Basic
@@ -145,7 +194,7 @@ class Kernel(ABC):
145194 .. autoattribute:: is_translation_invariant
146195
147196 .. autoattribute:: dim
148- .. autoattribute :: is_complex_valued
197+ .. autoproperty :: is_complex_valued
149198
150199 .. automethod:: get_base_kernel
151200 .. automethod:: replace_base_kernel
@@ -516,6 +565,11 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
516565
517566@dataclass (frozen = True )
518567class HelmholtzKernel (ExpressionKernel ):
568+ """
569+ .. autoattribute:: helmholtz_k_name
570+ .. autoattribute:: allow_evanescent
571+ """
572+
519573 mapper_method : ClassVar [str ] = "map_helmholtz_kernel"
520574
521575 helmholtz_k_name : str
@@ -592,6 +646,10 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
592646
593647@dataclass (frozen = True )
594648class YukawaKernel (ExpressionKernel ):
649+ """
650+ .. autoattribute:: yukawa_lambda_name
651+ """
652+
595653 mapper_method : ClassVar [str ] = "map_yukawa_kernel"
596654
597655 yukawa_lambda_name : str
@@ -675,6 +733,12 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
675733
676734@dataclass (frozen = True )
677735class ElasticityKernel (ExpressionKernel ):
736+ """
737+ .. autoattribute:: icomp
738+ .. autoattribute:: jcomp
739+ .. autoattribute:: viscosity_mu
740+ .. autoattribute:: poisson_ratio
741+ """
678742 mapper_method : ClassVar [str ] = "map_elasticity_kernel"
679743
680744 icomp : int
@@ -791,6 +855,12 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
791855
792856
793857class StokesletKernel (ElasticityKernel ):
858+ """
859+ .. autoattribute:: icomp
860+ .. autoattribute:: jcomp
861+ .. autoattribute:: viscosity_mu
862+ """
863+
794864 def __new__ (cls , dim , icomp , jcomp , viscosity_mu = "mu" , poisson_ratio = 0.5 ):
795865 return object .__new__ (cls )
796866
@@ -806,6 +876,12 @@ def __str__(self) -> str:
806876
807877@dataclass (frozen = True )
808878class StressletKernel (ExpressionKernel ):
879+ """
880+ .. autoattribute:: icomp
881+ .. autoattribute:: jcomp
882+ .. autoattribute:: kcomp
883+ .. autoattribute:: viscosity_mu
884+ """
809885 mapper_method : ClassVar [str ] = "map_stresslet_kernel"
810886
811887 icomp : int
@@ -893,6 +969,10 @@ class LineOfCompressionKernel(ExpressionKernel):
893969 *Force at a Point in the Interior of a Semi-Infinite Solid*.
894970 Physics. 7 (5): 195-202.
895971 `doi:10.1063/1.1745385 <https://doi.org/10.1063/1.1745385>`__.
972+
973+ .. autoattribute:: axis
974+ .. autoattribute:: viscosity_mu
975+ .. autoattribute:: poisson_ratio
896976 """
897977
898978 mapper_method : ClassVar [str ] = "map_line_of_compression_kernel"
@@ -976,6 +1056,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
9761056@dataclass (frozen = True )
9771057class KernelWrapper (Kernel , ABC ):
9781058 inner_kernel : Kernel
1059+ """The kernel that is being wrapped (to take a derivative of, etc.)."""
9791060
9801061 def __init__ (self , inner_kernel : Kernel ) -> None :
9811062 Kernel .__init__ (self , inner_kernel .dim )
@@ -1056,6 +1137,12 @@ def get_derivative_taker(
10561137# {{{ derivatives
10571138
10581139class DerivativeBase (KernelWrapper , ABC ):
1140+ """Bases: :class:`Kernel`
1141+
1142+ .. autoattribute:: inner_kernel
1143+ .. automethod:: replace_inner_kernel
1144+ """
1145+
10591146 @override
10601147 def get_pde_as_diff_op (self ) -> LinearPDESystemOperator :
10611148 return self .inner_kernel .get_pde_as_diff_op ()
@@ -1071,9 +1158,14 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
10711158
10721159@dataclass (frozen = True )
10731160class AxisSourceDerivative (DerivativeBase ):
1161+ """
1162+ .. autoattribute:: axis
1163+ """
1164+
10741165 mapper_method : ClassVar [str ] = "map_axis_source_derivative"
10751166
10761167 axis : int
1168+ """Direction axis for the source derivative."""
10771169
10781170 def __init__ (self , axis : int , inner_kernel : Kernel ) -> None :
10791171 super ().__init__ (inner_kernel )
@@ -1108,6 +1200,10 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
11081200
11091201@dataclass (frozen = True )
11101202class AxisTargetDerivative (DerivativeBase ):
1203+ """
1204+ .. autoattribute:: axis
1205+ """
1206+
11111207 mapper_method : ClassVar [str ] = "map_axis_target_derivative"
11121208 target_array_name : ClassVar [str ] = "targets"
11131209
@@ -1195,8 +1291,14 @@ def map_common_subexpression_uncached(self,
11951291
11961292@dataclass (frozen = True )
11971293class DirectionalDerivative (DerivativeBase ):
1294+ """
1295+ .. autoattribute:: dir_vec_name
1296+ """
11981297 directional_kind : ClassVar [Literal ["src" , "tgt" ]]
1298+ """The kind of this directional derivative (can only be a source or target)."""
1299+
11991300 dir_vec_name : str
1301+ """Name of the vector used for the direction."""
12001302
12011303 def __init__ (self , inner_kernel : Kernel , dir_vec_name : str | None = None ) -> None :
12021304 if dir_vec_name is None :
@@ -1223,7 +1325,6 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
12231325
12241326class DirectionalTargetDerivative (DirectionalDerivative ):
12251327 mapper_method : ClassVar [str ] = "map_directional_target_derivative"
1226-
12271328 directional_kind : ClassVar [Literal ["src" , "tgt" ]] = "tgt"
12281329 target_array_name : ClassVar [str ] = "targets"
12291330
@@ -1356,14 +1457,19 @@ def prepare_loopy_kernel(self, loopy_knl: lp.TranslationUnit) -> lp.TranslationU
13561457
13571458
13581459class TargetPointMultiplier (KernelWrapper ):
1359- """Wraps a kernel :math:`G(x, y)` and outputs :math:`x_j G(x, y)`
1460+ """Bases: :class:`Kernel`
1461+
1462+ Wraps a kernel :math:`G(x, y)` and outputs :math:`x_j G(x, y)`
13601463 where :math:`x, y` are targets and sources respectively.
1464+
1465+ .. autoattribute:: axis
13611466 """
13621467
13631468 mapper_method : ClassVar [str ] = "map_target_point_multiplier"
13641469 target_array_name : ClassVar [str ] = "targets"
13651470
13661471 axis : int
1472+ """Coordinate axis with which to multiply the kernel."""
13671473
13681474 def __init__ (self , axis : int , inner_kernel : Kernel ) -> None :
13691475 KernelWrapper .__init__ (self , inner_kernel )
@@ -1438,6 +1544,9 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
14381544
14391545
14401546class KernelMapper (Generic [ResultT ]):
1547+ """
1548+ .. automethod:: __call__
1549+ """
14411550 def rec (self , kernel : Kernel ) -> ResultT :
14421551 try :
14431552 method = cast (
@@ -1453,6 +1562,10 @@ def __call__(self, kernel: Kernel) -> ResultT:
14531562
14541563
14551564class KernelCombineMapper (KernelMapper [ResultT ], ABC ):
1565+ """
1566+ .. automethod:: combine
1567+ """
1568+
14561569 @abstractmethod
14571570 def combine (self , values : Iterable [ResultT ]) -> ResultT :
14581571 raise NotImplementedError
@@ -1511,32 +1624,42 @@ def map_directional_source_derivative(
15111624
15121625
15131626class AxisSourceDerivativeRemover (KernelIdentityMapper ):
1627+ """Removes all axis source derivatives from the kernel."""
1628+
15141629 @override
15151630 def map_axis_source_derivative (self , kernel : AxisSourceDerivative ) -> Kernel :
15161631 return self .rec (kernel .inner_kernel )
15171632
15181633
15191634class AxisTargetDerivativeRemover (KernelIdentityMapper ):
1635+ """Removes all axis target derivatives from the kernel."""
1636+
15201637 @override
15211638 def map_axis_target_derivative (self , kernel : AxisTargetDerivative ) -> Kernel :
15221639 return self .rec (kernel .inner_kernel )
15231640
15241641
15251642class TargetDerivativeRemover (AxisTargetDerivativeRemover ):
1643+ """Removes all target derivatives from the kernel."""
1644+
15261645 @override
15271646 def map_directional_target_derivative (
15281647 self , kernel : DirectionalTargetDerivative ) -> Kernel :
15291648 return self .rec (kernel .inner_kernel )
15301649
15311650
15321651class SourceDerivativeRemover (AxisSourceDerivativeRemover ):
1652+ """Removes all source derivatives from the kernel."""
1653+
15331654 @override
15341655 def map_directional_source_derivative (
15351656 self , kernel : DirectionalSourceDerivative ) -> Kernel :
15361657 return self .rec (kernel .inner_kernel )
15371658
15381659
15391660class TargetTransformationRemover (TargetDerivativeRemover ):
1661+ """Removes all target transformations from the kernel."""
1662+
15401663 @override
15411664 def map_target_point_multiplier (self , kernel : TargetPointMultiplier ) -> Kernel :
15421665 return self .rec (kernel .inner_kernel )
@@ -1546,6 +1669,8 @@ def map_target_point_multiplier(self, kernel: TargetPointMultiplier) -> Kernel:
15461669
15471670
15481671class DerivativeCounter (KernelCombineMapper [int ]):
1672+ """Counts the number of derivatives in the kernel."""
1673+
15491674 @override
15501675 def combine (self , values : Iterable [int ]) -> int :
15511676 return sum (values )
0 commit comments