# Sphere

*A sphere is a three-dimensional geometric shape where every point on its surface is equidistant from the center. It is defined by its center point and radius.*

## Available Options

| *Option* | *Description* | *Applicable* |
|----------|---------------|--------------|
| [**Name**](#name) | Identifier for the sphere | always |
| [**Center**](#center) | Three-dimensional coordinates of the center point | always |
| [**Axis**](#axis) | Direction vector used for sliding interface orientation | always |
| [**Radius**](#radius) | Distance from the center to the surface | always |


## Detailed Descriptions

### Name

*Identifier for the sphere volume entity.*

- **Required**
>**Note:** Names are not required to be unique, but using descriptive unique names is recommended.

### Center

*Three-dimensional coordinates (X, Y, Z) defining the center point of the sphere.*

- **Required**
- **Units:** Length

### Axis

*Direction vector (X, Y, Z) defining the axis of rotation for the sphere, used in sliding interface configurations.*

- **Default:** `(0, 0, 1)`
>**Note:** The vector is normalized internally.

### Radius

*The distance from the center of the sphere to its surface.*

- **Required**
- **Units:** Length

---

<details>
<summary><h3 style="display:inline-block"> 💡 Tips</h3></summary>

- Use spheres for omnidirectional refinement regions around a point of interest
- Use spheres as rotation zones for spherical sliding interfaces
- Ensure the sphere fully encloses the target geometry with some margin
- The axis parameter is relevant when the sphere is used as a sliding interface zone

</details>

---

<details>
<summary><h3 style="display:inline-block"> 🐍 Python Example Usage</h3></summary>

```python
import flow360 as fl

# Sphere for local refinement around a body
refinement_sphere = fl.Sphere(
    name="refinement_zone",
    center=(0, 0, 0) * fl.u.m,
    radius=2.0 * fl.u.m,
)

# Sphere with custom axis for a sliding interface
sliding_sphere = fl.Sphere(
    name="sphere_zone",
    center=(0, 0, 0) * fl.u.m,
    radius=1.5 * fl.u.m,
    axis=(0, 0, 1),
)
```

</details>
