ASCOT5
Loading...
Searching...
No Matches
wall.c File Reference

Wall interface. More...

#include <stdio.h>
#include <math.h>
#include "ascot5.h"
#include "print.h"
#include "wall.h"
#include "wall/wall_2d.h"
#include "wall/wall_3d.h"

Go to the source code of this file.

Functions

void wall_free (wall_data *data)
 Free allocated resources.
 
void wall_offload (wall_data *data)
 Offload data to the accelerator.
 
int wall_hit_wall (real r1, real phi1, real z1, real r2, real phi2, real z2, wall_data *w, real *w_coll)
 Check if a given directed line segment intersects the wall.
 
int wall_get_n_elements (wall_data *w)
 Return the number of wall elements.
 

Detailed Description

Wall interface.

This is an interface through which wall data is initialized and accessed. Reading e.g. from disk is done elsewhere.

To add a new wall instance, make sure these functions are implemented and called from this interface, and that wall.h contains enum type for the new instance.

The interface checks which instance given data corresponds to from the "type"-field in wall_offload_data or wall_data that is given as an argument, and calls the relevant function for that instance.

Definition in file wall.c.

Function Documentation

◆ wall_free()

void wall_free ( wall_data * data)

Free allocated resources.

Parameters
datapointer to the data struct

Definition at line 29 of file wall.c.

◆ wall_offload()

void wall_offload ( wall_data * data)

Offload data to the accelerator.

Parameters
datapointer to the data struct

Definition at line 46 of file wall.c.

◆ wall_hit_wall()

int wall_hit_wall ( real r1,
real phi1,
real z1,
real r2,
real phi2,
real z2,
wall_data * w,
real * w_coll )

Check if a given directed line segment intersects the wall.

This function is intended to be used to check whether a marker collides with the wall. If there is a collision, this function returns an identification number specific to that wall tile. If the marker hits multiple wall elements, only the first one is returned.

This is a SIMD function.

Parameters
r1start point R coordinate [m]
phi1start point phi coordinate [rad]
z1start point z coordinate [rad]
r2end point R coordinate [m]
phi2end point phi coordinate [rad]
z2end point z coordinate [rad]
wpointer to data struct on target
w_collpointer for storing the parameter in P = P1 + w_coll * (P2-P1), where P is the point where the collision occurred.
Returns
wall element id if hit, zero otherwise

Definition at line 80 of file wall.c.

◆ wall_get_n_elements()

int wall_get_n_elements ( wall_data * w)

Return the number of wall elements.

Parameters
wpointer to wall data struct on target
Returns
Number of wall elements or zero on failure.

Definition at line 104 of file wall.c.