Skip to main content

ProjectedState

Struct ProjectedState 

Source
pub struct ProjectedState<T, V>
where T: TensorLike, V: Clone + Hash + Eq + Send + Sync + Debug,
{ pub rhs: TreeTN<T, V>, pub envs: EnvironmentCache<T, V>, }
Expand description

ProjectedState: Manages 2-chain environments for RHS computation.

This computes <b|x_local> for each local region during the sweep.

For Tree Tensor Networks, the environment is computed by contracting all tensors outside the “open region” into environment tensors. The open region consists of nodes being updated in the current sweep step.

§Structure

For each edge (from, to) pointing towards the open region, we cache:

env[(from, to)] = contraction of:
  - bra tensor at `from` (conjugated RHS)
  - ket tensor at `from` (current solution)
  - all child environments (edges pointing away from `to`)

This forms a “2-chain” overlap: <b|x> contracted over all nodes except the open region.

Fields§

§rhs: TreeTN<T, V>

The RHS state |b⟩

§envs: EnvironmentCache<T, V>

Environment cache

Implementations§

Source§

impl<T, V> ProjectedState<T, V>
where T: TensorLike, <T::Index as IndexLike>::Id: Clone + Hash + Eq + Ord + Debug + Send + Sync + 'static, V: Clone + Hash + Eq + Ord + Send + Sync + Debug,

Source

pub fn new(rhs: TreeTN<T, V>) -> Self

Create a new ProjectedState.

Source

pub fn local_constant_term<NT: NetworkTopology<V>>( &mut self, region: &[V], reference_state: &TreeTN<T, V>, topology: &NT, ) -> Result<T>

Compute the local constant term (local RHS) for the given region.

This returns the local RHS tensors contracted with environments.

For the square case, the reference_state is used as the bra (conjugated), and rhs is used as the ket, i.e. environments are constructed for <ref|b>.

§Arguments
  • region - The nodes in the local update region
  • reference_state - The current solution state (used as reference for environments)
  • topology - The network topology
Source

pub fn invalidate<NT: NetworkTopology<V>>( &mut self, region: &[V], topology: &NT, )

Invalidate caches affected by updates to the given region.

Auto Trait Implementations§

§

impl<T, V> Freeze for ProjectedState<T, V>

§

impl<T, V> RefUnwindSafe for ProjectedState<T, V>
where <T as TensorIndex>::Index: RefUnwindSafe, V: RefUnwindSafe, T: RefUnwindSafe, <<T as TensorIndex>::Index as IndexLike>::Id: RefUnwindSafe,

§

impl<T, V> Send for ProjectedState<T, V>

§

impl<T, V> Sync for ProjectedState<T, V>

§

impl<T, V> Unpin for ProjectedState<T, V>
where <T as TensorIndex>::Index: Unpin, V: Unpin, T: Unpin, <<T as TensorIndex>::Index as IndexLike>::Id: Unpin,

§

impl<T, V> UnsafeUnpin for ProjectedState<T, V>

§

impl<T, V> UnwindSafe for ProjectedState<T, V>
where <T as TensorIndex>::Index: UnwindSafe, V: UnwindSafe, T: UnwindSafe, <<T as TensorIndex>::Index as IndexLike>::Id: 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
§

impl<U> As for U

§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. 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
§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

§

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

§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

§

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

§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

§

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

§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

§

impl<T> MaybeSend for T

§

impl<T> MaybeSendSync for T

§

impl<T> MaybeSync for T