sponge.potential.EnergyCell
- class sponge.potential.EnergyCell(name: str = 'energy', length_unit: str = 'nm', energy_unit: str = 'kj/mol', use_pbc: bool = None, **kwargs)[源代码]
能量项的基础类。 EnergyCell 通常被用作传统力场中单独的能量项的一个基类。力场参数通常有单位,因此作为能量项的 EnergyCell 的单位必须与力场参数的单位保持一致,而不是与全局单位相同。
说明
B - 批处理大小,用于模拟的walkers数目。
- 参数:
name (str) - 能量的名称。默认值:
"energy"
。length_unit (str) - 长度单位。如果是None的话,与全局长度单位保持一致。默认值:
"nm"
。energy_unit (str) - 能量单位。如果是None的话,与全局能量单位保持一致。默认值:
"kj/mol"
。use_pbc (bool) - 是否使用周期性边界条件。默认值:
None
。kwargs (dict) - 其他参数字典。
- 返回:
Tensor。能量,shape为 \((B, 1)\) ,数据类型为float。
- 支持平台:
Ascend
GPU
样例:
>>> from mindspore import Tensor >>> from mindspore.nn import Adam >>> from sponge.potential import EnergyCell, ForceFieldBase >>> from sponge import WithEnergyCell, Sponge >>> from sponge.callback import RunInfo >>> class MyEnergy(EnergyCell): ... def construct(self, coordinate: Tensor, **kwargs): ... return coordinate.sum()[None, None] >>> # system represents a custom molecular system >>> potential = MyEnergy(system) >>> forcefield = ForceFieldBase(potential) >>> withenergy = WithEnergyCell(system, forcefield) >>> opt = Adam(system.trainable_params(), 1e-3) >>> mini = Sponge(withenergy, optimizer=opt) >>> run_info = RunInfo(5) >>> mini.run(10, callbacks=[run_info]) [MindSPONGE] Started simulation at 2024-03-22 11:08:34 [MindSPONGE] Step: 5, E_pot: 0.31788814 [MindSPONGE] Step: 10, E_pot: 0.13788882 [MindSPONGE] Finished simulation at 2024-03-22 11:08:35 [MindSPONGE] Simulation time: 0.98 seconds. --------------------------------------------------------------------------------
- convert_energy_from(unit: str)[源代码]
将能量数值从外部单位换算到内部单位。
- 参数:
unit (str) - 能量的单位。
- 返回:
float,从外部单位换算到内部单位的能量数值。
- convert_energy_to(unit: str)[源代码]
将能量数值从内部单位换算到外部单位。
- 参数:
unit (str) - 能量的单位。
- 返回:
float,从内部单位换算到外部单位的能量数值。
- property energy_unit
能量单位。
- 返回:
str,能量单位。
- property length_unit
长度单位。
- 返回:
str,长度单位。
- property name
能量的名称。
- 返回:
str,能量的名称。
- set_cutoff(cutoff: float, unit: str = None)[源代码]
设置截断距离。
- 参数:
cutoff (float) - 截断距离。
unit (str) - 长度单位。默认值:
None
。
- set_input_unit(length_unit: Union[str, Units, Length])[源代码]
设置输入坐标的长度单位。
- 参数:
length_unit (Union[str, Units, Length]) - 输入坐标的长度单位。
- set_units(length_unit: str = None, energy_unit: str = None, units: Units = None)[源代码]
设置长度、能量单位。
- 参数:
length_unit (str) - 长度单位。默认值:
None
。energy_unit (str) - 能量单位。默认值:
None
。units (Units) - 单位。默认值:
None
。
- property use_pbc
判断是否使用周期性边界条件。
- 返回:
bool,返回一个标志来判断是否使用了周期性边界条件。