jaxdem.forceRouter#
Interface for combining force laws and for defining the species forces matrix.
Classes
|
Static (S×S) table that maps species pairs to a ForceModel. |
|
Sum a tuple of elementary laws. |
- class jaxdem.forceRouter.LawCombiner(required_material_properties: Tuple[str, ...] = (), laws: Tuple[ForceModel, ...] = ())[source][source]#
Bases:
ForceModel
Sum a tuple of elementary laws.
- required_material_properties: Tuple[str, ...]#
A static tuple of strings specifying the material properties required by this force model.
These properties (e.g., ‘young_eff’, ‘restitution’) must be present in the
System.mat_table
for the model to function correctly. This is used for validation.
- laws: Tuple[ForceModel, ...]#
A static tuple of other
ForceModel
instances that compose this force model.This allows for creating composite force models (e.g., a total force being the sum of a spring force and a damping force).
- classmethod create(key: str, /, **kw: Any) T [source]#
Creates and returns an instance of a registered subclass.
This method looks up the subclass associated with the given key in the factory’s registry and then calls its constructor with the provided arguments.
- Parameters:
key (str) – The registration key of the subclass to be created.
**kw (Any) – Arbitrary keyword arguments to be passed directly to the constructor of the registered subclass.
- Returns:
An instance of the registered subclass.
- Return type:
T
- Raises:
KeyError – If the provided key is not found in the factory’s registry.
TypeError – If the provided **kw arguments do not match the signature of the registered subclass’s constructor.
Example
Given Foo factory and Bar registered:
>>> bar_instance = Foo.create("bar", value=42) >>> print(bar_instance) Bar(value=42)
- classmethod register(key: str | None = None) Callable[[Type[T]], Type[T]] [source]#
Registers a subclass with the factory’s registry.
This method returns a decorator that can be applied to a class to register it under a specific key.
- Parameters:
key (str or None, optional) – The string key under which to register the subclass. If None, the lowercase name of the subclass itself will be used as the key.
- Returns:
A decorator function that takes a class and registers it, returning the class unchanged.
- Return type:
Callable[[Type[T]], Type[T]]
- Raises:
ValueError – If the provided key (or the default class name) is already registered in the factory’s registry.
Example
Register a class named “MyComponent” under the key “mycomp”:
>>> @MyFactory.register("mycomp") >>> class MyComponent: >>> ...
Register a class named “DefaultComponent” using its own name as the key:
>>> @MyFactory.register() >>> class DefaultComponent: >>> ...
- class jaxdem.forceRouter.ForceRouter(required_material_properties: Tuple[str, ...] = (), laws: Tuple[ForceModel, ...] = (), table: Tuple[Tuple[ForceModel, ...], ...] = ())[source][source]#
Bases:
ForceModel
Static (S×S) table that maps species pairs to a ForceModel.
- table: Tuple[Tuple[ForceModel, ...], ...]#
- required_material_properties: Tuple[str, ...]#
A static tuple of strings specifying the material properties required by this force model.
These properties (e.g., ‘young_eff’, ‘restitution’) must be present in the
System.mat_table
for the model to function correctly. This is used for validation.
- static from_dict(S: int, mapping: dict[Tuple[int, int], ForceModel])[source][source]#
- classmethod create(key: str, /, **kw: Any) T [source]#
Creates and returns an instance of a registered subclass.
This method looks up the subclass associated with the given key in the factory’s registry and then calls its constructor with the provided arguments.
- Parameters:
key (str) – The registration key of the subclass to be created.
**kw (Any) – Arbitrary keyword arguments to be passed directly to the constructor of the registered subclass.
- Returns:
An instance of the registered subclass.
- Return type:
T
- Raises:
KeyError – If the provided key is not found in the factory’s registry.
TypeError – If the provided **kw arguments do not match the signature of the registered subclass’s constructor.
Example
Given Foo factory and Bar registered:
>>> bar_instance = Foo.create("bar", value=42) >>> print(bar_instance) Bar(value=42)
- laws: Tuple['ForceModel', ...]#
A static tuple of other
ForceModel
instances that compose this force model.This allows for creating composite force models (e.g., a total force being the sum of a spring force and a damping force).
- classmethod register(key: str | None = None) Callable[[Type[T]], Type[T]] [source]#
Registers a subclass with the factory’s registry.
This method returns a decorator that can be applied to a class to register it under a specific key.
- Parameters:
key (str or None, optional) – The string key under which to register the subclass. If None, the lowercase name of the subclass itself will be used as the key.
- Returns:
A decorator function that takes a class and registers it, returning the class unchanged.
- Return type:
Callable[[Type[T]], Type[T]]
- Raises:
ValueError – If the provided key (or the default class name) is already registered in the factory’s registry.
Example
Register a class named “MyComponent” under the key “mycomp”:
>>> @MyFactory.register("mycomp") >>> class MyComponent: >>> ...
Register a class named “DefaultComponent” using its own name as the key:
>>> @MyFactory.register() >>> class DefaultComponent: >>> ...