Component for including 3D mesh in Union geometry
Author: Martin Olsen, and expanded upon by Daniel Lomholt Christensen
Origin: University of Copenhagen / ACTNXT project
Date: 17.09.18
Part of the Union components, a set of components that work together and thus separates geometry and physics within McStas. The use of this component requires other components to be used.
1) One specifies a number of processes using process components 2) These are gathered into material definitions using Union_make_material 3) Geometries are placed using Union_box/cylinder/sphere/mesh, assigned a material 4) A Union_master component placed after all the above
Only in step 4 will any simulation happen, and per default all geometries defined before this master, but after the previous will be simulated here.
There is a dedicated manual available for the Union_components
The mesh component loads a 3D OFF, STL or PLY file as the geometry, using geometry-mesh-lib (polygons are triangulated, duplicated vertices welded). Faces given more than once are removed, so a volumetric mesh (cells sharing faces) gives its outer surface. The mesh geometry that is loaded must be a watertight mesh: every edge must be shared by exactly two triangles.
Number of intersections per ray: for each mesh, Union_master stores the GMESH_MAX_HITS (default 50) nearest crossings of the ray with the mesh surface. A concave mesh, or one made of several parts, can be crossed more often. Then the farther crossings are lost, the ray can not find the surface where it leaves the mesh, and Union_master reports trace errors. geometry-mesh-lib warns once when this happens: Warning: <file>: a ray crossed the mesh N times, but only the 4 nearest hits are kept To fix it, add this line after the DEFINE INSTRUMENT line of the instrument, with N at least the number given in the warning: DEPENDENCY " -DGMESH_MAX_HITS=N "
It is allowed to overlap components, but it is not allowed to have two parallel planes that coincides. This will crash the code on run time.
Parameters in boldface are required; the others are optional.
|
Name |
Unit |
Description |
Default |
|
|
|||
|
filename |
str |
Name of file that contains the 3D geometry: OFF, STL (ascii or binary) or PLY |
0 |
|
material_string |
string |
material name of this volume, defined using Union_make_material |
0 |
|
priority |
1 |
priotiry of the volume (can not be the same as another volume) A high priority is on top of low. |
|
|
visualize |
1 |
set to 0 if you wish to hide this geometry in mcdisplay |
1 |
|
all_surfaces |
string |
Comma seperated string of Union surface definitions defined prior to this component |
0 |
|
cut_surface |
string |
Comma seperated string of Union surface definitions defined prior to this component, applied to all internal cuts |
0 |
|
target_index |
1 |
Focuses on component a component this many steps further in the component sequence |
0 |
|
target_x |
m |
position of target to focus at |
0 |
|
target_y |
m |
Position of target to focus at |
0 |
|
target_z |
m |
position of target to focus at |
0 |
|
focus_aw |
deg |
horiz. angular dimension of a rectangular area |
0 |
|
focus_ah |
deg |
vert. angular dimension of a rectangular area |
0 |
|
focus_xw |
m |
horiz. dimension of a rectangular area |
0 |
|
focus_xh |
m |
vert. dimension of a rectangular area |
0 |
|
focus_r |
m |
focusing on circle with this radius |
0 |
|
p_interact |
1 |
probability to interact with this geometry [0-1] |
0 |
|
mask_string |
string |
Comma seperated list of geometry names which this geometry should mask |
0 |
|
mask_setting |
string |
"All" or "Any", should the masked volume be simulated when the ray is in just one mask, or all. |
0 |
|
number_of_activations |
1 |
Number of subsequent Union_master components that will simulate this geometry |
1 |
|
coordinate_scale |
1e-3 |
Multiplier that the vertex positions are multiplied by. Set to 1 for input coordinates in meters. Set to 1e-3 for input coordinates in mm. |
1e-3 |
|
init |
string |
Deprecated and unused. Accepted so that instruments written for McStas/McXtrace 3.8.7 and earlier, which name the Union_init component here, still compile. |
"" |
|
|
|||
|
|
|||
|
|
|||
Component source code found in file Union_mesh.comp.