Surface Heater Boundary Condition [W/m²] in 3D

General discussion about Elmer
Post Reply
d.kojda
Posts: 13
Joined: 29 Jun 2023, 13:23
Antispam: Yes

Surface Heater Boundary Condition [W/m²] in 3D

Post by d.kojda »

Dear forum users,

I am conducting tests on a simplified cylindrical/rod-shaped object (length l = 1 m, cross-sectional area A = 1 m², and thermal conductivity kappa = 1 W/mK) using the heat equation solver. The temperature at the bottom is fixed at 0 K, while the temperature at the top is set to 300 K.

I have an additional boundary parallel to the top and bottom surfaces where I want to define a heater or cooler with a specific power density in W/m². I'm not interested in setting a general heat flux boundary condition as it controls the overall flux through the object, rather than the incoming/outgoing flux.

While searching through the forum, I came across the idea of using 'temperature loads' as a boundary condition. (However, this approach is not documented in the ElmerModelsManual.pdf for the heat equation's boundary conditions section.) Here is an example of my working application:

Code: Select all

! center_core
Boundary Condition 3
  Target Boundaries(1) = 2
  Temperature Load = REAL -0.486381  !power/number of nodes
  center_bd = Logical True  !this is for masking scalars
End
This temperature load is specified in watts and appears to apply to all nodes. To achieve the desired results, I had to manually divide it by the number of nodes extracted from the boundary surface using gmsh.

However, I am using pyelmer with automated meshing based on several parameters, so manual extraction is not a viable solution.
I am considering implementing nodal statistics of the boundary to make it work, but I'm wondering if Elmer allows for setting a 'load condition' that takes into account the surface size.

Another approach would be use three cylinders, consisting of a very thin center part, and apply a body force. However, this solution does not align with what I was originally seeking.

Any guidance on this matter would be greatly appreciated.

Thank you.
kevinarden
Posts: 2317
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by kevinarden »

  • "I have an additional boundary parallel to the top and bottom surfaces where I want to define a heater or cooler with a specific power density in W/m². I'm not interested in setting a general heat flux boundary condition as it controls the overall flux through the object, rather than the incoming/outgoing flux."
I do not think that the heat flux BC controls the overall flux through the object, I think the the heat flux BC with a transfer coefficient of 1.0 and an external temperature defines a temperature load on the surface, and controls the incoming/outgoing flux. That is the essence of a boundary condition.

Controls of the body in the system has to come from body forces or material properties.
Rich_B
Posts: 423
Joined: 24 Aug 2009, 20:18

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by Rich_B »

Hello,

Posting your working model, including geometry and sif file with instructions on generating the mesh, will help you get more specific help.

Rich.
raback
Site Admin
Posts: 4832
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by raback »

Hi

Neumann condition may be given by "Heat Flux" or "Temperature Load". The difference is that the first one is distributed [W/m^2] and associated to the continuous system while the latter is associated to the discrete matrix [W]. Neither of these controls the total flux but the local one. In the end both these end up to the r.h.s. of the linear system.

The "Varname Load" functionality is explained in the Elmer Solver Manual because it applies to all PDEs.

Any Real valued keyword can be divided by the representative area by using "-distribute" before the value. So this just scales the keyword with the area.

If you have a temperature at BC that is constant but unknown then there is the keyword "Varname Constant" or "Temperature Constant = Logical True" in this case. It sets additional linear constraints to the system. So this could be used in combination of Neumann conditions if you know that the bottom/top elements are at same.

-Peter
d.kojda
Posts: 13
Joined: 29 Jun 2023, 13:23
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by d.kojda »

Hi Peter,

I think the "-distribute" keyword is indeed what I'm looking for. However, it does not have the wished effect run in Version: 9.0 (Rev: Release, Compiled: 2022-08-02, Windows 10).

First, I post the files with the expected result.

I applied -250W/376 nodes = -0.66489361702 Tempearure Load on boundary 3.
The mesh is reduced to keep the 1 MB upload limit.
case.msh
The mesh.
(987.61 KiB) Downloaded 34 times
case.sif
The expected result with power/nodes.
(5.14 KiB) Downloaded 32 times
Result Loads (as expected):
BC1: -249.5933227813 W
BC2: 499.5933219538 W
BC3: -249.9999999815 W

Next, I apply the "-distribute" keyword, but with no effect. I get same results as without the "-distribute".
case_distribute.sif
Giving wrong results using "-distribute".
(5.12 KiB) Downloaded 29 times
Result Loads:
BC1: 18534.69535716 W
BC2: 75637.3290007 W
BC3: -94172.02428662 W

Another side question is about the flux close to the boundary 3 (e.g. by cutting along center axis, or line plot along axis 3). The ideal solution wohld have constant flux in each part and a discontinuity at the boundary. For the solver solution, I get the constant flux far from the boundary. Close to the boundary I have values higher and lower than the max/min expected flux. The amplitude of the wrong flux can be decreased with finer meshes, but the general behaviour remains.
kevinarden
Posts: 2317
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by kevinarden »

In mesh downloaded there appears to be 690 nodes on boundary 2?

Boundary Condition 3
Target Boundaries(1) = 2
Temperature Load = REAL -0.66489361702 !250W / 376 nodes
Temperature Constant = Logical True
center_bd = Logical True
End
kevinarden
Posts: 2317
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by kevinarden »

using;
Boundary Condition 3
Target Boundaries(1) = 2
Heat Flux = Real -250
Temperature Constant = Logical True
center_bd = Logical True
End
Results in;
BC1: -249.5933227813 W
BC2: 499.5933219538 W
BC3: -249.9999999815 W
d.kojda
Posts: 13
Joined: 29 Jun 2023, 13:23
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by d.kojda »

Dear kevinarden,

thank you for the question. The mesh has 376 Nodes on surface 2 as shown by the image.
Nodes.PNG
(73.48 KiB) Not downloaded yet
Same surface consist of 690 triangles.
Scaling with 376 is fine here and the solution as expected.

However, do you have a clue for the "-distribute" tag?

Regards

Danny
kevinarden
Posts: 2317
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by kevinarden »

You are right I counted elements not nodes, however I do not know anything about the -distribute flag.
d.kojda
Posts: 13
Joined: 29 Jun 2023, 13:23
Antispam: Yes

Re: Surface Heater Boundary Condition [W/m²] in 3D

Post by d.kojda »

Dear kevinarden,

thank you for the solution with "Heat Flux = Real -250". First, I was thinking this works, as the energy through the object (-250 W) is the same as the leaving energy (-250 W).

Therefore, I set "Heat Flux = Real -500" to see the effect on the fluxes and the summed loads. Indeed, this behaves as a surface cooler removing 500 W with
BC1: -199.9419405992 W
BC2: 699.7096512383 W
BC3: -499.7677134548 W

I plotted the flux
ResultFlux-500.PNG
ResultFlux-500.PNG (101.13 KiB) Viewed 680 times
with also shows that 500 W are removed.
But you see that the flux is the same as the summed load at z = 0.8.

I'm a bit puzzled why the heat flux through the object is the same as the cooling power. Maybe it appears by the construction of the problem. For me it seems this is the resaon why the Heat Flux setting does work here.

Generally one shout destinguish the "Heat Flux" through a boundary and the "distributed Temperature Load" discribing the energy removed at the boundary.

Peter could you please comment why the distributed keyword did not work in the send example.

Danny
Post Reply