#include <stdio.h>
Go to the source code of this file.
Functions | |
void | arclopen (long &fi, long &n, double &blambda, double &dl, double *r, double *fp) |
function restarts saved step of arclength method | |
void | arclsave (long fi, long n, double blambda, double dl, double *r, double *fp) |
function saves actual step of arclength method | |
void | assemble_attained_load_vector (double *fa, double *fc, double *fp, long n, double lambda, nonlinman *nlman) |
The function assembles the attained load vector fa. | |
long | assemble_stiffness_matrix (long lcid, long i, long j, long li) |
function assembles stiffness matrix if needed | |
long | check_divergency (nonlinman *nlman, matrix &lsm_a, vector &lsm_r, vector &lsm_l, long j, double norf) |
The function performs the divergency check of the inner loop if it is required in the nlman setup. | |
void | newton_raphson_restart (long lcid) |
function restarts Newton-Raphsom method from the file (used for analysis of Hinkley) | |
void | nonlinear_solver (long lcid, double *ra, double *fa, double *fc, double *fp, double *flc, double *flp, double ilambda, long li) |
function calls appropriate solver of system of nonlinear equations for the given load case | |
void | solve_nonlinear_statics () |
function calls appropriate solver for the nonlinear statics problem |
void arclopen | ( | long & | fi, | |
long & | n, | |||
double & | blambda, | |||
double & | dl, | |||
double * | r, | |||
double * | fp | |||
) |
function restarts saved step of arclength method
The function restores saved step of arclength method from the text file.
fi | - id of saved step | |
n | - number of r components | |
blambda | - attained load coefficient lambda | |
dl | - legth of arc (output) | |
r | - vector of attained displacements (output) | |
fp | - vector of proportional load (output) |
Created by JK,
Definition at line 774 of file nssolver.cpp.
References intpoints::eqother, file, mechmat::ip, Mm, Mp, intpoints::ncompother, intpoints::ncompstr, probdesc::nlman, nonlinman::nsdofal, probdesc::path, nonlinman::seldofal, intpoints::strain, intpoints::stress, and mechmat::tnip.
Referenced by arclength(), arclengthadapt(), arclengthrv(), arclengthrv1(), and par_solve_nonlinear_statics().
void arclsave | ( | long | fi, | |
long | n, | |||
double | blambda, | |||
double | dl, | |||
double * | r, | |||
double * | fp | |||
) |
function saves actual step of arclength method
The function saves actual step of arclength method to the text file.
fi | - id of saved step | |
n | - number of r components | |
blambda | - attained load coefficient lambda | |
dl | - legth of arc | |
r | - vector of attained displacements | |
fp | - vector of proportional load |
Created by JK,
Definition at line 706 of file nssolver.cpp.
References intpoints::eqother, file, mechmat::ip, Mm, Mp, intpoints::ncompother, intpoints::ncompstr, probdesc::nlman, nonlinman::nsdofal, probdesc::path, nonlinman::seldofal, intpoints::strain, intpoints::stress, and mechmat::tnip.
Referenced by arclength(), arclengthadapt(), arclengthrv(), arclengthrv1(), and par_solve_nonlinear_statics().
void assemble_attained_load_vector | ( | double * | fa, | |
double * | fc, | |||
double * | fp, | |||
long | n, | |||
double | lambda, | |||
nonlinman * | nlman | |||
) |
The function assembles the attained load vector fa.
The function assembles the attained load vector fa. It depends on the two load vectors fc, fp, attained load coefficient lambda and the setup specified in the nlman.
fa | - array of components of attained load vector | |
fc | - array of the constant load vector which is added without lambda multiplier. | |
fp | - array of proportional load vector which is added multiplied by lambda multiplier usually. In certain cases, the vector fp has to be applied until the required value lambdar is attained and than the increasing of load level stops. | |
n | - number of components of fa, fc and fp | |
lambda | - attained value of the load coefficient | |
nlman | - structure with setup of handling of lambda and lambda tresholds |
Created by TKo, 08.2011
Definition at line 299 of file nssolver.cpp.
References addmultv(), nonlinman::check_lambdar, nonlinman::lambdar, and on.
Referenced by arclengthrv(), garclength(), gnewton_raphson(), and gnewton_raphson2().
long assemble_stiffness_matrix | ( | long | lcid, | |
long | i, | |||
long | j, | |||
long | li | |||
) |
function assembles stiffness matrix if needed
function assembles stiffness matrix if needed
The function assembles the stiffness matrix it depends on the variable Mp->nlman->stmat for possible values (see alias.h).
lcid | - load case id | |
i | - index in outer loop | |
j | - index in inner loop | |
li | - lower index of the outer loop = number of the first outer increment li=0 if the computation starts from the initial state li>0 if the computation starts from backup |
JK, TKo, 30.8.2010
function assembles stiffness matrix if needed
The function assembles the stiffness matrix it depends on the variable Mp->nlman->stmat for possible values (see alias.h).
lcid | - load case id | |
i | - index in outer loop | |
j | - index in inner loop | |
li | - lower index of the outer loop = number of the first outer increment li=0 if the computation starts from the initial state li>0 if the computation starts from backup |
JK, TKo 30.8.2010
Definition at line 480 of file arclengthjk.cpp.
References ijth_tangent_stiff, incr_tangent_stiff, initial_stiff, nonlinman::ithstiffchange, nonlinman::jthstiffchange, Mp, probdesc::nlman, print_err(), secant_stiff, Smat, stiffness_matrix(), nonlinman::stmat, and tangent_stiff.
long check_divergency | ( | nonlinman * | nlman, | |
matrix & | lsm_a, | |||
vector & | lsm_r, | |||
vector & | lsm_l, | |||
long | j, | |||
double | norf | |||
) |
The function performs the divergency check of the inner loop if it is required in the nlman setup.
The function performs the divergency check of the inner loop if it is required in the nlman setup. The divergency is detected with help of the least square method where the quadratic approximaton of the error/step_id curve is performed. If the minimum of the approximing quadratic function is exceeded the divergency of the iteration process is assumed and signalized by the nonzero return value. The minimum number of steps of the inner loop is performed depending on the nlman->div_min_steps setup but at least three steps has to be performed for the correct approximation.
nlman | - pointer to the structure with the setup of the nonlinear solver | |
lsm_a | - matrix used for the least square method. It will be used for the storage of contributions from the particular inner loop steps. | |
lsm_r | - right hand side for the least square method. It will be used for the storage of contributions from the particular inner loop steps. | |
lsm_l | - left hand side vector (unknown parameters of quadratic function) | |
j | - inner loop step id | |
norf | - error norm (norm of unbalanced forces) |
0 | - no divergency detected | |
1 | - divergency was detected |
Created by TKo, 08.2011
Definition at line 334 of file nssolver.cpp.
References nonlinman::check_div, nonlinman::div_min_steps, nonlinman::divc_err, nonlinman::divc_step, lsm_quad(), Mp, on, and probdesc::zero.
Referenced by garclength(), gnewton_raphson(), gnewton_raphson_one_step(), one_step_arcl(), par_gnewton_raphson_one_step(), and par_gnewton_raphson_one_step_mefel().
void newton_raphson_restart | ( | long | lcid | ) |
function restarts Newton-Raphsom method from the file (used for analysis of Hinkley)
Function solves system of nonlinear algebraic equations by Newton-Raphson method. Solved system does not contain time variable. The method retarts analysis from the saved data of the time dependent analysis. Internal data rearangement is performed with respect of solved problem in Hinkley nuclear power plant.
lcid | - required load case id |
Created by JK, Tomas Koudelka
Definition at line 388 of file nssolver.cpp.
References nonlinman::backupfname, compute_req_val(), intpoints::eqother, nonlinman::errnr, f, lhsrhs::give_lhs(), lhsrhs::give_rhs(), Gtm, nonlinman::hdbid, nonlinman::hdbr, nonlinman::incrnr, internal_forces(), mechmat::ip, Lsrs, memset(), Mespr, nonlinman::minincrnr, Mm, Mp, intpoints::ncompeqother, intpoints::ncompstr, Ndofm, nonlinman::nienr, nonlinman::niilnr, nonlinman::ninr, probdesc::nlman, normv(), Out, print_close(), print_flush(), print_init(), print_step(), Smat, gmatrix::solve_system(), slesolv::solve_system(), solver_restore(), ss(), probdesc::ssle, stiffness_matrix(), nonlinman::stmat, probdesc::strcomp, intpoints::stress, tangent_stiff, mechmat::tnip, mechmat::updateipval(), and probdesc::zero.
Referenced by nonlinear_solver().
void nonlinear_solver | ( | long | lcid, | |
double * | ra, | |||
double * | fa, | |||
double * | fc, | |||
double * | fp, | |||
double * | flc, | |||
double * | flp, | |||
double | ilambda, | |||
long | li | |||
) |
function calls appropriate solver of system of nonlinear equations for the given load case
Function calls selected solver of systems of nonlinear equation for the given load case.
lcid | - load case id | |
ra | - vector of attained displacements | |
fa | - vector of attained load | |
fc | - constant component of load vector (due to prescribed displacements + forces) | |
fp | - proportional component of load vector (due to prescribed displacements + forces) | |
flc | - constant component of load vector due to forces | |
flp | - proportional component of load vector due to forces | |
ilambda | - initial value of load coefficient lambda (used for backup restorage) | |
li | - initial step id (used for backup restorage) |
Created by Tomas Koudelka and JK. Rewritten by Tomas Koudelka, 09.2011
Definition at line 137 of file nssolver.cpp.
References arcl, arclg, arclrv, arclrv1, nonlinman::check_lambdar, displctrl, displctrlrv, nonlinman::errl, garclength(), gnewton_raphson2(), nonlinman::lambdar, Mp, newton, newton_raphson_restart(), newtong, newtonrestart, newtonrv1, probdesc::nlman, on, print_err(), nonlinman::tnlinsol, and yes.
Referenced by solve_nonlinear_statics().
void solve_nonlinear_statics | ( | ) |
function calls appropriate solver for the nonlinear statics problem
Function solves non-linear statics problems.
Created by JK, 2001 Rewritten by TKo, 09.2011
function solves non-linear statics problems
JK
Definition at line 34 of file nssolver.cpp.
References arcl, arclg, arclrv, arclrv1, lhsrhs::give_lhs(), lhsrhs::give_rhs(), nonlinman::hdbackupal, probdesc::hdbcont, mechmat::initmaterialmodels(), probdesc::lambda, Lsrs, mefel_right_hand_side(), memset(), Mespr, Mm, Mp, Ndofm, lhsrhs::nlc, probdesc::nlman, nonlinear_solver(), nonlinear_solver_adaptiv(), print_close(), print_flush(), print_init(), print_step(), hdbcontr::restore_stat(), seldofinit(), solver_restore(), and nonlinman::tnlinsol.
Referenced by solve_mefel_deterministic_problem().