Difference between revisions of "Contrib:KeesWouters/shell/tables"

From CAELinuxWiki
Jump to: navigation, search
m ('''Reactions forces''')
m ('''Reactions forces - resultant''')
Line 121: Line 121:
 
  * NodalForces      * resu    * FORC_NODA        *            1 *  0.00000E+00 * -1.35387E-08 *  2.63751E-08 *  4.90339E+06 * -            * -            * -            * -            * -            * -           
 
  * NodalForces      * resu    * FORC_NODA        *            1 *  0.00000E+00 * -1.35387E-08 *  2.63751E-08 *  4.90339E+06 * -            * -            * -            * -            * -            * -           
 
  * moments          * resu    * REAC_NODA        *            1 *  0.00000E+00 * -            * -            * -            * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 *  3.06316E+07 * -3.53025E+07 *  2.91360E-07
 
  * moments          * resu    * REAC_NODA        *            1 *  0.00000E+00 * -            * -            * -            * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 *  3.06316E+07 * -3.53025E+07 *  2.91360E-07
 +
''* moments          * resu    * REAC_NODA        *            1 *  0.00000E+00 * -            * -            * -            * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 *  1.91375E+01 *  1.05470E+01 *  2.43516E-08''
  
 
Note:<br/>
 
Note:<br/>
The last row is created by changing the the reference point of the moments to POINT=[xc=My/Rz, yc=-Mx/Rz,zc=0]=[7.003964,6.077264,0.0,] yields the following -nearly zero- moments. This means that my calculator is still alright.
+
The last row is created by changing the the reference point of the moments to POINT=[xc=My/Rz, yc=-Mx/Rz,zc=0]=[7.003964,6.077264,0.0,] yields the -nearly zero- moments of the last row. This means that my calculator is still alright.
 
+
''* moments          * resu    * REAC_NODA        *            1 *  0.00000E+00 * -            * -            * -            * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 *  1.91375E+01 *  1.05470E+01 *  2.43516E-08''
+
  
 
==='''Reactions forces at each node'''===
 
==='''Reactions forces at each node'''===

Revision as of 16:57, 19 March 2010

Static shell - generation of tables

[ .... under construction .... ]

This contribution is in close cooperation with Bridge.

This contribution is based on this static shell problem. The pre processing and calculation part is described there in detail. Here we focus on the extraction of quantities by using tables.

See this part for:

  • preproccesing:
    • definition of geometry in Salome
    • partitioning of the geometry and groups
    • meshing of the geometry
    • definition of the groups
  • static analysis with pressure or force applied on a group or nodes
  • postprocessing in Salome:
    • view displacement
    • view local and equivalent stresses

Now we focus on:

  • determination of stresses


Tables - general

Summary of the construction:
We have a trapezium concrete plate that has been modeled as shell. The left side is supported in three direction (DX=DY=DZ=0.0) and right is supported in the out of plane direction (DZ=0.0). On the shell itself various pressure loads are applied on the groups Ftop, Fbot, Fmain, Fcentre1 and Fcentre2.

Reactions forces - resultant

For the load case:

load_bc=AFFE_CHAR_MECA(MODELE=modmod,
                      DDL_IMPO=(_F(GROUP_MA=('Lleft',),
                                   DX=0.0,
                                   DY=0.0,
                                   DZ=0.0,),
                                _F(GROUP_MA='Lright',
                                   DZ=0.0,),),
                      FORCE_COQUE=(_F(GROUP_MA=('Fcentre1','Fcentre2'),PRES=182.6e3,),
                                   _F(GROUP_MA=('Ftop' ),PRES=24.3e3,),
                                   _F(GROUP_MA=('Fbot' ),PRES=29.5e3,),
                                   _F(GROUP_MA=('Fmain'),PRES=25.8e3,),),);

the nodal and reaction forces are determined by:

resu=CALC_NO(reuse =resu,
             RESULTAT=resu,
             OPTION= ('FORC_NODA','REAC_NODA',),);

In the command DEFI_GROUP groups of nodes [GROUP_NO] 'Nleft' and 'Nright' are created from the geometrical defined edges [GROUP_MA] 'Lleft' and 'Lright'. Later on they are united into a group of nodes 'Nsupport' by UNION. This is required because the creation of a table by POST_RELEVE_T needs a group of nodes.

meshmod=DEFI_GROUP(reuse =meshmod,
             MAILLAGE=meshmod,
             CREA_GROUP_NO=(_F(NOM='Nleft',GROUP_MA=('Lleft',),),
                            _F(NOM='Nright',GROUP_MA=('Lright',),),),);
meshmod=DEFI_GROUP(reuse =meshmod,
             MAILLAGE=meshmod,
             CREA_GROUP_NO=_F(NOM='Nsupport',UNION=('Nleft','Nright',),),);

Now determine a table for nodal reaction forces TB_nodf. The values are stored in REAC_NODA and FORC_NODA fields (champ). The forces are determined on the supported area Nsupport. The table is actually written to a file by IMPR_TABLE. The main parameters are:

  • OPERATION='EXTRACTION': extract quantities from a result field
  • RESULTAT=resu: calculated result field from eg a static calculation
  • NOM_CHAM='REAC_NODA'/'FORC_NODA': specific field determined eg by CALC_ELEM/CALC_NODE
  • TOUT_ORDRE='OUI': for all calculated time instances (just one in this case)
  • GROUP_NO='Nsupport': choice of group of nodes
  • one of the following:
    • RESULTANTE=('DX',DY','DZ')
      • extract resultante of the requested quantity in given direction
    • NOM_CMP='DZ',
      • extract for each node the component in the given direction, for moments
        • MOMENT=('DRX','DRY','DRZ',): components in given direction
        • POINT=(0.0,0.0,0.0,),),): reference point for determination of moments

In this case extract the reaction forces, nodal forces and moments with respect to the origin [0,0,0]:

TB_nodf=POST_RELEVE_T(ACTION=(_F(OPERATION='EXTRACTION',
                                  INTITULE='ReactionForces',
                                  RESULTAT=resu,
                                  NOM_CHAM='REAC_NODA',
                                  TOUT_ORDRE='OUI',
                                  GROUP_NO='Nsupport',
                                  RESULTANTE=('DX','DY','DZ',),
                                  MOYE_NOEUD='NON',),
                              _F(OPERATION='EXTRACTION',
                                  INTITULE='NodalForces',
                                  RESULTAT=resu,
                                  NOM_CHAM='FORC_NODA',
                                  TOUT_ORDRE='OUI',
                                  GROUP_NO='Nsupport',
                                  RESULTANTE=('DX','DY','DZ',),
                                  MOYE_NOEUD='NON',),
                              _F(OPERATION='EXTRACTION',
                                  INTITULE='moments',
                                  RESULTAT=resu,
                                  NOM_CHAM='FORC_NODA',
                                  GROUP_NO='Nsupport',
                                  RESULTANTE=('DX','DY','DZ',),
                                  MOMENT=('DRX','DRY','DRZ',),
                                  POINT=(0.0,0.0,0.0,),),),
                            TITRE='Reactions',);

Writing the content of the table to a file (fort.26, define in ASTK) by IMPR_TABLE with main parameters:

  • TABLE=TB_nodf: previously defined table
  • FORMAT='TABLEAU'
  • UNITE=26: file unit number
  • SEPARATEUR=' * ': seperator in the text file
IMPR_TABLE(TABLE=TB_nodf,
        FORMAT='TABLEAU',
        UNITE=26,
        SEPARATEUR=' * ',
        TITRE='reaction forces at nodes on group Nsupport');

The reaction and nodal forces on the supporting edges are: [loads * areas: 24.3 * 7.966 + 182.6 * 6.0249 * 2 + 25.8 * 73.3 + 29.5 * 25.605 = 5040.4 kN = 5.040E+06 N]

#quantities at edges - nodes Nsupport
#Reactions 
* INTITULE         * RESU     * NOM_CHAM         * NUME_ORDRE   * INST         * DX           * DY           * DZ           * RESULT_X     * RESULT_Y     * RESULT_Z     * MOMENT_X     * MOMENT_Y     * MOMENT_Z    
* ReactionForces   * resu     * REAC_NODA        *            1 *  0.00000E+00 * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 * -            * -            * -            * -            * -            * -           
* NodalForces      * resu     * FORC_NODA        *            1 *  0.00000E+00 * -1.35387E-08 *  2.63751E-08 *  4.90339E+06 * -            * -            * -            * -            * -            * -           
* moments          * resu     * REAC_NODA        *            1 *  0.00000E+00 * -            * -            * -            * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 *  3.06316E+07 * -3.53025E+07 *  2.91360E-07
* moments          * resu     * REAC_NODA        *            1 *  0.00000E+00 * -            * -            * -            * -1.35387E-08 *  2.63751E-08 *  5.04036E+06 *  1.91375E+01 *  1.05470E+01 *  2.43516E-08

Note:
The last row is created by changing the the reference point of the moments to POINT=[xc=My/Rz, yc=-Mx/Rz,zc=0]=[7.003964,6.077264,0.0,] yields the -nearly zero- moments of the last row. This means that my calculator is still alright.

Reactions forces at each node

In stead of the resultant reaction force you can also write the reaction force at each node to a table and file. Use NOM_CMP=(...,'DZ') to replace RESULTANTE=(...,'DZ') in the previous command:

TB_nodf=POST_RELEVE_T(ACTION=_F(OPERATION='EXTRACTION',
                                  INTITULE='ReactionForces',
                                  RESULTAT=resu,
                                  NOM_CHAM='REAC_NODA',
                                  TOUT_ORDRE='OUI',
                                  GROUP_NO='Nsupport',
                                  NOM_CMP='DZ',
                                  MOYE_NOEUD='NON',),
                       TITRE='reaction forces - z at all nodes',);

And the result:

#quantities at edges - nodes Nsupport
#reaction forces - z at all nodes                                                
* INTITULE         * NOEUD    * RESU     * NOM_CHAM         * NUME_ORDRE   * INST         * ABSC_CURV    * COOR_X       * COOR_Y       * COOR_Z       * DZ          
* ReactionForces   * N27      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  0.00000E+00 *  1.42861E+00 *  7.42875E+00 *  0.00000E+00 *  3.12903E+05
* ReactionForces   * N31      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  5.27364E+00 *  4.32692E-01 *  2.25000E+00 *  0.00000E+00 *  1.42424E+05
* ReactionForces   * N48      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.32675E+01 *  1.94231E+00 *  1.01000E+01 *  0.00000E+00 *  2.46064E+05
* ReactionForces   * N56      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  2.01959E+01 *  6.33894E-01 *  3.29625E+00 *  0.00000E+00 *  2.05100E+05
* ReactionForces   * N67      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  2.24069E+01 *  2.16346E-01 *  1.12500E+00 *  0.00000E+00 *  1.69819E+05
* ReactionForces   * N110     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  2.56834E+01 *  8.35096E-01 *  4.34250E+00 *  0.00000E+00 *  1.50752E+05
* ReactionForces   * N182     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  3.11900E+01 *  1.87500E+00 *  9.75000E+00 *  0.00000E+00 *  9.09171E+04
* ReactionForces   * N193     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  3.45733E+01 *  1.23606E+00 *  6.42750E+00 *  0.00000E+00 *  7.97917E+04
* ReactionForces   * N208     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  3.72846E+01 *  1.74808E+00 *  9.09000E+00 *  0.00000E+00 *  1.75635E+05
* ReactionForces   * N210     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  4.10575E+01 *  1.03558E+00 *  5.38500E+00 *  0.00000E+00 *  2.74874E+05
* ReactionForces   * N270     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  4.41583E+01 *  1.62115E+00 *  8.43000E+00 *  0.00000E+00 *  1.25480E+05
* ReactionForces   * N271     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  5.27428E+01 *  0.00000E+00 *  0.00000E+00 *  0.00000E+00 *  5.27529E+04
* ReactionForces   * N290     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  6.33843E+01 *  2.00962E+00 *  1.04500E+01 *  0.00000E+00 *  4.29332E+05
* ReactionForces   * N9       * resu     * REAC_NODA        *            1 *  0.00000E+00 *  7.67582E+01 *  1.15963E+01 *  1.12500E+00 *  0.00000E+00 *  1.92612E+05
* ReactionForces   * N40      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  8.55412E+01 *  1.32550E+01 *  9.75000E+00 *  0.00000E+00 *  6.59317E+04
* ReactionForces   * N50      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  9.54698E+01 *  1.13800E+01 *  0.00000E+00 *  0.00000E+00 *  2.57970E+05
* ReactionForces   * N81      * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.00006E+02 *  1.22367E+01 *  4.45500E+00 *  0.00000E+00 *  1.64125E+05
* ReactionForces   * N119     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.01129E+02 *  1.20247E+01 *  3.35250E+00 *  0.00000E+00 *  2.92612E+05
* ReactionForces   * N126     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.02252E+02 *  1.18127E+01 *  2.25000E+00 *  0.00000E+00 *  1.88369E+05
* ReactionForces   * N152     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.10602E+02 *  1.33896E+01 *  1.04500E+01 *  0.00000E+00 *  8.85387E+04
* ReactionForces   * N161     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.14469E+02 *  1.26593E+01 *  6.65250E+00 *  0.00000E+00 *  1.28900E+05
* ReactionForces   * N206     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.15588E+02 *  1.24480E+01 *  5.55375E+00 *  0.00000E+00 *  3.91612E+05
* ReactionForces   * N209     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.20218E+02 *  1.33223E+01 *  1.01000E+01 *  0.00000E+00 *  1.63694E+05
* ReactionForces   * N241     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.22701E+02 *  1.28533E+01 *  7.66125E+00 *  0.00000E+00 *  3.70568E+05
* ReactionForces   * N243     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.23728E+02 *  1.30473E+01 *  8.67000E+00 *  0.00000E+00 *  1.13136E+05
* ReactionForces   * N304     * resu     * REAC_NODA        *            1 *  0.00000E+00 *  1.24278E+02 *  1.31512E+01 *  9.21000E+00 *  0.00000E+00 *  1.66448E+05

To write the reaction forces to a med file and display them in Salome you can use:

IMPR_RESU(UNITE=80,
        FORMAT='MED',
        MODELE=modmod,
        RESU=(_F(MAILLAGE=meshmod,
                 RESULTAT=resu,
                 NOM_CHAM=('REAC_NODA',),),),);


Note the the pressures have reversed sign here for nicer visual effect.

Def rea.jpg

Extraction of maximum displacements and stresses

The OPERATION='EXTREMA' calculates the MIN, MAX, MIN_ABS, MAX_ABS values of a requested field on the geometrical area.
See http://www.code-aster.org/V2/doc/v9/man_u/u4/u4.81.21.pdf

TB_nodf=POST_RELEVE_T(ACTION=(_F(OPERATION='EXTREMA',
                                INTITULE='displacements dz',
                                RESULTAT=resu,
                                NOM_CHAM='DEPL',
                                TOUT_ORDRE='OUI',
                                GROUP_NO='Nsupport',
                                NOM_CMP='DZ',),
                            _F(OPERATION='EXTREMA',
                                INTITULE='equiss NOEU',
                                RESULTAT=resuSUP,
                                NOM_CHAM='EQUI_NOEU_SIGM',
                                TOUT_ORDRE='OUI',
                                GROUP_NO='Nsupport',
                                NOM_CMP=('VMIS','TRESCA','PRIN_1','PRIN_2','PRIN_3',),),
                            _F(OPERATION='EXTREMA',
                                INTITULE='equiss ELNO',
                                RESULTAT=resuSUP,
                                NOM_CHAM='EQUI_ELNO_SIGM',
                                TOUT_ORDRE='OUI',
                                GROUP_NO='Nsupport',
                                NOM_CMP=('VMIS','TRESCA','PRIN_1','PRIN_2','PRIN_3',),),
                            _F(OPERATION='EXTREMA',
                                INTITULE='local stresses',
                                RESULTAT=resuSUP,
                                NOM_CHAM='SIGM_NOEU_DEPL',
                                TOUT_ORDRE='OUI',
                                GROUP_NO='Nsupport',
                                NOM_CMP=('SIXX','SIYY','SIXY',),),),
                      TITRE='Min/max of displacement DZ - stresses',);


#extreme displacements on group allnodes
#Min/max of displacement  DZ  - stresses 
* INTITULE         * RESU     * NOM_CHAM         * NUME_ORDRE   * EXTREMA  * MAILLE   * NOEUD    * CMP      * VALE        
* displacements dz * resu     * DEPL             *            1 * MAX      * -        * N241     * DZ       *  1.94659E-19
* displacements dz * resu     * DEPL             *            1 * MIN      * -        * N115     * DZ       * -2.91659E-02
* displacements dz * resu     * DEPL             *            1 * MAX_ABS  * -        * N115     * DZ       *  2.91659E-02
* displacements dz * resu     * DEPL             *            1 * MIN_ABS  * -        * N152     * DZ       *  4.74802E-22
* equiss NOEU      * resuSUP  * EQUI_NOEU_SIGM   *            1 * MAX      * -        * N107     * TRESCA   *  1.99754E+07
* equiss NOEU      * resuSUP  * EQUI_NOEU_SIGM   *            1 * MIN      * -        * N182     * PRIN_1   * -3.00400E+06
* equiss NOEU      * resuSUP  * EQUI_NOEU_SIGM   *            1 * MAX_ABS  * -        * N107     * TRESCA   *  1.99754E+07
* equiss NOEU      * resuSUP  * EQUI_NOEU_SIGM   *            1 * MIN_ABS  * -        * N35      * PRIN_2   *  1.32964E+03
* equiss ELNO      * resuSUP  * EQUI_ELNO_SIGM   *            1 * MAX      * M204     * N107     * TRESCA   *  2.02489E+07
* equiss ELNO      * resuSUP  * EQUI_ELNO_SIGM   *            1 * MIN      * M125     * N123     * PRIN_1   * -6.08974E+06
* equiss ELNO      * resuSUP  * EQUI_ELNO_SIGM   *            1 * MAX_ABS  * M204     * N107     * TRESCA   *  2.02489E+07
* equiss ELNO      * resuSUP  * EQUI_ELNO_SIGM   *            1 * MIN_ABS  * M69      * NS1      * VMIS     *  0.00000E+00
* local stresses   * resuSUP  * SIGM_NOEU_DEPL   *            1 * MAX      * -        * N107     * SIXX     *  1.97055E+07
* local stresses   * resuSUP  * SIGM_NOEU_DEPL   *            1 * MIN      * -        * N81      * SIXY     * -9.99157E+05
* local stresses   * resuSUP  * SIGM_NOEU_DEPL   *            1 * MAX_ABS  * -        * N107     * SIXX     *  1.97055E+07
* local stresses   * resuSUP  * SIGM_NOEU_DEPL   *            1 * MIN_ABS  * -        * N250     * SIYY     *  1.87510E+04

Note that the minimum and maximum values of the local stresses are taken over the complete group denoted by the NOM_CMP=('VMIS','TRESCA','PRIN_1','PRIN_2','PRIN_3',)
So if you want the minimum and maximum values seperately, take only one component for each extration of the extreme values, eg; NOM_CMP='DZ'


..... .....