xc
|
Uses the tangent stiffness matrix computed in the first iteration until convergence is achieved. More...
#include <ModifiedNewton.h>
Public Member Functions | |
int | solveCurrentStep (void) |
Solves for the current analysis step. More... | |
void | Print (std::ostream &s, int flag=0) |
Sends the class name to the stream if flag equals \(0\). | |
![]() | |
virtual int | sendSelf (CommParameters &) |
Sends object through the channel being passed as parameter. | |
virtual int | recvSelf (const CommParameters &) |
Receives object through the channel being passed as parameter. | |
![]() | |
virtual ConvergenceTest * | getConvergenceTestPtr (void) |
Returns a pointer to the convergence test. | |
virtual const ConvergenceTest * | getConvergenceTestPtr (void) const |
Returns a pointer to the convergence test. | |
IncrementalIntegrator * | getIncrementalIntegratorPtr (void) |
Returns a pointer to the incremental integrator. | |
![]() | |
virtual int | domainChanged (void) |
Perform the appropiate modifications as a result of a change in the domain. More... | |
virtual AnalysisModel * | getAnalysisModelPtr (void) |
Return a pointer to the analysis model. | |
virtual const AnalysisModel * | getAnalysisModelPtr (void) const |
Return a const pointer to the analysis model. | |
virtual Integrator * | getIntegratorPtr (void) |
Return a pointer to the integrator. | |
virtual const Integrator * | getIntegratorPtr (void) const |
Return a const pointer to the integrator. | |
virtual LinearSOE * | getLinearSOEPtr (void) |
Return a pointer to the linear system of equations. | |
virtual const LinearSOE * | getLinearSOEPtr (void) const |
Return a const pointer to the linear system of equations. | |
virtual EigenSOE * | getEigenSOEPtr (void) |
Return a pointer to the eigen system of equations. | |
virtual const EigenSOE * | getEigenSOEPtr (void) const |
Return a const pointer to the eigen system of equations. | |
virtual const DomainSolver * | getDomainSolverPtr (void) const |
Return a const pointer to the DomainSolver. | |
virtual DomainSolver * | getDomainSolverPtr (void) |
Return a pointer to the DomainSolver. | |
virtual const Subdomain * | getSubdomainPtr (void) const |
Return a const pointer to the subdomain. | |
virtual Subdomain * | getSubdomainPtr (void) |
Return a pointer to the subdomain. | |
![]() | |
MovableObject (int classTag, int dbTag) | |
Constructor. More... | |
MovableObject (int classTag) | |
Constructor. More... | |
MovableObject (const MovableObject &) | |
Copy constructor. Doesn't copy the dbTag. | |
MovableObject & | operator= (const MovableObject &) |
Assignment operator. Doesn't copy the dbTag. | |
int | getClassTag (void) const |
Return the class identifier. | |
int | getDbTag (void) const |
Return the object identifier in the database. | |
int | getDbTag (CommParameters &) |
Return the object identifier in the database. | |
void | setDbTag (int dbTag) |
Sets the object identifier in the database. | |
void | setDbTag (CommParameters &) |
Sets the object identifier in the database if not already set. More... | |
virtual int | setParameter (const std::vector< std::string > &argv, Parameter ¶m) |
Sets the value param to the parameter argv . | |
virtual int | updateParameter (int parameterID, Information &info) |
Updates the parameter identified by parameterID with info . | |
virtual int | activateParameter (int parameterID) |
Activates the parameter identified by parameterID . | |
virtual int | setVariable (const std::string &variable, Information &) |
Set the value of the variable idenfified by var . | |
virtual int | getVariable (const std::string &variable, Information &) |
Return the value of the variable idenfified by var . | |
![]() | |
DistributedBase (void) | |
Constructor. | |
virtual DbTagData & | getDbTagData (void) const |
Returns a vector to store class dbTags. | |
const int & | getDbTagDataPos (const int &i) const |
Returns the data at the i-th position. | |
void | setDbTagDataPos (const int &i, const int &v) |
Sets the data at the i-th position. | |
void | inicComm (const int &dataSize) const |
Initializes communication. | |
![]() | |
ObjWithRecorders (CommandEntity *owr, DataOutputHandler::map_output_handlers *oh=nullptr) | |
virtual | ~ObjWithRecorders (void) |
Destructor. | |
Recorder * | newRecorder (const std::string &, DataOutputHandler *oh=nullptr) |
Read a Recorder object from file. | |
virtual int | addRecorder (Recorder &theRecorder) |
Adds a recorder. More... | |
recorder_iterator | recorder_begin (void) |
const_recorder_iterator | recorder_begin (void) const |
recorder_iterator | recorder_end (void) |
const_recorder_iterator | recorder_end (void) const |
virtual int | record (int track, double timeStamp=0.0) |
To invoke {record(cTag, timeStamp)} on any Recorder objects which have been added. More... | |
void | restart (void) |
To invoke {restart()} on any Recorder objects which have been added. More... | |
virtual int | removeRecorders (void) |
Remove the recorders. | |
void | setLinks (Domain *dom) |
Asigna el domain a los recorders. | |
void | SetOutputHandlers (DataOutputHandler::map_output_handlers *oh) |
Set the outputhandlers container. | |
Friends | |
class | AnalysisAggregation |
class | FEM_ObjectBroker |
Additional Inherited Members | |
![]() | |
typedef std::list< Recorder * > | lista_recorders |
typedef lista_recorders::iterator | recorder_iterator |
typedef lista_recorders::const_iterator | const_recorder_iterator |
![]() | |
int | sendData (CommParameters &) |
Send object members through the channel being passed as parameter. | |
int | recvData (const CommParameters &) |
Receives object members through the channel being passed as parameter. | |
NewtonBased (AnalysisAggregation *, int classTag, int tangent=CURRENT_TANGENT) | |
Constructor. | |
![]() | |
EquiSolnAlgo (AnalysisAggregation *, int clasTag) | |
Constructor. More... | |
![]() | |
AnalysisAggregation * | getAnalysisAggregation (void) |
Return a pointer to the solution method which owns this object. | |
const AnalysisAggregation * | getAnalysisAggregation (void) const |
Return a pointer to the solution method which owns this object. | |
virtual Domain * | get_domain_ptr (void) |
Return a pointer to the domain. | |
int | sendData (CommParameters &) |
Send object members through the channel passed as parameter. | |
int | recvData (const CommParameters &) |
Receive object members through the channel passed as parameter. | |
SolutionAlgorithm (AnalysisAggregation *, int classTag) | |
Constructor. | |
![]() | |
int | sendData (CommParameters &cp) |
int | recvData (const CommParameters &cp) |
size_t | getNumRecorders (void) const |
Returns the number of recorders already defined. | |
![]() | |
int | tangent |
Uses the tangent stiffness matrix computed in the first iteration until convergence is achieved.
The ModifiedNewton class is an algorithmic class which obtains a solution to a non-linear system using the modified Newton-Raphson iteration scheme. The Newton-Rapson iteration scheme is based on a Taylor expansion of the non-linear system of equations \(R(U) = 0\) about an approximate solution \(U{(i)}\): {equation} R(U) = R(U^{(i)}) + [ {{ R}{ U} }_{U^{(i)}}] ( U - U^{(i)} ) {equation}
which can be expressed as: {equation} K^{(i)} U{(i)} = R(U^{(i)}) {equation} which is solved for \(\Delta U^{(i)}\) to give approximation for \(U^{(i+1)} = U^{(i)} + \Delta U^{(i)}\). To start the iteration \(U^{(1)} = U_{trial}\), i.e. the current trial response quantities are chosen as initial response quantities.
in the modified version the tangent is formed only once, i.e {equation} K^{(1)} U^{(i)} = R(U^{(i)}) {equation}
To stop the iteration, a test must be performed to see if convergence has been achieved at each iteration. Each NewtonRaphson object is associated with a ConvergenceTest object. It is this object which determines if convergence has been achieved.
|
virtual |
Solves for the current analysis step.
When invoked the object first sets itself as the EquiSolnAlgo object that the ConvergenceTest is testing and then it performs the modified Newton-Raphson iteration algorithm: {tabbing} while \= + while \= theTest- \(>\)start(); theIntegrator- \(>\)formTangent(); do + theIntegrator- \(>\)formUnbalance(); theSOE- \(>\)solveX(); theIntegrator- \(>\)update(theSOE- \(>\)getX()); - {tabbing} The method returns a 0 if successful, otherwise a negative number is returned; a \(-1\) if error during formTangent(), a \(-2\) if error during formUnbalance(), a \(-3\) if error during {solve()}, and a \(-4\) if error during update(). If an error occurs in any of the above operations the method stops at that routine, none of the subsequent operations are invoked. A \(-5\) is returned if any one of the links has not been setup.
Implements XC::EquiSolnAlgo.