Files
solver/OndselSolver/NewtonRaphson.h
Chris Mayo 07785b7576 include cstdint for SIZE_MAX (#86)
GCC 15 is removing cstdint from the C++ Standard Library.
2024-11-27 15:07:28 -07:00

56 lines
2.0 KiB
C++

/***************************************************************************
* Copyright (c) 2023 Ondsel, Inc. *
* *
* This file is part of OndselSolver. *
* *
* See LICENSE file for details about copyright. *
***************************************************************************/
#pragma once
#include <cstdint>
#include <memory>
#include <vector>
#include "Solver.h"
//#include "RowTypeMatrix.h"
namespace MbD {
template<typename T>
class FullColumn;
//class RowTypeMatrix;
class SystemSolver;
class NewtonRaphson : public Solver
{
//system xold x dx dxNorm dxNorms dxTol y yNorm yNormOld yNorms yNormTol pypx iterNo iterMax nDivergence nBackTracking twoAlp lam
public:
void initialize() override;
void initializeLocally() override;
void run() override;
void setSystem(Solver* sys) override;
void iterate();
virtual void fillY() = 0;
virtual void fillPyPx() = 0;
virtual void calcyNorm() = 0;
virtual void calcdxNorm() = 0;
virtual void solveEquations() = 0;
virtual void incrementIterNo();
virtual void updatexold() = 0;
virtual void xEqualxoldPlusdx() = 0;
virtual bool isConverged();
virtual void askSystemToUpdate();
virtual void passRootToSystem() = 0;
bool isConvergedToNumericalLimit();
void calcDXNormImproveRootCalcYNorm();
void postRun() override;
SystemSolver* system = nullptr; //Use raw pointer when pointing backwards.
std::shared_ptr<std::vector<double>> dxNorms, yNorms;
double dxNorm = 0.0, yNorm = 0.0, yNormOld = 0.0, yNormTol = 0.0, dxTol = 0.0, twoAlp = 0.0, lam = 0.0;
size_t iterNo = SIZE_MAX, iterMax = SIZE_MAX, nDivergence = SIZE_MAX, nBackTracking = SIZE_MAX;
};
}