GEANT4学习 “段错误,核心已转储”错误记录
1 之前在提取step postPoint时出现了段错误,我的推测是step达到world的边界,无法提取,出现了信息提取的逻辑错误。加了判断之后就好了。
2 还是提取数据出错,我看有提取step postPoint 的process name的语句,我就写了一个提取前点的,发现不行,这个应该是前点就根本没有process name。
3 使用AddElement添加混合物的元素的时候也出错了:
我想写的是一个NaCl溶液,但是出现段错误,我只有一个一个找。
G4Element* elH = man->FindElement(1);
G4Element* elO = man->FindElement(8);
G4Element* elNa = man->FindElement(11);
G4Element* elCl = man->FindElement(17);
G4double density = 1.0*g/cm3;
G4Material* Aqua1000 = new G4Material("Aqua1000",density,4);
Aqua1000->AddElement(elH, 11.05618*perCent);
Aqua1000->AddElement(elO, 88.44945*perCent);
Aqua1000->AddElement(elNa, 0.19437*perCent);
Aqua1000->AddElement(elCl, 0.3*perCent);
关于元素的定义,我用了Nist材料管理器,在寻找Na和Cl元素的时候出现了问题,我把这两个替换掉就好了:
G4Element* elH = man->FindElement(1);
G4Element* elO = man->FindElement(8);
G4Element* elCl2 = new G4Element("lv","Cl",17.,35.5*g/mole);
G4Element* elNa2 = new G4Element("na","Na",11.,23.*g/mole);
G4double density = 1.*g/cm3;
G4Material* Aqua1000 = new G4Material("Aqua1000",density,4);
Aqua1000->AddElement(elH, 11.05618*perCent);
Aqua1000->AddElement(elO, 88.44945*perCent);
Aqua1000->AddElement(elNa2, 0.19437*perCent);
Aqua1000->AddElement(elCl2, 0.3*perCent);
这个我之后用 FindOrBuildElement这个函数就解决这个问题了