7. 序列计算¶
除了通常的燃耗计算外,CRANE还支持对不同燃耗点下开展序列计算的功能,以获得不同状态、不同燃耗下的各种反应系数、控制棒微积分价值等等,
首先定义 sequences 列表,它是由多个 sequence 对象 组成,而单个 sequence 对象 则由一系列序列计算状态点, 即 sequence_state 对象 组成,单个序列计算内的这些状态点的计算及状态参数有继承关系,如关闭了第二个点的临界硼搜索, 则从第二个点往下都不再进行临界硼搜索。
定义完 sequences 列表 后,可在燃耗计算状态点中增加 sequences 来决定该燃耗点下是否进行序列计算, 进行哪些序列计算。
CRANE的计算顺序是先执行燃耗计算,燃耗计算过程自动保存需要执行序列计算状态点的详细核子密度分布、温度场分布、各种状态参数信息等, 然后在这些状态点上展开再启动序列计算。
对于某些常见的序列计算,如临界实验、温度系数、硼微分价值、控制棒微、积分价值等,CRANE可以根据 sequence 对象 中的 name 识别,并产生 Excel 结果文件 中对应的sheet,分别为 criticals, temperature_coefficients, differential_boron_worths, control_rod_worths, control_rod_worths_curve。
Note
临界实验、等温度系数、慢化剂温度系数、燃料温度系数、硼微分价值、控制棒积分价值、控制棒微分价值序列计算对应的
name 开头必须分别为 CRIT, ITC, MTC, FTC, DBW, CRW, CRWC
。
理论上用户可根据需求定义非常复杂的序列计算,以下我们对常见的几种序列计算展开说明:
7.1. 临界实验计算¶
临界实验计算是通过改变一些状态参数,如硼浓度、控制棒棒位、燃料温度、慢化剂温度等等来使堆芯达到临界。
用户可利用序列计算功能定义一系列临界的状态点。以下是 VERA_5 基准题中的临界实验(对应为case1-case10)的序列计算示例:
sequences:
- name: CRIT
states:
- {boron_concentration: 1285, control_rod_position: [230, 230, 230, 167, 230, 230, 230, 230]}
- {boron_concentration: 1291, control_rod_position: [230, 230, 230, 230, 230, 230, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [ 0, 230, 230, 97, 230, 230, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 0, 230, 113, 230, 230, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 230, 0, 119, 230, 230, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 230, 230, 18, 230, 230, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 230, 230, 69, 0, 230, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 230, 230, 134, 230, 0, 230, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 230, 230, 71, 230, 230, 0, 230]}
- {boron_concentration: 1170, control_rod_position: [230, 230, 230, 71, 230, 230, 230, 0]}
depletion:
states:
- {burnup: 0, sequences: [CRIT]}
这里定义了10个临界状态点,相比与初始状态点,每个状态点只有硼浓度和控制棒棒位不同,因此只需要定义这两种参数即可。
Note
CRANE支持在任意燃耗点下开展任意多个序列计算。而该示例由于是低功率物理试验,因此只定义了一个零燃耗点, 并在该零燃耗点下进行名为CRIT的序列计算,下同。
7.2. 温度系数计算¶
温度系数计算通过对反应堆的温度场加减一个变化量,该温度场可以是慢化剂温度场,也可以是燃料温度场,或者两者同时改变, 然后计算出温度场加减这个变化量后堆芯的反应性,来统计出温度系数。
以下是 VERA_5 基准题的温度系数的序列计算示例:
sequences:
- name: ITC
states:
- {delta_moderator_temperature: 5, delta_fuel_temperature: 5, control_rod_position: [230, 230, 230, 230, 230, 230, 230, 230], boron_concentration: 1291}
- {delta_moderator_temperature: -10, delta_fuel_temperature: -10}
depletion:
states:
- {burnup: 0, sequences: [ITC]}
这个序列计算包含两个状态点,第一状态点将慢化剂温度整体增加5K,燃料温度也整体增加5K,控制棒设置为全提,硼浓度设置为1291ppm (硼浓度设置后则不会进行临界硼搜索),第二个状态点在第一个状态的基础上将慢化剂温度和燃料温度都减少10K,其余保持不变, 因此该序列计算能够获得温度场加减5K时的等温温度系数。
7.3. 硼微分价值计算¶
硼微分价值计算通过对堆芯的可溶硼浓度加减一个变化量,然后计算出加减这个变化量后堆芯的反应性,来统计出硼微分价值。
以下是 VERA_5 基准题的硼微分价值的序列计算示例:
sequences:
- name: DBW
states:
- {delta_boron_concentration: 10, control_rod_position: [230, 230, 230, 230, 230, 230, 230, 230]}
- {delta_boron_concentration: -20}
depletion:
states:
- {burnup: 0, sequences: [DBW]}
这个序列计算包含两个状态点,第一状态点将可溶硼浓度增加10ppm,控制棒设置为全提, 第二个状态点在第一个状态的基础上将可溶硼浓度减少20ppm,其余保持不变,因此该序列计算能够获得可溶硼浓度加减10ppm时的硼微分价值。
7.4. 控制棒组积分价值计算¶
控制棒组积分价值计算可以通过定义一个ARO状态点和不同棒组分别插入的状态点,来计算获得不同棒组的积分价值。
如以下是 VERA_5 基准题的控制组积分价值序列计算示例:
sequences:
- name: CRW
states:
- {bank: ARO, control_rod_position: [230, 230, 230, 230, 230, 230, 230, 230], boron_concentration: 1170}
- {bank: Bank_A, control_rod_position: [ 0, 230, 230, 230, 230, 230, 230, 230]}
- {bank: Bank_B, control_rod_position: [230, 0, 230, 230, 230, 230, 230, 230]}
- {bank: Bank_C, control_rod_position: [230, 230, 0, 230, 230, 230, 230, 230]}
- {bank: Bank_D, control_rod_position: [230, 230, 230, 0, 230, 230, 230, 230]}
- {bank: Bank_SA, control_rod_position: [230, 230, 230, 230, 0, 230, 230, 230]}
- {bank: Bank_SB, control_rod_position: [230, 230, 230, 230, 230, 0, 230, 230]}
- {bank: Bank_SC, control_rod_position: [230, 230, 230, 230, 230, 230, 0, 230]}
- {bank: Bank_SD, control_rod_position: [230, 230, 230, 230, 230, 230, 230, 0]}
depletion:
states:
- {burnup: 0, sequences: [CRW]}
这里ARO状态点下的硼浓度直接输入为1170ppm,而不进行临界硼搜索,后续所有插棒状态点的硼浓度都会沿用该ARO状态点下的硼浓度。
Note
这里的 bank 必须是 ARO
,以告诉CRANE这是ARO状态。
如果要进行更为任意的棒价值计算,如有些棒价值是其他棒插入情况下获得的,则需要在同一棒组下定义两个不同的状态点, 第一个点是插棒的,第二个点是不插棒的,不同的棒组可以都定义在一个序列计算中。
如以下是 BEAVRS_C1 基准题中的控制棒组积分价值序列计算示例:
sequences:
name: CRW
states:
- {bank: D, control_rod_position: [228, 228, 228, 228, 228, 228, 228, 228, 228], is_cb_searching: true}
- {bank: D, control_rod_position: [228, 228, 228, 0, 228, 228, 228, 228, 228], is_cb_searching: false}
- {bank: C_Din, control_rod_position: [228, 228, 228, 0, 228, 228, 228, 228, 228], is_cb_searching: true}
- {bank: C_Din, control_rod_position: [228, 228, 0, 0, 228, 228, 228, 228, 228], is_cb_searching: false}
- {bank: B_DCin, control_rod_position: [228, 228, 0, 0, 228, 228, 228, 228, 228], is_cb_searching: true}
- {bank: B_DCin, control_rod_position: [228, 0, 0, 0, 228, 228, 228, 228, 228], is_cb_searching: false}
- {bank: A_DCBin, control_rod_position: [228, 0, 0, 0, 228, 228, 228, 228, 228], is_cb_searching: true}
- {bank: A_DCBin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 228, 228, 228], is_cb_searching: false}
- {bank: SE_DCBAin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 228, 228, 228], is_cb_searching: true}
- {bank: SE_DCBAin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 228, 228, 0], is_cb_searching: false}
- {bank: SD_DCBASEin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 228, 228, 0], is_cb_searching: true}
- {bank: SD_DCBASEin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 228, 0, 0], is_cb_searching: false}
- {bank: SC_DCBASESDin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 228, 0, 0], is_cb_searching: true}
- {bank: SC_DCBASESDin, control_rod_position: [ 0, 0, 0, 0, 228, 228, 0, 0, 0], is_cb_searching: false}
depletion:
states:
- {burnup: 0, sequences: [CRW]}
可以看到,这里对每个相同的 bank 各有两个状态点,第一个状态点是目标棒组提出并且搜索临界硼浓度, 第二状态点关闭临界硼搜索并插入目标棒组。
实际该序列计算为:计算D棒单独插入的价值、C棒组在D棒组全插下的价值,B棒组在C、D棒组全插下的价值、A棒组在B、C、 D棒组全插下的价值,以此类推。
7.5. 控制棒组微分价值曲线计算¶
控制棒组微分价值曲线计算通过定义一系列目标棒组不同棒位下的状态点构成的序列计算,来计算获得棒微分价值曲线。
如以下是 VERA_5 基准题的对D棒组的价值曲线计算输入:
sequences:
- name: CRWC
states:
- {bank: D, step: 230, control_rod_position: [230, 230, 230, 230, 230, 230, 230, 230], boron_concentration: 1230}
- {bank: D, step: 207, control_rod_position: [230, 230, 230, 207, 230, 230, 230, 230]}
- {bank: D, step: 184, control_rod_position: [230, 230, 230, 184, 230, 230, 230, 230]}
- {bank: D, step: 161, control_rod_position: [230, 230, 230, 161, 230, 230, 230, 230]}
- {bank: D, step: 138, control_rod_position: [230, 230, 230, 138, 230, 230, 230, 230]}
- {bank: D, step: 115, control_rod_position: [230, 230, 230, 115, 230, 230, 230, 230]}
- {bank: D, step: 92 , control_rod_position: [230, 230, 230, 92 , 230, 230, 230, 230]}
- {bank: D, step: 69 , control_rod_position: [230, 230, 230, 69 , 230, 230, 230, 230]}
- {bank: D, step: 46 , control_rod_position: [230, 230, 230, 46 , 230, 230, 230, 230]}
- {bank: D, step: 23 , control_rod_position: [230, 230, 230, 23 , 230, 230, 230, 230]}
- {bank: D, step: 0 , control_rod_position: [230, 230, 230, 0 , 230, 230, 230, 230]}
depletion:
states:
- {burnup: 0, sequences: [CRWC]}
这里第一状态点的硼浓度设置为1230ppm,而不进行临界硼搜索,后续对D棒组每插23步形成一个状态点,总共11个状态点。