Skip to main content

Formulation

Enum Formulation 

Source
pub enum Formulation {
    Classical,
    DualPrimal,
}
Expand description

How the subdomains are tied together.

Classical FETI ties every interface DOF with a Lagrange multiplier, so there are no corners and every subdomain is floating unless boundary conditions pin it. A floating subdomain’s stiffness is singular along its rigid-body modes, so its local solve is a generalized inverse and the dual solve is projected against those modes.

A subdomain’s rigid-body modes are an exact kernel of its tangent only where it carries no stress, which a subdomain cut out of a stressed body does at its interface. Classical FETI takes them as the kernel anyway, so unlike FETI-DP it is inexact for a geometrically nonlinear tangent, by an error that grows with the strain: 2e-3 of the solution at the strains of the tests, and 1e-2 of the strain at most. Inside Newton’s method the solution is still the right one, but each step is approximate. The tangent must also be symmetric.

Its Dirichlet preconditioner is scaled by multiplicity, which it needs: unscaled it takes many times more iterations, growing with the number of subdomains. FETI-DP takes about the same either way, so it is not scaled.

Variants§

§

Classical

No corner nodes.

§

DualPrimal

Corner nodes are primal.

Trait Implementations§

Source§

impl Clone for Formulation

Source§

fn clone(&self) -> Formulation

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Formulation

Source§

impl Debug for Formulation

Source§

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

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

impl Default for Formulation

Source§

fn default() -> Formulation

Returns the “default value” for a type. Read more
Source§

impl Eq for Formulation

Source§

impl PartialEq for Formulation

Source§

fn eq(&self, other: &Formulation) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Formulation

Auto Trait Implementations§

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> Is<T> for T

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.