NeoPZ
|
Derived class from TPZAnalysis implements non linear analysis (Newton's method). Analysis. More...
#include <pznonlinanalysis.h>
Public Member Functions | |
TPZNonLinearAnalysis (TPZCompMesh *mesh, std::ostream &out) | |
Constructor with computational mesh. More... | |
TPZNonLinearAnalysis () | |
Default constructor. More... | |
virtual | ~TPZNonLinearAnalysis () |
Default destructor. More... | |
virtual void | IterativeProcess (std::ostream &out, REAL tol, int numiter, bool linesearch=false, bool checkconv=false) |
It process a Newton's method to solve the non-linear problem. More... | |
REAL | LineSearch (const TPZFMatrix< STATE > &Wn, TPZFMatrix< STATE > DeltaW, TPZFMatrix< STATE > &NextW, REAL tol, int niter) |
Implements a golden section line search. More... | |
REAL | SolutionNorm () |
Computes the L2 norm of the solution. More... | |
virtual void | ComputeTangent (TPZFMatrix< STATE > &tangent, TPZVec< REAL > &coefs, int icase) |
int | NumCases () |
Actually return 1. More... | |
virtual void | Residual (TPZFMatrix< STATE > &residual, int icase) |
virtual void | LoadSolution () |
Load the solution into the computable grid. More... | |
virtual void | LoadSolution (const TPZFMatrix< STATE > &state) |
Load the solution into the computable mesh considering sol as Solution vector of the analysis. More... | |
void | LoadState (TPZFMatrix< STATE > &state) |
Load solution with state as solution. But fSolution is not modified. More... | |
Public Member Functions inherited from TPZAnalysis | |
TPZAnalysis (TPZCompMesh *mesh, bool mustOptimizeBandwidth=true, std::ostream &out=std::cout) | |
Create an TPZAnalysis object from one mesh pointer. More... | |
TPZAnalysis (TPZAutoPointer< TPZCompMesh > mesh, bool mustOptimizeBandwidth=true, std::ostream &out=std::cout) | |
Create an TPZAnalysis object from one mesh auto pointer object. More... | |
void | SetGuiInterface (TPZAutoPointer< TPZGuiInterface > gui) |
Defines gui interface object. More... | |
TPZAutoPointer< TPZGuiInterface > | GetGuiInterface () const |
Gets gui interface object. More... | |
bool | AmIKilled () |
Returns if the process was canceled through gui interface. More... | |
virtual void | SetCompMesh (TPZCompMesh *mesh, bool mustOptimizeBandwidth) |
Set the computational mesh of the analysis. More... | |
TPZAnalysis () | |
Create an empty TPZAnalysis object. More... | |
void | Write (TPZStream &buf, int withclassid) const override |
Writes this object to the TPZStream buffer. Include the classid if withclassid = true. More... | |
void | Read (TPZStream &buf, void *context) override |
read objects from the stream More... | |
virtual | ~TPZAnalysis (void) |
Destructor: deletes all protected dynamic allocated objects. More... | |
void | CleanUp () |
deletes all data structures More... | |
void | SetRenumber (TPZAutoPointer< TPZRenumbering > renumber) |
Change the renumbering scheme. More... | |
void | OptimizeBandwidth () |
Sets the computer connection block number from the graphical connections block number otimization. More... | |
int | HighestDimension () |
Returns the dimension of the material which has the highest dimension. More... | |
void | Resequence (int firstel=-1) |
Recompute the node sequence. More... | |
int | ComputeNumberofLoadCases () |
Determine the number of load cases from the material objects and return its value. More... | |
virtual void | Assemble () |
Assemble the stiffness matrix and load vector. More... | |
virtual void | AssembleResidual () |
Assemble the load vector. More... | |
virtual void | Solve () |
Invert the stiffness matrix. More... | |
TPZFMatrix< STATE > & | Rhs () |
Returns the load vector. More... | |
TPZFMatrix< STATE > & | Solution () |
Returns the solution matrix. More... | |
TPZCompMesh * | Mesh () const |
Returns the pointer to the computational mesh. More... | |
TPZAutoPointer< TPZStructMatrix > | StructMatrix () |
Returns a reference to the structural matrix. More... | |
TPZMatrixSolver< STATE > * | BuildPreconditioner (EPrecond preconditioner, bool overlap) |
Define the type of preconditioner used. More... | |
void | SetStep (int step) |
ste the step for post processing More... | |
void | SetThreadsForError (int nthreads) |
int | GetStep () |
void | SetTime (REAL time) |
Sets time will be used in dx files. More... | |
REAL | GetTime () |
Gets time used in dx files. More... | |
void | ShowShape (const std::string &plotfile, TPZVec< int64_t > &equationindices) |
Graphic of the solution as V3DGrap visualization. More... | |
void | ShowShape (const std::string &plotfile, TPZVec< int64_t > &equationindices, int matid, const TPZVec< std::string > &varname) |
Graphic of the solution as V3DGrap visualization. More... | |
void | LoadShape (double dx, double dy, int64_t numelem, TPZConnect *nod) |
Make assembling and clean the load and solution vectors. More... | |
virtual void | Run (std::ostream &out=std::cout) |
Calls the appropriate sequence of methods to build a solution or a time stepping sequence. More... | |
virtual void | DefineGraphMesh (int dimension, const TPZVec< std::string > &scalnames, const TPZVec< std::string > &vecnames, const std::string &plotfile) |
Define GrapMesh as V3D, DX, MV or VTK depending on extension of the file. More... | |
virtual void | DefineGraphMesh (int dimension, const TPZVec< std::string > &scalnames, const TPZVec< std::string > &vecnames, const TPZVec< std::string > &tensnames, const std::string &plotfile) |
Define GrapMesh as VTK with tensorial names depending on extension of the file. More... | |
virtual void | DefineGraphMesh (int dimension, const std::set< int > &matids, const TPZVec< std::string > &scalnames, const TPZVec< std::string > &vecnames, const std::string &plotfile) |
Define GrapMesh as V3D, DX, MV or VTK depending on extension of the file. More... | |
virtual void | DefineGraphMesh (int dimension, const std::set< int > &matids, const TPZVec< std::string > &scalnames, const TPZVec< std::string > &vecnames, const TPZVec< std::string > &tensnames, const std::string &plotfile) |
Define GrapMesh as VTK with tensorial names depending on extension of the file. More... | |
virtual void | CloseGraphMesh () |
Clean the GrapMesh vector. More... | |
TPZGraphMesh * | GraphMesh (int dimension) |
Defines the postprocessing parameters for the graphical grid. More... | |
virtual void | PostProcess (int resolution) |
Draw solution over mesh for all dimensions. More... | |
virtual void | PostProcess (int resolution, int dimension) |
Draw solution over mesh by dimension. More... | |
void | IdentifyPostProcessingMatIds (int dimension, std::set< int > &matids) |
Fill mat ids with materials with provided dimension wich are not boundary conditinos or interface. More... | |
TPZVec< STATE > | Integrate (const std::string &varname, const std::set< int > &matids) |
Integrate the postprocessed variable name over the elements included in the set matids. More... | |
void | SetExact (std::function< void(const TPZVec< REAL > &loc, TPZVec< STATE > &result, TPZFMatrix< STATE > &deriv)> f) |
Sets the pointer of the exact solution function. More... | |
virtual void | PostProcess (TPZVec< REAL > &loc, std::ostream &out=std::cout) |
Compute the local error over all elements and global errors in several norms and print out. More... | |
virtual void | PostProcessError (TPZVec< REAL > &, bool store_error=true, std::ostream &out=std::cout) |
Compute the local error over all elements and global errors in several norms and print out without calculating the errors of the variables for hdiv spaces. More... | |
virtual void | PostProcessErrorSerial (TPZVec< REAL > &, bool store_error=true, std::ostream &out=std::cout) |
virtual void | PostProcessErrorParallel (TPZVec< REAL > &, bool store_error=true, std::ostream &out=std::cout) |
void | CreateListOfCompElsToComputeError (TPZAdmChunkVector< TPZCompEl *> &elvec) |
void | Print (const std::string &name, std::ostream &out) |
Print connect and solution information. More... | |
void | PrintVectorByElement (std::ostream &out, TPZFMatrix< STATE > &vec, REAL tol=1.e-10) |
Print the residual vector for those elements with entry above a given tolerance. More... | |
TPZMatrixSolver< STATE > & | Solver () |
Get the solver matrix. More... | |
void | AnimateRun (int64_t num_iter, int steps, TPZVec< std::string > &scalnames, TPZVec< std::string > &vecnames, const std::string &plotfile) |
Run and print the solution step by step. More... | |
void | SetSolver (TPZMatrixSolver< STATE > &solver) |
Set solver matrix. More... | |
void | SetStructuralMatrix (TPZAutoPointer< TPZStructMatrix > strmatrix) |
Set structural matrix as auto pointer for analysis. More... | |
void | SetStructuralMatrix (TPZStructMatrix &strmatrix) |
Set structural matrix for analysis. More... | |
int | ClassId () const override |
Define the class id associated with the class. More... | |
virtual void | DefineElementTable (int dimension, TPZVec< int64_t > &GeoElIds, TPZVec< REAL > &points) |
Fill the computational element vector to post processing depending over geometric mesh defined. More... | |
virtual void | SetTableVariableNames (TPZVec< std::string > varnames) |
Sets the names of the variables into the data structure for post processing. More... | |
virtual void | PrePostProcessTable (std::ostream &out_file) |
Prepare data to print post processing and print coordinates. More... | |
virtual void | PostProcessTable (std::ostream &out_file) |
Print the solution related with the computational element vector in post process. More... | |
void | PostProcessTable (TPZFMatrix< REAL > &pos, std::ostream &out=std::cout) |
Compute and print the local error over all elements in data structure of post process, also compute global errors in several norms. More... | |
Public Member Functions inherited from TPZSavable | |
TPZSavable () | |
virtual | ~TPZSavable () |
virtual std::list< std::map< std::string, uint64_t > > | VersionHistory () const |
virtual std::pair< std::string, uint64_t > | Version () const |
virtual bool | Compare (TPZSavable *copy, bool override=false) |
Compares the object for identity with the object pointed to, eventually copy the object. More... | |
virtual bool | Compare (TPZSavable *copy, bool override=false) const |
Compares the object for identity with the object pointed to, eventually copy the object. More... | |
Public Member Functions inherited from TPZRegisterClassId | |
template<typename T > | |
TPZRegisterClassId (int(T::*)() const) | |
TPZRegisterClassId ()=default | |
Additional Inherited Members | |
Public Types inherited from TPZAnalysis | |
enum | EPrecond { EJacobi, EBlockJacobi, EElement, ENodeCentered } |
Preconditioners which can be created by objects of this class. More... | |
Static Public Member Functions inherited from TPZSavable | |
static std::set< TPZRestoreClassBase * > & | RestoreClassSet () |
This static function guarantees that the gMap object is available when needed. More... | |
static std::map< int, TPZRestore_t > & | ClassIdMap () |
This static function guarantees that the gMap object is available when needed. More... | |
static std::pair< std::string, uint64_t > | NeoPZVersion () |
static void | Register (TPZRestoreClassBase *restore) |
static void | RegisterClassId (int classid, TPZRestore_t fun) |
static TPZSavable * | CreateInstance (const int &classId) |
Public Attributes inherited from TPZAnalysis | |
std::function< void(const TPZVec< REAL > &loc, TPZVec< STATE > &result, TPZFMatrix< STATE > &deriv)> | fExact |
Pointer to Exact solution function, it is necessary to calculating errors. More... | |
Protected Attributes inherited from TPZAnalysis | |
TPZGeoMesh * | fGeoMesh |
Geometric Mesh. More... | |
TPZCompMesh * | fCompMesh |
Computational mesh. More... | |
TPZGraphMesh * | fGraphMesh [3] |
Graphical mesh. More... | |
TPZFMatrix< STATE > | fRhs |
Load vector. More... | |
TPZFMatrix< STATE > | fSolution |
Solution vector. More... | |
TPZMatrixSolver< STATE > * | fSolver |
Type of solver to be applied. More... | |
TPZVec< std::string > | fScalarNames [3] |
Scalar variables names - to post process. More... | |
TPZVec< std::string > | fVectorNames [3] |
Vectorial variables names - to post process. More... | |
TPZVec< std::string > | fTensorNames [3] |
Tensorial variables names - to post process. More... | |
int | fStep |
Time step. More... | |
REAL | fTime |
Time variable which is used in dx output. More... | |
int | fNthreadsError |
Number of threads to be used for post-processing error. More... | |
TPZAutoPointer< TPZStructMatrix > | fStructMatrix |
Structural matrix. More... | |
TPZAutoPointer< TPZRenumbering > | fRenumber |
Renumbering scheme. More... | |
TPZAutoPointer< TPZGuiInterface > | fGuiInterface |
Pointer for gui interface object. More... | |
TTablePostProcess | fTable |
Derived class from TPZAnalysis implements non linear analysis (Newton's method). Analysis.
Definition at line 20 of file pznonlinanalysis.h.
TPZNonLinearAnalysis::TPZNonLinearAnalysis | ( | TPZCompMesh * | mesh, |
std::ostream & | out | ||
) |
Constructor with computational mesh.
Definition at line 35 of file pznonlinanalysis.cpp.
References TPZAnalysis::fSolution, TPZAnalysis::Mesh(), TPZCompMesh::Solution(), and TPZFMatrix< TVar >::Zero().
TPZNonLinearAnalysis::TPZNonLinearAnalysis | ( | ) |
Default constructor.
Definition at line 30 of file pznonlinanalysis.cpp.
References TPZAnalysis::fSolution, TPZAnalysis::Mesh(), TPZCompMesh::Solution(), and TPZFMatrix< TVar >::Zero().
|
virtual |
Default destructor.
Definition at line 40 of file pznonlinanalysis.cpp.
|
virtual |
Definition at line 217 of file pznonlinanalysis.cpp.
References TPZAnalysis::fCompMesh, TPZAnalysis::fStructMatrix, TPZCompMesh::NEquations(), and TPZFMatrix< TVar >::Redim().
|
virtual |
It process a Newton's method to solve the non-linear problem.
It has the possibility of line search with parameter linesearch = true.
Reimplemented in TPZElastoPlasticAnalysis.
Definition at line 153 of file pznonlinanalysis.cpp.
References TPZAnalysis::Assemble(), TPZAnalysis::AssembleResidual(), CheckConvergence(), error(), TPZAnalysis::fCompMesh, TPZAnalysis::fRhs, TPZAnalysis::fSolution, LineSearch(), LoadSolution(), TPZCompMesh::NEquations(), Norm(), TPZFMatrix< TVar >::Redim(), TPZMatrix< TVar >::Rows(), and TPZAnalysis::Solve().
Referenced by TPZSubCompMesh::main().
REAL TPZNonLinearAnalysis::LineSearch | ( | const TPZFMatrix< STATE > & | Wn, |
TPZFMatrix< STATE > | DeltaW, | ||
TPZFMatrix< STATE > & | NextW, | ||
REAL | tol, | ||
int | niter | ||
) |
Implements a golden section line search.
Wn | |
DeltaW | must be a copy |
NextW | |
tol | tolerance |
niter | number of iterations |
Definition at line 48 of file pznonlinanalysis.cpp.
References TPZAnalysis::AssembleResidual(), error(), TPZAnalysis::fRhs, LoadSolution(), LOGPZ_DEBUG, Norm(), and TPZMatrix< TVar >::Rows().
Referenced by IterativeProcess(), and TPZTransientAnalysis< TRANSIENTCLASS >::RunTransient().
|
virtual |
Load the solution into the computable grid.
Reimplemented from TPZAnalysis.
Reimplemented in TPZElastoPlasticAnalysis.
Definition at line 242 of file pznonlinanalysis.cpp.
References TPZAnalysis::LoadSolution().
Referenced by TPZElastoPlasticAnalysis::IterativeProcess(), IterativeProcess(), TPZElastoPlasticAnalysis::IterativeProcessPrecomputedMatrix(), TPZElastoPlasticAnalysis::LineSearch(), LineSearch(), LoadSolution(), TPZElastoPlasticAnalysis::LoadSolution(), LoadState(), and TPZTransientAnalysis< TRANSIENTCLASS >::RunTransient().
|
virtual |
Load the solution into the computable mesh considering sol as Solution vector of the analysis.
Reimplemented from TPZAnalysis.
Definition at line 237 of file pznonlinanalysis.cpp.
References TPZAnalysis::fSolution, and LoadSolution().
void TPZNonLinearAnalysis::LoadState | ( | TPZFMatrix< STATE > & | state | ) |
Load solution with state as solution. But fSolution is not modified.
Definition at line 246 of file pznonlinanalysis.cpp.
References LoadSolution().
int TPZNonLinearAnalysis::NumCases | ( | ) |
Actually return 1.
Definition at line 225 of file pznonlinanalysis.cpp.
|
virtual |
Definition at line 229 of file pznonlinanalysis.cpp.
References TPZAnalysis::fCompMesh, TPZAnalysis::fStructMatrix, TPZCompMesh::NEquations(), and TPZFMatrix< TVar >::Redim().
REAL TPZNonLinearAnalysis::SolutionNorm | ( | ) |
Computes the L2 norm of the solution.
Definition at line 213 of file pznonlinanalysis.cpp.
References TPZAnalysis::fSolution, and Norm().