Welcome to the forums. Please post in English or French.

You are not logged in.

#1 2015-06-22 14:32:21

urs helfenstein
Member
From: Switzerland
Registered: 2015-02-27
Posts: 29

DYNA_VIBRA and excitation by displacement

Hi,

Based on the test case (forma12b) i tried create a harmonic simulation of a tray excited by displacement. In the testcase the exitation was by force.

freq = 70;

DEBUT()

MAIL=LIRE_MAILLAGE(UNITE=20,
                   FORMAT='MED',);

MODELE=AFFE_MODELE(MAILLAGE=MAIL,
                   AFFE=_F(TOUT='OUI',
                           PHENOMENE='MECANIQUE',
                           MODELISATION='3D',),);

steel=DEFI_MATERIAU(ELAS=_F(E=210000.0,
							NU=0.27,
							RHO=7.85e-9,),);

CHMAT=AFFE_MATERIAU(MAILLAGE=MAIL,
                    AFFE=_F(TOUT='OUI',
                            MATER=steel,),);

BLOCAGE=AFFE_CHAR_MECA(MODELE=MODELE,
                       DDL_IMPO=_F(GROUP_MA='fix',
                                   DX=0.0,
                                   ),);

#~ FOSA=AFFE_CHAR_MECA(MODELE=MODELE,
                    #~ PRES_REP=_F(GROUP_MA='fix2',
                                #~ PRES=(0.05),),);

FOSA=AFFE_CHAR_MECA(	MODELE=MODELE,
						DDL_IMPO=_F(	GROUP_MA='fix',
										DY=0.17,
										DZ=0.465,
                                   ),);


ASSEMBLAGE(		
				MODELE=MODELE,
                CHAM_MATER=CHMAT,
                CHARGE=BLOCAGE,
                INFO=2,
                NUME_DDL=CO('NUMEDDL'),
                MATR_ASSE=(_F(MATRICE=CO('RIGIDITE'),
                              OPTION='RIGI_MECA',),
                           _F(MATRICE=CO('MASSE'),
                              OPTION='MASS_MECA',),),
                VECT_ASSE=(_F(VECTEUR=CO("FOAS"),
                              OPTION='CHAR_MECA',
                              CHARGE=FOSA),),
                              );


sin25 = FORMULE(VALE='sin(2*pi*freq *INST)',
                NOM_PARA='INST',);


LIR=DEFI_LIST_REEL(DEBUT=0.0,
                   INTERVALLE=_F(JUSQU_A=0.1,
                                 PAS=1E-3,),);


DYNATRA=DYNA_VIBRA(		TYPE_CALCUL='TRAN',
						BASE_CALCUL='PHYS',
						MATR_MASS=MASSE,
						MATR_RIGI=RIGIDITE,
						SCHEMA_TEMPS=_F(SCHEMA='NEWMARK',),
						EXCIT=_F(
									VECT_ASSE=FOAS,
									FONC_MULT=sin25,
								),
						INCREMENT=_F(LIST_INST=LIR,),);


DEPMOMO=RECU_FONCTION(RESULTAT=DYNATRA,
                      NOM_CHAM='DEPL',
                      NOM_CMP='DZ',
                      GROUP_NO='meassure',);

IMPR_FONCTION(FORMAT='XMGRACE',
              UNITE=29,
              PILOTE='PNG',
              COURBE=_F(FONCTION=DEPMOMO,
                        MARQUEUR=1,),);
                        
                                               

######################################
# PRINT THE RESULTS
######################################

IMPR_RESU(FORMAT='MED',
          RESU=_F(RESULTAT=DYNATRA,),);

FIN();

When I try to calculate it the following error appears:

<S> Exception utilisateur levee mais pas interceptee.                           
Les bases sont fermees.                                                         
Type de l'exception : error                                                     
                                                                                
Erreur Programmeur ou utilisateur :                                             
-----------------------------------                                             
 Le LIGREL    : FOSA    .CHME.LIGRE  référencé par le noeud supplémentaire. : 1 
 de la maille : 1  du resuelem  : _9000017.VE002  du sd_vect_elem : _9000017    
 n'est pas présent  dans le sd_nume_ddl : NUMEDDL                               
                                                                                
Risques & conseils :                                                            
--------------------                                                            
 Si vous utilisez la commande MACRO_ELAS_MULT :                                 
   Si FOSA est une charge contenant des conditions aux limites dualisées        
(DDL_IMPO, ...),                                                                
   Êtes-vous sur d'avoir indiqué cette charge derrière le mot clé               
CHAR_MECA_GLOBAL ?                                                              
   En effet, il faut indiquer TOUTES les charges dualisées derrière             
CHAR_MECA_GLOBAL.                                                               
                                                                                
 Si vous utilisez directement la commande ASSE_VECTEUR :                        
   Si FOSA est une charge contenant des conditions aux limites dualisées        
(DDL_IMPO, ...),                                                                
   Êtes-vous sur d'avoir indiqué cette charge derrière le mot clé CHARGE        
   de la commande CALC_MATR_ELEM/OPTION='RIGI_MECA' ?

Where is the misstake?
Where can I get more information about the command ASSEMBLAGE? I did not find it in the documentation.

Thank you in advance,

Urs


Attachments:
sent.tar.gz, Size: 823.12 KiB, Downloads: 232

Offline

#2 2015-06-22 14:41:51

Johannes_ACKVA
Member
From: Ingenieurbüro für Mechanik, DE
Registered: 2009-11-04
Posts: 738
Website

Re: DYNA_VIBRA and excitation by displacement

Urs,

in dynamics, a displacement can only be used as boundary condition, not as load. Your problem is already answered here:
http://www.code-aster.org/forum2/viewtopic.php?id=20013

Regards,
Johannes_ACKVA


Ingenieurbüro für Mechanik
D 91717 Wassertrüdingen / Germany

www.code-aster.de                                                Training & Support for NASTRAN and CODE-ASTER

Offline

#3 2015-07-07 16:14:32

urs helfenstein
Member
From: Switzerland
Registered: 2015-02-27
Posts: 29

Re: DYNA_VIBRA and excitation by displacement

Thank you Johannes, I implemented the "Large-Mass-Method" and it works.

There is only one concern. In the time domain the model tends to drift away. How is it possible to prevent that. My current solution is to add a term into the formula but to adjust this value until the model does not move away is not the best practice (in the formula below the value 0.105 is adjusted until the model remains in position). The value depends on different parameters like the time step size and my suspicion is that it is cause by a numerical error.

sinAcc = FORMULE(VALE='-displ * omega**2 * sin(omega * INST + pi/2 - 0.105)',
                NOM_PARA='INST',);

Does anybody have an idea to solve this?

Thanks in advance,
Urs


Attachments:
tray.tar.gz, Size: 1.77 MiB, Downloads: 233

Offline