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

Regards,
H.B.

Attachments:

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,773

### 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:

consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

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,773

### 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

consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

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:

Offline

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

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

### 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 ?

consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

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,773

### 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:

consider reading my book
freely available here https://framabook.org/beginning-with-code_aster/

Offline