FormCalc故障排除

FormCalc上的每一个严重错误报告都值得赞赏,并有助于制作程序更好。然而,请理解,这个免费客户支持需要花费很多时间,我很乐意花在其他方面项目。我不会教Mathematica、Unix或编译器基础知识,也不会除非问题非常明显地指向FormCalc中的错误。

还要记住,扰动计算是一个棘手的问题主题。FeynArts和FormCalc将接管许多技术的计算中的困难,但他们不会帮你想想。如果你不懂量子场论,您不适合使用FeynArts和FormCalc。

以下是常见问题及其解决方案的列表遇到问题时要检查的内容。请仅报告此处未列出的问题。有用的链接:如何提问智能方式的问题,如何有效报告Bug.

设置中的问题

  1. Mandrake用户:FormCalc的编译脚本需要调用mcc,MathLink C编译器。不幸的是,mcc这个名字用于Mandrake上的MandrakeControl Center。这意味着你有调用compile,例如“MCC=/usr/local/bin/MCC./compile”(这是bash语法)。

  2. Mathematica 4.1之前的版本附带MathLink库(libML.a)与最新的glibc版本不兼容。如果是这种情况,MathLink程序将给出分段调用时出错。您可以测试是否有正确的版本通过从命令行调用ReadForm可执行文件:./Linux/ReadForm。这应以“创建链接:”回应。如果得到的是segfault,请安装最新版本的MathLink软件开发人员工具包.

  3. 在英特尔Mac电脑上,会出现编译错误

    为MacOSX-x86系统类型编译CC=tools/fcmcc mcc-O3-fomit-frame-pointer-ffast-math-o MacOSX-x86/ReadForm-FormCalc/ReadForm.tm/bin/sh:第1行:mcc:未找到命令make[1]:***[MacOSX-x86/ReadForm]错误127
    这是因为到目前为止没有可用的MathLink SDK用于该平台。目前,请下载PowerPC可执行文件阅读表格.gz它应该在带有Rosetta模拟器的Intel Mac上运行。解压缩该文件并将其移至FormCalc/MacOSX-x86/目录。然后再次运行编译脚本。

FORM/Mathematica部分的问题

  1. 确保您使用的是最新的FORM版本(至少3.1)。

  2. 如果FORM代码因错误而停止,请编辑临时FORM文件它被创建(例如/tmp/m1.frm)并删除第一行(#-)。这将使FORM在执行期间列出程序代码。运行手动创建文件,即执行“form/tmp/m1”。现在应该是了很容易定位错误。

  3. 如果仍然不清楚问题的起因最后一步,将“preouton”添加到/tmp/m1.frm的开头然后重新运行FORM。后者现在将在预处理器替换。

  4. CalcFeynAmp的默认值是表示外部费米子通过Weyl链。如果您想使用HelicityME和/或然而,PolarizationSum之后,您需要Dirac链。使用选项费米链->CalcFeynAmp中的手性。

  5. 您会收到如下错误消息:

    ReadForm::formerror:MNeu已声明为符号非法使用函数参数代码生成器中出现内部错误。未知对象:-25
    当存在类级别字段(在本例中为中性粒细胞,F[11])。这是一个概念,不是技术问题。首先,FeynArts正确地将MNeu放入,因为a请求Classeslevel外部粒子。其次,即使FeynArts为此生成了一个虚拟指数,因此质量MNeu[指数],振幅本身没有明显的物理意义含义。它应该是所有中性粒细胞的总和吗?相干和还是非相干和?)或者应该是横截面有中性伴子吗?(但哪一个?)换句话说,你需要选择一个特定的中性子,即放F[11,{2}]或F[11、{n}]作为外部粒子。注意,在后一种情况下必须在Fortran代码中声明索引n。

  6. 当计算QCD过程时,您会收到一条警告消息,如以下内容:

    RenConst::nodef:警告:{dZg1,dZGG1}可能正在重新规范化常量,但没有定义。
    这首先是一个物理(重整化)问题不是FormCalc或FeynArts编程:dZGG1没有定义,因为物理上没有那么简单至于光子。毕竟,胶子是一个受限粒子。添加类似于光子的东西是相当简单的,例如。RenConst[dZGG1]:=FieldRC[V[5]],但这意味着什么?什么壳上胶子到底是什么?许多QCD计算都是在MSbar方案,其中RenConst[dZGG1]:=UV-DivergentPart[FieldRC[V[5]]]。为了简单起见,您甚至可以RenConst[dZGG1]:=0如果同时选择delta=0,在LoopTools中mudim=1。

Fortran部分中的问题

  1. 会出现如下编译错误:

    fortcom:错误:/X节。F、 第150行:此名称没有类型,并且必须具有显式类型。[处理_H_NOT_UPDATED_YET]新阈值=最大值(DBLE(process_h_not_updated_yet+ME),DBLE(MT+MT))------------------------^编译因运行而中止。F(代码1)
    在编译生成的代码之前,必须编辑文件处理.h并运行。F并输入过程定义,型号选择等。符号process_h_not_updated_yet故意产生编译错误以提醒用户这一点。

  2. 如果横截面非常大,数量级为10123:你可能忘记了计算颜色矩阵元素。

  3. 编辑squaredme/squaredme。F并取消注释第一行,即。取出“*#define CHECK”中的*。重新编译并重新运行矩阵第一次求值后立即停止的代码元素并转储运动学不变量和树级和循环级矩阵元素。

  4. 重新生成所有代码。如果这没有帮助,重命名Fortran代码目录并生成所有内容(代码+驱动程序)从头开始。

  5. 运行示例时,会收到一条错误消息,如以下内容:

    abb_s.F:在子程序“abb_s”中:缩写F:32:选项30=((4*Alfa2*(1-2*SW2)**2)/9.D0*1缩写F:33:(续):-删除(Abb17)-2(1)处的算术运算符必须对的两个子表达式进行运算算术类型,但(2)处的子表达式不是算术类型
    示例文件(FormCalc/examples/*.m)是Mathematica程序,Mathematica笔记本。不要通过说“mathematica file.m”。相反,启动Mathematica并键入“<<文件.m”。

  6. FormCalc中包含的Fortran代码不是最终产品。它具有示范性特征,用户请理解并修改。

问题仍然存在,想提交错误报告吗?

  1. 确保您可以重现错误。

  2. 如果您有其他可用的平台,请尝试重现该错误那里。

  3. 看看你是否能找到与你正在寻找的流程类似的流程并将代码与那个。

  4. 尽量缩小你的问题范围。理想情况下,精确定位一条直线作为误差轨迹。包含1 MB调试输出的不特定错误报告或者根本没有机会得到回答。

  5. 如果必须发送代码,请合理确定将编译而无需修复makefile。不要使用中的显式专用路径(例如写出的主目录)Mathematica程序或Fortran代码。(逻辑很简单:我要做的事情越少,越快你可以期待得到答案。)

  6. 给出平台、编译器和Mathematica版本的详细信息。尽可能具体地说明错误。说明你有什么以及为什么你认为结果是错误的。

  7. 无论如何,将Mathematica代码作为普通代码发送Mathematica程序(file.m),而不是作为笔记本(file.nb)!!!