Source code for sponge.optimizer.dynamics

# Copyright 2021-2023 @ Shenzhen Bay Laboratory &
#                       Peking University &
#                       Huawei Technologies Co., Ltd
#
# This code is a part of MindSPONGE:
# MindSpore Simulation Package tOwards Next Generation molecular modelling.
#
# MindSPONGE is open-source software based on the AI-framework:
# MindSpore (https://www.mindspore.cn/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
"""Space updater"""

from mindspore import Tensor

from .md import UpdaterMD
from ..system import Molecule
from ..control.controller import Controller
from ..control.integrator import Integrator


[docs]class DynamicUpdater(UpdaterMD): r""" Updater for molecular dynamics (MD) simulation. This updater will be removed a future release. Please use :class:`sponge.optimizer.UpdaterMD` instead. Args: system (:class:`sponge.system.Molecule`): Simulation system. integrator (`sponge.control.Integrator`): MD integrator. thermostat (:class:`sponge.control.Controller`, optional): Thermostat for temperature coupling. Default: ``None``. barostat (:class:`sponge.control.Controller`, optional): Barostat for pressure coupling. Default: ``None``. constraint (:class:`sponge.control.Controller`, optional): Constraint for bond. controller (:class:`sponge.control.Controller`, optional): Other controllers. time_step (float, optional): Time step. Default: ``1e-3``. velocity (Tensor, optional): Atomic velocity. The shape of tensor is :math:`(B, A, D)`. Here :math:`B` is the number of walkers in simulation, :math:`A` is the number of atoms, and :math:`D` is the spatial dimension of the simulation system, which is usually 3. Data type is float. Default: ``None``. weight_decay (float, optional): An value for the weight decay. Default: ``0.0``. loss_scale (float, optional): A value for the loss scale. Default: ``1.0``. Supported Platforms: ``Ascend`` ``GPU`` """ def __init__(self, system: Molecule, integrator: Integrator, thermostat: Controller = None, barostat: Controller = None, constraint: Controller = None, controller: Controller = None, time_step: float = 1e-3, velocity: Tensor = None, weight_decay: float = 0.0, loss_scale: float = 1.0, ): super().__init__( system=system, integrator=integrator, thermostat=thermostat, barostat=barostat, constraint=constraint, controller=controller, time_step=time_step, velocity=velocity, weight_decay=weight_decay, loss_scale=loss_scale, ) print('[WARNING] `DynamicUpdater` will be removed a future release. ' 'Please use `UpdaterMD` instead.')