* fichier : vari-youn-1.dgibi ************************************************************************ ************************************************************************ ************************************************************** * * C'est un k-test dont le but est de tester le fonctionnement * de PASAPAS avec la variation des données matérielles. * * Il s'agit d'une barre en traction simple. Son module de Young * dépend linéairement du déplacement u de son extrémité : * * E = E_0 + E_1 * u * * Pour résoudre ce problème, on remet à jour le chargement * dans la procédure PERSO1. Étant donné que PERSO1 est appelé * une fois par incrément (dans PASAPAS) et non pour chaque * incrément d'incrément (dans INCREME) la précision dépend * du nombre de pas. * * Voici les résultats obtenus avec la version de développement * (avril '96) : * * Nombre d'itérations | Erreur maxi en déplacement * ------------------------------------------------ * 1 | 0.40500 * ------------------------------------------------ * 2 | 0.33509 * ------------------------------------------------ * 5 | 0.25095 * ------------------------------------------------ * 10 | 0.19571 * ------------------------------------------------ * 20 | 0.14850 * ------------------------------------------------ * 50 | 9.83953E-02 * ------------------------------------------------ * 100 | 6.91983E-02 * ------------------------------------------------ * 200 | 4.67212E-02 * ------------------------------------------------ * 500 | 2.58769E-02 * ------------------------------------------------ * 1000 | 1.56041E-02 * ------------------------------------------------ * 2000 | 8.94707E-03 * ------------------------------------------------ * 5000 | 4.01039E-03 * ------------------------------------------------ * * Cette solution peut être comparéee avec une solution * analytique et (si l'utilisateur le désire, voir la variable * calc_nl) avec un calcul itératif utilisant la méthode de * substitution. * ************************************************************** *** Options ... graph = faux ; calc_nl = faux ; *** Paramètres ... L = 10. ; H = 1. ; S = H * 1. ; E_0 = 2.E+11 ; * E_1 = (2.0 * E_0) / (0.01 * L) ; E_1 = (-0.5 * E_0) / (0.1 * L) ; * F = 1.E+10 ; F = 9.9E+9 ; nbdiv = 1 ; *** Critère d'existence de la solution ... delta = (E_0 * E_0) + (4 * E_1 * F * L / S) ; deltan = delta / (E_0 * E_0) ; mess 'Delta "normalisé" vaut ' deltan ; si(deltan < 0) ; mess 'Pas de soltution envisageable !!!' ; finsi ; *** Points ... p1 = 0 0 ; p2 = 0 H ; *** Ligne ... li1 = p1 d 1 p2 ; *** Surface ... vectx = L 0 ; titr 'Le maillage du modele' ; si(graph) ; trac su1 ; finsi ; *** Modèle ... repeter surdpl lon ; valyou = E_0 + (E_1 * valdep) ; fin surdpl ; si(graph) ; dess evyou ; finsi ; *** Préparation de la table pour PASAPAS ... tabnl = table ; * tabnl . GRANDS_DEPLACEMENTS = vrai ; tabnl . MODELE = mo1 ; tabnl . CARACTERISTIQUES = ma1 ; tabnl . BLOCAGES_MECANIQUES = cl1 ; tabnl . CHARGEMENT = chavar0 et chabid ; tabnl . CHAR0 = chabid ; tabnl . PROCEDURE_PERSO1 = vrai ; debp perso1 tabnl*table ; depact = tabnl . 'ESTIMATION'.'DEPLACEMENTS' ; tabnl . 'WTABLE'.CHARGEMENT = (tabnl . CHAR0) et chavar ; tabnl . 'WTABLE'.CHARGEMENT_I = (tabnl . CHAR0) et chavar ; finp ; nb_dt = 5 ; dt = 1.0 / nb_dt ; *** Le calcul ... pasapas tabnl ; *** Petit post-traitement ... repeter surpas nbpas ; lindice = &surpas - 1 ; laforc = F * (tabnl . TEMPS . lindice) ; depact = tabnl . DEPLACEMENTS . lindice ; ' temps ' (tabnl . TEMPS . lindice) ; titr chtit ; * trac (exco smxx (tabnl . CONTRAINTES . lindice)) mo1 ; *------------- calcul nonlin à la main ------------------------------------- si(calc_nl) ; critconv = 1. ; * omega = 0.7 ; omega = 1.2 ; residu = 1.0 * forc0 ; repeter tanqrnn ; deptot = deptot + (omega * depln) ; * mess 'deptot au bout = ' deptst ; E_n = E_0 + (E_1 * deptst) ; si(normres < critconv) ; quit tanqrnn ; finsi ; fin tanqrnn ; chtit = chai 'Contrainte XX fournie par ma méthode,' ' temps ' (tabnl . TEMPS . lindice) ; titr chtit ; * trac (exco smxx sitst) mo1 ; finsi; *--------------------------------------------------------------------------- fin surpas ; titr 'La deformee' ; si(graph) ; finsi ; si(graph) ; dess courbetr ; finsi ; si(graph) ; finsi ; si(calc_nl) ; titr 'Courbe obtenue par calc nonlin a la main' ; si(graph) ; finsi ; finsi ; *** Vérification de la précision du calcul ... titr chtit ; ladiff = courbetr - courbteo ; si(graph) ; dess ladiff ; finsi ; 9.83953E-02 6.91983E-02 4.67212E-02 2.58769E-02 1.56041E-02 8.94707E-03 4.01039E-03 ; titr 'Precision en fonction du nombre de pas' ; si(graph) ; dess evprec LOGX ; finsi ; * On se donne 10% de tolérance ... si(precis > (1.1 * prec_att)) ; finsi ; *** Bye ... fin ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales