Source code for flory.constraint.no

"""Module for no constraint.

.. codeauthor:: Yicheng Qiang <yicheng.qiang@ds.mpg.de>
"""

import logging

import numpy as np
from numba import float64, int32
from numba.experimental import jitclass

from .base import ConstraintBase, ConstraintBaseCompiled


[docs] @jitclass( [ ("_num_feat", int32), # a scalar ("_potential", float64[:, ::1]), # a C-continuous array ("_volume_derivative", float64[::1]), # a C-continuous array ] ) class NoConstraintCompiled(ConstraintBaseCompiled): r"""Compiled class for no constraint.""" def __init__(self, num_feat): r""" Args: num_feat: Number of features :math:`N_\mathrm{S}`. """ self._num_feat = num_feat self._potential = np.zeros((self._num_feat, 1)) self._volume_derivative = np.zeros((1,)) @property def num_feat(self) -> int: return self._num_feat @property def potential(self) -> np.ndarray: return self._potential @property def volume_derivative(self) -> np.ndarray: return self._volume_derivative
[docs] def initialize(self, num_part: int) -> None: self._potential = np.zeros((self._num_feat, num_part)) self._volume_derivative = np.zeros((num_part,))
[docs] def prepare(self, phis_feat: np.ndarray, Js: np.ndarray, masks: np.ndarray) -> None: pass
[docs] def evolve(self, step: float, masks: np.ndarray) -> float: return 0
[docs] class NoConstraint(ConstraintBase): r"""Class for no constraints.""" def __init__(self, num_feat: int): r""" Args: num_feat: Number of features :math:`N_\mathrm{S}`. """ self.num_feat = num_feat
[docs] def _compiled_impl(self) -> NoConstraintCompiled: r"""Implementation of creating a no constraint instance. Returns: : Instance of :class:`NoConstraintCompiled`. """ return NoConstraintCompiled(self.num_feat)