×

Notice

The forum is in read only mode.

looking for fatigue example

More
13 years 4 months ago #5676 by JMB
Replied by JMB on topic Re:looking for fatigue example
Hello,

I managed to solve the problem and the details are here:

www.code-aster.org/forum2/viewtopic.php?id=15617

Regards, JMB
More
9 years 11 months ago #7892 by vanhorick
Replied by vanhorick on topic Re:looking for fatigue example
Hello,

I m looking for a DKT or COQUE_3D exemple for fatigue analysis :( . Someone well hnow this problem.

Thank a lot,
Christophe
More
9 years 11 months ago #7893 by Claus
Replied by Claus on topic Re:looking for fatigue example
As you are aware from bitbucket, a user i trying to add it to Code_Aster so no, there are no exampels to be found.
I suggest you contact the developer via bitbucket and ask him how far he's progressed.

You are more than welcome to post the answer here.

/C

Code_Aster release : STA11.4 on OpenSUSE 12.3 64 bits - EDF/Intel version
More
9 years 11 months ago - 9 years 11 months ago #7914 by Stefan
Replied by Stefan on topic Re:looking for fatigue example
Yes this user is me.

Currently I'm far away from implementing it completely, but there is a workaround for your problem:

You can use a python for loop and use post_fatigue to generate a fatigue computation node by node
I attach a file how it could be done.

The material data is from edf testcases

fatigue_true_coque_for.comm
import sys, os

# Assuming module is in home directory

sys.path.append(os.path.expanduser("~/prog/Python/"))

from UnitCalculator import *
from itertools import chain

def create_list_for_function(x,y):

    zipped = zip(x,y)
    return tuple(chain(*zipped))

auto_converter(mmNS)


# import Numeric as N
from Utilitai.partition import *
DEBUT(LANG = 'EN',
      PAR_LOT='NON',
      );

MeshP = LIRE_MAILLAGE(UNITE = 20,
                      FORMAT = 'MED',
                      INFO = 1,
                      INFO_MED=1,
                      );

Mesh3D = LIRE_MAILLAGE(UNITE = 21,
                       FORMAT = 'MED',
                       INFO = 1,
                       INFO_MED=1,
                       );

MeshQ = CREA_MAILLAGE(MAILLAGE=MeshP,
                      LINE_QUAD=_F(TOUT='OUI',
                                   ),
                                   );

MeshC = CREA_MAILLAGE(MAILLAGE=MeshQ,
                      CREA_GROUP_MA=(_F(NOM='copy', # The copy group consits now of tria6 Elements
                                        GROUP_MA=('vol',),
                                        PREF_MAILLE='T',
                                        ),
                                     ),
                        );

Mesh = CREA_MAILLAGE(MAILLAGE=MeshC,
                     MODI_MAILLE=(_F(GROUP_MA='vol',
                                     OPTION='TRIA6_7',
                                     PREF_NOEUD='NT',
                                     ),
                                  ),
                     );
Mesh = DEFI_GROUP(reuse = Mesh,
                  MAILLAGE=Mesh,
                  CREA_GROUP_NO=(_F(NOM='allN',
                                   GROUP_MA='vol',
                                   #TYPE_MAILLE = '3D',
                                   ),
                                  _F(NOM='WOM',
                                     GROUP_MA='copy',
                                     ),
                                   ),
                    );
Mesh = DEFI_GROUP(reuse = Mesh,
                  MAILLAGE=Mesh,
                  CREA_GROUP_NO=_F(NOM='midP',
                                   DIFFE=('allN','WOM',),
                                   ),
                   );


# Mesh = MODI_MAILLAGE(reuse=Mesh,
#                      MAILLAGE=Mesh,
#                      ORIE_SHB=_F(GROUP_MA='vol'),
#                      );


Model = AFFE_MODELE(INFO = 1,
                    MAILLAGE = Mesh,
                    AFFE = (_F(TOUT = 'OUI',
                               PHENOMENE='MECANIQUE',
                               MODELISATION='3D',
                               ),
                             _F(GROUP_MA = 'vol',
                               PHENOMENE='MECANIQUE',
                               MODELISATION='COQUE_3D',
                               ),
                            ),
                           );

Whol=DEFI_FONCTION(      NOM_PARA='SIGM',
                         INTERPOL='LOG',
                         PROL_DROITE='LINEAIRE',
                         PROL_GAUCHE='LINEAIRE',
                         VALE=(  138.,    1000000.,
                                 152.,     500000.,
                                 165.,     200000.,
                                 180.,     100000.,
                                 200.,      50000.,
                                 250.,      20000.,
                                 295.,      12000.,
                                 305.,      10000.,
                                 340.,       5000.,
                                 430.,       2000.,
                                 540.,       1000.,
                                 690.,        500.,
                                 930.,        200.,
                                1210.,        100.,
                                1590.,         50.,
                                2210.,         20.,
                                2900.,         10.,  )  )



Steel = DEFI_MATERIAU(ELAS = _F(E = 2.1e+5*MPa,
                                NU = 0.3,
                                RHO = 7800*kg/m**3,
                                ),
                       FATIGUE=_F(WOHLER=Whol,
                                  D0 = 540.97,
                                  TAU0 = 352.0,
                                  ),
                    );

Material = AFFE_MATERIAU(MAILLAGE=Mesh,
                         AFFE=(_F(TOUT='OUI',
                                  MATER=Steel,
                                  ),
                                ),
                            );

Boundary = AFFE_CHAR_MECA(INFO = 1,
                          MODELE = Model,
                          DDL_IMPO = (_F(GROUP_MA=('fix'),
                                         DX=0.0,
                                         DY=0.0,
                                         DZ=0.0,
                                         DRX=0.0,
                                         DRY=0.0,
                                         DRZ=0.0,
                                         ),
                                        ),

                          );

BoundFix = AFFE_CHAR_CINE(MODELE=Model, 
                          MECA_IMPO=(_F(GROUP_MA=('fix'),
                                        DX = 0.0,
                                        DY = 0.0,
                                        DZ = 0.0,
                                        DRX=0.0,
                                        DRY=0.0,
                                        DRZ=0.0,
                                        ),
                                      # _F(GROUP_NO=('midP'),
                                      #   DRX=0.0,
                                      #   DRY=0.0,
                                      #   DRZ=0.0,
                                      #   ),
                                        ),
                          );


Press = AFFE_CHAR_MECA(INFO = 1,
                       MODELE = Model,
                       PRES_REP=(_F(GROUP_MA=('press',
                                              ),
                                              PRES=1*MPa,
                                              ),
                                            ),
                       );

LoadRamp = DEFI_FONCTION(NOM_PARA='INST',VALE=(0.0,0.0,
                                               1.0,1.0,
                                               2.0,0.0
                                               ),
                                            );
list_inst = [0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0]
ListInst = DEFI_LIST_REEL(VALE=list_inst,
                          # DEBUT=0.0,
                          # INTERVALLE=_F(JUSQU_A=2.0,
                          #               PAS=0.2,
                          #               ),
                        );		   

Shell = AFFE_CARA_ELEM(INFO = 1,
                       MODELE = Model,
                       COQUE=_F(GROUP_MA='vol',
                                EPAIS=1.0*mm,
                                VECTEUR=(1.0,0.0,0.0), # defines local x-axis
                                ),

                       );


Result = MECA_STATIQUE(INFO=1,
                       MODELE=Model,
                       CHAM_MATER=Material,
                       CARA_ELEM=Shell,
                       EXCIT=(_F(CHARGE=BoundFix,
                                 ),
                              _F(CHARGE=Press,
                                 FONC_MULT=LoadRamp,
                                 ),
                            ),
                        LIST_INST=ListInst
                    );


Result = CALC_CHAMP(reuse = Result,
                     RESULTAT = Result,
                     CONTRAINTE = ('SIGM_ELNO','SIGM_ELGA',
                                   # 'SIGM_NOEU',
                                   # 'SIEF_NOEU',
                                   ),
                      # DEFORMATION = ('EPSI_ELNO',
                      #                #'EPSI_NOEU',
                      #               ),
                     # CRITERES = ('SIEQ_NOEU','SIEQ_ELNO',
                     #             ),
                     TOUT_ORDRE='OUI', 
                    );


ResSup=POST_CHAMP(RESULTAT=Result,
                  EXTR_COQUE=_F(NOM_CHAM=('SIGM_ELNO','SIEF_ELGA',),
                                NUME_COUCHE=1,
                                NIVE_COUCHE='SUP',),);


ResSup=CALC_CHAMP(reuse =ResSup,
                  RESULTAT=ResSup,
                  TOUT_ORDRE='OUI', 
                  CONTRAINTE='SIGM_NOEU',
                  CRITERES=('SIEQ_ELNO','SIEQ_NOEU',),);

ResInf=POST_CHAMP(RESULTAT=Result,
                  EXTR_COQUE=_F(NOM_CHAM=('SIGM_ELNO','SIEF_ELGA',),
                                NUME_COUCHE=1,
                                NIVE_COUCHE='INF',),);


ResInf=CALC_CHAMP(reuse =ResInf,
                  RESULTAT=ResInf,
                  TOUT_ORDRE='OUI', 
                  CONTRAINTE='SIGM_NOEU',
                  CRITERES=('SIEQ_ELNO','SIEQ_NOEU',),);

ResMoy=POST_CHAMP(RESULTAT=Result,
                  EXTR_COQUE=_F(NOM_CHAM=('SIGM_ELNO','SIEF_ELGA',),
                                NUME_COUCHE=1,
                                NIVE_COUCHE='MOY',),);


ResMoy=CALC_CHAMP(reuse =ResMoy,
                  RESULTAT=ResMoy,
                  TOUT_ORDRE='OUI', 
                  CONTRAINTE='SIGM_NOEU',
                  CRITERES=('SIEQ_ELNO','SIEQ_NOEU',),);


field1=CREA_CHAMP(TYPE_CHAM='NOEU_SIEF_R',
                    OPERATION='EXTR',
                    RESULTAT=ResSup,
                    NOM_CHAM='SIGM_NOEU',
                    INST=1.0,);


# print sixx1
# Fxx1 = DEFI_FONCTION(NOM_PARA='INST',
#                      VALE=create_list_for_function(list_inst,sixx1),
#                                             );

# print field1NP.valeurs
# print field1NP.maille
# print field1NP.point
# print field1NP.sous_point

# Create list of nodes
hlptab = CREA_TABLE(RESU=_F(RESULTAT=ResMoy,
                           NOM_CHAM="SIGM_NOEU",
                           INST=1.0,
                           #TOUT="OUI",
                           GROUP_MA='copy',
                           # NOEUD="N1",
                           #NOM_CMP="SIXZ",
                           NOM_CMP = "SIXX",
                           )
                           );
nodes = hlptab.EXTR_TABLE().values()["NOEUD"]

fatigue = []

for node in nodes:
    table = CREA_TABLE(RESU=_F(RESULTAT=ResMoy,
                               NOM_CHAM="SIGM_NOEU",
                               LIST_INST=ListInst,
                               NOEUD=node,
                               TOUT_CMP = "OUI",
                               ),
                           );

    tab2 = table.EXTR_TABLE()

    sixx = tab2.values()["SIXX"]
    siyy = tab2.values()["SIYY"]
    sizz = tab2.values()["SIZZ"]
    sixy = tab2.values()["SIXY"]
    sixz = tab2.values()["SIXZ"]
    siyz = tab2.values()["SIYZ"]

    FXX = DEFI_FONCTION(NOM_PARA='INST',
                        VALE=create_list_for_function(list_inst,sixx),
                                            );
    FYY = DEFI_FONCTION(NOM_PARA='INST',
                     VALE=create_list_for_function(list_inst,siyy),
                                            );
    FZZ = DEFI_FONCTION(NOM_PARA='INST',
                     VALE=create_list_for_function(list_inst,sizz),
                                            );
    FXY = DEFI_FONCTION(NOM_PARA='INST',
                     VALE=create_list_for_function(list_inst,sixy),
                                            );
    FXZ = DEFI_FONCTION(NOM_PARA='INST',
                        VALE=create_list_for_function(list_inst,sixz),
                                            );
    FYZ = DEFI_FONCTION(NOM_PARA='INST',
                        VALE=create_list_for_function(list_inst,siyz),
                                            );

    Fat=POST_FATIGUE(CHARGEMENT='MULTIAXIAL',
                     TYPE_CHARGE = 'PERIODIQUE',
                     HISTOIRE=_F(  SIGM_XX = FXX,
                                    SIGM_YY = FYY,
                                    SIGM_ZZ = FZZ,
                                    SIGM_XY = FXY,
                                    SIGM_XZ = FXZ,
                                    SIGM_YZ = FYZ,                                                
                                    ),
                     CRITERE='CROSSLAND',
                     DOMMAGE='WOHLER',
                     MATER=Steel,
                    );
    
    fatigue += Fat.EXTR_TABLE().values()["DOMMAGE"]

    DETRUIRE(INFO=1,
             CONCEPT = _F(NOM = (FXX,FYY,FZZ,FXY,FXZ,FYZ,table,Fat),
                          ),
                          );
    

#print fatigue

FatTab = CREA_TABLE(LISTE=(_F(LISTE_K = nodes,PARA="NOEUD",),
                           _F(LISTE_R = fatigue,PARA="X1",),
                           ),
                    );

FatRes = CREA_CHAMP(TYPE_CHAM="NOEU_NEUT_R",
                    OPERATION='EXTR',
                    # PROL_ZERO="OUI",
                    MAILLAGE=Mesh,
                    TABLE=FatTab,
                    # NOM_CHAM="DOMMAG",
                    );



IMPR_RESU(FORMAT='MED',
          UNITE=80,
          RESU=(_F(MAILLAGE=Mesh,
                  RESULTAT=ResSup,
                  NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL','SIGM_ELNO','SIEQ_ELNO',
                            ),
                ),
                _F(#MAILLAGE=Mesh,
                  RESULTAT=ResInf,
                  NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL','SIGM_ELNO','SIEQ_ELNO',
                            ),
                ),
                _F(#MAILLAGE=Mesh,
                  RESULTAT=ResMoy,
                  NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL','SIGM_ELNO','SIEQ_ELNO',
                            ),
                ),
                 _F(CHAM_GD=FatRes,
                   TOUT_CMP='OUI',
                   ),
                ),
        );



FIN();
Last edit: 9 years 11 months ago by Stefan.
More
9 years 11 months ago #7916 by vanhorick
Replied by vanhorick on topic Re:looking for fatigue example
;) Really great,

Could you have .med files to understand importation of mesh 3D and ''AFFE_MODELE' with 3D and Coque_3D. Futhermore you said ''The material data is from edf testcases'', you talk which case test in Aster, have you references or links.

Thank you...

Chris
More
9 years 11 months ago #7923 by Stefan
Replied by Stefan on topic Re:looking for fatigue example
Unfortunately I can't upload data for some reason. Just create some face and mesh it with linear triangles. In make the groups according to the code.
You don't need the solid mesh it's just for reference. Just comment everything out concerning 3D.

Look here: for the test case documentation.
The tescases files can be found in Code_Aster itself under under _dir_to_aster/share/aster/tests
Moderators: catux
Time to create page: 0.139 seconds
Powered by Kunena Forum