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 ()
@@ -1077,9 +1164,14 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
10771164
10781165@dataclass (frozen = True )
10791166class AxisSourceDerivative (DerivativeBase ):
1167+ """
1168+ .. autoattribute:: axis
1169+ """
1170+
10801171 mapper_method : ClassVar [str ] = "map_axis_source_derivative"
10811172
10821173 axis : int
1174+ """Direction axis for the source derivative."""
10831175
10841176 def __init__ (self , axis : int , inner_kernel : Kernel ) -> None :
10851177 super ().__init__ (inner_kernel )
@@ -1105,6 +1197,10 @@ def get_derivative_coeff_dict_at_source(
11051197
11061198@dataclass (frozen = True )
11071199class AxisTargetDerivative (DerivativeBase ):
1200+ """
1201+ .. autoattribute:: axis
1202+ """
1203+
11081204 mapper_method : ClassVar [str ] = "map_axis_target_derivative"
11091205 target_array_name : ClassVar [str ] = "targets"
11101206
@@ -1183,8 +1279,14 @@ def map_common_subexpression_uncached(self,
11831279
11841280@dataclass (frozen = True )
11851281class DirectionalDerivative (DerivativeBase ):
1282+ """
1283+ .. autoattribute:: dir_vec_name
1284+ """
11861285 directional_kind : ClassVar [Literal ["src" , "tgt" ]]
1286+ """The kind of this directional derivative (can only be a source or target)."""
1287+
11871288 dir_vec_name : str
1289+ """Name of the vector used for the direction."""
11881290
11891291 def __init__ (self , inner_kernel : Kernel , dir_vec_name : str | None = None ) -> None :
11901292 if dir_vec_name is None :
@@ -1201,7 +1303,6 @@ def __str__(self) -> str:
12011303
12021304class DirectionalTargetDerivative (DirectionalDerivative ):
12031305 mapper_method : ClassVar [str ] = "map_directional_target_derivative"
1204-
12051306 directional_kind : ClassVar [Literal ["src" , "tgt" ]] = "tgt"
12061307 target_array_name : ClassVar [str ] = "targets"
12071308
@@ -1334,14 +1435,19 @@ def prepare_loopy_kernel(self, loopy_knl: lp.TranslationUnit) -> lp.TranslationU
13341435
13351436
13361437class TargetPointMultiplier (KernelWrapper ):
1337- """Wraps a kernel :math:`G(x, y)` and outputs :math:`x_j G(x, y)`
1438+ """Bases: :class:`Kernel`
1439+
1440+ Wraps a kernel :math:`G(x, y)` and outputs :math:`x_j G(x, y)`
13381441 where :math:`x, y` are targets and sources respectively.
1442+
1443+ .. autoattribute:: axis
13391444 """
13401445
13411446 mapper_method : ClassVar [str ] = "map_target_point_multiplier"
13421447 target_array_name : ClassVar [str ] = "targets"
13431448
13441449 axis : int
1450+ """Coordinate axis with which to multiply the kernel."""
13451451
13461452 def __init__ (self , axis : int , inner_kernel : Kernel ) -> None :
13471453 KernelWrapper .__init__ (self , inner_kernel )
@@ -1408,6 +1514,9 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
14081514
14091515
14101516class KernelMapper (Generic [ResultT ]):
1517+ """
1518+ .. automethod:: __call__
1519+ """
14111520 def rec (self , kernel : Kernel ) -> ResultT :
14121521 try :
14131522 method = cast (
@@ -1423,6 +1532,10 @@ def __call__(self, kernel: Kernel) -> ResultT:
14231532
14241533
14251534class KernelCombineMapper (KernelMapper [ResultT ], ABC ):
1535+ """
1536+ .. automethod:: combine
1537+ """
1538+
14261539 @abstractmethod
14271540 def combine (self , values : Iterable [ResultT ]) -> ResultT :
14281541 raise NotImplementedError
@@ -1479,32 +1592,42 @@ def map_directional_source_derivative(
14791592
14801593
14811594class AxisSourceDerivativeRemover (KernelIdentityMapper ):
1595+ """Removes all axis source derivatives from the kernel."""
1596+
14821597 @override
14831598 def map_axis_source_derivative (self , kernel : AxisSourceDerivative ) -> Kernel :
14841599 return self .rec (kernel .inner_kernel )
14851600
14861601
14871602class AxisTargetDerivativeRemover (KernelIdentityMapper ):
1603+ """Removes all axis target derivatives from the kernel."""
1604+
14881605 @override
14891606 def map_axis_target_derivative (self , kernel : AxisTargetDerivative ) -> Kernel :
14901607 return self .rec (kernel .inner_kernel )
14911608
14921609
14931610class TargetDerivativeRemover (AxisTargetDerivativeRemover ):
1611+ """Removes all target derivatives from the kernel."""
1612+
14941613 @override
14951614 def map_directional_target_derivative (
14961615 self , kernel : DirectionalTargetDerivative ) -> Kernel :
14971616 return self .rec (kernel .inner_kernel )
14981617
14991618
15001619class SourceDerivativeRemover (AxisSourceDerivativeRemover ):
1620+ """Removes all source derivatives from the kernel."""
1621+
15011622 @override
15021623 def map_directional_source_derivative (
15031624 self , kernel : DirectionalSourceDerivative ) -> Kernel :
15041625 return self .rec (kernel .inner_kernel )
15051626
15061627
15071628class TargetTransformationRemover (TargetDerivativeRemover ):
1629+ """Removes all target transformations from the kernel."""
1630+
15081631 @override
15091632 def map_target_point_multiplier (self , kernel : TargetPointMultiplier ) -> Kernel :
15101633 return self .rec (kernel .inner_kernel )
@@ -1514,6 +1637,8 @@ def map_target_point_multiplier(self, kernel: TargetPointMultiplier) -> Kernel:
15141637
15151638
15161639class DerivativeCounter (KernelCombineMapper [int ]):
1640+ """Counts the number of derivatives in the kernel."""
1641+
15171642 @override
15181643 def combine (self , values : Iterable [int ]) -> int :
15191644 return sum (values )
0 commit comments