PETOOLS 更新记录
本文记录 PETOOLS 的主要版本更新,重点说明功能变化、问题修复及其对编译、安装和调用程序的影响。各版本按从新到旧的顺序排列。下面的文件路径均以 PETOOLS 源码根目录为起点,其他软件包的路径另行注明。
说明:本文所列更新由 DeepSeek 总结、ChatGPT 整理,属于非官方更新记录,并非 PETOOLS 开发者发布的更新说明。对修改目的和实际影响的推测,会在文中单独说明。
最近记录版本:petools-20260707
本文更新日期:2026-11-08
20260707
- 对比版本:
20260516。
本次修正小矩阵乘法在非方阵输入下的列循环范围,新增对称矩阵缩放例程,并调整文件加锁时的错误处理。
更新内容
-
修复|非方阵乘法的计算范围:
MUL_MM_ST_I在第一个矩阵为 2–7 阶时,原来使用输出矩阵的行数M3控制列循环,现在改用列数N3。旧版在输出列数多于行数时会漏算末尾的列,列数少于行数时则会越界访问数组;方阵计算不受这处错误影响。
对应文件:matvec/mul_mm_st_i.f。 -
新增|对称矩阵缩放例程:新增
SCAL_MAT_S和UNSCAL_MAT_S,并加入matvec的编译列表。两者均处理按上三角压缩存储格式保存的对称矩阵。SCAL_MAT_S取各对角元的平方根作为缩放因子,将矩阵元素除以相应的两个因子,使主对角元变为 1,并返回缩放向量;UNSCAL_MAT_S则使用传入的缩放向量进行同样的除法。
对应文件:matvec/scal_mat_s.f、matvec/makefile。 -
调整|锁文件创建失败后的重试:
SET_READ_LOCK和SET_WRITE_LOCK在创建用于协调进程读写的锁文件时,若返回EPERM,会从创建权限中去掉S_ISGID(setgid)位后重试;若重试时文件已存在,则改为只读打开。旧版遇到EPERM会直接报错。系统常量查询程序也增加了对EPERM的支持。这项调整针对EPERM,并未增加对EACCES的重试处理。
对应文件:pet_util/set_read_lock.f、pet_util/set_write_lock.f、pet_util/get_system_constant.c。 -
调整|加锁例程的错误码:配合新增的重试分支,部分错误码重新编号。
SET_READ_LOCK使用的错误码由1111–1117扩展为1111–1120,SET_WRITE_LOCK由1011–1018扩展为1011–1021。例程的调用参数没有变化。
对应文件:pet_util/set_read_lock.f、pet_util/set_write_lock.f。 -
调整|B 样条参数说明:将多个例程注释中节点编号参数
KNOT的类型从REAL*8改为INTEGER*4,与实际声明一致,并补充节点的说明。此次只修改注释,没有改变计算方法或调用接口。
对应文件:pet_util/bspl.f。 -
新增|矩阵运算计时记录:增加 Xeon Platinum 8180 平台的
INVS和matvec计时记录,并在已有的 Xeon 6144 记录中补充 500000 阶矩阵的INVS计时结果。这些是随包提供的测试记录,不代表本次修改提高了运算速度。
对应文件:example/cpu_invs_intel8180_56cores.txt、example/matvec_timer_xeon_8180_56cores.txt、example/cpu_invs_intel6144_16cores.txt。 -
移除|编辑器备份文件:删除
#mul_mm_ii_i.f#和cheb.f~,对应的正式源文件仍然保留。
对应文件:matvec/#mul_mm_ii_i.f#、matvec/cheb.f~。
使用提示
-
使用
MUL_MM_ST_I处理上述非方阵组合的程序,应更新 PETOOLS 库;静态链接的程序还需要重新链接,才能使用修正后的代码。已核对的 pSolve20261015中,utils/har_pos/transform_harpos.f和utils/spl_pos/spl_to_uen.f均按方阵调用,不受这处错误影响。 -
UNSCAL_MAT_S可以用于将缩放矩阵的逆转换为原矩阵的逆。设原矩阵 $A$ 可逆,$D$ 为对角矩阵,其主对角元为 $A$ 对应主对角元的平方根,则缩放后有 $C=D^{-1}AD^{-1}$,从而 $A^{-1}=D^{-1}C^{-1}D^{-1}$。在这一流程中,应先对缩放矩阵求逆,再调用UNSCAL_MAT_S;将两个例程直接连续调用,并不会恢复原矩阵。对应代码见matvec/scal_mat_s.f。 -
新增缩放例程对主对角元和矩阵规模有限制。
SCAL_MAT_S要求主对角元不小于 $1.2\times10^{-63}$、不大于 $10^{64}$,否则报错返回。两个例程用来遍历压缩存储数组的下标ID均为INTEGER*4;矩阵阶数达到 65536 时,压缩存储的元素数已超过该类型的上限。处理这种规模的矩阵前,需要扩大下标变量的取值范围,并核对相关下标计算。对应代码见matvec/scal_mat_s.f。 -
加锁例程的新增重试分支有一处变量使用错误。
pet_util/set_write_lock.f在首次创建 I/O 锁文件返回EPERM、再次创建返回EEXIST后,将只读打开的结果存入了FD_READ_LOCK,应为FD_IO_LOCK。即使文件成功打开,后者仍为负值,后续也无法正确加锁。已核对的 pSolve20261015和 VTD20260812中,相关数据读取程序在加锁失败时会报错返回。 -
非 GNU 编译分支需要修正变量名。
pet_util/set_read_lock.f中的MODE_FLAGS_NOIGSID、pet_util/set_write_lock.f中的MODE_FLAGS_NOSGID都应与声明统一为MODE_FLAGS_NOISGID。此外,set_read_lock.f仍保留旧版已有的.OR缺少末尾句点的问题。采用包内 ifort 配置时会进入这些分支,应先修正;定义了GNU的分支不受这些拼写错误影响。 -
如果调用程序或日志分析脚本按具体错误码判断加锁失败的原因,需要同步核对新的编号。在已核对的 pSolve
20261015和 VTD20260812调用处,程序只判断返回值是否非零,不依赖这些具体编号。
20260516
- 对比版本:
20250622。
本次新增安装信息查询工具,将版本和路径配置集中到包含文件中,并扩充 DiaGI 调色板。其余改动主要涉及注释、计时记录和编辑器备份文件。
更新内容
-
调整|版本和路径配置的生成方式:配置脚本不再重写
pet_util/petools_vers.f,改为根据include/petools_local.templ生成include/petools_local.i,保存版本号、版本标签、安装根目录、源码根目录和文档目录。PETOOLS_VERS从这个包含文件读取标签,调用参数不变;本版返回的标签为petools 20260516。
对应文件:configure、support/config.csh、include/petools_local.templ、include/petools_local.i、pet_util/petools_vers.f。 -
新增|安装信息查询接口和命令行工具:新增子程序
PETOOLS_INQ(INQ, ANS)和命令行程序petools_inq,可查询版本号、版本标签及相关目录。构建规则增加包含文件搜索路径和查询程序目标,安装与卸载规则也加入了这个程序。查询工具的安装命令目前位于启用 PGPLOT 的条件分支中。
对应文件:pet_util/petools_vers.f、pet_util/petools_inq.f、pet_util/makefile、Makefile.in2。 -
新增与调整|DiaGI 调色板:
DEFINE_PALETTE增加ITYP=9–14六个可选编号,并加入新的 RGB 数据表。12–14 号将数据表的节点顺序反转,再交给 PGPLOT 生成颜色;其中 12 号还调整了 RGB 通道顺序。原有 1 号调色板的灰度赋值语句被删除,这处改动存在问题,见使用提示。
对应文件:diagi/define_palette.f。 -
新增|矩阵运算计时记录:增加 AMD 7995、96 核配置的
INVS记录,以及 Xeon 6144、16 核配置的INVS和matvec记录。这些是随包提供的参考数据,不表示本次更新改变了矩阵算法或提高了运算速度。
对应文件:example/cpu_invs_amd7995_96cores.txt、example/cpu_invs_intel6144_16cores.txt、example/matvec_timer_xeon_6144_16cores.txt。 -
调整|日期转换例程的注释:修正英文拼写,并将一行已经被注释掉的调试语句从单个
!改为!!。日期计算方法和允许的日期范围没有变化。
对应文件:pet_util/jd_to_date.f。 -
移除|编辑器备份文件:删除
pet_util/下 12 个自动保存或备份文件,以及 3 个 Emacs 锁文件。正式源文件仍然保留;新版另包含自动保存文件testware/#matvec_test.csh#。
对应文件:pet_util/下#date_to_time.f#、#ebspl.f#、#ebspl_lsq_cns.f#、#get_cdate.f#、#list.f#、#lspline.f#、#multi_index.f#、#spl8.f#、ebspl.f~、ebspl_lsq_cns.f~、error.f~、get_file_from_dir.f~,以及testware/#matvec_test.csh#。
使用提示
petools_inq 每次读取第一个命令行参数。查询选项及含义如下;省略 -- 也可使用。直接调用 PETOOLS_INQ 时,使用相同的查询字符串。
| 选项 | 返回内容 |
|---|---|
--version |
版本号,本版为 20260516 |
--label |
版本标签,本版为 petools 20260516 |
--prefix |
配置时指定的安装根目录 |
--bindir |
安装根目录下的 bin 目录 |
--root |
配置时记录的 PETOOLS 源码根目录 |
--doc |
上述源码根目录下的 doc 目录 |
-
升级后应重新运行
configure并重新编译。随包的include/petools_local.i带有打包机器的路径,例如/opt64和/f1/progs/petools_20260516。查询工具返回的是配置时确定、编译进程序的值,移动安装目录不会自动更新这些路径。尤其是--doc返回源码根目录下的doc,并非安装根目录下的doc。对应代码见support/config.csh和pet_util/petools_vers.f。 -
Makefile.in2仅在PETOOLS_PGPLOT=YES时,将bin/petools_inq复制到安装目录。关闭绘图支持时,这条安装命令不会执行。如需同时安装查询工具,应将该复制命令移到 PGPLOT 条件分支之外。 -
查询接口没有错误状态参数。遇到不支持的查询字符串时,
PETOOLS_INQ不修改ANS;调用端应先初始化返回字符串或自行检查选项,避免误用上一次的结果。命令行程序在无参数时明确退出并返回 1,但遇到未知参数时只打印提示,没有显式设置非零退出状态。自动化脚本不能仅凭退出状态判断这次查询是否有效。对应代码见pet_util/petools_vers.f、pet_util/petools_inq.f。 -
1 号调色板原来逐个计算灰度值,新版将三条 RGB 赋值替换为
CONTINUE,后面却仍调用PGSCR设置颜色。该分支已无法按原公式生成灰度渐变,使用前应恢复相应赋值。对应代码见diagi/define_palette.f。 -
9 号调色板先调用
PGCTAB,使用PL/PR/PG/PB表的前 9 个节点,然后立即返回。后面的ITYP=9灰度分支实际上不会执行,因此不能把 9 号直接当作灰度调色板。对应代码见diagi/define_palette.f。 -
12 号和 14 号使用同一组 V 数据表,但通道对应关系不同:12 号按
R←VB、G←VR、B←VG赋值,14 号按R←VR、G←VG、B←VB赋值。交换通道可以得到另一套配色,不能仅据此认定写错;源码也没有给这些新编号标注通用调色板名称,不宜自行命名。对应代码见diagi/define_palette.f。
20250622
- 对比版本:
20210707。
这两份源码包之间的累计改动主要涉及配置与安装、矩阵和样条计算,以及 DiaGI 绘图。大部分文件删除是因为 PGPLOT 源码不再随包提供,绘图功能仍然保留。
更新内容
-
调整|PGPLOT 的构建方式:不再随包提供完整的
pgplot/源码目录,改为提供pgplot-01.patch和补丁说明。配置时通过--with-pgplot_tarball=...指定 PGPLOT 源码压缩包,由配置脚本解压、应用补丁,再调用新的构建脚本编译。
对应文件:configure、support/config.csh、support/make_pgplot522.csh、pgplot-01.patch、pgplot_mods.txt。 -
调整|PNG 支持与链接设置:启用 PGPLOT 的 PNG 驱动,新增 libpng 的编译和链接检查,可通过
--with-png=...指定其安装根目录。共享库链接命令补充配置中指定的 X11、BLAS 等依赖,并修正CURSESE_LIB的拼写。配置脚本还增加了供静态链接使用的变量。
对应文件:configure、support/config.csh、support/check_png.csh、support/check_png.mak、support/pgplot522_driver.list、Makefile.in2。 -
修复|C 编译器识别:查询 C 编译器厂商和版本时,改用
MK5_CC,修正原来误用 Fortran 编译器变量MK5_FC的问题。配置时还通过预处理宏指定选用的 BLAS 实现。
对应文件:support/compile_var.csh、support/config.csh。 -
调整|安装目录与生成文件:PGPLOT 字体和 RGB 颜色表改为安装到安装根目录下的
share/,DiaGI 帮助文件安装到doc/。源码包不再携带已经生成的include/matvec.i、include/diagi.i、include/diagi_local.i和include/solve_paths.i,这些文件仍由配置脚本根据模板生成。
对应文件:Makefile.in2、support/config.csh、include/diagi_local.templ,以及上述四个被移出源码包的包含文件。 -
新增|DiaGI 的 PNG 输出和更小的图形窗口:设备表由 11 项扩展为 15 项,增加
TINY窗口和三种尺寸的 PNG 输出,并重新排列设备编号。PNG 输出会设置图像宽度和高度,多图窗口的设备编号也随之调整。
对应文件:include/diagi.templ、diagi/diagi.f、diagi/diagi_met.f、diagi/diagi_prn.f、diagi/multi_diagi.f。 -
新增|DiaGI 配色文件:可用环境变量
DIAGI_COLOR指定配色文件;未设置时,读取安装目录中的share/sgdass_color_default.txt。包内另提供 cividis 和灰度配色。DIAGI_CLS增加错误状态参数IUER,用于报告文件读取和解析错误。
对应文件:diagi/diagi.f、include/diagi.templ、support/sgdass_color_default.txt、support/sgdass_color_cividis.txt、support/sgdass_color_grey.txt、Makefile.in2。 -
修复|OpenMP 线程数的保存与恢复:矩阵乘法和多维 B 样条例程改用
OMP_GET_MAX_THREADS()保存调用前的线程数设置。旧版使用的OMP_GET_NUM_THREADS()在串行部分返回 1,例程结束时用这个值恢复线程数设置,可能使后续并行计算只使用一个线程。
对应文件:matvec/mul_mm_ii_s.f、matvec/mul_mm_is_i.f、matvec/mul_mm_it_s.f、matvec/mul_mm_si_i.f、matvec/mul_mm_ss_i.f、matvec/mul_mm_ss_s.f、matvec/mul_mm_st_i.f、matvec/mul_mm_ti_s.f、matvec/mul_mm_ts_i.f;pet_util/bspl4_2d.f、pet_util/bspl4_3d.f、pet_util/bspl4_4d.f、pet_util/bspl_2d.f、pet_util/bspl_3d.f、pet_util/bspl_4d.f。相关函数的语义见 OpenMP 说明。 -
调整|矩阵元素下标类型:
R8ELEM_ADD和R8ELEM_SUB的两个下标参数由INTEGER*4改为ADDRESS__TYPE,使其宽度与构建时采用的地址类型一致。调用端需要使用相同宽度的整数参数。
对应文件:matvec/vec.f。 -
调整|矩阵例程的调用与参数检查:
DPPCO不再按矩阵阶数选择DPPCO_VEC或DPPCO_BLAS,统一调用DPPCO_BLAS。MUL_MM_SS_S则去掉了读取IUER前的PRESENT和地址可读性检查,现在直接依据其值是否为-8设置更新标志FL_UPDATE。
对应文件:matvec/dppco.f、matvec/mul_mm_ss_s.f。 -
修复|三维、四维 B 样条求值的返回值和数组长度:在节点索引小于 1 的分支中,改为给函数返回值赋值
-1.E30,修正原来写入VAL的错误。四维版本的INDS和DIMS也由长度 3 改为长度 4,与实际访问一致;单精度和双精度版本均作了修改。
对应文件:pet_util/bsple3_3d.f、pet_util/bsple3_3d_r4.f、pet_util/bsple3_4d.f、pet_util/bsple3_4d_r4.f。 -
调整|B 样条右端点附近的求值位置:一维至四维系数计算例程在建立末端边界方程时,将末端节点值乘以
1-EPS后求值,其中EPS从约1e-6改为1e-15。求值位置因此更接近末端节点,求得的样条系数也可能改变。
对应文件:pet_util/bspl_1d.f、pet_util/bspl_2d.f、pet_util/bspl_3d.f、pet_util/bspl_4d.f。 -
新增|B 样条积分与矩计算:增加对 B 样条连续积分两次、三次的函数
BSPL_INT2、BSPL_INT3,一阶、二阶矩函数BSPL_MOM1、BSPL_MOM2,以及可同时计算多个积分上限对应积分值的MULTI_SPL_INT。对于 B 样条展开,还增加了EBSPL_INT_R8、EBSPL_JNT_R8和指定区间积分的EBSPL_INT_RANGE_R8。
对应文件:pet_util/bspl.f、pet_util/ebspl.f。 -
调整|带约束的 B 样条拟合:
EBSPL_LSQ_CNS和EBSPL_WLSQ_CNS增加对数据点数和样条次数的检查,并判断数据点数是否满足拟合要求;首尾数据点也通过节点查找确定所在区间,端点查找失败时先尝试小幅调整求值位置,仍失败则报错。EBSPL_LSQ_CNS3_VEC改为先把各分量的数据复制到连续存储的数组,再用于累加法方程。
对应文件:pet_util/ebspl_lsq_cns.f、pet_util/ebspl_lsq_cns3_vec.f。 -
新增|多项式和样条辅助计算:增加
CHMAP,将切比雪夫展开系数转换为按自变量幂次展开的多项式系数;增加POLY_SOLVE_SIMPLE、POLY_SOLVE_VAND、POLY_SOLVE_NDD三个多项式系数求解例程,以及计算三次样条三阶导数的D3SPL8。
对应文件:pet_util/che.f、pet_util/poly_solve_stable.f、pet_util/spl8.f、pet_util/makefile。 -
新增|错误处理模式设置:增加
ERR_MODE和GET_ERR_MODE,并在ERROR__COMMON公共块中加入模式变量。该设置控制ERR_PASS的地址可读性检查,以及ERR_LOG在错误码为零时的地址可写性检查。初始化时采用NO_PROBE;调用ERR_MODE('PROBE')可启用这些检查。文件头中“默认检查”的说明与初始化代码不一致。
对应文件:pet_util/error.f。 -
调整|高斯滤波的数据阈值:
GAUSSIAN_FILTER新增第六个参数VAL_LIM,用于控制哪些输入值参与滤波。旧版固定要求输入值小于80.0;新版使用传入的阈值,只有检测到参数地址不可读时才改用1.0D307。判断条件仍是数值小于阈值,并非绝对值小于阈值。
对应文件:pet_util/filters.f。 -
调整|随机数的缩放系数:
RGAUSS的系数从0.429609646422957D0改为0.43300702。这会改变生成值的幅度;即使使用相同的随机序列,结果也会受缩放系数变化的影响。
对应文件:pet_util/alg1.f。 -
调整|由直角坐标计算球面经纬度时的边界处理:
DECPOL增加向量模长检查,小于1e-15时报告错误;对接近反正弦函数定义域端点的情况增加判断。极点处仍存在除零问题,见使用提示。
对应文件:pet_util/decpol.f。 -
新增|离群值剔除和坐标转换例程:
DESIG_W8、DESIG_TRW8分别根据数据相对均值和线性趋势的偏差,迭代剔除离群值。GEOD_TO_CFS将大地纬度、经度和椭球高转换为地心直角坐标,角度使用弧度,长度使用米;内置参考椭球的长半轴为6378136.3 m、扁率1/298.257。另增加天文常数包含文件astro_constants.i。
对应文件:pet_util/desig.f、pet_util/geod_to_cfs.f、include/astro_constants.i、pet_util/makefile。 -
修复与新增|字符串和列表处理:
LTM_DIF在要求完整匹配时,不再仅凭长度较短一方的前缀相同就认定匹配;有序列表中未找到目标元素时,改为直接返回,避免后续检查使用无效下标。字符串查找IFIND_SORT_CH改为按查询字符串的长度比较。另增加MULTI_INDICES,将子串出现的位置写入数组;增加整数的 26 进制编码、解码和指定二进制位范围的奇偶校验例程。
对应文件:pet_util/cha.f、pet_util/list.f、pet_util/multi_index.f、pet_util/base26.f、pet_util/bit_checksum.f。 -
调整|文件、日期与终端工具:
GET_UNIT的逻辑单元号搜索范围由41–127扩展为41–511;目录遍历深度上限由 64 增至 256,名称缓冲区由 256 增至 512 字节;增加目录是否存在的查询函数。JD_TO_DATE的NDAYS_MAX从 18263 增至 36525,下限不变。macOS 分支增加可执行文件路径查询,以及每块最多2000000000字节的分块读写;终端读键改用termios接口。
对应文件:pet_util/get_unit.f、pet_util/get_file_from_dir.f、pet_util/is_dir_exist.f、pet_util/jd_to_date.f、pet_util/get_my_exe_path.f、pet_util/io64.f、pet_util/itti.c、pet_util/itti_chr.c、pet_util/itti_chr_del.c。 -
调整|许可说明和随包资料:增加作者、版权和 NOSA 许可文件,批量更新源文件中的版权说明;同步调整安装和绘图文档,并补充矩阵运算计时记录。这些文件头和计时资料的变化本身不表示计算方法或性能发生了改变。
对应文件:AUTHORS、COPYRIGHT、LICENSE.pdf、INSTALL、doc/petools_configure.txt、doc/pgplot.doc;新增计时记录为example/matvec_timer_amd_3990x_64core.txt、example/matvec_timer_amd_5700u.txt、example/matvec_timer_amd_7995wx_96cores.txt、example/matvec_timer_i9_9980hk.txt。
使用提示
-
构建绘图部分时,需要准备与补丁匹配的 PGPLOT 源码压缩包,并安装 libpng 的头文件和库。
PETOOLS_PGPLOT_TARBALL默认值是$HOME,不能代替实际压缩包路径。support/config.csh的补丁失败分支没有退出,随后还会复制pgplot_mods.txt;这个标记文件一旦存在,下次配置就会跳过补丁。因此,配置继续执行并不能证明补丁已完整应用,应检查补丁执行日志及未能应用的修改。 -
使用 DiaGI 的程序需同步更新设备编号、配色文件和调用参数。
DIAGI_CLS现在需要第二个参数IUER;默认配色文件缺失会报错返回,不会自动退回内置配色。旧环境中的PGPLOT_FONT、PGPLOT_RGB也应与新的share/路径一致。对应代码见include/diagi.templ、diagi/diagi.f和support/config.csh。 -
调用
GAUSSIAN_FILTER时应显式传入第六个REAL*8参数。它没有声明为OPTIONAL,参数地址检查也不能保证旧的五参数调用一定使用1.0D307。如需保持旧版的筛选条件,可明确传入80.0D0。对应代码见pet_util/filters.f。 -
MUL_MM_SS_S现在会直接读取IUER,调用时应传入有效变量。R8ELEM_ADD、R8ELEM_SUB的下标类型也发生了变化,调用端的实参类型和显式接口声明必须与ADDRESS__TYPE一致,不能只替换库文件而保留不匹配的参数声明。对应代码见matvec/mul_mm_ss_s.f、matvec/vec.f。 -
GET_ERR_MODE的返回语句写成了GET_ERR_MODE = ERROR_MODE_NO_PROBE,因此无论是否调用过ERR_MODE('PROBE'),它都会返回固定常数,无法反映当前模式。若要用它查询或保存模式,应改为返回公共块中的ERROR_MODE。公共块的内存布局也已改变,直接引用ERROR__COMMON的外部代码需要同步更新。对应代码见pet_util/error.f。 -
DECPOL尚未完整处理极点。即使已把纬度设为 $\pm\pi/2$,后面仍会计算SS(2)/sqrt(1-SS(3)**2);对(0,0,1)或(0,0,-1),这里仍是0/0。极点处的经度本来就没有唯一值,应单独处理这一分支,并约定返回值。对应代码见pet_util/decpol.f。 -
新增的
DESIG_TRW8在剔除观测后更新法方程时,仍将该观测对SDT和STT的贡献加入累加量,正确处理应为减去这些贡献,否则新的直线参数不等于用保留观测重新拟合的结果。独立代入更新公式:取T=(0,1,2,3,4)、X=(2,105,8,11,14),误差均为 1,NSIG=3;剔除第二点后,其余点严格满足X=2+3T,但现有更新公式给出的斜率是-735/43,而不是 3。另外,DESIG_W8的均值计算使用1/E权重,不能直接按逆方差加权来理解。对应代码见pet_util/desig.f。 -
新增常数
AU__METERS的值为149597870.700D0,实际对应天文单位的千米数,与变量名所指的米不符。按 IAU 2012 年 B2 号决议,一个天文单位为149597870700 m;若调用端直接把当前常数当作米,所得长度将只有正确值的千分之一。使用前应核对调用端单位,再统一修正定义和相关换算。对应文件:include/astro_constants.i。 -
macOS 的
READ64分块分支仍有提前遇到文件末尾时的处理问题:在最后一块之前,若底层READ返回 0,代码会把请求长度计入已读字节,而后继续循环。WRITE64在返回 0 时也有类似处理。处理这类情况时,仍需修正相应的返回值判断和字节计数。对应代码见pet_util/io64.f。 -
这里按源码包的版本标识
20250622归档。包内部分文件的日期晚于这个标识,例如pet_util/multi_index.f中新增例程的注释日期为2025-11-15,include/diagi.templ为2025-12-06。这些日期与包内版本号并不一致,不能把上述全部改动认定为在 2025 年 6 月 22 日当天发布。