.. _section_criticalitysearch:
临界搜索(仅限企业版本)
===========================
RMC支持在临界和燃耗模式下临界搜索,包括材料的核素密度搜索和几何的面位置搜索,其中材料的核密度搜索基于材料密度微扰。
材料搜索模块输入卡
-----------------------
.. code-block:: none
CriticalitySearch
Materialsearch target= error= max= perb=
Differentialoperator [cell=] [material=] [nuclide=] [variable=]
[estimator=] [sourceperb=] [batchcycle=] [outputbycycle=]
[crosssection=] [response=]
其中,
- **CriticalitySearch**\ 为临界搜索模块关键词;
- **materialsearch**\ 为材料搜索输入卡,由于为单参数搜索,该输入卡使用次数不超过1;
- **target**\ 为搜索的目标keff值;
- **error**\ 为搜索的阈值,当target-error < keff+-keff_std < target+error时认为搜索完成;
- **max**\ 为最大搜索次数。在一次临界计算结束后,程序将进行参数搜索计算;
随后将使用搜索得到的参数继续进行临界计算-参数搜索-临界计算...循环直至满足收敛条件。
设置该参数是为了防止在极端情形下,程序无法收敛而陷入死循环的情况发生。
需要注意的是,在参数满足收敛条件之前,程序会关闭Tally计数。如果用户使用了Tally(计数器)功能,
程序将在参数收敛之后,重新打开Tally计数并再次执行临界计算(仅活跃代)。
因而,若\ **max = 1**\ 且没有开启Tally,则程序的计算过程为:临界计算-参数搜索-临界计算。
若\ **max = 1**\ 且开启了Tally,则程序的计算过程为:临界计算-参数搜索-临界计算-活跃代临界计算。
特别地,当用户指定\ **max = 0**\ 时,程序将仅做一次临界计算和一次搜索,且不会关闭Tally计数。
- **perb**\ 为搜索使用的微分算符法的id,对应于differentialoperator输入卡,注意所对应的differentialoperator
输入卡中的variable必须是1;
- **differentialoperator**\ 为微分算符法输入卡,其使用方法见材料微扰模块说明。
材料搜索模块输入示例
--------------------------
以下算例为对栅元3材料1中ZAID为92235的核素密度进行搜索,目标值为1.23,阈值为0.02,最大迭代次数为5,
微分算符法采用碰撞估计器,同时使用源扰动,batch代数为5,仅最后一代输出。
.. code-block:: none
CRITICALITYSEARCH
Materialsearch target=1.23 error=0.02 max=5 perb=1
DifferentialOperator 1 cell = 3
material = 1
nuclide = 92235
variable = 1
estimator = 0
order = 2
sourceperb = 1
batchcycle = 5
outputbycycle = 0
response = 1
材料搜索输出文件
----------------------
材料搜索的信息在.critisearch文件中,包含各个微分算符法的一、二阶微扰系数及其相对标准偏差,
临界迭代时当前keff和标准差,搜索核素原子密度在迭代前后的值,用-->分割。对于各个微分算符法的
一、二阶微扰系数用户可直接查看.Result.h5文件。
.. code-block:: none
Cycle Perb First_Ave First_Re Second_Ave Second_Re
50 1 2.49773E-02 4.85185E+00 -4.22016E-02 8.69707E+00
Iter Nuc keff Atom Density Gram Density
0 92235.71c 1.218068 +- 0.012354 9.10578E-04 --> 1.34558E-03 -3.55398E-01 --> -5.25179E-01
Cycle Perb First_Ave First_Re Second_Ave Second_Re
50 1 2.73379E-01 5.61727E-01 -8.78828E-01 6.68638E-01
Iter Nuc keff Atom Density Gram Density
1 92235.71c 1.301338 +- 0.014911 1.34558E-03 --> 9.94452E-04 -5.25179E-01 --> -3.88134E-01
Cycle Perb First_Ave First_Re Second_Ave Second_Re
50 1 1.66851E-01 4.64208E-01 -4.77677E-01 6.47156E-01
Iter Nuc keff Atom Density Gram Density
2 92235.71c 1.253746 +- 0.011225 9.94452E-04 --> 8.52920E-04 -3.88134E-01 --> -3.32894E-01
Cycle Perb First_Ave First_Re Second_Ave Second_Re
50 1 1.80428E-01 4.79098E-01 -2.63040E-01 1.30613E+00
Iter Nuc keff Atom Density Gram Density
3 92235.71c 1.196194 +- 0.011493 8.52920E-04 --> 1.01273E-03 -3.32894E-01 --> -3.95267E-01
Cycle Perb First_Ave First_Re Second_Ave Second_Re
50 1 1.35776E-01 1.13751E+00 -5.65172E-01 4.01294E-01
Iter Nuc keff Atom Density Gram Density
4 92235.71c 1.275107 +- 0.012141 1.01273E-03 --> 6.76280E-04 -3.95267E-01 --> -2.63952E-01
Cycle Perb First_Ave First_Re Second_Ave Second_Re
50 1 2.11684E-01 2.94337E-01 -3.85332E-01 6.42138E-01
几何搜索模块输入卡
-----------------------
.. code-block:: none
CriticalitySearch
Geometrysearch surface= target= error= max= method= adaptive=
leftbound= rightbound= adjointtally=
其中,
- **CriticalitySearch**\ 为临界搜索模块关键词;
- **geometrysearch**\ 为几何搜索输入卡,由于为单参数搜索,该输入卡使用次数不超过1;
- **surface**\ 为搜索面的编号;
- **target**\ 为搜索的目标keff值;
- **error**\ 为搜索的阈值,当target-error < keff+-keff_std < target+error时认为搜索完成;
- **max**\ 为最大迭代次数,防止极端情形下无法收敛而陷入死循环;
- **method**\ 为搜索的数值迭代方法,0-利用反复裂变几率法(第17章)计算得到几何微扰系数进行牛顿法迭代,1-二分法,2-试位法,3-Ridder方法;
- **adaptive**\ 是否自适应调整活跃代代数,0-不使用,1使用;
- **leftbound**\ 为搜索面位置的左初值,搜索过程中小于该值即停止搜索;
- **rightbound**\ 为搜索面位置的右初值,搜索过程中大于该值即停止搜索,目标值应预估在左初值和右初值之间。
- **adjointtally**\ 为利用反复裂变几率法(第17章)计算得到几何微扰系数进行牛顿法迭代时,对应的几何微扰计数器的编号
几何搜索模块输入输出示例
------------------------------
几何搜索结果在.critisearch文件中,包含每次迭代步keff和标准差,Parameter为下一迭代步的搜索面位置,Cycle为当前迭代步所使用的总代数。
以下示例中,搜索面1的位置在5cm到10cm之间,搜索目标值在0.99到1.01之间,使用自适应调整代数的Ridder迭代法。最后搜索面位置为8.74888cm,此时keff为1.001257+-0.001635。
.. code-block:: none
Geometrysearch
surface=1
target=1
error=0.01
method=3
adaptive=1
leftbound=5
right=10
.. code-block:: none
Final Keff: 1.001257 Standard Deviation: 0.001635
Iter SurfId keff Parameter Cycle
0 1 0.602600 +- 0.000280 1.00000E+01 300
Iter SurfId keff Parameter Cycle
1 1 1.115286 +- 0.000489 7.50000E+00 300
Iter SurfId keff Parameter Cycle
2 1 0.876570 +- 0.001635 8.74888E+00 110