wall
Input representing first wall and other plasma facing components.
Wall input is used in simulations to check intersections between a marker trajectory and physical components like first wall of fast-ion-loss detector. It is also used in BBNBI5 to estimate shinethrough and in ASCOT-BMC.
Wall models can also be used to mimic LCFS to catch markers that escape plasma. This could prove more detailed information than just using the MAXRHO end condition.
Contour in Rz-plane that represents an axisymmetric wall. |
|
Triangle mesh that represents a 3D wall. |
- class a5py.ascot5io.wall.wall_2D(root, path, **kwargs)
Bases:
DataGroupContour in Rz-plane that represents an axisymmetric wall.
This wall is simple and fast in simulations, but it does not allow evaluation of wall loads. For those, use 3D wall instead.
The wall doesn’t have to form a closed loop but it prevents markers from escaping the computational domain.
- area(normal=False, data=None)
Calculate the corresponsing area for revolving each strip of the 2D wall around the z-axis. Note: the normal vector is returned with only R and z components.
- Parameters:
- Returns:
- areaarray_like, (nelement,)
Surface areas of the wall elements.
- nvecarray_like, (nelement,3)
Normal vectors of the wall elements in (R, z, 0)
Note that the direction of the normal vector is not specified (it can point either inside or outside).
- static create_dummy()
Create dummy data that has correct format and is valid, but can be non-sensical.
This method is intended for testing purposes or to provide data whose presence is needed but which is not actually used in simulation.
The dummy output is a very large rectangular wall.
- Returns:
- data
dict Input data that can be passed to
write_hdf5method of a corresponding type.
- data
- getnormedline()
Return the length of each strip of the 2D wall.
- Returns:
- dataarray_like, (N-1)
lenghts of each strip
- getwallcontour(phi=unyt_quantity(0, 'degree'))
Return a cross section of the wall with a given poloidal plane.
- Parameters:
- phi
float Toroidal angle of the plane.
- phi
- Returns:
- linesarray_like (n,2,2)
Line segments [[[r1,z1], [r2,z2]], …] that form the cross section.
- getwalloutline(phigrid)
Return minimum and maximum wall R-coordinates as a function of phi.
- Parameters:
- phigridarray_like
Toroidal coordinates.
- Returns:
- rminarray_like, (nphi,)
Minimum R-coordinate at each toroidal angle.
- rmaxarray_like, (nphi,)
Maximum R-coordinate at each toroidal angle.
- read()
Read data from HDF5 file.
- Returns:
- data
dict Data read from HDF5 stored in the same format as is passed to
write_hdf5().
- data
- static write_hdf5(fn, nelements, r, z, flag=None, flagIdList=None, flagIdStrings=None, desc=None)
Write input data to the HDF5 file.
First vertex shouldn’t correspond to the last vertex, i.e., don’t give (R,z) coordinates that make a closed loop.
- Parameters:
- fn
str Full path to the HDF5 file.
- nelements
int Number of wall segments.
- rarray_like (nelements,1)
R coordinates of wall segment vertices [m].
- zarray_like (nelements,1)
z coordinates of wall segment vertices [m].
- flagarray_like (nelements,1),
optional Integer array depicting the wall component of each triangle.
- flagIdListarray_like (
nUniqueFlags),optional List of keys (int) of the flagIdStrings.
- flagIdStringsarray_like (
nUniqueFlags),optional List of values (str) of the flagIdStrings.
- desc
str,optional Input description.
- fn
- Returns:
- name
str Name, i.e. “<type>_<qid>”, of the new input that was written.
- name
- Raises:
ValueErrorIf the input is inconsistent.
- class a5py.ascot5io.wall.wall_3D(root, path, **kwargs)
Triangle mesh that represents a 3D wall.
This wall model can be obtained easily from a STEP file or from a CAD model with a little effort. If 3D model of the wall is not available, consider using the mock-up 3D wall generated by “rotating” the 2D wall contour toroidally in steps.
3D wall model allows estimating the wall loads, but keep in mind that smaller triangles means more markers are required in simulation to gain sufficient statistics. On the other hand, too coarse model means that important details on wall load distribution could be missed.
This wall doesn’t have to form a closed “waterproof” structure, and one can use this to model FILD.
- area(normal=False, data=None)
Calculate wall element area.
- Parameters:
- Returns:
- areaarray_like, (nelement,)
Surface areas of the wall elements.
- nvecarray_like, (nelement,3)
Normal vectors of the wall elements in cartesian basis.
Note that the direction of the normal vector is not specifiec (it can vary between elements and point either inside or outside).
- barycenters(cartesian=True, data=None)
Calculate wall element barycenter.
- Parameters:
- Returns:
- barycentersarray_like, (nelement,3)
Barycenter of the wall elements.
- static convert_wall_2D(nphi, **kwargs)
Convert
wall_2Dinput towall_3Dinput.This function repeats the 2D wall contour around the torus at intervals Delta phi = 2 pi / (nphi - 1). Then each (R, z) point is connected to a equivalent point in the adjacent contours by a line segment forming 3D wall made of rectangles. Finally each rectangle is divided into two triangles.
- Parameters:
- nphi
int Number of toroidal segments to be created.
- **kwargs
Arguments passed to
wall_2D.write_hdf5()excludingfnanddesc.
- nphi
- Returns:
- out
dict wall_2Dconverted as an input forwrite_hdf5().
- out
- static create_dummy()
Create dummy data that has correct format and is valid, but can be non-sensical.
This method is intended for testing purposes or to provide data whose presence is needed but which is not actually used in simulation.
The dummy output consists of a single triangle on a poloidal plane.
- Returns:
- data
dict Input data that can be passed to
write_hdf5method of a corresponding type.
- data
- getwallcontour(phi=unyt_quantity(0, 'degree'))
Return a cross section of the wall with a given poloidal plane.
- Parameters:
- phi
float Toroidal angle of the plane.
- phi
- Returns:
- linesarray_like (n,2,2)
Line segments [[[r1,z1], [r2,z2]], …] that form the cross section.
- getwalloutline(z=0)
Return minimum and maximum wall R-coordinates as a function of phi at the given z=const. plane.
- Parameters:
- z
float Defines the z=const. plane.
- z
- Returns:
- rminarray_like, (nphi,)
Minimum R-coordinate at each toroidal angle.
- rmaxarray_like, (nphi,)
Maximum R-coordinate at each toroidal angle.
- noderepresentation(w_indices=None)
Return an array of vertices and indices that define this wall.
- Parameters:
- w_indicesarray_like,
optional list of of triangle indices for which the node representation is done i.e. [ind1, ind2, …, indn].
Can also be a Boolean array with the same size as the number of wall triangles.
- Returns:
- vertices
float, array_like <br> Triangle vertices in a format [[x1, y1, z1], …, [xn, yn, zn]] where n is 3 x number of triangles.
- faces
int, array_like <br> Array of dimension (number of triangles, 4) where each four length array defines a wall elemenet as [number of vertices, i1, i2, i3] where number of vertices is always 3 and i1, i2, and i3 define the indices of the vertices in the vertices array.
- w_indicesarray_like,
- read()
Read data from HDF5 file.
- Returns:
- data
dict Data read from HDF5 stored in the same format as is passed to
write_hdf5().
- data
- static write_hdf5(fn, nelements, x1x2x3, y1y2y3, z1z2z3, flag=None, labels=None, desc=None)
Write input data to the HDF5 file.
- Parameters:
- fn
str Full path to the HDF5 file.
- nelements
int Number of wall triangles
- x1x2x3array_like (nelements,3)
Each triangle’s vertices’ x coordinates [m].
- y1y2y3array_like (nelements,3)
Each triangle’s vertices’ y coordinates [m].
- z1z2z3array_like (nelements,3)
Each triangle’s vertices’ z coordinates [m].
- flagarray_like (nelements,1),
optional Integer specifying to which group (e.g. wall component) a triangle belongs to.
- labels
dict[str,int],optional Human readable labels for the flag values.
- desc
str,optional Input description.
- fn
- Returns:
- name
str Name, i.e. “<type>_<qid>”, of the new input that was written.
- name
- Raises:
ValueErrorIf the triangle vertices or flags have incorrect shape.