当前位置: 首页 > news >正文

站长素材网兰州网站建设 冰雨

站长素材网,兰州网站建设 冰雨,建网站哪家好新闻,网站界面设计稿Day 02 如何构建几何模型以及材料填充-------以B1为实例 一、构建几何模型-------B1DetectorConstruction.hh文件 继承G4VUserDetectorConstruction类; B1DetectorConstruction中包含一个子函数B1DetectorConstruction::Construct()函数。是父类的虚函数&#xff…

Day 02 如何构建几何模型以及材料填充-------以B1为实例

一、构建几何模型-------B1DetectorConstruction.hh文件

继承G4VUserDetectorConstruction类;

B1DetectorConstruction中包含一个子函数B1DetectorConstruction::Construct()函数。是父类的虚函数,子类要重写这个函数;几何模型的构建就在这个方法里面;有返回值,返回值是G4VPhysicalVolume类型

G4VPhysicalVolume* B1DetectorConstruction::construct()
{G4NistManager* nist=G4NistManager::Instance();G4double env_sizeXY=20*cm,env_sizeZ=30*cm;......
}
1.构建几何模型步骤:

(1)确定几何模型的形状,根据形状确定尺寸。建立一个solid volume

​ 长方体:长、宽、高;圆柱体:半径、高;球:半径…

(2)材料填充,放置在什么位置,有无旋转----->参考系world中 。建一个 logical volume

(3)假设建立好几个物体,相对位置,旋转,平移 建立 physical volume

​ 建立模型是要从外往里建

2.B1的几何模型:

在右边scnen tree中有touchables下面有world

world:

​ Envelope长方体 外部的形状

​ shape1 内部的几何模型

​ shape2

# B1DetectorConstruction文件中
#建造参考系,分别为:solid  volume、logical  volume、physical   volume
# world
G4Box* solidWorld=new G4Box("World",0.5*world_sizexy,0.5*world_sizeXY,0.5*world_sizeZ);
G4LogicalVolume* logicalWorld=new G4LogicalVolume(solidWorld,       # 指针world_mat,         # 材料"World");     # 名字---是哪个层次里面的logicalvolume
G4VPhysicalVolume* physWorld=new G4PVPlacement(0,G4ThreeVector(),"World",0,       # 没有上者,写为0false,0,checkOverlaps);......#  Envelope
#solid  volume
G4Box* solidEnv=new G4Box("Envelope",0.5*env_sizexy,0.5*env_sizeXY,0.5*env_sizeZ);  #尺寸信息
#logical  volume,负责材料填充
G4LogicalVolume* logicEnv=new G4LogicalVolume(solidEnv,       # 指针env_mat,         # 材料"Envelope");     # 名字
#physical   volume
G4VPhysicalVolume* physEnv=new G4PVPlacement(0,                # 有无旋转G4ThreeVector(),   # envelope的中心坐标位置在上者world中的哪里,现在为(0,0,0)logicEnv,          # 指针"Envelope",        # 名字logicWorld,        # 该模块的上者,被放在世界world里面false,             # 其他操作0,checkOverlaps);
#shape1
G4Material* shape1_mat=nist->FindOrBuildMaterial("G4_A-150_TISSUE");
G4ThreeVector pos1=G4ThreeVector(0,2*cm,-7*cm);
# 底部内径rmina,内圆的半径;底部外径rmaxa,外圆的半径
G4double shape1_rmina=0.*cm,shape1_rmaxa=2.*cm;  
# 顶部内径rminb,顶部外径rmaxb
G4double shape1_rminb=0.*cm,shape1_rmaxb=4.*cm;
#半高hz
G4double shape1_hz=3.*cm;
# 角度ph,最小角度0,最大角度360,说明没有被切,是一个完整的圆台
G4double shape1_phimin=0.*deg,shape1_phimin=360.*deg;
G4Cons* solidShape1=new G4Cons("Shape1",shape1_rmina,shape1_rmaxa,shape1_rminb,shape1_rmaxb,shape1_hz,shape1_phimin,shape1_phimax);
G4LogicalVolume* logicaShape1=new G4LogicalVolume(solidShape1,shape1_mat,"shape1");
new G4PVPlacement(0,            #有无旋转,现在没有pos1,logicShape1,"shape1",logicEnv,false,0,checkOverlaps);
# shape2
......
#旋转的对象举例
G4RotationMatrix* rm=new G4RotationMatrix();
G4double angle=90*deg;  # 旋转90度
rm->rotateY(angle);    # 绕y轴旋转
# 之后将physicalvolume里面有无旋转的指标变为我们新建的rm
new G4PVPlacement(rm,            #有无旋转,现在为rmpos1,logicShape1,"shape1",logicEnv,false,0,checkOverlaps);

注:cm、deg…是单位,已经规定了,用星号*连接起来,有相关文件可以进行查询

为什么有world?

粒子反应有很多变化,设定当粒子进入世界后就表示结束,好统计(假设),保证粒子源整体在world中

​ 在这里可以对建立的模型进行修改颜色、透明度等,双击前面的小方格即可;world里面默认不可见,可以在图形界面初始化vis.mac文件中进行修改(修改这个文件后就要重新进行make执行)。图形界面更改的颜色是一次性的,若要永久更改还是在初始化文件中进行修改

二、设置材料 以B1为例

G4Material:在这个类中定义材料,有两种方法

1. 使用geant4中内置的Material Database(调用):
G4NistManager* nist = G4NistManager::Instance();   #必须调用这个nist
G4double env_sizeXY=20*cm,env_sizeZ=30*cm;
# 其中env_mat为指针,届时可以填写在建立的模型中对应的位置,env表示写在envelope中logicalvolume的材料
G4Material* env_mat = nist->FindOrBuildMaterial("G4_WATER")  # 在引号中写入需要的材料的名字,这里是水
# world_mat为指针,world表示世界的,写在world中logicalvolume的材料
G4Material* world_mat = nist->FindOrBuildMaterial("G4_AIR")  # 这里材料是空气
G4bool checkOverlaps = true;

G4内置的材料在G4的教材中也可以查询到对应的材料名称,写在引号中即可

2. 根据需求自己定义

G4Isotope

G4Element

​ **有两种方法:**1.把定义好的材料直接放在Construct()方法里面;(每次都自定义新的指针,在材料处写指针名字,每次都得修改,都要重新编译)

2.自己写一个DefineMaterial()方法,然后把所有可能用到的材料都定义在这个方法里面,可以参考TestEm0--------Geant4官方教程文档(官网可以直接下载)

自定义:先知道密度并给出;再给出相对分子质量给出,再进行定义:

原子:

a=density=类型  指针名字  =   new  G4Material(“名字”,简称符号=“符号名字”,原子序数z,相对分子质量a,密度density)

分子(化合物):

先分别建立需要的各种元素

类型  指针名字  =   new  G4Material(“名字”,symbol=“设定符号”,序数,相对原子质量)
......混合物密度density=类型  指针名字(化合物) = new  G4Material(“名字”,密度,natoms=组成元素个数)G4int natoms;化合物指针名字 ->AddElement(元素一指针名字,natoms=要几个)化合物指针名字->AddElement(元素二指针名字,natoms=要几个)......

混合物:

​ 与混合物差不多,但是化合物是指材料组成元素的比例,所以在定义化合物指针时的natoms要变成ncomponents,另外组合时的natoms要变成fracMass=比例*percent(这里的比例是写的100中的数,percent可加可不加,可以直接写小数)

​ 自己写define方法时,可写在DetectorConstruction同级文件夹中,然后将define文件写在文件B1DetactorConstruction.cc中(开局调用即可),这样在使用时,就不用再单独定义新的指针了,直接在需要填写材料的地方填写我们定义的材料的名字即可,

当我们使用new G4Material进行自定义材料时,一旦编译,这个材料就会被写入G4的材料表中,后续可以直接凭借名字使用

在.mac文件中可以修改我们的材料,在/testem/det/setMat 材料名,只要实现这个功能,材料就可以使用G4内置的材料名字

这样自定义时,每次修改只需要修改.mac文件即可,原代码不需要进行大改变。

可执行文件:.mac、.in等

http://www.dtcms.com/a/440211.html

相关文章:

  • 哪个商城网站建设好国外企业邮箱推荐
  • 网站设计市场价有哪些在线做图的网站
  • 如何做静态页网站wordpress速度快了很多
  • 网站建设与维护 目录营销型企业网站制作公司
  • 【Linux系统】—— 程序地址空间
  • 营销型网站建设方面的书品牌广告策划方案
  • 做网站建设的怎么拓展业务wordpress 文章去掉时间
  • 做婚纱网站的意义网站加在线qq
  • 建立网站的正确方法无代码软件开发
  • 如何做有亮点的网站建设方案手机上网站用建设工具
  • 模版免费网站大理建设局网站
  • 有谁可以做网站寄生虫欧阳娜娜自创品牌
  • 企业网站模板建设广告艺术设计
  • 湖南佳程建设有限公司网站外贸手工做兼职的网站
  • 请人做彩票网站多少钱下载天马行市民云app
  • 淄博网站建设公司三农网站的推广平台有哪些
  • wordpress是什么意思重庆百度提升优化
  • 行波进位加法器 行波的含义
  • 工业设计网站知乎济南手工网站建设
  • 网站统计源码下载wordpress视频网站采集器
  • 软考 系统架构设计师系列知识点之杂项集萃(167)
  • 北京易思腾网站建设建筑信用信息查询平台
  • PySide6 一个查找对话框 界面实现
  • 建网站怎么挣钱凡客家具是品牌吗
  • 哈尔滨网站制作方案定制地方网站做哪些内容
  • 最新深圳设计师建网站关键词wordpress
  • 网站icp备案网站上动态图片怎么做
  • 视频网站后台模板网站托管代运营
  • 电商设计素材网站有哪些设计网站公司为什么都在上海
  • 威海城乡建设局网站首页百度云网盘下载