add: PrimaryGeneratorAction, 大柱段, readme;
change: code format;
This commit is contained in:
parent
87b0d5f4b0
commit
fb9e9ee7fc
@ -80,21 +80,17 @@ IfMacros:
|
||||
- KJ_IF_MAYBE
|
||||
IncludeBlocks: Regroup
|
||||
IncludeCategories:
|
||||
- Regex: '^<ext/.*\.h>'
|
||||
Priority: 2
|
||||
- Regex: '^[<"].*\.h[>"]'
|
||||
Priority: 0
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
- Regex: '^<.*\.h>'
|
||||
- Regex: '^[<"].*\.hh[>"]'
|
||||
Priority: 1
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
- Regex: '^<.*'
|
||||
Priority: 2
|
||||
SortPriority: 0
|
||||
SortPriority: 1
|
||||
CaseSensitive: false
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
SortPriority: 0
|
||||
Priority: 2
|
||||
SortPriority: 2
|
||||
CaseSensitive: false
|
||||
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
||||
IncludeIsMainSourceRegex: ''
|
||||
|
@ -20,7 +20,6 @@ add_executable(DESCSS main.cpp ${sources} ${headers})
|
||||
target_link_libraries(DESCSS ${Geant4_LIBRARIES})
|
||||
|
||||
set(DESCSS_SCRIPTS
|
||||
auto.mac
|
||||
vis.mac
|
||||
)
|
||||
|
||||
|
@ -6,7 +6,89 @@
|
||||
],
|
||||
"settings": {
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
30
README.md
30
README.md
@ -1,4 +1,32 @@
|
||||
# DESCSS
|
||||
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