Nastran to Code_Aster : normal modes

In this post we will have a look at a simple linear modal analysis.

This case is taken from a publicy available example on the internet, but the original source is probably this one, for all due credit.
To read this article one will need some knowledge both in Nastran and in Code_Aster.

prob19

The translation between Nastran and Code_Aster can be made by using the following correspondances :

Nastran keyword Code_Aster keyword
BEGIN DEBUT
SOL 103 + SUBCASE(METHOD=1) ASSEMBLAGE + CALC_MODES(SOLVEUR_MODAL =_F(METHODE=’TRI_DIAG’),)
TIME 600 See “prob19.export” file, line “A tpmax 600
EIGRL CALC_MODES(OPTION=’PLUS_PETITE’,CALC_FREQ=_F(NMAX_FREQ=5),)
PSHELL AFFE_MODELE(MODELISATION=’DKT‘), AFFE_CARA_ELEM(COQUE_F(EPAIS)) + AFFE_MATERIAU
CQUAD4 See “prob19.mail” file: QUAD4 + AFFE_CARA_ELEM(COQUE=_F(GROUPMA))
MAT1 DEFI_MATERIAU(ELAS)
GRID See “prob19.mail” file: COOR_3D
SPC1 AFFE_CHAR_MECA(DDL_IMPO)
ENDDATA FIN

After the calculation we can find the frequencies for the first five modes and compare them with the Nastran results :

prob19res

Here is the corresponding mode from Code_Aster results :prob19mode1

Here is a table of comparison between Nastran and Code_Aster results for this case (Nastran values are taken from the pdf file above) :

Mode Nastran Frequency Code_Aster Frequency Diff %
1 133.6996 133.75689075 0.04%
2 689.7916 698.719757183 1.29%
3 843.8915 837.469216421 0.76%
4 2212.03 2220.53352351 0.75%
5 2379.052 2361.13583993 0.75%

First of all, let’s see the Nastran code (file “prob19.dat”) for this exemple :


ID SEMINAR, PROB19
SOL 103
TIME 600
CEND
TITLE = NORMAL MODES EXAMPLE
ECHO = UNSORTED
SUBCASE 1
 SUBTITLE= USING LANCZOS
 METHOD = 1
 SPC = 1
$VECTOR=ALL
BEGIN BULK
PARAM,COUPMASS,1
PARAM,WTMASS,.00259
EIGRL,1,5,
PSHELL,1,1,.1,1,,1
CQUAD4,1,1,1,2,13,12
=,*1,=,*1,*1,*1,*1
=8
CQUAD4,11,1,12,13,24,23
=,*1,=,*1,*1,*1,*1
=8
CQUAD4,21,1,23,24,35,34
=,*1,=,*1,*1,*1,*1
=8
CQUAD4,31,1,34,35,46,45
=,*1,=,*1,*1,*1,*1
=8
MAT1,1,3.+7,.3,,.282
GRID,1,,0.,0.,0.
=,*1,=,*0.5,=,=
=9
GRID,12,,0.,.5,0.
=,*1,=,*0.5,=,=
=9
GRID,23,,0.,1.,0.
=,*1,=,*0.5,=,=
=9
GRID,34,,0.,1.5,0.
=,*1,=,*0.5,=,=
=9
GRID,45,,0.,2.,0.
=,*1,=,*0.5,=,=
=9
SPC1,1,12345,1,12,23,34,45
ENDDATA 

In Code_Aster, you will need to create distinct files for the mesh and the commands. Let’s start with the main mesh file (file “prob19.mail”) :

prob19mail


TITRE    
	prob19
	NORMAL MODES EXAMPLE
FINSF

COOR_3D

	N1  0.0000000000e+00 0.0000000000e+00 0.0000000000e+00
	N2  5.0000000000e-01 0.0000000000e+00 0.0000000000e+00
	N13  5.0000000000e-01 5.0000000000e-01 0.0000000000e+00
	N12  0.0000000000e+00 5.0000000000e-01 0.0000000000e+00
	N3  1.0000000000e+00 0.0000000000e+00 0.0000000000e+00
	N14  1.0000000000e+00 5.0000000000e-01 0.0000000000e+00
	N10  4.5000000000e+00 0.0000000000e+00 0.0000000000e+00
	N11  5.0000000000e+00 0.0000000000e+00 0.0000000000e+00
	N22  5.0000000000e+00 5.0000000000e-01 0.0000000000e+00
	N21  4.5000000000e+00 5.0000000000e-01 0.0000000000e+00
	N9  4.0000000000e+00 0.0000000000e+00 0.0000000000e+00
	N20  4.0000000000e+00 5.0000000000e-01 0.0000000000e+00
	N8  3.5000000000e+00 0.0000000000e+00 0.0000000000e+00
	N19  3.5000000000e+00 5.0000000000e-01 0.0000000000e+00
	N7  3.0000000000e+00 0.0000000000e+00 0.0000000000e+00
	N18  3.0000000000e+00 5.0000000000e-01 0.0000000000e+00
	N6  2.5000000000e+00 0.0000000000e+00 0.0000000000e+00
	N17  2.5000000000e+00 5.0000000000e-01 0.0000000000e+00
	N5  2.0000000000e+00 0.0000000000e+00 0.0000000000e+00
	N16  2.0000000000e+00 5.0000000000e-01 0.0000000000e+00
	N4  1.5000000000e+00 0.0000000000e+00 0.0000000000e+00
	N15  1.5000000000e+00 5.0000000000e-01 0.0000000000e+00
	N24  5.0000000000e-01 1.0000000000e+00 0.0000000000e+00
	N23  0.0000000000e+00 1.0000000000e+00 0.0000000000e+00
	N25  1.0000000000e+00 1.0000000000e+00 0.0000000000e+00
	N33  5.0000000000e+00 1.0000000000e+00 0.0000000000e+00
	N32  4.5000000000e+00 1.0000000000e+00 0.0000000000e+00
	N31  4.0000000000e+00 1.0000000000e+00 0.0000000000e+00
	N30  3.5000000000e+00 1.0000000000e+00 0.0000000000e+00
	N29  3.0000000000e+00 1.0000000000e+00 0.0000000000e+00
	N28  2.5000000000e+00 1.0000000000e+00 0.0000000000e+00
	N27  2.0000000000e+00 1.0000000000e+00 0.0000000000e+00
	N26  1.5000000000e+00 1.0000000000e+00 0.0000000000e+00
	N35  5.0000000000e-01 1.5000000000e+00 0.0000000000e+00
	N34  0.0000000000e+00 1.5000000000e+00 0.0000000000e+00
	N36  1.0000000000e+00 1.5000000000e+00 0.0000000000e+00
	N44  5.0000000000e+00 1.5000000000e+00 0.0000000000e+00
	N43  4.5000000000e+00 1.5000000000e+00 0.0000000000e+00
	N42  4.0000000000e+00 1.5000000000e+00 0.0000000000e+00
	N41  3.5000000000e+00 1.5000000000e+00 0.0000000000e+00
	N40  3.0000000000e+00 1.5000000000e+00 0.0000000000e+00
	N39  2.5000000000e+00 1.5000000000e+00 0.0000000000e+00
	N38  2.0000000000e+00 1.5000000000e+00 0.0000000000e+00
	N37  1.5000000000e+00 1.5000000000e+00 0.0000000000e+00
	N46  5.0000000000e-01 2.0000000000e+00 0.0000000000e+00
	N45  0.0000000000e+00 2.0000000000e+00 0.0000000000e+00
	N47  1.0000000000e+00 2.0000000000e+00 0.0000000000e+00
	N55  5.0000000000e+00 2.0000000000e+00 0.0000000000e+00
	N54  4.5000000000e+00 2.0000000000e+00 0.0000000000e+00
	N53  4.0000000000e+00 2.0000000000e+00 0.0000000000e+00
	N52  3.5000000000e+00 2.0000000000e+00 0.0000000000e+00
	N51  3.0000000000e+00 2.0000000000e+00 0.0000000000e+00
	N50  2.5000000000e+00 2.0000000000e+00 0.0000000000e+00
	N49  2.0000000000e+00 2.0000000000e+00 0.0000000000e+00
	N48  1.5000000000e+00 2.0000000000e+00 0.0000000000e+00
FINSF


QUAD4 

 E1  N1 N2 N13 N12
 E2  N2 N3 N14 N13
 E10  N10 N11 N22 N21
 E9  N9 N10 N21 N20
 E8  N8 N9 N20 N19
 E7  N7 N8 N19 N18
 E6  N6 N7 N18 N17
 E5  N5 N6 N17 N16
 E4  N4 N5 N16 N15
 E3  N3 N4 N15 N14
 E11  N12 N13 N24 N23
 E12  N13 N14 N25 N24
 E20  N21 N22 N33 N32
 E19  N20 N21 N32 N31
 E18  N19 N20 N31 N30
 E17  N18 N19 N30 N29
 E16  N17 N18 N29 N28
 E15  N16 N17 N28 N27
 E14  N15 N16 N27 N26
 E13  N14 N15 N26 N25
 E21  N23 N24 N35 N34
 E22  N24 N25 N36 N35
 E30  N32 N33 N44 N43
 E29  N31 N32 N43 N42
 E28  N30 N31 N42 N41
 E27  N29 N30 N41 N40
 E26  N28 N29 N40 N39
 E25  N27 N28 N39 N38
 E24  N26 N27 N38 N37
 E23  N25 N26 N37 N36
 E31  N34 N35 N46 N45
 E32  N35 N36 N47 N46
 E40  N43 N44 N55 N54
 E39  N42 N43 N54 N53
 E38  N41 N42 N53 N52
 E37  N40 N41 N52 N51
 E36  N39 N40 N51 N50
 E35  N38 N39 N50 N49
 E34  N37 N38 N49 N48
 E33  N36 N37 N48 N47 
FINSF




GROUP_MA NOM = G1
    % Original part : 1
  E1 E10 E11 E12 E13 E14 E15 
  E16 E17 E18 E19 E2 E20 E21 
  E22 E23 E24 E25 E26 E27 E28 
  E29 E3 E30 E31 E32 E33 E34 
  E35 E36 E37 E38 E39 E4 E40 
  E5 E6 E7 E8 E9
FINSF

FIN

Then, the command file (file “prob19.comm”) :


# prob19
# NORMAL MODES EXAMPLE

DEBUT(PAR_LOT='NON',
      ERREUR=_F(ERREUR_F='ABORT',),
      IGNORE_ALARM=('SUPERVIS_1','MODELISA4_8',),);

MAIL=LIRE_MAILLAGE(FORMAT='ASTER',
                   VERI_MAIL=_F(VERIF='OUI',),);

MODMECA=AFFE_MODELE(MAILLAGE=MAIL,
                    AFFE=_F(GROUP_MA='G1',
                            PHENOMENE='MECANIQUE',
                            MODELISATION='DKT',),);

MAT00001=DEFI_MATERIAU(ELAS=_F(E=30000000.0,
                               NU=0.3,
                               RHO=0.00073038,),);

CHMAT=AFFE_MATERIAU(MAILLAGE=MAIL,
                    AFFE=_F(GROUP_MA='G1',
                            MATER=MAT00001,),);

B1P0=AFFE_CHAR_MECA(MODELE=MODMECA,
                    DDL_IMPO=_F(NOEUD=('N12','N1','N45','N34','N23',),
                                DX=0.0,
                                DY=0.0,
                                DZ=0.0,
                                DRX=0.0,
                                DRY=0.0,),);

CAEL=AFFE_CARA_ELEM(MODELE=MODMECA,
                    COQUE=_F(GROUP_MA='G1',
                             EPAIS=0.1,
                             VECTEUR=(0.9,0.1,0.2,),
                             COQUE_NCOU=1,),);

ASSEMBLAGE(MODELE=MODMECA,
           CHAM_MATER=CHMAT,
           CARA_ELEM=CAEL,
           CHARGE=B1P0,
           NUME_DDL=CO('NUMEDDL1'),
           MATR_ASSE=(_F(MATRICE=CO('RIGI1'),
                         OPTION='RIGI_MECA',),
                      _F(MATRICE=CO('MASS1'),
                         OPTION='MASS_MECA',),),);

RESU1=CALC_MODES(SOLVEUR_MODAL =_F(METHODE='TRI_DIAG'),
                       MATR_RIGI=RIGI1,
                       MATR_MASS=MASS1,
                       OPTION='PLUS_PETITE',
                       CALC_FREQ=_F(NMAX_FREQ=5),
                       SOLVEUR=_F(METHODE='MUMPS',
                                  NPREC=8,),
                       VERI_MODE=_F(STOP_ERREUR='NON',),);

TEST_RESU(RESU=(_F(NUME_ORDRE=1,
                  PARA='FREQ',
                  RESULTAT=RESU1,
                  VALE_CALC=133.6996,
                  TOLE_MACHINE=0.02,
                  ),
               ),);

IMPR_RESU(FORMAT='RESULTAT',
          RESU=_F(RESULTAT=RESU1,
                  NOM_CHAM='DEPL',
                  VALE_MAX='OUI',
                  VALE_MIN='OUI',),);

IMPR_RESU(FORMAT='MED',
          UNITE=80,
          RESU=_F(RESULTAT=RESU1,
                  NOM_CHAM='DEPL',),);

FIN(FORMAT_HDF='OUI',);

You will also need a file to keep everything together ( file “prob19.export”). This file is the one needed to start the calculation on command line (“as_run prob19.export”) :


P actions make_etude
P memory_limit 256.0
P mode interactif
P mpi_nbcpu 1
P mpi_nbnoeud 1
P ncpus 1
P testlist verification sequential
P time_limit 60.0
P version testing
A memjeveux 375.0
A tpmax 172800
P memjob 3072000
P tpsjob 2880
F comm prob19.comm D 1
F mail prob19.mail D 20
F mess prob19.mess R 6
F resu prob19.resu R 8
F rmed prob19.rmed R 81

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s