Go to the documentation of this file.
71 for (
auto eq : eqnmask ) {
75 s0 = ( -1.0 ) * g.dotProduct(dr);
100 for ( ils = 2; ils <= this->
max_iter; ils++ ) {
103 r.
add(this->
eta.at(ils), dr);
117 for (
auto eq : eqnmask ) {
122 double si = ( -1.0 ) * g.dotProduct(dr) / s0;
131 etaValue =
eta.at(ils);
161 double maxetalim,
double minetalim,
int &ico)
171 for (
int i = 1; i <= istep; i++ ) {
172 etamax =
max( etamax,
eta.at(i) );
173 if (
prod.at(i) >= 0.0 ) {
177 if (
eta.at(i) >= etaneg ) {
190 for (
int i = 1; i <= istep; i++ ) {
191 if (
prod.at(i) <= 0.0 ) {
195 if (
eta.at(i) >
eta.at(ineg) ) {
199 if (
eta.at(i) <
eta.at(ipos) ) {
207 double etaint = (
prod.at(ineg) *
eta.at(ipos) -
prod.at(ipos) *
eta.at(ineg) ) / (
prod.at(ineg) -
prod.at(ipos) );
209 double etaalt =
eta.at(ipos) + 0.2 * (
eta.at(ineg) -
eta.at(ipos) );
210 etaint =
max(etaint, etaalt);
211 if ( etaint < minetalim ) {
220 eta.at(istep + 1) = etaint;
224 double etamaxstep = amp * etamax;
226 double etaextrap = (
prod.at(istep) *
eta.at(istep - 1) -
prod.at(istep - 1) *
eta.at(istep) ) /
227 (
prod.at(istep) -
prod.at(istep - 1) );
228 eta.at(istep + 1) = etaextrap;
230 if ( ( etaextrap <= 0.0 ) || ( etaextrap > etamaxstep ) ) {
231 eta.at(istep + 1) = etamaxstep;
234 if ( (
eta.at(istep + 1) > maxetalim ) && ( ico == 1 ) ) {
239 if ( (
eta.at(istep + 1) > maxetalim ) ) {
241 eta.at(istep + 1) = maxetalim;
Index giveSize() const
Returns the size of receiver.
void add(const FloatArray &src)
void search(int istep, FloatArray &prod, FloatArray &eta, double amp, double maxeta, double mineta, int &status)
NumericalMethod(Domain *d, EngngModel *m)
Domain * domain
Pointer to domain.
EngngModel * engngModel
Pointer to engineering model.
void incrementStateCounter()
Updates solution state counter.
#define _IFT_LineSearchNM_lsearchmaxeta
#define _IFT_LineSearchNM_lsearchtol
#define _IFT_LineSearchNM_lsearchamp
#define OOFEM_LOG_DEBUG(...)
FloatArrayF< N > max(const FloatArrayF< N > &a, const FloatArrayF< N > &b)
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