直接压片单元模型开发教程(10):固体分数与孔隙率——真密度、表观密度与弹性回弹修正
版本声明块
- 工具/软件:Python 3.9 + numpy(<2)+ scipy(<1.14)+ matplotlib;
TabletPress单元类为本系列二次开发示例类,非官方 API。- 语言/环境:Python 3.9;PharmaPy 官方 requirements 未显式声明 Python 版本,以官方安装文档为准。
- 本文目标:给定片重、片厚、模具直径与真密度,输出可审计的固体分数、孔隙率、置信区间,并完成弹性回弹修正。
一句话结论:固体分数 SF = 表观密度 ÷ 真密度 = 1 − 孔隙率(USP⟨1062⟩),表观密度由片重、片厚、模具直径几何换算得到、真密度须用氦比重法实测(USP⟨699⟩,样品 2–8 g、金属球标定池体积),因此 SF 同时对片重、片厚、片径、真密度四个输入敏感(其中对片径的相对敏感度是另外三者的 2 倍),且出模后的弹性回弹会使片厚变大、SF 下降,必须做 in-die 与 out-of-die 两套读数修正。
〇、本篇要解决的认知问题
- “固体分数"到底怎么定义?它和"相对密度”"孔隙率"是同一回事吗?为什么本系列统一用"固体分数"而不沿用前作的旧称?
- 表观密度是"量出来的"还是"算出来的"?用片重、片厚、模具直径换算时,单位和几何假设里藏着哪些坑?
- 真密度为什么要用氦比重法?样品 2–8 g 和金属球标定池体积这两个数字意味着什么?
- 为什么说弹性回弹会让"出模后的固体分数"低于"模内固体分数"?这个修正怎么做才不算编造?
- 网上流传的"DC 片典型固体分数 0.80–0.90"能用吗?底账对此的约束是什么?
一、机制解析
1.1 定义:一个恒等式,不是经验式
底账登记的权威定义是:
固体分数 SF = 表观密度 / 真密度 = 1 − 孔隙率 (USP⟨1062⟩) 相对密度 ρ_r = 片剂(体)密度 / 粉末真密度 (由片重、片厚、模具直径算得)这个定义是一个恒等式:只要承认"片剂 = 固体骨架 + 孔隙",则"固体分数 + 孔隙率 = 1"就必然成立。它不依赖任何材料假设,因此是所有致密化模型(Heckel、Kawakita、Walker、Cooper-Eaton)的共同输入。
术语纪律必须在这里重申:本系列统一使用**“固体分数”(solid fraction, SF),不沿用前作干法制粒系列中的旧称(术语规范名表已作规定)。在 Heckel 语境里,底账把同一量记为相对密度 D**——D 与 SF 数值相等,只是命名的历史差异。代码里建议保留两个别名指向同一列,避免读者以为它们是两个量。
| 量 | 符号 | 关系 | 取值范围 |
|---|---|---|---|
| 固体分数 | SF | ρ_app/ρ_true | (0, 1] |
| 相对密度 | ρ_r 或 D | = SF(同一量) | (0, 1] |
| 孔隙率 | ε | 1 − SF | [0, 1) |
1.2 表观密度:算出来的,不是量出来的
片剂形状规则(圆片或浅凸面片),因此表观密度可用几何法计算:
m = 片重(mg → g) D_die = 模具直径(mm → cm),注意这是"模具/冲模直径",不是节圆直径 PCD t = 片厚(mm → cm) V = π · (D_die/2)² · t (圆柱近似,cm³) ρ_app = m / V (g/cm³) SF = ρ_app / ρ_true三个必须写进文档的几何假设与坑:
- 直径用模具直径,不用片径的卡尺读数。片径可能因弹性回弹大于模腔直径(径向回弹),也存在轻微倒角。底账明确"由片重、片厚、模具直径算得",即以模具直径为准。
- 片厚用 USP⟨1217⟩ 体系的测厚要求。测厚工具需定期校准,且"硬度(破碎力)"测试也要求定期校准(USP⟨1217⟩)。片厚与片重是 SF 的两个直接输入,测量误差会直接传播。
- 凸面片要特别小心。底账登记的凸面片扩展式属于破碎力/抗张强度计算(USP⟨1217⟩ 的 X 表达式),不是体积公式。用圆柱体积近似去算凸面片,会系统性高估体积、低估表观密度与 SF。若产品是深凸面片,应以实测体积法(几何测量或尺寸扫描)或与官方口径一致的几何模型为准。
1.3 真密度:为什么必须是氦比重法
底账给出的关键事实:真密度测定用氦比重法(USP⟨699⟩ 气体置换法);常用仪器 Quantachrome Ultrapycnometer 1000 / Ultrapyc 1200e,先以金属球标定池体积,样品 2–8 g。
拆解这三个要素:
- “气体置换法”:用已知压力的惰性气体(氦)在样品池中膨胀,由压力变化反推骨架体积。氦分子动力学直径极小,能进入微孔,因此测得的是骨架体积(含封闭孔外的开孔),这正是"真密度"的定义所需;
- “金属球标定池体积”:仪器先测一个已知体积的实心金属球,标定样品池与膨胀池的体积,这是把"压力读数"翻译为"体积读数"的标尺。未标定或标定失效会带来系统偏差;
- “样品 2–8 g”:样品量太少则代表性不足(粒径与孔隙不均),太多则填充与脱气困难。2–8 g 是通行取样量范围。
底账登记的直接压片辅料真密度(g/cm³)为:
| 辅料 | 真密度 | 备注 |
|---|---|---|
| 微晶纤维素 MCC | 1.512–1.668 | 另一文献 1.562 |
| 乳糖(一水合物/α-乳糖) | 1.52–1.535 | — |
| 无水磷酸氢钙 DCPA(CaHPO₄) | 2.89 | — |
关键纪律:真密度随牌号与晶型变化。因此这张表只用于"量级参考与合理性检验",不能替代实测。例如 MCC 取 1.512 与取 1.668,同一片剂的 SF 会相差约 10%(相对差约 10.3%)。这不是小误差,它足以改变 Heckel 斜率 K,进而改变 Py 的结论。真密度必须与 Heckel/压缩方程结果一同报告,并注明测定方法与仪器。
1.4 误差传播:SF 对四个输入的敏感度不一样
把 SF 写成关于输入的函数:
SF = m / ( ρ_true · π · (D_die/2)² · t )取对数后微分,得到相对敏感度(每一项前面的系数即为"弹性"):
| 输入 | 相对敏感度系数 | 含义 |
|---|---|---|
| 片重 m | +1 | m 增大 1%,SF 增大 1% |
| 片厚 t | −1 | t 增大 1%,SF 减小 1% |
| 模具直径 D_die | −2 | D 增大 1%,SF 减小 2% |
| 真密度 ρ_true | −1 | ρ_true 增大 1%,SF 减小 1% |
最重要的一条:SF 对直径的相对敏感度是别的输入的 2 倍。直径测量 0.5% 的偏差,会造成 SF 约 1% 的偏差;而片重、片厚同样的 0.5% 偏差只造成 0.5%。这在冲模磨损、直径标注精度、卡尺读数习惯上都极易发生。因此冲模直径应取自设备/模具图纸或经计量的实测值,并记录其不确定度。
若四个输入都有标准不确定度 (σ_m, σ_t, σ_D, σ_ρ),则一阶误差传播为:
σ_SF = SF · sqrt( (σ_m/m)² + (σ_t/t)² + (2·σ_D/D)² + (σ_ρ/ρ_true)² )这是一阶(线性)近似,适用于小不确定度情形。
1.5 弹性回弹:in-die 与 out-of-die 的两套读数
压片过程中,冲头把粉体压到最大位移时,粉体处于模内(in-die)状态;脱模后,已经压实的片剂会在弹性能释放驱动下膨胀——片厚变大(轴向回弹),片径也可能略增(径向回弹)。
底账登记的机理表述是:弹性回弹导致"出模后 SF 下降"的修正。其几何逻辑非常直接:
- 片重 m 不变(脱模不掉粉的前提下);
- 片厚从模内 t_in 变为出模后 t_out,且 t_out > t_in;
- 因 SF ∝ 1/t,故SF_out = SF_in × (t_in / t_out) < SF_in。
我们把"回弹率"定义为纯几何量(这是定义,不是经验式):
ER = (t_out − t_in) / t_in × 100% (轴向弹性回弹率) SF_out = SF_in / (1 + ER) (由于 SF ∝ 1/t) ΔSF = SF_in · (1 − 1/(1+ER)) = SF_in · ER/(1+ER)必须写明的边界:弹性回弹幅度的典型数值范围未在底账登记,本系列不得给出具体百分比。需要时以本产品实测的 (t_in, t_out) 为准;若无法测 in-die 厚度(多数生产机不具备该能力),则应明确标注"仅报告 out-of-die SF,in-die SF 无法获得"。
最大压力时刻 脱模后 ┌───────────────────────┐ ┌───────────────────────┐ │ 模内 in-die │ │ 出模 out-of-die │ │ t_in 小 → SF_in 高 │ 回弹 │ t_out 大 → SF_out 低 │ └───────────────────────┘ ────► └───────────────────────┘ SF_in = m/(ρ·V_in) SF_out = SF_in/(1+ER)1.6 为什么"DC 片典型固体分数 0.80–0.90"不能写
底账在"不可断言项"中明确登记:"DC 片典型固体分数 0.80–0.90"未获权威来源确认,教程不得写死数值,只给通式 SF = 表观密度/真密度。
这条纪律的意义在于:固体分数是"压力 + 配方 + 设备 + 转速(经驻留时间)“共同作用的结果,把它写成一个固定区间,会让模型退化成"查表”。在本系列的技术路线里,固体分数是计算结果,是连通 CPP(压力、转速)与 CQA(破碎力、脆碎度)的中间枢纽:
CPP: 主压压力 P、转速 rpm(→ dt) │ ▼ 压缩方程(第 8/9 篇)→ 相对密度 D = SF ← 本篇精确定义它 │ ▼ 成形性模型(第 11 篇)→ 抗张强度 → 破碎力(第 12 篇) │ ▼ CQA: 破碎力、脆碎度因此本篇只提供通式与计算函数,不提供"应为多少"的固定值。
1.7 与 USP⟨1062⟩ 的两条关联
底账登记了两条 USP⟨1062⟩ 的关联关系,它们说明 SF 为何是核心枢纽:
- log(compression pressure) = a − b×(solid fraction)(a、b 为经验常数)——即"压力对数对固体分数线性",这是从 SF 反推所需压力的实用关系;
- 抗张强度随固体分数增大而近似指数增加,粉体成形性常用 Ryshkewitch–Duckworth(R–D)方程描述。
第一条给出"压到什么压力能得到多少 SF",第二条给出"这个 SF 能换来多少强度"。两条串起来,正是数字孪生平台的骨干(第 11、12、20 篇)。
1.8 in-die 与 out-of-die 在模型中的分工
一个容易被忽略但影响很大的细节是:同一批片剂存在两个固体分数,它们在模型里承担不同角色。
| 量 | 定义时刻 | 在模型中的角色 | 对应方法 |
|---|---|---|---|
| SF_in(模内) | 冲头达最大位移、压力峰值时刻 | 压缩方程的自变量 | Heckel、Kawakita、Walker、Cooper-Eaton |
| SF_out(出模后) | 脱模、弹性回弹完成后 | 产品最终状态、强度模型的输入 | R–D 成形性、破碎力、脆碎度 |
二者之差就是弹性回弹:SF_out = SF_in/(1+ER) < SF_in。混用会带来系统性偏差:把 out-of-die 的 SF 直接送进 Heckel,整条曲线纵坐标被整体压低,斜率 K 与 Py=1/K 都随之漂移(方向见第 8 篇 2.4 节的敏感性链)。
因此代码里应保留两个字段名——sf_in_die与sf_out_die——并同时记录ER。如果不能测 in-die 厚度,就必须在报告里显式声明"仅报告 out-of-die SF",而不是默默用一个字段名兜住两种含义。这条纪律是本篇可审计性要求的直接体现。
二、完整代码与逐行剖析
# -*- coding: utf-8 -*-""" 第 10 篇:固体分数与孔隙率——几何换算、误差传播与弹性回弹修正 ================================================================= 说明:本脚本属于"直接压片单元模型开发教程"系列的二次开发示例,非任何官方 API。 真密度示例值取自底账登记的辅料区间(仅作量级参考),实际必须用氦比重法实测(USP<699>)。 """importnumpyasnpimportmatplotlib matplotlib.use("Agg")importmatplotlib.pyplotasplt MM_PER_CM=10.0MG_PER_G=1000.0# ----------------------------------------------------------------------# 1) 核心:由片重/片厚/模具直径/真密度计算固体分数# ----------------------------------------------------------------------defsolid_fraction(weight_mg,thickness_mm,diameter_mm,rho_true_g_cm3):"""返回 dict:rho_app, SF, porosity, volume_cm3。 SF = 表观密度 / 真密度 = 1 - 孔隙率 (USP<1062>) 表观密度由"片重/片厚/模具直径"几何换算(圆柱近似)。 """ifweight_mg<=0orthickness_mm<=0ordiameter_mm<=0:raiseValueError("片重、片厚、模具直径必须为正")ifnot(0.1<rho_true_g_cm3<30.0):raiseValueError("真密度超出合理量级,请确认单位是否误用 g/cm^3")m_g=weight_mg/MG_PER_G d_cm=diameter_mm/MM_PER_CM t_cm=thickness_mm/MM_PER_CM volume_cm3=np.pi*(d_cm/2.0)**2*t_cm rho_app=m_g/volume_cm3 SF=rho_app/rho_true_g_cm3ifnot(0.0<SF<=1.0):raiseValueError(f"算得 SF={SF:.4f}落在 (0,1] 之外,请核对输入与真密度")return{"rho_app":rho_app,"SF":SF,"porosity":1.0-SF,"volume_cm3":volume_cm3}# ----------------------------------------------------------------------# 2) 一阶误差传播# ----------------------------------------------------------------------defsf_with_uncertainty(weight_mg,thickness_mm,diameter_mm,rho_true,s_weight_mg=0.0,s_thickness_mm=0.0,s_diameter_mm=0.0,s_rho=0.0):"""返回 (SF, sigma_SF)。敏感度系数:m(+1)、t(-1)、D(-2)、rho(-1)(相对量)。"""base=solid_fraction(weight_mg,thickness_mm,diameter_mm,rho_true)SF=base["SF"]rel=np.sqrt((s_weight_mg/weight_mg)**2+(s_thickness_mm/thickness_mm)**2+(2.0*s_diameter_mm/diameter_mm)**2+(s_rho/rho_true)**2)returnSF,SF*rel# ----------------------------------------------------------------------# 3) 弹性回弹修正(纯几何定义,非经验式)# ----------------------------------------------------------------------defelastic_recovery(t_in_mm,t_out_mm,SF_in):"""ER=(t_out-t_in)/t_in; 因 SF∝1/t, 有 SF_out=SF_in/(1+ER)。"""ift_out_mm<=0ort_in_mm<=0:raiseValueError("片厚必须为正")ER=(t_out_mm-t_in_mm)/t_in_mm SF_out=SF_in/(1.0+ER)dSF=SF_in-SF_outreturn{"ER":ER,"SF_out":SF_out,"dSF":dSF}# ----------------------------------------------------------------------# 4) 主流程# ----------------------------------------------------------------------defmain():# 4.1 基本计算:示例数值,非任何产品的"典型值"w,t,d=300.0,3.40,10.0# mg, mm, mm(模具直径)rho_true=1.55# g/cm^3(MCC 区间内示意值,须实测)r=solid_fraction(w,t,d,rho_true)print(f"[基本] V={r['volume_cm3']:.4f}cm^3 rho_app={r['rho_app']:.4f}g/cm^3 "f"SF={r['SF']:.4f}porosity={r['porosity']:.4f}")# 4.2 真密度敏感性:MCC 登记区间 1.512-1.668print("\n[真密度敏感性]")forrtin(1.512,1.55,1.60,1.668):s=solid_fraction(w,t,d,rt)["SF"]print(f" rho_true={rt:.3f}-> SF={s:.4f}")# 4.3 误差传播:片径的系数是 2SF,sig=sf_with_uncertainty(w,t,d,rho_true,s_weight_mg=0.2,s_thickness_mm=0.01,s_diameter_mm=0.01,s_rho=0.01)print(f"\n[误差传播] SF={SF:.4f}±{sig:.4f}(1σ, 一阶近似)")# 4.4 只看片径与片厚各 0.01 mm 的贡献(演示 2 倍敏感度)forname,sw,st,sd,srin(("仅片重0.2mg",0.2,0.0,0.0,0.0),("仅片厚0.01mm",0.0,0.01,0.0,0.0),("仅片径0.01mm",0.0,0.0,0.01,0.0),("仅真密度0.01",0.0,0.0,0.0,0.01)):_,s_i=sf_with_uncertainty(w,t,d,rho_true,sw,st,sd,sr)print(f"{name:16s}-> 贡献 σ_SF={s_i:.6f}")# 4.5 弹性回弹修正(示意:t_in/t_out 需实测,回弹幅度不得写死)t_in,t_out=3.34,3.40# 示意值,非典型范围SF_in=solid_fraction(w,t_in,d,rho_true)["SF"]rec=elastic_recovery(t_in,t_out,SF_in)print(f"\n[弹性回弹] ER={rec['ER']*100:.2f}% SF_in={SF_in:.4f}-> "f"SF_out={rec['SF_out']:.4f}ΔSF={rec['dSF']:.4f}")# 4.6 敏感性曲线rho_list=np.linspace(1.50,1.70,50)sf_list=[solid_fraction(w,t,d,rt)["SF"]forrtinrho_list]fig,ax=plt.subplots(figsize=(6.4,4.0))ax.plot(rho_list,sf_list,"-")ax.axvspan(1.512,1.668,color="tab:orange",alpha=0.12,label="MCC 登记区间")ax.set_xlabel("真密度 / (g/cm$^3$)");ax.set_ylabel("固体分数 SF")ax.legend(fontsize=8);ax.grid(alpha=0.3)fig.tight_layout();fig.savefig("fig10_sf_vs_rhotrue.png",dpi=130)print("已输出 fig10_sf_vs_rhotrue.png")if__name__=="__main__":main()2.1 逐段剖析
(1)单位换算是这个函数唯一容易错的地方。片重以 mg 计、片径/片厚以 mm 计、真密度以 g/cm³ 计——三者量纲混合。代码把MM_PER_CM、MG_PER_G显式写成常量,就是为了让换算路径一眼可查。最隐蔽的错误是把 mm 直接当 cm 用,导致体积小 1000 倍、SF 大 1000 倍,此时SF会远大于 1,raise ValueError会立刻拦住它——这就是把物理边界写进代码的价值。
(2)真密度合理性检查:0.1 < ρ_true < 30 g/cm³。这是给"单位误用"设的护栏(例如把 kg/m³ 直接填进来)。同时提示:常用辅料真密度都在 1.5–3 g/cm³ 量级(MCC 1.512–1.668、乳糖 1.52–1.535、DCPA 2.89),若你填的数远超此范围,先怀疑单位。
(3)误差传播的系数 2 是显式写死的。2.0 * s_diameter_mm / diameter_mm这一项,就是"半径平方"带来的 2 倍敏感度。代码 4.4 节把四种误差源逐一单列,可直接看到同样 0.01 mm 的片径误差贡献约为片厚误差的 2 倍。
(4)弹性回弹函数是"定义式"而非"经验式"。它只用 SF ∝ 1/t 这一几何关系,不含任何拟合参数。因此它不违反"不得编造"的纪律;真正需要避免的是给出"回弹典型为 x%"这类无来源数值——代码中的t_in=3.34, t_out=3.40已明确标注为示意。
(5)真密度敏感性曲线。4.6 节把 ρ_true 从 1.50 扫到 1.70,阴影区标出 MCC 登记区间。可以看到 SF 随 ρ_true 单调下降,且在 MCC 区间内的整体波动是百分比量级——这直观说明为什么真密度必须实测而不能"大概取个 1.6"。
2.2 敏感度系数对照表(相对量)
| 误差源 | 相对敏感度 | 典型测量不确定度(示意) | 对 SF 的影响排序 |
|---|---|---|---|
| 片重 m | +1 | 电子天平 0.1 mg 级 | 小(片重较大,相对误差小) |
| 片厚 t | −1 | 测厚 0.01 mm 级 | 中 |
| 模具直径 D | −2 | 图纸/计量 0.01 mm 级 | 大(系数 2 倍) |
| 真密度 ρ_true | −1 | 氦比重法仪器精度 + 牌号差异 | 大(牌号差异可达 10%) |
结论:片径与真密度是 SF 的两大误差来源。前者靠"用模具图纸/计量值"控制,后者靠"氦比重法实测 + 同批同牌号"控制。
2.3 SF 与压力的两条 USP⟨1062⟩ 关系
- log(compression pressure) = a − b·(solid fraction):由 SF 反推所需压力,是工艺放大的换算工具;
- 抗张强度随 SF 近似指数增加(R–D 方程):由 SF 预测强度。
这两条把"压力 → SF → 强度"串成可算的链条,是本系列后半程(第 11、12、17、19、20 篇)的主线。
三、常见报错与排查
现象 1:ValueError: 算得 SF=... 落在 (0,1] 之外,且 SF 远大于 1。
根因:单位换算错误(mm 当 cm、mg 当 g),或体积用错直径(用了片径卡尺值且偏小)。
解法:确认片重 mg、片厚/片径 mm、真密度 g/cm³;确认体积用"模具直径";用SF ≤ 1作为硬边界。
现象 2:同一批片,两个人算出的 SF 差 5% 以上。
根因:真密度取值不同(一人用文献 1.512、一人用 1.668),或一人用了片径、一人用了模具直径。
解法:把"真密度 + 测定方法(USP⟨699⟩ 氦比重法、仪器、样品量)+ 直径来源(模具图纸/计量)"作为 SF 报告的必填字段。
现象 3:用凸面片却套圆柱体积公式,SF 系统性偏低。
根因:圆柱体积高估了凸面片体积。
解法:凸面片应以实测体积法或经验证的几何模型计算体积;USP⟨1217⟩ 的凸面片扩展式用于破碎力/抗张强度计算,不是体积公式,不得混用(第 12 篇详述)。
现象 4:把 out-of-die SF 直接当作"压缩终点 SF"送进 Heckel 分析。
根因:忽略弹性回弹,片厚偏大导致 SF 偏低。
解法:能测 in-die 厚度就用elastic_recovery修正;不能测就显式标注"out-of-die SF,未做回弹修正",并把该不确定性写入结论的适用边界。
现象 5:在正文里写"DC 片典型固体分数 0.80–0.90"。
根因:引用了无权威来源的行业说法。
解法:删除该数值,只给通式 SF = 表观密度/真密度;底账已将其列为不可断言项第 5 条。
现象 6:SF 算出来是 0.72,就断言"这个配方压不实"。
根因:把 SF 的绝对值当作质量判据,而忽略它取决于压力、转速、配方与模具。
解法:SF 是计算结果而非查表值;判断"压不实"应看"在工艺窗口内能否达到目标 SF",而目标 SF 又应由强度/脆碎度要求反推(第 11、16、19 篇)。任何"典型值区间"都不得写死,除非有权威来源。
四、动手练习
练习 1(基础):跑通并核对量级。
任务:用solid_fraction(weight_mg=300, thickness_mm=3.40, diameter_mm=10.0, rho_true_g_cm3=1.55),打印体积、表观密度、SF、孔隙率。
成功判定:体积≈0.2670 cm³(圆柱近似),表观密度≈1.1236 g/cm³,SF≈0.7249(允许 ±0.001 的浮点差异);确认 SF + 孔隙率 = 1(误差 < 1e-12)。
练习 2(进阶):量化"真密度取区间两端"的后果。
任务:把 ρ_true 分别取 1.512 与 1.668,比较同一片剂的 SF。
成功判定:给出 SF 相对差(约 10%);并说明若把这两个 SF 分别送进 Heckel 拟合,K 与 Py 会如何变化(用第 8 篇函数做一次演示),结论中必须写出"真密度必须实测"。
练习 3(综合):误差预算表 + 回弹修正。
任务:构造一组输入不确定度(片重 σ=0.2 mg、片厚 σ=0.01 mm、片径 σ=0.01 mm、真密度 σ=0.01 g/cm³),输出四项各自对 σ_SF 的贡献,并做一次 in-die→out-of-die 修正。
成功判定:片径项贡献约为片厚项的 2 倍(比值 1.9–2.1);回弹修正后 SF_out < SF_in,ΔSF 与 ER 满足 ΔSF = SF_in·ER/(1+ER)(相对误差 < 1e-9)。
五、小结与下一篇预告
固体分数 SF = 表观密度/真密度 = 1 − 孔隙率,是所有致密化方程的共同输入;表观密度由片重、片厚、模具直径几何换算得到,真密度须用氦比重法实测(USP⟨699⟩,样品 2–8 g、金属球标定池体积),常用辅料真密度为 MCC 1.512–1.668、乳糖 1.52–1.535、无水 DCPA 2.89 g/cm³。SF 对片径的相对敏感度是其他输入的 2 倍,对真密度则受牌号差异影响可达 10%,因此两者是误差预算的重点。弹性回弹使 out-of-die SF 低于 in-die SF,可用 SF_out = SF_in/(1+ER) 这一几何式修正。"DC 片典型固体分数 0.80–0.90"无权威来源,本系列不得写死,只给通式。
本篇的核心纪律可以浓缩成一句话:固体分数是"算出来"的中间枢纽,不是"查表得到"的固定值。因此它的四个输入(片重、片厚、模具直径、真密度)都必须带来源与不确定度,并与下游结论一起报告;任何把"典型固体分数区间"写死的做法都违反底账纪律。
SF(即相对密度 D)一旦算准,就能送进成形性模型。第 11 篇(成形性模型:Ryshkewitch–Duckworth 与 Kuentz–Leuenberger)将讲"给定 SF 能形成多强的片剂",并在术语上严格区分可压性(compressibility)/成形性(compactibility)/压片性(tabletability);SF 的误差如何影响参数估计将在第 17 篇量化;SF 作为数字孪生平台中间枢纽的完整组装见第 20 篇。
本篇认知问题回显(FAQ)
Q1:固体分数怎么定义,它和相对密度、孔隙率是什么关系?
A:固体分数 SF=表观密度/真密度=1−孔隙率(USP⟨1062⟩);相对密度 ρ_r 是片剂体密度除以粉末真密度,与 SF 数值相等;孔隙率 ε=1−SF。本系列统一用"固体分数",不沿用前作旧称。
Q2:表观密度是量出来的还是算出来的,有哪些坑?
A:是算出来的——用片重、片厚、模具直径按圆柱近似算体积后得 ρ_app=m/V;坑在于直径须用模具直径(不是片径卡尺值)、单位换算(mm/mg)易错、凸面片不能用圆柱公式,否则会系统性偏低。
Q3:真密度为什么要用氦比重法,样品 2–8 g 与金属球标定意味着什么?
A:氦比重法(USP⟨699⟩ 气体置换法)用氦气膨胀测骨架体积,是"真密度"定义的对应方法;2–8 g 是保证代表性又不影响脱气的取样量范围,金属球标定用于把压力读数换算为池体积,未标定会引入系统偏差。
Q4:弹性回弹为何使出模后固体分数下降,修正如何做才不算编造?
A:脱模后弹性能释放使片厚由 t_in 增大到 t_out,因 SF∝1/t,有 SF_out=SF_in/(1+ER)<SF_in;这是纯几何定义式,不含拟合参数,故可写;但"回弹典型百分比"无底账来源,不得写死。
Q5:"DC 片典型固体分数 0.80–0.90"能写吗?
A:不能;该区间未获权威来源确认,属底账不可断言项第 5 条,教程只给通式 SF=表观密度/真密度,把固体分数作为计算结果而非固定查表值。
Q3:真密度为什么要用氦比重法,样品 2–8 g 与金属球标定意味着什么?**
A:氦比重法(USP⟨699⟩ 气体置换法)用氦气膨胀测骨架体积,是"真密度"定义的对应方法;2–8 g 是保证代表性又不影响脱气的取样量范围,金属球标定用于把压力读数换算为池体积,未标定会引入系统偏差。
Q4:弹性回弹为何使出模后固体分数下降,修正如何做才不算编造?
A:脱模后弹性能释放使片厚由 t_in 增大到 t_out,因 SF∝1/t,有 SF_out=SF_in/(1+ER)<SF_in;这是纯几何定义式,不含拟合参数,故可写;但"回弹典型百分比"无底账来源,不得写死。
Q5:"DC 片典型固体分数 0.80–0.90"能写吗?
A:不能;该区间未获权威来源确认,属底账不可断言项第 5 条,教程只给通式 SF=表观密度/真密度,把固体分数作为计算结果而非固定查表值。