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

You are not logged in.

#1 2017-05-31 16:49:39

Shizhe.H.
Member
Registered: 2017-05-31
Posts: 4

[SOLVED] Intégration d'une loi de comportement 1D pour MULTIFIBRE

Bonjour,

Je voudrais intégrer une nouvelle loi de comportement 1D et l'utiliser pour MULTIFIBRE.

J'ai installé la version Développement de Code_Aster. Selon D5.04.01(introduire une nouvelle loi de comportement), j'ai écrit et ajouté le routine de cette loi de comportement dans le répertoire bibpyt/Comportement, modifié le catalogue de DEFI_MATERIAU, de C_RELATION et de cate_vari.py . J'ai utilisé Waf pour complier la nouvelle version.

Quand je lance le calcul par ASTK, il s'affiche :

   Etape : DEFI_COMPOR    ligne : 103    fichier : u'fort.1'
      Mot-clé facteur multiple : MULTIFIBRE
         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         ! L'occurrence numéro 2 du mot-clé facteur : MULTIFIBRE n'est pas valide !
         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         MULTIFIBRE
            Mot-clé simple : RELATION
               !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
               ! La valeur : 'MA_RELATION'  ne fait pas partie des choix possibles (u'ELAS',     !
               ! u'CORR_ACIER', u'GRANGER_FP_INDT', u'GRAN_IRRA_LOG', u'MAZARS_GC',       !
               ! u'VISC_IRRA_LOG', u'VMIS_CINE_GC', u'VMIS_CINE_LINE', u'VMIS_ISOT_LINE', !
               ! u'VMIS_ISOT_TRAC')                                                       !
               !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            Fin Mot-clé simple : RELATION
         Fin MULTIFIBRE
      Fin Mot-clé facteur multiple : MULTIFIBRE
   Fin Etape : DEFI_COMPOR



Donc j'ai modifié encore une fois le  "C_relation.capy" :

    elif COMMAND =='DEFI_COMPOR' :
                   return ( "ELAS",  #uniquement ce qui a du sens (cf doc) et qui fait l'objet d'un test
                            "CORR_ACIER",
                            "GRANGER_FP_INDT",
                            "GRAN_IRRA_LOG",
                            "MAZARS_GC",
                            "VISC_IRRA_LOG",
                            "VMIS_CINE_GC",
                            "VMIS_CINE_LINE",
                            "VMIS_ISOT_LINE",
                            "VMIS_ISOT_TRAC",
                            "MA_RELATION",       # c'est le nom de ma relation


Cette fois ça marche et il n'y a plus de problème au niveau du command. Mais maintenent si je lance le calcul par ASTK, il s'affiche :

Instant de calcul:  3.000000000000e-01 - Niveau de découpe: 1
---------------------------------------------------------------------
|     NEWTON     |     RESIDU     |     RESIDU     |     OPTION     |
|    ITERATION   |     RELATIF    |     ABSOLU     |   ASSEMBLAGE   |
|                | RESI_GLOB_RELA | RESI_GLOB_MAXI |                |
---------------------------------------------------------------------
   
   !------------------------------------------------------------------------------!
   ! <F> <ELEMENTS2_39>                                                           !
   !                                                                              !
   !  La loi MA_RELATION n'existe pas pour une utilisation avec des poutres multifibres. !
   !                                                                              !
   !                                                                              !
   ! Cette erreur est fatale. Le code s'arrête.                                   !
   !------------------------------------------------------------------------------!


Il semblait que même si j'ai intégré cette loi de comportement dans le répertoire, elle n'est pas valable pour MULTIFIBRE.

Saurriez-vous comment l'intégrer pour MULTIFIBRE? Grand merci !

Last edited by Shizhe.H. (2017-06-19 12:30:48)


Attachments:
ssnl119a.o14737-sarah.tar.gz, Size: 20.12 KiB, Downloads: 23

Offline

#2 2017-05-31 20:02:36

AsterO'dactyle
Administrator
Registered: 2007-11-29
Posts: 123

Re: [SOLVED] Intégration d'une loi de comportement 1D pour MULTIFIBRE

Bonjour,

Pour les PMF, il faut modifier un autre catalogue:

./dev/codeaster/src/catapy/commun/c_relation.capy

Vous avez une liste:

    elif COMMAND =='DEFI_COMPOR' :
                   return ( "ELAS",  #uniquement ce qui a du sens (cf doc) et qui fait l'objet d'un test
                            "CORR_ACIER",
                            "BETON_GRANGER",
                            "GRAN_IRRA_LOG",
                            "MAZARS_GC",
                            "VISC_IRRA_LOG",
                            "VMIS_CINE_GC",
                            "VMIS_CINE_LINE",
                            "VMIS_ISOT_LINE",
                            "VMIS_ISOT_TRAC",
                            )

Il faut la compléter.

A noter aussi que c'est un comportement particulier qui ne passe pas par la routine standard nmcomp (ce qui est le cas de ce qui est décrit dans la doc que vous citez). Il faut modifier également la routine pmfcom.F90.

Vous avez alors deux solutions:

1/ Si vous avez programmé en natif "1D", il faut la brancher directement ici.
Et dans votre catalogue de loi de comportement, il faut préciser: modelisation   = ('1D',),

2/ Si vous avez une loi 3D standard que vous souhaitez "dégénérer" en loi 1D pour les fibres
a/ Dans pmfcom, il faut appeler la routine comp1d (que vous n'avez pas besoin de modifier, mais juste d’appeler, comme pour BETON_GRANGER par exemple)
b/ La routine comp1d appellera alors nmcomp automatiquement (comme une loi 3D), mais il faudra être en "DEBORST", pour ça, c'est automatique si vous mettez modelisation   = ('3D','AXIS','D_PLAN',) (sans le paramètre '1D') dans votre catalogue


Bon courage !


Code_Asterの開発者

Offline

#3 2017-06-19 12:28:54

Shizhe.H.
Member
Registered: 2017-05-31
Posts: 4

Re: [SOLVED] Intégration d'une loi de comportement 1D pour MULTIFIBRE

Bonjour,

Je vous remercie beaucoup, AsterO'dactyle ! Grace à votre réponse, j'ai réussi à intégrer mon modèle de loi de comportement dans Code_Aster et l'utiliser pour le Poutre Multifibre. Grand merci !

To help other people who might do the same things (propose a new material constitutive model, include and implement it in the development version of Code_Aster for Multifibre Beam), I conclude here the steps that I have done:

1. Download and install the complete version of Code_Aster. Then download and install the "dev" version of Code_Aster using "waf".
     Common errors:
    a. Before running
              cd $HOME/dev/codeaster/src
              ./waf configure --use-config-dir=$ASTER_ROOT/12.1/share/aster --use-config=aster_full_config --
               prefix=../install/std
              ./waf install -p
        we must replace the "ASTER_ROOT=/opt/aster" by "ASTER_ROOT= (path of Aster)" .
    b. when we add this development version in astk, before adding these lines in the file astkrc/prefs:
              vers : DEV:$HOME/dev/codeaster/install/std/share/aster
              vers : DEV_MPI:$HOME/dev/codeaster/install/mpi/share/aster
       Never forget to change the definition of HOME, or write as:
              vers : DEV:/***(path of dev)/dev/codeaster/install/std/share/aster

2. Write a routine for the 1D constitutive law in Fortran90.

3. Add or replace these files in the code source:
   -add "ma_relation1d.F90" :  /dev/codeaster/src/bibfor/algorith/
          fonction: the main routine of the new constitutive law in 1D.
   -add "ma_relation1d.h" :  /dev/codeaster/src/bibfor/include/asterfort
          fonction: the head file of the "ma_relation.F90" used for calling the fonction.
   -add "ma_relation.py" : /dev/codeaster/src/bibpyt/Comportement
          fonction: define all the material general informations (parameters, simulation type,etc.)
                         and call the material number ** used in "lc00**.F90"
   -add "lcmarelation.F90"  :  /dev/codeaster/src/bibfor/algorith/
          fonction: 3D version of the constitutive law. In fact, when we use the PMF module, if we call
                         directly another routine 1D  (here we use "ma_relation1d.F90" ), this file of routine 3D is
                        only used for transfering model parameter inputs into PMF module.
                         So the other parts of 3D routine is useless. The stress-strain intergration depends
                         actually on "ma_relation1d.F90", not on this file in 3D.
    -add  "lcmarelation.h"     :  /dev/codeaster/src/bibfor/include/asterfort
          fonction: the head file of the "lcmarelation.F90" used for calling the fonction.
    -add  "lc00**.F90"  :  /dev/codeaster/src/bibfor/lc
          fonction: the main routine of the new constitutive law in 3D. ** is a number between 51-99.
    -add  "lc00**.h"     :  /dev/codeaster/src/bibfor/include/asterfort
          fonction: the head file of the "lc00**.F90" used for calling the fonction.
    -change "defi_materiau.capy" : /dev/codeaster/src/catapy/commande
          fonction: add new materiau name in the catalog
    -change "pmfcom.F90" :  /dev/codeaster/src/bibfor/elements
          fonction: the main code for PMF module. 
                         Add the new materiau type here, calling the fonction defined by "ma_relation1d.F90".
    -change "c_relation.capy" :    /dev/codeaster/src/catapy/commun
          fonction: add new materiau name in the catalog
    -change "cata_vari.py" :             à remplacer dans  /dev/codeaster/src/bibpyt/Comportement
          fonction: add the materiau input parameter for the new constitutive model

4. Validation by using it in ASTK.

I thank a lot AsterO'dactyle for his kind help!

Shizhe

Last edited by Shizhe.H. (2017-06-19 12:55:14)

Offline

Board footer