ExponentialDistribution
Bases: MeshDistribution
Exponential path distribution class expression: fn(u) = exp[ratio*u]
For more information, see MeshDistribution.
Source code in pymesh/mesh/mesh_distributions.py
class ExponentialDistribution(MeshDistribution):
"""Exponential path distribution class
expression: fn(u) = exp[ratio*u]
For more information, see [MeshDistribution][pymesh.mesh.mesh_distributions.MeshDistribution].
"""
ratio = AsNumber(return_type=float)
def __init__(self, ratio: int | float = 1.0, flip_direction: bool = False):
super().__init__(flip_direction=flip_direction)
self.ratio = ratio
def copy(self) -> Self:
return ExponentialDistribution(self.ratio, self.flip_direction)
def get_dist_fn(self):
flip = True if self.flip_direction else False # breaks ref to self
def fn(u: int | float, flip_direction: bool = flip) -> float:
u = self.validate_fn_input(u=u, flip_direction=flip_direction)
exp = (math.exp(self.ratio * u) - 1.0) / (math.exp(self.ratio * 1.0) - 1.0)
return self.flip_exp(exp, flip_direction)
return fn