[SOLVED] DFLUX and shells

I have s small model containing 2 shell S8 finite elements. They both face the same direction. I apply a surface flux using a Dflux card. On the first finite element, the flux is applied on the top surface called S2 (surface normal pointing in the positive z-direction). On the second finite element, the flux is applied on the bottom surface called S1 (surface normal pointing in the negative z-direction). I was expecting to see an inverse temperature field but I was wrong. Both temperature fields look the same with higher temperature on the bottom surface. It seems the S1 and S2 types are not properly recognised in the Dflux card:

*Dflux
First, S2, 10
Second, S1, 10

Is there a way to apply the surface heat flux on the other shell surface? I browsed the manual and it should be possible. I checked the CalculiX versions 2.16 and 2.17.

In order to make the test easier, here is the whole .inp file:

*Node
1, 5.00000000E+001, 2.00000000E+002, 0.00000000E+000
2, 1.00000000E+002, 1.00000000E+002, 0.00000000E+000
3, 5.00000000E+001, 0.00000000E+000, 0.00000000E+000
4, 0.00000000E+000, 1.00000000E+002, 0.00000000E+000
5, 1.00000000E+002, 2.00000000E+002, 0.00000000E+000
6, 1.00000000E+002, 0.00000000E+000, 0.00000000E+000
7, 0.00000000E+000, 0.00000000E+000, 0.00000000E+000
8, 0.00000000E+000, 2.00000000E+002, 0.00000000E+000
9, 1.50000000E+002, 2.00000000E+002, 0.00000000E+000
10, 1.50000000E+002, 0.00000000E+000, 0.00000000E+000
11, 2.50000000E+002, 0.00000000E+000, 0.00000000E+000
12, 2.50000000E+002, 2.00000000E+002, 0.00000000E+000
13, 1.50000000E+002, 1.00000000E+002, 0.00000000E+000
14, 2.00000000E+002, 0.00000000E+000, 0.00000000E+000
15, 2.50000000E+002, 1.00000000E+002, 0.00000000E+000
16, 2.00000000E+002, 2.00000000E+002, 0.00000000E+000
*Element, Type=S8, Elset=First
1, 8, 7, 6, 5, 4, 3, 2, 1
*Element, Type=S8, Elset=Second
2, 9, 10, 11, 12, 13, 14, 15, 16
*Nset, Nset=All_N
8, 7, 6, 5, 4, 3, 2, 1, 9, 10, 11, 12, 13, 14, 15, 16
*Elset, Elset=All_E
1, 2
*Physical constants, Stefan Boltzmann=5.6704E-11
** Materials +++++++++++++++++++++++++++++++++++++++++++++++
*Material, Name=S185
*Density
7.85E-09
*Elastic
210000, 0.3
*Conductivity
14
*Specific heat
440000000
** +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Shell section, Elset=All_E, Material=S185, Offset=0
20
*Initial conditions, Type=Temperature
All_N, 0
*Step, Inc=100
*Heat transfer
1, 100, 1E-05, 1E+30
*Dflux
First, S2, 10
Second, S1, 10
*Node file
NT
*End step

In the meantime, I also tried the DFLUX card using other shell element faces: S3, S4, S5 and S6 and they all give the same result as using the faces S1 or S2. It seems I am doing something wrong since I always get the same result no matter which face I prescribe the DFLUX card on.

To continue my monologue :slight_smile:, after some testing, I found out that the face types S1, S2,… are working just fine if one uses an element id instead of an element set name while defining the DFLUX. So instead of what was written above using:

*Dflux
1, S2, 10
2, S1, 10

works as it should. I also found out that using a surface name instead of an element id or element set name works. According to the documentation the x in the face type label Sx, where x represents the face id, takes the value of zero. So I tried it with S0. it turns out that zero is not meant as a number but as an empty character. So the right way of using DFLUX with a surface name is:

*Dflux
Surface-1, S, 10

I think that using elements set names should also work since it works for DLOAD and RADIATE keywords for example. Is this by design or a possible bug @dhondt?

2 Likes

Hi Matej,

yes, this is an error in the code, thanks for pointing this out. It will be repaired in the next version of CalculiX. I also improved the documentation: the β€œ0” is not needed on the S, F or R label (dflux, film, radiation).

Best Greetings,

Guido

2 Likes

I am happy to contribute at least something to the CalculiX development.

Dear @dhondt,

I am testing the *Film card now and here the β€œ0” is needed if using a surface name instead of element set names. So to make the Film card work with a surface name it must be used as:

*Film
SurfaceName, F0, 20, 1

I am using CalculiX 2.16 and 2.17.1

1 Like

Maybe it’s better to keep the β€œ0” tag, to make it more obvious that the surface definition is from the surface set.