Skip to main content

Site

Struct Site 

Source
pub struct Site<S> {
    pub site_tag: usize,
    pub body_tag: usize,
    pub properties: S,
}
Expand description

Interactions in hoomd-rs apply between sites.

A Site (often called an atom or a particle in other codes) has a tag that uniquely identities it in the Microstate and is associated with a given body (see Body). All interactions in hoomd-rs occur on or between sites as a function of their properties which has the generic type S. At a minimum, Microstate assumes that S implements Position. S is generic so that users can build custom types that store orientation, charge, mass, color, or whatever other fields are needed to implement their model.

Add sites to the Microstate as members of bodies (Body).

§Example

Find the center of all interaction sites in a Microstate:

use hoomd_microstate::{Body, Microstate, MicrostateBuilder};
use hoomd_vector::{Cartesian, Vector};

let microstate = Microstate::builder()
    .bodies([
        Body::point(Cartesian::from([1.0, 0.0])),
        Body::point(Cartesian::from([-1.0, 2.0])),
    ])
    .try_build()?;

let average_site_position = microstate
    .sites()
    .iter()
    .map(|site| site.properties.position)
    .sum::<Cartesian<2>>()
    / (microstate.sites().len() as f64);

Fields§

§site_tag: usize

Every site in a Microstate has a unique value in site_tag.

§body_tag: usize

The body tag of the Body associated with this site.

§properties: S

The properties of the site.

Trait Implementations§

Source§

impl<S: Clone> Clone for Site<S>

Source§

fn clone(&self) -> Site<S>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<S: Debug> Debug for Site<S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de, S> Deserialize<'de> for Site<S>
where S: Deserialize<'de>,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<S: PartialEq> PartialEq for Site<S>

Source§

fn eq(&self, other: &Site<S>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<S> Serialize for Site<S>
where S: Serialize,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<S: Copy> Copy for Site<S>

Source§

impl<S> StructuralPartialEq for Site<S>

Auto Trait Implementations§

§

impl<S> Freeze for Site<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for Site<S>
where S: RefUnwindSafe,

§

impl<S> Send for Site<S>
where S: Send,

§

impl<S> Sync for Site<S>
where S: Sync,

§

impl<S> Unpin for Site<S>
where S: Unpin,

§

impl<S> UnsafeUnpin for Site<S>
where S: UnsafeUnpin,

§

impl<S> UnwindSafe for Site<S>
where S: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,