OOFEM 3.0
Loading...
Searching...
No Matches
oofem::LineSearchNM Class Reference

#include <linesearch.h>

Inheritance diagram for oofem::LineSearchNM:
Collaboration diagram for oofem::LineSearchNM:

Public Types

enum  LS_status { ls_ok , ls_failed }

Public Member Functions

 LineSearchNM (Domain *d, EngngModel *m)
 Constructor.
ConvergedReason solve (FloatArray &r, FloatArray &dr, FloatArray &F, FloatArray &R, FloatArray *R0, IntArray &eqnmask, double lambda, double &etaValue, LS_status &status, TimeStep *tStep)
void initializeFrom (InputRecord &ir) override
const char * giveClassName () const
Public Member Functions inherited from oofem::NumericalMethod
 NumericalMethod (Domain *d, EngngModel *m)
virtual ~NumericalMethod ()
 Destructor.
EngngModelgiveEngngModel ()
virtual void reinitialize ()
virtual void setDomain (Domain *d)
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)

Public Attributes

int max_iter
double ls_tolerance
double amplifFactor
double maxEta
double minEta
FloatArray eta
FloatArray prod

Protected Member Functions

void search (int istep, FloatArray &prod, FloatArray &eta, double amp, double maxeta, double mineta, int &status)

Additional Inherited Members

Protected Attributes inherited from oofem::NumericalMethod
Domaindomain
 Pointer to domain.
EngngModelengngModel
 Pointer to engineering model.

Detailed Description

This base class is an abstraction/implementation for numerical method solving line search optimization problem.

Definition at line 60 of file linesearch.h.

Member Enumeration Documentation

◆ LS_status

Enumerator
ls_ok 
ls_failed 

Definition at line 63 of file linesearch.h.

Constructor & Destructor Documentation

◆ LineSearchNM()

oofem::LineSearchNM::LineSearchNM ( Domain * d,
EngngModel * m )

Constructor.

Definition at line 44 of file linesearch.C.

References amplifFactor, ls_tolerance, max_iter, maxEta, minEta, and oofem::NumericalMethod::NumericalMethod().

Member Function Documentation

◆ giveClassName()

const char * oofem::LineSearchNM::giveClassName ( ) const
inline

Definition at line 95 of file linesearch.h.

◆ initializeFrom()

void oofem::LineSearchNM::initializeFrom ( InputRecord & ir)
overridevirtual

◆ search()

void oofem::LineSearchNM::search ( int istep,
FloatArray & prod,
FloatArray & eta,
double amp,
double maxeta,
double mineta,
int & status )
protected

Definition at line 160 of file linesearch.C.

References eta, oofem::max(), and prod.

Referenced by solve().

◆ solve()

ConvergedReason oofem::LineSearchNM::solve ( FloatArray & r,
FloatArray & dr,
FloatArray & F,
FloatArray & R,
FloatArray * R0,
IntArray & eqnmask,
double lambda,
double & etaValue,
LS_status & status,
TimeStep * tStep )

Solves the line search optimization problem in the form of \( g(r)=0; r_{new}=r_{old}+\eta\delta r; 0 < \eta < 1 \), The aim is to find \( \eta \) so that the \( g(r) \) has decreased sufficiently. The total solution vector is updated at exit as well as InternalRhs vector.

Parameters
rOld total solution.
drIncrement of solution.
FOld InternalRhs (real internal forces).
RReference incremental Rhs (incremental load).
R0Initial Rhs (initial load).
eqnmaskEquation numbers to mask out from computations.
lambdaScaling of R.
etaValueReached eta value.
statusLinesearch status
tStepTime step.

Definition at line 55 of file linesearch.C.

References oofem::FloatArray::add(), amplifFactor, oofem::CR_CONVERGED, oofem::CR_DIVERGED_ITS, oofem::NumericalMethod::domain, oofem::NumericalMethod::engngModel, eta, oofem::FloatArray::giveSize(), oofem::TimeStep::incrementStateCounter(), oofem::InternalRhs, ls_failed, ls_ok, ls_tolerance, max_iter, maxEta, minEta, OOFEM_LOG_DEBUG, prod, search(), and oofem::FloatArray::times().

Member Data Documentation

◆ amplifFactor

double oofem::LineSearchNM::amplifFactor

Definition at line 67 of file linesearch.h.

Referenced by initializeFrom(), LineSearchNM(), and solve().

◆ eta

FloatArray oofem::LineSearchNM::eta

Definition at line 69 of file linesearch.h.

Referenced by search(), and solve().

◆ ls_tolerance

double oofem::LineSearchNM::ls_tolerance

Definition at line 66 of file linesearch.h.

Referenced by initializeFrom(), LineSearchNM(), and solve().

◆ max_iter

int oofem::LineSearchNM::max_iter

Definition at line 65 of file linesearch.h.

Referenced by LineSearchNM(), and solve().

◆ maxEta

double oofem::LineSearchNM::maxEta

Definition at line 68 of file linesearch.h.

Referenced by initializeFrom(), LineSearchNM(), and solve().

◆ minEta

double oofem::LineSearchNM::minEta

Definition at line 68 of file linesearch.h.

Referenced by LineSearchNM(), and solve().

◆ prod

FloatArray oofem::LineSearchNM::prod

Definition at line 70 of file linesearch.h.

Referenced by search(), and solve().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011