looking for fatigue example
- JMB
- Offline
- Elite Member
Less
More
- Posts: 166
- Thank you received: 0
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
I managed to solve the problem and the details are here:
www.code-aster.org/forum2/viewtopic.php?id=15617
Regards, JMB
- vanhorick
- Offline
- New Member
Less
More
- Posts: 3
- Thank you received: 0
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
I m looking for a DKT or COQUE_3D exemple for fatigue analysis . Someone well hnow this problem.
Thank a lot,
Christophe
- Claus
- Offline
- Moderator
Less
More
- Posts: 670
- Thank you received: 34
9 years 11 months ago #7893
by Claus
Code_Aster release : STA11.4 on OpenSUSE 12.3 64 bits - EDF/Intel version
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
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
- Stefan
- Offline
- Junior Member
Less
More
- Posts: 20
- Thank you received: 0
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
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.
- vanhorick
- Offline
- New Member
Less
More
- Posts: 3
- Thank you received: 0
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
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
- Stefan
- Offline
- Junior Member
Less
More
- Posts: 20
- Thank you received: 0
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
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