This is an old revision of the document!
Gestion des itérations (mécaniques et thermiques)
Les paramètres des itérations mécaniques sont imposés par des fonctions relatives à metafor.getMechanicalIterationManager()
, alors que les paramètres des itérations thermiques sont imposés par des fonctions relatives à metafor.getThermalIterationManager()
.
mim = metafor.getMechanicalIterationManager() tim = metafor.getThermalIterationManager() mim/tim.setResidualComputationMethod(meth) mim/tim.setVerbose() mim/tim.setResidualTolerance(prec) mim/tim.setMaxNbOfIterations(itma) mim/tim.setNbOfIterationsForStiffUpdate(irea) mim/tim.setMaxNbOfLineSearchIterations(lsma) mim/tim.setLineSearchTolerance1(lsp1) mim/tim.setLineSearchTolerance2(lsp2) mim.setPredictorComputationMethod(predMeth)
où meth
défini la méthode de calcul du $Residu$.
Method1RedisualComputation(limitNormFactor)
Le résidu est adimensionalisé à partir de la norme des forces externes et des réactions internes (valeur par défaut). On commence par évaluer
$$Rmoy = \frac{||FreeExternalForces|| + ||CstrInternalForces||+||CstrInertialForces||}{nreac} $$
Ensuite, si $$ Rmoy < limitNormFactor $$ on impose $$ Rmoy = limitNormFactor $$
Le résidu est alors adimensionnalisé via
$$Residu = \frac{||FreeResidual||}{nddls*Rmoy}$$
avec
$nddls$ : nombre de degrés de liberté total
$nreac$ : nombre de degrés de liberté fixés (et ayant donc une force de réaction)
Method2ResidualComputation(limitNormFactor)
Le résidu est adimensionalisé à partir du carré des normes des forces externes et des réactions internes. On commence par évaluer
$$Rmoy = \frac{\sqrt{||FreeExternalForces||^2 + ||CstrInternalForces||^2+||CstrInertialForces||^2}}{nreac}$$
Ensuite, si $$ Rmoy < limitNormFactor $$ on impose $$ Rmoy = limitNormFactor $$
Le résidu est alors adimensionnalisé via
$$Residu = \frac{||FreeResidual||}{nddls*Rmoy}$$ avec
$nddls$ : nombre de degrés de liberté total
$nreac$ : nombre de degrés de liberté fixés (et ayant donc une force de réaction)
Method3ResidualComputation(limitNormFactor)
Le résidu est adimensionalisé à partir de la norme des forces externes, d'inertie et des réactions internes (valeur à utiliser de préférence pour le thermique. Attention, … c'est à l'utilisateur de le définir …). Si on a $$ ||FreeExternalForces|| < limitNormFactor $$ alors le résidu vaut $$ Residu = max(|FreeResidual|) $$ Sinon, on évalue $$Rmoy = ||FreeExternalForces|| + ||CstrInternalForces||+||CstrInertialForces|| $$ et le résidu est adimensionnalisé selon $$Residu = \frac{||FreeResidual||}{nddls*Rmoy}$$
Method4ResidualComputation(limitNormFactor)
Cette méthode correspond à Method1ResidualComputation()
sans diviser par le nombre de dofs, donc
$$Rmoy = ||FreeExternalForces|| + ||CstrInternalForces||+||CstrInertialForces|| $$
Ensuite, si $$ Rmoy < limitNormFactor$$ on impose $$ Rmoy = limitNormFactor $$
Le résidu est alors adimensionnalisé via
$$Residu = \frac{||FreeResidual||}{Rmoy}$$
Method5ResidualComputation(adimFactor)
Le résidu est adimensionalisé par le facteur adimFactor
donné par l'utilisateur sans diviser par le nombre de dofs.
$$Residu = \frac{||FreeResidual||}{adimFactor }$$
Method6ResidualComputation(adimFactor)
le résidu est adimensionalisé par le facteur adimFactor
donné par l'utilisateur et par le nombre de dofs
$$Residu = \frac{||FreeResidual||}{nddls * adimFactor }$$
avec
$nddls$ : nombre de degrés de liberté total
Paramètres
paramètre | Valeur par défaut | description |
---|---|---|
limitNormFactor | 1.0 | Valeur à partir de laquelle le résidu n'est plus divisé par Rmoy (à adapter en fonction du niveau de charge à l'aide de la sortie de verbose) |
adimFactor | - | Facteur d'adimensionalisation fixe pour les méthodes 5 et 6 (pas de défaut : obligation de définir le facteur pour ces méthodes) |
prec | 1.0E-4 | précision à atteindre sur le résidu |
itma | 7 | nombre maximal d'itérations de Newton-Raphson (ce nombre est corrigé en interne si le critère automatique de réactualisation de la matrice est utilisé). Les itérations sont aussi stoppées si le résidu ne diminue pas sur 6 itérations |
irea | 1 | = 1 : la matrice de raideur est actualisée à chaque itération |
> 1 : la matrice est actualisée automatiquement si le numéro de l'itération est inférieur à irea . Le critère est basé sur une vitesse de convergence et un rapport des temps CPU (nécessite MDE_ICPU=1 ) |
||
lsma | 0 | nombre maximal d'itérations de line-search |
lsp1 | 1.0 | précision requise sur le résidu du line search |
lsp2 | 1.E-8 | critère d'arrêt quand le paramètre du line search n'évolue plus suffisamment |
predMeth | EXTRAPOLATION_DEFAULT | EXTRAPOLATION_DEFAULT = Extrapolation par défaut du schéma (par exemple méthode de calcul du prédicteur des déplacements par les formules de Newmark dans le cas du schéma alpha-généralisé) |
EXTRAPOLATION_MRUA = Méthode de calcul du prédicteur des déplacements par les formules du MRUA (atuellement seulement possible pour les algorithmes alpha-généralisés) |
||
EXTRAPOLATION_ZERO = Les positions sont les anciennes positions, la vitesse (et l'accélération pour les schémas dynamiques) sont nulles (atuellement seulement possible pour les algorithmes quasi-statiques et algorithmes alpha-généralisés) . |