Introduction
Overview
In short, CombLayer is a Geant 4-like system for building CGS geometries. Its main features are summarised in this poster.
Do not use CombLayer if ...
- your model is small. Use pstudy or alternative tools instead.
- while pstudy is convenient with small number of parameters, it becomes extremely difficult to maintain a complex geometry.
- you need an as-built model. Use DAGMC.
- be aware of calculation speed issues with complex geometries
- difficult to do parametric studies
Use CombLayer if...
- your model is large
- In CombLayer, geometry is made of individual components (C++ class instances)
- each component is made in its own individual coordinate system
- components can be re-used in different areas of geometry
- e.g. fuel element or neutron extraction channel
- currently, CombLayer has more than 400 components
- only few of them are documented
- components can be built in parallel by several developers
- In CombLayer, geometry is made of individual components (C++ class instances)
- you need to do parametric studies (optimisation)
Building geometry
git clone https://github.com/SAnsell/CombLayer.git
git checkout PIK-tutorial
./CMake.pl -O
cmake .
make -j$(nproc) pik
Note: the CMake.pl
script is obsolete since 2024. One must update the standard CMakeLists.txt
files insted.
Inner shielding cell
git checkout e77b5a32a
make pik
./pik a
- Surfaces are defined in PIKPool::createSurfaces
ModelSupport::buildCylinder(SMap,buildIndex+7,Origin,Z,innerShieldRadius);
ModelSupport::buildPlane(SMap,buildIndex+5,Origin-Z*(depth),Z);
ModelSupport::buildPlane(SMap,buildIndex+6,Origin+Z*(height),Z);
- Cells are built in the PIKPool::createObjects method
- In addition, we need to define the outer surface in order for CombLayer to be able to insert the pool into the outer void cell. Since currently we have only one cell, its surface becomes outer surface.
Out=ModelSupport::getComposite(SMap,buildIndex," -7 5 -6 ");
makeCell("InnerShield",System,cellIndex++,innerShieldMat,0.0,Out);
addOuterSurf(Out);
- Both methods (among the others) are called from PIKPool::createAll
createSurfaces();
createObjects(System);
Inner shielding wall
Let's add a side wall around the InnerShield cell.
git checkout 79a4df2ee
make pik
We will also change the wall thickness via the command line argument:
./pik -v PoolInnerShieldWallThick 50 a
We also have to update the outer surface. It's made of the outer cylinder (17) and the original bottom and top planes (5 and 6):
Out=ModelSupport::getComposite(SMap,buildIndex," -17 5 -6 ");
addOuterSurf(Out);
Check out the difference between both commits:
git diff e77b5a32a 79a4df2ee
We will also change the inner shielding material from light water to heavy water. We could have done it via command line:
./pik -v PoolInnerShieldMat D2O a
but since we need this change to be permanent we will modify the source code of the PIKVariables function in Model/pik/PIKVariables.cxx:
Control.addVariable("PoolInnerShieldMat","D2O");