当前位置:首页 > 技术 > 正文内容

PVPC自动化计算脚本集

访客 技术 2026年7月4日 1

本文介绍一套用于原子核配对凝聚变分计算(Projection After Variation of Pair Condensate,简称PVPC)的自动化Shell脚本。该套脚本托管于Gitee代码仓库,可实现从变分优化到角动量投影、再到电磁跃迁计算的完整工作流。

一、主控脚本:全流程自动化计算

以下脚本整合了变分优化、线性代数投影(LAP)以及B(E2)跃迁计算三个核心步骤,仅需四个输入参数即可对sd壳或pf壳中的任意偶偶核进行计算。

#!/bin/bash
# 调用方式: ./master.sh 质子对数 中子对数 壳层 优化次数
# 示例: ./master.sh 1 1 sd 5  对应 Ne-20 核,优化5个配对凝聚态

declare -i Zpair=$1
declare -i Npair=$2
declare shell_label=$3
declare -i opt_count=$4
declare sys_name=p${Zpair}n${Npair}

declare jsp_data="example/${shell_label}/${shell_label}.jsp"
declare int_file="example/${shell_label}/${shell_label}.pn"
declare p_best="output/best-proton.pair"
declare n_best="output/best-neutron.pair"

echo "======================================================================="
echo "              变分优化阶段"
echo "-----------------------------------------------------------------------"
./pvpc.x << EOF
v-wo-Pandya
${sys_name}
${Zpair}
${Npair}
${jsp_data}
xpn
${int_file}
y
y
${opt_count}
EOF

echo "-----------------------------------------------------------------------"
echo "              变分优化完成"
echo "======================================================================="

echo "======================================================================="
echo "              角动量投影阶段"
echo "-----------------------------------------------------------------------"
./pvpc.x << EOF
LAP-wo-Pandya
${sys_name}
${Zpair}
${Npair}
${jsp_data}
xpn
${int_file}
y
1
${p_best}  ${n_best}
16
EOF

echo "-----------------------------------------------------------------------"
echo "              角动量投影完成"
echo "======================================================================="

mkdir -p ${shell_label}pairs/
cp ${p_best} ${shell_label}pairs/${sys_name}-best-proton.pair
cp ${n_best} ${shell_label}pairs/${sys_name}-best-neutron.pair

declare p_final=${shell_label}pairs/${sys_name}-best-proton.pair
declare n_final=${shell_label}pairs/${sys_name}-best-neutron.pair
declare -i unit_sel=1

echo "======================================================================="
echo "              B(E2) 跃迁计算"
echo "======================================================================="
./pvpc.x << EOF
EMtrans
${sys_name}
${Zpair}
${Npair}
${jsp_data}
xpn
${int_file}
y
1
${p_final}  ${n_final}
output/${shell_label}e2.jQt
e
2
1.5  0.5
${unit_sel}
output/${sys_name}.eig
EOF

cp output/${sys_name}.trans ${shell_label}pairs/

执行示例:计算Ne-20核的5个低能配对凝聚态,选取能量最低者进行投影:

chmod +x master.sh
./master.sh 1 1 sd 5

批量计算多个核素时,可编写外层循环脚本:

#!/bin/bash

sleep 18000  # 延迟5小时执行,避开工作时段
date

for (( zp=3; zp<=3; zp++ )); do
    for (( np=1; np<=5; np++ )); do
        time ./master.sh ${zp} ${np} sd 5
    done
done

date

二、线性约束转动脚本

采用线性约束crank方法,最小化 <H>-ω<Jz>,相比无约束变分能够探测到更多的局域极小点。

#!/bin/bash
# 调用: ./crank-linear.sh 质子对数 中子对数 壳层 转动频率 优化次数
# 示例: ./crank-linear.sh 2 2 sd 1 5  对应 Mg-24, ω=1, 优化5次

declare -i Zpair=$1
declare -i Npair=$2
declare shell_label=$3
declare omega_val=$4
declare -i opt_num=$5
declare sys_name=p${Zpair}n${Npair}

declare jsp_data="example/${shell_label}/${shell_label}.jsp"
declare int_file="example/${shell_label}/${shell_label}.pn"

echo "======================================================================="
echo "         线性约束转动优化, ω = ${omega_val}"
echo "-----------------------------------------------------------------------"
./pvpc.x << EOF
CrankLinear
${sys_name}
${Zpair}
${Npair}
${jsp_data}
xpn
${int_file}
y
y
${omega_val}
${opt_num}
EOF

echo "-----------------------------------------------------------------------"
echo "         线性约束转动优化完成"
echo "======================================================================="

cp output/best-proton.pair ${shell_label}pairs/${sys_name}.omega=${omega_val}.proton.pair
cp output/best-neutron.pair ${shell_label}pairs/${sys_name}.omega=${omega_val}.neutron.pair

三、独立投影脚本

对已存储在 sdpairs/pfpairs/ 目录中的配对凝聚态,单独执行角动量投影计算。

#!/bin/bash
# 调用: ./project.sh 质子对数 中子对数 壳层
# 示例: ./project.sh 1 1 sd  对应 Ne-20

declare -i Zpair=$1
declare -i Npair=$2
declare shell_label=$3
declare sys_name=p${Zpair}n${Npair}

declare jsp_data="example/${shell_label}/${shell_label}.jsp"
declare int_file="example/${shell_label}/${shell_label}.pn"
declare p_in=${shell_label}pairs/${sys_name}-best-proton.pair
declare n_in=${shell_label}pairs/${sys_name}-best-neutron.pair

./pvpc.x << EOF
LAP-wo-Pandya
${sys_name}
${Zpair}
${Npair}
${jsp_data}
xpn
${int_file}
y
1
${p_in}  ${n_in}
16
EOF

四、电磁跃迁独立计算脚本

基于已有的配对波函数和本征态信息,单独计算四极跃迁强度。

#!/bin/bash
# 调用: ./transition.sh 质子对数 中子对数 壳层
# 示例: ./transition.sh 1 1 sd  对应 Ne-20

declare -i Zpair=$1
declare -i Npair=$2
declare shell_label=$3
declare sys_name=p${Zpair}n${Npair}

declare jsp_data="example/${shell_label}/${shell_label}.jsp"
declare int_file="example/${shell_label}/${shell_label}.pn"
declare p_in=${shell_label}pairs/${sys_name}-best-proton.pair
declare n_in=${shell_label}pairs/${sys_name}-best-neutron.pair
declare -i unit_sel=1

./pvpc.x << EOF
EMtrans
${sys_name}
${Zpair}
${Npair}
${jsp_data}
xpn
${int_file}
y
1
${p_in}  ${n_in}
output/${shell_label}e2.jQt
e
2
1.5  0.5
${unit_sel}
output/${sys_name}.eig
EOF

cp output/${sys_name}.trans ${shell_label}pairs/

五、各脚本功能对照

脚本名称核心功能输入参数
master.sh变分优化 + LAP投影 + B(E2)计算质子对数 中子对数 壳层 优化次数
crank-linear.sh线性约束转动优化质子对数 中子对数 壳层 转动频率 优化次数
project.sh独立角动量投影质子对数 中子对数 壳层
transition.sh独立电磁跃迁计算质子对数 中子对数 壳层

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。