sponge.core.WithEnergyCell
- class sponge.core.WithEnergyCell(system: Molecule, potential: PotentialCell, bias: Union[Bias, List[Bias]] = None, cutoff: float = None, neighbour_list: NeighbourList = None, wrapper: EnergyWrapper = None, **kwargs)[源代码]
用势能函数封装仿真系统的神经网络层。 该神经网络层用于计算并返回系统在当前坐标处的势能值。
- 参数:
system (
sponge.system.Molecule
) - 仿真系统。potential (
sponge.potential.PotentialCell
) - 势能函数层。bias (Union[sponge.potential.Bias, List[sponge.potential.Bias]], 可选) - 偏置势函数层。默认值:
None
。cutoff (float, 可选) - 邻居列表的截断距离。如果为
None
,则将其赋值为势能的截止值。默认值:None
。neighbour_list (
sponge.partition.NeighbourList
, 可选) - 邻居列表。默认值:None
。wrapper (sponge.sampling.wrapper.EnergyWrapper, 可选) - 包裹和处理势能和偏置势的网络。默认值:
None
。kwargs (dict) - 关键字参数。
- 输入:
*inputs (Tuple(Tensor)) -
sponge.core.WithEnergyCell
的输入Tensor tuple。
- 输出:
energy (Tensor) - 整个系统的势能。shape为 \((B, 1)\) 。数据类型为float。
- 支持平台:
Ascend
GPU
样例:
>>> from sponge import WithEnergyCell, RunOneStepCell, Sponge >>> from sponge.callback import RunInfo >>> from sponge.system import Molecule >>> from sponge.potential.forcefield import ForceField >>> from sponge.optimizer import Updater >>> system = Molecule(template='water.tip3p.yaml') >>> potential = ForceField(system, parameters='SPCE') >>> optimizer = Updater(system, controller=None, time_step=1e-3) >>> sim = WithEnergyCell(system, potential) >>> one_step = RunOneStepCell(energy=sim, optimizer=optimizer) >>> md = Sponge(one_step) >>> run_info = RunInfo(800) >>> md.run(2000, callbacks=[run_info]) >>> # Output example: >>> # [MindSPONGE] Started simulation at 2024-04-29 01:02:10 >>> # [MindSPONGE] Compilation Time: 0.66s >>> # [MindSPONGE] Step: 0, E_pot: 1.4293396, E_kin: 0.0, E_tot: 1. >>> # 4293396, Temperature: 0.0, Time: 662.63ms >>> # [MindSPONGE] Step: 800, E_pot: 1.4293396, E_kin: 0.0, E_tot: 1. >>> # 4293396, Temperature: 0.0, Time: 13.77ms >>> # [MindSPONGE] Step: 1600, E_pot: 1.4293396, E_kin: 0.0, E_tot: 1. >>> # 4293396, Temperature: 0.0, Time: 14.82ms >>> # [MindSPONGE] Finished simulation at 2024-04-29 01:02:39 >>> # [MindSPONGE] Simulation time: 29.03 seconds.
- property bias
整体偏置势的Tensor。
- 返回:
Tensor,shape为 \((B, 1)\) ,数据类型为float。
- property bias_names
偏置势能的名字。
- 返回:
list[str],偏置势能的名字列表。
- property biases
偏置势分量的Tensor。
- 返回:
偏置势分量的Tensor。shape为 \((B, V)\) ,数据类型为float。
- property cutoff
邻居列表的截断距离。
- 返回:
Tensor,截断距离。
- property energies
势能分量的Tensor。
- 返回:
势能分量的Tensor,shape为 \((B, U)\) ,数据类型为float。
- property energy_names
能量项的名字。
- 返回:
list[str],能量项的名字列表。
- property energy_unit
能量单位。
- 返回:
str,能量单位。
- get_neighbour_list()[源代码]
获取邻居列表。
- 返回:
neigh_idx,系统中每个原子邻近原子的目录。shape为 \((B, A, N)\) 的Tensor,数量类型为int。
neigh_mask,neigh_idx的掩码。shape为 \((B, A, N)\) 的Tensor,数量类型为bool。
- property length_unit
长度单位。
- 返回:
str,长度单位。
- property neighbour_list_pace
邻居列表的更新步长。
- 返回:
int,更新步长。
- property num_biases
偏置势能 \(V\) 的数量。
- 返回:
int,偏置势能的数量。
- property num_energies
能量项 \(U\) 的数量。
- 返回:
int,能量项的数量。