Atom topic feed | site map | contact | login | Protection des données personnelles | Powered by FluxBB | réalisation artaban

You are not logged in.

- Topics: Active | Unanswered

**mf****Member**- Registered: 2019-06-18
- Posts: 264

Good morning,

I have a rather big model with bolts that I model with POU_D_E elements (2 per bolt, bolt cut in half, apply a DEPL on both inner nodes to simulate bolt pretension. The outer nodes of the POU_D_E elements are in a LIAISON_SOLIDE with the 'thread' and bolt supporting surface in the parts that are connected). The rest of the model are 3D-elements. If anyone is interested, I can elaborate in this bolt model, it works a treat.

I wanted to subject this model to a thermal cycle to see how the pretension drops at higher temperature.

The problem I just faced is that the POU_D_E elements cannot be used in a thermal model.

Is there any way around this, or are there any plans to make the POU_D_E element usable in a thermal model? I really do not want to model the bolts in 3D, it eats a LOT of performance. I would only do this if there is absolutely no alternative.

Thank you and have a nice day,

Mario.

*Last edited by mf (2020-01-31 07:49:58)*

Offline

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

hello Mario

I think the best is to define a temperature field for your Mechanical model using in advance CREA_RESU. So you have not to do a thermal analysis and don't need a thermal model. You need only the mechanical model and POU_D_E exists for that.

Some ideas are here:

https://www. code-aster.org/forum2/viewtopic.php?id=20935

But instead of ResTher= LIRE_RESU you must do something like this:

```
CTemp0=CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R', OPERATION='AFFE', MODELE=Model,
AFFE=(
_F(TOUT='OUI', NOM_CMP='TEMP', VALE=20,),
))
CTemp1=CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R', OPERATION='AFFE', MODELE=Model,
AFFE=(
_F(TOUT='OUI', NOM_CMP='TEMP', VALE=20,),
_F(GROUP_MA=('screw',), NOM_CMP='TEMP', VALE=-1000,),
))
CTemp2=CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R', OPERATION='AFFE', MODELE=Model,
AFFE=(
_F(TOUT='OUI', NOM_CMP='TEMP', VALE=20,),
_F(GROUP_MA=('screw',), NOM_CMP='TEMP', VALE=-2000,),
))
ResTher=CREA_RESU(OPERATION='AFFE',
TYPE_RESU='EVOL_THER',
NOM_CHAM='TEMP',
AFFE=(
_F(CHAM_GD=CTemp0,
INST=0 ),
_F(CHAM_GD=CTemp1,
INST=1 ),
_F(CHAM_GD=CTemp2,
INST=2 ),
. . . .
),)
. . .
MatField=AFFE_MATERIAU(MAILLAGE=Mesh,
AFFE=(
_F(TOUT='OUI', MATER=Material,),
),
AFFE_VARC=_F(TOUT='OUI', NOM_VARC='TEMP', EVOL=ResTher, VALE_REF= 20),
)
```

Regards Johannes_ACKVA

__________________________________________________________________

next CODE-ASTER-courses at Ingenieurbüro für Mechanik, Germany

*** CODE-ASTER DYNAMIC ANALYSIS

19-20 March 2020

*** CODE-ASTER INTRO + CONTACT + MATERIAL

04-08 May 2020

Ingenieurbüro für Mechanik

D 91717 Wassertrüdingen / Germany

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

Offline

**mf****Member**- Registered: 2019-06-18
- Posts: 264

Good morning!

Thank you for your answer. I did not see that coming, I thought it was entirely impossible. I will try your suggestion, but it will take a while. Basically, your method is like a TEMP_IMPO.

So I am thinking: is THERMIQUE not implemented for POU_D_E (and others) because it is just not feasible? Or is it very hard to implement? An implementation would involve implementation of

-) setting temperatures on all nodes

-) thermal conduction along axis and all surfaces

-) radiation through surfaces

-) ECHANGE

-) FLUX_REP on surfaces

-) LIAISON_DDL

-) ECHANGE_PAROI on surfaces

....... all that for different cross sections and geometries.

However, thank you very much. By the way: this is the bolt model we 'invented' at your course in last November. I modified it so that the length of both elements equals the 'free elongation length' [if that expression makes sense] of the bolt (plus the LIAISON_DDL coefficients of the inner nodes should be 0.5 and -0.5 not 1 and -1). This way I can do some analytical calculations also. It has been very useful!

Kind regards,

Mario.

*Last edited by mf (2020-01-28 08:04:31)*

Offline

**mf****Member**- Registered: 2019-06-18
- Posts: 264

Good morning,

I applied the changes according to your post. The bolted parts themselves expand with temperature, as expected. But I am quite sure that the bolts (POU_D_E elements) do not expand with temperature. Why? I get HUGE forces in the POU_D_E elements. 'N' is nearly doubled with increasing T, although their ALPHA is greater than that of the surrounding material. Thus, N should drop with increasing temperature, as it does in real life. Therefore, I conclude, that my POU_D_Es do not expand with temperature. Their elongation matches the elongation nearly that of the bolted parts, that's approx. correct. But their tension should not increase that much. It would snap any bolt in real life in this kind of connection.

I tried the following:

-) activate CRITERE=ABSOLU in the Resther above--> ~no effect (I did not look at the exact N values but they are much too high, therefore ~)

-) activate/deactivate CARA_ELEM in Resther above--> ~no effect

-) changed NU to CONSTANT. It was NU(T) before but resulted in a warning "<ELEMENTS3_59> Poisson's ratio is nonconstant. Current programming N does not hold account of it..." The warning itself is also a bit misleading as 'N' is the force in the POU_D_E elements. It should read 'NU', I guess.

-) deactivated all boundary conditions, replaced them with POI spring elements to fix the parts in space to help 'free' expansion of the parts. These are in the same AFFE_CARA_ELEM. Is that a problem?

I did not try with 2nd order elements so far, that is under way (calculation time is nearly 10-fold). I do not expect a great change.

What could be wrong? Sorry, I cannot post mesh/model and .comm at the moment, but it is similar to the posts above. I apply pretension via a LIAISON_DDL at the inner nodes of the bolts (each consists of 2 POU_D_E) and hold that LIAISON_DDL during the thermal expansion. The outer nodes of each POU_D_E are connected via LIASION_SOLIDE to their respective underhead area and thread cylinder (activated all the time). I do not get any errors/warnings, the contacts converge everything seems to be alright at first sight.

Kind regards and thanks,

Mario.

Offline

**mf****Member**- Registered: 2019-06-18
- Posts: 264

Good day,

I am pretty sure that my bolt model is not entirely correct for thermal expansion in a following timestep. I attach a simplified version of my .comm, as some parts of i (material data) are not intended for public use. I did some auto find+replace for translation of groups etc. so its possible that some Aster commands are not correct. Please excuse that. RET, BAR and DUE are the parts connected by the bolts. Sorry, I am not allowed to show the GEO or MESH. All bolts are separated in half, the halves are modeled by POU_D_Es.

What I did until now was keep the pretension step in all timesteps (PRETbolt was active from t=1 to t=6 type load was FIXE_CSTE), also those which lead to thermal expansion. That gave the mentioned 2-fold N in all my bolts (I expect N to drop with increasing temperature).

I am pretty sure the following will be successful, but I ran into problems (this corresponds to the .comm attached):

1) t=1 apply pretension with PRETbolt

2) t=1.5 lock the pretensioned nodes with respect to each other (they should not be locked in space however, thermal expansion should be able to move them together). PRETbolt=0, LOCKbolt=1

3) t=2: first high temperature step, model should expand with T, as the bolts.

4) and so on.

The problem I ran into is the following:

In t=1 I want to apply the pretension (worked flawlessly before I introduced LOCKbolt). Although the multiplier of function of LOCKbolt is 0 at t=1 I get a singular matrix. It seems pretty clear to me that I cannot apply PRETbolt t=1 and do the locking with LOCKbolt in the same step. These nodes would then have contradicting boundary conditions. Therefore the multiplier of PRETbolt is 0 in t=1. That changes in t=1.5.

How can this matrix be singular in t=1? It seems as zero times the LOCKbolt also gives rise to overdefined nodes already at t=1? Should I apply LOCKbolt as DIDI? Is there any other mistake which gives rise to a singular matrix? If I remove LOCKbolt in STAT_NON_LINE the calculation runs smoothly.

I appreciate all inputs, I tried a lot but did not succeed.

Thank you

Mario.

Offline

**mf****Member**- Registered: 2019-06-18
- Posts: 264

To put it differently:

What is the best way to apply pretension to a node and lock this node relative to another node in a following timestep? I'm thinking about a similar technique to item 4 in post id=5763.

Kind regards,

Mario.

Offline

**mf****Member**- Registered: 2019-06-18
- Posts: 264

I think I will solve these problems with doing the following:

1.) SINGULARITY in above example: the singularity is the consequence of to many (in this case 2) LIAISON_DDLs on one or more nodes. This problem must be viewed in conjunction with 2.) I want to change my model to a single POU_D_E per bolt and use a LIAISON_SOLIDE for tensioning and locking the bolts.

2.) LIAISONs cannot be turned off within one STAT_NON_LINE with FONC_MULT=0. Therefore 1 gave me a singularity, there were 2 LIAISONs active albeit for one of them FONC_MULT was always =0. I HAVE TO USE 2 STAT_NON_LINES!

The attached funny study shows this problem: A POU_D_E is in a LIASON_SOLIDE with the surface of a box. In t=1 the other node of the POU_D_E is elongated. In t=1.5 it is attached to the other box. In t=2 the elongation is 0, the connected POU_D_E pulls on the surface of the 2d box. Both boxes see the same tension. This is what I want. BUT, this is what happens:

As the 2nd LIAISON cannot be switched on in t=1.5 it is activated all the time, the surface of the 2nd box is already dented in t=1. It does not matter if the function in FONC_MULT is active or not, the result is the same.

Because I think I will solve my big simulation with this I mark this thread SOLVED.

This can also be found in post ID=14604.

Thank you Johannes,

Mario.

Offline

**alealbanesi****Member**- Registered: 2021-02-11
- Posts: 11

Hi guys,

I see that this post is several months old, but I'm running into the same issues when modeling bolts as Euler beams.

I have a thermomechanical problem that combines 3D and beam elements, and POU_D_E elements cannot be used in a thermal model. My problem consists of 2 stages, thermal and mechanical. In the mechanical problem, I project the thermal solution field. The problem is that I can't project anything in POU_D_E elements since these are not taken into account in the thermal problem.

In the mechanical problem, is there a way to project the thermal field in the rest of the 3D model, and then manually assign temperatures only to the beam elements?

I assume that one can only use a single AFFE-MODELE and AFFE_MATERIAU statements in a problem, right? Any help is greatly appreciated, regards,

Alejandro

Offline

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

hello Alejandro,

I give here a short draft, presuming that you do a stationary thermal analysis ( one time instant).

Of course you must consider how you can get to know the temperatures at the beam nodes which you can't calc with Code-Aster.

You have to use 1 mesh. But 2 different models, the thermal model comprising only a part of the mesh. The following code is good if all beams are at a unique temperature:

```
Mesh=LIRE_MAILLAGE(..)
# ---- thermal analysis ------
ModTher=AFFE_MODELE(MAILLAGE=Mesh,
AFFE=_F(GROUP_MA='all_but_beam_elements', # <-this group must also contain all elements carrying loads and bound conditions
PHENOMENE='MECANIQUE',
MODELISATION='3D',),)
# thermal analysis, result ResTher.
# Then:
T_3D =CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R',
OPERATION='EXTR',
RESULTAT=ResTher,
NOM_CHAM='TEMP', )
# ---- mechanical analysis ------
ModMech=AFFE_MODELE(MAILLAGE=Mesh, # <- check in .mess-file that the model contains all elm of the mesh!
AFFE=(
_F(GROUP_MA='all_but_beam_elements',
PHENOMENE='MECANIQUE',
MODELISATION='3D',),
_F(GROUP_MA='beam_elements',
PHENOMENE='MECANIQUE',
MODELISATION='POU_D_E',),
))
T_beams=CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R',
OPERATION='AFFE',
MODELE=ModMech,
AFFE=_F(TOUT='OUI', # for simplicity the field can be defined for "all", but in AFFE_MATERIAU it must be assigned first
NOM_CMP='TEMP',
VALE=1000,),)
Matfiel2=AFFE_MATERIAU(MAILLAGE=Mesh,
AFFE=_F(TOUT='OUI',
MATER=Mat,),
AFFE_VARC=(
_F(GROUP_MA='beam_elements', # 1st assignment
NOM_VARC='TEMP',
CHAM_GD= T_beams,
VALE_REF=20,),
_F(GROUP_MA='all_but_beam_elements', # 2nd assignment: a part of the 1st assignment is overwritten
NOM_VARC='TEMP',
CHAM_GD= T_3D ,
VALE_REF=20,),
),)
ResMech=MECA_STATIQUE(MODELE=ModMech,
CHAM_MATER=Matfiel2,
EXCIT=(_F(CHARGE=other_loads, ),
_F(CHARGE=other_loads, ), ))
```

If instead the beam nodes have individual temperatures, the following is the code.

```
T_beams=CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R',
OPERATION='AFFE',
MODELE=ModMech,
AFFE=(
_F(NOEUD='N1', NOM_CMP='TEMP', VALE= 2.1, ),
_F(NOEUD='N2', NOM_CMP='TEMP', VALE= 2.2, ),
_F(NOEUD='N3', NOM_CMP='TEMP', VALE= 2.3, ),
_F(MAILLE='M4', NOM_CMP='TEMP', VALE= 2.4, ),
))
```

In practice you will create the AFFE=() part as a list of python dictonaries, which is more clear and fast.

Being all temperatures and all node names in lists (listofnodes and temperaturesofnodes) this is the way:

```
affectation=[]
for k in range(len(listofnodes)):
affectation.append({ 'NOEUD': listofnodes[k], 'VALE': temperaturesofnodes[k], NOM_CMP='TEMP', })
T_beams=CREA_CHAMP(TYPE_CHAM='NOEU_TEMP_R',
OPERATION='AFFE',
MODELE=ModMech,
AFFE= affectation
)
```

good success!

Regards

Johannes_ACKVA

*** NEW: all Code-Aster courses now as Video and Webinar courses ***

Ingenieurbüro für Mechanik

D 91717 Wassertrüdingen / Germany

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

Offline

**alealbanesi****Member**- Registered: 2021-02-11
- Posts: 11

Thank you Johannes_ACKVA! Sorry for my late reply, It took me a while to configure all things the right way, but after several tries, it worked just fine! Your right, I'm running a linear thermal analysis, but the mechanical part is non-linear and has several contacts with Coulomb friction and bolts modeled as Euler beams.

Following your advice, I separated 3d from beams using the GROUP_MA command in both thermal and mechanic analysis. In particular, the AFFE_MATERIAU command in the mechanic analysis seemed to be the most critical part due to the AFFE_VARC option, and once this was correctly configured, the test cases started to work.

Also, one should be very careful with the setup of the time-stepping function to account for the pretightening of the bolts, and the projection of the thermal results on the mechanical model.

Thank you again for the great help, regards,

Alejandro

Offline

**CalcBot****Member**- Registered: 2021-03-03
- Posts: 4

Hello Alejandro,

Could you please share your mesh and .comm file ?

I am also working on a bolt connection between 3D objects using Euler beams but am still struggling with the pretension.

For my problem I only used Beams with 2 nodes each.

As I found in another thread I fixed the bolts heads to the surfaces and the bottom to the beginning of the threads. Everything works with normal load but I couldn t manage to implement any pretension..

Thanks

regards

Ziad

Offline