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

You are not logged in.

#1 2014-07-29 11:02:56

h.borie
Member
Registered: 2014-04-01
Posts: 78

Variable temperature for thermo_meca

Hello,

I'm currently trying to set up a variable temperature but I don't see any example in the test-casus that can match my problem.

The temperature is dependant of the thickness of a volume.

I did a little sketch to illustrate what a try to modelize but I don't see how I can obtain the thickness.

1 - If I create 3 group_ma : one for the volume and 2 for the faces (bottom and top)

2 - I use MODI_MAILLAGE-> ORIE_PEAU_3D on the group_ma faces to have the orientation of the normal vector 'NV'.

3 - Recuperate the coordinate of this vector NV fonction of x,y position : NV(x,y).

4 - Then, obtain the thickness THICK=(TOP_FACE-BOTTOM_FACE) . NV        (distance of the two faces in the normal direction)

5 - After that set up all the temperature of the nodes on the top face with TEMP_TOP=TEMP_INIT/THICK

6 - Finally set the temperature of the volume for top to bottom face as : TEMP = TEMP_TOP + TEMP_INIT * DIST   
(with DIST= distance of the node from the TOP_FACE in the NV direction)

It seems very tricky to set up because of some recursivity. And it seems very unfeasable but maybe there is a way that I didn't find yet.

Thank you for your reading and I hope I didn't scared you with my problem smile

Regards,
H.B.


Attachments:
Variable_thickness.JPG, Size: 20.93 KiB, Downloads: 198

Offline

#2 2014-08-01 09:57:15

h.borie
Member
Registered: 2014-04-01
Posts: 78

Re: Variable temperature for thermo_meca

So just to know if it can be possible, to have a sort of recursive analysis. Meaning that I want to command an input with a fonction composed by the output. Is it possible for a MECA_STATIQUE?

Offline

#3 2014-08-01 18:37:06

keeswouters
Member
From: kuringen
Registered: 2007-12-01
Posts: 144
Website

Re: Variable temperature for thermo_meca

hoi H.B,

probably such an analyis is called a non linear analysis?
Non linear analysis can be performed by CA.

Last edited by keeswouters (2014-08-01 18:39:19)


kind regards - kees
--
I a parallel univers the laws of mechanics may be different.

Offline

#4 2014-08-02 09:04:27

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 3,569

Re: Variable temperature for thermo_meca

hello

i can see that i am not the only one who do not understand clearly what you want to do!!

however i attach a very simple example of "recursivity" with MECA_STATIQUE that does not do very useful things, but !

jean pierre aubry

Last edited by jeanpierreaubry (2014-08-02 14:00:25)


Attachments:
recursiv.zip, Size: 2.92 KiB, Downloads: 212

Offline

#5 2014-08-03 21:42:27

h.borie
Member
Registered: 2014-04-01
Posts: 78

Re: Variable temperature for thermo_meca

I just tried to find a way in the previous post.I just want to command the temperature with the thickness of the disk at (x,y) position. It's just that I don't know how to do it and if it's possible?

Offline

#6 2014-08-04 07:04:11

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 3,569

Re: Variable temperature for thermo_meca

with a little bit of Python coding it is possible to do that:

in a first loop:
go through all the nodes of bottom surface
retrieve their coordinates

in a second inner loop, for each node of bottom surface:
go through all the nodes of top surface
retrieve their coordinates
calculate the distance from top node to bottom one
minimum distance can be assumed to be the thickness

this may be refined by making a first loop through the elements, retrieving the normal to the element

as well, cleverly making groups on the surfaces may reduce the number of nodes to be scanned in the second loop

this may take quite a while as far as computing time is concerned

Offline

#7 2014-08-04 18:33:00

keeswouters
Member
From: kuringen
Registered: 2007-12-01
Posts: 144
Website

Re: Variable temperature for thermo_meca

hoi H.B,

if you provide us with the model (med, py input script or whatever you have available) or a typical example, we could help you.
A bit of fancy Python coding is -in most cases- nice to do.


kind regards - kees
--
I a parallel univers the laws of mechanics may be different.

Offline

#8 2014-08-07 15:01:26

h.borie
Member
Registered: 2014-04-01
Posts: 78

Re: Variable temperature for thermo_meca

Je n'ai pas de .med mais le .msh. j'ai aussi un .comm

DEBUT();

######################################################
# RECUPERATION DU MAILLAGE - DEFINITION DES GROUPES
# Pastille Piezo
######################################################

PRE_GMSH();
MAIL=LIRE_MAILLAGE();								# Recuperation maillage

MAIL=DEFI_GROUP(	reuse=MAIL,						# Definition des groupes de mailles / noeuds	
			MAILLAGE=MAIL,
			CREA_GROUP_MA=( 					#### GROUPE DE MAILLE ####
					_F(NOM='VPIEZO',GROUP_MA='GM1',),	# VPIEZO = volume du piezo
					_F(NOM='TPIEZO',GROUP_MA='GM3',),	# TPIEZO = face supérieure du piezo
					_F(NOM='BPIEZO',GROUP_MA='GM4',),	# BPIEZO = face inférieure du piezo
					_F(NOM='SHELL',GROUP_MA='GM5',),	# SHELL = coque support
					_F(NOM='COLLE',GROUP_MA='GM2',),	# Colle = colle entre piezo et plaque
					),
			CREA_GROUP_NO=( 							#### GROUPE DE NOEUDS ####
					_F(NOM='TP',GROUP_MA='GM3',),				# TP = face supérieure du piezo 
					_F(NOM='BP',GROUP_MA='GM4',),				# BP = face inférieure du piezo
					_F(NOM='CX',NOEUD=('N25','N30','N37','N42'),),		# CX = groupe de noeuds ( DY = 0 pour ces noeuds)
					_F(NOM='CY',NOEUD=('N27','N28','N39','N40'),),		# CY = groupe de noeuds ( DX = 0 pour ces noeuds)
					_F(NOM='ENCAST',NOEUD=('N45','N46','N47','N48'),), 	# ENCAST = noeuds de coins de SHELL
					_F(NOM='BTP',NOEUD=('N2873'),),				# PTP = noeud milieu de la face inférieure piezo
					),								
				);									
													
MAIL=MODI_MAILLAGE(	reuse=MAIL,						
			MAILLAGE=MAIL,
			ORIE_PEAU_3D=_F(GROUP_MA='TPIEZO',),
			ORIE_NORM_COQUE=_F(GROUP_MA='SHELL',
                                      VECT_NORM=(0,0,1,),
				      NOEUD='N1173',));									#N3926:sup ; N2873 inf (m2_2)
				
###################################
# DEFINITION DU MODELE
###################################

MODL=AFFE_MODELE(	MAILLAGE=MAIL,
			AFFE=(	_F(	GROUP_MA=('VPIEZO','TPIEZO','BPIEZO','COLLE'),
					PHENOMENE='MECANIQUE',
					MODELISATION='3D',
					),
				_F(	GROUP_MA=('SHELL'),
					PHENOMENE='MECANIQUE',
					MODELISATION='DKT',
					),
				),
			);
			
###################################
# DEFINITION DES CARACS MATERIAU
###################################
CARA=AFFE_CARA_ELEM(	MODELE=MODL,
			COQUE=_F (	GROUP_MA=('SHELL'),
					EPAIS=1.12,		# Coque epaisseur 1.12mm
					ANGL_REP=(0,0),		# repere inchangé
					EXCENTREMENT=-0.56,	# decalage de la coque pour faire correspondre peau supérieur et 'BPIEZO'
					INER_ROTA='OUI',	# inertie de rotation (facultatif ici)
					COQUE_NCOU=4,				
					),
			);
			
COLLE=DEFI_MATERIAU(ELAS_ORTH=_F(	E_L=1800,		# MPa
					E_T=1800,		# MPa
					E_N=1800,		# MPa
					G_LT=1800,		# MPa
					G_LN=1800,		# MPa
					G_TN=1800,		# MPa
                            		NU_LT=0.35,
					NU_LN=0.35,
					NU_TN=0.35,
					RHO=9.5E-4,		# t/mm3
					AMOR_HYST=0.025,
					ALPHA_L=-1.95E-7,#4.6688E-12,	# 1/K equivalent elec : mm/V
					ALPHA_T=-1.95E-7,#4.6688E-12,	# 1/K equivalent elec : mm/V
					ALPHA_N=0,#1.1111E-11,	# 1/K equivalent elec : mm/V
					
					),
					);

PZT25=DEFI_MATERIAU(ELAS_ORTH=_F(	E_L=62500,		# MPa
					E_T=62500,		# MPa
					E_N=52632,		# MPa
					G_LT=18797,		# MPa
					G_LN=22645,		# MPa
					G_TN=22645,		# MPa
                            		NU_LT=0.4,
					NU_LN=0.38,
					NU_TN=0.38,
					RHO=7.6E-3,		# t/mm3
					ALPHA_L=-1.95E-7,#4.6688E-12,	# 1/K equivalent elec : mm/V
					ALPHA_T=-1.95E-7,#4.6688E-12,	# 1/K equivalent elec : mm/V
					ALPHA_N=4.6E-7,#1.1111E-11,	# 1/K equivalent elec : mm/V
					AMOR_HYST=0.025,
					),
					);
					
COMPOSI=DEFI_MATERIAU(	ELAS_ORTH=_F(	E_L=65700,		# MPa
                                	E_T=65700,		# MPa
					E_N=8100,		# MPa
                                	NU_LT=0.02,
					#NU_LN=0.4,
					#NU_TN=0.4,
                               		G_LT=5200,		# MPa
					G_LN=5200,		# MPa
					G_TN=5200,		# MPa
					RHO=1.553E-3,		# kg/mm3
					AMOR_HYST=0.025,
                                	),
			);

STRAT=DEFI_COMPOSITE(	COUCHE=(_F(	EPAIS=0.28,
                                	MATER=COMPOSI,
                                	ORIENTATION=0.0,),
				_F(	EPAIS=0.28,
                                	MATER=COMPOSI,
                                	ORIENTATION=45.0,),
				_F(	EPAIS=0.28,
                                	MATER=COMPOSI,
                                	ORIENTATION=-45.0,),
				_F(	EPAIS=0.28,
                                	MATER=COMPOSI,
                                	ORIENTATION=0.0,),
				),
			IMPRESSION=_F(UNITE=8),
			);	
			
										
###############################################
# DEFINITION CHARGEMENT THERMIQUE POUR RESOLUTION THERMOMECANIQUE
###############################################

TEMP1=CREA_CHAMP(						# Creation du champ de température sur le piezo
   TYPE_CHAM='NOEU_TEMP_R',					
    OPERATION='AFFE',MODELE=MODL,
    AFFE=(	_F(TOUT='OUI',NOM_CMP='TEMP',VALE=0,),
    		_F(GROUP_MA=('VPIEZO'),NOM_CMP='TEMP',VALE=-2,)	# -2 V/mm car epaisseur 0.5mm et E = -grad V
		),
);

    
CTEMP=CREA_RESU(						# Mise en forme evol_ther pour la thermomécanique
    TYPE_RESU='EVOL_VARC',
    NOM_CHAM='TEMP',
    OPERATION='AFFE',
    AFFE=(
        _F(CHAM_GD=TEMP1,INST=0.0),
    ),
);

###################################
# AFFECTATION MATERIAU
###################################
					
MATHE=AFFE_MATERIAU(	MAILLAGE=MAIL,						# Avec chargement thermique
                       	AFFE=	(_F(	GROUP_MA=('VPIEZO','TPIEZO','BPIEZO'),
                               		MATER=PZT25,
					),
				_F(	GROUP_MA=('SHELL'),
                               		MATER=STRAT,
					),
				_F(	GROUP_MA=('COLLE'),
                               		MATER=COLLE,
					),
				),
				
			AFFE_VARC=(_F(	TOUT='OUI',
					EVOL=CTEMP,
					NOM_VARC='TEMP',
					VALE_REF=0.0,),),				
			);
			
					
###############################################
# CONDITIONS LIMITES
###############################################

CLIM=AFFE_CHAR_MECA(	MODELE=MODL,
                   	DDL_IMPO=(	_F(	GROUP_NO='ENCAST',	# Pas de depl en Z pour le noeud coin shell 
		   				DZ=0,
						),
					_F(	GROUP_NO='CX',	# Pas de depl en Y pour les noeuds sur X du piezo
		   				DY=0,		# Assurer la bonne simulation
						),
					_F(	GROUP_NO='CY',	# Pas de depl en X pour les noeuds sur Y du piezo
		   				DX=0,		# Assurer la bonne simulation
						),
					),
			);
						),			 
			);


###################################
# RESOLUTION MECA STATIQUE
###################################				

THERM=MECA_STATIQUE(	MODELE=MODL,			# Calcul des depl du piezo sous chargement thermique
                       	CHAM_MATER=MATHE,
			CARA_ELEM=CARA,
			EXCIT=(	_F(	CHARGE=CLIM,
					),
				),
			);

Donc si vous visualiser les déplacements la face supérieur et inférieur n'ont pas un mouvement en Z identique. Il  a donc un changement d'épaisseur. Il faudrait à partir de cette épaisseur recalculer les températures tel que décris plus haut.

Je ne suis pas à l'aise avec le python donc je ne sais pas trop comment programmer.

Si vous avez des questions n'hésitez pas. Merci en tous cas.

Last edited by h.borie (2014-08-07 15:01:50)


Attachments:
Piezo_on_shell.msh, Size: 744.28 KiB, Downloads: 205

Offline

#9 2014-08-07 16:13:02

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 3,569

Re: Variable temperature for thermo_meca

décidément je comprends de moins en moins ce problème
je vois deux volumes qui m'ont l'air d'avoir une épaisseur constante !

plus généralement vouloir attaquer des sujets un peu complexes sans apprendre les rudiments de Python me semble être une gageure
au demeurant il faut très peu de temps pour apprendre les bases
ensuite ça vient tout seul

pour manipuler le maillage et extraire les coordonnées des noeuds calculer longueurs et surfaces il y a un exemple à la page 259 de mon livre

par ailleurs êtes vous sur de la valeur de l'excentrement avec la présence de la colle ?
êtes vous sur des valeurs des caractéristiques de la colle ?

Offline

#10 2014-08-07 17:39:10

h.borie
Member
Registered: 2014-04-01
Posts: 78

Re: Variable temperature for thermo_meca

Lorsque l'on applique la thermo-elasticité, le volume nommé piezo n'a pas une épaisseur constante sur tout le disque. Il faut donc que je recalcule la température en fonction de cette épaisseur. et reboucle jusqu'a ce le systeme tende vers un état d'équilibre. (ou presque)

Pour l'excentrement, que viens faire l'épaisseur de colle étant donné qu'il faut juste que j'excentre de la moitié de l'épaisseur de ma plaque.

Offline

#11 2014-08-09 07:17:36

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 3,569

Re: Variable temperature for thermo_meca

en pièce jointe il y a un fichier de commande modifié
qui calcule l'épaisseur du piezo du maillage initial

il est possible de créer un maillage déformé après le MECA_STATIQUE
de calculer alors les épaisseurs
de faire le chargement thermique
et de faire un MECA_STATIQUE sur ce maillage déformé ce qui est encore mieux

dans une boucle comme suggéré précédemment

Last edited by jeanpierreaubry (2014-08-09 07:18:12)


Attachments:
test.comm, Size: 10.33 KiB, Downloads: 197

Offline