From fb9e9ee7fc90244f9d6ab149778b90fa9c4f707d Mon Sep 17 00:00:00 2001 From: YiHui Liu Date: Mon, 9 May 2022 00:31:02 +0800 Subject: [PATCH] =?UTF-8?q?add:=20PrimaryGeneratorAction,=20=E5=A4=A7?= =?UTF-8?q?=E6=9F=B1=E6=AE=B5,=20readme;=20change:=20code=20format;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 16 +++--- CMakeLists.txt | 1 - G4.code-workspace | 84 ++++++++++++++++++++++++++++++- README.md | 30 ++++++++++- docs/size.webp | Bin 0 -> 53776 bytes include/.gitkeep | 0 include/ActionInitialization.h | 14 ++++++ include/DetectorConstruction.h | 19 +++++++ include/Material.h | 8 +++ include/PrimaryGeneratorAction.h | 23 +++++++++ main.cpp | 40 +++++++++++++++ src/.gitkeep | 0 src/ActionInitialization.cpp | 8 +++ src/DetectorConstruction.cpp | 35 +++++++++++++ src/Material.cpp | 35 +++++++++++++ src/PrimaryGeneratorAction.cpp | 18 +++++++ vis.mac | 41 +++++++++++++++ 17 files changed, 359 insertions(+), 13 deletions(-) create mode 100644 docs/size.webp delete mode 100644 include/.gitkeep create mode 100644 include/ActionInitialization.h create mode 100644 include/DetectorConstruction.h create mode 100644 include/Material.h create mode 100644 include/PrimaryGeneratorAction.h delete mode 100644 src/.gitkeep create mode 100644 src/ActionInitialization.cpp create mode 100644 src/DetectorConstruction.cpp create mode 100644 src/Material.cpp create mode 100644 src/PrimaryGeneratorAction.cpp create mode 100644 vis.mac diff --git a/.clang-format b/.clang-format index 0ffa701..d54a9fb 100644 --- a/.clang-format +++ b/.clang-format @@ -80,21 +80,17 @@ IfMacros: - KJ_IF_MAYBE IncludeBlocks: Regroup IncludeCategories: - - Regex: '^' - 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: '' diff --git a/CMakeLists.txt b/CMakeLists.txt index 2533415..dc14bbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,6 @@ add_executable(DESCSS main.cpp ${sources} ${headers}) target_link_libraries(DESCSS ${Geant4_LIBRARIES}) set(DESCSS_SCRIPTS - auto.mac vis.mac ) diff --git a/G4.code-workspace b/G4.code-workspace index 7493bdd..bf12ff8 100644 --- a/G4.code-workspace +++ b/G4.code-workspace @@ -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" } } } \ No newline at end of file diff --git a/README.md b/README.md index a368e32..51a15d8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,32 @@ # DESCSS Dose Estimation by Simulation of China Space Station -中国空间站模拟剂量评估 \ No newline at end of file +中国空间站模拟剂量评估 + +## 空间辐射环境 + +## 空间站结构 +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) \ No newline at end of file diff --git a/docs/size.webp b/docs/size.webp new file mode 100644 index 0000000000000000000000000000000000000000..87f9efe364c52983591bd05d911f03fdc5977ddd GIT binary patch literal 53776 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%0DMtyy!mpM>E+JH`Ps0uvzMvM}VExrDII1 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 literal 0 HcmV?d00001 diff --git a/include/.gitkeep b/include/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/include/ActionInitialization.h b/include/ActionInitialization.h new file mode 100644 index 0000000..e7d1c31 --- /dev/null +++ b/include/ActionInitialization.h @@ -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 \ No newline at end of file diff --git a/include/DetectorConstruction.h b/include/DetectorConstruction.h new file mode 100644 index 0000000..0523303 --- /dev/null +++ b/include/DetectorConstruction.h @@ -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 diff --git a/include/Material.h b/include/Material.h new file mode 100644 index 0000000..dcdc66a --- /dev/null +++ b/include/Material.h @@ -0,0 +1,8 @@ +#ifndef DESCSS_Material_h +#define DESCSS_Material_h + +#include "G4Material.hh" + +void DefineMaterials(); + +#endif \ No newline at end of file diff --git a/include/PrimaryGeneratorAction.h b/include/PrimaryGeneratorAction.h new file mode 100644 index 0000000..41b8664 --- /dev/null +++ b/include/PrimaryGeneratorAction.h @@ -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 diff --git a/main.cpp b/main.cpp index e69de29..f430ace 100644 --- a/main.cpp +++ b/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; +} \ No newline at end of file diff --git a/src/.gitkeep b/src/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/ActionInitialization.cpp b/src/ActionInitialization.cpp new file mode 100644 index 0000000..189dc72 --- /dev/null +++ b/src/ActionInitialization.cpp @@ -0,0 +1,8 @@ +#include "ActionInitialization.h" +#include "PrimaryGeneratorAction.h" + +ActionInitialization::ActionInitialization() {} + +ActionInitialization::~ActionInitialization() {} + +void ActionInitialization::Build() const { SetUserAction(new PrimaryGeneratorAction); } \ No newline at end of file diff --git a/src/DetectorConstruction.cpp b/src/DetectorConstruction.cpp new file mode 100644 index 0000000..07bd1be --- /dev/null +++ b/src/DetectorConstruction.cpp @@ -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; +} diff --git a/src/Material.cpp b/src/Material.cpp new file mode 100644 index 0000000..acc1e01 --- /dev/null +++ b/src/Material.cpp @@ -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; +} \ No newline at end of file diff --git a/src/PrimaryGeneratorAction.cpp b/src/PrimaryGeneratorAction.cpp new file mode 100644 index 0000000..35d4bf5 --- /dev/null +++ b/src/PrimaryGeneratorAction.cpp @@ -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); } diff --git a/vis.mac b/vis.mac new file mode 100644 index 0000000..70cc493 --- /dev/null +++ b/vis.mac @@ -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. \ No newline at end of file