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
@@ -517,6 +566,11 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
517566
518567@dataclass (frozen = True )
519568class HelmholtzKernel (ExpressionKernel ):
569+ """
570+ .. autoattribute:: helmholtz_k_name
571+ .. autoattribute:: allow_evanescent
572+ """
573+
520574 mapper_method : ClassVar [str ] = "map_helmholtz_kernel"
521575
522576 helmholtz_k_name : str
@@ -593,6 +647,10 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
593647
594648@dataclass (frozen = True )
595649class YukawaKernel (ExpressionKernel ):
650+ """
651+ .. autoattribute:: yukawa_lambda_name
652+ """
653+
596654 mapper_method : ClassVar [str ] = "map_yukawa_kernel"
597655
598656 yukawa_lambda_name : str
@@ -676,6 +734,12 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
676734
677735@dataclass (frozen = True )
678736class ElasticityKernel (ExpressionKernel ):
737+ """
738+ .. autoattribute:: icomp
739+ .. autoattribute:: jcomp
740+ .. autoattribute:: viscosity_mu
741+ .. autoattribute:: poisson_ratio
742+ """
679743 mapper_method : ClassVar [str ] = "map_elasticity_kernel"
680744
681745 icomp : int
@@ -799,6 +863,12 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
799863
800864@dataclass (frozen = True )
801865class StokesletKernel (ElasticityKernel ):
866+ """
867+ .. autoattribute:: icomp
868+ .. autoattribute:: jcomp
869+ .. autoattribute:: viscosity_mu
870+ """
871+
802872 def __new__ (cls ,
803873 dim : int ,
804874 icomp : int ,
@@ -833,6 +903,12 @@ def __str__(self) -> str:
833903
834904@dataclass (frozen = True )
835905class StressletKernel (ExpressionKernel ):
906+ """
907+ .. autoattribute:: icomp
908+ .. autoattribute:: jcomp
909+ .. autoattribute:: kcomp
910+ .. autoattribute:: viscosity_mu
911+ """
836912 mapper_method : ClassVar [str ] = "map_stresslet_kernel"
837913
838914 icomp : int
@@ -920,6 +996,10 @@ class LineOfCompressionKernel(ExpressionKernel):
920996 *Force at a Point in the Interior of a Semi-Infinite Solid*.
921997 Physics. 7 (5): 195-202.
922998 `doi:10.1063/1.1745385 <https://doi.org/10.1063/1.1745385>`__.
999+
1000+ .. autoattribute:: axis
1001+ .. autoattribute:: viscosity_mu
1002+ .. autoattribute:: poisson_ratio
9231003 """
9241004
9251005 mapper_method : ClassVar [str ] = "map_line_of_compression_kernel"
@@ -1003,6 +1083,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
10031083@dataclass (frozen = True )
10041084class KernelWrapper (Kernel , ABC ):
10051085 inner_kernel : Kernel
1086+ """The kernel that is being wrapped (to take a derivative of, etc.)."""
10061087
10071088 def __init__ (self , inner_kernel : Kernel ) -> None :
10081089 Kernel .__init__ (self , inner_kernel .dim )
@@ -1083,6 +1164,12 @@ def get_derivative_taker(
10831164# {{{ derivatives
10841165
10851166class DerivativeBase (KernelWrapper , ABC ):
1167+ """Bases: :class:`Kernel`
1168+
1169+ .. autoattribute:: inner_kernel
1170+ .. automethod:: replace_inner_kernel
1171+ """
1172+
10861173 @override
10871174 def get_pde_as_diff_op (self ) -> LinearPDESystemOperator :
10881175 return self .inner_kernel .get_pde_as_diff_op ()
@@ -1098,9 +1185,14 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
10981185
10991186@dataclass (frozen = True )
11001187class AxisSourceDerivative (DerivativeBase ):
1188+ """
1189+ .. autoattribute:: axis
1190+ """
1191+
11011192 mapper_method : ClassVar [str ] = "map_axis_source_derivative"
11021193
11031194 axis : int
1195+ """Direction axis for the source derivative."""
11041196
11051197 def __init__ (self , axis : int , inner_kernel : Kernel ) -> None :
11061198 super ().__init__ (inner_kernel )
@@ -1135,6 +1227,10 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
11351227
11361228@dataclass (frozen = True )
11371229class AxisTargetDerivative (DerivativeBase ):
1230+ """
1231+ .. autoattribute:: axis
1232+ """
1233+
11381234 mapper_method : ClassVar [str ] = "map_axis_target_derivative"
11391235 target_array_name : ClassVar [str ] = "targets"
11401236
@@ -1222,8 +1318,14 @@ def map_common_subexpression_uncached(self,
12221318
12231319@dataclass (frozen = True )
12241320class DirectionalDerivative (DerivativeBase ):
1321+ """
1322+ .. autoattribute:: dir_vec_name
1323+ """
12251324 directional_kind : ClassVar [Literal ["src" , "tgt" ]]
1325+ """The kind of this directional derivative (can only be a source or target)."""
1326+
12261327 dir_vec_name : str
1328+ """Name of the vector used for the direction."""
12271329
12281330 def __init__ (self , inner_kernel : Kernel , dir_vec_name : str | None = None ) -> None :
12291331 if dir_vec_name is None :
@@ -1250,7 +1352,6 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
12501352
12511353class DirectionalTargetDerivative (DirectionalDerivative ):
12521354 mapper_method : ClassVar [str ] = "map_directional_target_derivative"
1253-
12541355 directional_kind : ClassVar [Literal ["src" , "tgt" ]] = "tgt"
12551356 target_array_name : ClassVar [str ] = "targets"
12561357
@@ -1384,14 +1485,19 @@ def prepare_loopy_kernel(self, loopy_knl: lp.TranslationUnit) -> lp.TranslationU
13841485
13851486
13861487class TargetPointMultiplier (KernelWrapper ):
1387- """Wraps a kernel :math:`G(x, y)` and outputs :math:`x_j G(x, y)`
1488+ """Bases: :class:`Kernel`
1489+
1490+ Wraps a kernel :math:`G(x, y)` and outputs :math:`x_j G(x, y)`
13881491 where :math:`x, y` are targets and sources respectively.
1492+
1493+ .. autoattribute:: axis
13891494 """
13901495
13911496 mapper_method : ClassVar [str ] = "map_target_point_multiplier"
13921497 target_array_name : ClassVar [str ] = "targets"
13931498
13941499 axis : int
1500+ """Coordinate axis with which to multiply the kernel."""
13951501
13961502 def __init__ (self , axis : int , inner_kernel : Kernel ) -> None :
13971503 KernelWrapper .__init__ (self , inner_kernel )
@@ -1466,6 +1572,9 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
14661572
14671573
14681574class KernelMapper (Generic [ResultT ]):
1575+ """
1576+ .. automethod:: __call__
1577+ """
14691578 def rec (self , kernel : Kernel ) -> ResultT :
14701579 try :
14711580 method = cast (
@@ -1481,6 +1590,10 @@ def __call__(self, kernel: Kernel) -> ResultT:
14811590
14821591
14831592class KernelCombineMapper (KernelMapper [ResultT ], ABC ):
1593+ """
1594+ .. automethod:: combine
1595+ """
1596+
14841597 @abstractmethod
14851598 def combine (self , values : Iterable [ResultT ]) -> ResultT :
14861599 raise NotImplementedError
@@ -1539,32 +1652,42 @@ def map_directional_source_derivative(
15391652
15401653
15411654class AxisSourceDerivativeRemover (KernelIdentityMapper ):
1655+ """Removes all axis source derivatives from the kernel."""
1656+
15421657 @override
15431658 def map_axis_source_derivative (self , kernel : AxisSourceDerivative ) -> Kernel :
15441659 return self .rec (kernel .inner_kernel )
15451660
15461661
15471662class AxisTargetDerivativeRemover (KernelIdentityMapper ):
1663+ """Removes all axis target derivatives from the kernel."""
1664+
15481665 @override
15491666 def map_axis_target_derivative (self , kernel : AxisTargetDerivative ) -> Kernel :
15501667 return self .rec (kernel .inner_kernel )
15511668
15521669
15531670class TargetDerivativeRemover (AxisTargetDerivativeRemover ):
1671+ """Removes all target derivatives from the kernel."""
1672+
15541673 @override
15551674 def map_directional_target_derivative (
15561675 self , kernel : DirectionalTargetDerivative ) -> Kernel :
15571676 return self .rec (kernel .inner_kernel )
15581677
15591678
15601679class SourceDerivativeRemover (AxisSourceDerivativeRemover ):
1680+ """Removes all source derivatives from the kernel."""
1681+
15611682 @override
15621683 def map_directional_source_derivative (
15631684 self , kernel : DirectionalSourceDerivative ) -> Kernel :
15641685 return self .rec (kernel .inner_kernel )
15651686
15661687
15671688class TargetTransformationRemover (TargetDerivativeRemover ):
1689+ """Removes all target transformations from the kernel."""
1690+
15681691 @override
15691692 def map_target_point_multiplier (self , kernel : TargetPointMultiplier ) -> Kernel :
15701693 return self .rec (kernel .inner_kernel )
@@ -1574,6 +1697,8 @@ def map_target_point_multiplier(self, kernel: TargetPointMultiplier) -> Kernel:
15741697
15751698
15761699class DerivativeCounter (KernelCombineMapper [int ]):
1700+ """Counts the number of derivatives in the kernel."""
1701+
15771702 @override
15781703 def combine (self , values : Iterable [int ]) -> int :
15791704 return sum (values )
0 commit comments