栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

lammps中的流程控制:循环与条件判断

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lammps中的流程控制:循环与条件判断

文章目录
  • lammps中的流程控制:循环与条件判断
    • 1. 循环
      • 1.1 `label`与`jump`
        • 脚本
        • 结果
      • 1.2 `variable loop` 与 `next`
        • 脚本
        • 结果
    • 2. 条件判断

lammps中的流程控制:循环与条件判断

在lammps中,通过循环与条件判断,我们能够实现更复杂的分子模拟。

1. 循环 1.1 label与jump

label command — LAMMPS官方文档
label命令表示用指定的id对输入脚本的某一行进行标记

# 语法
label id
# 示例1,对该行进行标记,id为loop_start,表示循环的开始
label loop_start

单独的label命令是不起作用的,必须和jump命令联用
jump command — LAMMPS官方文档
jump命令表示关闭当前输入脚本,并且打开指定的输入脚本,跳转到指定的命令行

# 语法
jump file label
# 示例1,关闭当前输入脚本,并打开名为file1.in的输入脚本,并且从头开始执行命令
jump file1.in
# 示例2,关闭当前输入脚本,并打开名为file1.in的输入脚本,并且从loop_start行开始执行命令
jump file1.in loop_start
# 示例3,关闭当前输入脚本,并重新打开当前输入脚本,并且从loop_start行开始执行命令
jump SELF loop_start

label和jump命令组合实现循环

脚本
print "循环体前"
label loop_start
print "循环体"
jump SELF loop_start
print "循环体外"
结果

这个脚本的输出结果就是

循环体前
循环体
循环体
循环体
......

上述循环是一个死循环,永远不会终止,"循环体外"不会被打印出来,要终止循环还需要使用『循环变量』

1.2 variable loop 与 next

variable command — LAMMPS官方文档
jump command — LAMMPS官方文档
varilable loop命令是variable的一个子命令,可以用来定义一个循环变量.
next命令与varilable loop命令联用,表示让当前变量取下一个值.

# 示例,定义了一个循环变量a,a的值从1到3变化,并打印
variable a loop 3
print "a = ${a}"
next a
print "a = ${a}"
next a
print "a = ${a}"

结果:

此外,next命令还有个特性,当a取到最后一个值的时候,next会忽略下一个遇到的jump命令,这样就可以起到终止循环的作用。

label、jump、variable loop、next命令组合实现循环

脚本
print "循环前"
variable a loop 5
label loop_start
print "循环体"
print "a = ${a}"
next a
jump SELF loop_start
print "循环后"
结果

2. 条件判断

if command — LAMMPS官方文档
条件判断使用if命令,类似于C语言

# 语法
if boolean then t1 t2 ... elif boolean f1 f2 ... elif boolean f1 f2 ... else e1 e2 ...
# 示例1,判断a、b大小
variable a equal 4
variable b equal 3
if "${a} > ${b}" then "print 'a > b'" &
elif "${a} == ${b}" "print 'a = b'" &
else "print 'a < b'"

在使用if命令时要注意

  1. if命令换行时要使用&行连续符进行连接
  2. 要执行的命令必须用 " " 包裹,如果命令本身也含有 " ", 则使用单引号进行嵌套,如 "print 'a > b'"
  3. 只有if后面接命令时需要用then,elif和else不需要

if命令也可以用于跳出循环,下面是官网的示例

variable myTemp equal temp # 定义一个变量,值为系统温度
label loop # 循环入口
variable a loop 1000 # 定义一个循环变量
run 1000 # 执行模拟,一次循环中运算1000个时间步
if "${myTemp} < 300.0" then "jump SELF break" # 当温度达到300K时,跳转到break标签
next a  # a自增,当a没有下一个值可取时,忽略下一条jump命令
jump SELF loop # 跳转到循环入口
label break # 循环出口
print "ALL DONE"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000836.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号