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

You are not logged in.

#1 2010-12-19 17:10:57

dbpatankar
Member
From: Roorkee, Uttarakhand, India
Registered: 2010-05-22
Posts: 172

Trouble understanding PAS_MINI_ELAS

Hi all,

I am unable to understand and implement PAS_MINI_ELAS correctly.

Since the material shown softening behaviour, at peak I must use secant matrix for which I have a keyword PAS_MINI_ELAS.

When I run the model, the first run goes well (obvious because for first run PAS_MINI_ELAS=0.01).

But for the second run (when PAS_MINI_ELAS=0.1) code shows the following error.


   !-----------------------------------------------------------------------------------------------------------!
   ! <EXCEPTION> <CALCULEL_30>                                                                                 !
   !                                                                                                           !
   ! Erreur utilisateur :                                                                                      !
   !   -> Le TYPE_ELEMENT MECA_POU_D_EM  ne sait pas encore calculer l'OPTION:  RIGI_MECA_ELAS.                !
   !                                                                                                           !
   !   -> Risques & Conseils :                                                                                 !
   !    * Si vous utilisez une commande de "calcul" (THER_LINEAIRE, STAT_NON_LINE, ...), il n'y a pas          !
   !      moyen de contourner ce problme.Il faut changer de modlisation ou  mettre une demande d'volution. !
   !                                                                                                           !
   !    * Si c'est un calcul de post-traitement, vous pouvez sans doute "viter" le problme                   !
   !      en ne faisant le post-traitement que sur les mailles qui savent le faire.                            !
   !      Pour cela, il faut sans doute utiliser un mot cl de type "GROUP_MA".                                !
   !      S'il n'y en a pas, il faut faire une demande d'volution.                                            !
   !-----------------------------------------------------------------------------------------------------------!

Here follows the relevant code snippet

	

error = 1.E-4;
max_iter = 100;

    if i<=i_lim:
		LNST[i]=DEFI_LIST_REEL(DEBUT=0.0+i,
		INTERVALLE=(_F(JUSQU_A=0.1+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.2+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.3+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.4+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.5+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.6+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.7+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.8+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.9+i,  NOMBRE=1,),
		            _F(JUSQU_A=1.0+i,  NOMBRE=1,),
		            ),
		            );
	else:
		LNST[i]=DEFI_LIST_REEL(DEBUT=0.0+i,
		INTERVALLE=(_F(JUSQU_A=0.1+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.2+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.3+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.4+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.5+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.6+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.7+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.8+i,  NOMBRE=1,),
		            _F(JUSQU_A=0.9+i,  NOMBRE=1,),
		            _F(JUSQU_A=1.0+i,  NOMBRE=1,),
		            ),
		            );

	CLST[i] = DEFI_LIST_INST(
	                          DEFI_LIST=_F(LIST_INST=LNST[i],
	                                       METHODE='MANUEL',
	                                       ),
	                         ECHEC=_F(
	                                   SUBD_METHODE='UNIFORME',
	                                   SUBD_PAS=4,
	                                   SUBD_COEF_PAS_1=1,
	                                   ),
	                          );

	if i==0:
		RESU[i]=STAT_NON_LINE(MODELE=MD,
		                 CHAM_MATER=MATES,
		                 CARA_ELEM=PC,
		                 EXCIT=(_F(CHARGE=CHR[i],),
						                 _F(CHARGE=DPLC[i],
		                           FONC_MULT=FOFO[i],
		                           ),
		                           ),
		                 SOLVEUR=_F(#RENUM='METIS',
	                                 STOP_SINGULIER='NON',
	                                 ),
		                 COMP_INCR=(_F(RELATION='MULTIFIBRE',
									                 DEFORMATION='GROT_GDEP',
									                 GROUP_MA=('A_BM','A_CL',),
									                 ),
									             ),
		                 INCREMENT=_F(
	                                                LIST_INST=CLST[i],
		                              ),
		                 NEWTON=_F(MATRICE='TANGENTE',
							                 PREDICTION='ELASTIQUE',
							                 REAC_ITER=1,
							                 PAS_MINI_ELAS=0.01),
		                 RECH_LINEAIRE=_F(ITER_LINE_MAXI=15,),
		                 CONVERGENCE=_F(RESI_GLOB_RELA=error,
		                                ITER_GLOB_MAXI=max_iter,),
		                 );
	else:
		RESU[i]=STAT_NON_LINE(MODELE=MD,
		                 CHAM_MATER=MATES,
		                 CARA_ELEM=PC,
		                 ETAT_INIT=_F(
									                 EVOL_NOLI=RESU[i-1],
									                 ),
		                 EXCIT=(_F(CHARGE=CHR[i],),
						                 _F(CHARGE=DPLC[i],
		                           FONC_MULT=FOFO[i],
		                           ),
		                           ),
		                 SOLVEUR=_F(
	                                 STOP_SINGULIER='NON',
	                                 ),
		                 COMP_INCR=(_F(RELATION='MULTIFIBRE',
									                 DEFORMATION='GROT_GDEP',
									                 GROUP_MA=('A_BM','A_CL',),
									                 ),
									             ),
		                 INCREMENT=_F(
							 LIST_INST=CLST[i],
		                              ),
		                 NEWTON=_F(MATRICE='TANGENTE',
							                 PREDICTION='ELASTIQUE',
							                 REAC_ITER=1,
							                 PAS_MINI_ELAS=0.1),
		                 RECH_LINEAIRE=_F(ITER_LINE_MAXI=15,),
		                 CONVERGENCE=_F(RESI_GLOB_RELA=error,
		                                ITER_GLOB_MAXI=max_iter,
		                                ITER_GLOB_ELAS=10,),
		                 );

Can anyone tell me what is the correct way to use PAS_MINI_ELAS?

Whats wrong in my code? Isn't it possible to use PAS_MINI_ELAS in modelling POU_D_EM ?

.comm and .mail files are attached for complete reference.

Thanks in advance.

Last edited by dbpatankar (2010-12-19 20:44:13)


Attachments:
str71.tar.gz, Size: 9.01 KiB, Downloads: 168

Offline

#2 2011-01-04 14:12:23

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: Trouble understanding PAS_MINI_ELAS

Hi,

dbpatankar wrote:

Whats wrong in my code? Isn't it possible to use PAS_MINI_ELAS in modelling POU_D_EM ?

No this element (POU_D_EM) does not implement this feature. That's why you get an error.

In order to get around softening behaviour you may try to use "'continuation methods" (keyword PILOTAGE) or automatic timestepping and recutting (DEFI_LIST_INST+ STOP_SINGULIER='DECOUPE' under SOLVEUR).

TdS

Offline

Board footer