Hlavní, a jedíná, třída knihovny XALM. ...
#include <xalm.h>
Veřejné metody | |
Veřejné metody slouží pro spuštění výpočtu a pro předávání výsledků uživatelovi. | |
XALM (void) | |
Constructor. ... | |
virtual | ~XALM (void) |
Destructor. ... | |
int | solve (void) |
Funkce solve je hlavní, a jediná, výkonná funkce knihovny XALM. ... | |
const double * | give_totalDisplacement (void) const |
Funkce vrátí konstantní ukazatel na vektor celkových posunů. ... | |
double | give_loadLevel (void) const |
Funkce vrátí loadLevel - dosažený stupeň přírůstkového zatížení. ... | |
Soukromé metody a atributy | |
Soukromé metody a atributy nejsou přístupné pro používání z vnějšku třídy ani z třídy zděděné a slouží pro vlastní výpočet. Pokud jsou soukromé atributy ve zděděné třídě potřebné, přistupuje se k nim pomocí chráněných metod. | |
int | step |
Aktuální krok. ... | |
double | loadLevel |
Dosažený stupeň přírůstkového zatížení. ... | |
Dvctr | totalDisplacement |
Vektor celkových posunutí. ... | |
Dvctr | incrementOfDisplacement |
Vektor přírůstku posunutí. ... | |
Dvctr | internalForces |
Vektor vnitřních sil v uzlech. ... | |
int | status |
0 - nedopočítáno, 1- spočítáno, 2 - počítáno s problémy, změněn krok ... | |
xalm_NR_ModeType | xalm_NR_OldMode |
Záloha proměnné xalm_NR_Mode. ... | |
int | xalm_NR_ModeTick |
Počet kroků zbývajících do konce dočasné změny iteračního schématu. ... | |
xalm_ControlType | xalm_Control |
Dvctr | xalm_HPCWeights |
Lvctr | xalm_HPCIndirectDofMask |
Lvctr | xalm_HPCDmanDofSrcArray |
Array containing equation numbers of dofs under indirect control. ... | |
Dvctr | xalm_HPCDmanWeightSrcArray |
Input array containing dofmanagers and corresponding dof numbers under indirect control. ... | |
int | computeDeltaLambda (double &deltaLambda, const Dvctr &dX, const Dvctr &deltaXt, const Dvctr &deltaX_, const Dvctr &R, double RR, double eta, double deltaL, double DeltaLambda0, int neq) |
void | solve_step (Dvctr *R, Dvctr *R0, Dvctr *X, Dvctr *dX, Dvctr *F, long step) |
R - incrementalLoadVector R0 - initialLoadVector. ... | |
void | initialize_and_check_consistency (void) |
Funkce pro nastavení soukromých atributů a kontrolu konzistence zadání. ... | |
bool | checkConvergence (const Dvctr &R, const Dvctr *R0, const Dvctr &F, const Dvctr &X, const Dvctr &ddX, double Lambda, double RR0, double RR, double drProduct, int nite, bool &errorOutOfRange) |
Kontrola konvergence. ... | |
Chráněné metody a atributy | |
Input array of dofman weights (for hpcmode 2). Chráněné metody a atributy slouží pro zadávání počátečních požadavků na výpočet a pro předávání potřebných dat mezi MKP programem a knihovnou XALM během vlastního iteračního výpočtu. V třídě XALM jsou proto metody deklarovány jako čistě virtuální (pure virtual) a definovány jsou až v třídě zděděné. Je zřejmé, že metody jsou implementačně závislé. Proto zděděná třída nemůže být součástí knihovny XALM, ale musí být vytvořena pro každou implementaci zvlášť a je její součástí. Tvoří tak fakticky "rozhraní" popisované v druhé kapitole. | |
xalm_NR_ModeType | xalm_NR_Mode |
Proměnná určující strategii, kdy se bude počítat tečná matice tuhosti soustavy. ... | |
int | xalm_MANRMSteps |
Počet kroků, po kterých se má znovu počítat matice, pouze pokud xalm_NR_Mode == xalm_accelNRM. ... | |
long | nsteps |
Počet zatěžovacích kroků. ... | |
double | minStepLength |
Minimalní délka kroku. ... | |
double | maxStepLength |
Maximalní délka kroku. ... | |
double | initialStepLength |
Počáteční délka kroku. ... | |
int | nsMin |
Minimální počet kroků dorovnání nerovnováhy v jednom iteračním přitěžovacím kroku. ... | |
int | nsReq |
Požadovaný počet kroků dorovnání nerovnováhy v jednom iteračním přitěžovacím kroku. ... | |
int | nsMax |
Maximální počet kroků dorovnání nerovnováhy v jednom iteračním přitěžovacím kroku. ... | |
double | Psi |
Parametr kontroly kroku. Pokud je rovno 0, tak se jedná o kontrolu přírůstkem posunutí, pokud je rovno nekonečnu, tak se jedná o kontrolu přírůstkem zatížení. ... | |
int | verbose |
Pokud je větší než nule - budou vypisovány informace. ... | |
double | rtolf |
Tolerance relativní chyby nevyrovnaných sil. ... | |
double | rtold |
Tolerance relativní chyby nevyrovnaných posunů. ... | |
long | neq |
Pocet rovnic v matici soustavy = pocet neznamych. ... | |
Dvctr | incrementalLoadVector |
Vektor prirustkoveho zatizeni, meni se se stupnem lambda. ... | |
Dvctr | initialLoadVector |
Vektor pocatecniho zatizeni, nemeni se behem vypoctu, je aplikovan cely. ... | |
int | give_step (void) |
Funkce vrací číslo aktuálního zatěžovacího kroku. ... | |
virtual void | initialize (void)=0 |
Funkce nemá parametry a nic nevrací. ... | |
virtual void | update_step (void)=0 |
Ve funkci je možné po každém provedeném iteračním kroku vykonat požadované úkony. ... | |
virtual void | update_stiffness_matrix (const Dvctr *X)=0 |
virtual void | update_internal_forces (Dvctr *internalForces, const Dvctr *X)=0 |
virtual void | lineq_solve (Dvctr *X, const Dvctr *R)=0 |
Hlavní, a jedíná, třída knihovny XALM.
EXternal cylindrical Arc-Length Method algorithm.
Perform solution of non-linear problem in the form Kt * deltaR = g where g is defined as g = g(Lambda,X) = Lambda* R - F(X). During iteration process, we want g became zero vector.
xalm::XALM::XALM | ( | void | ) |
Constructor.
Definice je uvedena na řádku 15 v souboru xalm.cpp.
Odkazuje se na initialStepLength, loadLevel, maxStepLength, minStepLength, neq, nsMax, nsMin, nsReq, nsteps, Psi, rtold, rtolf, status, step, verbose, xalm_Control, xalm::xalm_hpc_off, xalm_MANRMSteps, xalm::xalm_modifiedNRM, xalm_NR_Mode, xalm_NR_ModeTick a xalm_NR_OldMode.
|
private |
Kontrola konvergence.
Definice je uvedena na řádku 342 v souboru xalm.cpp.
Odkazuje se na gelibspace::Dvctr::add(), gelibspace::Dvctr::beCopyOf(), gelibspace::Dvctr::compute_squared_norm(), rtold, rtolf, gelibspace::Dvctr::sbt(), gelibspace::Dvctr::tmsby(), verbose, XALM_MAX_REL_ERROR_BOUND a XALM_SMALL_ERROR_NUM.
Používá se v solve_step().
|
private |
Definice je uvedena na řádku 497 v souboru xalm.cpp.
Odkazuje se na _warningg, gelibspace::Dvctr::compute_squared_norm(), gelibspace::Dvctr::give_dotproduct(), gelibspace::Xvctr::give_size(), help(), Psi, status, verbose, xalm_Control, xalm::xalm_hpc_off, xalm::xalm_hpc_on, xalm_HPCIndirectDofMask, xalm_HPCWeights, XALM_SMALL_NUM a xalm::xalml_hpc.
Používá se v solve_step().
|
inline |
Funkce vrátí loadLevel - dosažený stupeň přírůstkového zatížení.
Definice je uvedena na řádku 75 v souboru xalm.h.
Používá se v xalm::XALM_interface::update_step().
|
inlineprotected |
Funkce vrací číslo aktuálního zatěžovacího kroku.
Definice je uvedena na řádku 178 v souboru xalm.h.
Používá se v xalm::XALM_interface::update_step() a xalm::XALM_interface::update_stiffness_matrix().
|
inline |
Funkce vrátí konstantní ukazatel na vektor celkových posunů.
Definice je uvedena na řádku 73 v souboru xalm.h.
Používá se v xalm::XALM_interface::update_step().
|
protectedpure virtual |
Funkce nemá parametry a nic nevrací.
Má za úkol inicializovat chráněné atributy. Atributy typu ukazatel na pole musí být alokovány uvnitř této funkce. Dealokovány jsou v destruktoru třídy XALM.
Implementováno v xalm::XALM_interface.
Používá se v solve().
|
private |
Funkce pro nastavení soukromých atributů a kontrolu konzistence zadání.
Definice je uvedena na řádku 54 v souboru xalm.cpp.
Odkazuje se na _errorr, incrementOfDisplacement, internalForces, neq, gelibspace::Dvctr::resize_ignore_vals(), totalDisplacement, xalm_NR_Mode, xalm_NR_OldMode a gelibspace::Dvctr::zero().
Používá se v solve().
Implementováno v xalm::XALM_interface.
Používá se v solve_step().
int xalm::XALM::solve | ( | void | ) |
Funkce solve je hlavní, a jediná, výkonná funkce knihovny XALM.
Definice je uvedena na řádku 76 v souboru xalm.cpp.
Odkazuje se na incrementalLoadVector, incrementOfDisplacement, initialize(), initialize_and_check_consistency(), initialLoadVector, internalForces, nsteps, solve_step(), status, step, totalDisplacement a update_step().
Používá se v main().
|
private |
R - incrementalLoadVector R0 - initialLoadVector.
X - total displacement vector
Definice je uvedena na řádku 107 v souboru xalm.cpp.
Odkazuje se na _warningg, gelibspace::Dvctr::add(), gelibspace::Dvctr::addtms(), gelibspace::Dvctr::beCopyOf(), checkConvergence(), gelibspace::Dvctr::compute_squared_norm(), computeDeltaLambda(), gelibspace::Dvctr::give_dotproduct(), gelibspace::Xvctr::give_size(), initialStepLength, internalForces, lineq_solve(), loadLevel, maxStepLength, minStepLength, neq, nsMax, nsMin, nsReq, Psi, gelibspace::Dvctr::resize_ignore_vals(), gelibspace::Dvctr::sbt(), gelibspace::sgn(), status, gelibspace::Dvctr::tmsby(), totalDisplacement, update_internal_forces(), update_stiffness_matrix(), verbose, xalm::xalm_accelNRM, xalm_Control, XALM_DEFAULT_NRM_TICKS, xalm::xalm_fullNRM, xalm::xalm_hpc_off, xalm::xalm_hpc_on, xalm_HPCIndirectDofMask, xalm_HPCWeights, xalm_MANRMSteps, XALM_MAX_RESTARTS, xalm_NR_Mode, xalm_NR_ModeTick, xalm_NR_OldMode, XALM_RESET_STEP_REDUCE, xalm::xalml_hpc a gelibspace::Dvctr::zero().
Používá se v solve().
|
protectedpure virtual |
Implementováno v xalm::XALM_interface.
Používá se v solve_step().
|
protectedpure virtual |
Ve funkci je možné po každém provedeném iteračním kroku vykonat požadované úkony.
Např. vypsat aktuání hodnoty, zastavit iteraci, pokud je dosaženo požadovaných výsledků, atd.
Implementováno v xalm::XALM_interface.
Používá se v solve().
|
protectedpure virtual |
Implementováno v xalm::XALM_interface.
Používá se v solve_step().
|
protected |
Vektor prirustkoveho zatizeni, meni se se stupnem lambda.
Definice je uvedena na řádku 170 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize_local() a solve().
|
private |
Vektor přírůstku posunutí.
Definice je uvedena na řádku 95 v souboru xalm.h.
Používá se v initialize_and_check_consistency() a solve().
|
protected |
Vektor pocatecniho zatizeni, nemeni se behem vypoctu, je aplikovan cely.
Definice je uvedena na řádku 171 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize_local() a solve().
|
protected |
Počáteční délka kroku.
Definice je uvedena na řádku 158 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize(), solve_step() a XALM().
|
private |
Vektor vnitřních sil v uzlech.
Definice je uvedena na řádku 96 v souboru xalm.h.
Používá se v initialize_and_check_consistency(), solve() a solve_step().
|
private |
Dosažený stupeň přírůstkového zatížení.
Definice je uvedena na řádku 93 v souboru xalm.h.
Používá se v solve_step() a XALM().
|
protected |
Maximalní délka kroku.
Definice je uvedena na řádku 157 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize(), solve_step() a XALM().
|
protected |
Minimalní délka kroku.
Definice je uvedena na řádku 156 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize(), solve_step() a XALM().
|
protected |
Pocet rovnic v matici soustavy = pocet neznamych.
Definice je uvedena na řádku 169 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize(), initialize_and_check_consistency(), xalm::XALM_interface::initialize_local(), xalm::XALM_interface::mtlb(), solve_step() a XALM().
|
protected |
Maximální počet kroků dorovnání nerovnováhy v jednom iteračním přitěžovacím kroku.
Definice je uvedena na řádku 161 v souboru xalm.h.
Používá se v solve_step() a XALM().
|
protected |
Minimální počet kroků dorovnání nerovnováhy v jednom iteračním přitěžovacím kroku.
Definice je uvedena na řádku 159 v souboru xalm.h.
Používá se v solve_step() a XALM().
|
protected |
Požadovaný počet kroků dorovnání nerovnováhy v jednom iteračním přitěžovacím kroku.
Definice je uvedena na řádku 160 v souboru xalm.h.
Používá se v solve_step() a XALM().
|
protected |
Počet zatěžovacích kroků.
Definice je uvedena na řádku 155 v souboru xalm.h.
Používá se v xalm::XALM_interface::initialize(), xalm::XALM_interface::initialize_local(), solve(), xalm::XALM_interface::update_step() a XALM().
|
protected |
Parametr kontroly kroku. Pokud je rovno 0, tak se jedná o kontrolu přírůstkem posunutí, pokud je rovno nekonečnu, tak se jedná o kontrolu přírůstkem zatížení.
Definice je uvedena na řádku 162 v souboru xalm.h.
Používá se v computeDeltaLambda(), xalm::XALM_interface::initialize(), solve_step() a XALM().
|
protected |
Tolerance relativní chyby nevyrovnaných posunů.
Definice je uvedena na řádku 165 v souboru xalm.h.
Používá se v checkConvergence(), xalm::XALM_interface::initialize() a XALM().
|
protected |
Tolerance relativní chyby nevyrovnaných sil.
Definice je uvedena na řádku 164 v souboru xalm.h.
Používá se v checkConvergence(), xalm::XALM_interface::initialize() a XALM().
|
private |
0 - nedopočítáno, 1- spočítáno, 2 - počítáno s problémy, změněn krok
Definice je uvedena na řádku 97 v souboru xalm.h.
Používá se v computeDeltaLambda(), solve(), solve_step() a XALM().
|
private |
Aktuální krok.
Definice je uvedena na řádku 92 v souboru xalm.h.
Používá se v solve(), xalm::XALM_interface::update_step() a XALM().
|
private |
Vektor celkových posunutí.
Definice je uvedena na řádku 94 v souboru xalm.h.
Používá se v initialize_and_check_consistency(), solve() a solve_step().
|
protected |
Pokud je větší než nule - budou vypisovány informace.
Definice je uvedena na řádku 163 v souboru xalm.h.
Používá se v checkConvergence(), computeDeltaLambda(), solve_step() a XALM().
|
private |
Definice je uvedena na řádku 120 v souboru xalm.h.
Používá se v computeDeltaLambda(), solve_step() a XALM().
|
private |
|
private |
|
private |
Definice je uvedena na řádku 122 v souboru xalm.h.
Používá se v computeDeltaLambda() a solve_step().
|
private |
Definice je uvedena na řádku 121 v souboru xalm.h.
Používá se v computeDeltaLambda() a solve_step().
|
protected |
Počet kroků, po kterých se má znovu počítat matice, pouze pokud xalm_NR_Mode == xalm_accelNRM.
Definice je uvedena na řádku 154 v souboru xalm.h.
Používá se v solve_step() a XALM().
|
protected |
Proměnná určující strategii, kdy se bude počítat tečná matice tuhosti soustavy.
Definice je uvedena na řádku 153 v souboru xalm.h.
Používá se v initialize_and_check_consistency(), solve_step() a XALM().
|
private |
Počet kroků zbývajících do konce dočasné změny iteračního schématu.
Definice je uvedena na řádku 99 v souboru xalm.h.
Používá se v solve_step() a XALM().
|
private |
Záloha proměnné xalm_NR_Mode.
Definice je uvedena na řádku 98 v souboru xalm.h.
Používá se v initialize_and_check_consistency(), solve_step() a XALM().