Welcome to the forums. Please post in English or French.

You are not logged in.

#1 2018-05-16 13:38:32

Groguiguy
Member
From: Centrale Lille
Registered: 2017-11-07
Posts: 94

Je ne comprends pas INST et AFFE_CHAR_MECA_F

Bonjour à tous,

J'aimerai que vous m'éclairiez sur un point car je me rends compte que je ne comprends pas ce qu'est 'INST' et NUME_ORDRE.
Si je défini mon effort 'Pression' comme suit (c'est un exemple), que ce passe t'il?

listr = DEFI_LIST_REEL(DEBUT=0.0, INTERVALLE=_F(JUSQU_A=1.0, NOMBRE=10))

times = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=listr))

ramp = DEFI_FONCTION(NOM_PARA='INST', VALE=(0.0, 0.0, 100.0, 5))

Pression = AFFE_CHAR_MECA_F(
    PRES_REP=_F(
    PRES=ramp,
    GROUP_MA=('Groupe1')),
    MODELE=model)

Champ = CALC_CHAMP(
    CHAM_MATER=fieldmat, MODELE=model,
    NUME_ORDRE=(10, ),
    RESULTAT=resnonl)

Tel que je l'ai écris là, je crois comprendre cela :
- resnonl sera résolu sur 10 pas de temps (c'est justement ce terme qui prête à confusion, c'est pour ça que j'écris en français pour bien comprendre) jusqu'à l'incrément 1.0.
- le résultat demandé doit se faire avec NUM_ORDRE = 10 indépendamment des découpes de pas de temps. Mais dans l'observation des résultats par Paravis les découpes d'incréments apparaitront.
-  'Pression' sera appliquée selon une loi linéaire tel qu'au dernier pas de temps (instant 1.0) la pression soit de 0.05 (car 5 à 100.0).

Voilà ce que je comprends, et pourtant je suis quasiment sur de me tromper car mes résultats varient en fonction des valeurs dans 'ramp'. La valeur du paramètre 'INST' dans VALE=(0.0, 0.0, 100.0, 5) multiplie-t-elle la valeur de 5? (je ne pense pas, c'est FONC_MULT ça). A quoi correspond cette valeur de 100.0 ici? L'instant finale est 1.0 ou 10 (nombre d'incrément) ou plus s'il y a des découpes?

D'après la p36 du livre de jeanpierreaubry : "If FONC_MULT had been omitted in EXCIT and LIST_INST omitted as well we would have run the solution for one load case being the sum of all the EXCIT instances." C'est aussi si ce que je comprends dans la doc de Code_aster, mais donc FONC_MULT est nécessaire à l'application de AFFE_CHAR_MECA_F ?

Bref, je suis perdu, et je vous remercie d'éclairer ma lanterne. smile

Offline

#2 2018-05-17 07:35:14

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 4,049

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

bonjour

si vous regarder bien mon Livre vous verrez que j'utilise FONC_MULT avec AFFE_CHAR_MECA (sans _F)
et non avec AFFE_CHAR_MECA_F

pour un chargement variable uniquement dans le temps je n'utilise pas AFFE_CHAR_MECA_F
que j'utilise si un chargement dépend par exemple de l'altitude, coordonné Z

INST est la découpe temporelle que vous fixez, c'est un réel
NUM_ORDRE est le numéro du pas de calcul fixé par code_aster il est différent de INST, il commence toujours à 1 et est un entier
si vous commencer à INST=2 il y aura un décalage
il y aura aussi un décalage si code_aster redécoupe les pas de temps
également un décalage si INST est un réel non entier par exemple NUM_ORDRE=35 à INST=1.275

pour la visualisation des instants dans un résultat il est conseille d'utiliser INST= ou LIST_INST= afin de bien cadrer les résultats sur des valeurs significatives

à noter que dans pour les problèmes statique INST ne représente pas vraiment un temps, en seconde alors que c'est le cas dans un problème dynamique


jean pierre aubry


consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

Offline

#3 2018-05-17 11:53:37

Groguiguy
Member
From: Centrale Lille
Registered: 2017-11-07
Posts: 94

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

Beaucoup d'info intéressantes merci.

si vous regarder bien mon Livre vous verrez que j'utilise FONC_MULT avec AFFE_CHAR_MECA (sans _F) et non avec AFFE_CHAR_MECA_F

Oui c'est d'ailleurs, étonnant, car il me semblait à la lecture des doc Code_Aster que AFFE_CHAR_MECA_F était sine qua non.

pour un chargement variable uniquement dans le temps je n'utilise pas AFFE_CHAR_MECA_F que j'utilise si un chargement dépend par exemple de l'altitude, coordonné Z

Hum intéressant, je vais tenter votre solution également du coup. Car même si je suis en statique, c'est en géométrie non-linéaire donc je pense que votre conseil demeure.

NUM_ORDRE est le numéro du pas de calcul fixé par code_aster il est différent de INST, il commence toujours à 1 et est un entier
si vous commencer à INST=2 il y aura un décalage
il y aura aussi un décalage si code_aster redécoupe les pas de temps
également un décalage si INST est un réel non entier par exemple NUM_ORDRE=35 à INST=1.275

Mais du coup, si je veux sortir des champs au dernier instant comment je défini le NUM_ORDRE? Car à priori je ne connais pas la découpe que va faire Code_aster lors du calcul, donc je ne connais pas le nombre d'ordre pour finir le calcul, et impossible d'écrire "-1" comme python par exemple pour demander le dernier de la liste.

pour la visualisation des instants dans un résultat il est conseille d'utiliser INST= ou LIST_INST= afin de bien cadrer les résultats sur des valeurs significatives

Du coup vous voulez dire qu'il faut utiliser INST ou LIST_INST à la place de NUM_ORDRE dans CALC_CHAMP? Si c'est possible effectivement ça me semble plus fiable et ça répond à ma question juste au dessus.

J'ai globalement toujours beaucoup de mal à faire converger mon cas STAT_NON_LINE, pourtant avec des matériaux linéaires. Et apparemment le "ramp" que j'applique sur les efforts est très impactant.

Offline

#4 2018-05-17 13:15:13

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 4,049

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

Du coup vous voulez dire qu'il faut utiliser INST ou LIST_INST à la place de NUM_ORDRE dans CALC_CHAMP?

exactement NUM_ORDRE n'est pas très utile pour cela

J'ai globalement toujours beaucoup de mal à faire converger mon cas STAT_NON_LINE, pourtant avec des matériaux linéaires. Et apparemment le "ramp" que j'applique sur les efforts est très impactant.

c'est pas toujours simple il faut regarder la table de convergence dans le fichier .mess
et selon le nombre d'itération et la valeur des résidu il faut adapter le pas
il ne faut pas hésiter à le changer par étape ua cours du projet
exemple
1 jusqu'à 10
0.1 de 10 à 11
2 au delà de 11
des fois et c'est un peu paradoxal diminuer le nombre de pas améliore la solution


consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

Offline

#5 2018-05-17 13:29:31

Groguiguy
Member
From: Centrale Lille
Registered: 2017-11-07
Posts: 94

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

des fois et c'est un peu paradoxal diminuer le nombre de pas améliore la solution

Oui j'ai remarqué ça aussi, je suppose que c'est du à la dérivée locale de l'algo de Newton qui peut être plus grande qu'en sautant un pas. Le problème que j'ai c'est que je dois automatiser mon cas en un clic.
Le truc c'est qu'actuellement je suis déjà avec un Résidu de 10e-2, ce qui est déjà énorme.
Le code a l'air sensible à la qualité du maillage aussi non? Mes plus mauvais éléments ont un ratio de forme de 20... donc assez moches.

exemple
1 jusqu'à 10
0.1 de 10 à 11
2 au delà de 11

J'ai jamais pensé à faire ça, mais je suppose que la création d'une fonction pour définir le pas peut fonctionner, bien vu.

Merci beaucoup!

PS : je viens de tester avec l'écriture en FONC_MULT et AFFE_CHAR_MECA, ça fonctionne et je trouve ça plus claire merci.

Offline

#6 2018-05-17 14:23:57

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 4,049

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

PS : je viens de tester avec l'écriture en FONC_MULT et AFFE_CHAR_MECA, ça fonctionne et je trouve ça plus claire merci.

tant mieux, cela semble avoir été fait pour cela !!


consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

Offline

#7 2018-05-19 18:09:59

sb1966
Member
From: INDIA
Registered: 2015-03-16
Posts: 263

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

Hi all,
Thanks a lot to jeanpierreaubry for his  nice explanation. In addition to his excellent book, one may also refer to the Code-Aster training Material on Non-Linear Analysis-Basis and Advanced, available in Training-Material section of this website.

In this regard, I am happy to share that I have recently posted few videos on Non-Linear Static FEA of Geotechnical Structure (More precisely Slope Analysis example) in YouTube. . Though, I myself am a beginner in Code-Aster/S-Meca, what motivated my video posts is the relative scarcity of Geotechnical Analysis examples using Code-Aster/Salome-Meca in the internet.

I would like to hear comments from experts like Aubry and others on these tutorials. This will certainly enlighten me and will help in improving my future tutorials.

If interested you may like to see the relevant part of my tutorial (i.e. Part-02| Non-linear Solution Strategy) at
https://youtu.be/K-MAQUF5Tis?list=PLmSY … 5io6oB2iIJ

With Regards.

(Sukumar)

Offline

#8 2018-05-24 11:07:40

Groguiguy
Member
From: Centrale Lille
Registered: 2017-11-07
Posts: 94

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

J'ai essayé de créer une fonction Residu qui définirait mon Resi_Glob_Maxi à chaque pas, mais Code_Aster me dit qu'on ne peut pas le définir de cette façon.

DEBUT()

mesh = LIRE_MAILLAGE(UNITE=20)

model = AFFE_MODELE(
    AFFE=_F(MODELISATION=('3D_SI', ), PHENOMENE='MECANIQUE', TOUT='OUI'),
    MAILLAGE=mesh
)

listr = DEFI_LIST_REEL(DEBUT=0.0, INTERVALLE=_F(JUSQU_A=1.0, NOMBRE=10))

times = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=listr),
                           ECHEC=(_F(SUBD_NIVEAU=4,EVENEMENT='RESI_MAXI', RESI_GLOB_MAXI=20.0), )
                           )

ramp = DEFI_FONCTION(NOM_PARA='INST', VALE=(0.0, 0.0, 1.0, 1.0))

residu = DEFI_FONCTION(NOM_PARA='INST', VALE=(0.0, 0.01, 0.3, 2.0, 0.5, 2.0, 1.0, 0.01))

resnonl = STAT_NON_LINE(
    CHAM_MATER=fieldmat,
    COMPORTEMENT=(_F(
            DEFORMATION='GROT_GDEP',
            GROUP_MA=('Group'),
            RELATION='ELAS')),
    CONVERGENCE=_F(ITER_GLOB_MAXI=20, RESI_GLOB_MAXI=residu),
    EXCIT=(_F(CHARGE=Charge,FONC_MULT=ramp),_F(CHARGE=Pression,TYPE_CHARGE='SUIV',FONC_MULT=ramp), _F(CHARGE=Encastr)),
    INCREMENT=_F(INST_FIN=1.0, INST_INIT=0.0, LIST_INST=times),
    MODELE=model,
    RECH_LINEAIRE=_F(),
    NEWTON=_F(
        MATRICE='TANGENTE',
        MATR_RIGI_SYME='OUI',
        PREDICTION='TANGENTE',
        REAC_INCR=1,
        REAC_ITER=1,
        REAC_ITER_ELAS=1   
        ),
    SOLVEUR=_F(
        FILTRAGE_MATRICE=-1.0, METHODE='MUMPS', NPREC=-1, RESI_RELA=-1.0)       
)

Champ = CALC_CHAMP(
    CHAM_MATER=fieldmat, MODELE=model,
    INST=(10, ),
    RESULTAT=resnonl
)

IMPR_RESU(FORMAT='MED', RESU=(_F(RESULTAT=resnonl,IMPR_NOM_VARI='NON'),
        _F(NOM_CHAM=('EPSG_ELNO', 'SIGM_ELGA'),IMPR_NOM_VARI='NON', RESULTAT=Champ)
    ),
    UNITE=80
)

FIN()

Une idée pour procéder? Je n'ai rien trouvé dans la doc, car il n'y a pas de "Resi_Glob_Maxi_F" à la manière d'AFFE_CHAR_MECA_F pour utiliser une fonction.

Offline

#9 2018-05-24 15:49:56

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 4,049

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

J'ai essayé de créer une fonction Residu qui définirait mon Resi_Glob_Maxi à chaque pas

???? et dans quel but ?


consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

Offline

#10 2018-05-24 16:25:48

Groguiguy
Member
From: Centrale Lille
Registered: 2017-11-07
Posts: 94

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

jeanpierreaubry wrote:

c'est pas toujours simple il faut regarder la table de convergence dans le fichier .mess
et selon le nombre d'itération et la valeur des résidu il faut adapter le pas
il ne faut pas hésiter à le changer par étape ua cours du projet
exemple
1 jusqu'à 10
0.1 de 10 à 11
2 au delà de 11
des fois et c'est un peu paradoxal diminuer le nombre de pas améliore la solution

J'ai cru que vous parliez du résidu dans l'exemple si dessus, mais je viens de comprendre que c'était le pas qui variait ici.

Faire varier la valeur du résidu max aurait pu avoir un intérêt pour passer les moments de calculs difficiles.

Offline

#11 2018-06-03 17:23:52

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: Je ne comprends pas INST et AFFE_CHAR_MECA_F

sb1966 wrote:

Hi all,
In this regard, I am happy to share that I have recently posted few videos on Non-Linear Static FEA of Geotechnical Structure (More precisely Slope Analysis example) in YouTube. . Though, I myself am a beginner in Code-Aster/S-Meca, what motivated my video posts is the relative scarcity of Geotechnical Analysis examples using Code-Aster/Salome-Meca in the internet.

I would like to hear comments from experts like Aubry and others on these tutorials. This will certainly enlighten me and will help in improving my future tutorials.

If interested you may like to see the relevant part of my tutorial (i.e. Part-02| Non-linear Solution Strategy) at
https://youtu.be/K-MAQUF5Tis?list=PLmSY … 5io6oB2iIJ

Nice video tutorials!
I will post a tweet on code_aster's account about this.

TdS

Offline