forma03bをためしてみました

sponsored

forma03bです。材料が非線形の場合を扱っています。作業中です。

# DISCRETISATION EN TEMPS
DEBUT(identifier='1:1',
CODE=_F(NIV_PUB_WEB='INTERNET'),
DEBUG=_F(SDVERI='NON'))

TFIN = 230.0

TELAS = 10.0

# ########################################################################
#
# TROISIEME CALCUL : CHARGEMENT PLASTIQUE PUIS DECHARGE ELASTIQUE
#
# #######################################################################
# DISCRETISATION EN TEMPS
TCHAR = 230.0

TDECHAR = 300.0

MAIL = LIRE_MAILLAGE(identifier='9:1',
FORMAT='MED',
UNITE=20)

MAIL = MODI_MAILLAGE(identifier='10:1',
reuse=MAIL,
MAILLAGE=MAIL,
ORIE_PEAU=_F(GROUP_MA_PEAU='haut'))

# AFFECTATION DU MODELE (CONTRAINTES PLANES)
MODE = AFFE_MODELE(identifier='12:1',
AFFE=_F(MODELISATION='C_PLAN',
PHENOMENE='MECANIQUE',
TOUT='OUI'),
MAILLAGE=MAIL)

# DEFINITION DU MATERIAU
# COURBE DE TRACTION
CTRAC = LIRE_FONCTION(identifier='15:1',
NOM_PARA='EPSI',
PROL_DROITE='CONSTANT',
UNITE=21)

ACIER = DEFI_MATERIAU(identifier='16:1',
ELAS=_F(E=200000.0,
NU=0.3),
TRACTION=_F(SIGM=CTRAC))

CHMATE = AFFE_MATERIAU(identifier='17:1',
AFFE=_F(MATER=ACIER,
TOUT='OUI'),
MAILLAGE=MAIL)

# RAMPE APPLICATION CHARGEMENT
RAMPE = DEFI_FONCTION(identifier='19:1',
NOM_PARA='INST',
VALE=(0.0, 0.0, 1000.0, 1000.0))

L_INST = DEFI_LIST_REEL(identifier='20:1',
DEBUT=0.0,
INTERVALLE=(_F(JUSQU_A=TELAS,
NOMBRE=1),
_F(JUSQU_A=TFIN,
NOMBRE=50)))

DEFLIST = DEFI_LIST_INST(identifier='21:1',
DEFI_LIST=_F(LIST_INST=L_INST),
ECHEC=_F(ACTION='DECOUPE',
EVENEMENT='ERREUR',
SUBD_NIVEAU=5))

# RAMPE APPLICATION CHARGE PUIS DECHARGE
RAMPE2 = DEFI_FONCTION(identifier='23:1',
NOM_PARA='INST',
VALE=(0.0, 0.0, TCHAR, TCHAR, TDECHAR, 0.0))

# DISCRETISATION EN TEMPS
L_INST2 = DEFI_LIST_REEL(identifier='25:1',
DEBUT=0.0,
INTERVALLE=(_F(JUSQU_A=TELAS,
NOMBRE=1),
_F(JUSQU_A=TCHAR,
NOMBRE=30),
_F(JUSQU_A=TDECHAR,
NOMBRE=10)))

DEFLIST2 = DEFI_LIST_INST(identifier='26:1',
DEFI_LIST=_F(LIST_INST=L_INST2),
ECHEC=_F(ACTION='DECOUPE',
EVENEMENT='ERREUR'))

# CONDITIONS DE SYMETRIE (QUART DE PLAQUE)
CHSYME = AFFE_CHAR_CINE(identifier='28:1',
MECA_IMPO=(_F(DY=0.0,
GROUP_MA='bas'),
_F(DX=0.0,
GROUP_MA='gauche')),
MODELE=MODE)

# CHARGEMENT EN FORCE
CHFORC = AFFE_CHAR_MECA(identifier='30:1',
FORCE_CONTOUR=_F(FY=1.0,
GROUP_MA='haut'),
MODELE=MODE)

# #######################################################################
#
# PREMIER CALCUL : ON RESTE ELASTIQUE
#
# #######################################################################
RESUNL = STAT_NON_LINE(identifier='32:1',
CHAM_MATER=CHMATE,
COMPORTEMENT=_F(RELATION='VMIS_ISOT_TRAC'),
EXCIT=(_F(CHARGE=CHSYME),
_F(CHARGE=CHFORC,
FONC_MULT=RAMPE)),
INCREMENT=_F(INST_FIN=TELAS,
LIST_INST=DEFLIST),
MODELE=MODE)

# #######################################################################
#
# PREMIER CALCUL : PLASTIFICATION
#
# #######################################################################
RESUNL = STAT_NON_LINE(identifier='34:1',
reuse=RESUNL,
CHAM_MATER=CHMATE,
COMPORTEMENT=_F(RELATION='VMIS_ISOT_TRAC'),
ETAT_INIT=_F(EVOL_NOLI=RESUNL),
EXCIT=(_F(CHARGE=CHSYME),
_F(CHARGE=CHFORC,
FONC_MULT=RAMPE)),
INCREMENT=_F(INST_FIN=TFIN,
LIST_INST=DEFLIST),
MODELE=MODE,
NEWTON=_F(REAC_ITER=1))

# #######################################################################
#
# TROISIEME CALCUL : CHARGEMENT PLASTIQUE PUIS DECHARGE
#
# #######################################################################
RESUNL2 = STAT_NON_LINE(identifier='36:1',
ARCHIVAGE=_F(LIST_INST=L_INST2),
CHAM_MATER=CHMATE,
COMPORTEMENT=_F(RELATION='VMIS_ISOT_TRAC'),
EXCIT=(_F(CHARGE=CHSYME),
_F(CHARGE=CHFORC,
FONC_MULT=RAMPE2)),
INCREMENT=_F(LIST_INST=DEFLIST2),
MODELE=MODE,
NEWTON=_F(PREDICTION='ELASTIQUE',
REAC_ITER=1))

# #######################################################################
#
# POST-TRAITEMENTS STANDARDS
#
# #######################################################################
# INTERPOLATION DES CONTRAINTES AUX NOEUDS
RESUNL = CALC_CHAMP(identifier='38:1',
reuse=RESUNL,
CONTRAINTE='SIGM_ELNO',
RESULTAT=RESUNL)

RESUNL = CALC_CHAMP(identifier='39:1',
reuse=RESUNL,
CONTRAINTE='SIGM_NOEU',
RESULTAT=RESUNL)

# INTERPOLATION DES VARIABLES INTERNES AUX NOEUDS
RESUNL = CALC_CHAMP(identifier='41:1',
reuse=RESUNL,
RESULTAT=RESUNL,
VARI_INTERNE='VARI_ELNO')

RESUNL = CALC_CHAMP(identifier='42:1',
reuse=RESUNL,
RESULTAT=RESUNL,
VARI_INTERNE='VARI_NOEU')

# #######################################################################
#
# POST-TRAITEMENTS STANDARDS
#
# #######################################################################
# INTERPOLATION DES CONTRAINTES AUX NOEUDS
RESUNL2 = CALC_CHAMP(identifier='44:1',
reuse=RESUNL2,
CONTRAINTE='SIGM_ELNO',
RESULTAT=RESUNL2)

RESUNL2 = CALC_CHAMP(identifier='45:1',
reuse=RESUNL2,
CONTRAINTE='SIGM_NOEU',
RESULTAT=RESUNL2)

# INTERPOLATION DES VARIABLES INTERNES AUX NOEUDS
RESUNL2 = CALC_CHAMP(identifier='47:1',
reuse=RESUNL2,
RESULTAT=RESUNL2,
VARI_INTERNE='VARI_ELNO')

RESUNL2 = CALC_CHAMP(identifier='48:1',
reuse=RESUNL2,
RESULTAT=RESUNL2,
VARI_INTERNE='VARI_NOEU')

IMPR_FONCTION(identifier='49:1',
COURBE=_F(FONCTION=CTRAC),
FORMAT='XMGRACE',
LEGENDE_X='Deformation',
LEGENDE_Y='Contrainte (MPa)',
TITRE='Courbe de traction',
UNITE=2)

# #######################################################################
#
# IMPRESSION DES RESULTATS
#
# #######################################################################
IMPR_RESU(identifier='51:1',
FORMAT='MED',
RESU=_F(RESULTAT=RESUNL),
UNITE=3)

# #######################################################################
#
# IMPRESSION DES RESULTATS
#
# #######################################################################
IMPR_RESU(identifier='53:1',
FORMAT='MED',
RESU=_F(RESULTAT=RESUNL2),
UNITE=4)

# #######################################################################
#
# TESTS - CALCUL CHARGEMENT PLASTIQUE
# PARTIE ELASTIQUE (IDENTIQUE MODELISATION A)
#
# #######################################################################
TEST_RESU(identifier='55:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=10.0,
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIYY',
PRECISION=1e-08,
REFERENCE='AUTRE_ASTER',
RESULTAT=RESUNL,
VALE_CALC=30.6077958737,
VALE_REFE=30.6077958737))

TEST_RESU(identifier='56:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='A',
INST=10.0,
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIXX',
PRECISION=1e-08,
REFERENCE='AUTRE_ASTER',
RESULTAT=RESUNL,
VALE_CALC=-9.9967257536,
VALE_REFE=-9.9967257536))

# #######################################################################
#
# TESTS - CALCUL CHARGEMENT PLASTIQUE
# PARTIE PLASTIQUE
#
# #######################################################################
TEST_RESU(identifier='58:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=230.0,
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIYY',
RESULTAT=RESUNL,
VALE_CALC=271.642151153))

TEST_RESU(identifier='59:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='A',
INST=230.0,
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIXX',
RESULTAT=RESUNL,
VALE_CALC=-213.06249364))

TEST_RESU(identifier='60:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=230.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V1',
RESULTAT=RESUNL,
VALE_CALC=0.3251779025))

TEST_RESU(identifier='61:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=230.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V2',
RESULTAT=RESUNL,
VALE_CALC=1.0))

TEST_RESU(identifier='62:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='A',
INST=230.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V1',
RESULTAT=RESUNL,
VALE_CALC=0.00369151195696))

TEST_RESU(identifier='63:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='A',
INST=230.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V2',
RESULTAT=RESUNL,
VALE_CALC=1.0))

# #######################################################################
#
# TESTS - CALCUL CHARGEMENT PLASTIQUE PUIS DECHARGE
# DECHARGE
#
# #######################################################################
TEST_RESU(identifier='65:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=300.0,
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIYY',
PRECISION=1e-08,
REFERENCE='ANALYTIQUE',
RESULTAT=RESUNL2,
VALE_CALC=-271.777841344,
VALE_REFE=-271.777841344))

TEST_RESU(identifier='66:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='A',
INST=300.0,
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIXX',
PRECISION=1e-08,
REFERENCE='ANALYTIQUE',
RESULTAT=RESUNL2,
VALE_CALC=23.8828857921,
VALE_REFE=23.8828857921))

TEST_RESU(identifier='67:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=300.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V1',
RESULTAT=RESUNL2,
VALE_CALC=0.327601333404))

TEST_RESU(identifier='68:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='B',
INST=300.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V2',
RESULTAT=RESUNL2,
VALE_CALC=1.0))

TEST_RESU(identifier='69:1',
RESU=_F(CRITERE='RELATIF',
GROUP_NO='A',
INST=300.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V1',
RESULTAT=RESUNL2,
VALE_CALC=0.00367869888705))

TEST_RESU(identifier='70:1',
RESU=_F(CRITERE='ABSOLU',
GROUP_NO='A',
INST=300.0,
NOM_CHAM='VARI_NOEU',
NOM_CMP='V2',
RESULTAT=RESUNL2,
VALE_CALC=0.0))

FIN(identifier='71:1',
)

もうひとつのcommです。こちらはTEST関係です。

# RESULTAT ANALYTIQUE
POURSUITE(identifier='1:2',
CODE='OUI')

R = 10.0

SMAX = pi / 2 * R

# coding=utf-8
# --------------------------------------------------------------------
# Copyright (C) 1991 - 2018 - EDF R&D - www.code-aster.org
# This file is part of code_aster.
#
# code_aster is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# code_aster is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with code_aster. If not, see <http://www.gnu.org/licenses/>.
# --------------------------------------------------------------------
STTA = FORMULE(identifier='5:2',
NOM_PARA='S',
VALE='TELAS*(1.+2.*cos(2.*S/R))',
R=R,
TELAS=TELAS)

LISABS = DEFI_LIST_REEL(identifier='6:2',
DEBUT=0.0,
INTERVALLE=_F(JUSQU_A=SMAX,
NOMBRE=30))

STTAC = CALC_FONC_INTERP(identifier='7:2',
FONCTION=STTA,
INTERPOL='LIN',
LIST_PARA=LISABS,
NOM_PARA='S',
NOM_RESU='ANALYTIC')

# #######################################################################
#
# POST-TRAITEMENT: VALEURS MAXI DES CONTRAINTES EQUIVALENTES ET DES
# VARIABLES INTERNES
#
# #######################################################################
# CONTRAINTES EQUIVALENTES AUX POINTS DE GAUSS
RESUNL = CALC_CHAMP(identifier='9:2',
reuse=RESUNL,
CRITERES='SIEQ_ELGA',
RESULTAT=RESUNL)

# #######################################################################
#
# POST-TRAITEMENT: CONTRAINTES SUR LA LIGNE DU BAS
#
# #######################################################################
# EXTRACTION VALEURS
SIGBAS = MACR_LIGN_COUPE(identifier='11:2',
LIGN_COUPE=_F(COOR_EXTR=(100, 0),
COOR_ORIG=(10, 0),
NB_POINTS=30),
NOM_CHAM='SIGM_ELNO',
RESULTAT=RESUNL)

# #######################################################################
#
# POST-TRAITEMENT: CONTRAINTES SUR LE BORD DU TROU EN ELASTICITE
#
# #######################################################################
STHETA = MACR_LIGN_COUPE(identifier='13:2',
INST=TELAS,
LIGN_COUPE=_F(GROUP_MA='trou',
INTITULE='STHETA',
MAILLAGE=MAIL,
OPERATION='EXTRACTION',
REPERE='POLAIRE',
TYPE='GROUP_MA'),
NOM_CHAM='SIGM_ELNO',
RESULTAT=RESUNL)

# #######################################################################
#
# POST-TRAITEMENT: COURBE FORCE RESULTANTE EN HAUT EN FONCTION
# DU DEPLACEMENT
#
# #######################################################################
# CALCUL DES FORCES NODALES
RESUNL = CALC_CHAMP(identifier='15:2',
reuse=RESUNL,
FORCE='FORC_NODA',
RESULTAT=RESUNL)

FHAUT = MACR_LIGN_COUPE(identifier='16:2',
LIGN_COUPE=_F(GROUP_MA='haut',
INTITULE='F_HAUT',
MAILLAGE=MAIL,
OPERATION='EXTRACTION',
RESULTANTE=('DX', 'DY', 'DZ'),
TYPE='GROUP_MA'),
NOM_CHAM='FORC_NODA',
RESULTAT=RESUNL)

# #######################################################################
#
# POST-TRAITEMENT: COURBE SIYY AU POINT G EN FONCTION DU DEPLACEMENT
#
# #######################################################################
# EXTRACTION VALEURS
DYG = RECU_FONCTION(identifier='18:2',
GROUP_NO='G',
NOM_CHAM='DEPL',
NOM_CMP='DY',
RESULTAT=RESUNL)

SYG = RECU_FONCTION(identifier='19:2',
GROUP_NO='G',
NOM_CHAM='SIGM_NOEU',
NOM_CMP='SIYY',
RESULTAT=RESUNL)

# COURBES AVEC XMGRACE
IMPR_FONCTION(identifier='21:2',
BORNE_X=(0.0, 2.5),
BORNE_Y=(0.0, 250.0),
COURBE=_F(FONC_X=DYG,
FONC_Y=SYG),
FORMAT='XMGRACE',
GRILLE_X=0.5,
GRILLE_Y=50.0,
LEGENDE_X='Deplacement DY au point G',
LEGENDE_Y='Contraine SIGMAYY',
TITRE='SigmaYY en fonction de DY au point G ',
UNITE=29)

# IMPRESSION TABLE
IMPR_TABLE(identifier='23:2',
FILTRE=_F(NOM_PARA='INST',
VALE=TFIN),
NOM_PARA=('ABSC_CURV', 'SIYY'),
TABLE=SIGBAS,
UNITE=7)

# IMPRESSION DE LA TABLE
IMPR_TABLE(identifier='25:2',
FORMAT='TABLEAU',
TABLE=STHETA,
UNITE=9)

# RECUPERATION DE LA FONCTION SIYY = F(ABSC_CURV)
STCALC = RECU_FONCTION(identifier='27:2',
INTERPOL='LIN',
PARA_X='ABSC_CURV',
PARA_Y='SIYY',
PROL_DROITE='CONSTANT',
PROL_GAUCHE='CONSTANT',
TABLE=STHETA)

# COMPARAISON ANALYTIQUE/NUMERIQUE
IMPR_FONCTION(identifier='29:2',
BORNE_X=(0.0, 20.0),
BORNE_Y=(-10.0, 40.0),
COURBE=(_F(FONCTION=STCALC,
LEGENDE='Aster',
MARQUEUR=2,
STYLE=1),
_F(FONCTION=STTAC,
LEGENDE='Analytique',
MARQUEUR=1,
STYLE=1)),
FORMAT='XMGRACE',
GRILLE_X=5.0,
GRILLE_Y=10.0,
LEGENDE_X='Abscisse curviligne',
LEGENDE_Y='Contraine Sigma Theta-Theta',
TITRE='Sigma Theta-Theta le long de larc de cercle',
UNITE=8)

# EXTRACTION VALEURS
DYG2 = RECU_FONCTION(identifier='31:2',
GROUP_NO='G',
NOM_CHAM='DEPL',
NOM_CMP='DY',
RESULTAT=RESUNL)

F_FY_G = RECU_FONCTION(identifier='32:2',
INTERPOL='LIN',
PARA_X='INST',
PARA_Y='DY',
TABLE=FHAUT)

# COURBES AVEC XMGRACE
IMPR_FONCTION(identifier='34:2',
BORNE_X=(0.0, 2.5),
BORNE_Y=(0.0, 25000.0),
COURBE=_F(FONC_X=DYG2,
FONC_Y=F_FY_G),
FORMAT='XMGRACE',
GRILLE_X=0.5,
GRILLE_Y=5000.0,
LEGENDE_X='Déplacement DY au point G',
LEGENDE_Y='Résultante FY sur FG',
TITRE='Resultante de Fy(FG) fonction de Dy(G)',
UNITE=10)

FIN(identifier='35:2',
)

作業中

コメント

タイトルとURLをコピーしました