固定边界 / 参数化建模
VEQ 手册:先建立可比较的案例,再讨论物理含义
VEQ 用参数化的固定边界模型快速生成 Grad–Shafranov 平衡、磁通面和剖面。本手册把 VEQ Studio 的界面解释为一个有限维参数化 PDE 求解器,而不是一组彼此独立的输入框:先讲模型在数学上"求什么",再讲字段、操作与诊断判读。
阅读目标:读完后,应能沿着下面的因果链解释 VEQ 的输入、求解和输出:
固定 LCFS 与源项
|
v
MXH 边界值 + 径向 Chebyshev 拓扑
|
v
内部系数打包为未知向量 x
|
v
AᵀWg(x) = 0 的非线性投影系统
|
v
求解状态、投影残差、逐点诊断与几何诊断
本手册重点回答一个常见但容易混淆的问题:"LCFS 角映射系数"与"内部 profile 优化系数数量"有什么联系,又为什么它们绝不是同一种参数?
第一部分:用途与模型原理
1. 用途与边界
1.1 适合回答的问题
- 给定 LCFS 形状与源项时,磁通面和典型剖面如何变化?
- 调整 R₀、a、κ、δ、Iₚ 或峰化参数后,方案之间是否仍具有可比性?
- 方程一致性误差主要位于芯部、边缘还是局部区域?
1.2 不能由 VEQ 单独回答
- 该位形是否满足工程约束、线圈可实现性或完整的自由边界条件?
- 该平衡是否具备 MHD 稳定性、输运可行性或与诊断数据的一致性?
- 内部归一化误差是否小到足以成为物理"通过"判据?
判读原则:"已收敛"表示本次数值迭代满足其收敛条件;"平衡方程一致性"描述网格上的方程残余。两者都不是实验真实性或工程可行性的证明。
2. VEQ 究竟在求什么?
2.1 固定边界 Grad–Shafranov 问题
在轴对称近似下,托卡马克横截面上的平衡可写为 Grad–Shafranov(GS)方程
$$ \Delta^*\psi \equiv R\frac{\partial}{\partial R} \left(\frac{1}{R}\frac{\partial\psi}{\partial R}\right) +\frac{\partial^2\psi}{\partial Z^2} = -\mu_0 R J_\phi(R,Z;\psi). $$
这里 $(R,Z)$ 是截面的柱坐标,$\psi$ 是极向磁通函数。右端的电流密度通常由关于磁通的若干一维源 profile 构成,因此这是一个带特定非线性结构的椭圆型 PDE。
VEQ 处理的是固定边界版本:最外层闭合磁面(last closed flux surface, LCFS)的形状先给定;求解器在这个边界内寻找嵌套磁面与通量 profile,使它们满足平衡关系。可以把任务概括为:
给定 LCFS 的几何形状和源项描述,寻找一族内部磁面及其 profile,使得到的二维构型与 GS 平衡相容。
2.2 传统离散的未知量与 VEQ 的未知量
若直接在 $(R,Z)$ 网格上离散,未知量自然是很多节点上的 $\psi$ 值;非线性迭代围绕一个高维离散场进行。VEQ 采用不同的未知量选择:先假定内部存在一族可由紧凑参数描述的嵌套磁面,再把未知量限制为这族表示中的内部径向 profile 系数。
这不是说几何被固定不动。相反,源项或输入边界改变时,求解器仍会找到另一组系数,内部磁面也会随之改变。所谓"紧凑"是指:
- 表示家族及其截断方式由用户选择;
- 每个具体平衡对应这个家族中的一组不同系数;
- 求解的有限维未知量是这些可变系数,而非一张被冻结的几何图。
因此,问题的关键变成:怎样选一套既能保持 LCFS、又能以少量系数描述内部磁面的参数化?
3. 紧凑表示:MXH 角映射加径向 Chebyshev profile
3.1 从物理平面到磁面坐标
VEQ 使用 $(\rho,\theta)$ 描述嵌套磁面:
- $\rho\in[0,1]$ 是径向标签;$\rho=0$ 对应磁轴,$\rho=1$ 对应 LCFS;
- $\theta\in[0,2\pi)$ 是沿磁面的极向参数;
- 物理坐标由映射 $(\rho,\theta)\mapsto(R,Z)$ 给出。
在这种组织下,磁通面上的 $\psi$ 只随径向标签变化,而二维几何的复杂性被放入 $R(\rho,\theta)$、$Z(\rho,\theta)$ 的参数化中。VEQ 的紧凑性来自对这张映射的结构化选择。
3.2 MXH:展开畸变角,不直接展开边界坐标
首先定义畸变极向角
$$ \bar\theta(\rho,\theta) = \theta+c_0(\rho) +\sum_{m=1}^{M}c_m(\rho)\cos(m\theta) +\sum_{n=1}^{N}s_n(\rho)\sin(n\theta). $$
再以它构造磁面:
$$ R(\rho,\theta) =R_0+a\left[h(\rho)+\rho\cos\bar\theta(\rho,\theta)\right], $$
$$ Z(\rho,\theta) =Z_0+a\left[v(\rho)-\rho\kappa(\rho)\sin\theta\right]. $$
其中 $R_0,Z_0,a$ 是 LCFS 参数化所用的参考中心和长度尺度;$h,v,\kappa,c_m,s_n$ 是随 $\rho$ 演化的 profile。注意 $Z$ 式中的负号:它遵循当前 VEQ/VEQPy 参数化的极向角约定,不能随意替换为正号。
这解释了一个术语问题。$c_m,s_n$ 虽然乘在 $\cos(m\theta),\sin(n\theta)$ 上,数学形式上属于三角展开,但它们不应被产品语义地称为"直接 Fourier 边界坐标系数":
- 标准 Fourier 边界表示直接展开 $R(\theta)$ 和 $Z(\theta)$;
- MXH 表示展开的是畸变角 $\bar\theta$,然后把它放进 $\cos\bar\theta$;
- 因而界面中的 $c/s$ 更准确的名称是 MXH 角映射系数、MXH harmonics 或 shape coefficients。
直观地说,直接 Fourier 表示是在一张不动的坐标纸上叠加许多波形来画曲线;MXH 则先扭曲角坐标,再在扭曲后的坐标中画一个简单的基准形状。它改变的是展开的对象,而不仅是"少用了几个 Fourier 项"。
3.3 径向 Chebyshev:把固定边界写进基函数
所有径向 profile 都使用以 $\rho^2$ 为变量的移位 Chebyshev 基。令
$$ \xi=2\rho^2-1, \qquad \nu_l(\rho)=(1-\rho^2)T_l(\xi), $$
其中 $T_l$ 是第一类 Chebyshev 多项式。最重要的性质是
$$ \nu_l(1)=0. $$
也就是说,任意由 $\nu_l$ 组成的内部修正项在 LCFS 自动消失。典型 profile 可写成
$$ f(\rho)=f_a+\sum_{l=0}^{N_f-1} f_l\nu_l(\rho), $$
其中 $f_a$ 是边界 offset,$N_f$ 是该 profile 所使用的内部系数数量。于是无论 $f_l$ 如何变化,始终有 $f(1)=f_a$。
真实的 MXH family 还加入了各自的边界与轴正则结构。例如
$$ h(\rho)=(1-\rho^2)\sum_l h_lT_l(\xi), \qquad v(\rho)=(1-\rho^2)\sum_l v_lT_l(\xi), $$
$$ \kappa(\rho)=\kappa_a+(1-\rho^2)\sum_l\kappa_lT_l(\xi), $$
$$ c_m(\rho)=\rho^{K_m} \left[c_{ma}+(1-\rho^2)\sum_lc_{ml}T_l(\xi)\right], \qquad s_n(\rho)=\rho^{K_n} \left[s_{na}+(1-\rho^2)\sum_ls_{nl}T_l(\xi)\right] \quad(m,n\ge1). $$
其中 $c_{ma},s_{na}$ 是 imposed LCFS values;$\rho^{K_m},\rho^{K_n}$ 使高阶谐波向磁轴规则衰减。当前 VEQ 的默认正则幂取 $K_m=m,K_n=n$。
这套构造带来两件对理解网页十分重要的事:
- 内部系数不能改动 LCFS。因子 $(1-\rho^2)$ 已经把这一点编码进表示。
- "没有内部系数"不等于"该 profile 处处为零"。如果 profile 有边界 offset,例如 $\kappa_a,c_{ma},s_{na}$,即使不让它拥有可优化的内部修正,它仍保留由 offset 和正则延拓确定的基线。
关于 count 与论文记号:网站的 count 是系数向量长度 $N_f$,对应 $l=0,\ldots,N_f-1$。若论文用 $L_f$ 表示最高多项式编号,则 $N_f=L_f+1$。因此 count 不是"多项式的最高阶数"。
3.4 十七条径向 profile
径向 profile 是一个以 $\rho\in[0,1]$ 为自变量的一维函数,描述某个几何量从磁轴($\rho=0$)到 LCFS($\rho=1$)的连续变化。$\rho$ 是径向标签——它不是物理长度,而是标记"你正在看哪一层嵌套磁面"。VEQ 不是直接离散二维 $(R,Z)$ 平面上的几万个网格点,而是把整个等离子体截面表示为一族嵌套闭合曲线;要画出整族曲线,需要知道每个 $\rho$ 处的曲线形状——这正是径向 profile 的作用。
磁面构造公式中共有 17 个径向 profile,每个都是 $\rho$ 的函数:
| Profile | 含义 | 控制什么 |
|---|---|---|
| $h(\rho)$ | 径向偏移 | 整族磁面在 $R$ 方向的整体平移随 $\rho$ 的变化 |
| $v(\rho)$ | 垂直偏移 | 整族磁面在 $Z$ 方向的整体平移随 $\rho$ 的变化 |
| $\kappa(\rho)$ | 拉长比 | 截面在 $Z$ 方向被拉伸的程度随 $\rho$ 的变化 |
| $c_0(\rho)$ | 零阶角偏移 | 极向角映射的基准相位随 $\rho$ 的变化 |
| $c_m(\rho)$,$m=1,\dots,6$ | 余弦角映射 | 第 $m$ 阶极向角扭曲随 $\rho$ 的变化 |
| $s_n(\rho)$,$n=1,\dots,6$ | 正弦角映射 | 第 $n$ 阶极向角扭曲随 $\rho$ 的变化 |
psin$(\rho)$ | 通量-标签映射 | 归一化极向磁通 $\hat\psi$ 与 $\rho$ 之间的单调映射 |
具体例子:$\kappa(\rho)$。假设 LCFS 的拉长比 $\kappa_a = 2.0$,即 $\kappa(1)=2.0$ 是固定的。如果 $\kappa(\rho)$ 从磁轴到边界一直等于 $2.0$,所有内部磁面的拉长比都和边界相同;如果 $\kappa(\rho)$ 在磁轴附近接近 $1.0$,然后向外逐渐增大到 $2.0$,说明截面从中心的近圆形逐渐被拉长。$\kappa(\rho)$ 这条曲线就描述了这种"从圆到椭圆"的过渡方式——它是一条完整的函数,不是单个数字。
4. 一个表示,两个参数层:边界值与内部拓扑
VEQ Studio 的核心输入设计可以从上面的公式直接推出。它将参数分成两类,因为它们在数学上承担的角色不同。
4.1 第一层:LCFS MXH 角映射系数是边界值
界面中的 c0a–c6a 与 s0a–s6a 是 $\rho=1$ 上的浮点边界数据,单位为 rad。a 表示 LCFS 处的实际值,例如
$$ \bar\theta(1,\theta) =\theta+c_{0a} +\sum_{m=1}^{6}c_{ma}\cos(m\theta) +\sum_{n=1}^{6}s_{na}\sin(n\theta). $$
在 $h(1)=v(1)=0$ 的约定下,LCFS 简化为
$$ R_{\rm lcfs}(\theta)=R_0+a\cos\bar\theta(1,\theta), \qquad Z_{\rm lcfs}(\theta)=Z_0-a\kappa_a\sin\theta. $$
因此这些输入是固定边界条件:它们在一次非线性求解中不会作为内部未知量被改写。服务端将其传入 Boundary(c_offsets, s_offsets)。有七个余弦槽和七个正弦槽;但 s0a 固定为零,因为 $\sin(0\theta)=0$,它没有可表示的几何作用。
4.2 第二层:内部 profile count 是模型拓扑
界面中的 Nh、Nv、Nκ、Nc0–Nc6、Ns1–Ns6(导入/导出 JSON 中对应的键为 h、v、k、c0–c6、s1–s6)与隐藏但必需的 psin 都是整数 count。它们不填某个系数的数值,而是回答:
"这个径向 profile 要分配几个可优化的 Chebyshev 系数?"
一条函数曲线包含无穷多个点。VEQ 用 Chebyshev 展开将每条 profile 压缩为有限个系数(见第 3.3 节):
$$ f(\rho) = f_a + \sum_{l=0}^{N_f-1} f_l \cdot \underbrace{(1-\rho^2)\,T_l(2\rho^2-1)}_{\nu_l(\rho)}. $$
这里 $f_a$ 是 $\rho=1$ 处的固定边界值(来自 LCFS 输入区),$f_0, f_1, \dots, f_{N_f-1}$ 是 $N_f$ 个可优化的 Chebyshev 系数,$(1-\rho^2)$ 因子使所有内部修正在边界自动归零。count 就是 $N_f$——用来表示这条曲线的可调系数个数。
以 $\kappa$ 为例,若 Nκ = 4(Compact 预设):边界值 $\kappa_a$ 来自基本几何输入,是固定的;内部变化由 $\kappa_0, \kappa_1, \kappa_2, \kappa_3$ 四个系数描述;求解器在非线性迭代中寻找这四个数的最优值。若 Nκ = 0:$\kappa(\rho)$ 没有任何可优化的内部系数,整条曲线退化为仅由边界值和轴正则规则决定的基线延拓——用户不能主动调整它。
"count = 0"不是"该 profile 处处为零"。$h$ 和 $v$ 的边界 offset 本身就是零($h(1)=v(1)=0$),所以 count = 0 意味着 $h(\rho)\equiv 0$、$v(\rho)\equiv 0$。但 $\kappa$ 不同——即使 Nκ = 0,$\kappa(1)=\kappa_a$ 仍然存在,内部磁面仍有一条非平凡的 $\kappa(\rho)$ 基线,只是这条基线不由用户通过 count 控制,而是由表示家族的正则延拓自动确定。
完整物理图像:
rho = 1 (LCFS, boundary fixed)
+-------------------------------------
| kappa(1) = kappa_a <-- from basic geometry
| c_m(1) = c_{ma} <-- from LCFS angular mapping coefficients
| s_n(1) = s_{na} <-- from LCFS angular mapping coefficients
| h(1) = v(1) = 0 <-- by representation convention
|
| <-- interior: Chebyshev coefficients of each profile
| optimized during solve, cannot change rho=1 values
|
rho = 0 (magnetic axis)
换个说法:LCFS 区定义了每条曲线的右端点值;count 区决定每条曲线在到达右端点之前,允许用几个"调节旋钮"来改变它的内部走向。
回到实现层面——若某 profile 的 count 为 $N_f>0$,服务端创建一个长度为 $N_f$、初值为零的系数数组;这些元素会进入非线性未知向量并在求解中更新。若 count 为零,服务端构造 Profile(coeff=None),它成为 passive profile:没有可调的内部修正系数,也不占未知向量(packed vector)的位置。这是一种拓扑或模型复杂度选择,而不是对某个物理量的直接赋值。一个最有用的类比是:
- LCFS 系数值类似"多项式的已知边界常数";
- 内部 count 类似"选择给多项式留多少个待定系数"。
4.3 两层的联系与区别
| 维度 | LCFS MXH 映射系数 | 内部 profile 优化系数数量 |
|---|---|---|
| 数学对象 | 边界调和系数的值 | 径向 Chebyshev 系数的数量 |
| 界面例子 | c2a=-0.1, s1a=0.52 | c2=2, s1=3 |
| 数据类型 | 浮点数,单位 rad | 整数 |
| 作用位置 | 固定在 $\rho=1$ | 决定 $0\le\rho<1$ 的可调修正空间 |
| 求解角色 | 固定输入,不进入未知向量 | 元参数,决定未知向量的块和长度 |
| 求解后 | 原值应由 provenance 回显 | count 不变;同名内部系数的值被求解 |
因此,s1a=0.52 与 s1=3 虽然名字相似,却回答两个完全不同的问题:前者说"LCFS 的一阶正弦角映射值是多少",后者说"内部 $s_1(\rho)$ profile 允许用几个系数调整"。混淆它们,就像把"多项式系数是 0.52"与"多项式保留 3 个未知系数"混为一谈。
4.4 为什么 h、v 没有 LCFS 输入,而 s0 也没有内部 count?
由第 3 节公式可知 $h(1)=v(1)=0$。LCFS 的平移基准已经由 $R_0,Z_0$ 与 $R_0+a\cos\bar\theta$ 的边界定义承担,因此 $h,v$ 只描述内部磁面的径向/垂直偏移,网站只为它们提供内部 count。相反,$\kappa,c_m,s_n$ 可以同时有边界 offset 和内部修正:k 的边界值来自基本几何输入中的 $\kappa_a$;c0a–c6a 与 s1a–s6a 给定 MXH family 的边界值;无 s0 count,因为这一 sine mode 在恒等式上为零。
4.5 count 的现实约束和预设
当前 Studio 对 17 个 profile 使用以下约束:
- 每个 count 是 $0$ 到 $9$ 的整数;
psin必须严格大于 $0$;- 所有 count 之和(packed count)不超过 $64$。
三个预设的 packed count 为:
| 预设 | active profile | packed count |
|---|---|---|
| Compact | psin(4), h(2), k(4), s1(2) | 12 |
| Standard | psin(6), h(3), k(6), s1(3) | 18 |
| Full | 全部 17 个 profile 按当前预设启用 | 36 |
Standard 与 VEQPy 的 minimal_equilibrium 示例一致:除 psin 外还给 $h,\kappa,s_1$ 分配内部系数,使内部磁面能形成 Shafranov 位移和径向形状演化;其余 profile 没有可调内部修正,但带有边界 offset 的 $\kappa$、$c/s$ family 仍按其基线与轴正则规则延拓。
5. δ 与 s1a:一个输入如何跨越多个语义层
delta/s1a 是最适合展示上述分层的例子。它包含至少四种不应混为一谈的量:
用户几何输入 delta
|
| delta mode: s1a = asin(delta)
v
有效 LCFS MXH 系数 s1a
|
| 与其他 c/s 边界项共同定义映射;内部 profile 另行求解
v
求解得到的内部 Chebyshev 系数
|
| 后处理实际磁面
v
诊断量 delta_top, delta_bottom, delta_average
5.1 两种界面模式
- delta 模式:用户给出几何三角度
delta。适配层覆盖有效的s_coefficients[1],令 $s_{1a}=\arcsin(\delta)$。此时s1a只读,delta是用户输入。 - explicit 模式:用户直接输入
s1a的 radian 值。delta字段被禁用,且不参与求解或边界预览。
这个关系只是在简化 Miller-like 情形下的方便转换:当其他 LCFS $c/s$ harmonics 不起作用时,可以把 $\delta$ 与 $s_{1a}$ 联系起来。它不是在一般高阶 MXH 边界下都成立的几何恒等式。特别是,当高阶谐波非零时,由最终磁面极值计算的 delta_top、delta_bottom、delta_average 可以与起初输入的 delta 不同。
5.2 COO 文件拟合的实际边界
网页允许导入 COO 格式离散边界点。此功能完全在浏览器中执行:它在给定 $R_0,Z_0,a,\kappa$ 的条件下,用 Gauss–Newton 型迭代拟合 7 个 $c$ 与 6 个非零阶 $s$,随后切换为 explicit 模式。当前前端的目标函数针对 $R$ 坐标残差构造,最多迭代 10 次,并以小对角正则化求解正规方程。
因此它应理解为"将上传曲线转换为当前 MXH 边界输入的一种本地便利工具",而不是完整的二维边界反演,也不是对 GS 平衡精度的独立认证。坐标文件不会被发送到后端。
6. 从表单到有限维非线性系统
6.1 打包未知量:count 如何决定方程维数
用户提交 JSON 时,LCFS 系数作为边界数组进入 Boundary,而 topology counts 决定哪些 Profile 是 active。所有 active profile 的内部 Chebyshev 系数顺次拼成
$$ \mathbf{x}\in\mathbb{R}^{n}, \qquad n=\sum_f N_f, $$
其中 $n$ 正是 provenance 中的 packed_count。在每次残差评估中,求解器大致执行:
- 将 $\mathbf{x}$ 解包成各 profile 的 Chebyshev 系数;
- 在求解网格上评价 profile、二维几何、度量和源项;
- 组装变换后的 GS 残差密度;
- 将残差投影回 $n$ 个测试方向。
可以用下图理解数据流:
form payload
-> validated topology counts
-> Boundary offsets + active/passive Profiles
-> Problem(route="PF", coordinate="psin")
-> Operator on solve grid
-> Solver for packed vector x
-> solution, provenance, residual and shape diagnostics
前端还会比较请求的 topology/boundary 与响应中的 provenance;不一致的响应不会被当作当前输入的结果接受。
6.2 Petrov–Galerkin 投影:为什么会得到方形系统
设求解网格有 $N$ 个采样点,把每个点上的变换残差密度堆叠为 $\mathbf{g}(\mathbf{x})\in\mathbb{R}^{N}$。VEQ 的主问题不是要求每个采样点都满足 $\mathbf{g}=0$,而是构造测试矩阵 $A\in\mathbb{R}^{N\times n}$ 和积分权重 $W$,求解
$$ \boxed{A^T W\mathbf{g}(\mathbf{x})=0.} $$
即 Petrov–Galerkin 投影方程 AᵀWg = 0。结果是 $n$ 个非线性方程对应 $n$ 个 packed unknowns。拓扑 count 因而不只是页面上的"高级设置":它同时改变
- 允许哪类内部几何/profile 修正;
- 未知向量的长度;
- 投影方程组的维数;
- 模型的表达能力与求解难度。
6.3 全文最重要的残差区分
必须把下式当作解释结果的底线:
$$ \boxed{A^T W\mathbf{g}=0\ \not\Rightarrow\ \mathbf{g}=0.} $$
线性代数上,投影条件只说明 $\mathbf{g}$ 在 $A$ 的测试子空间中的加权分量为零;在其正交补中的分量并没有被这个条件直接约束。因此:
- 小的 projected residual 说明有限维投影系统被解得好;
- 它不能单独证明所有采样点上的 GS 强形式残差都小;
- 两者应被作为不同诊断并列阅读。
Studio 输出的逐点一致性诊断使用
$$ G_{\rm std}=\frac{R}{J}G, $$
其中 $G$ 是变换残差密度,$J$ 是坐标映射的 Jacobian。磁轴处坐标退化,故该统计会排除磁轴行,并只使用有限且 Jacobian 非零的样本。它是 VEQPy 内部归一化的诊断量,不应直接当成与其他代码可无条件比较的物理单位误差。
第二部分:使用指南
7. 快速使用:先从可运行基线开始
本节只回答"怎样操作工作台"。字段背后的数学含义已在第一部分说明,避免把操作步骤与模型定义混在一起。
- 选择预设案例。从页面顶部选择 D 形演示或紧凑托卡马克,先确认边界预览、单位与量级符合预期。
- 采用 Standard 拓扑作为基线。展开"高级参数拓扑",初次使用建议保留 Standard:它与 VEQPy 示例一致,内部磁面能形成 Shafranov 位移和径向形状演化。
- 一次只改变一类变量。先锁定边界几何,再改变 Iₚ、压力份额或峰化;每个基线都保存输入 JSON,避免把多种变化混在一次比较中。
- 运行并依次查看结果。先确认磁通面闭合、平滑且无自交;再看压力、q、环向电流和形状剖面;最后结合收敛状态与逐点诊断。
- 保留可复现证据。保存输入参数;仅在收敛后使用"查看报告"生成带有效输入、图表、诊断与时间戳的独立 HTML 报告。
7.1 最小比较单元
一次只记录一个明确问题,例如"在不变 LCFS 下提高 αₚ 的影响"。同时保存输入 JSON、版本/provenance、收敛状态与报告。
7.2 不要跳过的检查
绿色状态之后仍应检查有效 LCFS 数组、s1 模式、active profiles、packed count、磁面图和强形式误差空间图。
8. 参数与界面参考
本节是操作字段参考;"LCFS 值"和"内部 count"在界面中相邻,但属于不同层次,不能互相替代(见第 4 节)。
| 组别 | 关键输入 | 操作含义与提示 |
|---|---|---|
| 基本几何 | R₀ [m]、a [m]、Z₀ [m]、B₀ [T]、κ、δ | R₀、a 设定位形尺度,Z₀ 是垂直偏移,κ 是拉长比。通常先通过 κ 和 δ 调整基础截面;高阶形状留给确认需要时再使用。 |
| LCFS 映射 | c0a–c6a、s0a–s6a [rad] | MXH 畸变极向角映射的边界系数。s0a 固定为 0。它们定义最外层曲线,不能用下方 N_c/N_s 来"设置"其值。 |
| s1a 来源 | 几何 δ 或显式 s1a | δ 模式以 s1a=asin(δ) 构造简化边界;显式模式以用户输入 s1a 为有效值,δ 不参与求解或 LCFS 预览。 |
| COO 边界 | 每行 R Z 或 R,Z | 浏览器本地拟合离散 LCFS(16–10,000 点、≤2 MB),最多 10 次 Gauss–Newton 迭代;拟合后转为显式 s1a 模式。坐标不会发送到后端。 |
| 源项与约束 | Iₚ [MA]、压力份额、αₚ、αᶠ、质量档 | 峰化指数越大,profile 通常越偏芯。先在同一质量档、同一基线下扫参;Interactive 适合快速探索,标准档用更细网格进行复核。 |
| 内部拓扑 | N_psin、N_h、N_v、N_κ、N_cm、N_sn | 整数 count 选择每个内部径向 profile 的可调 Chebyshev 系数数量。0 表示该 profile 没有可调系数:曲线仍参与平衡计算,内部形状保持基线;count 不是该物理量的数值,也不改变 LCFS 系数。 |
8.1 选择内部自由度
| 策略 | 预设 | 适合的第一步 |
|---|---|---|
| 默认基线 | Standard(与 VEQPy 示例一致) | h/κ/s1 分配了可调系数,内部磁面才有 Shafranov 位移和径向形状演化。 |
| 适度调整 | Compact:N_psin=4、N_h=2、N_κ=4、N_s1=2 | 允许内部径向偏移、拉长和一阶 shaping 的径向演化。 |
| 最大灵活 | Full:17 个 profile,packed count=36 | 需要更高表示自由度时;求解时间和不收敛风险都会增加。 |
调整 count 的经验法则:若误差集中在芯部,先考察 N_psin;若 κ(ψₙ) 的径向形态不符合目标,再考察 N_κ;边缘误差也可能来自边界截断、源项或网格,不能机械地持续增加 N_cm/N_sn。每增加一个 count 都会增大 packed vector。
9. 结果、保存与报告
9.1 建议的查看顺序
provenance:核对有效边界数组、s1_mode、active profiles 与 packed count;求解状态:确认投影系统是否收敛;磁通面:检查闭合、平滑、无自交;剖面:在模型假设与目标工况下阅读压力、q、jφ 以及 κ/δavg/ΔR 的径向演化。
9.2 保存、加载与报告
"保存输入参数"导出边界、源项和拓扑 JSON;"加载输入参数"恢复该基线。收敛后,"查看报告"会打开独立 HTML,包含提交与有效输入、求解摘要、图表、警告、方程一致性诊断、规则型数值提示和 Markdown 导出。
关于 δ:δ 模式中的输入 δ 不必等于结果中的 delta_top、delta_bottom 或 delta_average。后者是由实际磁面极值后处理得到;高阶 LCFS harmonics 非零时,这种差异是预期现象。
第三部分:诊断与判读
10. 把"完成"与"可信"分开阅读
HTTP 成功、存在结果、求解器收敛、投影残差小、逐点一致性良好、几何满足任务目标,是不同层次的事实。它们必须并列检查。将返回结果分为几个层次更安全:
- HTTP 请求成功:服务接受并处理了请求,不等于数学求解成功。
- 存在结果与诊断:即便求解器未报告完全收敛,服务器仍可能返回有限状态和诊断,前端会显示警告。
- solver success / convergence:指定的有限维求解过程满足其返回判据。完整报告受
isConverged()门禁控制。 - 表示和物理适用性:还需要综合查看投影残差、逐点强形式统计、磁面几何、profile 与 warning,判断当前 topology 是否足够表达所需平衡。
10.1 诊断指标
| 指标 | 定义或计算方式 | 应如何使用 |
|---|---|---|
| 残差范数(projected_residual_norm) | 求解器内部有限维投影方程的收敛残差。 | 判断迭代状态;小值不自动意味着截面每一点的误差都小。 |
| 平衡方程一致性 | 在有效求解网格计算逐点诊断 e=(R/J)G;等价实现中也记作 G_std=(R/J)G。它采用 VEQPy 内部归一化,并非 SI 量。 | 用于同类案例之间的比较和误差定位,不能用作跨模型的绝对物理阈值。 |
| 整体 RMS / 最大误差 | sqrt(mean(e²)) / max(|e|),在有效样本上计算。 | RMS 概括典型幅度;最大值揭示可能被平均掩盖的局部峰值。 |
| 芯部 / 边缘 RMS | 分别在 ψₙ<0.8 与 ψₙ≥0.8 计算 RMS。 | ψₙ=0.8 是诊断分界,不是新物理边界;用来判断误差主要落点。 |
| 空间分解 | e_source=(R/J)α₁Gₙ₁;e_geometry=(R/J)α₂Gₙ₂;e_total=e_source+e_geometry。 | 通过总项、源项和几何项的正负及相消关系定位数值现象,不直接判定物理可接受性。 |
| 未平衡比例 | 总误差 RMS /(源项贡献 RMS + 几何贡献 RMS)。 | 比例低表示两个较大分量抵消更强;不是通过/失败评分。 |
| shape_diagnostics | κ、delta_top、delta_bottom、delta_average、Shafranov shift 等由实际磁面计算的量。 | 不要将输入 δ 自动当作输出几何诊断的 delta_average。 |
10.2 当前服务的求解与采样层次
当前 Studio 服务使用 SciPy hybr 作为主变分求解方法;VEQPy 的默认配置允许在主方法失败时尝试 LM fallback。因此不应把每个返回结果都简化描述为"HYBRD 成功"。服务有两类网格:
| 用途 | Interactive | 非 interactive 质量档 |
|---|---|---|
| solve grid | 16×16 | 24×24 |
| plot grid | 64×128 | 96×192 |
求解网格用于主残差与汇总强形式诊断;较细的绘图网格用于展示磁面、profile 和空间误差场。服务返回 $\hat\psi=0.1,\ldots,1.0$ 的十条磁面,并在空间图中把误差组织为 total = source + geometry。空间图的磁轴正则化行不参与绘图,蓝色为负、红色为正,色标按当前分量绝对值第 95 百分位对称缩放。
10.3 推荐的阅读顺序
面对一次结果,建议按下面顺序判断,而不是只看一个绿色状态或一个很小的数:
- 先核对 provenance。有效 c/s 数组是否正是自己提交的边界?delta 模式是否确实转换成预期 s1a?topology 与 packed count 是否符合预期?
- 再看求解状态和 projected residual。它们回答"选定的有限维投影问题是否被求解器良好处理"。
- 查看强形式与空间诊断。它们回答"未被投影条件直接控制的逐点残差在何处较大"。
- 查看几何与 profile。尤其不要将输入 δ 自动当作输出几何诊断的 delta_average。
- 最后做任务相关判断。若要更细的内部形变,可增加对应 profile count;若增加后强形式/几何诊断仍不理想,需要判断是表示截断、源项设定、坐标可容许性,还是求解失败,而不是只把 count 继续调大。
11. 用三个小例子串起输入和输出
11.1 例 1:Standard topology
Standard 预设为 psin(6), h(3), k(6), s1(3),packed vector 共 18 个分量,其余 count 全为零。此时:
- LCFS 仍由 $R_0,Z_0,a,\kappa_a$ 及
c/s边界数组规定; - 求解器优化通量映射、径向偏移、拉长比与一阶 shaping 的内部系数,内部磁面可形成 Shafranov 位移;
- 其余几何 profile($v$、$c_0$、高阶 $c/s$)没有可调内部修正;
- 这适合作为确认边界、源项和基本求解流程的基线,但它不是"已经自动达到全部形状自由度"的声明。
11.2 例 2:Compact topology
Compact preset 使用 psin(4), h(2), k(4), s1(2),所以 packed count 为 12。这意味着除了径向通量映射外,求解器还可调:
- 两个 $h$ 的内部系数,改变内部磁面的径向偏移;
- 四个 $\kappa$ 的内部修正系数,改变拉长比的径向演化;
- 两个 $s_1$ 的内部修正系数,改变一阶 MXH shaping 的径向演化。
但这些修正因 $(1-\rho^2)$ 在 LCFS 消失,不能推翻已给定的 LCFS 值。
11.3 例 3:显式 s1a 与高阶边界 harmonics
切换到 explicit 模式,直接输入 s1a,并设定某些高阶 c/s 边界项。此时:
- 页面上的
delta不再参与有效边界; s1a是 native MXH boundary coefficient;- 解后
delta_top/bottom/average由实际磁面极值计算,未必等于任何预先输入的单一delta; - 若还启用 Ns1、Ns2 等内部 count,它们控制的是这些 harmonics 如何在径向上进一步调整,不会把边界值变成"可优化变量"。
这正是边界值、内部自由度、适配层派生值和诊断输出必须分开理解的原因。
12. 常见问题与下一步
| 现象 | 可能原因 | 建议操作 |
|---|---|---|
| 求解器不收敛 | 参数组合不适合当前表示,或一次改变太多变量。 | 先用 D 形演示确认流程;从 Standard 基线开始,每次只改一项,并检查求解警告。 |
| packed count 超限 | 手动设置的 count 总和超过 64。 | 减少部分 profile 的 count;以 Full 预设的 36 作为复杂度参考,而不是盲目接近上限。 |
| 磁通面交叉或扭曲 | 内部自由度过高、边界/源项不兼容,或求解未可靠收敛。 | 退回 Standard 或 Compact;确认边界预览,再逐项增加自由度。 |
| 输入 δ 与 delta_average 不同 | 高阶 LCFS c/s 系数改变实际磁面极值。 | 检查高阶系数;若需要直接控制角映射,改用显式 s1a。不要把该差异自动视为错误。 |
| COO 拟合 RMS 较大 | R₀、Z₀、a、κ 与坐标文件的基础尺度不匹配,或曲线不适合当前截断。 | 先由坐标估算基础几何后重试;拟合仅是转换为当前 MXH 输入的本地便利工具,不是完整边界反演。 |
| 加载后结果不同 | 输入版本不兼容、后端版本变化或 provenance 不匹配。 | 确认使用同一 VEQ Studio 版本;保存报告并核对 provenance 中的版本、边界、模式和 topology。 |
13. 总结:四条可迁移的计算数学原则
- 将边界条件编码进表示。$(1-\rho^2)$ 使内部修正在 $\rho=1$ 消失,因此固定 LCFS 不依赖于迭代时反复强加。
- 将 topology 与 coefficient values 分开。count 是离散模型选择;真正的 Chebyshev 系数是连续未知量;LCFS MXH 系数则是固定边界数据。
- 区分弱/投影条件与逐点强形式。$A^TWg=0$ 是所选有限维问题的方程,不能替代对 $G_{\rm std}$ 的检查。
- 把诊断当作解释工具,而不是单一证书。HTTP 成功、solver convergence、projected residual 小、强形式残差可接受、几何满足目标,是不同层次的事实。
如果只记住一句话:VEQ Studio 上方的 LCFS MXH 输入定义"边界长什么样";下方的内部 profile counts 决定"允许用多少个内部自由度去求解它";求解后的 residual 与 shape diagnostics 则回答"这种有限表示是否足以支撑当前结论"。
14. 理论与建模参考
界面字段、报告指标和本手册以当前 VEQ 实现为准;以下文献提供 Grad–Shafranov 平衡、托卡马克平衡、参数化位形和实验重建的理论背景。引用或比较结果时,应同时写明边界条件、归一化、topology 与数值假设。
- Grad, H.; Rubin, H. Hydromagnetic Equilibria and Force-Free Fields. Proceedings of the 2nd United Nations International Conference on the Peaceful Uses of Atomic Energy, 1958, Vol. 31, pp. 190–197.
- Shafranov, V. D. Plasma Equilibrium in a Magnetic Field. Reviews of Plasma Physics, Vol. 2, 1966, pp. 103–151.
- Freidberg, J. P. Ideal MHD. Cambridge University Press, 2014. Chapters on axisymmetric equilibrium and stability.
- Wesson, J. Tokamaks. 4th ed., Oxford University Press, 2011. Chapters 3–4.
- Lao, L. L. et al. "Reconstruction of Current Profile Parameters and Plasma Shapes in Tokamaks." Nuclear Fusion 25 (1985): 1611–1622. DOI: 10.1088/0029-5515/25/11/007.
- Miller, R. L. et al. "Noncircular, Finite Aspect Ratio, Local Equilibrium Model." Physics of Plasmas 5 (1998): 973–978. DOI: 10.1063/1.872666.
- Arseniev, A. A.; Bateev, S. V.; Kornev, V. A. "Equilibrium Configuration of Tokamaks." Plasma Physics and Controlled Fusion 40 (1998): 1045–1056. DOI: 10.1088/0741-3335/40/9/002.
- Lu, H. et al. "A Generalized Miller Equilibrium Model for Tokamak Plasma." Physics of Plasmas 31 (2024).
- Zhang et al. VEQ: a fast parametric Grad–Shafranov solver. arXiv:2606.11821 (2026).
- Xie & Li. What Is the Minimum Number of Parameters Required to Represent Solutions of the Grad–Shafranov Equation? arXiv:2601.02942 (2026).
实现层面的对应代码:products/veq-studio/veq_service/topology.py、solver_adapter.py 与 web/veq.js。