add: PrimaryGeneratorAction, 大柱段, readme;
change: code format;
This commit is contained in:
parent
87b0d5f4b0
commit
fb9e9ee7fc
@ -80,21 +80,17 @@ IfMacros:
|
|||||||
- KJ_IF_MAYBE
|
- KJ_IF_MAYBE
|
||||||
IncludeBlocks: Regroup
|
IncludeBlocks: Regroup
|
||||||
IncludeCategories:
|
IncludeCategories:
|
||||||
- Regex: '^<ext/.*\.h>'
|
- Regex: '^[<"].*\.h[>"]'
|
||||||
Priority: 2
|
Priority: 0
|
||||||
SortPriority: 0
|
SortPriority: 0
|
||||||
CaseSensitive: false
|
CaseSensitive: false
|
||||||
- Regex: '^<.*\.h>'
|
- Regex: '^[<"].*\.hh[>"]'
|
||||||
Priority: 1
|
Priority: 1
|
||||||
SortPriority: 0
|
SortPriority: 1
|
||||||
CaseSensitive: false
|
|
||||||
- Regex: '^<.*'
|
|
||||||
Priority: 2
|
|
||||||
SortPriority: 0
|
|
||||||
CaseSensitive: false
|
CaseSensitive: false
|
||||||
- Regex: '.*'
|
- Regex: '.*'
|
||||||
Priority: 3
|
Priority: 2
|
||||||
SortPriority: 0
|
SortPriority: 2
|
||||||
CaseSensitive: false
|
CaseSensitive: false
|
||||||
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
||||||
IncludeIsMainSourceRegex: ''
|
IncludeIsMainSourceRegex: ''
|
||||||
|
@ -20,7 +20,6 @@ add_executable(DESCSS main.cpp ${sources} ${headers})
|
|||||||
target_link_libraries(DESCSS ${Geant4_LIBRARIES})
|
target_link_libraries(DESCSS ${Geant4_LIBRARIES})
|
||||||
|
|
||||||
set(DESCSS_SCRIPTS
|
set(DESCSS_SCRIPTS
|
||||||
auto.mac
|
|
||||||
vis.mac
|
vis.mac
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -6,7 +6,89 @@
|
|||||||
],
|
],
|
||||||
"settings": {
|
"settings": {
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"*.icc": "cpp"
|
"*.icc": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"cfenv": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"complex": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"csetjmp": "cpp",
|
||||||
|
"csignal": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"format": "cpp",
|
||||||
|
"forward_list": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"future": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"ios": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"locale": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"queue": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stack": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"stop_token": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"xfacet": "cpp",
|
||||||
|
"xhash": "cpp",
|
||||||
|
"xiosbase": "cpp",
|
||||||
|
"xlocale": "cpp",
|
||||||
|
"xlocbuf": "cpp",
|
||||||
|
"xlocinfo": "cpp",
|
||||||
|
"xlocmes": "cpp",
|
||||||
|
"xlocmon": "cpp",
|
||||||
|
"xlocnum": "cpp",
|
||||||
|
"xloctime": "cpp",
|
||||||
|
"xmemory": "cpp",
|
||||||
|
"xstddef": "cpp",
|
||||||
|
"xstring": "cpp",
|
||||||
|
"xtr1common": "cpp",
|
||||||
|
"xtree": "cpp",
|
||||||
|
"xutility": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
28
README.md
28
README.md
@ -2,3 +2,31 @@
|
|||||||
Dose Estimation by Simulation of China Space Station
|
Dose Estimation by Simulation of China Space Station
|
||||||
|
|
||||||
中国空间站模拟剂量评估
|
中国空间站模拟剂量评估
|
||||||
|
|
||||||
|
## 空间辐射环境
|
||||||
|
|
||||||
|
## 空间站结构
|
||||||
|
1. 尺寸与分区[^1]
|
||||||
|
![](docs/size.webp)
|
||||||
|
|
||||||
|
* 全长:16.6 m
|
||||||
|
* 分区:
|
||||||
|
* 大柱段
|
||||||
|
* 外径:4.2 m
|
||||||
|
* 长度:4.32 + 2.40 m (生活控制舱 + 资源舱)(直线过渡)
|
||||||
|
* 过渡段:0.815 m
|
||||||
|
* 小柱端
|
||||||
|
* 外径:2.8 m
|
||||||
|
* 长度:5.18 m
|
||||||
|
* 过渡段:0.33 m
|
||||||
|
* 节点舱
|
||||||
|
* 长度:0.4 + 1.41 + 0.60 m
|
||||||
|
* 外径:2.13 + 2.8 + 1.22 m (球形过渡)
|
||||||
|
|
||||||
|
2. 材料
|
||||||
|
* 大柱段
|
||||||
|
* 外壳:5系铝合金[^2],选用`0.4 Si`+`0.35 Fe`+`0.1 Cu`+`0.7 Mn`+`4.5 Mg`+`0.15 Cr`+`0.25 Zn`+`0.15 Ti`+`93.4 Al`
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: [【知识点·航天】“天和”核心舱、“天宫”空间站和新一代载人飞船的最新知识点(干货版)](https://zhuanlan.zhihu.com/p/103709953)
|
||||||
|
[^2]: [中铝造为“天和”号核心舱披“铠甲”壮“筋骨”](https://m.thepaper.cn/baijiahao_12484370)
|
BIN
docs/size.webp
Normal file
BIN
docs/size.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
14
include/ActionInitialization.h
Normal file
14
include/ActionInitialization.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef DESCSS_ActionInitialization_h
|
||||||
|
#define DESCSS_ActionInitialization_h
|
||||||
|
|
||||||
|
#include "G4VUserActionInitialization.hh"
|
||||||
|
|
||||||
|
class ActionInitialization : public G4VUserActionInitialization {
|
||||||
|
public:
|
||||||
|
ActionInitialization();
|
||||||
|
~ActionInitialization() override;
|
||||||
|
|
||||||
|
void Build() const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
19
include/DetectorConstruction.h
Normal file
19
include/DetectorConstruction.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef DESCSS_DetectorConstruction_h
|
||||||
|
#define DESCSS_DetectorConstruction_h
|
||||||
|
|
||||||
|
#include "G4VUserDetectorConstruction.hh"
|
||||||
|
#include "globals.hh"
|
||||||
|
|
||||||
|
|
||||||
|
class G4VPhysicalVolume;
|
||||||
|
class G4LogicalVolume;
|
||||||
|
|
||||||
|
class DetectorConstruction : public G4VUserDetectorConstruction {
|
||||||
|
public:
|
||||||
|
DetectorConstruction();
|
||||||
|
~DetectorConstruction() override;
|
||||||
|
|
||||||
|
G4VPhysicalVolume* Construct() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
8
include/Material.h
Normal file
8
include/Material.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef DESCSS_Material_h
|
||||||
|
#define DESCSS_Material_h
|
||||||
|
|
||||||
|
#include "G4Material.hh"
|
||||||
|
|
||||||
|
void DefineMaterials();
|
||||||
|
|
||||||
|
#endif
|
23
include/PrimaryGeneratorAction.h
Normal file
23
include/PrimaryGeneratorAction.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef DESCSS_PrimaryGeneratorAction_h
|
||||||
|
#define DESCSS_PrimaryGeneratorAction_h
|
||||||
|
|
||||||
|
#include "G4ParticleGun.hh"
|
||||||
|
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||||
|
#include "globals.hh"
|
||||||
|
|
||||||
|
class G4ParticleGun;
|
||||||
|
class G4Event;
|
||||||
|
class G4Box;
|
||||||
|
|
||||||
|
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction {
|
||||||
|
public:
|
||||||
|
PrimaryGeneratorAction();
|
||||||
|
~PrimaryGeneratorAction();
|
||||||
|
virtual void GeneratePrimaries(G4Event*);
|
||||||
|
const G4ParticleGun* GetParticleGun() const { return fParticleGun; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
G4ParticleGun* fParticleGun;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
40
main.cpp
40
main.cpp
@ -0,0 +1,40 @@
|
|||||||
|
#include "ActionInitialization.h"
|
||||||
|
#include "DetectorConstruction.h"
|
||||||
|
#include "PrimaryGeneratorAction.h"
|
||||||
|
|
||||||
|
#include "G4MTRunManager.hh"
|
||||||
|
#include "G4ScoringManager.hh"
|
||||||
|
#include "G4UIExecutive.hh"
|
||||||
|
#include "G4UImanager.hh"
|
||||||
|
#include "G4VisExecutive.hh"
|
||||||
|
#include "QBBC.hh"
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
G4UIExecutive* ui = nullptr;
|
||||||
|
if (argc == 1) ui = new G4UIExecutive(argc, argv);
|
||||||
|
|
||||||
|
G4MTRunManager* runManager = new G4MTRunManager;
|
||||||
|
G4VisExecutive* visManager = new G4VisExecutive;
|
||||||
|
G4UImanager* UIManager = G4UImanager::GetUIpointer();
|
||||||
|
G4ScoringManager::GetScoringManager();
|
||||||
|
|
||||||
|
runManager->SetUserInitialization(new DetectorConstruction());
|
||||||
|
runManager->SetUserInitialization(new QBBC);
|
||||||
|
runManager->SetUserInitialization(new ActionInitialization());
|
||||||
|
|
||||||
|
visManager->Initialize();
|
||||||
|
if (!ui) {
|
||||||
|
G4String command = "/control/execute ";
|
||||||
|
G4String fileName = argv[1];
|
||||||
|
UIManager->ApplyCommand(command + fileName);
|
||||||
|
} else {
|
||||||
|
UIManager->ApplyCommand("/control/execute vis.mac");
|
||||||
|
ui->SessionStart();
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete runManager;
|
||||||
|
delete visManager;
|
||||||
|
return 0;
|
||||||
|
}
|
8
src/ActionInitialization.cpp
Normal file
8
src/ActionInitialization.cpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "ActionInitialization.h"
|
||||||
|
#include "PrimaryGeneratorAction.h"
|
||||||
|
|
||||||
|
ActionInitialization::ActionInitialization() {}
|
||||||
|
|
||||||
|
ActionInitialization::~ActionInitialization() {}
|
||||||
|
|
||||||
|
void ActionInitialization::Build() const { SetUserAction(new PrimaryGeneratorAction); }
|
35
src/DetectorConstruction.cpp
Normal file
35
src/DetectorConstruction.cpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "DetectorConstruction.h"
|
||||||
|
#include "Material.h"
|
||||||
|
|
||||||
|
#include "G4Box.hh"
|
||||||
|
#include "G4LogicalVolume.hh"
|
||||||
|
#include "G4PVPlacement.hh"
|
||||||
|
#include "G4SystemOfUnits.hh"
|
||||||
|
#include "G4Tubs.hh"
|
||||||
|
|
||||||
|
DetectorConstruction::DetectorConstruction() {}
|
||||||
|
|
||||||
|
DetectorConstruction::~DetectorConstruction() {}
|
||||||
|
|
||||||
|
G4VPhysicalVolume* DetectorConstruction::Construct() {
|
||||||
|
// Define materials
|
||||||
|
DefineMaterials();
|
||||||
|
|
||||||
|
// World
|
||||||
|
G4Box* solid_world = new G4Box("World", 3. * m, 3. * m, 10. * m);
|
||||||
|
G4LogicalVolume* logic_world = new G4LogicalVolume(solid_world, G4Material::GetMaterial("Vacuum"), "World");
|
||||||
|
G4VPhysicalVolume* physics_world = new G4PVPlacement(0, G4ThreeVector(), logic_world, "World", 0, false, 0, true);
|
||||||
|
|
||||||
|
// 大柱段
|
||||||
|
// 生活控制舱
|
||||||
|
G4double pRmin_big = 2.2 / 2 * m;
|
||||||
|
G4double pRmax_big = 4.2 / 2 * m;
|
||||||
|
G4double zLength = 4.32 * m;
|
||||||
|
G4ThreeVector pos1 = G4ThreeVector(0, 0, -(0.815 * m + zLength / 2));
|
||||||
|
G4Tubs* solid_section_big_life = new G4Tubs("section_big_life", pRmin_big, pRmax_big, zLength / 2, 0, 360);
|
||||||
|
G4LogicalVolume* logic_section_big_life = new G4LogicalVolume(
|
||||||
|
solid_section_big_life, G4Material::GetMaterial("Aluminum alloy Series 5"), "section_big_life");
|
||||||
|
new G4PVPlacement(0, pos1, logic_section_big_life, "section_big_life", logic_world, false, 0, true);
|
||||||
|
|
||||||
|
return physics_world;
|
||||||
|
}
|
35
src/Material.cpp
Normal file
35
src/Material.cpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "Material.h"
|
||||||
|
|
||||||
|
#include "G4Element.hh"
|
||||||
|
#include "G4NistManager.hh"
|
||||||
|
#include "G4PhysicalConstants.hh"
|
||||||
|
#include "G4SystemOfUnits.hh"
|
||||||
|
|
||||||
|
void DefineMaterials() {
|
||||||
|
G4double a, z; // 摩尔质量, 原子序数
|
||||||
|
G4int ncomponents, fractionmass; // 组分数, 质量分数
|
||||||
|
G4double density, pressure, temperature;
|
||||||
|
|
||||||
|
G4NistManager* nist = G4NistManager::Instance();
|
||||||
|
|
||||||
|
// 真空
|
||||||
|
density = universe_mean_density;
|
||||||
|
pressure = 3.e-18 * pascal;
|
||||||
|
temperature = 2.73 * kelvin;
|
||||||
|
new G4Material("Vacuum", z = 1., a = 1.01 * g / mole, density, kStateGas, temperature, pressure);
|
||||||
|
|
||||||
|
// 5系铝合金 0.4 Si + 0.35 Fe + 0.1 Cu + 0.7 Mn + 4.5 Mg + 0.15 Cr + 0.25 Zn + 0.15 Ti + 93.4 Al
|
||||||
|
density = 2.68 * g / cm3;
|
||||||
|
G4Material* Al_alloy_5 = new G4Material("Aluminum alloy Series 5", density, ncomponents = 9);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Si"), fractionmass = .4 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Fe"), fractionmass = .35 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Cu"), fractionmass = .1 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Mn"), fractionmass = .7 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Mg"), fractionmass = 4.5 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Cr"), fractionmass = .15 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Zn"), fractionmass = .25 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Ti"), fractionmass = .15 * perCent);
|
||||||
|
Al_alloy_5->AddElement(nist->FindOrBuildElement("Al"), fractionmass = 93.4 * perCent);
|
||||||
|
|
||||||
|
std::cout << *(G4Material::GetMaterialTable()) << std::endl;
|
||||||
|
}
|
18
src/PrimaryGeneratorAction.cpp
Normal file
18
src/PrimaryGeneratorAction.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include "PrimaryGeneratorAction.h"
|
||||||
|
|
||||||
|
#include "G4ParticleTable.hh"
|
||||||
|
#include "G4SystemOfUnits.hh"
|
||||||
|
|
||||||
|
PrimaryGeneratorAction::PrimaryGeneratorAction() {
|
||||||
|
auto table = G4ParticleTable::GetParticleTable();
|
||||||
|
|
||||||
|
fParticleGun = new G4ParticleGun(1);
|
||||||
|
fParticleGun->SetParticleDefinition(table->FindParticle("gamma"));
|
||||||
|
fParticleGun->SetParticlePosition(G4ThreeVector(0, 0, 555. / 2 * mm));
|
||||||
|
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0, 0, -1));
|
||||||
|
fParticleGun->SetParticleEnergy(1 * MeV);
|
||||||
|
}
|
||||||
|
|
||||||
|
PrimaryGeneratorAction::~PrimaryGeneratorAction() { delete fParticleGun; }
|
||||||
|
|
||||||
|
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* e) { fParticleGun->GeneratePrimaryVertex(e); }
|
41
vis.mac
Normal file
41
vis.mac
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# 多线程设置
|
||||||
|
/run/numberOfThreads 1
|
||||||
|
|
||||||
|
# verbose
|
||||||
|
/control/saveHistory
|
||||||
|
/control/verbose 2
|
||||||
|
/run/verbose 1
|
||||||
|
/event/verbose 0
|
||||||
|
/tracking/verbose 0
|
||||||
|
|
||||||
|
# 初始化
|
||||||
|
/run/initialize
|
||||||
|
|
||||||
|
# 设置视图,使用OpenGL
|
||||||
|
/vis/open OGL 800x800-0+0
|
||||||
|
|
||||||
|
# 禁止自动刷新,消息静音(除错误外)
|
||||||
|
/vis/viewer/set/autoRefresh false
|
||||||
|
/vis/verbose errors
|
||||||
|
|
||||||
|
# 绘制几何体
|
||||||
|
/vis/drawVolume
|
||||||
|
|
||||||
|
# 绘制轨迹 类型为平滑
|
||||||
|
/vis/scene/add/trajectories smooth
|
||||||
|
# 根据粒子ID进行绘制
|
||||||
|
/vis/modeling/trajectories/create/drawByParticleID
|
||||||
|
# 以2px的宽度绘制节点
|
||||||
|
/vis/modeling/trajectories/drawByParticleID-0/default/setDrawStepPts true
|
||||||
|
/vis/modeling/trajectories/drawByParticleID-0/default/setStepPtsSize 2
|
||||||
|
# 保留、叠加所有事例
|
||||||
|
/vis/scene/endOfEventAction accumulate
|
||||||
|
|
||||||
|
# 设置颜色
|
||||||
|
/vis/geometry/set/visibility World 0 false
|
||||||
|
/vis/geometry/set/colour section_big_life 0 0 0 1 .3
|
||||||
|
/vis/viewer/set/style surface
|
||||||
|
|
||||||
|
# 坐标轴
|
||||||
|
/vis/scene/add/scale # Simple scale line
|
||||||
|
/vis/scene/add/axes # Simple axes: x=red, y=green, z=blue.
|
Loading…
Reference in New Issue
Block a user