Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ArcLength Class Reference

#include <ArcLength.h>

Inheritance diagram for ArcLength::

StaticIntegrator IncrementalIntegrator Integrator MovableObject List of all members.

Public Methods

 ArcLength (double arcLength, double alpha=1.0)
 ~ArcLength ()
int newStep (void)
int update (const Vector &deltaU)
int domainChanged (void)
int sendSelf (int commitTag, Channel &theChannel)
int recvSelf (int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker)
void Print (ostream &s, int flag=0)

Detailed Description

ArcLength is a subclass of StaticIntegrator, it is used to when performing a static analysis on the FE\_Model using an arc length method. In the arc length method implemented by this class, the following constraint equation is added to equation~\ref{staticFormTaylor} of the StaticIntegrator class:

\begin{equation} \Delta U_n^T \Delta U_n + \alpha^2 \Delta \lambda_n^2 = \Delta s^2 \end{equation}

where

this equation cannot be added directly into equation~\ref{staticFormTaylor} to produce a linear system of unknowns. To add this equation we make some assumptions ala Yang (REF), which in so doing allows us to solve a system of unknowns using the method of ??(REF). Rewriting equation~\ref{staticFormTaylor} as

The idea of ?? is to separate this into two equations:

\defUh{\dot{\bf U}} \defUb{\overline{\bf U}}

where now

\begin{equation} \Delta U_n^{(i)} = \Delta \lambda_n^{(i)} \Delta Uh_n^{(i)} + \Delta Ub_n^{(i)} \label{splitForm} \end{equation}

We now rewrite the constraint equation based on two conditions:

\begin{enumerate} \item {\bf }: assuming , i.e. the system is in equilibrium at the start of the iteration, the following is obtained

The question now is whether {\bf +} or {\bf -} should be used. In this class, from the previous iteration is used, if it was positive {\bf +} is assumed, otherwise {\bf -}. This may change. There are other ideas: ?(REF) number of negatives on diagonal of decomposed matrix, ...

\item {\bf }

assuming the constraint equation was solved at , i.e. , this reduces to

substituting for using equation~\ref{splitForm} this can be expressed as:

which is a quadratic in , which can be solved for two roots. The root chosen is the one which will keep a positive angle between the incremental displacement before and after this step.

\end{enumerate}

Definition at line 173 of file ArcLength.h.


Constructor & Destructor Documentation

ArcLength::ArcLength ( double arcLength,
double alpha = 1.0 )
 

Definition at line 50 of file ArcLength.cpp.

ArcLength::~ArcLength ( )
 

Invokes the destructor on the Vector objects created in {domainChanged()}.

Definition at line 60 of file ArcLength.cpp.


Member Function Documentation

void ArcLength::Print ( ostream & s,
int flag = 0 ) [virtual]
 

The object sends to its type, the current value of , and .

Reimplemented from Integrator.

Definition at line 339 of file ArcLength.cpp.

int ArcLength::domainChanged ( void ) [virtual]
 

The object creates the Vector objects it needs. Vectors are created to stor , , , , . To form , the current load factor is obtained from the model, it is incremented by , {formUnbalance()} is invoked on the object, and the vector is obtained from the linearSOE. This is , the load factor on the model is then decremented by .

Reimplemented from Integrator.

Definition at line 204 of file ArcLength.cpp.

int ArcLength::newStep ( void ) [virtual]
 

{newStep()} performs the first iteration, that is it solves for and and updates the model with and increments the load factor by . To do this it must set the rhs of the LinearSOE to , invoke {formTangent()} on itself and solve the LinearSOE to get .

Reimplemented from StaticIntegrator.

Definition at line 74 of file ArcLength.cpp.

int ArcLength::recvSelf ( int commitTag,
Channel & theChannel,
FEM_ObjectBroker & theBroker ) [virtual]
 

Receives in a Vector of size 2 the values of and . Returns if successful, a warning message is printed, is set to , and a is returned if {theChannel} fails to receive the Vector.

Reimplemented from MovableObject.

Definition at line 320 of file ArcLength.cpp.

int ArcLength::sendSelf ( int commitTag,
Channel & theChannel ) [virtual]
 

Places the values of and in a vector of size and invokes {sendVector()} on {theChannel}. Returns if successful, a warning message is printed and a is returned if {theChannel} fails to send the Vector.

Reimplemented from MovableObject.

Definition at line 301 of file ArcLength.cpp.

int ArcLength::update ( const Vector & deltaU ) [virtual]
 

Note the argument should be equal to . The object then determines by setting the rhs of the linear system of equations to be and then solving the linearSOE. It then solves for and and updates the model with and increments the load factor by . Sets the vector in the LinearSOE object to be equal to before returning (this is for the convergence test stuff.

Reimplemented from IncrementalIntegrator.

Definition at line 121 of file ArcLength.cpp.


The documentation for this class was generated from the following files:
Copyright Contact Us